summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/perl
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/usr.bin/perl')
-rw-r--r--gnu/usr.bin/perl/AUTHORS3
-rw-r--r--gnu/usr.bin/perl/Configure65
-rw-r--r--gnu/usr.bin/perl/Cross/config.sh-arm-linux34
-rw-r--r--gnu/usr.bin/perl/Cross/config.sh-arm-linux-n77034
-rw-r--r--gnu/usr.bin/perl/INSTALL31
-rw-r--r--gnu/usr.bin/perl/MANIFEST538
-rw-r--r--gnu/usr.bin/perl/META.json2
-rw-r--r--gnu/usr.bin/perl/META.yml2
-rw-r--r--gnu/usr.bin/perl/Makefile.SH122
-rw-r--r--gnu/usr.bin/perl/NetWare/Makefile4
-rw-r--r--gnu/usr.bin/perl/NetWare/config_H.wc10
-rw-r--r--gnu/usr.bin/perl/Porting/Maintainers.pl5
-rw-r--r--gnu/usr.bin/perl/Porting/cmpVERSION.pl1
-rw-r--r--gnu/usr.bin/perl/Porting/config.sh36
-rw-r--r--gnu/usr.bin/perl/Porting/config_H18
-rw-r--r--gnu/usr.bin/perl/Porting/epigraphs.pod192
-rw-r--r--gnu/usr.bin/perl/Porting/perldelta_template.pod2
-rw-r--r--gnu/usr.bin/perl/Porting/pumpkin.pod4
-rw-r--r--gnu/usr.bin/perl/Porting/todo.pod4
-rw-r--r--gnu/usr.bin/perl/README.haiku4
-rw-r--r--gnu/usr.bin/perl/README.macosx8
-rw-r--r--gnu/usr.bin/perl/README.os22
-rw-r--r--gnu/usr.bin/perl/README.vms4
-rw-r--r--gnu/usr.bin/perl/configpm12
-rw-r--r--gnu/usr.bin/perl/configure.com9
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs409
-rwxr-xr-xgnu/usr.bin/perl/cpan/Digest-MD5/t/files.t2
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm11
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm7
-rw-r--r--gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t13
-rw-r--r--gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm487
-rw-r--r--gnu/usr.bin/perl/cpan/File-Path/t/FilePathTest.pm44
-rwxr-xr-xgnu/usr.bin/perl/cpan/File-Path/t/Path.t276
-rw-r--r--gnu/usr.bin/perl/cpan/File-Path/t/Path_root.t40
-rw-r--r--gnu/usr.bin/perl/cpan/File-Path/t/Path_win32.t36
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Compress/private/MakeUtil.pm3
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm50
-rw-r--r--gnu/usr.bin/perl/cpan/IO-Socket-IP/t/11sockopts.t11
-rw-r--r--gnu/usr.bin/perl/cpan/NEXT/lib/NEXT.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/PlainText.pm13
-rw-r--r--gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL2
-rw-r--r--gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm2
-rw-r--r--gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL24
-rw-r--r--gnu/usr.bin/perl/deb.c2
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/Changes15
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm198
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm2
-rw-r--r--gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm37
-rw-r--r--gnu/usr.bin/perl/dist/Time-HiRes/Changes69
-rw-r--r--gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm4
-rw-r--r--gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs71
-rw-r--r--gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL35
-rw-r--r--gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t43
-rw-r--r--gnu/usr.bin/perl/dist/Time-HiRes/typemap2
-rwxr-xr-xgnu/usr.bin/perl/dist/threads-shared/t/stress.t2
-rw-r--r--gnu/usr.bin/perl/doio.c12
-rw-r--r--gnu/usr.bin/perl/embed.fnc5
-rw-r--r--gnu/usr.bin/perl/embed.h2
-rw-r--r--gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL4
-rw-r--r--gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL2
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/POSIX.xs2
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm2
-rw-r--r--gnu/usr.bin/perl/ext/POSIX/t/sigaction.t2
-rw-r--r--gnu/usr.bin/perl/hints/catamount.sh4
-rw-r--r--gnu/usr.bin/perl/hints/openbsd.sh20
-rw-r--r--gnu/usr.bin/perl/hv.c3
-rw-r--r--gnu/usr.bin/perl/install_lib.pl18
-rw-r--r--gnu/usr.bin/perl/installperl69
-rw-r--r--gnu/usr.bin/perl/lib/AnyDBM_File.pm2
-rw-r--r--gnu/usr.bin/perl/lib/B/Op_private.pm2
-rw-r--r--gnu/usr.bin/perl/lib/Getopt/Std.pm2
-rw-r--r--gnu/usr.bin/perl/locale.c2
-rw-r--r--gnu/usr.bin/perl/op.c44
-rw-r--r--gnu/usr.bin/perl/opcode.h8
-rw-r--r--gnu/usr.bin/perl/patchlevel.h2
-rw-r--r--gnu/usr.bin/perl/perl.c2
-rw-r--r--gnu/usr.bin/perl/perl.h17
-rw-r--r--gnu/usr.bin/perl/plan9/config.plan910
-rw-r--r--gnu/usr.bin/perl/plan9/config_sh.sample32
-rw-r--r--gnu/usr.bin/perl/pod/perl.pod4
-rw-r--r--gnu/usr.bin/perl/pod/perldelta.pod279
-rw-r--r--gnu/usr.bin/perl/pod/perldiag.pod4
-rw-r--r--gnu/usr.bin/perl/pod/perlfunc.pod8
-rw-r--r--gnu/usr.bin/perl/pod/perlhist.pod17
-rw-r--r--gnu/usr.bin/perl/pod/perlmodinstall.pod4
-rw-r--r--gnu/usr.bin/perl/pod/perlop.pod4
-rw-r--r--gnu/usr.bin/perl/pod/perlrecharclass.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perlrun.pod2
-rw-r--r--gnu/usr.bin/perl/pod/perlunicode.pod2
-rw-r--r--gnu/usr.bin/perl/pp.c3
-rw-r--r--gnu/usr.bin/perl/pp_ctl.c4
-rw-r--r--gnu/usr.bin/perl/pp_hot.c3
-rw-r--r--gnu/usr.bin/perl/pp_sys.c8
-rw-r--r--gnu/usr.bin/perl/proto.h4
-rw-r--r--gnu/usr.bin/perl/regcomp.c143
-rw-r--r--gnu/usr.bin/perl/regen/lib_cleanup.pl6
-rw-r--r--gnu/usr.bin/perl/regen/opcodes8
-rw-r--r--gnu/usr.bin/perl/regen/warnings.pl6
-rw-r--r--gnu/usr.bin/perl/sv.c223
-rw-r--r--gnu/usr.bin/perl/t/base/lex.t8
-rw-r--r--gnu/usr.bin/perl/t/io/socket.t22
-rw-r--r--gnu/usr.bin/perl/t/lib/croak/op48
-rw-r--r--gnu/usr.bin/perl/t/lib/h2ph.pht4
-rw-r--r--gnu/usr.bin/perl/t/op/evalbytes.t6
-rwxr-xr-xgnu/usr.bin/perl/t/op/getppid.t2
-rw-r--r--gnu/usr.bin/perl/t/op/gv.t18
-rw-r--r--gnu/usr.bin/perl/t/op/hexfp.t15
-rwxr-xr-xgnu/usr.bin/perl/t/op/lex.t11
-rw-r--r--gnu/usr.bin/perl/t/op/method.t6
-rw-r--r--gnu/usr.bin/perl/t/op/require_errors.t10
-rw-r--r--gnu/usr.bin/perl/t/op/reset.t12
-rwxr-xr-xgnu/usr.bin/perl/t/op/sprintf2.t164
-rw-r--r--gnu/usr.bin/perl/t/op/stash.t9
-rw-r--r--gnu/usr.bin/perl/t/op/svleak.t12
-rw-r--r--gnu/usr.bin/perl/t/op/tr.t11
-rw-r--r--gnu/usr.bin/perl/t/porting/customized.dat8
-rw-r--r--gnu/usr.bin/perl/t/porting/dual-life.t6
-rw-r--r--gnu/usr.bin/perl/t/re/re_tests2
-rwxr-xr-xgnu/usr.bin/perl/t/re/reg_mesg.t7
-rw-r--r--gnu/usr.bin/perl/t/re/regex_sets.t15
-rw-r--r--gnu/usr.bin/perl/t/re/speed.t4
-rw-r--r--gnu/usr.bin/perl/t/win32/runenv.t21
-rw-r--r--gnu/usr.bin/perl/toke.c41
-rw-r--r--gnu/usr.bin/perl/utf8.h4
-rw-r--r--gnu/usr.bin/perl/util.c7
-rw-r--r--gnu/usr.bin/perl/utils.lst8
-rw-r--r--gnu/usr.bin/perl/utils/Makefile.PL18
-rw-r--r--gnu/usr.bin/perl/utils/h2ph.PL6
-rw-r--r--gnu/usr.bin/perl/utils/perlbug.PL11
-rw-r--r--gnu/usr.bin/perl/vms/descrip_mms.template2
-rw-r--r--gnu/usr.bin/perl/vutil.c4
-rw-r--r--gnu/usr.bin/perl/warnings.h6
-rw-r--r--gnu/usr.bin/perl/win32/GNUmakefile9
-rw-r--r--gnu/usr.bin/perl/win32/Makefile10
-rw-r--r--gnu/usr.bin/perl/win32/makefile.mk10
-rw-r--r--gnu/usr.bin/perl/win32/perlhost.h10
-rw-r--r--gnu/usr.bin/perl/win32/pod.mak8
140 files changed, 2687 insertions, 1956 deletions
diff --git a/gnu/usr.bin/perl/AUTHORS b/gnu/usr.bin/perl/AUTHORS
index e77fc36902e..c5ed6626df5 100644
--- a/gnu/usr.bin/perl/AUTHORS
+++ b/gnu/usr.bin/perl/AUTHORS
@@ -298,6 +298,7 @@ Darrell Kindred <dkindred+@cmu.edu>
Darrell Schiebel <drs@nrao.edu>
Darren/Torin/Who Ever... <torin@daft.com>
Dave Bianchi
+Dave Cross <dave@mag-sol.com>
Dave Hartnoll <Dave_Hartnoll@3b2.com>
Dave Liney <dave.liney@gbr.conoco.com>
Dave Nelson <David.Nelson@bellcow.com>
@@ -685,6 +686,7 @@ KAWAI Takanori <GCD00051@nifty.ne.jp>
Keedi Kim <keedi@cpan.org>
Keith Neufeld <neufeld@fast.pvi.org>
Keith Thompson <Keith.S.Thompson@gmail.com>
+Ken Brown <kbrown@cornell.edu>
Ken Estes <estes@ms.com>
Ken Fox <kfox@ford.com>
Ken Hirsch <kenhirsch@ftml.net>
@@ -1147,6 +1149,7 @@ Steve Purkis <Steve.Purkis@multimap.com>
Steve Vinoski
Stevan Little <stevan@cpan.org>
Steven Hirsch <hirschs@btv.ibm.com>
+Steven Humphrey <catchperl@33k.co.uk>
Steven Knight <knight@theopera.baldmt.citilink.com>
Steven Morlock <newspost@morlock.net>
Steven N. Hirsch <hirschs@stargate.btv.ibm.com>
diff --git a/gnu/usr.bin/perl/Configure b/gnu/usr.bin/perl/Configure
index 72381fb3ccb..cf143bf933b 100644
--- a/gnu/usr.bin/perl/Configure
+++ b/gnu/usr.bin/perl/Configure
@@ -5239,6 +5239,20 @@ case "$usequadmath" in
*) usequadmath="$undef" ;;
esac
+: Fail if both uselongdouble and usequadmath are requested
+case "$usequadmath:$uselongdouble" in
+define:define)
+ $cat <<EOM >&4
+
+*** You requested the use of the quadmath library and use
+*** of long doubles.
+***
+*** Please select one or the other.
+EOM
+ exit 1
+ ;;
+esac
+
: Looking for optional libraries
echo " "
echo "Checking for optional libraries..." >&4
@@ -5459,25 +5473,6 @@ default|recommended)
eval $checkccflag
;;
esac
- case "$gccversion" in
- 1*) ;;
- 2*) ;;
- ?*) echo " "
- echo "Checking if your compiler accepts -fno-delete-null-pointer-checks" 2>&1
- echo 'int main(void) { return 0; }' > gcctest.c
- if $cc -O2 -Werror -fno-delete-null-pointer-checks -o gcctest gcctest.c; then
- echo "Yes, it does." 2>&1
- case "$ccflags" in
- *delete-null-pointer-checks*)
- echo "Leaving current flags $ccflags alone." 2>&1
- ;;
- *) dflt="$dflt -fno-delete-null-pointer-checks" ;;
- esac
- else
- echo "Nope, it doesn't, but that's ok." 2>&1
- fi
- ;;
- esac
# For gcc, adding -pipe speeds up compilations for some, but apparently
# some assemblers can't read from stdin. (It also slows down compilations
# in other cases, but those are apparently rarer these days.) AD 5/2004.
@@ -6817,13 +6812,13 @@ yes)
if $contains $tlook $tf >/dev/null 2>&1; then
tval=true;
elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
- echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p() && p() != (void *)main) return(0); else return(1); }"> try.c;
+ echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main(int argc, char **argv) { if(p() && p() != (void *)argv[0]) return(0); else return(1); }"> try.c;
$cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
$test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
$rm_try;
fi;
else
- echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p() && p() != (void *)main) return(0); else return(1); }"> try.c;
+ echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main(int argc, char **argv) { if(p() && p() != (void *)argv[0]) return(0); else return(1); }"> try.c;
$cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
$rm_try;
fi;
@@ -7204,7 +7199,7 @@ case "$usequadmath" in
$define)
echo "quadmath selected." >&4
case "$archname" in
- *-ld*) echo "...and architecture name already has -quadmath." >&4
+ *-quadmath*) echo "...and architecture name already has -quadmath." >&4
;;
*) archname="$archname-quadmath"
echo "...setting architecture name to $archname." >&4
@@ -20490,8 +20485,8 @@ $cat >try.c <<EOP
#define DOUBLESIZE $doublesize
#$d_longdbl HAS_LONG_DOUBLE
#ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE $longdblsize
-#define LONG_DOUBLEKIND $longdblkind
+#define LONGDBLSIZE $longdblsize
+#define LONGDBLKIND $longdblkind
#endif
#$i_math I_MATH
#ifdef I_MATH
@@ -20523,15 +20518,16 @@ int main(int argc, char *argv[]) {
#ifdef HAS_LONG_DOUBLE
long double ldinf = (long double)exp(1e9);
long double ldnan = (long double)sqrt(-1.0);
-# if LONG_DOUBLEKIND == 3 || LONG_DOUBLEKIND == 4
-/* the 80-bit long doubles might have garbage in their excess bytes */
- memset((char *)&ldinf + 10, '\0', LONG_DOUBLESIZE - 10);
- memset((char *)&ldnan + 10, '\0', LONG_DOUBLESIZE - 10);
-# endif
+#endif
if (argc == 2) {
switch (argv[1][0]) {
case '1': bytes(&dinf, sizeof(dinf)); break;
case '2': bytes(&dnan, sizeof(dnan)); break;
+#ifdef HAS_LONG_DOUBLE
+# if LONG_DOUBLEKIND == 3 || LONG_DOUBLEKIND == 4
+/* the 80-bit long doubles might have garbage in their excess bytes */
+ memset((char *)&ldinf + 10, '\0', LONG_DOUBLESIZE - 10);
+# endif
case '3': bytes(&ldinf, sizeof(ldinf)); break;
case '4': bytes(&ldnan, sizeof(ldnan)); break;
#endif
@@ -20759,9 +20755,9 @@ case "$ccflags" in
;;
esac
-randfunc=drand48
-drand01="drand48()"
-seedfunc="srand48"
+randfunc=Perl_drand48
+drand01="Perl_drand48()"
+seedfunc="Perl_drand48_init"
randbits=48
randseedtype=U32
@@ -23383,7 +23379,7 @@ fi
: add -D_FORTIFY_SOURCE if feasible and not already there
case "$gccversion" in
-[45].*) case "$optimize$ccflags" in
+[4567].*) case "$optimize$ccflags" in
*-O*) case "$ccflags$cppsymbols" in
*_FORTIFY_SOURCE=*) # Don't add it again.
echo "You seem to have -D_FORTIFY_SOURCE already, not adding it." >&4
@@ -23612,7 +23608,6 @@ xs_extensions=''
find_extensions='
for xxx in *; do
case "$xxx" in
- CVS) ;;
DynaLoader|dynaload) ;;
*)
this_ext=`echo "$xxx" | $sed -e s/-/\\\//g`;
@@ -23850,8 +23845,6 @@ esac
nonxs_ext=''
for xxx in $nonxs_extensions ; do
case "$xxx" in
- CVS|RCS|SCCS|.svn)
- ;;
VMS*)
;;
*) nonxs_ext="$nonxs_ext $xxx"
diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux b/gnu/usr.bin/perl/Cross/config.sh-arm-linux
index 53bc26fb92b..fb5d21d8308 100644
--- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux
+++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux
@@ -36,8 +36,8 @@ api_subversion='0'
api_version='24'
api_versionstring='5.24.0'
ar='ar'
-archlib='/usr/lib/perl5/5.24.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.24.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.24.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.24.3/armv4l-linux'
archname64=''
archname='armv4l-linux'
archobjs=''
@@ -56,7 +56,7 @@ castflags='0'
cat='cat'
cc='cc'
cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.3/armv4l-linux/CORE'
ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccname='arm-linux-gcc'
@@ -808,7 +808,7 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.24.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.24.3/armv4l-linux'
installbin='./install_me_here/usr/bin'
installhtml1dir=''
installhtml3dir=''
@@ -816,13 +816,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.24.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.24.3'
installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
installsitebin='./install_me_here/usr/bin'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.3'
installsiteman1dir='./install_me_here/usr/share/man/man1'
installsiteman3dir='./install_me_here/usr/share/man/man3'
installsitescript='./install_me_here/usr/bin'
@@ -956,8 +956,8 @@ pmake=''
pr=''
prefix='/usr'
prefixexp='/usr'
-privlib='/usr/lib/perl5/5.24.2'
-privlibexp='/usr/lib/perl5/5.24.2'
+privlib='/usr/lib/perl5/5.24.3'
+privlibexp='/usr/lib/perl5/5.24.3'
procselfexe='"/proc/self/exe"'
prototype='define'
ptrsize='4'
@@ -1022,17 +1022,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.24.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
sitebin='/usr/bin'
sitebinexp='/usr/bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.24.2'
+sitelib='/usr/lib/perl5/site_perl/5.24.3'
sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.24.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.24.3'
siteman1dir='/usr/share/man/man1'
siteman1direxp='/usr/share/man/man1'
siteman3dir='/usr/share/man/man3'
@@ -1071,7 +1071,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='2'
+subversion='3'
sysman='/usr/share/man/man1'
tail=''
tar=''
@@ -1163,8 +1163,8 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
versiononly='undef'
vi=''
xlibpth='/usr/lib/386 /lib/386'
@@ -1178,7 +1178,7 @@ config_args=''
config_argc=0
PERL_REVISION=5
PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
PERL_API_REVISION=5
PERL_API_VERSION=24
PERL_API_SUBVERSION=0
diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
index 2a1d6635d60..a9478bce171 100644
--- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
+++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770
@@ -36,8 +36,8 @@ api_subversion='0'
api_version='24'
api_versionstring='5.24.0'
ar='ar'
-archlib='/usr/lib/perl5/5.24.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.24.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.24.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.24.3/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.24.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.24.3/armv4l-linux/CORE'
ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccname='arm-linux-gcc'
@@ -699,7 +699,7 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.24.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.24.3/armv4l-linux'
installbin='./install_me_here/usr/bin'
installhtml1dir=''
installhtml3dir=''
@@ -707,13 +707,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.24.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.24.3'
installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
installsitebin='./install_me_here/usr/bin'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.24.3'
installsiteman1dir='./install_me_here/usr/share/man/man1'
installsiteman3dir='./install_me_here/usr/share/man/man3'
installsitescript='./install_me_here/usr/bin'
@@ -841,8 +841,8 @@ pmake=''
pr=''
prefix='/usr'
prefixexp='/usr'
-privlib='/usr/lib/perl5/5.24.2'
-privlibexp='/usr/lib/perl5/5.24.2'
+privlib='/usr/lib/perl5/5.24.3'
+privlibexp='/usr/lib/perl5/5.24.3'
procselfexe='"/proc/self/exe"'
prototype='define'
ptrsize='4'
@@ -903,17 +903,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.24.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.24.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.24.3/armv4l-linux'
sitebin='/usr/bin'
sitebinexp='/usr/bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.24.2'
+sitelib='/usr/lib/perl5/site_perl/5.24.3'
sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.24.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.24.3'
siteman1dir='/usr/share/man/man1'
siteman1direxp='/usr/share/man/man1'
siteman3dir='/usr/share/man/man3'
@@ -950,7 +950,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='2'
+subversion='3'
sysman='/usr/share/man/man1'
tail=''
tar=''
@@ -1035,8 +1035,8 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
versiononly='undef'
vi=''
xlibpth='/usr/lib/386 /lib/386'
@@ -1050,7 +1050,7 @@ config_args=''
config_argc=0
PERL_REVISION=5
PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
PERL_API_REVISION=5
PERL_API_VERSION=24
PERL_API_SUBVERSION=0
diff --git a/gnu/usr.bin/perl/INSTALL b/gnu/usr.bin/perl/INSTALL
index 5edf5bbd0fe..eb7498a2194 100644
--- a/gnu/usr.bin/perl/INSTALL
+++ b/gnu/usr.bin/perl/INSTALL
@@ -581,7 +581,7 @@ 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.24.2.
+By default, Configure will use the following directories for 5.24.3.
$version is the full perl version number, including subversion, e.g.
5.12.3, and $archname is a string like sun4-sunos,
determined by Configure. The full definitions of all Configure
@@ -2437,7 +2437,8 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
=head1 Coexistence with earlier versions of perl 5
-Perl 5.24.2 is not binary compatible with earlier versions of Perl.
+Perl 5.24.3 is not binary compatible with versions of Perl earlier than
+5.24.0.
In other words, you will have to recompile your XS modules.
In general, you can usually safely upgrade from one version of Perl
@@ -2512,9 +2513,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.24.2
+ sh Configure -Dprefix=/opt/perl5.24.3
-and adding /opt/perl5.24.2/bin to the shell PATH variable. Such users
+and adding /opt/perl5.24.3/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.
@@ -2527,13 +2528,13 @@ seriously consider using a separate directory, since development
subversions may not have all the compatibility wrinkles ironed out
yet.
-=head2 Upgrading from v5.22 or earlier
+=head2 Upgrading from 5.23.9 or earlier
-B<Perl 5.24.2 may not be binary compatible with Perl v5.22 or
+B<Perl 5.24.3 may not be binary compatible with Perl 5.23.9 or
earlier Perl releases.> Perl modules having binary parts
(meaning that a C compiler is used) will have to be recompiled to be
-used with 5.24.2. If you find you do need to rebuild an extension with
-5.24.2, you may safely do so without disturbing the older
+used with 5.24.3. If you find you do need to rebuild an extension with
+5.24.3, you may safely do so without disturbing the older
installations. (See L<"Coexistence with earlier versions of perl 5">
above.)
@@ -2566,15 +2567,15 @@ Firstly, the bare minimum to run this script
print("$f\n");
}
-in Linux with perl-5.24.2 is as follows (under $Config{prefix}):
+in Linux with perl-5.24.3 is as follows (under $Config{prefix}):
./bin/perl
- ./lib/perl5/5.24.2/strict.pm
- ./lib/perl5/5.24.2/warnings.pm
- ./lib/perl5/5.24.2/i686-linux/File/Glob.pm
- ./lib/perl5/5.24.2/feature.pm
- ./lib/perl5/5.24.2/XSLoader.pm
- ./lib/perl5/5.24.2/i686-linux/auto/File/Glob/Glob.so
+ ./lib/perl5/5.24.3/strict.pm
+ ./lib/perl5/5.24.3/warnings.pm
+ ./lib/perl5/5.24.3/i686-linux/File/Glob.pm
+ ./lib/perl5/5.24.3/feature.pm
+ ./lib/perl5/5.24.3/XSLoader.pm
+ ./lib/perl5/5.24.3/i686-linux/auto/File/Glob/Glob.so
Secondly, for perl-5.10.1, the Debian perl-base package contains 591
files, (of which 510 are for lib/unicore) totaling about 3.5MB in its
diff --git a/gnu/usr.bin/perl/MANIFEST b/gnu/usr.bin/perl/MANIFEST
index c776e29acc3..8e94b0ebfba 100644
--- a/gnu/usr.bin/perl/MANIFEST
+++ b/gnu/usr.bin/perl/MANIFEST
@@ -14,7 +14,6 @@ cflags.SH A script that emits C compilation flags per file
Changes Describe how to peruse changes between releases
charclass_invlists.h Compiled-in inversion lists
config_h.SH Produces config.h
-config.over Site-specific overrides for Configure defaults
configpm Produces lib/Config.pm
Configure Portability tool
configure.com Configure-equivalent for VMS
@@ -1804,13 +1803,6 @@ cpan/NEXT/t/dynamically_scoped_regex_vars.t NEXT
cpan/NEXT/t/next.t NEXT
cpan/NEXT/t/stringify.t NEXT
cpan/NEXT/t/unseen.t NEXT
-cpan/OpenBSD-MkTemp/lib/OpenBSD/MkTemp.pm OpenBSD::MkTemp
-cpan/OpenBSD-MkTemp/MkTemp.xs OpenBSD::MkTemp
-cpan/OpenBSD-MkTemp/README OpenBSD::MkTemp Readme
-cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t OpenBSD::MkTemp test file
-cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm OpenBSD::Pledge
-cpan/OpenBSD-Pledge/Pledge.xs OpenBSD::Pledge
-cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t OpenBSD::Pledge test file
cpan/Params-Check/lib/Params/Check.pm Params::Check
cpan/Params-Check/t/01_Params-Check.t Params::Check tests
cpan/parent/lib/parent.pm Establish an ISA relationship with base classes at compile time
@@ -2271,17 +2263,6 @@ cpan/Term-ANSIColor/t/module/stringify.t
cpan/Term-ANSIColor/t/taint/basic.t
cpan/Term-Cap/Cap.pm Perl module supporting termcap usage
cpan/Term-Cap/test.pl See if Term::Cap works
-cpan/Term-ReadKey/Changes Term::ReadKey
-cpan/Term-ReadKey/Configure.pm Term::ReadKey
-cpan/Term-ReadKey/example/test.pl Term::ReadKey
-cpan/Term-ReadKey/genchars.pl Term::ReadKey
-cpan/Term-ReadKey/Makefile.PL Term::ReadKey
-cpan/Term-ReadKey/ppport.h Term::ReadKey
-cpan/Term-ReadKey/ReadKey.pm Term::ReadKey
-cpan/Term-ReadKey/ReadKey.xs Term::ReadKey
-cpan/Term-ReadKey/README Term::ReadKey
-cpan/Term-ReadKey/t/01_basic.t Term::ReadKey
-cpan/Term-ReadKey/t/02_terminal_functions.t Term::ReadKey
cpan/Test-Harness/bin/prove The prove harness utility
cpan/Test-Harness/lib/App/Prove.pm Gubbins for the prove utility
cpan/Test-Harness/lib/App/Prove/State.pm Gubbins for the prove utility
@@ -3576,6 +3557,7 @@ dist/Time-HiRes/t/time.t Test for Time::HiRes
dist/Time-HiRes/t/tv_interval.t Test for Time::HiRes
dist/Time-HiRes/t/ualarm.t Test for Time::HiRes
dist/Time-HiRes/t/usleep.t Test for Time::HiRes
+dist/Time-HiRes/t/utime.t Test for Time::HiRes
dist/Time-HiRes/t/Watchdog.pm Test for Time::HiRes
dist/Time-HiRes/typemap Time::HiRes extension
dist/XSLoader/Makefile.PL Dynamic Loader makefile writer
@@ -3636,6 +3618,7 @@ ext/B/B/Terse.pm Compiler Terse backend
ext/B/B/Xref.pm Compiler Xref backend
ext/B/B.xs Compiler backend external subroutines
ext/B/hints/darwin.pl Hints for named architecture
+ext/B/hints/openbsd.pl Hints for named architecture
ext/B/Makefile.PL Compiler backend makefile writer
ext/B/O.pm Compiler front-end module (-MO=...)
ext/B/t/b.t See if B works
@@ -4076,7 +4059,6 @@ fakesdio.h stdio in terms of PerlIO
feature.h Feature header
form.h Public declarations for formats
generate_uudmap.c Generate uudmap.h, the uuencode decoding map
-git_version.h Pre-generated git_version.h for OpenBSD
globals.c File to declare global symbols (for shared library)
globvar.sym Global variables that need hiding when embedded
gv.c Glob value code
@@ -4221,7 +4203,6 @@ lib/Class/Struct.pm Declare struct-like datatypes as Perl classes
lib/Class/Struct.t See if Class::Struct works
lib/Config/Extensions.pm Convenient hash lookup for built extensions
lib/Config/Extensions.t See if Config::Extensions works
-lib/Config_git.pl Pre-generated Config_git.pl for OpenBSD
lib/Config.t See if Config works
lib/CORE.pod document the CORE namespace
lib/DBM_Filter/compress.pm DBM Filter to compress keys/values
@@ -4382,515 +4363,57 @@ lib/Unicode/README Explanation what happened to lib/unicode.
lib/Unicode/UCD.pm Unicode character database
lib/Unicode/UCD.t See if Unicode character database works
lib/unicore/ArabicShaping.txt Unicode character database
-lib/unicore/auxiliary/GCBTest.txt Unicode character database
-lib/unicore/auxiliary/GraphemeBreakProperty.txt Unicode character database
-lib/unicore/auxiliary/LBTest.txt Unicode character database
-lib/unicore/auxiliary/SBTest.txt Unicode character database
-lib/unicore/auxiliary/SentenceBreakProperty.txt Unicode character database
-lib/unicore/auxiliary/WBTest.txt Unicode character database
-lib/unicore/auxiliary/WordBreakProperty.txt Unicode character database
+lib/unicore/auxiliary/GCBTest.txt Unicode character database
+lib/unicore/auxiliary/GraphemeBreakProperty.txt Unicode character database
+lib/unicore/auxiliary/LBTest.txt Unicode character database
+lib/unicore/auxiliary/SBTest.txt Unicode character database
+lib/unicore/auxiliary/SentenceBreakProperty.txt Unicode character database
+lib/unicore/auxiliary/WBTest.txt Unicode character database
+lib/unicore/auxiliary/WordBreakProperty.txt Unicode character database
lib/unicore/BidiBrackets.txt Unicode character database
lib/unicore/BidiMirroring.txt Unicode character database
lib/unicore/Blocks.txt Unicode character database
lib/unicore/CaseFolding.txt Unicode character database
lib/unicore/CJKRadicals.txt Unicode character database
-lib/unicore/CombiningClass.pl Unicode character database
-lib/unicore/CompositionExclusions.txt Unicode character database
+lib/unicore/CompositionExclusions.txt Unicode character database
lib/unicore/DAge.txt Unicode character database
lib/unicore/DCoreProperties.txt Unicode character database
-lib/unicore/Decomposition.pl Unicode character database
-lib/unicore/DNormalizationProps.txt Unicode character database
+lib/unicore/DNormalizationProps.txt Unicode character database
lib/unicore/EastAsianWidth.txt Unicode character database
lib/unicore/EmojiSources.txt Unicode character database
-lib/unicore/extracted/DBidiClass.txt Unicode character database
-lib/unicore/extracted/DBinaryProperties.txt Unicode character database
-lib/unicore/extracted/DCombiningClass.txt Unicode character database
-lib/unicore/extracted/DDecompositionType.txt Unicode character database
-lib/unicore/extracted/DEastAsianWidth.txt Unicode character database
-lib/unicore/extracted/DGeneralCategory.txt Unicode character database
-lib/unicore/extracted/DJoinGroup.txt Unicode character database
-lib/unicore/extracted/DJoinType.txt Unicode character database
-lib/unicore/extracted/DLineBreak.txt Unicode character database
-lib/unicore/extracted/DNumType.txt Unicode character database
-lib/unicore/extracted/DNumValues.txt Unicode character database
-lib/unicore/HangulSyllableType.txt Unicode character database
-lib/unicore/Heavy.pl Unicode character database
+lib/unicore/extracted/DBidiClass.txt Unicode character database
+lib/unicore/extracted/DBinaryProperties.txt Unicode character database
+lib/unicore/extracted/DCombiningClass.txt Unicode character database
+lib/unicore/extracted/DDecompositionType.txt Unicode character database
+lib/unicore/extracted/DEastAsianWidth.txt Unicode character database
+lib/unicore/extracted/DGeneralCategory.txt Unicode character database
+lib/unicore/extracted/DJoinGroup.txt Unicode character database
+lib/unicore/extracted/DJoinType.txt Unicode character database
+lib/unicore/extracted/DLineBreak.txt Unicode character database
+lib/unicore/extracted/DNumType.txt Unicode character database
+lib/unicore/extracted/DNumValues.txt Unicode character database
+lib/unicore/HangulSyllableType.txt Unicode character database
lib/unicore/Index.txt Unicode character database
-lib/unicore/IndicPositionalCategory.txt Unicode character database
-lib/unicore/IndicSyllabicCategory.txt Unicode character database
+lib/unicore/IndicPositionalCategory.txt Unicode character database
+lib/unicore/IndicSyllabicCategory.txt Unicode character database
lib/unicore/Jamo.txt Unicode character database
-lib/unicore/lib/Age/NA.pl Unicode character database
-lib/unicore/lib/Age/V11.pl Unicode character database
-lib/unicore/lib/Age/V20.pl Unicode character database
-lib/unicore/lib/Age/V30.pl Unicode character database
-lib/unicore/lib/Age/V31.pl Unicode character database
-lib/unicore/lib/Age/V32.pl Unicode character database
-lib/unicore/lib/Age/V40.pl Unicode character database
-lib/unicore/lib/Age/V41.pl Unicode character database
-lib/unicore/lib/Age/V50.pl Unicode character database
-lib/unicore/lib/Age/V51.pl Unicode character database
-lib/unicore/lib/Age/V52.pl Unicode character database
-lib/unicore/lib/Age/V60.pl Unicode character database
-lib/unicore/lib/Age/V61.pl Unicode character database
-lib/unicore/lib/Age/V70.pl Unicode character database
-lib/unicore/lib/Age/V80.pl Unicode character database
-lib/unicore/lib/Alpha/Y.pl Unicode character database
-lib/unicore/lib/Bc/AL.pl Unicode character database
-lib/unicore/lib/Bc/AN.pl Unicode character database
-lib/unicore/lib/Bc/BN.pl Unicode character database
-lib/unicore/lib/Bc/B.pl Unicode character database
-lib/unicore/lib/Bc/CS.pl Unicode character database
-lib/unicore/lib/Bc/EN.pl Unicode character database
-lib/unicore/lib/Bc/ES.pl Unicode character database
-lib/unicore/lib/Bc/ET.pl Unicode character database
-lib/unicore/lib/Bc/L.pl Unicode character database
-lib/unicore/lib/Bc/NSM.pl Unicode character database
-lib/unicore/lib/Bc/ON.pl Unicode character database
-lib/unicore/lib/Bc/R.pl Unicode character database
-lib/unicore/lib/Bc/WS.pl Unicode character database
-lib/unicore/lib/BidiC/Y.pl Unicode character database
-lib/unicore/lib/BidiM/Y.pl Unicode character database
-lib/unicore/lib/Blk/NB.pl Unicode character database
-lib/unicore/lib/Bpt/C.pl Unicode character database
-lib/unicore/lib/Bpt/N.pl Unicode character database
-lib/unicore/lib/Bpt/O.pl Unicode character database
-lib/unicore/lib/Cased/Y.pl Unicode character database
-lib/unicore/lib/Ccc/A.pl Unicode character database
-lib/unicore/lib/Ccc/AR.pl Unicode character database
-lib/unicore/lib/Ccc/ATAR.pl Unicode character database
-lib/unicore/lib/Ccc/B.pl Unicode character database
-lib/unicore/lib/Ccc/BR.pl Unicode character database
-lib/unicore/lib/Ccc/DB.pl Unicode character database
-lib/unicore/lib/Ccc/NK.pl Unicode character database
-lib/unicore/lib/Ccc/NR.pl Unicode character database
-lib/unicore/lib/Ccc/OV.pl Unicode character database
-lib/unicore/lib/Ccc/VR.pl Unicode character database
-lib/unicore/lib/CE/Y.pl Unicode character database
-lib/unicore/lib/CI/Y.pl Unicode character database
-lib/unicore/lib/CompEx/Y.pl Unicode character database
-lib/unicore/lib/CWCF/Y.pl Unicode character database
-lib/unicore/lib/CWCM/Y.pl Unicode character database
-lib/unicore/lib/CWKCF/Y.pl Unicode character database
-lib/unicore/lib/CWL/Y.pl Unicode character database
-lib/unicore/lib/CWT/Y.pl Unicode character database
-lib/unicore/lib/CWU/Y.pl Unicode character database
-lib/unicore/lib/Dash/Y.pl Unicode character database
-lib/unicore/lib/Dep/Y.pl Unicode character database
-lib/unicore/lib/Dia/Y.pl Unicode character database
-lib/unicore/lib/DI/Y.pl Unicode character database
-lib/unicore/lib/Dt/Com.pl Unicode character database
-lib/unicore/lib/Dt/Enc.pl Unicode character database
-lib/unicore/lib/Dt/Fin.pl Unicode character database
-lib/unicore/lib/Dt/Font.pl Unicode character database
-lib/unicore/lib/Dt/Init.pl Unicode character database
-lib/unicore/lib/Dt/Iso.pl Unicode character database
-lib/unicore/lib/Dt/Med.pl Unicode character database
-lib/unicore/lib/Dt/Nar.pl Unicode character database
-lib/unicore/lib/Dt/Nb.pl Unicode character database
-lib/unicore/lib/Dt/NonCanon.pl Unicode character database
-lib/unicore/lib/Dt/Sqr.pl Unicode character database
-lib/unicore/lib/Dt/Sub.pl Unicode character database
-lib/unicore/lib/Dt/Sup.pl Unicode character database
-lib/unicore/lib/Dt/Vert.pl Unicode character database
-lib/unicore/lib/Ea/A.pl Unicode character database
-lib/unicore/lib/Ea/H.pl Unicode character database
-lib/unicore/lib/Ea/Na.pl Unicode character database
-lib/unicore/lib/Ea/N.pl Unicode character database
-lib/unicore/lib/Ea/W.pl Unicode character database
-lib/unicore/lib/Ext/Y.pl Unicode character database
-lib/unicore/lib/GCB/CN.pl Unicode character database
-lib/unicore/lib/GCB/EX.pl Unicode character database
-lib/unicore/lib/GCB/LV.pl Unicode character database
-lib/unicore/lib/GCB/LVT.pl Unicode character database
-lib/unicore/lib/GCB/SM.pl Unicode character database
-lib/unicore/lib/GCB/XX.pl Unicode character database
-lib/unicore/lib/Gc/Cf.pl Unicode character database
-lib/unicore/lib/Gc/Cn.pl Unicode character database
-lib/unicore/lib/Gc/C.pl Unicode character database
-lib/unicore/lib/Gc/LC.pl Unicode character database
-lib/unicore/lib/Gc/Ll.pl Unicode character database
-lib/unicore/lib/Gc/Lm.pl Unicode character database
-lib/unicore/lib/Gc/Lo.pl Unicode character database
-lib/unicore/lib/Gc/L.pl Unicode character database
-lib/unicore/lib/Gc/Lu.pl Unicode character database
-lib/unicore/lib/Gc/Mc.pl Unicode character database
-lib/unicore/lib/Gc/Me.pl Unicode character database
-lib/unicore/lib/Gc/Mn.pl Unicode character database
-lib/unicore/lib/Gc/M.pl Unicode character database
-lib/unicore/lib/Gc/Nd.pl Unicode character database
-lib/unicore/lib/Gc/Nl.pl Unicode character database
-lib/unicore/lib/Gc/No.pl Unicode character database
-lib/unicore/lib/Gc/N.pl Unicode character database
-lib/unicore/lib/Gc/Pd.pl Unicode character database
-lib/unicore/lib/Gc/Pe.pl Unicode character database
-lib/unicore/lib/Gc/Pf.pl Unicode character database
-lib/unicore/lib/Gc/Pi.pl Unicode character database
-lib/unicore/lib/Gc/Po.pl Unicode character database
-lib/unicore/lib/Gc/P.pl Unicode character database
-lib/unicore/lib/Gc/Ps.pl Unicode character database
-lib/unicore/lib/Gc/Sc.pl Unicode character database
-lib/unicore/lib/Gc/Sk.pl Unicode character database
-lib/unicore/lib/Gc/Sm.pl Unicode character database
-lib/unicore/lib/Gc/So.pl Unicode character database
-lib/unicore/lib/Gc/S.pl Unicode character database
-lib/unicore/lib/Gc/Z.pl Unicode character database
-lib/unicore/lib/Gc/Zs.pl Unicode character database
-lib/unicore/lib/GrBase/Y.pl Unicode character database
-lib/unicore/lib/Hex/Y.pl Unicode character database
-lib/unicore/lib/Hst/NA.pl Unicode character database
-lib/unicore/lib/Hyphen/T.pl Unicode character database
-lib/unicore/lib/IDC/Y.pl Unicode character database
-lib/unicore/lib/Ideo/Y.pl Unicode character database
-lib/unicore/lib/IDS/Y.pl Unicode character database
-lib/unicore/lib/In/2_0.pl Unicode character database
-lib/unicore/lib/In/2_1.pl Unicode character database
-lib/unicore/lib/In/3_0.pl Unicode character database
-lib/unicore/lib/In/3_1.pl Unicode character database
-lib/unicore/lib/In/3_2.pl Unicode character database
-lib/unicore/lib/In/4_0.pl Unicode character database
-lib/unicore/lib/In/4_1.pl Unicode character database
-lib/unicore/lib/In/5_0.pl Unicode character database
-lib/unicore/lib/In/5_1.pl Unicode character database
-lib/unicore/lib/In/5_2.pl Unicode character database
-lib/unicore/lib/In/6_0.pl Unicode character database
-lib/unicore/lib/In/6_1.pl Unicode character database
-lib/unicore/lib/In/6_2.pl Unicode character database
-lib/unicore/lib/In/6_3.pl Unicode character database
-lib/unicore/lib/In/7_0.pl Unicode character database
-lib/unicore/lib/In/8_0.pl Unicode character database
-lib/unicore/lib/InPC/Bottom.pl Unicode character database
-lib/unicore/lib/InPC/LeftAndR.pl Unicode character database
-lib/unicore/lib/InPC/Left.pl Unicode character database
-lib/unicore/lib/InPC/NA.pl Unicode character database
-lib/unicore/lib/InPC/Overstru.pl Unicode character database
-lib/unicore/lib/InPC/Right.pl Unicode character database
-lib/unicore/lib/InPC/TopAndBo.pl Unicode character database
-lib/unicore/lib/InPC/TopAndL2.pl Unicode character database
-lib/unicore/lib/InPC/TopAndLe.pl Unicode character database
-lib/unicore/lib/InPC/TopAndRi.pl Unicode character database
-lib/unicore/lib/InPC/Top.pl Unicode character database
-lib/unicore/lib/InPC/VisualOr.pl Unicode character database
-lib/unicore/lib/InSC/Avagraha.pl Unicode character database
-lib/unicore/lib/InSC/Bindu.pl Unicode character database
-lib/unicore/lib/InSC/Cantilla.pl Unicode character database
-lib/unicore/lib/InSC/Consona2.pl Unicode character database
-lib/unicore/lib/InSC/Consona3.pl Unicode character database
-lib/unicore/lib/InSC/Consona4.pl Unicode character database
-lib/unicore/lib/InSC/Consona5.pl Unicode character database
-lib/unicore/lib/InSC/Consona6.pl Unicode character database
-lib/unicore/lib/InSC/Consonan.pl Unicode character database
-lib/unicore/lib/InSC/Invisibl.pl Unicode character database
-lib/unicore/lib/InSC/Nukta.pl Unicode character database
-lib/unicore/lib/InSC/Number.pl Unicode character database
-lib/unicore/lib/InSC/Other.pl Unicode character database
-lib/unicore/lib/InSC/PureKill.pl Unicode character database
-lib/unicore/lib/InSC/Syllable.pl Unicode character database
-lib/unicore/lib/InSC/ToneMark.pl Unicode character database
-lib/unicore/lib/InSC/Virama.pl Unicode character database
-lib/unicore/lib/InSC/Visarga.pl Unicode character database
-lib/unicore/lib/InSC/VowelDep.pl Unicode character database
-lib/unicore/lib/InSC/VowelInd.pl Unicode character database
-lib/unicore/lib/InSC/Vowel.pl Unicode character database
-lib/unicore/lib/Jg/Ain.pl Unicode character database
-lib/unicore/lib/Jg/Alef.pl Unicode character database
-lib/unicore/lib/Jg/Beh.pl Unicode character database
-lib/unicore/lib/Jg/Dal.pl Unicode character database
-lib/unicore/lib/Jg/FarsiYeh.pl Unicode character database
-lib/unicore/lib/Jg/Feh.pl Unicode character database
-lib/unicore/lib/Jg/Gaf.pl Unicode character database
-lib/unicore/lib/Jg/Hah.pl Unicode character database
-lib/unicore/lib/Jg/Kaf.pl Unicode character database
-lib/unicore/lib/Jg/Lam.pl Unicode character database
-lib/unicore/lib/Jg/NoJoinin.pl Unicode character database
-lib/unicore/lib/Jg/Qaf.pl Unicode character database
-lib/unicore/lib/Jg/Reh.pl Unicode character database
-lib/unicore/lib/Jg/Sad.pl Unicode character database
-lib/unicore/lib/Jg/Seen.pl Unicode character database
-lib/unicore/lib/Jg/Waw.pl Unicode character database
-lib/unicore/lib/Jg/Yeh.pl Unicode character database
-lib/unicore/lib/Jt/C.pl Unicode character database
-lib/unicore/lib/Jt/D.pl Unicode character database
-lib/unicore/lib/Jt/R.pl Unicode character database
-lib/unicore/lib/Jt/T.pl Unicode character database
-lib/unicore/lib/Jt/U.pl Unicode character database
-lib/unicore/lib/Lb/AI.pl Unicode character database
-lib/unicore/lib/Lb/AL.pl Unicode character database
-lib/unicore/lib/Lb/BA.pl Unicode character database
-lib/unicore/lib/Lb/BB.pl Unicode character database
-lib/unicore/lib/Lb/CJ.pl Unicode character database
-lib/unicore/lib/Lb/CL.pl Unicode character database
-lib/unicore/lib/Lb/CM.pl Unicode character database
-lib/unicore/lib/Lb/EX.pl Unicode character database
-lib/unicore/lib/Lb/GL.pl Unicode character database
-lib/unicore/lib/Lb/ID.pl Unicode character database
-lib/unicore/lib/Lb/IN.pl Unicode character database
-lib/unicore/lib/Lb/IS.pl Unicode character database
-lib/unicore/lib/Lb/NS.pl Unicode character database
-lib/unicore/lib/Lb/OP.pl Unicode character database
-lib/unicore/lib/Lb/PO.pl Unicode character database
-lib/unicore/lib/Lb/PR.pl Unicode character database
-lib/unicore/lib/Lb/QU.pl Unicode character database
-lib/unicore/lib/Lb/SA.pl Unicode character database
-lib/unicore/lib/Lb/XX.pl Unicode character database
-lib/unicore/lib/Lower/Y.pl Unicode character database
-lib/unicore/lib/Math/Y.pl Unicode character database
-lib/unicore/lib/NFCQC/M.pl Unicode character database
-lib/unicore/lib/NFCQC/Y.pl Unicode character database
-lib/unicore/lib/NFDQC/N.pl Unicode character database
-lib/unicore/lib/NFDQC/Y.pl Unicode character database
-lib/unicore/lib/NFKCQC/N.pl Unicode character database
-lib/unicore/lib/NFKCQC/Y.pl Unicode character database
-lib/unicore/lib/NFKDQC/N.pl Unicode character database
-lib/unicore/lib/NFKDQC/Y.pl Unicode character database
-lib/unicore/lib/Nt/Di.pl Unicode character database
-lib/unicore/lib/Nt/None.pl Unicode character database
-lib/unicore/lib/Nt/Nu.pl Unicode character database
-lib/unicore/lib/Nv/0.pl Unicode character database
-lib/unicore/lib/Nv/10000.pl Unicode character database
-lib/unicore/lib/Nv/1000.pl Unicode character database
-lib/unicore/lib/Nv/100.pl Unicode character database
-lib/unicore/lib/Nv/10.pl Unicode character database
-lib/unicore/lib/Nv/11.pl Unicode character database
-lib/unicore/lib/Nv/12.pl Unicode character database
-lib/unicore/lib/Nv/1_2.pl Unicode character database
-lib/unicore/lib/Nv/13.pl Unicode character database
-lib/unicore/lib/Nv/1_3.pl Unicode character database
-lib/unicore/lib/Nv/14.pl Unicode character database
-lib/unicore/lib/Nv/1_4.pl Unicode character database
-lib/unicore/lib/Nv/15.pl Unicode character database
-lib/unicore/lib/Nv/16.pl Unicode character database
-lib/unicore/lib/Nv/17.pl Unicode character database
-lib/unicore/lib/Nv/18.pl Unicode character database
-lib/unicore/lib/Nv/1_8.pl Unicode character database
-lib/unicore/lib/Nv/19.pl Unicode character database
-lib/unicore/lib/Nv/1.pl Unicode character database
-lib/unicore/lib/Nv/200.pl Unicode character database
-lib/unicore/lib/Nv/20.pl Unicode character database
-lib/unicore/lib/Nv/2_3.pl Unicode character database
-lib/unicore/lib/Nv/2.pl Unicode character database
-lib/unicore/lib/Nv/300.pl Unicode character database
-lib/unicore/lib/Nv/30.pl Unicode character database
-lib/unicore/lib/Nv/3_4.pl Unicode character database
-lib/unicore/lib/Nv/3.pl Unicode character database
-lib/unicore/lib/Nv/400.pl Unicode character database
-lib/unicore/lib/Nv/40.pl Unicode character database
-lib/unicore/lib/Nv/4.pl Unicode character database
-lib/unicore/lib/Nv/50000.pl Unicode character database
-lib/unicore/lib/Nv/5000.pl Unicode character database
-lib/unicore/lib/Nv/500.pl Unicode character database
-lib/unicore/lib/Nv/50.pl Unicode character database
-lib/unicore/lib/Nv/5.pl Unicode character database
-lib/unicore/lib/Nv/600.pl Unicode character database
-lib/unicore/lib/Nv/60.pl Unicode character database
-lib/unicore/lib/Nv/6.pl Unicode character database
-lib/unicore/lib/Nv/700.pl Unicode character database
-lib/unicore/lib/Nv/70.pl Unicode character database
-lib/unicore/lib/Nv/7.pl Unicode character database
-lib/unicore/lib/Nv/800.pl Unicode character database
-lib/unicore/lib/Nv/80.pl Unicode character database
-lib/unicore/lib/Nv/8.pl Unicode character database
-lib/unicore/lib/Nv/900.pl Unicode character database
-lib/unicore/lib/Nv/90.pl Unicode character database
-lib/unicore/lib/Nv/9.pl Unicode character database
-lib/unicore/lib/PatSyn/Y.pl Unicode character database
-lib/unicore/lib/Perl/Alnum.pl Unicode character database
-lib/unicore/lib/Perl/Assigned.pl Unicode character database
-lib/unicore/lib/Perl/Blank.pl Unicode character database
-lib/unicore/lib/Perl/Graph.pl Unicode character database
-lib/unicore/lib/Perl/_PerlAny.pl Unicode character database
-lib/unicore/lib/Perl/_PerlCh2.pl Unicode character database
-lib/unicore/lib/Perl/_PerlCha.pl Unicode character database
-lib/unicore/lib/Perl/_PerlFol.pl Unicode character database
-lib/unicore/lib/Perl/_PerlIDC.pl Unicode character database
-lib/unicore/lib/Perl/_PerlIDS.pl Unicode character database
-lib/unicore/lib/Perl/_PerlNch.pl Unicode character database
-lib/unicore/lib/Perl/_PerlPat.pl Unicode character database
-lib/unicore/lib/Perl/_PerlPr2.pl Unicode character database
-lib/unicore/lib/Perl/_PerlPro.pl Unicode character database
-lib/unicore/lib/Perl/_PerlQuo.pl Unicode character database
-lib/unicore/lib/Perl/PerlWord.pl Unicode character database
-lib/unicore/lib/Perl/PosixPun.pl Unicode character database
-lib/unicore/lib/Perl/Print.pl Unicode character database
-lib/unicore/lib/Perl/SpacePer.pl Unicode character database
-lib/unicore/lib/Perl/Title.pl Unicode character database
-lib/unicore/lib/Perl/Word.pl Unicode character database
-lib/unicore/lib/Perl/XPosixPu.pl Unicode character database
-lib/unicore/lib/QMark/Y.pl Unicode character database
-lib/unicore/lib/SB/AT.pl Unicode character database
-lib/unicore/lib/SB/CL.pl Unicode character database
-lib/unicore/lib/SB/EX.pl Unicode character database
-lib/unicore/lib/SB/FO.pl Unicode character database
-lib/unicore/lib/SB/LE.pl Unicode character database
-lib/unicore/lib/SB/LO.pl Unicode character database
-lib/unicore/lib/SB/NU.pl Unicode character database
-lib/unicore/lib/SB/SC.pl Unicode character database
-lib/unicore/lib/SB/Sp.pl Unicode character database
-lib/unicore/lib/SB/ST.pl Unicode character database
-lib/unicore/lib/SB/UP.pl Unicode character database
-lib/unicore/lib/SB/XX.pl Unicode character database
-lib/unicore/lib/Sc/Arab.pl Unicode character database
-lib/unicore/lib/Sc/Armn.pl Unicode character database
-lib/unicore/lib/Sc/Beng.pl Unicode character database
-lib/unicore/lib/Sc/Cham.pl Unicode character database
-lib/unicore/lib/Sc/Cprt.pl Unicode character database
-lib/unicore/lib/Sc/Cyrl.pl Unicode character database
-lib/unicore/lib/Sc/Deva.pl Unicode character database
-lib/unicore/lib/Sc/Dupl.pl Unicode character database
-lib/unicore/lib/Sc/Ethi.pl Unicode character database
-lib/unicore/lib/Sc/Geor.pl Unicode character database
-lib/unicore/lib/Sc/Gran.pl Unicode character database
-lib/unicore/lib/Sc/Grek.pl Unicode character database
-lib/unicore/lib/Sc/Gujr.pl Unicode character database
-lib/unicore/lib/Sc/Guru.pl Unicode character database
-lib/unicore/lib/Sc/Hang.pl Unicode character database
-lib/unicore/lib/Sc/Han.pl Unicode character database
-lib/unicore/lib/Sc/Hebr.pl Unicode character database
-lib/unicore/lib/Sc/Hira.pl Unicode character database
-lib/unicore/lib/Sc/Hmng.pl Unicode character database
-lib/unicore/lib/Sc/Kana.pl Unicode character database
-lib/unicore/lib/Sc/Khar.pl Unicode character database
-lib/unicore/lib/Sc/Khmr.pl Unicode character database
-lib/unicore/lib/Sc/Knda.pl Unicode character database
-lib/unicore/lib/Sc/Lana.pl Unicode character database
-lib/unicore/lib/Sc/Lao.pl Unicode character database
-lib/unicore/lib/Sc/Latn.pl Unicode character database
-lib/unicore/lib/Sc/Limb.pl Unicode character database
-lib/unicore/lib/Sc/Linb.pl Unicode character database
-lib/unicore/lib/Sc/Mlym.pl Unicode character database
-lib/unicore/lib/Sc/Mong.pl Unicode character database
-lib/unicore/lib/Sc/Mult.pl Unicode character database
-lib/unicore/lib/Sc/Orya.pl Unicode character database
-lib/unicore/lib/Sc/Sinh.pl Unicode character database
-lib/unicore/lib/Sc/Talu.pl Unicode character database
-lib/unicore/lib/Sc/Taml.pl Unicode character database
-lib/unicore/lib/Sc/Telu.pl Unicode character database
-lib/unicore/lib/Sc/Tibt.pl Unicode character database
-lib/unicore/lib/Scx/Arab.pl Unicode character database
-lib/unicore/lib/Scx/Armn.pl Unicode character database
-lib/unicore/lib/Scx/Beng.pl Unicode character database
-lib/unicore/lib/Scx/Bopo.pl Unicode character database
-lib/unicore/lib/Scx/Cakm.pl Unicode character database
-lib/unicore/lib/Scx/Copt.pl Unicode character database
-lib/unicore/lib/Scx/Cprt.pl Unicode character database
-lib/unicore/lib/Scx/Cyrl.pl Unicode character database
-lib/unicore/lib/Scx/Deva.pl Unicode character database
-lib/unicore/lib/Scx/Dupl.pl Unicode character database
-lib/unicore/lib/Scx/Geor.pl Unicode character database
-lib/unicore/lib/Scx/Glag.pl Unicode character database
-lib/unicore/lib/Scx/Gran.pl Unicode character database
-lib/unicore/lib/Scx/Grek.pl Unicode character database
-lib/unicore/lib/Scx/Gujr.pl Unicode character database
-lib/unicore/lib/Scx/Guru.pl Unicode character database
-lib/unicore/lib/Scx/Hang.pl Unicode character database
-lib/unicore/lib/Scx/Han.pl Unicode character database
-lib/unicore/lib/Scx/Hira.pl Unicode character database
-lib/unicore/lib/Scx/Kana.pl Unicode character database
-lib/unicore/lib/Scx/Knda.pl Unicode character database
-lib/unicore/lib/Scx/Latn.pl Unicode character database
-lib/unicore/lib/Scx/Limb.pl Unicode character database
-lib/unicore/lib/Scx/Linb.pl Unicode character database
-lib/unicore/lib/Scx/Mlym.pl Unicode character database
-lib/unicore/lib/Scx/Mong.pl Unicode character database
-lib/unicore/lib/Scx/Mult.pl Unicode character database
-lib/unicore/lib/Scx/Mymr.pl Unicode character database
-lib/unicore/lib/Scx/Orya.pl Unicode character database
-lib/unicore/lib/Scx/Phlp.pl Unicode character database
-lib/unicore/lib/Scx/Shrd.pl Unicode character database
-lib/unicore/lib/Scx/Sind.pl Unicode character database
-lib/unicore/lib/Scx/Sinh.pl Unicode character database
-lib/unicore/lib/Sc/Xsux.pl Unicode character database
-lib/unicore/lib/Scx/Syrc.pl Unicode character database
-lib/unicore/lib/Scx/Tagb.pl Unicode character database
-lib/unicore/lib/Scx/Takr.pl Unicode character database
-lib/unicore/lib/Scx/Taml.pl Unicode character database
-lib/unicore/lib/Scx/Telu.pl Unicode character database
-lib/unicore/lib/Scx/Thaa.pl Unicode character database
-lib/unicore/lib/Scx/Tirh.pl Unicode character database
-lib/unicore/lib/Scx/Yi.pl Unicode character database
-lib/unicore/lib/Scx/Zinh.pl Unicode character database
-lib/unicore/lib/Scx/Zyyy.pl Unicode character database
-lib/unicore/lib/Sc/Zinh.pl Unicode character database
-lib/unicore/lib/Sc/Zyyy.pl Unicode character database
-lib/unicore/lib/Sc/Zzzz.pl Unicode character database
-lib/unicore/lib/SD/Y.pl Unicode character database
-lib/unicore/lib/STerm/Y.pl Unicode character database
-lib/unicore/lib/Term/Y.pl Unicode character database
-lib/unicore/lib/UIdeo/Y.pl Unicode character database
-lib/unicore/lib/Upper/Y.pl Unicode character database
-lib/unicore/lib/WB/EX.pl Unicode character database
-lib/unicore/lib/WB/FO.pl Unicode character database
-lib/unicore/lib/WB/HL.pl Unicode character database
-lib/unicore/lib/WB/KA.pl Unicode character database
-lib/unicore/lib/WB/LE.pl Unicode character database
-lib/unicore/lib/WB/MB.pl Unicode character database
-lib/unicore/lib/WB/ML.pl Unicode character database
-lib/unicore/lib/WB/MN.pl Unicode character database
-lib/unicore/lib/WB/NU.pl Unicode character database
-lib/unicore/lib/WB/XX.pl Unicode character database
-lib/unicore/lib/XIDC/Y.pl Unicode character database
-lib/unicore/lib/XIDS/Y.pl Unicode character database
lib/unicore/LineBreak.txt Unicode character database
lib/unicore/Makefile Unicode character database
lib/unicore/mktables Unicode character database generator
-lib/unicore/mktables.lst Unicode character database
lib/unicore/NameAliases.txt Unicode character database
lib/unicore/NamedSequences.txt Unicode character database
lib/unicore/NamedSqProv.txt Unicode character database
-lib/unicore/Name.pl Unicode character database
-lib/unicore/Name.pm Unicode character database
lib/unicore/NamesList.txt Unicode character database
-lib/unicore/NormalizationCorrections.txt Unicode character database
+lib/unicore/NormalizationCorrections.txt Unicode character database
lib/unicore/PropertyAliases.txt Unicode character database
lib/unicore/PropList.txt Unicode character database
-lib/unicore/PropValueAliases.txt Unicode character database
+lib/unicore/PropValueAliases.txt Unicode character database
lib/unicore/README.perl Unicode character database
lib/unicore/ReadMe.txt Unicode character database info
-lib/unicore/ScriptExtensions.txt Unicode character database
+lib/unicore/ScriptExtensions.txt Unicode character database
lib/unicore/Scripts.txt Unicode character database
lib/unicore/SpecialCasing.txt Unicode character database
-lib/unicore/StandardizedVariants.txt Unicode character database
-lib/unicore/TestProp.pl Unicode character database
-lib/unicore/To/Age.pl Unicode character database
-lib/unicore/To/Bc.pl Unicode character database
-lib/unicore/To/Bmg.pl Unicode character database
-lib/unicore/To/Bpb.pl Unicode character database
-lib/unicore/To/Bpt.pl Unicode character database
-lib/unicore/To/Cf.pl Unicode character database
-lib/unicore/To/Digit.pl Unicode character database
-lib/unicore/To/Ea.pl Unicode character database
-lib/unicore/To/Fold.pl Unicode character database
-lib/unicore/To/GCB.pl Unicode character database
-lib/unicore/To/Gc.pl Unicode character database
-lib/unicore/To/Hst.pl Unicode character database
-lib/unicore/To/InPC.pl Unicode character database
-lib/unicore/To/InSC.pl Unicode character database
-lib/unicore/To/Isc.pl Unicode character database
-lib/unicore/To/Jg.pl Unicode character database
-lib/unicore/To/Jt.pl Unicode character database
-lib/unicore/To/Lb.pl Unicode character database
-lib/unicore/To/Lc.pl Unicode character database
-lib/unicore/To/Lower.pl Unicode character database
-lib/unicore/To/Na1.pl Unicode character database
-lib/unicore/To/NameAlia.pl Unicode character database
-lib/unicore/To/NFCQC.pl Unicode character database
-lib/unicore/To/NFDQC.pl Unicode character database
-lib/unicore/To/NFKCCF.pl Unicode character database
-lib/unicore/To/NFKCQC.pl Unicode character database
-lib/unicore/To/NFKDQC.pl Unicode character database
-lib/unicore/To/Nt.pl Unicode character database
-lib/unicore/To/Nv.pl Unicode character database
-lib/unicore/To/PerlDeci.pl Unicode character database
-lib/unicore/To/_PerlLB.pl Unicode character database
-lib/unicore/To/_PerlWB.pl Unicode character database
-lib/unicore/To/SB.pl Unicode character database
-lib/unicore/To/Sc.pl Unicode character database
-lib/unicore/To/Scx.pl Unicode character database
-lib/unicore/To/Tc.pl Unicode character database
-lib/unicore/To/Title.pl Unicode character database
-lib/unicore/To/Uc.pl Unicode character database
-lib/unicore/To/Upper.pl Unicode character database
-lib/unicore/To/WB.pl Unicode character database
-lib/unicore/UCD.pl Unicode character database
+lib/unicore/StandardizedVariants.txt Unicode character database
lib/unicore/UnicodeData.txt Unicode character database
lib/unicore/version The version of the Unicode
lib/UNIVERSAL.pm Base class for ALL classes
@@ -5127,8 +4650,10 @@ pod/perl5220delta.pod Perl changes in version 5.22.0
pod/perl5221delta.pod Perl changes in version 5.22.1
pod/perl5222delta.pod Perl changes in version 5.22.2
pod/perl5223delta.pod Perl changes in version 5.22.3
+pod/perl5224delta.pod Perl changes in version 5.22.4
pod/perl5240delta.pod Perl changes in version 5.24.0
pod/perl5241delta.pod Perl changes in version 5.24.1
+pod/perl5242delta.pod Perl changes in version 5.24.2
pod/perl561delta.pod Perl changes in version 5.6.1
pod/perl56delta.pod Perl changes in version 5.6
pod/perl581delta.pod Perl changes in version 5.8.1
@@ -5227,7 +4752,6 @@ pod/perlunicode.pod Perl Unicode support
pod/perlunicook.pod Perl Unicode cookbook
pod/perlunifaq.pod Perl Unicode FAQ
pod/perluniintro.pod Perl Unicode introduction
-pod/perluniprops.pod Index of Unicode properties in Perl
pod/perlunitut.pod Perl Unicode tutorial
pod/perlutil.pod utilities packaged with the Perl distribution
pod/perlvar.pod Perl predefined variables
diff --git a/gnu/usr.bin/perl/META.json b/gnu/usr.bin/perl/META.json
index 97ef248ca26..f7fc7b48647 100644
--- a/gnu/usr.bin/perl/META.json
+++ b/gnu/usr.bin/perl/META.json
@@ -124,6 +124,6 @@
"url" : "http://perl5.git.perl.org/"
}
},
- "version" : "5.024002",
+ "version" : "5.024003",
"x_serialization_backend" : "JSON::PP version 2.27300_01"
}
diff --git a/gnu/usr.bin/perl/META.yml b/gnu/usr.bin/perl/META.yml
index 797c6d0b04a..b78384456bc 100644
--- a/gnu/usr.bin/perl/META.yml
+++ b/gnu/usr.bin/perl/META.yml
@@ -111,5 +111,5 @@ resources:
homepage: http://www.perl.org/
license: http://dev.perl.org/licenses/
repository: http://perl5.git.perl.org/
-version: '5.024002'
+version: '5.024003'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff --git a/gnu/usr.bin/perl/Makefile.SH b/gnu/usr.bin/perl/Makefile.SH
index e1ab2a44187..0b9cfab2800 100644
--- a/gnu/usr.bin/perl/Makefile.SH
+++ b/gnu/usr.bin/perl/Makefile.SH
@@ -464,7 +464,7 @@ shextract=`SH_to_target $SH`
## In the following dollars and backticks do not need the extra backslash.
$spitshell >>$Makefile <<!GROK!THIS!
-private = preplibrary \$(CONFIGPM) \$(CONFIGPOD) lib/buildcustomize.pl
+private = preplibrary \$(CONFIGPM) \$(CONFIGPOD) git_version.h lib/buildcustomize.pl
# Files to be built with variable substitution before miniperl
# is available.
@@ -522,7 +522,7 @@ miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O)
perllib_objs = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)
perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)
-perltoc_pod_prereqs = extra.pods pod/perl5242delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod
+perltoc_pod_prereqs = extra.pods pod/perl5243delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
generated_headers = uudmap.h bitcount.h mg_data.h
@@ -607,16 +607,15 @@ $(MANIFEST_SRT): MANIFEST $(PERL_EXE)
.PHONY: all utilities
-# OpenBSD uses pre-generated lib/Config_git.pl and git_version.h files
# Both git_version.h and lib/Config_git.pl are built
# by make_patchnum.pl.
-#git_version.h: lib/Config_git.pl
-#
-#lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl
-# $(MINIPERL) make_patchnum.pl
-#
-## make sure that we recompile perl.c if the git version changes
-#perl$(OBJ_EXT): git_version.h
+git_version.h: lib/Config_git.pl
+
+lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl
+ $(MINIPERL) make_patchnum.pl
+
+# make sure that we recompile perl.c if the git version changes
+perl$(OBJ_EXT): git_version.h
!NO!SUBS!
@@ -782,11 +781,11 @@ CCDLFLAGS = `echo $ccdlflags|sed -e 's@-bE:.*/perl\.exp@-bE:perl.exp@'`
LIBPERL_NONSHR = libperl_nonshr$(LIB_EXT)
MINIPERL_NONSHR = miniperl_nonshr$(EXE_EXT)
-#$(LIBPERL_NONSHR): $(perllib_objs)
-# $(RMS) $(LIBPERL_NONSHR)
-# $(AR) rc $(LIBPERL_NONSHR) $(perllib_objs)
+$(LIBPERL_NONSHR): $(perllib_objs)
+ $(RMS) $(LIBPERL_NONSHR)
+ $(AR) rc $(LIBPERL_NONSHR) $(perllib_objs)
-$(MINIPERL_NONSHR): miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT)
+$(MINIPERL_NONSHR): $(LIBPERL_NONSHR) miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perlmini$(OBJ_EXT)
$(CC) $(LDFLAGS) -o $(MINIPERL_NONSHR) miniperlmain$(OBJ_EXT) \
opmini$(OBJ_EXT) perlmini$(OBJ_EXT) $(LIBPERL_NONSHR) $(LIBS)
@@ -873,33 +872,33 @@ $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT)
;;
esac
$spitshell >>$Makefile <<'!NO!SUBS!'
-#$(LIBPERL): $& $(perllib_objs) $(DYNALOADER) $(LIBPERLEXPORT)
-#!NO!SUBS!
-# case "$useshrplib" in
-# true)
-# $spitshell >>$Makefile <<'!NO!SUBS!'
-# rm -f $@
-# $(LD) -o $@ $(SHRPLDFLAGS) $(perllib_objs) $(DYNALOADER) $(libs)
-#!NO!SUBS!
-# case "$osname" in
-# aix)
-# $spitshell >>$Makefile <<'!NO!SUBS!'
-# rm -f libperl$(OBJ_EXT)
-# mv $@ libperl$(OBJ_EXT)
-# $(AR) qv $(LIBPERL) libperl$(OBJ_EXT)
-#!NO!SUBS!
-# ;;
-# esac
-# ;;
-# *)
-# $spitshell >>$Makefile <<'!NO!SUBS!'
-# rm -f $(LIBPERL)
-# $(AR) rc $(LIBPERL) $(perllib_objs) $(DYNALOADER)
-# @$(ranlib) $(LIBPERL)
-#!NO!SUBS!
-# ;;
-# esac
-# $spitshell >>$Makefile <<'!NO!SUBS!'
+$(LIBPERL): $& $(perllib_objs) $(DYNALOADER) $(LIBPERLEXPORT)
+!NO!SUBS!
+ case "$useshrplib" in
+ true)
+ $spitshell >>$Makefile <<'!NO!SUBS!'
+ rm -f $@
+ $(LD) -o $@ $(SHRPLDFLAGS) $(perllib_objs) $(DYNALOADER) $(libs)
+!NO!SUBS!
+ case "$osname" in
+ aix)
+ $spitshell >>$Makefile <<'!NO!SUBS!'
+ rm -f libperl$(OBJ_EXT)
+ mv $@ libperl$(OBJ_EXT)
+ $(AR) qv $(LIBPERL) libperl$(OBJ_EXT)
+!NO!SUBS!
+ ;;
+ esac
+ ;;
+ *)
+ $spitshell >>$Makefile <<'!NO!SUBS!'
+ rm -f $(LIBPERL)
+ $(AR) rc $(LIBPERL) $(perllib_objs) $(DYNALOADER)
+ @$(ranlib) $(LIBPERL)
+!NO!SUBS!
+ ;;
+ esac
+ $spitshell >>$Makefile <<'!NO!SUBS!'
# How to build executables.
@@ -964,6 +963,10 @@ NAMESPACEFLAGS = -force_flat_namespace
esac
$spitshell >>$Makefile <<'!NO!SUBS!'
lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
+ -@rm -f miniperl.xok
+ $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
+ $(miniperl_objs) $(libs)
+ $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl. Please run make minitest; exit 1'
$(MINIPERL) -f write_buildcustomize.pl
!NO!SUBS!
;;
@@ -1063,7 +1066,10 @@ $(CONFIGPOD): config.sh $(MINIPERL_EXE) configpm Porting/Glossary lib/Config_git
unidatafiles $(unidatafiles) pod/perluniprops.pod: uni.data
uni.data: $(MINIPERL_EXE) $(CONFIGPM) lib/unicore/mktables $(nonxs_ext)
- touch uni.data
+ $(MINIPERL) lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p
+# Commented out so always runs, mktables looks at far more files than we
+# can in this makefile to decide if needs to run or not
+# touch uni.data
# $(PERL_EXE) and ext because pod_lib.pl needs Digest::MD5
# But also this ensures that all extensions are built before we try to scan
@@ -1079,9 +1085,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
$(MINIPERL) pod/perlmodlib.PL -q
-pod/perl5242delta.pod: pod/perldelta.pod
- $(RMS) pod/perl5242delta.pod
- $(LNS) perldelta.pod pod/perl5242delta.pod
+pod/perl5243delta.pod: pod/perldelta.pod
+ $(RMS) pod/perl5243delta.pod
+ $(LNS) perldelta.pod pod/perl5243delta.pod
extra.pods: $(MINIPERL_EXE)
-@test ! -f extra.pods || rm -f `cat extra.pods`
@@ -1327,7 +1333,7 @@ _mopup:
-rm -f *perl.xok
-rm -f cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
-rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl
- -rm -f $(DTRACE_H)
+ -rm -f config.arch config.over $(DTRACE_H)
_cleaner1:
-cd os2; rm -f Makefile
@@ -1379,18 +1385,18 @@ _cleaner2:
-rmdir lib/Sys/Syslog lib/Sys lib/Sub lib/Search lib/Scalar
-rmdir lib/Pod/Text lib/Pod/Simple lib/Pod/Perldoc lib/PerlIO/via
-rmdir lib/PerlIO lib/Perl lib/Parse/CPAN lib/Parse lib/Params
- -rmdir lib/OpenBSD lib/Net/FTP lib/Module/Load lib/Module/CoreList
- -rmdir lib/Module lib/Memoize lib/Math/BigInt lib/Math/BigFloat
- -rmdir lib/Math lib/MIME lib/Locale/Maketext lib/Locale/Codes
- -rmdir lib/Locale lib/List/Util lib/List lib/JSON/PP lib/JSON lib/IPC
- -rmdir lib/IO/Uncompress/Adapter lib/IO/Uncompress lib/IO/Socket
- -rmdir lib/IO/Compress/Zlib lib/IO/Compress/Zip lib/IO/Compress/Gzip
- -rmdir lib/IO/Compress/Base lib/IO/Compress/Adapter lib/IO/Compress
- -rmdir lib/IO lib/I18N/LangTags lib/I18N lib/Hash/Util lib/Hash
- -rmdir lib/HTTP lib/Filter/Util lib/Filter lib/File/Spec
- -rmdir lib/ExtUtils/Typemaps lib/ExtUtils/ParseXS
- -rmdir lib/ExtUtils/MakeMaker/version lib/ExtUtils/MakeMaker
- -rmdir lib/ExtUtils/Liblist lib/ExtUtils/Constant lib/ExtUtils/Command
+ -rmdir lib/Net/FTP lib/Module/Load lib/Module/CoreList lib/Module
+ -rmdir lib/Memoize lib/Math/BigInt lib/Math/BigFloat lib/Math lib/MIME
+ -rmdir lib/Locale/Maketext lib/Locale/Codes lib/Locale lib/List/Util
+ -rmdir lib/List lib/JSON/PP lib/JSON lib/IPC lib/IO/Uncompress/Adapter
+ -rmdir lib/IO/Uncompress lib/IO/Socket lib/IO/Compress/Zlib
+ -rmdir lib/IO/Compress/Zip lib/IO/Compress/Gzip lib/IO/Compress/Base
+ -rmdir lib/IO/Compress/Adapter lib/IO/Compress lib/IO
+ -rmdir lib/I18N/LangTags lib/I18N lib/Hash/Util lib/Hash lib/HTTP
+ -rmdir lib/Filter/Util lib/Filter lib/File/Spec lib/ExtUtils/Typemaps
+ -rmdir lib/ExtUtils/ParseXS lib/ExtUtils/MakeMaker/version
+ -rmdir lib/ExtUtils/MakeMaker lib/ExtUtils/Liblist
+ -rmdir lib/ExtUtils/Constant lib/ExtUtils/Command
-rmdir lib/ExtUtils/CBuilder/Platform/Windows
-rmdir lib/ExtUtils/CBuilder/Platform lib/ExtUtils/CBuilder
-rmdir lib/Exporter lib/Encode/Unicode lib/Encode/MIME/Header
diff --git a/gnu/usr.bin/perl/NetWare/Makefile b/gnu/usr.bin/perl/NetWare/Makefile
index 488b58cfa20..cdc013423d4 100644
--- a/gnu/usr.bin/perl/NetWare/Makefile
+++ b/gnu/usr.bin/perl/NetWare/Makefile
@@ -86,7 +86,7 @@ NLM_VERSION = 3,20,0
# Here comes the CW tools - TO BE FILLED TO BUILD WITH CW -
-MODULE_DESC = "Perl 5.24.2 for NetWare"
+MODULE_DESC = "Perl 5.24.3 for NetWare"
CCTYPE = CodeWarrior
C_COMPILER = mwccnlm -c
CPP_COMPILER = mwccnlm
@@ -462,7 +462,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.24.2
+INST_VER = \5.24.3
#
# Comment this out if you DON'T want your perl installation to have
diff --git a/gnu/usr.bin/perl/NetWare/config_H.wc b/gnu/usr.bin/perl/NetWare/config_H.wc
index 686cd48a333..b44b7f98bb4 100644
--- a/gnu/usr.bin/perl/NetWare/config_H.wc
+++ b/gnu/usr.bin/perl/NetWare/config_H.wc
@@ -1042,7 +1042,7 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "c:\\perl\\5.24.2\\lib\\NetWare-x86-multi-thread" /**/
+#define ARCHLIB "c:\\perl\\5.24.3\\lib\\NetWare-x86-multi-thread" /**/
/*#define ARCHLIB_EXP "" /**/
/* ARCHNAME:
@@ -1073,8 +1073,8 @@
* This symbol is the filename expanded version of the BIN symbol, for
* programs that do not want to deal with that at run-time.
*/
-#define BIN "c:\\perl\\5.24.2\\bin\\NetWare-x86-multi-thread" /**/
-#define BIN_EXP "c:\\perl\\5.24.2\\bin\\NetWare-x86-multi-thread" /**/
+#define BIN "c:\\perl\\5.24.3\\bin\\NetWare-x86-multi-thread" /**/
+#define BIN_EXP "c:\\perl\\5.24.3\\bin\\NetWare-x86-multi-thread" /**/
/* BYTEORDER:
* This symbol holds the hexadecimal constant defined in byteorder,
@@ -3047,7 +3047,7 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "c:\\perl\\site\\5.24.2\\lib\\NetWare-x86-multi-thread" /**/
+#define SITEARCH "c:\\perl\\site\\5.24.3\\lib\\NetWare-x86-multi-thread" /**/
/*#define SITEARCH_EXP "" /**/
/* SITELIB:
@@ -3070,7 +3070,7 @@
* 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.24.2\\lib" /**/
+#define SITELIB "c:\\perl\\site\\5.24.3\\lib" /**/
/*#define SITELIB_EXP "" /**/
#define SITELIB_STEM "" /**/
diff --git a/gnu/usr.bin/perl/Porting/Maintainers.pl b/gnu/usr.bin/perl/Porting/Maintainers.pl
index 7544867c6cf..705f6cb5381 100644
--- a/gnu/usr.bin/perl/Porting/Maintainers.pl
+++ b/gnu/usr.bin/perl/Porting/Maintainers.pl
@@ -1374,7 +1374,7 @@ use File::Glob qw(:case);
},
'Time::HiRes' => {
- 'DISTRIBUTION' => 'RJBS/Time-HiRes-1.9728.tar.gz',
+ 'DISTRIBUTION' => 'JHI/Time-HiRes-1.9741.tar.gz',
'FILES' => q[dist/Time-HiRes],
},
@@ -1623,9 +1623,6 @@ use File::Glob qw(:case);
lib/vmsish.{pm,t}
],
},
- 'openbsd' => {
- 'FILES' => q[lib/Config_git.pl],
- },
);
# legacy CPAN flag
diff --git a/gnu/usr.bin/perl/Porting/cmpVERSION.pl b/gnu/usr.bin/perl/Porting/cmpVERSION.pl
index 38dcb123f8d..1be598ed5f6 100644
--- a/gnu/usr.bin/perl/Porting/cmpVERSION.pl
+++ b/gnu/usr.bin/perl/Porting/cmpVERSION.pl
@@ -81,6 +81,7 @@ if ($exclude_upstream) {
# usually because they pull in their version from some other file.
my %skip;
@skip{
+ 'cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm', # just a test module
'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm', # just a test module
'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm', # just a test module
'cpan/Math-BigInt/t/Math/BigFloat/Subclass.pm', # just a test module
diff --git a/gnu/usr.bin/perl/Porting/config.sh b/gnu/usr.bin/perl/Porting/config.sh
index d2994535b0f..38c2ecb0364 100644
--- a/gnu/usr.bin/perl/Porting/config.sh
+++ b/gnu/usr.bin/perl/Porting/config.sh
@@ -43,8 +43,8 @@ api_subversion='0'
api_version='24'
api_versionstring='5.24.0'
ar='ar'
-archlib='/tmp/mblead/lib/perl5/5.24.2/darwin-2level'
-archlibexp='/tmp/mblead/lib/perl5/5.24.2/darwin-2level'
+archlib='/tmp/mblead/lib/perl5/5.24.3/darwin-2level'
+archlibexp='/tmp/mblead/lib/perl5/5.24.3/darwin-2level'
archname64=''
archname='darwin-2level'
archobjs=''
@@ -829,7 +829,7 @@ incpath=''
incpth='/usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include'
inews=''
initialinstalllocation='/tmp/mblead/bin'
-installarchlib='/tmp/mblead/lib/perl5/5.24.2/darwin-2level'
+installarchlib='/tmp/mblead/lib/perl5/5.24.3/darwin-2level'
installbin='/tmp/mblead/bin'
installhtml1dir=''
installhtml3dir=''
@@ -837,13 +837,13 @@ installman1dir='/tmp/mblead/man/man1'
installman3dir='/tmp/mblead/man/man3'
installprefix='/tmp/mblead'
installprefixexp='/tmp/mblead'
-installprivlib='/tmp/mblead/lib/perl5/5.24.2'
+installprivlib='/tmp/mblead/lib/perl5/5.24.3'
installscript='/tmp/mblead/bin'
-installsitearch='/tmp/mblead/lib/perl5/site_perl/5.24.2/darwin-2level'
+installsitearch='/tmp/mblead/lib/perl5/site_perl/5.24.3/darwin-2level'
installsitebin='/tmp/mblead/bin'
installsitehtml1dir=''
installsitehtml3dir=''
-installsitelib='/tmp/mblead/lib/perl5/site_perl/5.24.2'
+installsitelib='/tmp/mblead/lib/perl5/site_perl/5.24.3'
installsiteman1dir='/tmp/mblead/man/man1'
installsiteman3dir='/tmp/mblead/man/man3'
installsitescript='/tmp/mblead/bin'
@@ -968,7 +968,7 @@ perl_patchlevel=''
perl_static_inline='static __inline__'
perladmin='aaron@daybreak.nonet'
perllibs='-lpthread -ldl -lm -lutil -lc'
-perlpath='/tmp/mblead/bin/perl5.24.2'
+perlpath='/tmp/mblead/bin/perl5.24.3'
pg='pg'
phostname='hostname'
pidtype='pid_t'
@@ -977,8 +977,8 @@ pmake=''
pr=''
prefix='/tmp/mblead'
prefixexp='/tmp/mblead'
-privlib='/tmp/mblead/lib/perl5/5.24.2'
-privlibexp='/tmp/mblead/lib/perl5/5.24.2'
+privlib='/tmp/mblead/lib/perl5/5.24.3'
+privlibexp='/tmp/mblead/lib/perl5/5.24.3'
procselfexe=''
prototype='define'
ptrsize='8'
@@ -1044,17 +1044,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, 6, 0'
sig_size='33'
signal_t='void'
-sitearch='/tmp/mblead/lib/perl5/site_perl/5.24.2/darwin-2level'
-sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.24.2/darwin-2level'
+sitearch='/tmp/mblead/lib/perl5/site_perl/5.24.3/darwin-2level'
+sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.24.3/darwin-2level'
sitebin='/tmp/mblead/bin'
sitebinexp='/tmp/mblead/bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
-sitelib='/tmp/mblead/lib/perl5/site_perl/5.24.2'
+sitelib='/tmp/mblead/lib/perl5/site_perl/5.24.3'
sitelib_stem='/tmp/mblead/lib/perl5/site_perl'
-sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.24.2'
+sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.24.3'
siteman1dir='/tmp/mblead/man/man1'
siteman1direxp='/tmp/mblead/man/man1'
siteman3dir='/tmp/mblead/man/man3'
@@ -1080,7 +1080,7 @@ src='.'
ssizetype='ssize_t'
st_ino_sign='1'
st_ino_size='8'
-startperl='#!/tmp/mblead/bin/perl5.24.2'
+startperl='#!/tmp/mblead/bin/perl5.24.3'
startsh='#!/bin/sh'
static_ext=' '
stdchar='char'
@@ -1093,7 +1093,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='2'
+subversion='3'
sysman='/usr/share/man/man1'
sysroot=''
tail=''
@@ -1192,8 +1192,8 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
versiononly='define'
vi=''
xlibpth='/usr/lib/386 /lib/386'
@@ -1203,7 +1203,7 @@ zcat=''
zip='zip'
PERL_REVISION=5
PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
PERL_API_REVISION=5
PERL_API_VERSION=24
PERL_API_SUBVERSION=0
diff --git a/gnu/usr.bin/perl/Porting/config_H b/gnu/usr.bin/perl/Porting/config_H
index 33f611cc35a..b8c3037ea44 100644
--- a/gnu/usr.bin/perl/Porting/config_H
+++ b/gnu/usr.bin/perl/Porting/config_H
@@ -960,8 +960,8 @@
* 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.24.2/i686-linux-64int-ld" /**/
-#define ARCHLIB_EXP "/pro/lib/perl5/5.24.2/i686-linux-64int-ld" /**/
+#define ARCHLIB "/pro/lib/perl5/5.24.3/i686-linux-64int-ld" /**/
+#define ARCHLIB_EXP "/pro/lib/perl5/5.24.3/i686-linux-64int-ld" /**/
/* ARCHNAME:
* This symbol holds a string representing the architecture name.
@@ -2068,8 +2068,8 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "/pro/lib/perl5/5.24.2" /**/
-#define PRIVLIB_EXP "/pro/lib/perl5/5.24.2" /**/
+#define PRIVLIB "/pro/lib/perl5/5.24.3" /**/
+#define PRIVLIB_EXP "/pro/lib/perl5/5.24.3" /**/
/* PTRSIZE:
* This symbol contains the size of a pointer, so that the C preprocessor
@@ -2119,8 +2119,8 @@
* 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.24.2/i686-linux-64int-ld" /**/
-#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.24.2/i686-linux-64int-ld" /**/
+#define SITEARCH "/pro/lib/perl5/site_perl/5.24.3/i686-linux-64int-ld" /**/
+#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.24.3/i686-linux-64int-ld" /**/
/* SITELIB:
* This symbol contains the name of the private library for this package.
@@ -2142,8 +2142,8 @@
* removed. The elements in inc_version_list (inc_version_list.U) can
* be tacked onto this variable to generate a list of directories to search.
*/
-#define SITELIB "/pro/lib/perl5/site_perl/5.24.2" /**/
-#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.24.2" /**/
+#define SITELIB "/pro/lib/perl5/site_perl/5.24.3" /**/
+#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.24.3" /**/
#define SITELIB_STEM "/pro/lib/perl5/site_perl" /**/
/* SSize_t:
@@ -4282,7 +4282,7 @@
* script to make sure (one hopes) that it runs with perl and not
* some shell.
*/
-#define STARTPERL "#!/pro/bin/perl5.24.2" /**/
+#define STARTPERL "#!/pro/bin/perl5.24.3" /**/
/* HAS_STDIO_STREAM_ARRAY:
* This symbol, if defined, tells that there is an array
diff --git a/gnu/usr.bin/perl/Porting/epigraphs.pod b/gnu/usr.bin/perl/Porting/epigraphs.pod
index 10753bf47b5..633aafdd293 100644
--- a/gnu/usr.bin/perl/Porting/epigraphs.pod
+++ b/gnu/usr.bin/perl/Porting/epigraphs.pod
@@ -17,6 +17,92 @@ Consult your favorite dictionary for details.
=head1 EPIGRAPHS
+=head2 v5.27.4 - Richard Brautigan, "All Watched Over By Machines Of Loving Grace"
+
+L<Announced on 2017-09-20 by John SJ Anderson|https://www.nntp.perl.org/group/perl.perl5.porters/2017/09/msg246371.html>
+
+ I like to think (and
+ the sooner the better!)
+ of a cybernetic meadow
+ where mammals and computers
+ live together in mutually
+ programming harmony
+ like pure water
+ touching clear sky.
+
+ I like to think
+ (right now, please!)
+ of a cybernetic forest
+ filled with pines and electronics
+ where deer stroll peacefully
+ past computers
+ as if they were flowers
+ with spinning blossoms.
+
+ I like to think
+ (it has to be!)
+ of a cybernetic ecology
+ where we are free of our labors
+ and joined back to nature,
+ returned to our mammal
+ brothers and sisters,
+ and all watched over
+ by machines of loving grace.
+
+=head2 v5.27.3 - Rodgers and Hammerstein, "You'll Never Walk Alone"
+
+L<Announced on 2017-08-21 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2017/08/msg245988.html>
+
+ When you walk through a storm
+ Hold your head up high
+ And don't be afraid of the dark
+
+ At the end of a storm
+ There's a golden sky
+ And the sweet silver song of a lark
+
+ Walk on through the wind
+ Walk on through the rain
+ Though your dreams be tossed and blown
+
+ Walk on, walk on
+ With hope in your heart
+ And you'll never walk alone
+
+ You'll never walk alone
+
+ Walk on, walk on
+ With hope in your heart
+ And you'll never walk alone
+
+ You'll never walk alone
+
+=head2 v5.27.2 - Lev Grossman, Codex
+
+L<Announced on 2017-07-20 by Aaron Crane|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245585.html>
+
+ He went back for another stack of books: a three-volume English legal
+ treatise; a travel guide to Tuscany from the '20s crammed with faded
+ Italian wildflowers that fluttered out from between the pages like
+ moths; a French edition of Turgeniev so decayed that it came apart in
+ his hands; a register of London society from 1863. In a way it was
+ idiotic. He was treating these books like they were holy relics. It
+ wasn't like he would ever actually read them. But there was something
+ magnetic about them, something that compelled respect, even the silly
+ ones, like the Enlightenment treatise about how lightning was caused
+ by bees. They were information, data, but not in the form he was used
+ to dealing with it. They were non-digital, nonelectrical chunks of
+ memory, not stamped out of silicon but laboriously crafted out of wood
+ pulp and ink, leather and glue. Somebody had cared enough to write
+ these things; somebody else had cared enough to buy them, possibly
+ even read them, at the very least keep them safe for 150 years,
+ sometimes longer, when they could have vanished at the touch of a
+ spark. That made them worth something, didn't it, just by itself?
+ Though most of them would have bored him rigid the second he cracked
+ them open, which there wasn't much chance of. Maybe that was what he
+ found so appealing: the sight of so many books that he'd never have to
+ read, so much work he'd never have to do.
+
=head2 v5.27.1 - Rona Munro, Doctor Who: Survival
L<Announced on 2017-06-20 by Eric Herman|http://www.nntp.perl.org/group/perl.perl5.porters/2017/06/msg245055.html>
@@ -45,6 +131,35 @@ L<Announced on 2017-05-31 by Sawyer X|http://www.nntp.perl.org/group/perl.perl5.
-- Bertrand Russell, The Road to Happiness
+=head2 v5.26.1-RC1 - Samuel Taylor Coleridge, "The Rime of the Ancient Mariner"
+
+L<Announced on 2017-09-10 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/09/msg246202.html>
+
+ At length did cross an Albatross,
+ Thorough the fog it came;
+ As if it had been a Christian soul,
+ We hailed it in God's name.
+
+ It ate the food it ne'er had eat,
+ And round and round it flew.
+ The ice did split with a thunder-fit;
+ The helmsman steered us through!
+
+ And a good south wind sprung up behind;
+ The Albatross did follow,
+ And every day, for food or play,
+ Came to the mariner's hollo!
+
+ In mist or cloud, on mast or shroud,
+ It perched for vespers nine;
+ Whiles all the night, through fog-smoke white,
+ Glimmered the white Moon-shine.'
+
+ 'God save thee, ancient Mariner!
+ From the fiends, that plague thee thus!—
+ Why look'st thou so?'—With my cross-bow
+ I shot the ALBATROSS.
+
=head2 v5.26.0 - Nine Simone, Ain't Got No / I Got Life
L<Announced on 2017-05-30 by Sawyer X|http://www.nntp.perl.org/group/perl.perl5.porters/2017/05/msg244573.html>
@@ -289,6 +404,61 @@ L<Announced on 2016-05-09 by Ricardo Signes|http://www.nntp.perl.org/group/perl.
To find that the utmost reward
Of daring should be still to dare.
+=head2 v5.24.3-RC1 - Samuel Taylor Coleridge, "The Rime of the Ancient Mariner"
+
+L<Announced on 2017-09-10 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/09/msg246201.html>
+
+ 'And now the STORM-BLAST came, and he
+ Was tyrannous and strong:
+ He struck with his o'ertaking wings,
+ And chased us south along.
+
+ With sloping masts and dipping prow,
+ As who pursued with yell and blow
+ Still treads the shadow of his foe,
+ And forward bends his head,
+ The ship drove fast, loud roared the blast,
+ And southward aye we fled.
+
+ And now there came both mist and snow,
+ And it grew wondrous cold:
+ And ice, mast-high, came floating by,
+ As green as emerald.
+
+ And through the drifts the snowy clifts
+ Did send a dismal sheen:
+ Nor shapes of men nor beasts we ken—
+ The ice was all between.
+
+ The ice was here, the ice was there,
+ The ice was all around:
+ It cracked and growled, and roared and howled,
+ Like noises in a swound!
+
+=head2 v5.24.2 - Roald Dahl, "The Three Little Pigs"
+
+L<Announced on 2017-07-15 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245527.html>
+
+ A short while later, through the wood,
+ Came striding brave Miss Riding Hood.
+ The Wolf stood there, his eyes ablaze
+ And yellowish, like mayonnaise.
+ His teeth were sharp, his gums were raw,
+ And spit was dripping from his jaw.
+ Once more the maiden's eyelid flickers.
+ She draws the pistol from her knickers.
+ Once more, she hits the vital spot,
+ And kills him with a single shot.
+ Pig, peeping through the window, stood
+ And yelled, 'Well done, Miss Riding Hood!'
+
+ Ah, Piglet, you must never trust
+ Young ladies from the upper crust.
+ For now, Miss Riding Hood, one notes,
+ Not only has two wolfskin coats,
+ But when she goes from place to place,
+ She has a PIGSKIN TRAVELLING CASE.
+
=head2 v5.24.2-RC1 - Roald Dahl, "The Three Little Pigs"
L<Announced on 2017-07-01 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245292.html>
@@ -833,6 +1003,28 @@ L<Announced on 2015-06-20 by Ricardo Signes|http://www.nntp.perl.org/group/perl.
They sing while you slave and I just get bored
I ain't gonna work on Maggie's farm no more
+=head2 v5.22.4 - Roald Dahl, "Little Red Riding Hood and the Wolf"
+
+L<Announced on 2017-07-15 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245526.html>
+
+ Then Little Red Riding Hood said, 'But Grandma,
+ what a lovely great big furry coat you have on.'
+ 'That's wrong!' cried Wolf. 'Have you forgot
+ 'To tell me what BIG TEETH I've got?
+ 'Ah well, no matter what you say,
+ 'I'm going to eat you anyway.'
+ The small girl smiles. One eyelid flickers.
+ She whips a pistol from her knickers.
+ She aims it at the creature's head
+ And bang bang bang, she shoots him dead.
+
+ A few weeks later, in the wood,
+ I came across Miss Riding Hood.
+ But what a change! No cloak of red,
+ No silly hood upon her head.
+ She said, 'Hello, and do please note
+ 'My lovely furry WOLFSKIN COAT.'
+
=head2 v5.22.4-RC1 - Roald Dahl, "Little Red Riding Hood and the Wolf"
L<Announced on 2017-07-01 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2017/07/msg245293.html>
diff --git a/gnu/usr.bin/perl/Porting/perldelta_template.pod b/gnu/usr.bin/perl/Porting/perldelta_template.pod
index 07158987bd0..5f8ce7ebc4d 100644
--- a/gnu/usr.bin/perl/Porting/perldelta_template.pod
+++ b/gnu/usr.bin/perl/Porting/perldelta_template.pod
@@ -378,7 +378,7 @@ here.
XXX Generate this with:
- perl Porting/acknowledgements.pl v5.24.2..HEAD
+ perl Porting/acknowledgements.pl v5.24.3..HEAD
=head1 Reporting Bugs
diff --git a/gnu/usr.bin/perl/Porting/pumpkin.pod b/gnu/usr.bin/perl/Porting/pumpkin.pod
index 74110428f7d..3618eec7799 100644
--- a/gnu/usr.bin/perl/Porting/pumpkin.pod
+++ b/gnu/usr.bin/perl/Porting/pumpkin.pod
@@ -540,9 +540,9 @@ Here's how I generate a new patch. I'll use the hypothetical
5.004_07 to 5.004_08 patch as an example.
# unpack perl5.004_07/
- gzip -d -c perl5.004_07.tar.gz | tar -xf -
+ gzip -d -c perl5.004_07.tar.gz | tar -xof -
# unpack perl5.004_08/
- gzip -d -c perl5.004_08.tar.gz | tar -xf -
+ gzip -d -c perl5.004_08.tar.gz | tar -xof -
makepatch perl5.004_07 perl5.004_08 > perl5.004_08.pat
Makepatch will automatically generate appropriate B<rm> commands to remove
diff --git a/gnu/usr.bin/perl/Porting/todo.pod b/gnu/usr.bin/perl/Porting/todo.pod
index c32a13b4940..0869a3c486e 100644
--- a/gnu/usr.bin/perl/Porting/todo.pod
+++ b/gnu/usr.bin/perl/Porting/todo.pod
@@ -467,7 +467,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 would be nice for perl 5.24.2.
+options would be nice for perl 5.24.3.
=head2 Profile Perl - am I hot or not?
@@ -1170,7 +1170,7 @@ L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00339.html>
=head1 Big projects
Tasks that will get your name mentioned in the description of the "Highlights
-of 5.24.2"
+of 5.24.3"
=head2 make ithreads more robust
diff --git a/gnu/usr.bin/perl/README.haiku b/gnu/usr.bin/perl/README.haiku
index a2e6dc893e0..6055b2aa458 100644
--- a/gnu/usr.bin/perl/README.haiku
+++ b/gnu/usr.bin/perl/README.haiku
@@ -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.24.2/BePC-haiku/CORE/libperl.so .
+ cd /boot/common/lib; ln -s perl5/5.24.3/BePC-haiku/CORE/libperl.so .
-Replace C<5.24.2> with your respective version of Perl.
+Replace C<5.24.3> with your respective version of Perl.
=head1 KNOWN PROBLEMS
diff --git a/gnu/usr.bin/perl/README.macosx b/gnu/usr.bin/perl/README.macosx
index 347489e2a7b..8493148b1e3 100644
--- a/gnu/usr.bin/perl/README.macosx
+++ b/gnu/usr.bin/perl/README.macosx
@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X
This document briefly describes Perl under Mac OS X.
- curl -O http://www.cpan.org/src/perl-5.24.2.tar.gz
- tar -xzf perl-5.24.2.tar.gz
- cd perl-5.24.2
+ curl -O http://www.cpan.org/src/perl-5.24.3.tar.gz
+ tar -xzf perl-5.24.3.tar.gz
+ cd perl-5.24.3
./Configure -des -Dprefix=/usr/local/
make
make test
@@ -20,7 +20,7 @@ This document briefly describes Perl under Mac OS X.
=head1 DESCRIPTION
-The latest Perl release (5.24.2 as of this writing) builds without changes
+The latest Perl release (5.24.3 as of this writing) builds without changes
under all versions of Mac OS X from 10.3 "Panther" onwards.
In order to build your own version of Perl you will need 'make',
diff --git a/gnu/usr.bin/perl/README.os2 b/gnu/usr.bin/perl/README.os2
index 6b9367806b4..9d5a9801332 100644
--- a/gnu/usr.bin/perl/README.os2
+++ b/gnu/usr.bin/perl/README.os2
@@ -619,7 +619,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.24.2/
+ unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.24.3/
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
diff --git a/gnu/usr.bin/perl/README.vms b/gnu/usr.bin/perl/README.vms
index b527ecfdf8b..cb31e5bcc71 100644
--- a/gnu/usr.bin/perl/README.vms
+++ b/gnu/usr.bin/perl/README.vms
@@ -142,11 +142,11 @@ You may need to set up a foreign symbol for the unpacking utility of
choice. Once you have done so, use a command like the following to
unpack the archive:
- vmstar -xvf perl-5^.24^.2.tar
+ vmstar -xvf perl-5^.24^.3.tar
Then set default to the top-level source directory like so:
- set default [.perl-5^.24^.2]
+ set default [.perl-5^.24^.3]
and proceed with configuration as described in the next section.
diff --git a/gnu/usr.bin/perl/configpm b/gnu/usr.bin/perl/configpm
index 2e44893d45f..21bd3ef4f1b 100644
--- a/gnu/usr.bin/perl/configpm
+++ b/gnu/usr.bin/perl/configpm
@@ -1108,18 +1108,6 @@ my $orig_heavy_txt = "";
}
if ($orig_config_txt ne $config_txt or $orig_heavy_txt ne $heavy_txt) {
- # During the build don't look in /usr/local for libs or includes
- # but after, we want to let modules look there.
- my $install_heavy_txt = $heavy_txt;
- $install_heavy_txt =~ s,^(ccflags|cppflags)[^=]*='[^']+,$& -I/usr/local/include,gm;
- $install_heavy_txt =~ s,^(ldflags|lddlflags)[^=]*='[^']+,$& -L/usr/local/lib,gm;
-
- open INSTALL_CONFIG_HEAVY, ">", "$Config_heavy.install"
- or die "Can't open install $Config_heavy: $!\n";
- print INSTALL_CONFIG_HEAVY $install_heavy_txt;
- close INSTALL_CONFIG_HEAVY;
- print "updated install $Config_heavy\n";
-
open CONFIG, ">", $Config_PM or die "Can't open $Config_PM: $!\n";
open CONFIG_HEAVY, ">", $Config_heavy or die "Can't open $Config_heavy: $!\n";
print CONFIG $config_txt;
diff --git a/gnu/usr.bin/perl/configure.com b/gnu/usr.bin/perl/configure.com
index ffcbc223b94..30280f420fd 100644
--- a/gnu/usr.bin/perl/configure.com
+++ b/gnu/usr.bin/perl/configure.com
@@ -1354,7 +1354,8 @@ $ vms_cc_available = vms_cc_available + "cc/decc "
$ ENDIF
$ ELSE
$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) -
- .or.(F$LOCATE("HP",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line))
+ .or.(F$LOCATE("HP",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line)) -
+ .or.(F$LOCATE("VSI",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line))
$ THEN
$ vms_cc_dflt = "/decc"
$ vms_cc_available = vms_cc_available + "cc/decc "
@@ -1491,7 +1492,8 @@ $ THEN
$ ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE")
$ Mcc = ans
$ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans)) -
- .or.(F$LOCATE("hp",ans).NE.F$LENGTH(ans))
+ .or.(F$LOCATE("hp",ans).NE.F$LENGTH(ans)) -
+ .or.(F$LOCATE("vsi",ans).NE.F$LENGTH(ans))
$ THEN
$ Mcc = "cc/decc"
$! CPQ ?
@@ -1508,7 +1510,8 @@ $ ELSE ! Not_cxx
$ IF Mcc.NES.dflt
$ THEN
$ IF F$LOCATE("dec",dflt) .NE. F$LENGTH(dflt) .or. -
- F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt)
+ F$LOCATE("compaq",dflt) .NE. F$LENGTH(dflt) -
+ .or.(F$LOCATE("vsi",dflt).NE.F$LENGTH(dflt))
$ THEN
$ C_COMPILER_Replace = "CC=cc=''Mcc'"
$ ELSE
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
index 9d7e5ed262d..47aebd60743 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
@@ -35,8 +35,7 @@ sub MY::libscan
my $path = shift;
return undef
- if $path =~ /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/ ||
- $path =~ /(~|\.bak|_bak)$/ ||
+ if $path =~ /(~|\.bak|_bak)$/ ||
$path =~ /\..*\.sw(o|p)$/ ||
$path =~ /\B\.svn\b/;
diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm
index 9d7e5ed262d..47aebd60743 100644
--- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm
+++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm
@@ -35,8 +35,7 @@ sub MY::libscan
my $path = shift;
return undef
- if $path =~ /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/ ||
- $path =~ /(~|\.bak|_bak)$/ ||
+ if $path =~ /(~|\.bak|_bak)$/ ||
$path =~ /\..*\.sw(o|p)$/ ||
$path =~ /\B\.svn\b/;
diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs
index d8b156370f6..acefc30711e 100644
--- a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs
+++ b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs
@@ -39,8 +39,6 @@ extern "C" {
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
-#include <sys/types.h>
-#include <md5.h>
#ifdef __cplusplus
}
#endif
@@ -90,6 +88,61 @@ static MAGIC *THX_sv_magicext(pTHX_ SV *sv, SV *obj, int type,
# define SvPVbyte(sv, lp) (sv_utf8_downgrade((sv), 0), SvPV((sv), (lp)))
#endif
+/* Perl does not guarantee that U32 is exactly 32 bits. Some system
+ * has no integral type with exactly 32 bits. For instance, A Cray has
+ * short, int and long all at 64 bits so we need to apply this macro
+ * to reduce U32 values to 32 bits at appropriate places. If U32
+ * really does have 32 bits then this is a no-op.
+ */
+#if BYTEORDER > 0x4321 || defined(TRUNCATE_U32)
+ #define TO32(x) ((x) & 0xFFFFffff)
+ #define TRUNC32(x) ((x) &= 0xFFFFffff)
+#else
+ #define TO32(x) (x)
+ #define TRUNC32(x) /*nothing*/
+#endif
+
+/* The MD5 algorithm is defined in terms of little endian 32-bit
+ * values. The following macros (and functions) allow us to convert
+ * between native integers and such values.
+ */
+#undef BYTESWAP
+#ifndef U32_ALIGNMENT_REQUIRED
+ #if BYTEORDER == 0x1234 /* 32-bit little endian */
+ #define BYTESWAP(x) (x) /* no-op */
+
+ #elif BYTEORDER == 0x4321 /* 32-bit big endian */
+ #define BYTESWAP(x) ((((x)&0xFF)<<24) \
+ |(((x)>>24)&0xFF) \
+ |(((x)&0x0000FF00)<<8) \
+ |(((x)&0x00FF0000)>>8) )
+ #endif
+#endif
+
+#ifndef BYTESWAP
+static void u2s(U32 u, U8* s)
+{
+ *s++ = (U8)(u & 0xFF);
+ *s++ = (U8)((u >> 8) & 0xFF);
+ *s++ = (U8)((u >> 16) & 0xFF);
+ *s = (U8)((u >> 24) & 0xFF);
+}
+
+#define s2u(s,u) ((u) = (U32)(*s) | \
+ ((U32)(*(s+1)) << 8) | \
+ ((U32)(*(s+2)) << 16) | \
+ ((U32)(*(s+3)) << 24))
+#endif
+
+/* This structure keeps the current state of algorithm.
+ */
+typedef struct {
+ U32 A, B, C, D; /* current digest */
+ U32 bytes_low; /* counts bytes in message */
+ U32 bytes_high; /* turn it into a 64-bit counter */
+ U8 buffer[128]; /* collect complete 64 byte blocks */
+} MD5_CTX;
+
#if defined(USE_ITHREADS) && defined(MGf_DUP)
STATIC int dup_md5_ctx(pTHX_ MAGIC *mg, CLONE_PARAMS *params)
{
@@ -126,6 +179,325 @@ const STATIC struct {
};
#endif
+
+/* Padding is added at the end of the message in order to fill a
+ * complete 64 byte block (- 8 bytes for the message length). The
+ * padding is also the reason the buffer in MD5_CTX have to be
+ * 128 bytes.
+ */
+static const unsigned char PADDING[64] = {
+ 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/* Constants for MD5Transform routine.
+ */
+#define S11 7
+#define S12 12
+#define S13 17
+#define S14 22
+#define S21 5
+#define S22 9
+#define S23 14
+#define S24 20
+#define S31 4
+#define S32 11
+#define S33 16
+#define S34 23
+#define S41 6
+#define S42 10
+#define S43 15
+#define S44 21
+
+/* F, G, H and I are basic MD5 functions.
+ */
+#define F(x, y, z) ((((x) & ((y) ^ (z))) ^ (z)))
+#define G(x, y, z) F(z, x, y)
+#define H(x, y, z) ((x) ^ (y) ^ (z))
+#define I(x, y, z) ((y) ^ ((x) | (~z)))
+
+/* ROTATE_LEFT rotates x left n bits.
+ */
+#define ROTATE_LEFT(x, n) (((x) << (n) | ((x) >> (32-(n)))))
+
+/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
+ * Rotation is separate from addition to prevent recomputation.
+ */
+#define FF(a, b, c, d, s, ac) \
+ (a) += F ((b), (c), (d)) + (NEXTx) + (U32)(ac); \
+ TRUNC32((a)); \
+ (a) = ROTATE_LEFT ((a), (s)); \
+ (a) += (b); \
+ TRUNC32((a));
+
+#define GG(a, b, c, d, x, s, ac) \
+ (a) += G ((b), (c), (d)) + X[x] + (U32)(ac); \
+ TRUNC32((a)); \
+ (a) = ROTATE_LEFT ((a), (s)); \
+ (a) += (b); \
+ TRUNC32((a));
+
+#define HH(a, b, c, d, x, s, ac) \
+ (a) += H ((b), (c), (d)) + X[x] + (U32)(ac); \
+ TRUNC32((a)); \
+ (a) = ROTATE_LEFT ((a), (s)); \
+ (a) += (b); \
+ TRUNC32((a));
+
+#define II(a, b, c, d, x, s, ac) \
+ (a) += I ((b), (c), (d)) + X[x] + (U32)(ac); \
+ TRUNC32((a)); \
+ (a) = ROTATE_LEFT ((a), (s)); \
+ (a) += (b); \
+ TRUNC32((a));
+
+
+static void
+MD5Init(MD5_CTX *ctx)
+{
+ /* Start state */
+ ctx->A = 0x67452301;
+ ctx->B = 0xefcdab89;
+ ctx->C = 0x98badcfe;
+ ctx->D = 0x10325476;
+
+ /* message length */
+ ctx->bytes_low = ctx->bytes_high = 0;
+}
+
+
+static void
+MD5Transform(MD5_CTX* ctx, const U8* buf, STRLEN blocks)
+{
+#ifdef MD5_DEBUG
+ static int tcount = 0;
+#endif
+
+ U32 A = ctx->A;
+ U32 B = ctx->B;
+ U32 C = ctx->C;
+ U32 D = ctx->D;
+
+#ifndef U32_ALIGNMENT_REQUIRED
+ const U32 *x = (U32*)buf; /* really just type casting */
+#endif
+
+ do {
+ U32 a = A;
+ U32 b = B;
+ U32 c = C;
+ U32 d = D;
+
+#if BYTEORDER == 0x1234 && !defined(U32_ALIGNMENT_REQUIRED)
+ const U32 *X = x;
+ #define NEXTx (*x++)
+#else
+ U32 X[16]; /* converted values, used in round 2-4 */
+ U32 *uptr = X;
+ U32 tmp;
+ #ifdef BYTESWAP
+ #define NEXTx (tmp=*x++, *uptr++ = BYTESWAP(tmp))
+ #else
+ #define NEXTx (s2u(buf,tmp), buf += 4, *uptr++ = tmp)
+ #endif
+#endif
+
+#ifdef MD5_DEBUG
+ if (buf == ctx->buffer)
+ fprintf(stderr,"%5d: Transform ctx->buffer", ++tcount);
+ else
+ fprintf(stderr,"%5d: Transform %p (%d)", ++tcount, buf, blocks);
+
+ {
+ int i;
+ fprintf(stderr,"[");
+ for (i = 0; i < 16; i++) {
+ fprintf(stderr,"%x,", x[i]);
+ }
+ fprintf(stderr,"]\n");
+ }
+#endif
+
+ /* Round 1 */
+ FF (a, b, c, d, S11, 0xd76aa478); /* 1 */
+ FF (d, a, b, c, S12, 0xe8c7b756); /* 2 */
+ FF (c, d, a, b, S13, 0x242070db); /* 3 */
+ FF (b, c, d, a, S14, 0xc1bdceee); /* 4 */
+ FF (a, b, c, d, S11, 0xf57c0faf); /* 5 */
+ FF (d, a, b, c, S12, 0x4787c62a); /* 6 */
+ FF (c, d, a, b, S13, 0xa8304613); /* 7 */
+ FF (b, c, d, a, S14, 0xfd469501); /* 8 */
+ FF (a, b, c, d, S11, 0x698098d8); /* 9 */
+ FF (d, a, b, c, S12, 0x8b44f7af); /* 10 */
+ FF (c, d, a, b, S13, 0xffff5bb1); /* 11 */
+ FF (b, c, d, a, S14, 0x895cd7be); /* 12 */
+ FF (a, b, c, d, S11, 0x6b901122); /* 13 */
+ FF (d, a, b, c, S12, 0xfd987193); /* 14 */
+ FF (c, d, a, b, S13, 0xa679438e); /* 15 */
+ FF (b, c, d, a, S14, 0x49b40821); /* 16 */
+
+ /* Round 2 */
+ GG (a, b, c, d, 1, S21, 0xf61e2562); /* 17 */
+ GG (d, a, b, c, 6, S22, 0xc040b340); /* 18 */
+ GG (c, d, a, b, 11, S23, 0x265e5a51); /* 19 */
+ GG (b, c, d, a, 0, S24, 0xe9b6c7aa); /* 20 */
+ GG (a, b, c, d, 5, S21, 0xd62f105d); /* 21 */
+ GG (d, a, b, c, 10, S22, 0x2441453); /* 22 */
+ GG (c, d, a, b, 15, S23, 0xd8a1e681); /* 23 */
+ GG (b, c, d, a, 4, S24, 0xe7d3fbc8); /* 24 */
+ GG (a, b, c, d, 9, S21, 0x21e1cde6); /* 25 */
+ GG (d, a, b, c, 14, S22, 0xc33707d6); /* 26 */
+ GG (c, d, a, b, 3, S23, 0xf4d50d87); /* 27 */
+ GG (b, c, d, a, 8, S24, 0x455a14ed); /* 28 */
+ GG (a, b, c, d, 13, S21, 0xa9e3e905); /* 29 */
+ GG (d, a, b, c, 2, S22, 0xfcefa3f8); /* 30 */
+ GG (c, d, a, b, 7, S23, 0x676f02d9); /* 31 */
+ GG (b, c, d, a, 12, S24, 0x8d2a4c8a); /* 32 */
+
+ /* Round 3 */
+ HH (a, b, c, d, 5, S31, 0xfffa3942); /* 33 */
+ HH (d, a, b, c, 8, S32, 0x8771f681); /* 34 */
+ HH (c, d, a, b, 11, S33, 0x6d9d6122); /* 35 */
+ HH (b, c, d, a, 14, S34, 0xfde5380c); /* 36 */
+ HH (a, b, c, d, 1, S31, 0xa4beea44); /* 37 */
+ HH (d, a, b, c, 4, S32, 0x4bdecfa9); /* 38 */
+ HH (c, d, a, b, 7, S33, 0xf6bb4b60); /* 39 */
+ HH (b, c, d, a, 10, S34, 0xbebfbc70); /* 40 */
+ HH (a, b, c, d, 13, S31, 0x289b7ec6); /* 41 */
+ HH (d, a, b, c, 0, S32, 0xeaa127fa); /* 42 */
+ HH (c, d, a, b, 3, S33, 0xd4ef3085); /* 43 */
+ HH (b, c, d, a, 6, S34, 0x4881d05); /* 44 */
+ HH (a, b, c, d, 9, S31, 0xd9d4d039); /* 45 */
+ HH (d, a, b, c, 12, S32, 0xe6db99e5); /* 46 */
+ HH (c, d, a, b, 15, S33, 0x1fa27cf8); /* 47 */
+ HH (b, c, d, a, 2, S34, 0xc4ac5665); /* 48 */
+
+ /* Round 4 */
+ II (a, b, c, d, 0, S41, 0xf4292244); /* 49 */
+ II (d, a, b, c, 7, S42, 0x432aff97); /* 50 */
+ II (c, d, a, b, 14, S43, 0xab9423a7); /* 51 */
+ II (b, c, d, a, 5, S44, 0xfc93a039); /* 52 */
+ II (a, b, c, d, 12, S41, 0x655b59c3); /* 53 */
+ II (d, a, b, c, 3, S42, 0x8f0ccc92); /* 54 */
+ II (c, d, a, b, 10, S43, 0xffeff47d); /* 55 */
+ II (b, c, d, a, 1, S44, 0x85845dd1); /* 56 */
+ II (a, b, c, d, 8, S41, 0x6fa87e4f); /* 57 */
+ II (d, a, b, c, 15, S42, 0xfe2ce6e0); /* 58 */
+ II (c, d, a, b, 6, S43, 0xa3014314); /* 59 */
+ II (b, c, d, a, 13, S44, 0x4e0811a1); /* 60 */
+ II (a, b, c, d, 4, S41, 0xf7537e82); /* 61 */
+ II (d, a, b, c, 11, S42, 0xbd3af235); /* 62 */
+ II (c, d, a, b, 2, S43, 0x2ad7d2bb); /* 63 */
+ II (b, c, d, a, 9, S44, 0xeb86d391); /* 64 */
+
+ A += a; TRUNC32(A);
+ B += b; TRUNC32(B);
+ C += c; TRUNC32(C);
+ D += d; TRUNC32(D);
+
+ } while (--blocks);
+ ctx->A = A;
+ ctx->B = B;
+ ctx->C = C;
+ ctx->D = D;
+}
+
+
+#ifdef MD5_DEBUG
+static char*
+ctx_dump(MD5_CTX* ctx)
+{
+ static char buf[1024];
+ sprintf(buf, "{A=%x,B=%x,C=%x,D=%x,%d,%d(%d)}",
+ ctx->A, ctx->B, ctx->C, ctx->D,
+ ctx->bytes_low, ctx->bytes_high, (ctx->bytes_low&0x3F));
+ return buf;
+}
+#endif
+
+
+static void
+MD5Update(MD5_CTX* ctx, const U8* buf, STRLEN len)
+{
+ STRLEN blocks;
+ STRLEN fill = ctx->bytes_low & 0x3F;
+
+#ifdef MD5_DEBUG
+ static int ucount = 0;
+ fprintf(stderr,"%5i: Update(%s, %p, %d)\n", ++ucount, ctx_dump(ctx),
+ buf, len);
+#endif
+
+ ctx->bytes_low += len;
+ if (ctx->bytes_low < len) /* wrap around */
+ ctx->bytes_high++;
+
+ if (fill) {
+ STRLEN missing = 64 - fill;
+ if (len < missing) {
+ Copy(buf, ctx->buffer + fill, len, U8);
+ return;
+ }
+ Copy(buf, ctx->buffer + fill, missing, U8);
+ MD5Transform(ctx, ctx->buffer, 1);
+ buf += missing;
+ len -= missing;
+ }
+
+ blocks = len >> 6;
+ if (blocks)
+ MD5Transform(ctx, buf, blocks);
+ if ( (len &= 0x3F)) {
+ Copy(buf + (blocks << 6), ctx->buffer, len, U8);
+ }
+}
+
+
+static void
+MD5Final(U8* digest, MD5_CTX *ctx)
+{
+ STRLEN fill = ctx->bytes_low & 0x3F;
+ STRLEN padlen = (fill < 56 ? 56 : 120) - fill;
+ U32 bits_low, bits_high;
+#ifdef MD5_DEBUG
+ fprintf(stderr," Final: %s\n", ctx_dump(ctx));
+#endif
+ Copy(PADDING, ctx->buffer + fill, padlen, U8);
+ fill += padlen;
+
+ bits_low = ctx->bytes_low << 3;
+ bits_high = (ctx->bytes_high << 3) | (ctx->bytes_low >> 29);
+#ifdef BYTESWAP
+ *(U32*)(ctx->buffer + fill) = BYTESWAP(bits_low); fill += 4;
+ *(U32*)(ctx->buffer + fill) = BYTESWAP(bits_high); fill += 4;
+#else
+ u2s(bits_low, ctx->buffer + fill); fill += 4;
+ u2s(bits_high, ctx->buffer + fill); fill += 4;
+#endif
+
+ MD5Transform(ctx, ctx->buffer, fill >> 6);
+#ifdef MD5_DEBUG
+ fprintf(stderr," Result: %s\n", ctx_dump(ctx));
+#endif
+
+#ifdef BYTESWAP
+ *(U32*)digest = BYTESWAP(ctx->A); digest += 4;
+ *(U32*)digest = BYTESWAP(ctx->B); digest += 4;
+ *(U32*)digest = BYTESWAP(ctx->C); digest += 4;
+ *(U32*)digest = BYTESWAP(ctx->D);
+#else
+ u2s(ctx->A, digest);
+ u2s(ctx->B, digest+4);
+ u2s(ctx->C, digest+8);
+ u2s(ctx->D, digest+12);
+#endif
+}
+
+#ifndef INT2PTR
+#define INT2PTR(any,d) (any)(d)
+#endif
+
static MD5_CTX* get_md5_ctx(pTHX_ SV* sv)
{
MAGIC *mg;
@@ -306,7 +678,7 @@ addfile(self, fh)
InputStream fh
PREINIT:
MD5_CTX* context = get_md5_ctx(aTHX_ self);
- STRLEN fill = (context->count >> 3) & (MD5_BLOCK_LENGTH - 1);
+ STRLEN fill = context->bytes_low & 0x3F;
#ifdef USE_HEAP_INSTEAD_OF_STACK
unsigned char* buffer;
#else
@@ -371,12 +743,14 @@ context(ctx, ...)
PPCODE:
if (items > 2) {
STRLEN len;
- ctx->count = SvUV(ST(1)) << 3;
+ unsigned long blocks = SvUV(ST(1));
unsigned char *buf = (unsigned char *)(SvPV(ST(2), len));
- ctx->state[0] = buf[ 0] | (buf[ 1]<<8) | (buf[ 2]<<16) | (buf[ 3]<<24);
- ctx->state[1] = buf[ 4] | (buf[ 5]<<8) | (buf[ 6]<<16) | (buf[ 7]<<24);
- ctx->state[2] = buf[ 8] | (buf[ 9]<<8) | (buf[10]<<16) | (buf[11]<<24);
- ctx->state[3] = buf[12] | (buf[13]<<8) | (buf[14]<<16) | (buf[15]<<24);
+ ctx->A = buf[ 0] | (buf[ 1]<<8) | (buf[ 2]<<16) | (buf[ 3]<<24);
+ ctx->B = buf[ 4] | (buf[ 5]<<8) | (buf[ 6]<<16) | (buf[ 7]<<24);
+ ctx->C = buf[ 8] | (buf[ 9]<<8) | (buf[10]<<16) | (buf[11]<<24);
+ ctx->D = buf[12] | (buf[13]<<8) | (buf[14]<<16) | (buf[15]<<24);
+ ctx->bytes_low = blocks << 6;
+ ctx->bytes_high = blocks >> 26;
if (items == 4) {
buf = (unsigned char *)(SvPV(ST(3), len));
MD5Update(ctx, buf, len);
@@ -386,20 +760,17 @@ context(ctx, ...)
XSRETURN(0);
}
- w=ctx->state[0]; out[ 0]=w; out[ 1]=(w>>8); out[ 2]=(w>>16); out[ 3]=(w>>24);
- w=ctx->state[1]; out[ 4]=w; out[ 5]=(w>>8); out[ 6]=(w>>16); out[ 7]=(w>>24);
- w=ctx->state[2]; out[ 8]=w; out[ 9]=(w>>8); out[10]=(w>>16); out[11]=(w>>24);
- w=ctx->state[3]; out[12]=w; out[13]=(w>>8); out[14]=(w>>16); out[15]=(w>>24);
+ w=ctx->A; out[ 0]=w; out[ 1]=(w>>8); out[ 2]=(w>>16); out[ 3]=(w>>24);
+ w=ctx->B; out[ 4]=w; out[ 5]=(w>>8); out[ 6]=(w>>16); out[ 7]=(w>>24);
+ w=ctx->C; out[ 8]=w; out[ 9]=(w>>8); out[10]=(w>>16); out[11]=(w>>24);
+ w=ctx->D; out[12]=w; out[13]=(w>>8); out[14]=(w>>16); out[15]=(w>>24);
EXTEND(SP, 3);
- ST(0) = sv_2mortal(newSViv((ctx->count >> 3)
- - ((ctx->count >> 3) % MD5_BLOCK_LENGTH)));
+ ST(0) = sv_2mortal(newSVuv(ctx->bytes_high << 26 |
+ ctx->bytes_low >> 6));
ST(1) = sv_2mortal(newSVpv(out, 16));
- ST(2) = sv_2mortal(newSVpv("",0));
- if (((ctx->count >> 3) & (MD5_BLOCK_LENGTH - 1)) != 0)
- ST(2) = sv_2mortal(newSVpv((char *)ctx->buffer,
- (ctx->count >> 3) & (MD5_BLOCK_LENGTH - 1)));
-
+ ST(2) = sv_2mortal(newSVpv((char *)ctx->buffer,
+ ctx->bytes_low & 0x3F));
XSRETURN(3);
void
diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t b/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t
index 14a39925707..d6b4fcb2cd7 100755
--- a/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t
+++ b/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t
@@ -21,7 +21,7 @@ EOT
# This is the output of: 'md5sum README MD5.xs rfc1321.txt'
$EXPECT = <<EOT;
2f93400875dbb56f36691d5f69f3eba5 README
-5457ac1c3f0f33df96437555dc7eb172 MD5.xs
+0a0cf2512d18d24c6881d7d755e2b609 MD5.xs
754b9db19f79dbc4992f7166eb0f37ce rfc1321.txt
EOT
}
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
index 1b98c4321e2..1e8ac4cd12b 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
@@ -100,7 +100,6 @@ my $Is_MacPerl = $^O eq 'MacOS';
my $Is_Win32 = $^O eq 'MSWin32';
my $Is_cygwin = $^O eq 'cygwin';
my $CanMoveAtBoot = ($Is_Win32 || $Is_cygwin);
-my $Perm_Dir = $ENV{PERL_CORE} ? 0770 : 0755;
# *note* CanMoveAtBoot is only incidentally the same condition as below
# this needs not hold true in the future.
@@ -784,7 +783,7 @@ sub install { #XXX OS-SPECIFIC
_chdir($cwd);
}
foreach my $targetdir (sort keys %check_dirs) {
- _mkpath( $targetdir, 0, $Perm_Dir, $verbose, $dry_run );
+ _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
}
foreach my $found (@found_files) {
my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime,
@@ -798,7 +797,7 @@ sub install { #XXX OS-SPECIFIC
$targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' )
unless $dry_run;
} elsif ( ! -d $targetdir ) {
- _mkpath( $targetdir, 0, $Perm_Dir, $verbose, $dry_run );
+ _mkpath( $targetdir, 0, 0755, $verbose, $dry_run );
}
print "Installing $targetfile\n";
@@ -838,7 +837,7 @@ sub install { #XXX OS-SPECIFIC
if ($pack{'write'}) {
$dir = install_rooted_dir(dirname($pack{'write'}));
- _mkpath( $dir, 0, $Perm_Dir, $verbose, $dry_run );
+ _mkpath( $dir, 0, 0755, $verbose, $dry_run );
print "Writing $pack{'write'}\n" if $verbose;
$packlist->write(install_rooted_file($pack{'write'})) unless $dry_run;
}
@@ -1181,7 +1180,7 @@ environment variable will silence this output.
sub pm_to_blib {
my($fromto,$autodir,$pm_filter) = @_;
- _mkpath($autodir,0,$Perm_Dir);
+ _mkpath($autodir,0,0755);
while(my($from, $to) = each %$fromto) {
if( -f $to && -s $from == -s $to && -M $to < -M $from ) {
print "Skip $to (unchanged)\n" unless $INSTALL_QUIET;
@@ -1204,7 +1203,7 @@ sub pm_to_blib {
# we wont try hard here. its too likely to mess things up.
forceunlink($to);
} else {
- _mkpath(dirname($to),0,$Perm_Dir);
+ _mkpath(dirname($to),0,0755);
}
if ($need_filtering) {
run_filter($pm_filter, $from, $to);
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
index 785daaaed32..009b18ee085 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
@@ -933,7 +933,7 @@ OTHERLDFLAGS = '.$ld_opt.$otherldflags.'
INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
INST_DYNAMIC_FIX = '.$ld_fix.'
-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
');
if ($armaybe ne ':'){
$ldfrom = 'tmp$(LIB_EXT)';
@@ -985,7 +985,7 @@ MAKE
push @m, <<'MAKE';
$(CHMOD) $(PERM_RWX) $@
- $(NOECHO) $(RM_RF) $(INST_BOOT)
+ $(NOECHO) $(RM_RF) $(BOOTSTRAP)
- $(CP_NONEMPTY) $(BOOTSTRAP) $(INST_BOOT) $(PERM_RW)
MAKE
@@ -2049,8 +2049,7 @@ Called by init_main. Initializes PERL_*
sub init_PERM {
my($self) = shift;
- my $perm_dir = $self->{PERL_CORE} ? 770 : 755;
- $self->{PERM_DIR} = $perm_dir unless defined $self->{PERM_DIR};
+ $self->{PERM_DIR} = 755 unless defined $self->{PERM_DIR};
$self->{PERM_RW} = 644 unless defined $self->{PERM_RW};
$self->{PERM_RWX} = 755 unless defined $self->{PERM_RWX};
diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t
index 32a6f59dcab..269aa5c9a4c 100644
--- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t
+++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t
@@ -151,21 +151,20 @@ BEGIN {
is( ((stat('testdir'))[2] & 07777) & 0700,
0100, 'change a dir to execute-only' );
- # change a dir to write-only
- @ARGV = ( '0200', 'testdir' );
+ # change a dir to read-only
+ @ARGV = ( '0400', 'testdir' );
ExtUtils::Command::chmod();
is( ((stat('testdir'))[2] & 07777) & 0700,
- 0200, 'change a dir to write-only' );
+ 0400, 'change a dir to read-only' );
- # change a dir to read-only
- @ARGV = ( '0400', 'testdir' );
+ # change a dir to write-only
+ @ARGV = ( '0200', 'testdir' );
ExtUtils::Command::chmod();
is( ((stat('testdir'))[2] & 07777) & 0700,
- 0400, 'change a dir to read-only' );
+ 0200, 'change a dir to write-only' );
- # remove the dir we've been playing with
@ARGV = ('testdir');
rm_rf;
ok( ! -e 'testdir', 'rm_rf can delete a read-only dir' );
diff --git a/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm b/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm
index 138bdc24ffb..034da1e578d 100644
--- a/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm
+++ b/gnu/usr.bin/perl/cpan/File-Path/lib/File/Path.pm
@@ -18,7 +18,7 @@ BEGIN {
use Exporter ();
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-$VERSION = '2.13';
+$VERSION = '2.12_01';
$VERSION = eval $VERSION;
@ISA = qw(Exporter);
@EXPORT = qw(mkpath rmtree);
@@ -85,15 +85,15 @@ sub make_path {
sub mkpath {
my $old_style = !( @_ and __is_arg( $_[-1] ) );
- my $data;
+ my $arg;
my $paths;
if ($old_style) {
my ( $verbose, $mode );
( $paths, $verbose, $mode ) = @_;
$paths = [$paths] unless UNIVERSAL::isa( $paths, 'ARRAY' );
- $data->{verbose} = $verbose;
- $data->{mode} = defined $mode ? $mode : oct '777';
+ $arg->{verbose} = $verbose;
+ $arg->{mode} = defined $mode ? $mode : oct '777';
}
else {
my %args_permitted = map { $_ => 1 } ( qw|
@@ -107,74 +107,55 @@ sub mkpath {
user
verbose
| );
- my %not_on_win32_args = map { $_ => 1 } ( qw|
- group
- owner
- uid
- user
- | );
my @bad_args = ();
- my @win32_implausible_args = ();
- my $arg = pop @_;
+ $arg = pop @_;
for my $k (sort keys %{$arg}) {
- if (! $args_permitted{$k}) {
- push @bad_args, $k;
- }
- elsif ($not_on_win32_args{$k} and _IS_MSWIN32) {
- push @win32_implausible_args, $k;
- }
- else {
- $data->{$k} = $arg->{$k};
- }
+ push @bad_args, $k unless $args_permitted{$k};
}
- _carp("Unrecognized option(s) passed to mkpath() or make_path(): @bad_args")
+ _carp("Unrecognized option(s) passed to make_path(): @bad_args")
if @bad_args;
- _carp("Option(s) implausible on Win32 passed to mkpath() or make_path(): @win32_implausible_args")
- if @win32_implausible_args;
- $data->{mode} = delete $data->{mask} if exists $data->{mask};
- $data->{mode} = oct '777' unless exists $data->{mode};
- ${ $data->{error} } = [] if exists $data->{error};
- unless (@win32_implausible_args) {
- $data->{owner} = delete $data->{user} if exists $data->{user};
- $data->{owner} = delete $data->{uid} if exists $data->{uid};
- if ( exists $data->{owner} and $data->{owner} =~ /\D/ ) {
- my $uid = ( getpwnam $data->{owner} )[2];
- if ( defined $uid ) {
- $data->{owner} = $uid;
- }
- else {
- _error( $data,
- "unable to map $data->{owner} to a uid, ownership not changed"
- );
- delete $data->{owner};
- }
+ $arg->{mode} = delete $arg->{mask} if exists $arg->{mask};
+ $arg->{mode} = oct '777' unless exists $arg->{mode};
+ ${ $arg->{error} } = [] if exists $arg->{error};
+ $arg->{owner} = delete $arg->{user} if exists $arg->{user};
+ $arg->{owner} = delete $arg->{uid} if exists $arg->{uid};
+ if ( exists $arg->{owner} and $arg->{owner} =~ /\D/ ) {
+ my $uid = ( getpwnam $arg->{owner} )[2];
+ if ( defined $uid ) {
+ $arg->{owner} = $uid;
}
- if ( exists $data->{group} and $data->{group} =~ /\D/ ) {
- my $gid = ( getgrnam $data->{group} )[2];
- if ( defined $gid ) {
- $data->{group} = $gid;
- }
- else {
- _error( $data,
- "unable to map $data->{group} to a gid, group ownership not changed"
- );
- delete $data->{group};
- }
+ else {
+ _error( $arg,
+"unable to map $arg->{owner} to a uid, ownership not changed"
+ );
+ delete $arg->{owner};
}
- if ( exists $data->{owner} and not exists $data->{group} ) {
- $data->{group} = -1; # chown will leave group unchanged
+ }
+ if ( exists $arg->{group} and $arg->{group} =~ /\D/ ) {
+ my $gid = ( getgrnam $arg->{group} )[2];
+ if ( defined $gid ) {
+ $arg->{group} = $gid;
}
- if ( exists $data->{group} and not exists $data->{owner} ) {
- $data->{owner} = -1; # chown will leave owner unchanged
+ else {
+ _error( $arg,
+"unable to map $arg->{group} to a gid, group ownership not changed"
+ );
+ delete $arg->{group};
}
}
+ if ( exists $arg->{owner} and not exists $arg->{group} ) {
+ $arg->{group} = -1; # chown will leave group unchanged
+ }
+ if ( exists $arg->{group} and not exists $arg->{owner} ) {
+ $arg->{owner} = -1; # chown will leave owner unchanged
+ }
$paths = [@_];
}
- return _mkpath( $data, $paths );
+ return _mkpath( $arg, $paths );
}
sub _mkpath {
- my $data = shift;
+ my $arg = shift;
my $paths = shift;
my ( @created );
@@ -189,51 +170,38 @@ sub _mkpath {
}
next if -d $path;
my $parent = File::Basename::dirname($path);
- # Coverage note: It's not clear how we would test the condition:
- # '-d $parent or $path eq $parent'
unless ( -d $parent or $path eq $parent ) {
- push( @created, _mkpath( $data, [$parent] ) );
+ push( @created, _mkpath( $arg, [$parent] ) );
}
- print "mkdir $path\n" if $data->{verbose};
- if ( mkdir( $path, $data->{mode} ) ) {
+ print "mkdir $path\n" if $arg->{verbose};
+ if ( mkdir( $path, $arg->{mode} ) ) {
push( @created, $path );
- if ( exists $data->{owner} ) {
+ if ( exists $arg->{owner} ) {
- # NB: $data->{group} guaranteed to be set during initialisation
- if ( !chown $data->{owner}, $data->{group}, $path ) {
- _error( $data,
- "Cannot change ownership of $path to $data->{owner}:$data->{group}"
+ # NB: $arg->{group} guaranteed to be set during initialisation
+ if ( !chown $arg->{owner}, $arg->{group}, $path ) {
+ _error( $arg,
+"Cannot change ownership of $path to $arg->{owner}:$arg->{group}"
);
}
}
- if ( exists $data->{chmod} ) {
- # Coverage note: It's not clear how we would trigger the next
- # 'if' block. Failure of 'chmod' might first result in a
- # system error: "Permission denied".
- if ( !chmod $data->{chmod}, $path ) {
- _error( $data,
- "Cannot change permissions of $path to $data->{chmod}" );
+ if ( exists $arg->{chmod} ) {
+ if ( !chmod $arg->{chmod}, $path ) {
+ _error( $arg,
+ "Cannot change permissions of $path to $arg->{chmod}" );
}
}
}
else {
my $save_bang = $!;
-
- # From 'perldoc perlvar': $EXTENDED_OS_ERROR ($^E) is documented
- # as:
- # Error information specific to the current operating system. At the
- # moment, this differs from "$!" under only VMS, OS/2, and Win32
- # (and for MacPerl). On all other platforms, $^E is always just the
- # same as $!.
-
my ( $e, $e1 ) = ( $save_bang, $^E );
$e .= "; $e1" if $e ne $e1;
# allow for another process to have created it meanwhile
if ( ! -d $path ) {
$! = $save_bang;
- if ( $data->{error} ) {
- push @{ ${ $data->{error} } }, { $path => $e };
+ if ( $arg->{error} ) {
+ push @{ ${ $arg->{error} } }, { $path => $e };
}
else {
_croak("mkdir $path: $e");
@@ -270,13 +238,14 @@ sub _is_subdir {
sub rmtree {
my $old_style = !( @_ and __is_arg( $_[-1] ) );
- my ($arg, $data, $paths);
+ my $arg;
+ my $paths;
if ($old_style) {
my ( $verbose, $safe );
( $paths, $verbose, $safe ) = @_;
- $data->{verbose} = $verbose;
- $data->{safe} = defined $safe ? $safe : 0;
+ $arg->{verbose} = $verbose;
+ $arg->{safe} = defined $safe ? $safe : 0;
if ( defined($paths) and length($paths) ) {
$paths = [$paths] unless UNIVERSAL::isa( $paths, 'ARRAY' );
@@ -295,53 +264,38 @@ sub rmtree {
verbose
| );
my @bad_args = ();
- my $arg = pop @_;
+ $arg = pop @_;
for my $k (sort keys %{$arg}) {
- if (! $args_permitted{$k}) {
- push @bad_args, $k;
- }
- else {
- $data->{$k} = $arg->{$k};
- }
+ push @bad_args, $k unless $args_permitted{$k};
}
_carp("Unrecognized option(s) passed to remove_tree(): @bad_args")
if @bad_args;
- ${ $data->{error} } = [] if exists $data->{error};
- ${ $data->{result} } = [] if exists $data->{result};
-
- # Wouldn't it make sense to do some validation on @_ before assigning
- # to $paths here?
- # In the $old_style case we guarantee that each path is both defined
- # and non-empty. We don't check that here, which means we have to
- # check it later in the first condition in this line:
- # if ( $ortho_root_length && _is_subdir( $ortho_root, $ortho_cwd ) ) {
- # Granted, that would be a change in behavior for the two
- # non-old-style interfaces.
-
+ ${ $arg->{error} } = [] if exists $arg->{error};
+ ${ $arg->{result} } = [] if exists $arg->{result};
$paths = [@_];
}
- $data->{prefix} = '';
- $data->{depth} = 0;
+ $arg->{prefix} = '';
+ $arg->{depth} = 0;
my @clean_path;
- $data->{cwd} = getcwd() or do {
- _error( $data, "cannot fetch initial working directory" );
+ $arg->{cwd} = getcwd() or do {
+ _error( $arg, "cannot fetch initial working directory" );
return 0;
};
- for ( $data->{cwd} ) { /\A(.*)\Z/s; $_ = $1 } # untaint
+ for ( $arg->{cwd} ) { /\A(.*)\Z/s; $_ = $1 } # untaint
for my $p (@$paths) {
# need to fixup case and map \ to / on Windows
my $ortho_root = _IS_MSWIN32 ? _slash_lc($p) : $p;
my $ortho_cwd =
- _IS_MSWIN32 ? _slash_lc( $data->{cwd} ) : $data->{cwd};
+ _IS_MSWIN32 ? _slash_lc( $arg->{cwd} ) : $arg->{cwd};
my $ortho_root_length = length($ortho_root);
$ortho_root_length-- if _IS_VMS; # don't compare '.' with ']'
if ( $ortho_root_length && _is_subdir( $ortho_root, $ortho_cwd ) ) {
local $! = 0;
- _error( $data, "cannot remove path when cwd is $data->{cwd}", $p );
+ _error( $arg, "cannot remove path when cwd is $arg->{cwd}", $p );
next;
}
@@ -358,16 +312,16 @@ sub rmtree {
push @clean_path, $p;
}
- @{$data}{qw(device inode)} = ( lstat $data->{cwd} )[ 0, 1 ] or do {
- _error( $data, "cannot stat initial working directory", $data->{cwd} );
+ @{$arg}{qw(device inode perm)} = ( lstat $arg->{cwd} )[ 0, 1 ] or do {
+ _error( $arg, "cannot stat initial working directory", $arg->{cwd} );
return 0;
};
- return _rmtree( $data, \@clean_path );
+ return _rmtree( $arg, \@clean_path );
}
sub _rmtree {
- my $data = shift;
+ my $arg = shift;
my $paths = shift;
my $count = 0;
@@ -385,8 +339,8 @@ sub _rmtree {
# opposed to being truly canonical, anchored from the root (/).
my $canon =
- $data->{prefix}
- ? File::Spec->catfile( $data->{prefix}, $root )
+ $arg->{prefix}
+ ? File::Spec->catfile( $arg->{prefix}, $root )
: $root;
my ( $ldev, $lino, $perm ) = ( lstat $root )[ 0, 1, 2 ]
@@ -400,40 +354,29 @@ sub _rmtree {
# see if we can escalate privileges to get in
# (e.g. funny protection mask such as -w- instead of rwx)
- # This uses fchmod to avoid traversing outside of the proper
- # location (CVE-2017-6512)
- my $root_fh;
- if (open($root_fh, '<', $root)) {
- my ($fh_dev, $fh_inode) = (stat $root_fh )[0,1];
- $perm &= oct '7777';
- my $nperm = $perm | oct '700';
- local $@;
- if (
- !(
- $data->{safe}
- or $nperm == $perm
- or !-d _
- or $fh_dev ne $ldev
- or $fh_inode ne $lino
- or eval { chmod( $nperm, $root_fh ) }
- )
- )
- {
- _error( $data,
- "cannot make child directory read-write-exec", $canon );
- next ROOT_DIR;
- }
- close $root_fh;
+ $perm &= oct '7777';
+ my $nperm = $perm | oct '700';
+ if (
+ !(
+ $arg->{safe}
+ or $nperm == $perm
+ or chmod( $nperm, $root )
+ )
+ )
+ {
+ _error( $arg,
+ "cannot make child directory read-write-exec", $canon );
+ next ROOT_DIR;
}
- if ( !chdir($root) ) {
- _error( $data, "cannot chdir to child", $canon );
+ elsif ( !chdir($root) ) {
+ _error( $arg, "cannot chdir to child", $canon );
next ROOT_DIR;
}
}
my ( $cur_dev, $cur_inode, $perm ) = ( stat $curdir )[ 0, 1, 2 ]
or do {
- _error( $data, "cannot stat current working directory", $canon );
+ _error( $arg, "cannot stat current working directory", $canon );
next ROOT_DIR;
};
@@ -454,20 +397,20 @@ sub _rmtree {
if (
!(
- $data->{safe}
+ $arg->{safe}
or $nperm == $perm
or chmod( $nperm, $curdir )
)
)
{
- _error( $data, "cannot make directory read+writeable", $canon );
+ _error( $arg, "cannot make directory read+writeable", $canon );
$nperm = $perm;
}
my $d;
$d = gensym() if $] < 5.006;
if ( !opendir $d, $curdir ) {
- _error( $data, "cannot opendir", $canon );
+ _error( $arg, "cannot opendir", $canon );
@files = ();
}
else {
@@ -494,9 +437,9 @@ sub _rmtree {
if (@files) {
# remove the contained files before the directory itself
- my $narg = {%$data};
+ my $narg = {%$arg};
@{$narg}{qw(device inode cwd prefix depth)} =
- ( $cur_dev, $cur_inode, $updir, $canon, $data->{depth} + 1 );
+ ( $cur_dev, $cur_inode, $updir, $canon, $arg->{depth} + 1 );
$count += _rmtree( $narg, \@files );
}
@@ -504,49 +447,49 @@ sub _rmtree {
# below fails), while we are still in the directory and may do so
# without a race via '.'
if ( $nperm != $perm and not chmod( $perm, $curdir ) ) {
- _error( $data, "cannot reset chmod", $canon );
+ _error( $arg, "cannot reset chmod", $canon );
}
# don't leave the client code in an unexpected directory
- chdir( $data->{cwd} )
+ chdir( $arg->{cwd} )
or
- _croak("cannot chdir to $data->{cwd} from $canon: $!, aborting.");
+ _croak("cannot chdir to $arg->{cwd} from $canon: $!, aborting.");
# ensure that a chdir upwards didn't take us somewhere other
# than we expected (see CVE-2002-0435)
( $cur_dev, $cur_inode ) = ( stat $curdir )[ 0, 1 ]
or _croak(
- "cannot stat prior working directory $data->{cwd}: $!, aborting."
+ "cannot stat prior working directory $arg->{cwd}: $!, aborting."
);
if (_NEED_STAT_CHECK) {
- ( $data->{device} eq $cur_dev and $data->{inode} eq $cur_inode )
- or _croak( "previous directory $data->{cwd} "
+ ( $arg->{device} eq $cur_dev and $arg->{inode} eq $cur_inode )
+ or _croak( "previous directory $arg->{cwd} "
. "changed before entering $canon, "
. "expected dev=$ldev ino=$lino, "
. "actual dev=$cur_dev ino=$cur_inode, aborting."
);
}
- if ( $data->{depth} or !$data->{keep_root} ) {
- if ( $data->{safe}
+ if ( $arg->{depth} or !$arg->{keep_root} ) {
+ if ( $arg->{safe}
&& ( _IS_VMS
? !&VMS::Filespec::candelete($root)
: !-w $root ) )
{
- print "skipped $root\n" if $data->{verbose};
+ print "skipped $root\n" if $arg->{verbose};
next ROOT_DIR;
}
if ( _FORCE_WRITABLE and !chmod $perm | oct '700', $root ) {
- _error( $data, "cannot make directory writeable", $canon );
+ _error( $arg, "cannot make directory writeable", $canon );
}
- print "rmdir $root\n" if $data->{verbose};
+ print "rmdir $root\n" if $arg->{verbose};
if ( rmdir $root ) {
- push @{ ${ $data->{result} } }, $root if $data->{result};
+ push @{ ${ $arg->{result} } }, $root if $arg->{result};
++$count;
}
else {
- _error( $data, "cannot remove directory", $canon );
+ _error( $arg, "cannot remove directory", $canon );
if (
_FORCE_WRITABLE
&& !chmod( $perm,
@@ -555,7 +498,7 @@ sub _rmtree {
)
{
_error(
- $data,
+ $arg,
sprintf( "cannot restore permissions to 0%o",
$perm ),
$canon
@@ -572,7 +515,7 @@ sub _rmtree {
&& ( $root !~ m/(?<!\^)[\]>]+/ ); # not already in VMS syntax
if (
- $data->{safe}
+ $arg->{safe}
&& (
_IS_VMS
? !&VMS::Filespec::candelete($root)
@@ -580,7 +523,7 @@ sub _rmtree {
)
)
{
- print "skipped $root\n" if $data->{verbose};
+ print "skipped $root\n" if $arg->{verbose};
next ROOT_DIR;
}
@@ -589,19 +532,19 @@ sub _rmtree {
and $nperm != $perm
and not chmod $nperm, $root )
{
- _error( $data, "cannot make file writeable", $canon );
+ _error( $arg, "cannot make file writeable", $canon );
}
- print "unlink $canon\n" if $data->{verbose};
+ print "unlink $canon\n" if $arg->{verbose};
# delete all versions under VMS
for ( ; ; ) {
if ( unlink $root ) {
- push @{ ${ $data->{result} } }, $root if $data->{result};
+ push @{ ${ $arg->{result} } }, $root if $arg->{result};
}
else {
- _error( $data, "cannot unlink file", $canon );
+ _error( $arg, "cannot unlink file", $canon );
_FORCE_WRITABLE and chmod( $perm, $root )
- or _error( $data,
+ or _error( $arg,
sprintf( "cannot restore permissions to 0%o", $perm ),
$canon );
last;
@@ -633,41 +576,41 @@ File::Path - Create or remove directory trees
=head1 VERSION
-2.13 - released May 31 2017.
+This document describes version 2.12 of File::Path.
=head1 SYNOPSIS
- use File::Path qw(make_path remove_tree);
-
- @created = make_path('foo/bar/baz', '/zug/zwang');
- @created = make_path('foo/bar/baz', '/zug/zwang', {
- verbose => 1,
- mode => 0711,
- });
- make_path('foo/bar/baz', '/zug/zwang', {
- chmod => 0777,
- });
-
- $removed_count = remove_tree('foo/bar/baz', '/zug/zwang', {
- verbose => 1,
- error => \my $err_list,
- safe => 1,
- });
-
- # legacy (interface promoted before v2.00)
- @created = mkpath('/foo/bar/baz');
- @created = mkpath('/foo/bar/baz', 1, 0711);
- @created = mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
- $removed_count = rmtree('foo/bar/baz', 1, 1);
- $removed_count = rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
-
- # legacy (interface promoted before v2.06)
- @created = mkpath('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 });
- $removed_count = rmtree('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 });
+ use File::Path qw(make_path remove_tree);
+
+ @created = make_path('foo/bar/baz', '/zug/zwang');
+ @created = make_path('foo/bar/baz', '/zug/zwang', {
+ verbose => 1,
+ mode => 0711,
+ });
+ make_path('foo/bar/baz', '/zug/zwang', {
+ chmod => 0777,
+ });
+
+ $removed_count = remove_tree('foo/bar/baz', '/zug/zwang');
+ $removed_count = remove_tree('foo/bar/baz', '/zug/zwang', {
+ verbose => 1,
+ error => \my $err_list,
+ });
+
+ # legacy (interface promoted before v2.00)
+ @created = mkpath('/foo/bar/baz');
+ @created = mkpath('/foo/bar/baz', 1, 0711);
+ @created = mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);
+ $removed_count = rmtree('foo/bar/baz', 1, 1);
+ $removed_count = rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);
+
+ # legacy (interface promoted before v2.06)
+ @created = mkpath('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 });
+ $removed_count = rmtree('foo/bar/baz', '/zug/zwang', { verbose => 1, mode => 0711 });
=head1 DESCRIPTION
-This module provides a convenient way to create directories of
+This module provide a convenient way to create directories of
arbitrary depth and to delete an entire directory subtree from the
filesystem.
@@ -680,7 +623,7 @@ The following functions are provided:
=item make_path( $dir1, $dir2, ...., \%opts )
The C<make_path> function creates the given directories if they don't
-exist before, much like the Unix command C<mkdir -p>.
+exists before, much like the Unix command C<mkdir -p>.
The function accepts a list of directories to be created. Its
behaviour may be tuned by an optional hashref appearing as the last
@@ -696,7 +639,7 @@ The following keys are recognised in the option hash:
=item mode => $num
The numeric permissions mode to apply to each created directory
-(defaults to C<0777>), to be modified by the current C<umask>. If the
+(defaults to 0777), to be modified by the current C<umask>. If the
directory already exists (and thus does not need to be created),
the permissions will not be modified.
@@ -732,9 +675,9 @@ in an C<eval> block.
=item uid => $owner
If present, will cause any created directory to be owned by C<$owner>.
-If the value is numeric, it will be interpreted as a uid; otherwise a
-username is assumed. An error will be issued if the username cannot be
-mapped to a uid, the uid does not exist or the process lacks the
+If the value is numeric, it will be interpreted as a uid, otherwise
+as username is assumed. An error will be issued if the username cannot be
+mapped to a uid, or the uid does not exist, or the process lacks the
privileges to change ownership.
Ownership of directories that already exist will not be changed.
@@ -743,11 +686,11 @@ C<user> and C<uid> are aliases of C<owner>.
=item group => $group
-If present, will cause any created directory to be owned by the group
-C<$group>. If the value is numeric, it will be interpreted as a gid;
-otherwise a group name is assumed. An error will be issued if the
-group name cannot be mapped to a gid, the gid does not exist or the
-process lacks the privileges to change group ownership.
+If present, will cause any created directory to be owned by the group C<$group>.
+If the value is numeric, it will be interpreted as a gid, otherwise
+as group name is assumed. An error will be issued if the group name cannot be
+mapped to a gid, or the gid does not exist, or the process lacks the
+privileges to change group ownership.
Group ownership of directories that already exist will not be changed.
@@ -763,10 +706,9 @@ Group ownership of directories that already exist will not be changed.
=item mkpath( $dir1, $dir2,..., \%opt )
-The C<mkpath()> function provide the legacy interface of
-C<make_path()> with a different interpretation of the arguments
-passed. The behaviour and return value of the function is otherwise
-identical to C<make_path()>.
+The mkpath() function provide the legacy interface of make_path() with
+a different interpretation of the arguments passed. The behaviour and
+return value of the function is otherwise identical to make_path().
=item remove_tree( $dir1, $dir2, .... )
@@ -774,27 +716,16 @@ identical to C<make_path()>.
The C<remove_tree> function deletes the given directories and any
files and subdirectories they might contain, much like the Unix
-command C<rm -rf> or the Windows commands C<rmdir /s> and C<rd /s>. The
-only exception to the function similarity is that C<remove_tree> accepts
-only directories whereas C<rm -rf> also accepts files.
+command C<rm -r> or the Windows commands C<rmdir /s> and C<rd /s>. The
+only exception to the function similarity is C<remove_tree> accepts
+only directories whereas C<rm -r> also accepts files.
The function accepts a list of directories to be
removed. Its behaviour may be tuned by an optional hashref
appearing as the last parameter on the call. If an empty string is
passed to C<remove_tree>, an error will occur.
-B<NOTE:> For security reasons, we strongly advise use of the
-hashref-as-final-argument syntax -- specifically, with a setting of the C<safe>
-element to a true value.
-
- remove_tree( $dir1, $dir2, ....,
- {
- safe => 1,
- ... # other key-value pairs
- },
- );
-
-The function returns the number of files successfully deleted.
+The functions returns the number of files successfully deleted.
The following keys are recognised in the option hash:
@@ -820,7 +751,7 @@ When set to a true value, will cause all files and subdirectories
to be removed, except the initially specified directories. This comes
in handy when cleaning out an application's scratch directory.
- remove_tree( '/tmp', {keep_root => 1} );
+ remove_tree( '/tmp', {keep_root => 1} );
=item result => \$res
@@ -829,8 +760,8 @@ This scalar will be made to reference an array, which will
be used to store all files and directories unlinked
during the call. If nothing is unlinked, the array will be empty.
- remove_tree( '/tmp', {result => \my $list} );
- print "unlinked $_\n" for @$list;
+ remove_tree( '/tmp', {result => \my $list} );
+ print "unlinked $_\n" for @$list;
This is a useful alternative to the C<verbose> key.
@@ -860,21 +791,10 @@ of hand. This is the safest course of action.
=item rmtree( $dir1, $dir2,..., \%opt )
-The C<rmtree()> function provide the legacy interface of
-C<remove_tree()> with a different interpretation of the arguments
-passed. The behaviour and return value of the function is otherwise
-identical to C<remove_tree()>.
-
-B<NOTE:> For security reasons, we strongly advise use of the
-hashref-as-final-argument syntax, specifically with a setting of the C<safe>
-element to a true value.
-
- rmtree( $dir1, $dir2, ....,
- {
- safe => 1,
- ... # other key-value pairs
- },
- );
+The rmtree() function provide the legacy interface of remove_tree()
+with a different interpretation of the arguments passed. The behaviour
+and return value of the function is otherwise identical to
+remove_tree().
=back
@@ -893,9 +813,9 @@ C<make_path> or C<remove_tree>, you should take additional precautions.
=back
-If C<make_path> or C<remove_tree> encounters an error, a diagnostic
+If C<make_path> or C<remove_tree> encounter an error, a diagnostic
message will be printed to C<STDERR> via C<carp> (for non-fatal
-errors) or via C<croak> (for fatal errors).
+errors), or via C<croak> (for fatal errors).
If this behaviour is not desirable, the C<error> attribute may be
used to hold a reference to a variable, which will be used to store
@@ -908,7 +828,7 @@ encountered the diagnostic key will be empty.
An example usage looks like:
remove_tree( 'foo/bar', 'bar/rat', {error => \my $err} );
- if ($err && @$err) {
+ if (@$err) {
for my $diag (@$err) {
my ($file, $message) = %$diag;
if ($file eq '') {
@@ -962,16 +882,16 @@ to at least 2.08 in order to avoid surprises.
=head3 SECURITY CONSIDERATIONS
-There were race conditions in the 1.x implementations of File::Path's
+There were race conditions 1.x implementations of File::Path's
C<rmtree> function (although sometimes patched depending on the OS
distribution or platform). The 2.0 version contains code to avoid the
problem mentioned in CVE-2002-0435.
See the following pages for more information:
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905
- http://www.nntp.perl.org/group/perl.perl5.porters/2005/01/msg97623.html
- http://www.debian.org/security/2005/dsa-696
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286905
+ http://www.nntp.perl.org/group/perl.perl5.porters/2005/01/msg97623.html
+ http://www.debian.org/security/2005/dsa-696
Additionally, unless the C<safe> parameter is set (or the
third parameter in the traditional interface is TRUE), should a
@@ -979,27 +899,6 @@ C<remove_tree> be interrupted, files that were originally in read-only
mode may now have their permissions set to a read-write (or "delete
OK") mode.
-The following CVE reports were previously filed against File-Path and are
-believed to have been addressed:
-
-=over 4
-
-=item * L<http://cve.circl.lu/cve/CVE-2004-0452>
-
-=item * L<http://cve.circl.lu/cve/CVE-2005-0448>
-
-=back
-
-In February 2017 the cPanel Security Team reported an additional vulnerability
-in File-Path. The C<chmod()> logic to make directories traversable can be
-abused to set the mode on an attacker-chosen file to an attacker-chosen value.
-This is due to the time-of-check-to-time-of-use (TOCTTOU) race condition
-(L<https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use>) between the
-C<stat()> that decides the inode is a directory and the C<chmod()> that tries
-to make it user-rwx. CPAN versions 2.13 and later incorporate a patch
-provided by John Lightsey to address this problem. This vulnerability has
-been reported as CVE-2017-6512.
-
=head1 DIAGNOSTICS
FATAL errors will cause the program to halt (C<croak>), since the
@@ -1008,7 +907,7 @@ can always be trapped with C<eval>, but it's not a good idea. Under
the circumstances, dying is the best thing to do).
SEVERE errors may be trapped using the modern interface. If the
-they are not trapped, or if the old interface is used, such an error
+they are not trapped, or the old interface is used, such an error
will cause the program will halt.
All other errors may be trapped using the modern interface, otherwise
@@ -1019,7 +918,7 @@ they will be C<carp>ed about. Program execution will not be halted.
=item mkdir [path]: [errmsg] (SEVERE)
C<make_path> was unable to create the path. Probably some sort of
-permissions error at the point of departure or insufficient resources
+permissions error at the point of departure, or insufficient resources
(such as free inodes on Unix).
=item No root path(s) specified
@@ -1098,7 +997,7 @@ halts to avoid a race condition from occurring.
=item cannot stat prior working directory [dir]: [errmsg], aborting. (FATAL)
-C<remove_tree> was unable to stat the parent directory after having returned
+C<remove_tree> was unable to stat the parent directory after have returned
from the child. Since there is no way of knowing if we returned to
where we think we should be (by comparing device and inode) the only
way out is to C<croak>.
@@ -1118,9 +1017,9 @@ execution continues, but the directory may possibly not be deleted.
=item cannot remove directory [dir]: [errmsg]
-C<remove_tree> attempted to remove a directory, but failed. This may be because
+C<remove_tree> attempted to remove a directory, but failed. This may because
some objects that were unable to be removed remain in the directory, or
-it could be a permissions issue. The directory will be left behind.
+a permissions issue. The directory will be left behind.
=item cannot restore permissions of [dir] to [0nnn]: [errmsg]
@@ -1188,16 +1087,14 @@ to examining directory trees.
The following describes F<File::Path> limitations and how to report bugs.
-=head2 MULTITHREADED APPLICATIONS
+=head2 MULTITHREAD APPLICATIONS
-F<File::Path> C<rmtree> and C<remove_tree> will not work with
-multithreaded applications due to its use of C<chdir>. At this time,
-no warning or error is generated in this situation. You will
-certainly encounter unexpected results.
+F<File::Path> B<rmtree> and B<remove_tree> will not work with multithreaded
+applications due to its use of B<chdir>. At this time, no warning or error
+results and you will certainly encounter unexpected results.
-The implementation that surfaces this limitation will not be changed. See the
-F<File::Path::Tiny> module for functionality similar to F<File::Path> but which does
-not C<chdir>.
+The implementation that surfaces this limitation may change in a future
+release.
=head2 NFS Mount Points
@@ -1250,14 +1147,8 @@ Contributors to File::Path, in alphabetical order.
=item <F<bulkdd@cpan.org>>
-=item Charlie Gonzalez <F<itcharlie@cpan.org>>
-
=item Craig A. Berry <F<craigberry@mac.com>>
-=item James E Keenan <F<jkeenan@cpan.org>>
-
-=item John Lightsey <F<john@perlsec.org>>
-
=item Richard Elberger <F<riche@cpan.org>>
=item Ryan Yee <F<ryee@cpan.org>>
@@ -1266,14 +1157,12 @@ Contributors to File::Path, in alphabetical order.
=item Tom Lutz <F<tommylutz@gmail.com>>
-=item Will Sheppard <F<willsheppard@github>>
-
=back
=head1 COPYRIGHT
This module is copyright (C) Charles Bailey, Tim Bunce, David Landgren,
-James Keenan and Richard Elberger 1995-2017. All rights reserved.
+James Keenan, and Richard Elberger 1995-2015. All rights reserved.
=head1 LICENSE
diff --git a/gnu/usr.bin/perl/cpan/File-Path/t/FilePathTest.pm b/gnu/usr.bin/perl/cpan/File-Path/t/FilePathTest.pm
index 88b411d4bb3..f9e82893119 100644
--- a/gnu/usr.bin/perl/cpan/File-Path/t/FilePathTest.pm
+++ b/gnu/usr.bin/perl/cpan/File-Path/t/FilePathTest.pm
@@ -3,26 +3,18 @@ use strict;
use warnings;
use base 'Exporter';
use SelectSaver;
-use Carp;
use Cwd;
use File::Spec::Functions;
-use File::Path ();
-use Test::More ();
-our @EXPORT_OK = qw(
- _run_for_warning
- _run_for_verbose
- _cannot_delete_safe_mode
- _verbose_expected
- create_3_level_subdirs
- cleanup_3_level_subdirs
-);
+our @EXPORT = qw(_run_for_warning _run_for_verbose _basedir
+ _cannot_delete_safe_mode
+ _verbose_expected);
sub _basedir {
- return catdir(
- curdir(),
- sprintf( 'test-%x-%x-%x', time, $$, rand(99999) ),
+ return catdir( curdir(),
+ sprintf( 'test-%x-%x-%x', time, $$, rand(99999) ),
);
+
}
sub _run_for_warning {
@@ -117,28 +109,4 @@ END
}
}
-sub create_3_level_subdirs {
- my @dirnames = @_;
- my %seen = map {$_ => 1} @dirnames;
- croak "Need 3 distinct names for subdirectories"
- unless scalar(keys %seen) == 3;
- my $tdir = File::Spec::Functions::tmpdir();
- my $least_deep = catdir($tdir, $dirnames[0]);
- my $next_deepest = catdir($least_deep, $dirnames[1]);
- my $deepest = catdir($next_deepest, $dirnames[2]);
- return ($least_deep, $next_deepest, $deepest);
-}
-
-sub cleanup_3_level_subdirs {
- # runs 2 tests
- my $least_deep = shift;
- croak "Must provide path of least subdirectory"
- unless (length($least_deep) and (-d $least_deep));
- my $x;
- my $opts = { error => \$x };
- File::Path::remove_tree($least_deep, $opts);
- Test::More::ok(! -d $least_deep, "directory '$least_deep' removed, as expected");
- Test::More::is(scalar(@{$x}), 0, "no error messages using remove_tree() with \$opts");
-}
-
1;
diff --git a/gnu/usr.bin/perl/cpan/File-Path/t/Path.t b/gnu/usr.bin/perl/cpan/File-Path/t/Path.t
index 9be39a5de2f..5644f57a516 100755
--- a/gnu/usr.bin/perl/cpan/File-Path/t/Path.t
+++ b/gnu/usr.bin/perl/cpan/File-Path/t/Path.t
@@ -3,20 +3,11 @@
use strict;
-use Test::More tests => 167;
+use Test::More tests => 127;
use Config;
use Fcntl ':mode';
-use lib './t';
-use FilePathTest qw(
- _run_for_warning
- _run_for_verbose
- _cannot_delete_safe_mode
- _verbose_expected
- create_3_level_subdirs
- cleanup_3_level_subdirs
-);
-use Errno qw(:POSIX);
-use Carp;
+use lib 't/';
+use FilePathTest;
BEGIN {
use_ok('Cwd');
@@ -26,13 +17,6 @@ BEGIN {
my $Is_VMS = $^O eq 'VMS';
-my $fchmod_supported = 0;
-if (open my $fh, curdir()) {
- my ($perm) = (stat($fh))[2];
- $perm &= 07777;
- eval { $fchmod_supported = chmod( $perm, $fh); };
-}
-
# first check for stupid permissions second for full, so we clean up
# behind ourselves
for my $perm (0111,0777) {
@@ -314,19 +298,16 @@ is($created[0], $dir, "created directory (old style 3 mode undef) cross-check");
is(rmtree($dir, 0, undef), 1, "removed directory 3 verbose undef");
-SKIP: {
- skip "fchmod of directories not supported on this platform", 3 unless $fchmod_supported;
- $dir = catdir($tmp_base,'G');
- $dir = VMS::Filespec::unixify($dir) if $Is_VMS;
+$dir = catdir($tmp_base,'G');
+$dir = VMS::Filespec::unixify($dir) if $Is_VMS;
- @created = mkpath($dir, undef, 0400);
+@created = mkpath($dir, undef, 0200);
- is(scalar(@created), 1, "created read-only dir");
+is(scalar(@created), 1, "created write-only dir");
- is($created[0], $dir, "created read-only directory cross-check");
+is($created[0], $dir, "created write-only directory cross-check");
- is(rmtree($dir), 1, "removed read-only dir");
-}
+is(rmtree($dir), 1, "removed write-only dir");
# borderline new-style heuristics
if (chdir $tmp_base) {
@@ -468,28 +449,26 @@ SKIP: {
}
SKIP : {
- my $skip_count = 18;
+ my $skip_count = 19;
# this test will fail on Windows, as per:
# http://perldoc.perl.org/perlport.html#chmod
skip "Windows chmod test skipped", $skip_count
if $^O eq 'MSWin32';
- skip "fchmod() on directories is not supported on this platform", $skip_count
- unless $fchmod_supported;
my $mode;
my $octal_mode;
my @inputs = (
- 0777, 0700, 0470, 0407,
- 0433, 0400, 0430, 0403,
- 0111, 0100, 0110, 0101,
- 0731, 0713, 0317, 0371,
- 0173, 0137);
+ 0777, 0700, 0070, 0007,
+ 0333, 0300, 0030, 0003,
+ 0111, 0100, 0010, 0001,
+ 0731, 0713, 0317, 0371, 0173, 0137,
+ 00 );
my $input;
my $octal_input;
+ $dir = catdir($tmp_base, 'chmod_test');
foreach (@inputs) {
$input = $_;
- $dir = catdir($tmp_base, sprintf("chmod_test%04o", $input));
# We can skip from here because 0 is last in the list.
skip "Mode of 0 means assume user defaults on VMS", 1
if ($input == 0 && $Is_VMS);
@@ -497,11 +476,7 @@ SKIP : {
$mode = (stat($dir))[2];
$octal_mode = S_IMODE($mode);
$octal_input = sprintf "%04o", S_IMODE($input);
- SKIP: {
- skip "permissions are not fully supported by the filesystem", 1
- if (($^O eq 'MSWin32' || $^O eq 'cygwin') && ((Win32::FsType())[1] & 8) == 0);
- is($octal_mode,$input, "create a new directory with chmod $input ($octal_input)");
- }
+ is($octal_mode,$input, "create a new directory with chmod $input ($octal_input)");
rmtree( $dir );
}
}
@@ -612,27 +587,29 @@ SKIP: {
my $dir2 = catdir( $base, 'B');
{
- my $warn = _run_for_warning( sub {
- my @created = make_path(
- $dir,
- $dir2,
- { mode => 0711, foo => 1, bar => 1 }
- );
- } );
+ my $warn;
+ $SIG{__WARN__} = sub { $warn = shift };
+
+ my @created = make_path(
+ $dir,
+ $dir2,
+ { mode => 0711, foo => 1, bar => 1 }
+ );
like($warn,
- qr/Unrecognized option\(s\) passed to mkpath\(\) or make_path\(\):.*?bar.*?foo/,
+ qr/Unrecognized option\(s\) passed to make_path\(\):.*?bar.*?foo/,
'make_path with final hashref warned due to unrecognized options'
);
}
{
- my $warn = _run_for_warning( sub {
- my @created = remove_tree(
- $dir,
- $dir2,
- { foo => 1, bar => 1 }
- );
- } );
+ my $warn;
+ $SIG{__WARN__} = sub { $warn = shift };
+
+ my @created = remove_tree(
+ $dir,
+ $dir2,
+ { foo => 1, bar => 1 }
+ );
like($warn,
qr/Unrecognized option\(s\) passed to remove_tree\(\):.*?bar.*?foo/,
'remove_tree with final hashref failed due to unrecognized options'
@@ -679,7 +656,7 @@ is(
{
my ($x, $message, $object, $expect, $rv, $arg, $error);
my ($k, $v, $second_error, $third_error);
- local $! = ENOENT;
+ local $! = 2;
$x = $!;
$message = 'message in a bottle';
@@ -752,186 +729,3 @@ is(
is($k, '', "key of hash is empty string, since 3rd arg was undef");
is($v, $expect, "value of hash is 2nd arg: $message");
}
-
-{
- # https://rt.cpan.org/Ticket/Display.html?id=117019
- # remove_tree(): Permit re-use of options hash without issuing a warning
-
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| a b c | );
- my @created;
- @created = File::Path::make_path($deepest, { mode => 0711 });
- is(scalar(@created), 3, "Created 3 subdirectories");
-
- my $x = '';
- my $opts = { error => \$x };
- File::Path::remove_tree($deepest, $opts);
- ok(! -d $deepest, "directory '$deepest' removed, as expected");
-
- my $warn;
- $warn = _run_for_warning( sub { File::Path::remove_tree($next_deepest, $opts); } );
- ok(! $warn, "CPAN 117019: No warning thrown when re-using \$opts");
- ok(! -d $next_deepest, "directory '$next_deepest' removed, as expected");
-
- $warn = _run_for_warning( sub { File::Path::remove_tree($least_deep, $opts); } );
- ok(! $warn, "CPAN 117019: No warning thrown when re-using \$opts");
- ok(! -d $least_deep, "directory '$least_deep' removed, as expected");
-}
-
-{
- # Corner cases with respect to arguments provided to functions
- my $count;
-
- $count = remove_tree();
- is($count, 0,
- "If not provided with any paths, remove_tree() will return a count of 0 things deleted");
-
- $count = remove_tree('');
- is($count, 0,
- "If not provided with any paths, remove_tree() will return a count of 0 things deleted");
-
- my $warn;
- $warn = _run_for_warning( sub { $count = rmtree(); } );
- like($warn, qr/No root path\(s\) specified/s, "Got expected carp");
- is($count, 0,
- "If not provided with any paths, remove_tree() will return a count of 0 things deleted");
-
- $warn = _run_for_warning( sub {$count = rmtree(undef); } );
- like($warn, qr/No root path\(s\) specified/s, "Got expected carp");
- is($count, 0,
- "If provided only with an undefined value, remove_tree() will return a count of 0 things deleted");
-
- $warn = _run_for_warning( sub {$count = rmtree(''); } );
- like($warn, qr/No root path\(s\) specified/s, "Got expected carp");
- is($count, 0,
- "If provided with an empty string for a path, remove_tree() will return a count of 0 things deleted");
-
- $count = make_path();
- is($count, 0,
- "If not provided with any paths, make_path() will return a count of 0 things created");
-
- $count = mkpath();
- is($count, 0,
- "If not provided with any paths, make_path() will return a count of 0 things created");
-}
-
-SKIP: {
- my $skip_count = 5;
- skip "Windows will not set this error condition", $skip_count
- if $^O eq 'MSWin32';
-
- # mkpath() with hashref: case of phony user
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| d e f | );
- my (@created, $error);
- my $user = join('_' => 'foobar', $$);
- @created = mkpath($deepest, { mode => 0711, user => $user, error => \$error });
- TODO: {
- local $TODO = "Notwithstanding the phony 'user', mkpath will actually create subdirectories; should it?";
- is(scalar(@created), 0, "No subdirectories created");
- }
- is(scalar(@$error), 1, "caught error condition" );
- my ($file, $message) = each %{$error->[0]};
- like($message,
- qr/unable to map $user to a uid, ownership not changed/s,
- "Got expected error message for phony user",
- );
-
- cleanup_3_level_subdirs($least_deep);
-}
-
-{
- # mkpath() with hashref: case of valid uid
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| j k l | );
- my (@created, $error);
- @created = mkpath($deepest, { mode => 0711, uid => $>, error => \$error });
- is(scalar(@created), 3, "Provide valid 'uid' argument: 3 subdirectories created");
-
- cleanup_3_level_subdirs($least_deep);
-}
-
-SKIP: {
- my $skip_count = 3;
- skip "getpwuid() and getgrgid() not implemented on Windows", $skip_count
- if $^O eq 'MSWin32';
-
- # mkpath() with hashref: case of valid owner
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| m n o | );
- my (@created, $error);
- my $name = getpwuid($>);
- @created = mkpath($deepest, { mode => 0711, owner => $name, error => \$error });
- is(scalar(@created), 3, "Provide valid 'owner' argument: 3 subdirectories created");
-
- cleanup_3_level_subdirs($least_deep);
-}
-
-SKIP: {
- my $skip_count = 5;
- skip "Windows will not set this error condition", $skip_count
- if $^O eq 'MSWin32';
-
- # mkpath() with hashref: case of phony group
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| p q r | );
- my (@created, $error);
- my $bad_group = join('_' => 'foobarbaz', $$);
- @created = mkpath($deepest, { mode => 0711, group => $bad_group, error => \$error });
- TODO: {
- local $TODO = "Notwithstanding the phony 'group', mkpath will actually create subdirectories; should it?";
- is(scalar(@created), 0, "No subdirectories created");
- }
- is(scalar(@$error), 1, "caught error condition" );
- my ($file, $message) = each %{$error->[0]};
- like($message,
- qr/unable to map $bad_group to a gid, group ownership not changed/s,
- "Got expected error message for phony user",
- );
-
- cleanup_3_level_subdirs($least_deep);
-}
-
-{
- # mkpath() with hashref: case of valid group
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| s t u | );
- my (@created, $error);
- @created = mkpath($deepest, { mode => 0711, group => $(, error => \$error });
- is(scalar(@created), 3, "Provide valid 'group' argument: 3 subdirectories created");
-
- cleanup_3_level_subdirs($least_deep);
-}
-
-SKIP: {
- my $skip_count = 3;
- skip "getpwuid() and getgrgid() not implemented on Windows", $skip_count
- if $^O eq 'MSWin32';
-
- # mkpath() with hashref: case of valid group
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| v w x | );
- my (@created, $error);
- my $group_name = (getgrgid($())[0];
- @created = mkpath($deepest, { mode => 0711, group => $group_name, error => \$error });
- is(scalar(@created), 3, "Provide valid 'group' argument: 3 subdirectories created");
-
- cleanup_3_level_subdirs($least_deep);
-}
-
-SKIP: {
- my $skip_count = 3;
- skip "getpwuid() and getgrgid() not implemented on Windows", $skip_count
- if $^O eq 'MSWin32';
-
- # mkpath() with hashref: case of valid owner and group
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| delta epsilon zeta | );
- my (@created, $error);
- my $name = getpwuid($>);
- my $group_name = (getgrgid($())[0];
- @created = mkpath($deepest, { mode => 0711, owner => $name, group => $group_name, error => \$error });
- is(scalar(@created), 3, "Provide valid 'owner' and 'group' 'group' arguments: 3 subdirectories created");
-
- cleanup_3_level_subdirs($least_deep);
-}
diff --git a/gnu/usr.bin/perl/cpan/File-Path/t/Path_root.t b/gnu/usr.bin/perl/cpan/File-Path/t/Path_root.t
index 2647b7fd121..36aeb1677de 100644
--- a/gnu/usr.bin/perl/cpan/File-Path/t/Path_root.t
+++ b/gnu/usr.bin/perl/cpan/File-Path/t/Path_root.t
@@ -1,17 +1,15 @@
use strict;
use Test::More;
use Config;
-use lib './t';
-use FilePathTest qw(
- _run_for_warning
-);
+use lib 't/';
+use FilePathTest;
use File::Path qw(rmtree mkpath make_path remove_tree);
use File::Spec::Functions;
my $prereq = prereq();
plan skip_all => $prereq if defined $prereq;
-plan tests => 11;
+plan tests => 8;
my $pwent = max_u();
my $grent = max_g();
@@ -62,35 +60,21 @@ is(scalar(@created), 1, "created a directory owned by $max_user:$max_group...");
is($dir_uid, $max_uid, "... owned by $max_uid");
is($dir_gid, $max_gid, "... owned by group $max_gid");
-{
+SKIP: {
+ skip('Skip until RT 85878 is fixed', 1);
# invent a user and group that don't exist
do { ++$max_user } while ( getpwnam( $max_user ) );
do { ++$max_group } while ( getgrnam( $max_group ) );
$dir = catdir($dir_stem, 'aad');
- my $rv = _run_for_warning( sub {
- make_path(
- $dir,
- { user => $max_user, group => $max_group }
- )
- } );
- like( $rv,
- qr{unable to map $max_user to a uid, ownership not changed:}s,
- "created a directory not owned by $max_user:$max_group...",
- );
+ my $rv = _run_for_warning( sub { make_path( $dir,
+ { user => $max_user,
+ group => $max_group } ) } );
like( $rv,
- qr{unable to map $max_group to a gid, group ownership not changed:}s,
- "created a directory not owned by $max_user:$max_group...",
- );
-}
-
-{
- # cleanup
- my $x;
- my $opts = { error => \$x };
- remove_tree($tmp_base, $opts);
- ok(! -d $tmp_base, "directory '$tmp_base' removed, as expected");
- is(scalar(@{$x}), 0, "no error messages using remove_tree() with \$opts");
+ qr{\Aunable to map $max_user to a uid, ownership not changed: .* at \S+ line \d+
+unable to map $max_group to a gid, group ownership not changed: .* at \S+ line \d+\b},
+ "created a directory not owned by $max_user:$max_group..."
+ );
}
sub max_u {
diff --git a/gnu/usr.bin/perl/cpan/File-Path/t/Path_win32.t b/gnu/usr.bin/perl/cpan/File-Path/t/Path_win32.t
index 89b0b2f045c..47168822b96 100644
--- a/gnu/usr.bin/perl/cpan/File-Path/t/Path_win32.t
+++ b/gnu/usr.bin/perl/cpan/File-Path/t/Path_win32.t
@@ -1,20 +1,16 @@
use strict;
use Test::More;
-use lib './t';
-use FilePathTest qw(
- create_3_level_subdirs
- cleanup_3_level_subdirs
-);
+use lib 't/';
+use FilePathTest;
use File::Path;
use Cwd;
use File::Spec::Functions;
-use Carp;
plan skip_all => 'not win32' unless $^O eq 'MSWin32';
my ($ignore, $major, $minor, $build, $id) = Win32::GetOSVersion();
plan skip_all => "WinXP or later"
unless $id >= 2 && ($major > 5 || $major == 5 && $minor >= 1);
-plan tests => 9;
+plan tests => 3;
my $tmp_base = catdir(
curdir(),
@@ -34,29 +30,3 @@ ok(-d $UNC_path, 'mkpath on Win32 UNC path made dir');
my $removed = rmtree($UNC_path);
cmp_ok($removed, '>', 0, "removed $removed entries from $UNC_path");
-
-{
- my ($least_deep, $next_deepest, $deepest) =
- create_3_level_subdirs( qw| d e f | );
- my (@created, $error);
- my $user = join('_' => 'foobar', $$);
- {
- my $warn;
- $SIG{__WARN__} = sub { $warn = shift };
-
- @created = mkpath($deepest, { mode => 0711, user => $user, error => \$error });
- like($warn,
- qr/Option\(s\) implausible on Win32 passed to mkpath\(\) or make_path\(\)/,
- 'make_path with final hashref warned due to options implausible on Win32'
- );
- TODO: {
- local $TODO = "Notwithstanding the Win32-implausible 'user', mkpath will actually create subdirectories; should it?";
- is(scalar(@created), 0, "No subdirectories created");
- }
- is(scalar(@created), 3, "3 subdirectories created");
- is(scalar(@$error), 0, "no error condition" );
- }
-
- cleanup_3_level_subdirs($least_deep);
-}
-
diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/private/MakeUtil.pm b/gnu/usr.bin/perl/cpan/IO-Compress/private/MakeUtil.pm
index 9d7e5ed262d..47aebd60743 100644
--- a/gnu/usr.bin/perl/cpan/IO-Compress/private/MakeUtil.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Compress/private/MakeUtil.pm
@@ -35,8 +35,7 @@ sub MY::libscan
my $path = shift;
return undef
- if $path =~ /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/ ||
- $path =~ /(~|\.bak|_bak)$/ ||
+ if $path =~ /(~|\.bak|_bak)$/ ||
$path =~ /\..*\.sw(o|p)$/ ||
$path =~ /\B\.svn\b/;
diff --git a/gnu/usr.bin/perl/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm b/gnu/usr.bin/perl/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm
index 5a5ee7d204a..3266fab792a 100644
--- a/gnu/usr.bin/perl/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm
+++ b/gnu/usr.bin/perl/cpan/IO-Socket-IP/lib/IO/Socket/IP.pm
@@ -7,7 +7,7 @@ package IO::Socket::IP;
# $VERSION needs to be set before use base 'IO::Socket'
# - https://rt.cpan.org/Ticket/Display.html?id=92107
BEGIN {
- $VERSION = '0.39';
+ $VERSION = '0.37';
}
use strict;
@@ -31,7 +31,7 @@ use Socket 1.97 qw(
my $AF_INET6 = eval { Socket::AF_INET6() }; # may not be defined
my $AI_ADDRCONFIG = eval { Socket::AI_ADDRCONFIG() } || 0;
use POSIX qw( dup2 );
-use Errno qw( EINVAL EINPROGRESS EISCONN ENOTCONN ETIMEDOUT EWOULDBLOCK EOPNOTSUPP );
+use Errno qw( EINVAL EINPROGRESS EISCONN ENOTCONN ETIMEDOUT EWOULDBLOCK );
use constant HAVE_MSWIN32 => ( $^O eq "MSWin32" );
@@ -154,7 +154,7 @@ sub import
if( setsockopt $testsock, IPPROTO_IPV6, IPV6_V6ONLY, 0 ) {
return $can_disable_v6only = 1;
}
- elsif( $! == EINVAL || $! == EOPNOTSUPP ) {
+ elsif( $! == EINVAL ) {
return $can_disable_v6only = 0;
}
else {
@@ -265,22 +265,6 @@ If true, set the C<SO_REUSEPORT> sockopt (not all OSes implement this sockopt)
If true, set the C<SO_BROADCAST> sockopt
-=item Sockopts => ARRAY
-
-An optional array of other socket options to apply after the three listed
-above. The value is an ARRAY containing 2- or 3-element ARRAYrefs. Each inner
-array relates to a single option, giving the level and option name, and an
-optional value. If the value element is missing, it will be given the value of
-a platform-sized integer 1 constant (i.e. suitable to enable most of the
-common boolean options).
-
-For example, both options given below are equivalent to setting C<ReuseAddr>.
-
- Sockopts => [
- [ SOL_SOCKET, SO_REUSEADDR ],
- [ SOL_SOCKET, SO_REUSEADDR, pack( "i", 1 ) ],
- ]
-
=item V6Only => BOOL
If defined, set the C<IPV6_V6ONLY> sockopt when creating C<PF_INET6> sockets
@@ -520,27 +504,10 @@ sub _io_socket_ip__configure
}
}
- my $INT_1 = pack "i", 1;
-
my @sockopts_enabled;
- push @sockopts_enabled, [ SOL_SOCKET, SO_REUSEADDR, $INT_1 ] if $arg->{ReuseAddr};
- push @sockopts_enabled, [ SOL_SOCKET, SO_REUSEPORT, $INT_1 ] if $arg->{ReusePort};
- push @sockopts_enabled, [ SOL_SOCKET, SO_BROADCAST, $INT_1 ] if $arg->{Broadcast};
-
- if( my $sockopts = $arg->{Sockopts} ) {
- ref $sockopts eq "ARRAY" or croak "Expected 'Sockopts' to be an ARRAY ref";
- foreach ( @$sockopts ) {
- ref $_ eq "ARRAY" or croak "Bad Sockopts item - expected ARRAYref";
- @$_ >= 2 and @$_ <= 3 or
- croak "Bad Sockopts item - expected 2 or 3 elements";
-
- my ( $level, $optname, $value ) = @$_;
- # TODO: consider more sanity checking on argument values
-
- defined $value or $value = $INT_1;
- push @sockopts_enabled, [ $level, $optname, $value ];
- }
- }
+ push @sockopts_enabled, SO_REUSEADDR if $arg->{ReuseAddr};
+ push @sockopts_enabled, SO_REUSEPORT if $arg->{ReusePort};
+ push @sockopts_enabled, SO_BROADCAST if $arg->{Broadcast};
my $blocking = $arg->{Blocking};
defined $blocking or $blocking = 1;
@@ -640,8 +607,7 @@ sub setup
$self->blocking( 0 ) unless ${*$self}{io_socket_ip_blocking};
foreach my $sockopt ( @{ ${*$self}{io_socket_ip_sockopts} } ) {
- my ( $level, $optname, $value ) = @$sockopt;
- $self->setsockopt( $level, $optname, $value ) or ( $@ = "$!", return undef );
+ $self->setsockopt( SOL_SOCKET, $sockopt, pack "i", 1 ) or ( $@ = "$!", return undef );
}
if( defined ${*$self}{io_socket_ip_v6only} and defined $AF_INET6 and $info->{family} == $AF_INET6 ) {
@@ -719,7 +685,6 @@ sub connect :method
}
elsif( not( $err == EINPROGRESS or $err == EWOULDBLOCK ) ) {
# Failed for some other reason
- $self->blocking( $was_blocking );
return undef;
}
elsif( !$was_blocking ) {
@@ -729,7 +694,6 @@ sub connect :method
my $vec = ''; vec( $vec, $self->fileno, 1 ) = 1;
if( !select( undef, $vec, $vec, $timeout ) ) {
- $self->blocking( $was_blocking );
$! = ETIMEDOUT;
return undef;
}
diff --git a/gnu/usr.bin/perl/cpan/IO-Socket-IP/t/11sockopts.t b/gnu/usr.bin/perl/cpan/IO-Socket-IP/t/11sockopts.t
index 5b850924dd5..90f92ae7bd8 100644
--- a/gnu/usr.bin/perl/cpan/IO-Socket-IP/t/11sockopts.t
+++ b/gnu/usr.bin/perl/cpan/IO-Socket-IP/t/11sockopts.t
@@ -24,17 +24,6 @@ TODO: {
) or die "Cannot socket() - $@";
ok( $sock->getsockopt( SOL_SOCKET, SO_REUSEADDR ), 'SO_REUSEADDR set' );
-
- $sock = IO::Socket::IP->new(
- LocalHost => "127.0.0.1",
- Type => SOCK_STREAM,
- Listen => 1,
- Sockopts => [
- [ SOL_SOCKET, SO_REUSEADDR ],
- ],
- ) or die "Cannot socket() - $@";
-
- ok( $sock->getsockopt( SOL_SOCKET, SO_REUSEADDR ), 'SO_REUSEADDR set via Sockopts' );
}
SKIP: {
diff --git a/gnu/usr.bin/perl/cpan/NEXT/lib/NEXT.pm b/gnu/usr.bin/perl/cpan/NEXT/lib/NEXT.pm
index 72dbee8c51c..a77bb387433 100644
--- a/gnu/usr.bin/perl/cpan/NEXT/lib/NEXT.pm
+++ b/gnu/usr.bin/perl/cpan/NEXT/lib/NEXT.pm
@@ -190,7 +190,7 @@ __END__
=head1 NAME
-NEXT - Provide a pseudo-class NEXT (et al) that allows method redispatch
+NEXT.pm - Provide a pseudo-class NEXT (et al) that allows method redispatch
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/PlainText.pm b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/PlainText.pm
index 03252e93c71..3db4d903cd6 100644
--- a/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/PlainText.pm
+++ b/gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/PlainText.pm
@@ -139,19 +139,6 @@ sub initialize {
return $self->SUPER::initialize;
}
-# pod2text and pod2man re-use the same parser on a list of files,
-# and will lose some information if some intermediate documents produce
-# unbalanced calls to begin_cmd/end_cmd.
-# via r1.4 of OpenBSD src/gnu/usr.bin/perl/lib/Pod/PlainText.pm
-sub begin_pod {
- my $self = shift;
-
- $$self{VERBATIM} = 0;
- $$self{EXCLUDE} = 0;
-
- return $self->SUPER::begin_pod(@_);
-}
-
############################################################################
# Core overrides
diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL b/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL
index fce84965200..347197ab440 100644
--- a/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL
+++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL
@@ -13,7 +13,7 @@ if ($] < 5.008) {
}
# create a lib/ dir in order to avoid warnings in Test::Distribution
-mkdir "lib", $ENV{PERL_CORE} ? 0770 : 0755;
+mkdir "lib", 0755;
# virtual paths given to EU::MM
my %virtual_path = ( 'Syslog.pm' => '$(INST_LIBDIR)/Syslog.pm' );
diff --git a/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm b/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm
index 4fbb1bc6315..f1a5780a0b9 100644
--- a/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm
+++ b/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm
@@ -1508,7 +1508,7 @@ C<extract_tagged> returns the complete text up to the point of failure.
If the string is "PARA", C<extract_tagged> returns only the first paragraph
after the tag (up to the first line that is either empty or contains
only whitespace characters).
-If the string is "", the default behaviour (i.e. failure) is reinstated.
+If the string is "", the the default behaviour (i.e. failure) is reinstated.
For example, suppose the start tag "/para" introduces a paragraph, which then
continues until the next "/endpara" tag or until another "/para" tag is
diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm
index f014b3183e9..b739559551d 100644
--- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm
+++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm
@@ -896,8 +896,6 @@ sub devise_title {
$cut = $i + 1;
$cut++ if ($dirs[$i + 1] && $dirs[$i + 1] eq 'lib');
last;
- } elsif ($dirs[$i] eq 'lib' && $dirs[$i + 1] && $dirs[0] eq 'ext') {
- $cut = $i + 1;
}
}
if ($cut > 0) {
diff --git a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL
index 618626b74e4..f40c126e562 100644
--- a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL
+++ b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL
@@ -73,12 +73,11 @@ my $stdin;
# Parse our options, trying to retain backward compatibility with pod2man but
# allowing short forms as well. --lax is currently ignored.
my %options;
-$options{utf8} = 1;
Getopt::Long::config ('bundling_override');
GetOptions (\%options, 'center|c=s', 'date|d=s', 'errors=s', 'fixed=s',
'fixedbold=s', 'fixeditalic=s', 'fixedbolditalic=s', 'help|h',
'lax|l', 'name|n=s', 'nourls', 'official|o', 'quotes|q=s',
- 'release|r=s', 'section|s=s', 'stderr', 'verbose|v', 'utf8|u!')
+ 'release|r=s', 'section|s=s', 'stderr', 'verbose|v', 'utf8|u')
or exit 1;
pod2usage (0) if $options{help};
@@ -124,7 +123,7 @@ exit $status;
__END__
=for stopwords
-en em --stderr stderr --no-utf8 UTF-8 overdo markup MT-LEVEL Allbery Solaris
+en em --stderr stderr --utf8 UTF-8 overdo markup MT-LEVEL Allbery Solaris
URL troff troff-specific formatters uppercased Christiansen --nourls UTC
prepend
@@ -138,7 +137,7 @@ pod2man [B<--center>=I<string>] [B<--date>=I<string>] [B<--errors>=I<style>]
[B<--fixed>=I<font>] [B<--fixedbold>=I<font>] [B<--fixeditalic>=I<font>]
[B<--fixedbolditalic>=I<font>] [B<--name>=I<name>] [B<--nourls>]
[B<--official>] [B<--quotes>=I<quotes>] [B<--release>=I<version>]
- [B<--section>=I<manext>] [B<--stderr>] [B<--no-utf8>] [B<--verbose>]
+ [B<--section>=I<manext>] [B<--stderr>] [B<--utf8>] [B<--verbose>]
[I<input> [I<output>] ...]
pod2man B<--help>
@@ -324,10 +323,19 @@ to C<--errors=stderr> and is supported for backward compatibility.
=item B<-u>, B<--utf8>
-This option allows B<pod2man> to output literal UTF-8 characters.
-On OpenBSD, it is enabled by default and can be disabled with
-B<--no-utf8>, in which case non-ASCII characters are converted
-either to *roff escape sequences or to C<X>.
+By default, B<pod2man> produces the most conservative possible *roff
+output to try to ensure that it will work with as many different *roff
+implementations as possible. Many *roff implementations cannot handle
+non-ASCII characters, so this means all non-ASCII characters are converted
+either to a *roff escape sequence that tries to create a properly accented
+character (at least for troff output) or to C<X>.
+
+This option says to instead output literal UTF-8 characters. If your
+*roff implementation can handle it, this is the best output format to use
+and avoids corruption of documents containing non-ASCII characters.
+However, be warned that *roff source with literal UTF-8 characters is not
+supported by many implementations and may even result in segfaults and
+other bad behavior.
Be aware that, when using this option, the input encoding of your POD
source should be properly declared unless it's US-ASCII. Pod::Simple will
diff --git a/gnu/usr.bin/perl/deb.c b/gnu/usr.bin/perl/deb.c
index 37dcdded903..02a0a7d17ce 100644
--- a/gnu/usr.bin/perl/deb.c
+++ b/gnu/usr.bin/perl/deb.c
@@ -234,7 +234,7 @@ Perl_deb_stack_all(pTHX)
PerlIO_printf(Perl_debug_log, "\n");
else {
- /* Find the current context's stack range by searching
+ /* Find the the current context's stack range by searching
* forward for any higher contexts using this stack; failing
* that, it will be equal to the size of the stack for old
* stacks, or PL_stack_sp for the current stack
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/Changes b/gnu/usr.bin/perl/dist/Module-CoreList/Changes
index 995f5322fb1..c0c5ff18f8c 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/Changes
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/Changes
@@ -1,6 +1,21 @@
+5.20170922_24
+ - Updated for v5.24.3
+
+5.20170920
+ - Updated for v5.27.4
+
+5.20170821
+ - Updated for v5.27.3
+
+5.20170720
+ - Updated for v5.27.2
+
5.20170715_24
- Updated for v5.24.2
+5.20170715_22
+ - Updated for v5.22.4
+
5.20170621
- Updated for v5.27.1
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
index 7b14b378274..a3a37adeb27 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList.pm
@@ -4,7 +4,7 @@ use vars qw/$VERSION %released %version %families %upstream
%bug_tracker %deprecated %delta/;
use Module::CoreList::TieHashDelta;
use version;
-$VERSION = '5.20170715_24';
+$VERSION = '5.20170922_24';
sub _released_order { # Sort helper, to make '?' sort after everything else
(substr($released{$a}, 0, 1) eq "?")
@@ -311,7 +311,12 @@ sub changes_between {
5.026000 => '2017-05-30',
5.027000 => '2017-05-31',
5.027001 => '2017-06-20',
+ 5.022004 => '2017-07-15',
5.024002 => '2017-07-15',
+ 5.027002 => '2017-07-20',
+ 5.027003 => '2017-08-21',
+ 5.027004 => '2017-09-20',
+ 5.024003 => '2017-09-22',
);
for my $version ( sort { $a <=> $b } keys %released ) {
@@ -14263,6 +14268,19 @@ for my $version ( sort { $a <=> $b } keys %released ) {
removed => {
}
},
+ 5.022004 => {
+ delta_from => 5.022003,
+ changed => {
+ 'B::Op_private' => '5.022004',
+ 'Config' => '5.022004',
+ 'Module::CoreList' => '5.20170715_22',
+ 'Module::CoreList::TieHashDelta'=> '5.20170715_22',
+ 'Module::CoreList::Utils'=> '5.20170715_22',
+ 'base' => '2.22_01',
+ },
+ removed => {
+ }
+ },
5.024002 => {
delta_from => 5.024001,
changed => {
@@ -14276,6 +14294,148 @@ for my $version ( sort { $a <=> $b } keys %released ) {
removed => {
}
},
+ 5.027002 => {
+ delta_from => 5.027001,
+ changed => {
+ 'B::Op_private' => '5.027002',
+ 'Carp' => '1.43',
+ 'Carp::Heavy' => '1.43',
+ 'Config' => '5.027002',
+ 'Cwd' => '3.68',
+ 'Encode' => '2.92',
+ 'Encode::Alias' => '2.23',
+ 'Encode::CN::HZ' => '2.09',
+ 'Encode::Encoding' => '2.08',
+ 'Encode::GSM0338' => '2.07',
+ 'Encode::Guess' => '2.07',
+ 'Encode::JP::JIS7' => '2.07',
+ 'Encode::KR::2022_KR' => '2.04',
+ 'Encode::MIME::Header' => '2.27',
+ 'Encode::MIME::Header::ISO_2022_JP'=> '1.09',
+ 'Encode::Unicode' => '2.16',
+ 'Encode::Unicode::UTF7' => '2.10',
+ 'ExtUtils::CBuilder' => '0.280228',
+ 'ExtUtils::CBuilder::Base'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::Unix'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::VMS'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::Windows'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::aix'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::android'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::darwin'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280228',
+ 'ExtUtils::CBuilder::Platform::os2'=> '0.280228',
+ 'File::Glob' => '1.29',
+ 'File::Spec' => '3.68',
+ 'File::Spec::AmigaOS' => '3.68',
+ 'File::Spec::Cygwin' => '3.68',
+ 'File::Spec::Epoc' => '3.68',
+ 'File::Spec::Functions' => '3.68',
+ 'File::Spec::Mac' => '3.68',
+ 'File::Spec::OS2' => '3.68',
+ 'File::Spec::Unix' => '3.68',
+ 'File::Spec::VMS' => '3.68',
+ 'File::Spec::Win32' => '3.68',
+ 'List::Util' => '1.48',
+ 'List::Util::XS' => '1.48',
+ 'Math::BigRat' => '0.2613',
+ 'Module::CoreList' => '5.20170720',
+ 'Module::CoreList::TieHashDelta'=> '5.20170720',
+ 'Module::CoreList::Utils'=> '5.20170720',
+ 'Opcode' => '1.40',
+ 'POSIX' => '1.77',
+ 'PerlIO::scalar' => '0.29',
+ 'Scalar::Util' => '1.48',
+ 'Sub::Util' => '1.48',
+ 'Time::HiRes' => '1.9743',
+ 'Time::Piece' => '1.3201',
+ 'Time::Seconds' => '1.3201',
+ 'Unicode' => '10.0.0',
+ 'XS::APItest' => '0.90',
+ 'arybase' => '0.13',
+ 'encoding' => '2.20',
+ 'feature' => '1.49',
+ 're' => '0.35',
+ },
+ removed => {
+ }
+ },
+ 5.027003 => {
+ delta_from => 5.027002,
+ changed => {
+ 'B' => '1.69',
+ 'B::Concise' => '1.001',
+ 'B::Debug' => '1.25',
+ 'B::Deparse' => '1.42',
+ 'B::Op_private' => '5.027003',
+ 'Config' => '5.027003',
+ 'Data::Dumper' => '2.167_02',
+ 'Devel::Peek' => '1.27',
+ 'ExtUtils::Constant' => '0.24',
+ 'ExtUtils::Constant::Base'=> '0.06',
+ 'ExtUtils::Constant::ProxySubs'=> '0.09',
+ 'ExtUtils::Constant::Utils'=> '0.04',
+ 'ExtUtils::ParseXS' => '3.35',
+ 'ExtUtils::ParseXS::Constants'=> '3.35',
+ 'ExtUtils::ParseXS::CountLines'=> '3.35',
+ 'ExtUtils::ParseXS::Eval'=> '3.35',
+ 'ExtUtils::ParseXS::Utilities'=> '3.35',
+ 'ExtUtils::Typemaps' => '3.35',
+ 'ExtUtils::Typemaps::Cmd'=> '3.35',
+ 'ExtUtils::Typemaps::InputMap'=> '3.35',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.35',
+ 'ExtUtils::Typemaps::Type'=> '3.35',
+ 'Filter::Simple' => '0.94',
+ 'Module::CoreList' => '5.20170821',
+ 'Module::CoreList::TieHashDelta'=> '5.20170821',
+ 'Module::CoreList::Utils'=> '5.20170821',
+ 'SelfLoader' => '1.24',
+ 'Storable' => '2.64',
+ 'XS::APItest' => '0.91',
+ 'base' => '2.26',
+ 'threads' => '2.17',
+ 'utf8' => '1.20',
+ },
+ removed => {
+ }
+ },
+ 5.027004 => {
+ delta_from => 5.027003,
+ changed => {
+ 'B::Op_private' => '5.027004',
+ 'Config' => '5.027004',
+ 'File::Glob' => '1.30',
+ 'I18N::Langinfo' => '0.14',
+ 'Module::CoreList' => '5.20170920',
+ 'Module::CoreList::TieHashDelta'=> '5.20170920',
+ 'Module::CoreList::Utils'=> '5.20170920',
+ 'Term::ReadLine' => '1.17',
+ 'VMS::Stdio' => '2.42',
+ 'XS::APItest' => '0.92',
+ 'attributes' => '0.31',
+ 'sort' => '2.03',
+ 'threads' => '2.18',
+ },
+ removed => {
+ }
+ },
+ 5.024003 => {
+ delta_from => 5.024002,
+ changed => {
+ 'B::Op_private' => '5.024003',
+ 'Config' => '5.024003',
+ 'Module::CoreList' => '5.20170922_24',
+ 'Module::CoreList::TieHashDelta'=> '5.20170922_24',
+ 'Module::CoreList::Utils'=> '5.20170922_24',
+ 'POSIX' => '1.65_01',
+ 'Time::HiRes' => '1.9741',
+ },
+ removed => {
+ }
+ },
);
sub is_core
@@ -15055,6 +15215,13 @@ for my $version (sort { $a <=> $b } keys %delta) {
removed => {
}
},
+ 5.022004 => {
+ delta_from => 5.022003,
+ changed => {
+ },
+ removed => {
+ }
+ },
5.024002 => {
delta_from => 5.024001,
changed => {
@@ -15062,6 +15229,35 @@ for my $version (sort { $a <=> $b } keys %delta) {
removed => {
}
},
+ 5.027002 => {
+ delta_from => 5.027001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027003 => {
+ delta_from => 5.027002,
+ changed => {
+ 'B::Debug' => '1',
+ },
+ removed => {
+ }
+ },
+ 5.027004 => {
+ delta_from => 5.027003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.024003 => {
+ delta_from => 5.024002,
+ changed => {
+ },
+ removed => {
+ }
+ },
);
for my $version (sort { $a <=> $b } keys %deprecated) {
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
index 80af77e0645..cdb1df78528 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;
use strict;
use vars qw($VERSION);
-$VERSION = '5.20170715_24';
+$VERSION = '5.20170922_24';
sub TIEHASH {
my ($class, $changed, $removed, $parent) = @_;
diff --git a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
index cb79cd4bcad..5fc8645cf1c 100644
--- a/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
+++ b/gnu/usr.bin/perl/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
@@ -6,7 +6,7 @@ use vars qw[$VERSION %utilities];
use Module::CoreList;
use Module::CoreList::TieHashDelta;
-$VERSION = '5.20170715_24';
+$VERSION = '5.20170922_24';
sub utilities {
my $perl = shift;
@@ -1278,6 +1278,13 @@ my %delta = (
removed => {
}
},
+ 5.022004 => {
+ delta_from => 5.022003,
+ changed => {
+ },
+ removed => {
+ }
+ },
5.024002 => {
delta_from => 5.024001,
changed => {
@@ -1285,6 +1292,34 @@ my %delta = (
removed => {
}
},
+ 5.027002 => {
+ delta_from => 5.027001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027003 => {
+ delta_from => 5.027002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.027004 => {
+ delta_from => 5.027003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.024003 => {
+ delta_from => 5.024002,
+ changed => {
+ },
+ removed => {
+ }
+ },
);
for my $version (sort { $a <=> $b } keys %delta) {
diff --git a/gnu/usr.bin/perl/dist/Time-HiRes/Changes b/gnu/usr.bin/perl/dist/Time-HiRes/Changes
index 9d097c585ee..c2ad5a53029 100644
--- a/gnu/usr.bin/perl/dist/Time-HiRes/Changes
+++ b/gnu/usr.bin/perl/dist/Time-HiRes/Changes
@@ -1,5 +1,74 @@
Revision history for the Perl extension Time::HiRes.
+1.9741 [2016-11-20]
+ - C++11 compatibility: blead a914236c
+ - El Capitan compatibility: blead 45bbc013
+ - use CLOCK_REALTIME for clock_nanosleep scan: blead 56ed632c
+ - include file consistency in scans: blead 605b4dbe
+ - use clockid_t consistently: blead 2979fdf3
+ - use hv_fetchs(): blead 07e4dd7a
+ - scan for clockid_t (needed for macos Sierra): blead 69d1f2c2
+ - darwin lacks clockid_t: blead d1e7b5aa
+ [rt.cpan.org #129789]
+ - provide template for tempfile: blead 91dca83e
+ - explicit cast for clockid_t in C++11: blead 1c566547
+ - upgrade to a newer ppport (3.35)
+
+1.9740 [2016-09-25]
+ - the ext3/ext2 filesystems do not have subsecond resolution,
+ therefore skip the t/utime.t test
+ [rt.cpan.org #116127]
+
+1.9739 [2016-06-28]
+ - the upcoming macOS 10.12 (Sierra, the operating system formerly
+ known as OS X, or Darwin) has implemented the clock_gettime()
+ and clock_getres() interfaces but not the clock_nanosleep()
+
+1.9738 [2016-06-26]
+ - fix the dates in the Changes, it's not July yet
+ [rt.cpan.org #115553]
+ - in cygwin, drop the utime.t expected timestamp resolution
+ - documented for utime that the actual timestamp resolution depends
+ on the operating system and the filesystem, just like for stat
+ - looks like in gnukfreebsd 10.1 neither futimens or utimensat work
+ even though they exist, skipping utime tests there for now
+ - demodernize the Test::More use in utime.t (no subtest) to
+ better support older Perl installations
+ - for all the tests, drop the Test::More 0.82 requirement,
+ the only "modern" thing used is the note routine which
+ can be replaced with print("# ...\n") (or printf),
+ with this works back at least with Test::More 0.54 (perl 5.8.7)
+
+1.9737 [2016-06-22]
+ - utime in HiRes.xs had dXSARGS which was unnecessary, leading
+ to two markstack pops, panic, and two-minute wait for the watchdog
+ (thanks to Dave Mitchell for the eagle-eye)
+ - even though 5.10.x should have the Perl_ck_warner, many CPAN
+ smokes proved otherwise, so requiring now at least 5.12 for
+ Perl_ck_warner use in IS_SAFE_PATHNAME()
+
+1.9736 [2016-06-22]
+ - the IS_SAFE_PATHNAME() emulation was too modern for Perl 5.10
+ - make it so that only one value is set for -DTIME_HIRES_STAT
+ even on systems that support many options
+ - the 1.9734 (only released in blead, and as part of the development
+ release 5.25.2) fix for Darwin's clock_gettime was wrong under
+ threaded builds, leading into mutex panics in clock.t
+ - the d_hires_utime determination was made more precise
+ - the utime.t was failing in platforms where only one of
+ futimens/utimensat was present (neither or both was okay)
+
+1.9735 [2016-06-20]
+ - Time::HiRes should override `utime` to allow setting hires
+ (futimens and utimensat support)
+ [rt.perl.org #114809]
+ - the utime patch used IS_SAFE_PATHNAME() which isn't available in
+ too old Perls, so emulate (in case the Devel::PPPort is too old)
+
+1.9734 [2016-06-17]
+ - fix Darwins with clock_gettime: blead 2d41a263
+ [rt.perl.org #128427]
+
1.9733 [2016-04-23]
- C90 declaration-after-statement error with darwin threads: blead de1003b4
[rt.cpan.org #113856]
diff --git a/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm b/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm
index 2071e5e83dc..a3ddd595b74 100644
--- a/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm
+++ b/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.pm
@@ -28,7 +28,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
stat lstat utime
);
-our $VERSION = '1.9739';
+our $VERSION = '1.9741';
our $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -559,7 +559,7 @@ VMS have emulations for it.)
Here is an example of using C<NVtime> from C:
NV (*myNVtime)(); /* Returns -1 on failure. */
- SV **svp = hv_fetch(PL_modglobal, "Time::NVtime", 12, 0);
+ SV **svp = hv_fetchs(PL_modglobal, "Time::NVtime", 0);
if (!svp) croak("Time::HiRes is required");
if (!SvIOK(*svp)) croak("Time::NVtime isn't a function pointer");
myNVtime = INT2PTR(NV(*)(), SvIV(*svp));
diff --git a/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs b/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs
index 3a5c7a1d63c..6b0dba8e686 100644
--- a/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs
+++ b/gnu/usr.bin/perl/dist/Time-HiRes/HiRes.xs
@@ -87,6 +87,10 @@ extern "C" {
# undef ITIMER_REALPROF
#endif
+#ifndef TIME_HIRES_CLOCKID_T
+typedef int clockid_t;
+#endif
+
#if defined(TIME_HIRES_CLOCK_GETTIME) && defined(_STRUCT_ITIMERSPEC)
/* HP-UX has CLOCK_XXX values but as enums, not as defines.
@@ -803,7 +807,7 @@ static int darwin_time_init() {
}
#ifdef TIME_HIRES_CLOCK_GETTIME_EMULATION
-static int clock_gettime(int clock_id, struct timespec *ts) {
+static int th_clock_gettime(clockid_t clock_id, struct timespec *ts) {
if (darwin_time_init() && timebase_info.denom) {
switch (clock_id) {
case CLOCK_REALTIME:
@@ -834,10 +838,13 @@ static int clock_gettime(int clock_id, struct timespec *ts) {
SETERRNO(EINVAL, LIB_INVARG);
return -1;
}
+
+#define clock_gettime(clock_id, ts) th_clock_gettime((clock_id), (ts))
+
#endif /* TIME_HIRES_CLOCK_GETTIME_EMULATION */
#ifdef TIME_HIRES_CLOCK_GETRES_EMULATION
-static int clock_getres(int clock_id, struct timespec *ts) {
+static int th_clock_getres(clockid_t clock_id, struct timespec *ts) {
if (darwin_time_init() && timebase_info.denom) {
switch (clock_id) {
case CLOCK_REALTIME:
@@ -856,10 +863,12 @@ static int clock_getres(int clock_id, struct timespec *ts) {
SETERRNO(EINVAL, LIB_INVARG);
return -1;
}
+
+#define clock_getres(clock_id, ts) th_clock_getres((clock_id), (ts))
#endif /* TIME_HIRES_CLOCK_GETRES_EMULATION */
#ifdef TIME_HIRES_CLOCK_NANOSLEEP_EMULATION
-static int clock_nanosleep(int clock_id, int flags,
+static int th_clock_nanosleep(clockid_t clock_id, int flags,
const struct timespec *rqtp,
struct timespec *rmtp) {
if (darwin_time_init()) {
@@ -896,6 +905,10 @@ static int clock_nanosleep(int clock_id, int flags,
SETERRNO(EINVAL, LIB_INVARG);
return -1;
}
+
+#define clock_nanosleep(clock_id, flags, rqtp, rmtp) \
+ th_clock_nanosleep((clock_id), (flags), (rqtp), (rmtp))
+
#endif /* TIME_HIRES_CLOCK_NANOSLEEP_EMULATION */
#endif /* PERL_DARWIN */
@@ -1012,7 +1025,8 @@ usleep(useconds)
useconds -= NV_1E6 * seconds;
}
} else if (useconds < 0.0)
- croak("Time::HiRes::usleep(%"NVgf"): negative time not invented yet", useconds);
+ croak("Time::HiRes::usleep(%" NVgf
+ "): negative time not invented yet", useconds);
usleep((U32)useconds);
} else
PerlProc_pause();
@@ -1034,7 +1048,8 @@ nanosleep(nsec)
struct timespec sleepfor, unslept;
CODE:
if (nsec < 0.0)
- croak("Time::HiRes::nanosleep(%"NVgf"): negative time not invented yet", nsec);
+ croak("Time::HiRes::nanosleep(%" NVgf
+ "): negative time not invented yet", nsec);
nanosleep_init(nsec, &sleepfor, &unslept);
if (nanosleep(&sleepfor, &unslept) == 0) {
RETVAL = nsec;
@@ -1079,11 +1094,15 @@ sleep(...)
useconds = -(IV)useconds;
#endif /* #if defined(__sparc64__) && defined(__GNUC__) */
if ((IV)useconds < 0)
- croak("Time::HiRes::sleep(%"NVgf"): internal error: useconds < 0 (unsigned %"UVuf" signed %"IVdf")", seconds, useconds, (IV)useconds);
+ croak("Time::HiRes::sleep(%" NVgf
+ "): internal error: useconds < 0 (unsigned %" UVuf
+ " signed %" IVdf ")",
+ seconds, useconds, (IV)useconds);
}
usleep(useconds);
} else
- croak("Time::HiRes::sleep(%"NVgf"): negative time not invented yet", seconds);
+ croak("Time::HiRes::sleep(%" NVgf
+ "): negative time not invented yet", seconds);
} else
PerlProc_pause();
gettimeofday(&Tb, NULL);
@@ -1131,7 +1150,9 @@ ualarm(useconds,uinterval=0)
}
#else
if (useconds >= IV_1E6 || uinterval >= IV_1E6)
- croak("Time::HiRes::ualarm(%d, %d): useconds or uinterval equal to or more than %"IVdf, useconds, uinterval, IV_1E6);
+ croak("Time::HiRes::ualarm(%d, %d): useconds or uinterval"
+ " equal to or more than %" IVdf,
+ useconds, uinterval, IV_1E6);
RETVAL = ualarm(useconds, uinterval);
#endif
@@ -1144,7 +1165,8 @@ alarm(seconds,interval=0)
NV interval
CODE:
if (seconds < 0.0 || interval < 0.0)
- croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): negative time not invented yet", seconds, interval);
+ croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+ "): negative time not invented yet", seconds, interval);
{
IV iseconds = (IV)seconds;
IV iinterval = (IV)interval;
@@ -1152,7 +1174,9 @@ alarm(seconds,interval=0)
NV finterval = interval - iinterval;
IV useconds, uinterval;
if (fseconds >= 1.0 || finterval >= 1.0)
- croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): seconds or interval too large to split correctly", seconds, interval);
+ croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+ "): seconds or interval too large to split correctly",
+ seconds, interval);
useconds = IV_1E6 * fseconds;
uinterval = IV_1E6 * finterval;
#if defined(HAS_SETITIMER) && defined(ITIMER_REAL)
@@ -1172,7 +1196,9 @@ alarm(seconds,interval=0)
}
#else
if (iseconds || iinterval)
- croak("Time::HiRes::alarm(%"NVgf", %"NVgf"): seconds or interval equal to or more than 1.0 ", seconds, interval);
+ croak("Time::HiRes::alarm(%" NVgf ", %" NVgf
+ "): seconds or interval equal to or more than 1.0 ",
+ seconds, interval);
RETVAL = (NV)ualarm( useconds, uinterval ) / NV_1E6;
#endif
}
@@ -1300,7 +1326,9 @@ setitimer(which, seconds, interval = 0)
struct itimerval oldit;
PPCODE:
if (seconds < 0.0 || interval < 0.0)
- croak("Time::HiRes::setitimer(%"IVdf", %"NVgf", %"NVgf"): negative time not invented yet", (IV)which, seconds, interval);
+ croak("Time::HiRes::setitimer(%" IVdf ", %" NVgf ", %" NVgf
+ "): negative time not invented yet",
+ (IV)which, seconds, interval);
newit.it_value.tv_sec = (IV)seconds;
newit.it_value.tv_usec =
(IV)((seconds - (NV)newit.it_value.tv_sec) * NV_1E6);
@@ -1375,7 +1403,9 @@ PROTOTYPE: $$@
utbufp = NULL;
else {
if (SvNV(accessed) < 0.0 || SvNV(modified) < 0.0)
- croak("Time::HiRes::utime(%"NVgf", %"NVgf"): negative time not invented yet", SvNV(accessed), SvNV(modified));
+ croak("Time::HiRes::utime(%" NVgf ", %" NVgf
+ "): negative time not invented yet",
+ SvNV(accessed), SvNV(modified));
Zero(&utbuf, sizeof utbuf, char);
utbuf[0].tv_sec = (Time_t)SvNV(accessed); /* time accessed */
utbuf[0].tv_nsec = (long)( ( SvNV(accessed) - utbuf[0].tv_sec ) * 1e9 );
@@ -1431,7 +1461,7 @@ utime(accessed, modified, ...)
NV
clock_gettime(clock_id = CLOCK_REALTIME)
- int clock_id
+ clockid_t clock_id
PREINIT:
struct timespec ts;
int status = -1;
@@ -1450,7 +1480,7 @@ clock_gettime(clock_id = CLOCK_REALTIME)
NV
clock_gettime(clock_id = 0)
- int clock_id
+ clockid_t clock_id
CODE:
PERL_UNUSED_ARG(clock_id);
croak("Time::HiRes::clock_gettime(): unimplemented in this platform");
@@ -1464,7 +1494,7 @@ clock_gettime(clock_id = 0)
NV
clock_getres(clock_id = CLOCK_REALTIME)
- int clock_id
+ clockid_t clock_id
PREINIT:
int status = -1;
struct timespec ts;
@@ -1483,7 +1513,7 @@ clock_getres(clock_id = CLOCK_REALTIME)
NV
clock_getres(clock_id = 0)
- int clock_id
+ clockid_t clock_id
CODE:
PERL_UNUSED_ARG(clock_id);
croak("Time::HiRes::clock_getres(): unimplemented in this platform");
@@ -1497,14 +1527,15 @@ clock_getres(clock_id = 0)
NV
clock_nanosleep(clock_id, nsec, flags = 0)
- int clock_id
+ clockid_t clock_id
NV nsec
int flags
PREINIT:
struct timespec sleepfor, unslept;
CODE:
if (nsec < 0.0)
- croak("Time::HiRes::clock_nanosleep(..., %"NVgf"): negative time not invented yet", nsec);
+ croak("Time::HiRes::clock_nanosleep(..., %" NVgf
+ "): negative time not invented yet", nsec);
nanosleep_init(nsec, &sleepfor, &unslept);
if (clock_nanosleep(clock_id, flags, &sleepfor, &unslept) == 0) {
RETVAL = nsec;
@@ -1518,7 +1549,7 @@ clock_nanosleep(clock_id, nsec, flags = 0)
NV
clock_nanosleep(clock_id, nsec, flags = 0)
- int clock_id
+ clockid_t clock_id
NV nsec
int flags
CODE:
diff --git a/gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL b/gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL
index 1c1ce1f4dea..9060fa20f35 100644
--- a/gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL
+++ b/gnu/usr.bin/perl/dist/Time-HiRes/Makefile.PL
@@ -290,6 +290,7 @@ sub has_clock_xxx_syscall {
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
+#include <time.h>
#include <$SYSCALL_H>
int main(int argc, char** argv)
{
@@ -309,6 +310,7 @@ sub has_clock_xxx {
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
+#include <time.h>
int main(int argc, char** argv)
{
struct timespec ts;
@@ -325,6 +327,7 @@ sub has_clock {
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
+#include <time.h>
int main(int argc, char** argv)
{
clock_t tictoc;
@@ -348,7 +351,8 @@ int main(int argc, char** argv)
struct timespec ts2;
ts1.tv_sec = 0;
ts1.tv_nsec = 750000000;;
- ret = clock_nanosleep(CLOCK_MONOTONIC, 0, &ts1, &ts2);
+ /* All implementations are supposed to support CLOCK_REALTIME. */
+ ret = clock_nanosleep(CLOCK_REALTIME, 0, &ts1, &ts2);
ret == 0 ? exit(0) : exit(errno ? errno : -1);
}
EOM
@@ -360,7 +364,7 @@ sub has_futimens {
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
-#include <sys/time.h>
+#include <sys/stat.h>
int main(int argc, char** argv)
{
int ret;
@@ -377,7 +381,7 @@ sub has_utimensat{
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
-#include <sys/time.h>
+#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char** argv)
{
@@ -389,6 +393,21 @@ int main(int argc, char** argv)
EOM
}
+sub has_clockid_t{
+ return 1 if
+ try_compile_and_link(<<EOM);
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include <time.h>
+int main(int argc, char** argv)
+{
+ clockid_t id = CLOCK_REALTIME;
+ exit(id == CLOCK_REALTIME ? 1 : 0);
+}
+EOM
+}
+
sub DEFINE {
my ($def, $val) = @_;
my $define = defined $val ? "$def=$val" : $def ;
@@ -569,6 +588,16 @@ EOD
print "(It would not be portable anyway.)\n";
}
+ print "Looking for clockid_t... ";
+ my $has_clockid_t;
+ if (has_clockid_t()) {
+ print "found.\n";
+ $has_clockid_t++;
+ $DEFINE .= ' -DTIME_HIRES_CLOCKID_T';
+ } else {
+ print "NOT found, will use int.\n";
+ }
+
print "Looking for clock_gettime()... ";
my $has_clock_gettime;
my $has_clock_gettime_emulation;
diff --git a/gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t b/gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t
index ede2e78f85b..e64f99bfbe2 100644
--- a/gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t
+++ b/gnu/usr.bin/perl/dist/Time-HiRes/t/utime.t
@@ -3,6 +3,7 @@ use strict;
BEGIN {
require Time::HiRes;
require Test::More;
+ require File::Temp;
unless(&Time::HiRes::d_hires_utime) {
Test::More::plan(skip_all => "no hires_utime");
}
@@ -15,6 +16,35 @@ BEGIN {
if ($^O eq 'gnukfreebsd') {
Test::More::plan(skip_all => "futimens() and utimensat() not working in $^O");
}
+ if ($^O eq 'linux' && -e '/proc/mounts') {
+ # The linux might be wrong when ext3
+ # is available in other operating systems,
+ # but then we need other methods for detecting
+ # the filesystem type of the tempfiles.
+ my ($fh, $fn) = File::Temp::tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1);
+ sub getfstype {
+ my ($fn) = @_;
+ my $cmd = "df $fn";
+ open(my $df, "$cmd |") or die "$cmd: $!";
+ my @df = <$df>; # Assume $df[0] is header line.
+ my $dev = +(split(" ", $df[1]))[0];
+ open(my $mounts, "/proc/mounts") or die "/proc/mounts: $!";
+ while (<$mounts>) {
+ my @m = split(" ");
+ if ($m[0] eq $dev) { return $m[2] }
+ }
+ return;
+ }
+ my $fstype = getfstype($fn);
+ unless (defined $fstype) {
+ warn "Unknown fstype for $fn\n";
+ } else {
+ print "# fstype = $fstype\n";
+ if ($fstype eq 'ext3' || $fstype eq 'ext2') {
+ Test::More::plan(skip_all => "fstype $fstype has no subsecond timestamps in $^O");
+ }
+ }
+ }
}
use Test::More tests => 18;
@@ -23,9 +53,16 @@ use File::Temp qw( tempfile );
use Config;
-# Cygwin timestamps have less precision.
-my $atime = $^O eq 'cygwin' ? 1.1111111 : 1.111111111;
-my $mtime = $^O eq 'cygwin' ? 2.2222222 : 2.222222222;
+# Hope initially for nanosecond accuracy.
+my $atime = 1.111111111;
+my $mtime = 2.222222222;
+
+if ($^O eq 'cygwin') {
+ # Cygwin timestamps have less precision.
+ $atime = 1.1111111;
+ $mtime = 2.2222222;
+}
+print "# \$^O = $^O, atime = $atime, mtime = $mtime\n";
print "# utime \$fh\n";
{
diff --git a/gnu/usr.bin/perl/dist/Time-HiRes/typemap b/gnu/usr.bin/perl/dist/Time-HiRes/typemap
index 1124eb64838..3fa91f3a0b3 100644
--- a/gnu/usr.bin/perl/dist/Time-HiRes/typemap
+++ b/gnu/usr.bin/perl/dist/Time-HiRes/typemap
@@ -28,6 +28,8 @@ AV * T_AVREF
HV * T_HVREF
CV * T_CVREF
+clockid_t T_IV
+
IV T_IV
UV T_UV
NV T_NV
diff --git a/gnu/usr.bin/perl/dist/threads-shared/t/stress.t b/gnu/usr.bin/perl/dist/threads-shared/t/stress.t
index e3c1441288e..1dd95e39595 100755
--- a/gnu/usr.bin/perl/dist/threads-shared/t/stress.t
+++ b/gnu/usr.bin/perl/dist/threads-shared/t/stress.t
@@ -83,7 +83,7 @@ use threads::shared;
print "# Looping for $busycount iterations should take about 0.025s\n";
}
- my $TIMEOUT = 600;
+ my $TIMEOUT = 60;
my $mutex = 1;
share($mutex);
diff --git a/gnu/usr.bin/perl/doio.c b/gnu/usr.bin/perl/doio.c
index 856b19a12a2..67048627ac0 100644
--- a/gnu/usr.bin/perl/doio.c
+++ b/gnu/usr.bin/perl/doio.c
@@ -1845,18 +1845,8 @@ Perl_apply(pTHX_ I32 type, SV **mark, SV **sp)
int fd = PerlIO_fileno(IoIFP(GvIOn(gv)));
APPLY_TAINT_PROPER();
if (fd < 0) {
- SETERRNO(EBADF,RMS_IFI);
- tot--;
-#if Uid_t_sign == 1
- } else if (val < 0) {
- SETERRNO(EINVAL,LIB_INVARG);
- tot--;
-#endif
-#if Gid_t_sign == 1
- } else if (val2 < 0) {
- SETERRNO(EINVAL,LIB_INVARG);
+ SETERRNO(EBADF,RMS_IFI);
tot--;
-#endif
} else if (fchown(fd, val, val2))
tot--;
#else
diff --git a/gnu/usr.bin/perl/embed.fnc b/gnu/usr.bin/perl/embed.fnc
index d59eb35bc90..05f943cac81 100644
--- a/gnu/usr.bin/perl/embed.fnc
+++ b/gnu/usr.bin/perl/embed.fnc
@@ -2113,7 +2113,7 @@ s |OP* |doform |NN CV *cv|NN GV *gv|NULLOK OP *retop
# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
sR |int |dooneliner |NN const char *cmd|NN const char *filename
# endif
-s |SV * |space_join_names_mortal|NN char *const *array
+s |SV * |space_join_names_mortal|NULLOK char *const *array
#endif
p |OP * |tied_method|NN SV *methname|NN SV **sp \
|NN SV *const sv|NN const MAGIC *const mg \
@@ -2282,7 +2282,8 @@ Es |bool |put_charclass_bitmap_innards|NN SV* sv \
|NN char* bitmap \
|NULLOK SV* nonbitmap_invlist \
|NULLOK SV* only_utf8_locale_invlist\
- |NULLOK const regnode * const node
+ |NULLOK const regnode * const node \
+ |const bool force_as_is_display
Es |SV* |put_charclass_bitmap_innards_common \
|NN SV* invlist \
|NULLOK SV* posixes \
diff --git a/gnu/usr.bin/perl/embed.h b/gnu/usr.bin/perl/embed.h
index 5b2998d79ee..01dff42dec9 100644
--- a/gnu/usr.bin/perl/embed.h
+++ b/gnu/usr.bin/perl/embed.h
@@ -964,7 +964,7 @@
#define dump_trie_interim_list(a,b,c,d,e) S_dump_trie_interim_list(aTHX_ a,b,c,d,e)
#define dump_trie_interim_table(a,b,c,d,e) S_dump_trie_interim_table(aTHX_ a,b,c,d,e)
#define dumpuntil(a,b,c,d,e,f,g,h) S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
-#define put_charclass_bitmap_innards(a,b,c,d,e) S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e)
+#define put_charclass_bitmap_innards(a,b,c,d,e,f) S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e,f)
#define put_charclass_bitmap_innards_common(a,b,c,d,e,f) S_put_charclass_bitmap_innards_common(aTHX_ a,b,c,d,e,f)
#define put_charclass_bitmap_innards_invlist(a,b) S_put_charclass_bitmap_innards_invlist(aTHX_ a,b)
#define put_code_point(a,b) S_put_code_point(aTHX_ a,b)
diff --git a/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL b/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL
index 81bd54665a7..864af3ed8e2 100644
--- a/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL
+++ b/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL
@@ -65,8 +65,8 @@ sub MY::static {
return "
$object : \$(FIRST_MAKEFILE) \$(OBJECT)
- #\$(RM_RF) $object
- #\$(CP) \$(OBJECT) $object
+ \$(RM_RF) $object
+ \$(CP) \$(OBJECT) $object
static :: $object
";
diff --git a/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL b/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL
index a48c039fa88..a8adbf01218 100644
--- a/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL
+++ b/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL
@@ -1,7 +1,7 @@
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'NDBM_File',
- #LIBS => ["-L/usr/local/lib -lndbm", "-ldbm -lucb"],
+ LIBS => ["-L/usr/local/lib -lndbm", "-ldbm -lucb"],
XSPROTOARG => '-noprototypes', # XXX remove later?
VERSION_FROM => 'NDBM_File.pm',
INC => ($^O eq "MacOS" ? "-i ::::db:include" : "")
diff --git a/gnu/usr.bin/perl/ext/POSIX/POSIX.xs b/gnu/usr.bin/perl/ext/POSIX/POSIX.xs
index 281bea8bae1..5a82b8182ce 100644
--- a/gnu/usr.bin/perl/ext/POSIX/POSIX.xs
+++ b/gnu/usr.bin/perl/ext/POSIX/POSIX.xs
@@ -1153,7 +1153,7 @@ static NV my_trunc(NV x)
# define NV_PAYLOAD_TYPE NV
#endif
-#ifdef LONGDOUBLE_DOUBLEDOUBLE
+#if defined(USE_LONG_DOUBLE) && defined(LONGDOUBLE_DOUBLEDOUBLE)
# define NV_PAYLOAD_SIZEOF_ASSERT(a) assert(sizeof(a) == NVSIZE / 2)
#else
# define NV_PAYLOAD_SIZEOF_ASSERT(a) assert(sizeof(a) == NVSIZE)
diff --git a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm
index 05bdbbe7e6d..9731dc9a1af 100644
--- a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm
+++ b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm
@@ -4,7 +4,7 @@ use warnings;
our ($AUTOLOAD, %SIGRT);
-our $VERSION = '1.65';
+our $VERSION = '1.65_01';
require XSLoader;
diff --git a/gnu/usr.bin/perl/ext/POSIX/t/sigaction.t b/gnu/usr.bin/perl/ext/POSIX/t/sigaction.t
index b96812f3470..d19341c2461 100644
--- a/gnu/usr.bin/perl/ext/POSIX/t/sigaction.t
+++ b/gnu/usr.bin/perl/ext/POSIX/t/sigaction.t
@@ -202,7 +202,7 @@ SKIP: {
$skip{pid}{$^O} = $skip{uid}{$^O} = "not set for kill()"
if (($^O.$Config{osvers}) =~ /^darwin[0-8]\./
||
- ($^O.$Config{osvers}) =~ /^openbsd[0-6]\./);
+ ($^O.$Config{osvers}) =~ /^openbsd[0-5]\./);
my $tests = keys %{{ %siginfo, %opt_val }};
eval 'use POSIX qw(SA_SIGINFO); SA_SIGINFO';
skip("no SA_SIGINFO", $tests) if $@;
diff --git a/gnu/usr.bin/perl/hints/catamount.sh b/gnu/usr.bin/perl/hints/catamount.sh
index 6a514def2ed..41489355d5d 100644
--- a/gnu/usr.bin/perl/hints/catamount.sh
+++ b/gnu/usr.bin/perl/hints/catamount.sh
@@ -31,11 +31,11 @@
# mkdir -p /opt/perl-catamount
# mkdir -p /opt/perl-catamount/include
# mkdir -p /opt/perl-catamount/lib
-# mkdir -p /opt/perl-catamount/lib/perl5/5.24.2
+# mkdir -p /opt/perl-catamount/lib/perl5/5.24.3
# mkdir -p /opt/perl-catamount/bin
# cp *.h /opt/perl-catamount/include
# cp libperl.a /opt/perl-catamount/lib
-# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.24.2
+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.24.3
# cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib
#
# With the headers and the libperl.a you can embed Perl to your Catamount
diff --git a/gnu/usr.bin/perl/hints/openbsd.sh b/gnu/usr.bin/perl/hints/openbsd.sh
index c36b9acadae..6c366ec2d08 100644
--- a/gnu/usr.bin/perl/hints/openbsd.sh
+++ b/gnu/usr.bin/perl/hints/openbsd.sh
@@ -84,8 +84,6 @@ esac
# around for old NetBSD binaries.
libswanted=`echo $libswanted | sed 's/ crypt / /'`
-libswanted=`echo $libswanted | sed 's/ util / /'`
-
# Configure can't figure this out non-interactively
d_suidsafe=$define
@@ -103,13 +101,6 @@ m88k-3.4)
;;
esac
-# Special per-arch specific ccflags
-case "${ARCH}-${osvers}" in
- vax-*)
- ccflags="-DUSE_PERL_ATOF=0 $ccflags"
- ;;
-esac
-
# This script UU/usethreads.cbu will get 'called-back' by Configure
# after it has prompted the user for whether to use threads.
cat > UU/usethreads.cbu <<'EOCBU'
@@ -131,9 +122,6 @@ $define|true|[yY]*)
# Broken up to OpenBSD 3.6, fixed in OpenBSD 3.7
d_getservbyname_r=$undef ;;
esac
- ;;
-*)
- libswanted=`echo $libswanted | sed 's/ pthread / /'`
esac
EOCBU
@@ -152,12 +140,12 @@ case "$openbsd_distribution" in
siteprefix='/usr/local'
siteprefixexp='/usr/local'
# Ports installs non-std libs in /usr/local/lib so look there too
- locincpth=''
- loclibpth=''
+ locincpth='/usr/local/include'
+ loclibpth='/usr/local/lib'
# Link perl with shared libperl
- if [ "$usedl" = "$define" -a -r $src/shlib_version ]; then
+ if [ "$usedl" = "$define" -a -r shlib_version ]; then
useshrplib=true
- libperl=`. $src/shlib_version; echo libperl.so.${major}.${minor}`
+ libperl=`. ./shlib_version; echo libperl.so.${major}.${minor}`
fi
;;
esac
diff --git a/gnu/usr.bin/perl/hv.c b/gnu/usr.bin/perl/hv.c
index 7b5ad95878d..55234753ed9 100644
--- a/gnu/usr.bin/perl/hv.c
+++ b/gnu/usr.bin/perl/hv.c
@@ -2476,9 +2476,10 @@ Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
return;
}
if (
- count > 0 && (HEK_UTF8(*namep) || (flags & SVf_UTF8))
+ count > 0 && ((HEK_UTF8(*namep) || (flags & SVf_UTF8))
? hek_eq_pvn_flags(aTHX_ *namep, name, (I32)len, flags)
: (HEK_LEN(*namep) == (I32)len && memEQ(HEK_KEY(*namep), name, len))
+ )
) {
aux->xhv_name_count = -count;
}
diff --git a/gnu/usr.bin/perl/install_lib.pl b/gnu/usr.bin/perl/install_lib.pl
index 8ca801b00a6..ac17bd81d81 100644
--- a/gnu/usr.bin/perl/install_lib.pl
+++ b/gnu/usr.bin/perl/install_lib.pl
@@ -6,7 +6,7 @@
use strict;
use vars qw($Is_VMS $Is_W32 $Is_OS2 $Is_Cygwin $Is_Darwin $Is_NetWare $Is_AmigaOS
%opts $packlist);
-use subs qw(unlink link chmod chown);
+use subs qw(unlink link chmod);
require File::Path;
require File::Copy;
@@ -99,9 +99,6 @@ sub link {
unless -f $to and (chmod(0666, $to), unlink $to)
and File::Copy::copy($from, $to) and ++$success;
}
- if (defined($opts{uid}) || defined($opts{gid})) {
- chown($opts{uid}, $opts{gid}, $to) if $success;
- }
$packlist->{$xto} = { type => 'file' };
}
$success;
@@ -117,16 +114,6 @@ sub chmod {
unless $opts{notify};
}
-sub chown {
- my($uid,$gid,$name) = @_;
-
- return if ($^O eq 'dos');
- printf " chown %s:%s %s\n", $uid, $gid, $name if $opts{verbose};
- CORE::chown($uid,$gid,$name)
- || warn sprintf("Couldn't chown %s:%s %s: $!\n", $uid, $gid, $name)
- unless $opts{notify};
-}
-
sub samepath {
my($p1, $p2) = @_;
@@ -158,8 +145,7 @@ sub safe_rename {
}
sub mkpath {
- File::Path::make_path(shift, {owner=>$opts{uid}, group=>$opts{gid},
- mode=>0777, verbose=>$opts{verbose}}) unless $opts{notify};
+ File::Path::mkpath(shift , $opts{verbose}, 0777) unless $opts{notify};
}
sub unixtoamiga
diff --git a/gnu/usr.bin/perl/installperl b/gnu/usr.bin/perl/installperl
index 452dd2efd8b..f4d850be34c 100644
--- a/gnu/usr.bin/perl/installperl
+++ b/gnu/usr.bin/perl/installperl
@@ -77,8 +77,8 @@ $opts{destdir} = '';
my $usage = 0;
if (!GetOptions(\%opts, 'notify|n', 'strip|s', 'silent|S',
'skip-otherperls|o', 'force|f', 'verbose|V', 'archname|A',
- 'netware', 'nopods|p', 'destdir:s', 'help|h|?', 'user|u:s',
- 'group|g:s', 'versiononly|v' => \$versiononly, '<>' => sub {
+ 'netware', 'nopods|p', 'destdir:s', 'help|h|?',
+ 'versiononly|v' => \$versiononly, '<>' => sub {
if ($_[0] eq '+v') {
$versiononly = 0;
} else {
@@ -107,8 +107,6 @@ Usage $0: [switches]
-A Also install perl with the architecture's name in the perl binary's
name.
-p Don't install the pod files. [This will break use diagnostics;]
- -g group install files with the specified group
- -u user install files with the specified user
-netware Install correctly on a Netware server.
-destdir Prefix installation directories by this string.
-h Display this help message.
@@ -116,8 +114,6 @@ EOT
exit $usage;
}
}
-$opts{'uid'} = getpwnam($opts{'user'}) if exists($opts{'user'});
-$opts{'gid'} = getgrnam($opts{'group'}) if exists($opts{'group'});
$versiononly = 1 if $Config{versiononly} && !defined $versiononly;
my (@scripts, @tolink);
@@ -157,7 +153,7 @@ if ((-e "testcompile") && (defined($ENV{'COMPILE'}))) {
}
# Exclude nonxs extensions that are not architecture dependent
-my @nonxs = grep(!/^(Errno|IO\/Compress)$/, split(' ', $Config{'nonxs_ext'}));
+my @nonxs = grep(!/^Errno$/, split(' ', $Config{'nonxs_ext'}));
my @ext_dirs = qw(cpan dist ext);
foreach my $ext_dir (@ext_dirs) {
@@ -203,7 +199,7 @@ my $installprivlib = "$opts{destdir}$Config{installprivlib}";
my $installarchlib = "$opts{destdir}$Config{installarchlib}";
my $installsitelib = "$opts{destdir}$Config{installsitelib}";
my $installsitearch = "$opts{destdir}$Config{installsitearch}";
-my $installman1dir = "none";
+my $installman1dir = "$opts{destdir}$Config{installman1dir}";
my $man1ext = $Config{man1ext};
my $libperl = $Config{libperl};
# Shared library and dynamic loading suffixes.
@@ -243,6 +239,8 @@ if ($Is_VMS) { # Hang in there until File::Spec hits the big time
$installbin || die "No installbin directory in config.sh\n";
-d $installbin || mkpath($installbin);
-d $installbin || $opts{notify} || die "$installbin is not a directory\n";
+-w $installbin || $opts{notify} || die "$installbin is not writable by you\n"
+ unless $installbin =~ m#^/afs/# || $opts{notify};
if (!$Is_NetWare) {
if (!$Is_VMS) {
@@ -255,9 +253,9 @@ else {
}
}
-#-f 't/rantests' || $Is_W32
-# || warn "WARNING: You've never run 'make test' or",
-# " some tests failed! (Installing anyway.)\n";
+-f 't/rantests' || $Is_W32
+ || warn "WARNING: You've never run 'make test' or",
+ " some tests failed! (Installing anyway.)\n";
} #if (!$Is_NetWare)
# This will be used to store the packlist
@@ -283,10 +281,6 @@ if (($Is_W32 and ! $Is_NetWare) or $Is_Cygwin) {
$packlist->{"$Config{installbin}/$perldll"} = { type => 'file' };
} # if (($Is_W32 and ! $Is_NetWare) or $Is_Cygwin)
-# Get the install command and flags from the environment
-my @installcmd = $ENV{"INSTALL"} || "install";
-push(@installcmd, $ENV{"INSTALL_COPY"} || "-c");
-
# First we install the version-numbered executables.
if ($Is_VMS) {
@@ -307,8 +301,10 @@ if ($Is_VMS) {
}
elsif ($^O ne 'dos') {
if (!$Is_NetWare) {
- my $ver = ''; # don't install a versioned perl binary
- install("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext", "0755");
+ safe_unlink("$installbin/$perl_verbase$ver$exe_ext");
+ copy("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext");
+ strip("$installbin/$perl_verbase$ver$exe_ext");
+ chmod(0755, "$installbin/$perl_verbase$ver$exe_ext");
}
else {
# If installing onto a NetWare server
@@ -381,9 +377,7 @@ elsif ($Is_Cygwin) { # On Cygwin symlink it to CORE to make Makefile happy
@corefiles = <*.h>;
} else {
# [als] hard-coded 'libperl' name... not good!
- #@corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
- @corefiles = <*.h *.inc perl*$Config{lib_ext}>;
- push(@corefiles,<libperl*.*>) unless defined($ENV{"NOLIBINSTALL"});
+ @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>;
# AIX needs perl.exp installed as well.
push(@corefiles,'perl.exp') if $^O eq 'aix';
@@ -411,8 +405,7 @@ if ($Is_W32) { #linking lib isn't made in root but in CORE on Win32
# Install main perl executables
# Make links to ordinary names if installbin directory isn't current directory.
-if (0) { # don't install a versioned perl binary
-#if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VMS && ! $Is_NetWare) {
+if (! $versiononly && ! samepath($installbin, '.') && ($^O ne 'dos') && ! $Is_VMS && ! $Is_NetWare) {
safe_unlink("$installbin/$perl$exe_ext", "$installbin/suid$perl$exe_ext");
if ($^O eq 'vos') {
# VOS doesn't support hard links, so use a symlink.
@@ -593,9 +586,6 @@ if (!$versiononly && !$opts{'skip-otherperls'}) {
}
$packlist->write() unless $opts{notify};
-if (defined($opts{uid}) || defined($opts{gid})) {
- chown($opts{uid}, $opts{gid}, $packlist->packlist_file());
-}
print " Installation complete\n" if $opts{verbose};
exit 0;
@@ -634,7 +624,6 @@ sub safe_unlink {
sub copy {
my($from,$to) = @_;
- my($success) = 0;
my $xto = $to;
$xto =~ s/^\Q$opts{destdir}\E//;
@@ -642,32 +631,12 @@ sub copy {
unless $opts{silent};
print " creating new version of $xto\n"
if $Is_VMS and -e $to and !$opts{silent};
- unless ($opts{notify} or File::Copy::copy($from, $to) and ++$success) {
+ unless ($opts{notify} or File::Copy::copy($from, $to)) {
# Might have been that F::C::c can't overwrite the target
warn "Couldn't copy $from to $to: $!\n"
unless -f $to and (chmod(0666, $to), unlink $to)
- and File::Copy::copy($from, $to) and ++$success;
+ and File::Copy::copy($from, $to);
}
- if (defined($opts{uid}) || defined($opts{gid})) {
- chown($opts{uid}, $opts{gid}, $to) if $success;
- }
- $packlist->{$xto} = { type => 'file' };
-}
-
-sub install {
- my($from,$to,$mode) = @_;
-
- my $xto = $to;
- my $cmd = join(' ', @installcmd);
- $cmd .= " -m $mode" if $mode;
- $cmd .= " -o $opts{uid}" if defined($opts{uid});
- $cmd .= " -g $opts{gid}" if defined($opts{gid});
- $cmd .= " -s" if $opts{strip};
- $cmd .= " $from $to";
- $xto =~ s/^\Q$opts{destdir}\E// if $opts{destdir};
- print $opts{verbose} ? " install $from $xto\n" : " $xto\n" unless $opts{silent};
- system($cmd);
- warn "Couldn't $cmd\n" if $?;
$packlist->{$xto} = { type => 'file' };
}
@@ -699,10 +668,6 @@ sub installlib {
return;
}
- # If we have different install version, install that instead
- return if -e "$_.install";
- $name =~ s/\.install$//;
-
# ignore patch backups, RCS files, emacs backup & temp files and the
# .exists files, .PL files, and test files.
return if $name =~ m{\.orig$|\.rej$|~$|^#.+#$|,v$|^\.exists|\.PL$|\.plc$|\.t$|^test\.pl$|^dbm_filter_util\.pl$|^filter-util\.pl$|^uupacktool\.pl$|^\.gitignore$} ||
diff --git a/gnu/usr.bin/perl/lib/AnyDBM_File.pm b/gnu/usr.bin/perl/lib/AnyDBM_File.pm
index 3b41a4a100b..4153af2de2d 100644
--- a/gnu/usr.bin/perl/lib/AnyDBM_File.pm
+++ b/gnu/usr.bin/perl/lib/AnyDBM_File.pm
@@ -22,6 +22,8 @@ __END__
AnyDBM_File - provide framework for multiple DBMs
+NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File - various DBM implementations
+
=head1 SYNOPSIS
use AnyDBM_File;
diff --git a/gnu/usr.bin/perl/lib/B/Op_private.pm b/gnu/usr.bin/perl/lib/B/Op_private.pm
index 02adaf4c013..9ab71ae9959 100644
--- a/gnu/usr.bin/perl/lib/B/Op_private.pm
+++ b/gnu/usr.bin/perl/lib/B/Op_private.pm
@@ -118,7 +118,7 @@ package B::Op_private;
our %bits;
-our $VERSION = "5.024002";
+our $VERSION = "5.024003";
$bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
$bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
diff --git a/gnu/usr.bin/perl/lib/Getopt/Std.pm b/gnu/usr.bin/perl/lib/Getopt/Std.pm
index b98bd57f077..b7f8132b381 100644
--- a/gnu/usr.bin/perl/lib/Getopt/Std.pm
+++ b/gnu/usr.bin/perl/lib/Getopt/Std.pm
@@ -4,7 +4,7 @@ require Exporter;
=head1 NAME
-Getopt::Std, getopt, getopts - Process single-character switches with switch clustering
+getopt, getopts - Process single-character switches with switch clustering
=head1 SYNOPSIS
diff --git a/gnu/usr.bin/perl/locale.c b/gnu/usr.bin/perl/locale.c
index bf8713a6658..9c4ef80cbbe 100644
--- a/gnu/usr.bin/perl/locale.c
+++ b/gnu/usr.bin/perl/locale.c
@@ -836,7 +836,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
: NULL;
sl_result = my_setlocale(LC_MESSAGES, locale_param);
DEBUG_LOCALE_INIT(LC_MESSAGES, locale_param, sl_result);
- if (! sl_result)
+ if (! sl_result) {
setlocale_failure = TRUE;
}
# endif /* USE_LOCALE_MESSAGES */
diff --git a/gnu/usr.bin/perl/op.c b/gnu/usr.bin/perl/op.c
index 4b6b2271cf5..301acc6174a 100644
--- a/gnu/usr.bin/perl/op.c
+++ b/gnu/usr.bin/perl/op.c
@@ -3223,6 +3223,12 @@ S_scalar_mod_type(const OP *o, I32 type)
case OP_BIT_AND:
case OP_BIT_XOR:
case OP_BIT_OR:
+ case OP_NBIT_AND:
+ case OP_NBIT_XOR:
+ case OP_NBIT_OR:
+ case OP_SBIT_AND:
+ case OP_SBIT_XOR:
+ case OP_SBIT_OR:
case OP_CONCAT:
case OP_SUBST:
case OP_TRANS:
@@ -6747,24 +6753,7 @@ S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
|| type == OP_CUSTOM);
scalarboolean(first);
- /* optimize AND and OR ops that have NOTs as children */
- if (first->op_type == OP_NOT
- && (first->op_flags & OPf_KIDS)
- && ((first->op_flags & OPf_SPECIAL) /* unless ($x) { } */
- || (other->op_type == OP_NOT)) /* if (!$x && !$y) { } */
- ) {
- if (type == OP_AND || type == OP_OR) {
- if (type == OP_AND)
- type = OP_OR;
- else
- type = OP_AND;
- op_null(first);
- if (other->op_type == OP_NOT) { /* !a AND|OR !b => !(a OR|AND b) */
- op_null(other);
- prepend_not = 1; /* prepend a NOT op later */
- }
- }
- }
+
/* search for a constant op that could let us fold the test */
if ((cstop = search_const(first))) {
if (cstop->op_private & OPpCONST_STRICT)
@@ -6864,6 +6853,25 @@ S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
if (type == OP_ANDASSIGN || type == OP_ORASSIGN || type == OP_DORASSIGN)
other->op_private |= OPpASSIGN_BACKWARDS; /* other is an OP_SASSIGN */
+ /* optimize AND and OR ops that have NOTs as children */
+ if (first->op_type == OP_NOT
+ && (first->op_flags & OPf_KIDS)
+ && ((first->op_flags & OPf_SPECIAL) /* unless ($x) { } */
+ || (other->op_type == OP_NOT)) /* if (!$x && !$y) { } */
+ ) {
+ if (type == OP_AND || type == OP_OR) {
+ if (type == OP_AND)
+ type = OP_OR;
+ else
+ type = OP_AND;
+ op_null(first);
+ if (other->op_type == OP_NOT) { /* !a AND|OR !b => !(a OR|AND b) */
+ op_null(other);
+ prepend_not = 1; /* prepend a NOT op later */
+ }
+ }
+ }
+
logop = S_alloc_LOGOP(aTHX_ type, first, LINKLIST(other));
logop->op_flags |= (U8)flags;
logop->op_private = (U8)(1 | (flags >> 8));
diff --git a/gnu/usr.bin/perl/opcode.h b/gnu/usr.bin/perl/opcode.h
index 5ec8f58e702..a77f5cc924c 100644
--- a/gnu/usr.bin/perl/opcode.h
+++ b/gnu/usr.bin/perl/opcode.h
@@ -642,12 +642,12 @@ EXTCONST char* const PL_op_desc[] = {
"bitwise and (&)",
"bitwise xor (^)",
"bitwise or (|)",
- "numeric bitiwse and (&)",
+ "numeric bitwise and (&)",
"numeric bitwise xor (^)",
"numeric bitwise or (|)",
- "string bitiwse and (&)",
- "string bitwise xor (^)",
- "string bitwise or (|)",
+ "string bitwise and (&.)",
+ "string bitwise xor (^.)",
+ "string bitwise or (|.)",
"negation (-)",
"integer negation (-)",
"not",
diff --git a/gnu/usr.bin/perl/patchlevel.h b/gnu/usr.bin/perl/patchlevel.h
index 94429442831..399a0698e66 100644
--- a/gnu/usr.bin/perl/patchlevel.h
+++ b/gnu/usr.bin/perl/patchlevel.h
@@ -15,7 +15,7 @@
#define PERL_REVISION 5 /* age */
#define PERL_VERSION 24 /* epoch */
-#define PERL_SUBVERSION 2 /* generation */
+#define PERL_SUBVERSION 3 /* generation */
/* The following numbers describe the earliest compatible version of
Perl ("compatibility" here being defined as sufficient binary/API
diff --git a/gnu/usr.bin/perl/perl.c b/gnu/usr.bin/perl/perl.c
index f81f39c3c9c..6197ea08d55 100644
--- a/gnu/usr.bin/perl/perl.c
+++ b/gnu/usr.bin/perl/perl.c
@@ -1835,8 +1835,6 @@ S_Internals_V(pTHX_ CV *cv)
# endif
#endif
-#undef PERL_BUILD_DATE
-
#ifdef PERL_BUILD_DATE
PUSHs(Perl_newSVpvn_flags(aTHX_
STR_WITH_LEN("Compiled at " PERL_BUILD_DATE),
diff --git a/gnu/usr.bin/perl/perl.h b/gnu/usr.bin/perl/perl.h
index f8f0069dfa5..f3c96a612f8 100644
--- a/gnu/usr.bin/perl/perl.h
+++ b/gnu/usr.bin/perl/perl.h
@@ -2022,6 +2022,12 @@ extern long double Perl_my_frexpl(long double x, int *e);
# define Perl_isinf(x) isinfq(x)
# define Perl_isnan(x) isnanq(x)
# define Perl_isfinite(x) !(isnanq(x) || isinfq(x))
+# define Perl_fp_class(x) ((x) == 0.0Q ? 0 : isinfq(x) ? 3 : isnanq(x) ? 4 : PERL_ABS(x) < FLT128_MIN ? 2 : 1)
+# define Perl_fp_class_inf(x) (Perl_fp_class(x) == 3)
+# define Perl_fp_class_nan(x) (Perl_fp_class(x) == 4)
+# define Perl_fp_class_norm(x) (Perl_fp_class(x) == 1)
+# define Perl_fp_class_denorm(x) (Perl_fp_class(x) == 2)
+# define Perl_fp_class_zero(x) (Perl_fp_class(x) == 0)
#else
# define NV_DIG DBL_DIG
# ifdef DBL_MANT_DIG
@@ -3064,6 +3070,8 @@ freeing any remaining Perl interpreters.
*/
#if defined(USE_ITHREADS) && defined(I_PTHREAD) && \
defined(__clang__) && \
+ !defined(PERL_GLOBAL_STRUCT) && \
+ !defined(PERL_GLOBAL_STRUCT_PRIVATE) && \
!defined(SWIG) && \
((!defined(__apple_build_version__) && \
((__clang_major__ == 3 && __clang_minor__ >= 6) || \
@@ -6304,7 +6312,7 @@ expression, but with an empty argument list, like this:
# ifdef __hpux
# define strtoll __strtoll /* secret handshake */
# endif
-# ifdef WIN64
+# if defined(WIN64) && defined(_MSC_VER)
# define strtoll _strtoi64 /* secret handshake */
# endif
# if !defined(Strtol) && defined(HAS_STRTOLL)
@@ -6338,7 +6346,7 @@ expression, but with an empty argument list, like this:
# ifdef __hpux
# define strtoull __strtoull /* secret handshake */
# endif
-# ifdef WIN64
+# if defined(WIN64) && defined(_MSC_VER)
# define strtoull _strtoui64 /* secret handshake */
# endif
# if !defined(Strtoul) && defined(HAS_STRTOULL)
@@ -6756,7 +6764,9 @@ extern void moncontrol(int);
#endif
/* All the basic IEEE formats have the implicit bit,
- * except for the 80-bit extended formats, which will undef this. */
+ * except for the x86 80-bit extended formats, which will undef this.
+ * Also note that the IEEE 754 subnormals (formerly known as denormals)
+ * do not have the implicit bit of one. */
#define NV_IMPLICIT_BIT
#ifdef LONG_DOUBLEKIND
@@ -6783,6 +6793,7 @@ extern void moncontrol(int);
# define LONGDOUBLE_X86_80_BIT
# ifdef USE_LONG_DOUBLE
# undef NV_IMPLICIT_BIT
+# define NV_X86_80_BIT
# endif
# endif
diff --git a/gnu/usr.bin/perl/plan9/config.plan9 b/gnu/usr.bin/perl/plan9/config.plan9
index 1da805b4c69..0518c582bc9 100644
--- a/gnu/usr.bin/perl/plan9/config.plan9
+++ b/gnu/usr.bin/perl/plan9/config.plan9
@@ -3329,8 +3329,8 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "/sys/lib/perl/5.24.2" /**/
-#define PRIVLIB_EXP "/sys/lib/perl/5.24.2" /**/
+#define PRIVLIB "/sys/lib/perl/5.24.3" /**/
+#define PRIVLIB_EXP "/sys/lib/perl/5.24.3" /**/
/* PTRSIZE:
* This symbol contains the size of a pointer, so that the C preprocessor
@@ -3457,9 +3457,9 @@
* 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 "/sys/lib/perl/5.24.2/site_perl" /**/
-#define SITELIB_EXP "/sys/lib/perl/5.24.2/site_perl" /**/
-#define SITELIB_STEM "/sys/lib/perl/5.24.2/site_perl" /**/
+#define SITELIB "/sys/lib/perl/5.24.3/site_perl" /**/
+#define SITELIB_EXP "/sys/lib/perl/5.24.3/site_perl" /**/
+#define SITELIB_STEM "/sys/lib/perl/5.24.3/site_perl" /**/
/* Size_t_size:
* This symbol holds the size of a Size_t in bytes.
diff --git a/gnu/usr.bin/perl/plan9/config_sh.sample b/gnu/usr.bin/perl/plan9/config_sh.sample
index 572dc6cfd6f..1f240f49e33 100644
--- a/gnu/usr.bin/perl/plan9/config_sh.sample
+++ b/gnu/usr.bin/perl/plan9/config_sh.sample
@@ -36,8 +36,8 @@ api_subversion='0'
api_version='24'
api_versionstring='5.24.0'
ar='ar'
-archlib='/sys/lib/perl5/5.24.2/386'
-archlibexp='/sys/lib/perl5/5.24.2/386'
+archlib='/sys/lib/perl5/5.24.3/386'
+archlibexp='/sys/lib/perl5/5.24.3/386'
archname64=''
archname='386'
archobjs=''
@@ -802,17 +802,17 @@ inc_version_list=' '
inc_version_list_init='0'
incpath=''
inews=''
-installarchlib='/sys/lib/perl/5.24.2/386'
+installarchlib='/sys/lib/perl/5.24.3/386'
installbin='/usr/bin'
installman1dir='/sys/man/1pub'
installman3dir='/sys/man/2pub'
installprefix='/usr'
installprefixexp='/usr'
-installprivlib='/sys/lib/perl/5.24.2'
+installprivlib='/sys/lib/perl/5.24.3'
installscript='/usr/bin'
-installsitearch='/sys/lib/perl/5.24.2/site_perl/386'
+installsitearch='/sys/lib/perl/5.24.3/site_perl/386'
installsitebin='/usr/bin'
-installsitelib='/sys/lib/perl/5.24.2/site_perl'
+installsitelib='/sys/lib/perl/5.24.3/site_perl'
installstyle='lib/perl5'
installusrbinperl='undef'
installvendorarch=''
@@ -937,8 +937,8 @@ pmake=''
pr=''
prefix='/usr'
prefixexp='/usr'
-privlib='/sys/lib/perl/5.24.2'
-privlibexp='/sys/lib/perl/5.24.2'
+privlib='/sys/lib/perl/5.24.3'
+privlibexp='/sys/lib/perl/5.24.3'
procselfexe=''
prototype='define'
ptrsize='4'
@@ -1003,13 +1003,13 @@ 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, 0'
sig_size='50'
signal_t='void'
-sitearch='/sys/lib/perl/5.24.2/site_perl/386'
+sitearch='/sys/lib/perl/5.24.3/site_perl/386'
sitearchexp='/sys/lib/perl/site_perl/386'
sitebin='/usr/bin'
sitebinexp='/usr/bin'
-sitelib='/sys/lib/perl/5.24.2/site_perl'
-sitelib_stem='/sys/lib/perl/5.24.2/site_perl'
-sitelibexp='/sys/lib/perl/5.24.2/site_perl'
+sitelib='/sys/lib/perl/5.24.3/site_perl'
+sitelib_stem='/sys/lib/perl/5.24.3/site_perl'
+sitelibexp='/sys/lib/perl/5.24.3/site_perl'
siteprefix='/usr'
siteprefixexp='/usr'
sizesize='4'
@@ -1042,7 +1042,7 @@ stdio_stream_array=''
strerror_r_proto='0'
strings='/sys/include/ape/string.h'
submit=''
-subversion='2'
+subversion='3'
sysman='/sys/man/1pub'
tail=''
tar=''
@@ -1124,8 +1124,8 @@ vendorlib_stem=''
vendorlibexp=''
vendorprefix=''
vendorprefixexp=''
-version='5.24.2'
-version_patchlevel_string='version 24 subversion 2'
+version='5.24.3'
+version_patchlevel_string='version 24 subversion 3'
versiononly='undef'
vi=''
xlibpth=''
@@ -1139,7 +1139,7 @@ config_args=''
config_argc=0
PERL_REVISION=5
PERL_VERSION=24
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
PERL_API_REVISION=5
PERL_API_VERSION=24
PERL_API_SUBVERSION=0
diff --git a/gnu/usr.bin/perl/pod/perl.pod b/gnu/usr.bin/perl/pod/perl.pod
index fb66e67c14f..8058f6200aa 100644
--- a/gnu/usr.bin/perl/pod/perl.pod
+++ b/gnu/usr.bin/perl/pod/perl.pod
@@ -34,7 +34,7 @@ For ease of access, the Perl manual has been split up into several sections.
# This section is parsed by Porting/pod_lib.pl for use by pod/buildtoc etc
-flag =g perlmodlib perlapi perlintern
+flag =g perluniprops perlmodlib perlapi perlintern
flag =go perltoc
flag =ro perlcn perljp perlko perltw
flag = perlvms
@@ -180,8 +180,10 @@ aux c2ph h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
perlhist Perl history records
perldelta Perl changes since previous version
+ perl5242delta Perl changes in version 5.24.2
perl5241delta Perl changes in version 5.24.1
perl5240delta Perl changes in version 5.24.0
+ perl5224delta Perl changes in version 5.22.4
perl5223delta Perl changes in version 5.22.3
perl5222delta Perl changes in version 5.22.2
perl5221delta Perl changes in version 5.22.1
diff --git a/gnu/usr.bin/perl/pod/perldelta.pod b/gnu/usr.bin/perl/pod/perldelta.pod
index 855d0f4a8aa..d22e0f20486 100644
--- a/gnu/usr.bin/perl/pod/perldelta.pod
+++ b/gnu/usr.bin/perl/pod/perldelta.pod
@@ -2,34 +2,43 @@
=head1 NAME
-perldelta - what is new for perl v5.24.2
+perldelta - what is new for perl v5.24.3
=head1 DESCRIPTION
-This document describes differences between the 5.24.1 release and the 5.24.2
+This document describes differences between the 5.24.2 release and the 5.24.3
release.
-If you are upgrading from an earlier release such as 5.24.0, first read
-L<perl5241delta>, which describes differences between 5.24.0 and 5.24.1.
+If you are upgrading from an earlier release such as 5.24.1, first read
+L<perl5242delta>, which describes differences between 5.24.1 and 5.24.2.
=head1 Security
-=head2 Improved handling of '.' in @INC in base.pm
+=head2 [CVE-2017-12837] Heap buffer overflow in regular expression compiler
-The handling of (the removal of) C<'.'> in C<@INC> in L<base> has been
-improved. This resolves some problematic behaviour in the approach taken in
-Perl 5.24.1, which is probably best described in the following two threads on
-the Perl 5 Porters mailing list:
-L<http://www.nntp.perl.org/group/perl.perl5.porters/2016/08/msg238991.html>,
-L<http://www.nntp.perl.org/group/perl.perl5.porters/2016/10/msg240297.html>.
+Compiling certain regular expression patterns with the case-insensitive
+modifier could cause a heap buffer overflow and crash perl. This has now been
+fixed.
+L<[perl #131582]|https://rt.perl.org/Public/Bug/Display.html?id=131582>
-=head2 "Escaped" colons and relative paths in PATH
+=head2 [CVE-2017-12883] Buffer over-read in regular expression parser
-On Unix systems, Perl treats any relative paths in the PATH environment
-variable as tainted when starting a new process. Previously, it was allowing a
-backslash to escape a colon (unlike the OS), consequently allowing relative
-paths to be considered safe if the PATH was set to something like C</\:.>. The
-check has been fixed to treat C<.> as tainted in that example.
+For certain types of syntax error in a regular expression pattern, the error
+message could either contain the contents of a random, possibly large, chunk of
+memory, or could crash perl. This has now been fixed.
+L<[perl #131598]|https://rt.perl.org/Public/Bug/Display.html?id=131598>
+
+=head2 [CVE-2017-12814] C<$ENV{$key}> stack buffer overflow on Windows
+
+A possible stack buffer overflow in the C<%ENV> code on Windows has been fixed
+by removing the buffer completely since it was superfluous anyway.
+L<[perl #131665]|https://rt.perl.org/Public/Bug/Display.html?id=131665>
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.24.2. If any exist,
+they are bugs, and we request that you submit a report. See L</Reporting
+Bugs> below.
=head1 Modules and Pragmata
@@ -39,11 +48,83 @@ check has been fixed to treat C<.> as tainted in that example.
=item *
-L<base> has been upgraded from version 2.23 to 2.23_01.
+L<Module::CoreList> has been upgraded from version 5.20170715_24 to
+5.20170922_24.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.65 to 1.65_01.
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9733 to 1.9741.
+
+L<[perl #128427]|https://rt.perl.org/Public/Bug/Display.html?id=128427>
+L<[perl #128445]|https://rt.perl.org/Public/Bug/Display.html?id=128445>
+L<[perl #128972]|https://rt.perl.org/Public/Bug/Display.html?id=128972>
+L<[cpan #120032]|https://rt.cpan.org/Public/Bug/Display.html?id=120032>
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+When building with GCC 6 and link-time optimization (the B<-flto> option to
+B<gcc>), F<Configure> was treating all probed symbols as present on the system,
+regardless of whether they actually exist. This has been fixed.
+L<[perl #128131]|https://rt.perl.org/Public/Bug/Display.html?id=128131>
+
+=item *
+
+F<Configure> now aborts if both C<-Duselongdouble> and C<-Dusequadmath> are
+requested.
+L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203>
+
+=item *
+
+Fixed a bug in which F<Configure> could append C<-quadmath> to the archname
+even if it was already present.
+L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538>
+
+=item *
+
+Clang builds with C<-DPERL_GLOBAL_STRUCT> or C<-DPERL_GLOBAL_STRUCT_PRIVATE>
+have been fixed (by disabling Thread Safety Analysis for these configurations).
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item VMS
+
+=over 4
+
+=item *
+
+C<configure.com> now recognizes the VSI-branded C compiler.
+
+=back
+
+=item Windows
+
+=over 4
=item *
-L<Module::CoreList> has been upgraded from version 5.20170114_24 to 5.20170715_24.
+Building XS modules with GCC 6 in a 64-bit build of Perl failed due to
+incorrect mapping of C<strtoll> and C<strtoull>. This has now been fixed.
+L<[perl #131726]|https://rt.perl.org/Public/Bug/Display.html?id=131726>
+L<[cpan #121683]|https://rt.cpan.org/Public/Bug/Display.html?id=121683>
+L<[cpan #122353]|https://rt.cpan.org/Public/Bug/Display.html?id=122353>
+
+=back
=back
@@ -53,29 +134,163 @@ L<Module::CoreList> has been upgraded from version 5.20170114_24 to 5.20170715_2
=item *
-Fixed a crash with C<s///l> where it thought it was dealing with UTF-8 when it
-wasn't.
-L<[perl #129038]|https://rt.perl.org/Ticket/Display.html?id=129038>
+C<< /@0{0*-E<gt>@*/*0 >> and similar contortions used to crash, but no longer
+do, but merely produce a syntax error.
+L<[perl #128171]|https://rt.perl.org/Public/Bug/Display.html?id=128171>
+
+=item *
+
+C<do> or C<require> with an argument which is a reference or typeglob which,
+when stringified, contains a null character, started crashing in Perl 5.20, but
+has now been fixed.
+L<[perl #128182]|https://rt.perl.org/Public/Bug/Display.html?id=128182>
+
+=item *
+
+Expressions containing an C<&&> or C<||> operator (or their synonyms C<and> and
+C<or>) were being compiled incorrectly in some cases. If the left-hand side
+consisted of either a negated bareword constant or a negated C<do {}> block
+containing a constant expression, and the right-hand side consisted of a
+negated non-foldable expression, one of the negations was effectively ignored.
+The same was true of C<if> and C<unless> statement modifiers, though with the
+left-hand and right-hand sides swapped. This long-standing bug has now been
+fixed.
+L<[perl #127952]|https://rt.perl.org/Public/Bug/Display.html?id=127952>
+
+=item *
+
+C<reset> with an argument no longer crashes when encountering stash entries
+other than globs.
+L<[perl #128106]|https://rt.perl.org/Public/Bug/Display.html?id=128106>
+
+=item *
+
+Assignment of hashes to, and deletion of, typeglobs named C<*::::::> no longer
+causes crashes.
+L<[perl #128086]|https://rt.perl.org/Public/Bug/Display.html?id=128086>
+
+=item *
+
+Assignment variants of any bitwise ops under the C<bitwise> feature would crash
+if the left-hand side was an array or hash.
+L<[perl #128204]|https://rt.perl.org/Public/Bug/Display.html?id=128204>
+
+=item *
+
+C<socket> now leaves the error code returned by the system in C<$!> on failure.
+L<[perl #128316]|https://rt.perl.org/Public/Bug/Display.html?id=128316>
+
+=item *
+
+Parsing bad POSIX charclasses no longer leaks memory.
+L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313>
+
+=item *
+
+Since Perl 5.20, line numbers have been off by one when perl is invoked with
+the B<-x> switch. This has been fixed.
+L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508>
+
+=item *
+
+Some obscure cases of subroutines and file handles being freed at the same time
+could result in crashes, but have been fixed. The crash was introduced in Perl
+5.22.
+L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597>
+
+=item *
+
+Some regular expression parsing glitches could lead to assertion failures with
+regular expressions such as C</(?E<lt>=/> and C</(?E<lt>!/>. This has now been
+fixed.
+L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170>
+
+=item *
+
+C<gethostent> and similar functions now perform a null check internally, to
+avoid crashing with the torsocks library. This was a regression from Perl
+5.22.
+L<[perl #128740]|https://rt.perl.org/Public/Bug/Display.html?id=128740>
+
+=item *
+
+Mentioning the same constant twice in a row (which is a syntax error) no longer
+fails an assertion under debugging builds. This was a regression from Perl
+5.20.
+L<[perl #126482]|https://rt.perl.org/Public/Bug/Display.html?id=126482>
+
+=item *
+
+In Perl 5.24 C<fchown> was changed not to accept negative one as an argument
+because in some platforms that is an error. However, in some other platforms
+that is an acceptable argument. This change has been reverted.
+L<[perl #128967]|https://rt.perl.org/Public/Bug/Display.html?id=128967>.
+
+=item *
+
+C<@{x> followed by a newline where C<"x"> represents a control or non-ASCII
+character no longer produces a garbled syntax error message or a crash.
+L<[perl #128951]|https://rt.perl.org/Public/Bug/Display.html?id=128951>
+
+=item *
+
+A regression in Perl 5.24 with C<tr/\N{U+...}/foo/> when the code point was
+between 128 and 255 has been fixed.
+L<[perl #128734]|https://rt.perl.org/Public/Bug/Display.html?id=128734>.
+
+=item *
+
+Many issues relating to C<printf "%a"> of hexadecimal floating point were
+fixed. In addition, the "subnormals" (formerly known as "denormals") floating
+point numbers are now supported both with the plain IEEE 754 floating point
+numbers (64-bit or 128-bit) and the x86 80-bit "extended precision". Note that
+subnormal hexadecimal floating point literals will give a warning about
+"exponent underflow".
+L<[perl #128843]|https://rt.perl.org/Public/Bug/Display.html?id=128843>
+L<[perl #128888]|https://rt.perl.org/Public/Bug/Display.html?id=128888>
+L<[perl #128889]|https://rt.perl.org/Public/Bug/Display.html?id=128889>
+L<[perl #128890]|https://rt.perl.org/Public/Bug/Display.html?id=128890>
+L<[perl #128893]|https://rt.perl.org/Public/Bug/Display.html?id=128893>
+L<[perl #128909]|https://rt.perl.org/Public/Bug/Display.html?id=128909>
+L<[perl #128919]|https://rt.perl.org/Public/Bug/Display.html?id=128919>
+
+=item *
+
+The parser could sometimes crash if a bareword came after C<evalbytes>.
+L<[perl #129196]|https://rt.perl.org/Public/Bug/Display.html?id=129196>
+
+=item *
+
+Fixed a place where the regex parser was not setting the syntax error correctly
+on a syntactically incorrect pattern.
+L<[perl #129122]|https://rt.perl.org/Public/Bug/Display.html?id=129122>
+
+=item *
+
+A vulnerability in Perl's C<sprintf> implementation has been fixed by avoiding
+a possible memory wrap.
+L<[perl #131260]|https://rt.perl.org/Public/Bug/Display.html?id=131260>
=back
=head1 Acknowledgements
-Perl 5.24.2 represents approximately 6 months of development since Perl 5.24.1
-and contains approximately 2,500 lines of changes across 53 files from 18
+Perl 5.24.3 represents approximately 2 months of development since Perl 5.24.2
+and contains approximately 3,200 lines of changes across 120 files from 23
authors.
Excluding auto-generated files, documentation and release tools, there were
-approximately 960 lines of changes to 17 .pm, .t, .c and .h files.
+approximately 1,600 lines of changes to 56 .pm, .t, .c and .h files.
Perl continues to flourish into its third decade thanks to a vibrant community
of users and developers. The following people are known to have contributed
-the improvements that became Perl 5.24.2:
+the improvements that became Perl 5.24.3:
-Aaron Crane, Abigail, Aristotle Pagaltzis, Chris 'BinGOs' Williams, Dan
-Collins, David Mitchell, Eric Herman, Father Chrysostomos, James E Keenan, Karl
-Williamson, Lukas Mai, Renee Baecker, Ricardo Signes, Sawyer X, Stevan Little,
-Steve Hay, Tony Cook, Yves Orton.
+Aaron Crane, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Collins, Daniel
+Dragan, Dave Cross, David Mitchell, Eric Herman, Father Chrysostomos, H.Merijn
+Brand, Hugo van der Sanden, James E Keenan, Jarkko Hietaniemi, John SJ
+Anderson, Karl Williamson, Ken Brown, Lukas Mai, Matthew Horsfall, Stevan
+Little, Steve Hay, Steven Humphrey, Tony Cook, Yves Orton.
The list above is almost certainly incomplete as it is automatically generated
from version control history. In particular, it does not include the names of
@@ -103,8 +318,8 @@ will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
If the bug you are reporting has security implications which make it
inappropriate to send to a publicly archived mailing list, then see
-L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
-for details of how to report the issue.
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> for details of how to
+report the issue.
=head1 SEE ALSO
diff --git a/gnu/usr.bin/perl/pod/perldiag.pod b/gnu/usr.bin/perl/pod/perldiag.pod
index 78aeb164e33..737d3633f67 100644
--- a/gnu/usr.bin/perl/pod/perldiag.pod
+++ b/gnu/usr.bin/perl/pod/perldiag.pod
@@ -2479,7 +2479,9 @@ than the floating point supports.
=item Hexadecimal float: exponent underflow
(W overflow) The hexadecimal floating point has a smaller exponent
-than the floating point supports.
+than the floating point supports. With the IEEE 754 floating point,
+this may also mean that the subnormals (formerly known as denormals)
+are being used, which may or may not be an error.
=item Hexadecimal float: internal error (%s)
diff --git a/gnu/usr.bin/perl/pod/perlfunc.pod b/gnu/usr.bin/perl/pod/perlfunc.pod
index e9c7038a9c0..b10b6323600 100644
--- a/gnu/usr.bin/perl/pod/perlfunc.pod
+++ b/gnu/usr.bin/perl/pod/perlfunc.pod
@@ -1703,8 +1703,8 @@ produce, respectively
/etc/games is no good, stopped at canasta line 123.
If the output is empty and L<C<$@>|perlvar/$@> already contains a value
-(typically from a previous eval) that value is reused after appending
-C<"\t...propagated">. This is useful for propagating exceptions:
+(typically from a previous L<C<eval>|/eval EXPR>) that value is reused after
+appending C<"\t...propagated">. This is useful for propagating exceptions:
eval { ... };
die unless $@ =~ /Expected exception/;
@@ -4006,8 +4006,8 @@ Note that L<C<$_>|perlvar/$_> is an alias to the list value, so it can
be used to modify the elements of the LIST. While this is useful and
supported, it can cause bizarre results if the elements of LIST are not
variables. Using a regular C<foreach> loop for this purpose would be
-clearer in most cases. See also L<C<grep>|/grep BLOCK LIST> for an
-array composed of those items of the original list for which the BLOCK
+clearer in most cases. See also L<C<grep>|/grep BLOCK LIST> for a
+list composed of those items of the original list for which the BLOCK
or EXPR evaluates to true.
C<{> starts both hash references and blocks, so C<map { ...> could be either
diff --git a/gnu/usr.bin/perl/pod/perlhist.pod b/gnu/usr.bin/perl/pod/perlhist.pod
index 17b07dee327..b67040e796c 100644
--- a/gnu/usr.bin/perl/pod/perlhist.pod
+++ b/gnu/usr.bin/perl/pod/perlhist.pod
@@ -33,8 +33,8 @@ Matt S Trout, David Golden, Florian Ragwitz, Tatsuhiko Miyagawa,
Chris C<BinGOs> Williams, Zefram, Ævar Arnfjörð Bjarmason, Stevan
Little, Dave Rolsky, Max Maischein, Abigail, Jesse Luehrs, Tony Cook,
Dominic Hargreaves, Aaron Crane, Aristotle Pagaltzis, Matthew Horsfall,
-Peter Martini, Sawyer X, Chad 'Exodist' Granum, Renee Bäcker,
-and Eric Herman.
+Peter Martini, Sawyer X, Chad 'Exodist' Granum, Renee Bäcker, Eric Herman,
+and John SJ Anderson.
=head2 PUMPKIN?
@@ -578,8 +578,8 @@ the strings?).
Steve 5.22.4 2017-Jul-15
Ricardo 5.23.0 2015-Jun-20 The 5.23 development track
- Matthew 5.23.1 2015-Jul-20
- Matthew 5.23.2 2015-Aug-20
+ Matthew H 5.23.1 2015-Jul-20
+ Matthew H 5.23.2 2015-Aug-20
Peter 5.23.3 2015-Sep-20
Steve 5.23.4 2015-Oct-20
Abigail 5.23.5 2015-Nov-20
@@ -602,10 +602,12 @@ the strings?).
Steve 5.24.1 2017-Jan-14
Steve 5.24.2-RC1 2017-Jul-01
Steve 5.24.2 2017-Jul-15
+ Steve 5.24.3-RC1 2017-Sep-10
+ Steve 5.24.3 2017-Sep-22
Ricardo 5.25.0 2016-May-09 The 5.25 development track
Sawyer X 5.25.1 2016-May-20
- Matthew 5.25.2 2016-Jun-20
+ Matthew H 5.25.2 2016-Jun-20
Steve 5.25.3 2016-Jul-20
BinGOs 5.25.4 2016-Aug-20
Stevan 5.25.5 2016-Sep-20
@@ -620,9 +622,14 @@ the strings?).
Sawyer X 5.26.0-RC1 2017-May-11 The 5.26 maintenance track
Sawyer X 5.26.0-RC2 2017-May-23
Sawyer X 5.26.0 2017-May-30
+ Steve 5.26.1-RC1 2017-Sep-10
+ Steve 5.26.1 2017-Sep-22
Sawyer X 5.27.0 2017-May-31 The 5.27 development track
Eric 5.27.1 2017-Jun-20
+ Aaron 5.27.2 2017-Jul-20
+ Matthew H 5.27.3 2017-Aug-21
+ John 5.27.4 2017-Sep-20
=head2 SELECTED RELEASE SIZES
diff --git a/gnu/usr.bin/perl/pod/perlmodinstall.pod b/gnu/usr.bin/perl/pod/perlmodinstall.pod
index 9a2634e9ab3..f92620c6d61 100644
--- a/gnu/usr.bin/perl/pod/perlmodinstall.pod
+++ b/gnu/usr.bin/perl/pod/perlmodinstall.pod
@@ -79,11 +79,11 @@ You can get gzip from ftp://prep.ai.mit.edu/pub/gnu/
Or, you can combine this step with the next to save disk space:
- gzip -dc yourmodule.tar.gz | tar -xf -
+ gzip -dc yourmodule.tar.gz | tar -xof -
B. UNPACK
-Unpack the result with C<tar -xf yourmodule.tar>
+Unpack the result with C<tar -xof yourmodule.tar>
C. BUILD
diff --git a/gnu/usr.bin/perl/pod/perlop.pod b/gnu/usr.bin/perl/pod/perlop.pod
index 34835130469..9a43ce4decc 100644
--- a/gnu/usr.bin/perl/pod/perlop.pod
+++ b/gnu/usr.bin/perl/pod/perlop.pod
@@ -1618,7 +1618,7 @@ and although they often accept just C<"\012">, they seldom tolerate just
C<"\015">. If you get in the habit of using C<"\n"> for networking,
you may be burned some day.
X<newline> X<line terminator> X<eol> X<end of line>
-X<\r>
+X<\n> X<\r> X<\r\n>
For constructs that do interpolate, variables beginning with "C<$>"
or "C<@>" are interpolated. Subscripted variables such as C<$a[3]> or
@@ -2423,7 +2423,7 @@ controls and characters which have no ASCII equivalents.
But, even for portable ranges, it is not generally obvious what is
included without having to look things up. A sound principle is to use
only ranges that begin from and end at either ASCII alphabetics of equal
-case (C<b-e>, C<b-E>), or digits (C<1-4>). Anything else is unclear
+case (C<b-e>, C<B-E>), or digits (C<1-4>). Anything else is unclear
(and unportable unless C<\N{...}> is used). If in doubt, spell out the
character sets in full.
diff --git a/gnu/usr.bin/perl/pod/perlrecharclass.pod b/gnu/usr.bin/perl/pod/perlrecharclass.pod
index 7f5a4ef273f..89f4a7ef3f9 100644
--- a/gnu/usr.bin/perl/pod/perlrecharclass.pod
+++ b/gnu/usr.bin/perl/pod/perlrecharclass.pod
@@ -863,7 +863,7 @@ Same for the two ASCII-only range forms.
=back
There are various other synonyms that can be used besides the names
-listed in the table. For example, C<\p{PosixAlpha}> can be written as
+listed in the table. For example, C<\p{XPosixAlpha}> can be written as
C<\p{Alpha}>. All are listed in
L<perluniprops/Properties accessible through \p{} and \P{}>.
diff --git a/gnu/usr.bin/perl/pod/perlrun.pod b/gnu/usr.bin/perl/pod/perlrun.pod
index 349e91e3d65..25ec5e6648a 100644
--- a/gnu/usr.bin/perl/pod/perlrun.pod
+++ b/gnu/usr.bin/perl/pod/perlrun.pod
@@ -345,7 +345,7 @@ You can also use binmode() to set the encoding of an I/O stream.
X<-c>
causes Perl to check the syntax of the program and then exit without
-executing it. Actually, it I<will> execute and C<BEGIN>, C<UNITCHECK>,
+executing it. Actually, it I<will> execute any C<BEGIN>, C<UNITCHECK>,
or C<CHECK> blocks and any C<use> statements: these are considered as
occurring outside the execution of your program. C<INIT> and C<END>
blocks, however, will be skipped.
diff --git a/gnu/usr.bin/perl/pod/perlunicode.pod b/gnu/usr.bin/perl/pod/perlunicode.pod
index 775a4307a43..4222c43e0df 100644
--- a/gnu/usr.bin/perl/pod/perlunicode.pod
+++ b/gnu/usr.bin/perl/pod/perlunicode.pod
@@ -1827,7 +1827,7 @@ the XS level, and L<perlapi/Unicode Support> for the API details.
Perl by default comes with the latest supported Unicode version built-in, but
the goal is to allow you to change to use any earlier one. In Perls
v5.20 and v5.22, however, the earliest usable version is Unicode 5.1.
-Perl v5.18 is able to handle all earlier versions.
+Perl v5.18 and v5.24 are able to handle all earlier versions.
Download the files in the desired version of Unicode from the Unicode web
site L<http://www.unicode.org>). These should replace the existing files in
diff --git a/gnu/usr.bin/perl/pp.c b/gnu/usr.bin/perl/pp.c
index d95832a3368..4a2cde05e03 100644
--- a/gnu/usr.bin/perl/pp.c
+++ b/gnu/usr.bin/perl/pp.c
@@ -3130,13 +3130,12 @@ PP(pp_srand)
"Integer overflow in srand");
anum = UV_MAX;
}
- (void)srand48_deterministic((Rand_seed_t)anum);
}
else {
anum = seed();
- (void)seedDrand01((Rand_seed_t)anum);
}
+ (void)seedDrand01((Rand_seed_t)anum);
PL_srand_called = TRUE;
if (anum)
XPUSHu(anum);
diff --git a/gnu/usr.bin/perl/pp_ctl.c b/gnu/usr.bin/perl/pp_ctl.c
index 99ff59a0f0f..225b357519e 100644
--- a/gnu/usr.bin/perl/pp_ctl.c
+++ b/gnu/usr.bin/perl/pp_ctl.c
@@ -3678,8 +3678,8 @@ PP(pp_require)
if (!IS_SAFE_PATHNAME(name, len, "require")) {
DIE(aTHX_ "Can't locate %s: %s",
- pv_escape(newSVpvs_flags("",SVs_TEMP),SvPVX(sv),SvCUR(sv),
- SvCUR(sv)*2,NULL, SvUTF8(sv)?PERL_PV_ESCAPE_UNI:0),
+ pv_escape(newSVpvs_flags("",SVs_TEMP),name,len,len*2,
+ NULL, SvUTF8(sv)?PERL_PV_ESCAPE_UNI:0),
Strerror(ENOENT));
}
TAINT_PROPER("require");
diff --git a/gnu/usr.bin/perl/pp_hot.c b/gnu/usr.bin/perl/pp_hot.c
index d6cb1aa091b..243f43a9726 100644
--- a/gnu/usr.bin/perl/pp_hot.c
+++ b/gnu/usr.bin/perl/pp_hot.c
@@ -1181,6 +1181,7 @@ S_aassign_copy_common(pTHX_ SV **firstlelem, SV **lastlelem,
assert(svr);
if (UNLIKELY(SvFLAGS(svr) & (SVf_BREAK|SVs_GMG) || copy_all)) {
+ U32 brk = (SvFLAGS(svr) & SVf_BREAK);
#ifdef DEBUGGING
if (fake) {
@@ -1216,7 +1217,7 @@ S_aassign_copy_common(pTHX_ SV **firstlelem, SV **lastlelem,
/* ... but restore afterwards in case it's needed again,
* e.g. ($a,$b,$c) = (1,$a,$a)
*/
- SvFLAGS(svr) |= SVf_BREAK;
+ SvFLAGS(svr) |= brk;
}
if (!lcount)
diff --git a/gnu/usr.bin/perl/pp_sys.c b/gnu/usr.bin/perl/pp_sys.c
index 33cba461eee..d16a0e5da1a 100644
--- a/gnu/usr.bin/perl/pp_sys.c
+++ b/gnu/usr.bin/perl/pp_sys.c
@@ -2497,7 +2497,6 @@ PP(pp_socket)
TAINT_PROPER("socket");
fd = PerlSock_socket(domain, type, protocol);
if (fd < 0) {
- SETERRNO(EBADF,RMS_IFI);
RETPUSHUNDEF;
}
IoIFP(io) = PerlIO_fdopen(fd, "r"SOCKET_OPEN_MODE); /* stdio gets confused about sockets */
@@ -3531,8 +3530,9 @@ PP(pp_fttext)
}
PL_laststatval = PerlLIO_fstat(fd, &PL_statcache);
if (PL_laststatval < 0) {
+ dSAVE_ERRNO;
(void)PerlIO_close(fp);
- SETERRNO(EBADF,RMS_IFI);
+ RESTORE_ERRNO;
FT_RETURNUNDEF;
}
PerlIO_binmode(aTHX_ fp, '<', O_BINARY, NULL);
@@ -4934,9 +4934,7 @@ S_space_join_names_mortal(pTHX_ char *const *array)
{
SV *target;
- PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL;
-
- if (*array) {
+ if (array && *array) {
target = newSVpvs_flags("", SVs_TEMP);
while (1) {
sv_catpv(target, *array);
diff --git a/gnu/usr.bin/perl/proto.h b/gnu/usr.bin/perl/proto.h
index 8d4713b0969..cd99404f1e3 100644
--- a/gnu/usr.bin/perl/proto.h
+++ b/gnu/usr.bin/perl/proto.h
@@ -3842,7 +3842,7 @@ STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, H
STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth);
#define PERL_ARGS_ASSERT_DUMPUNTIL \
assert(r); assert(start); assert(node); assert(sv)
-STATIC bool S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node);
+STATIC bool S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const bool force_as_is_display);
#define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS \
assert(sv); assert(bitmap)
STATIC SV* S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert);
@@ -4693,8 +4693,6 @@ STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop);
#define PERL_ARGS_ASSERT_DOFORM \
assert(cv); assert(gv)
STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array);
-#define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL \
- assert(array)
#endif
#if defined(PERL_IN_REGCOMP_C)
STATIC void S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
diff --git a/gnu/usr.bin/perl/regcomp.c b/gnu/usr.bin/perl/regcomp.c
index 29b1ffe7c5a..c6c7cb4925f 100644
--- a/gnu/usr.bin/perl/regcomp.c
+++ b/gnu/usr.bin/perl/regcomp.c
@@ -199,6 +199,7 @@ struct RExC_state_t {
scan_frame *frame_head;
scan_frame *frame_last;
U32 frame_count;
+ AV *warn_text;
#ifdef ADD_TO_REGEXEC
char *starttry; /* -Dr: where regtry was called. */
#define RExC_starttry (pRExC_state->starttry)
@@ -222,6 +223,7 @@ struct RExC_state_t {
#endif
bool seen_unfolded_sharp_s;
bool strict;
+ bool study_started;
};
#define RExC_flags (pRExC_state->flags)
@@ -288,6 +290,8 @@ struct RExC_state_t {
#define RExC_frame_last (pRExC_state->frame_last)
#define RExC_frame_count (pRExC_state->frame_count)
#define RExC_strict (pRExC_state->strict)
+#define RExC_study_started (pRExC_state->study_started)
+#define RExC_warn_text (pRExC_state->warn_text)
/* Heuristic check on the complexity of the pattern: if TOO_NAUGHTY, we set
* a flag to disable back-off on the fixed/floating substrings - if it's
@@ -4102,6 +4106,7 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp,
GET_RE_DEBUG_FLAGS_DECL;
PERL_ARGS_ASSERT_STUDY_CHUNK;
+ RExC_study_started= 1;
if ( depth == 0 ) {
@@ -5899,15 +5904,10 @@ Perl_re_printf( aTHX_ "LHS=%"UVuf" RHS=%"UVuf"\n",
/* Else: zero-length, ignore. */
scan = regnext(scan);
}
- /* If we are exiting a recursion we can unset its recursed bit
- * and allow ourselves to enter it again - no danger of an
- * infinite loop there.
- if (stopparen > -1 && recursed) {
- DEBUG_STUDYDATA("unset:", data,depth);
- PAREN_UNSET( recursed, stopparen);
- }
- */
+
+ finish:
if (frame) {
+ /* we need to unwind recursion. */
depth = depth - 1;
DEBUG_STUDYDATA("frame-end:",data,depth);
@@ -5924,7 +5924,6 @@ Perl_re_printf( aTHX_ "LHS=%"UVuf" RHS=%"UVuf"\n",
goto fake_study_recurse;
}
- finish:
assert(!frame);
DEBUG_STUDYDATA("pre-fin:",data,depth);
@@ -6767,6 +6766,7 @@ Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count,
#endif
}
+ pRExC_state->warn_text = NULL;
pRExC_state->code_blocks = NULL;
pRExC_state->num_code_blocks = 0;
@@ -6883,6 +6883,7 @@ Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count,
RExC_contains_locale = 0;
RExC_contains_i = 0;
RExC_strict = cBOOL(pm_flags & RXf_PMf_STRICT);
+ RExC_study_started = 0;
pRExC_state->runtime_code_qr = NULL;
RExC_frame_head= NULL;
RExC_frame_last= NULL;
@@ -10619,7 +10620,10 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp,U32 depth)
RExC_seen |= REG_LOOKBEHIND_SEEN;
RExC_in_lookbehind++;
RExC_parse++;
- assert(RExC_parse < RExC_end);
+ if (RExC_parse >= RExC_end) {
+ vFAIL("Sequence (?... not terminated");
+ }
+
/* FALLTHROUGH */
case '=': /* (?=...) */
RExC_seen_zerolen++;
@@ -13707,8 +13711,8 @@ S_populate_ANYOF_from_invlist(pTHX_ regnode *node, SV** invlist_ptr)
* routine. q.v. */
#define ADD_POSIX_WARNING(p, text) STMT_START { \
if (posix_warnings) { \
- if (! warn_text) warn_text = newAV(); \
- av_push(warn_text, Perl_newSVpvf(aTHX_ \
+ if (! RExC_warn_text ) RExC_warn_text = (AV *) sv_2mortal((SV *) newAV()); \
+ av_push(RExC_warn_text, Perl_newSVpvf(aTHX_ \
WARNING_PREFIX \
text \
REPORT_LOCATION, \
@@ -13839,7 +13843,6 @@ S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state,
bool has_opening_colon = FALSE;
int class_number = OOB_NAMEDCLASS; /* Out-of-bounds until find
valid class */
- AV* warn_text = NULL; /* any warning messages */
const char * possible_end = NULL; /* used for a 2nd parse pass */
const char* name_start; /* ptr to class name first char */
@@ -13855,6 +13858,9 @@ S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state,
PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX;
+ if (posix_warnings && RExC_warn_text)
+ av_clear(RExC_warn_text);
+
if (p >= e) {
return NOT_MEANT_TO_BE_A_POSIX_CLASS;
}
@@ -14472,14 +14478,8 @@ S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state,
ADD_POSIX_WARNING(p, "there is no terminating ']'");
}
- if (warn_text) {
- if (posix_warnings) {
- /* mortalize to avoid a leak with FATAL warnings */
- *posix_warnings = (AV *) sv_2mortal((SV *) warn_text);
- }
- else {
- SvREFCNT_dec_NN(warn_text);
- }
+ if (posix_warnings && RExC_warn_text && av_top_index(RExC_warn_text) > -1) {
+ *posix_warnings = RExC_warn_text;
}
}
else if (class_number != OOB_NAMEDCLASS) {
@@ -14885,8 +14885,8 @@ redo_curchar:
}
/* Stack the position of this undealt-with left paren */
- fence = top_index + 1;
av_push(fence_stack, newSViv(fence));
+ fence = top_index + 1;
break;
case '\\':
@@ -14967,7 +14967,12 @@ redo_curchar:
vFAIL("Unexpected ')'");
}
- /* If at least two thing on the stack, treat this as an
+ /* If nothing after the fence, is missing an operand */
+ if (top_index - fence < 0) {
+ RExC_parse++;
+ goto bad_syntax;
+ }
+ /* If at least two things on the stack, treat this as an
* operator */
if (top_index - fence >= 1) {
goto join_operators;
@@ -18244,7 +18249,9 @@ S_reginsert(pTHX_ RExC_state_t *pRExC_state, U8 op, regnode *opnd, U32 depth)
RExC_size += size;
return;
}
-
+ assert(!RExC_study_started); /* I believe we should never use reginsert once we have started
+ studying. If this is wrong then we need to adjust RExC_recurse
+ below like we do with RExC_open_parens/RExC_close_parens. */
src = RExC_emit;
RExC_emit += size;
dst = RExC_emit;
@@ -18255,7 +18262,10 @@ S_reginsert(pTHX_ RExC_state_t *pRExC_state, U8 op, regnode *opnd, U32 depth)
* iow it is 1 more than the number of parens seen in
* the pattern so far. */
for ( paren=0 ; paren < RExC_npar ; paren++ ) {
- if ( RExC_open_parens[paren] >= opnd ) {
+ /* note, RExC_open_parens[0] is the start of the
+ * regex, it can't move. RExC_close_parens[0] is the end
+ * of the regex, it *can* move. */
+ if ( paren && RExC_open_parens[paren] >= opnd ) {
/*DEBUG_PARSE_FMT("open"," - %d",size);*/
RExC_open_parens[paren] += size;
} else {
@@ -18750,7 +18760,8 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
: TRIE_BITMAP(trie)),
NULL,
NULL,
- NULL
+ NULL,
+ FALSE
);
sv_catpvs(sv, "]");
}
@@ -18849,6 +18860,8 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
/* And things that aren't in the bitmap, but are small enough to be */
SV* bitmap_range_not_in_bitmap = NULL;
+ const bool inverted = flags & ANYOF_INVERT;
+
if (OP(o) == ANYOFL) {
if (ANYOFL_UTF8_LOCALE_REQD(flags)) {
sv_catpvs(sv, "{utf8-locale-reqd}");
@@ -18893,21 +18906,37 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
ANYOF_BITMAP(o),
bitmap_range_not_in_bitmap,
only_utf8_locale_invlist,
- o);
+ o,
+
+ /* Can't try inverting for a
+ * better display if there are
+ * things that haven't been
+ * resolved */
+ unresolved != NULL);
SvREFCNT_dec(bitmap_range_not_in_bitmap);
/* If there are user-defined properties which haven't been defined yet,
- * output them, in a separate [] from the bitmap range stuff */
+ * output them. If the result is not to be inverted, it is clearest to
+ * output them in a separate [] from the bitmap range stuff. If the
+ * result is to be complemented, we have to show everything in one [],
+ * as the inversion applies to the whole thing. Use {braces} to
+ * separate them from anything in the bitmap and anything above the
+ * bitmap. */
if (unresolved) {
- if (do_sep) {
- Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
+ if (inverted) {
+ if (! do_sep) { /* If didn't output anything in the bitmap */
+ sv_catpvs(sv, "^");
+ }
+ sv_catpvs(sv, "{");
}
- if (flags & ANYOF_INVERT) {
- sv_catpvs(sv, "^");
+ else if (do_sep) {
+ Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
}
sv_catsv(sv, unresolved);
- do_sep = TRUE;
- SvREFCNT_dec_NN(unresolved);
+ if (inverted) {
+ sv_catpvs(sv, "}");
+ }
+ do_sep = ! inverted;
}
/* And, finally, add the above-the-bitmap stuff */
@@ -18924,9 +18953,11 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
}
- /* And, for easy of understanding, it is always output not-shown as
- * complemented */
- if (flags & ANYOF_INVERT) {
+ /* And, for easy of understanding, it is shown in the
+ * uncomplemented form if possible. The one exception being if
+ * there are unresolved items, where the inversion has to be
+ * delayed until runtime */
+ if (inverted && ! unresolved) {
_invlist_invert(nonbitmap_invlist);
_invlist_subtract(nonbitmap_invlist, PL_InBitmap, &nonbitmap_invlist);
}
@@ -18963,6 +18994,8 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
/* And finally the matching, closing ']' */
Perl_sv_catpvf(aTHX_ sv, "%s]", PL_colors[1]);
+
+ SvREFCNT_dec(unresolved);
}
else if (k == POSIXD || k == NPOSIXD) {
U8 index = FLAGS(o) * 2;
@@ -19887,7 +19920,9 @@ S_put_charclass_bitmap_innards_common(pTHX_
)
{
/* Create and return an SV containing a displayable version of the bitmap
- * and associated information determined by the input parameters. */
+ * and associated information determined by the input parameters. If the
+ * output would have been only the inversion indicator '^', NULL is instead
+ * returned. */
SV * output;
@@ -19946,9 +19981,8 @@ S_put_charclass_bitmap_innards_common(pTHX_
}
}
- /* If the only thing we output is the '^', clear it */
if (invert && SvCUR(output) == 1) {
- SvCUR_set(output, 0);
+ return NULL;
}
return output;
@@ -19959,7 +19993,8 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
char *bitmap,
SV *nonbitmap_invlist,
SV *only_utf8_locale_invlist,
- const regnode * const node)
+ const regnode * const node,
+ const bool force_as_is_display)
{
/* Appends to 'sv' a displayable version of the innards of the bracketed
* character class defined by the other arguments:
@@ -19975,13 +20010,16 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
* 'node' is the regex pattern node. It is needed only when the above two
* parameters are not null, and is passed so that this routine can
* tease apart the various reasons for them.
+ * 'force_as_is_display' is TRUE if this routine should definitely NOT try
+ * to invert things to see if that leads to a cleaner display. If
+ * FALSE, this routine is free to use its judgment about doing this.
*
* It returns TRUE if there was actually something output. (It may be that
* the bitmap, etc is empty.)
*
* When called for outputting the bitmap of a non-ANYOF node, just pass the
- * bitmap, with the succeeding parameters set to NULL.
- *
+ * bitmap, with the succeeding parameters set to NULL, and the final one to
+ * FALSE.
*/
/* In general, it tries to display the 'cleanest' representation of the
@@ -19989,7 +20027,7 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
* whether the class itself is to be inverted. However, there are some
* cases where it can't try inverting, as what actually matches isn't known
* until runtime, and hence the inversion isn't either. */
- bool inverting_allowed = TRUE;
+ bool inverting_allowed = ! force_as_is_display;
int i;
STRLEN orig_sv_cur = SvCUR(sv);
@@ -20118,7 +20156,10 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
/* If have to take the output as-is, just do that */
if (! inverting_allowed) {
- sv_catsv(sv, as_is_display);
+ if (as_is_display) {
+ sv_catsv(sv, as_is_display);
+ SvREFCNT_dec_NN(as_is_display);
+ }
}
else { /* But otherwise, create the output again on the inverted input, and
use whichever version is shorter */
@@ -20176,17 +20217,19 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
/* Use the shortest representation, taking into account our bias
* against showing it inverted */
- if (SvCUR(inverted_display) + inverted_bias
- < SvCUR(as_is_display) + as_is_bias)
+ if ( inverted_display
+ && ( ! as_is_display
+ || ( SvCUR(inverted_display) + inverted_bias
+ < SvCUR(as_is_display) + as_is_bias)))
{
sv_catsv(sv, inverted_display);
}
- else {
+ else if (as_is_display) {
sv_catsv(sv, as_is_display);
}
- SvREFCNT_dec_NN(as_is_display);
- SvREFCNT_dec_NN(inverted_display);
+ SvREFCNT_dec(as_is_display);
+ SvREFCNT_dec(inverted_display);
}
SvREFCNT_dec_NN(invlist);
diff --git a/gnu/usr.bin/perl/regen/lib_cleanup.pl b/gnu/usr.bin/perl/regen/lib_cleanup.pl
index d43b4b222f8..c9d6e434bd4 100644
--- a/gnu/usr.bin/perl/regen/lib_cleanup.pl
+++ b/gnu/usr.bin/perl/regen/lib_cleanup.pl
@@ -74,12 +74,6 @@ foreach my $file (@ext) {
$package = $1;
last;
}
- elsif (/^\s*package\s*$/) {
- # If they're hiding their package name, we ignore them
- ++$ignore{"/$path"};
- $package='';
- last;
- }
}
close $fh
or die "Can't close $file: $!";
diff --git a/gnu/usr.bin/perl/regen/opcodes b/gnu/usr.bin/perl/regen/opcodes
index 9ea0753ffef..6238426a67d 100644
--- a/gnu/usr.bin/perl/regen/opcodes
+++ b/gnu/usr.bin/perl/regen/opcodes
@@ -165,12 +165,12 @@ scmp string comparison (cmp) ck_null ifst2 S S
bit_and bitwise and (&) ck_bitop fst2 S S|
bit_xor bitwise xor (^) ck_bitop fst2 S S|
bit_or bitwise or (|) ck_bitop fst2 S S|
-nbit_and numeric bitiwse and (&) ck_bitop fsT2 S S|
+nbit_and numeric bitwise and (&) ck_bitop fsT2 S S|
nbit_xor numeric bitwise xor (^) ck_bitop fsT2 S S|
nbit_or numeric bitwise or (|) ck_bitop fsT2 S S|
-sbit_and string bitiwse and (&) ck_bitop fst2 S S|
-sbit_xor string bitwise xor (^) ck_bitop fst2 S S|
-sbit_or string bitwise or (|) ck_bitop fst2 S S|
+sbit_and string bitwise and (&.) ck_bitop fst2 S S|
+sbit_xor string bitwise xor (^.) ck_bitop fst2 S S|
+sbit_or string bitwise or (|.) ck_bitop fst2 S S|
negate negation (-) ck_null Ifst1 S
i_negate integer negation (-) ck_null ifst1 S
diff --git a/gnu/usr.bin/perl/regen/warnings.pl b/gnu/usr.bin/perl/regen/warnings.pl
index 22c9c1531f8..dae0cf1a303 100644
--- a/gnu/usr.bin/perl/regen/warnings.pl
+++ b/gnu/usr.bin/perl/regen/warnings.pl
@@ -358,8 +358,10 @@ EOM
print $warn <<'EOM';
-#define isLEXWARN_on cBOOL(PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off cBOOL(PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on \
+ cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off \
+ cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
#define isWARN_ONCE (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
#define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)))
#define isWARNf_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)+1))
diff --git a/gnu/usr.bin/perl/sv.c b/gnu/usr.bin/perl/sv.c
index decc47c3dd4..90b2ced3270 100644
--- a/gnu/usr.bin/perl/sv.c
+++ b/gnu/usr.bin/perl/sv.c
@@ -9706,6 +9706,8 @@ Perl_sv_resetpvn(pTHX_ const char *s, STRLEN len, HV * const stash)
if (!todo[(U8)*HeKEY(entry)])
continue;
gv = MUTABLE_GV(HeVAL(entry));
+ if (!isGV(gv))
+ continue;
sv = GvSV(gv);
if (sv && !SvREADONLY(sv)) {
SV_CHECK_THINKFIRST_COW_DROP(sv);
@@ -10983,8 +10985,9 @@ Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen,
* the hexadecimal values (for %a/%A). The nv is the NV where the value
* are being extracted from (either directly from the long double in-memory
* presentation, or from the uquad computed via frexp+ldexp). frexp also
- * is used to update the exponent. vhex is the pointer to the beginning
- * of the output buffer (of VHEX_SIZE).
+ * is used to update the exponent. The subnormal is set to true
+ * for IEEE 754 subnormals/denormals (including the x86 80-bit format).
+ * The vhex is the pointer to the beginning of the output buffer of VHEX_SIZE.
*
* The tricky part is that S_hextract() needs to be called twice:
* the first time with vend as NULL, and the second time with vend as
@@ -10994,14 +10997,15 @@ Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen,
* (the extraction of the hexadecimal values) takes place.
* Sanity failures cause fatal failures during both rounds. */
STATIC U8*
-S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
+S_hextract(pTHX_ const NV nv, int* exponent, bool *subnormal,
+ U8* vhex, U8* vend)
{
U8* v = vhex;
int ix;
int ixmin = 0, ixmax = 0;
- /* XXX Inf/NaN/denormal handling in the HEXTRACT_IMPLICIT_BIT,
- * and elsewhere. */
+ /* XXX Inf/NaN are not handled here, since it is
+ * assumed they are to be output as "Inf" and "NaN". */
/* These macros are just to reduce typos, they have multiple
* repetitions below, but usually only one (or sometimes two)
@@ -11034,13 +11038,20 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
for (ix = a; ix >= b; ix--) { HEXTRACT_BYTE(ix); }
#define HEXTRACT_BYTES_BE(a, b) \
for (ix = a; ix <= b; ix++) { HEXTRACT_BYTE(ix); }
+#define HEXTRACT_GET_SUBNORMAL(nv) *subnormal = Perl_fp_class_denorm(nv)
#define HEXTRACT_IMPLICIT_BIT(nv) \
STMT_START { \
- if (vend) *v++ = ((nv) == 0.0) ? 0 : 1; else v++; \
+ if (!*subnormal) { \
+ if (vend) *v++ = ((nv) == 0.0) ? 0 : 1; else v++; \
+ } \
} STMT_END
-/* Most formats do. Those which don't should undef this. */
+/* Most formats do. Those which don't should undef this.
+ *
+ * But also note that IEEE 754 subnormals do not have it, or,
+ * expressed alternatively, their implicit bit is zero. */
#define HEXTRACT_HAS_IMPLICIT_BIT
+
/* Many formats do. Those which don't should undef this. */
#define HEXTRACT_HAS_TOP_NYBBLE
@@ -11054,6 +11065,7 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
const U8* vmaxend = vhex + HEXTRACTSIZE;
PERL_UNUSED_VAR(ix); /* might happen */
(void)Perl_frexp(PERL_ABS(nv), exponent);
+ *subnormal = FALSE;
if (vend && (vend <= vhex || vend > vmaxend)) {
/* diag_listed_as: Hexadecimal float: internal error (%s) */
Perl_croak(aTHX_ "Hexadecimal float: internal error (entry)");
@@ -11063,10 +11075,11 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
#if defined(USE_LONG_DOUBLE) && (NVSIZE > DOUBLESIZE)
# if LONG_DOUBLEKIND == LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
/* Used in e.g. VMS and HP-UX IA-64, e.g. -0.1L:
- * 9a 99 99 99 99 99 99 99 99 99 99 99 99 99 fb 3f */
+ * 9a 99 99 99 99 99 99 99 99 99 99 99 99 99 fb bf */
/* The bytes 13..0 are the mantissa/fraction,
* the 15,14 are the sign+exponent. */
const U8* nvp = (const U8*)(&nv);
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_IMPLICIT_BIT(nv);
# undef HEXTRACT_HAS_TOP_NYBBLE
HEXTRACT_BYTES_LE(13, 0);
@@ -11076,18 +11089,21 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
/* The bytes 2..15 are the mantissa/fraction,
* the 0,1 are the sign+exponent. */
const U8* nvp = (const U8*)(&nv);
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_IMPLICIT_BIT(nv);
# undef HEXTRACT_HAS_TOP_NYBBLE
HEXTRACT_BYTES_BE(2, 15);
# elif LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
/* x86 80-bit "extended precision", 64 bits of mantissa / fraction /
- * significand, 15 bits of exponent, 1 bit of sign. NVSIZE can
- * be either 12 (ILP32, Solaris x86) or 16 (LP64, Linux and OS X),
- * meaning that 2 or 6 bytes are empty padding. */
- /* The bytes 7..0 are the mantissa/fraction */
+ * significand, 15 bits of exponent, 1 bit of sign. No implicit bit.
+ * NVSIZE can be either 12 (ILP32, Solaris x86) or 16 (LP64, Linux
+ * and OS X), meaning that 2 or 6 bytes are empty padding. */
+ /* The bytes 0..1 are the sign+exponent,
+ * the bytes 2..9 are the mantissa/fraction. */
const U8* nvp = (const U8*)(&nv);
# undef HEXTRACT_HAS_IMPLICIT_BIT
# undef HEXTRACT_HAS_TOP_NYBBLE
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_BYTES_LE(7, 0);
# elif LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
/* Does this format ever happen? (Wikipedia says the Motorola
@@ -11097,6 +11113,7 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
const U8* nvp = (const U8*)(&nv);
# undef HEXTRACT_HAS_IMPLICIT_BIT
# undef HEXTRACT_HAS_TOP_NYBBLE
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_BYTES_BE(0, 7);
# else
# define HEXTRACT_FALLBACK
@@ -11132,18 +11149,21 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
# ifdef HEXTRACT_LITTLE_ENDIAN
/* 0 1 2 3 4 5 6 7 (MSB = 7, LSB = 0, 6+7 = exponent+sign) */
const U8* nvp = (const U8*)(&nv);
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_IMPLICIT_BIT(nv);
HEXTRACT_TOP_NYBBLE(6);
HEXTRACT_BYTES_LE(5, 0);
# elif defined(HEXTRACT_BIG_ENDIAN)
/* 7 6 5 4 3 2 1 0 (MSB = 7, LSB = 0, 6+7 = exponent+sign) */
const U8* nvp = (const U8*)(&nv);
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_IMPLICIT_BIT(nv);
HEXTRACT_TOP_NYBBLE(1);
HEXTRACT_BYTES_BE(2, 7);
# elif DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
/* 4 5 6 7 0 1 2 3 (MSB = 7, LSB = 0, 6:7 = nybble:exponent:sign) */
const U8* nvp = (const U8*)(&nv);
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_IMPLICIT_BIT(nv);
HEXTRACT_TOP_NYBBLE(2); /* 6 */
HEXTRACT_BYTE(1); /* 5 */
@@ -11155,6 +11175,7 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
# elif DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
/* 3 2 1 0 7 6 5 4 (MSB = 7, LSB = 0, 7:6 = sign:exponent:nybble) */
const U8* nvp = (const U8*)(&nv);
+ HEXTRACT_GET_SUBNORMAL(nv);
HEXTRACT_IMPLICIT_BIT(nv);
HEXTRACT_TOP_NYBBLE(5); /* 6 */
HEXTRACT_BYTE(6); /* 5 */
@@ -11171,6 +11192,7 @@ S_hextract(pTHX_ const NV nv, int* exponent, U8* vhex, U8* vend)
# endif
#endif /* #if defined(USE_LONG_DOUBLE) && (NVSIZE > DOUBLESIZE) #else */
# ifdef HEXTRACT_FALLBACK
+ HEXTRACT_GET_SUBNORMAL(nv);
# undef HEXTRACT_HAS_TOP_NYBBLE /* Meaningless, but consistent. */
/* The fallback is used for the double-double format, and
* for unknown long double formats, and for unknown double
@@ -12296,7 +12318,13 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
need = BIT_DIGITS(i);
} /* if i < 0, the number of digits is hard to predict. */
}
- need += has_precis ? precis : 6; /* known default */
+
+ {
+ STRLEN pr = has_precis ? precis : 6; /* known default */
+ if (need >= ((STRLEN)~0) - pr)
+ croak_memory_wrap();
+ need += pr;
+ }
if (need < width)
need = width;
@@ -12367,10 +12395,12 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
#endif /* HAS_LDBL_SPRINTF_BUG */
- need += 20; /* fudge factor */
+ if (need >= ((STRLEN)~0) - 40)
+ croak_memory_wrap();
+ need += 40; /* fudge factor */
if (PL_efloatsize < need) {
Safefree(PL_efloatbuf);
- PL_efloatsize = need + 20; /* more fudge */
+ PL_efloatsize = need;
Newx(PL_efloatbuf, PL_efloatsize, char);
PL_efloatbuf[0] = '\0';
}
@@ -12402,6 +12432,7 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
U8* vend; /* pointer to one beyond last digit of vhex */
U8* vfnz = NULL; /* first non-zero */
U8* vlnz = NULL; /* last non-zero */
+ U8* v0 = NULL; /* first output */
const bool lower = (c == 'a');
/* At output the values of vhex (up to vend) will
* be mapped through the xdig to get the actual
@@ -12410,33 +12441,47 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
int zerotail = 0; /* how many extra zeros to append */
int exponent = 0; /* exponent of the floating point input */
bool hexradix = FALSE; /* should we output the radix */
+ bool subnormal = FALSE; /* IEEE 754 subnormal/denormal */
+ bool negative = FALSE;
- /* XXX: denormals, NaN, Inf.
+ /* XXX: NaN, Inf -- though they are printed as "NaN" and "Inf".
*
* For example with denormals, (assuming the vanilla
* 64-bit double): the exponent is zero. 1xp-1074 is
* the smallest denormal and the smallest double, it
- * should be output as 0x0.0000000000001p-1022 to
+ * could be output also as 0x0.0000000000001p-1022 to
* match its internal structure. */
- vend = S_hextract(aTHX_ nv, &exponent, vhex, NULL);
- S_hextract(aTHX_ nv, &exponent, vhex, vend);
+ vend = S_hextract(aTHX_ nv, &exponent, &subnormal, vhex, NULL);
+ S_hextract(aTHX_ nv, &exponent, &subnormal, vhex, vend);
#if NVSIZE > DOUBLESIZE
# ifdef HEXTRACT_HAS_IMPLICIT_BIT
/* In this case there is an implicit bit,
- * and therefore the exponent is shifted shift by one. */
+ * and therefore the exponent is shifted by one. */
exponent--;
# else
- /* In this case there is no implicit bit,
- * and the exponent is shifted by the first xdigit. */
- exponent -= 4;
+# ifdef NV_X86_80_BIT
+ if (subnormal) {
+ /* The subnormals of the x86-80 have a base exponent of -16382,
+ * (while the physical exponent bits are zero) but the frexp()
+ * returned the scientific-style floating exponent. We want
+ * to map the last one as:
+ * -16831..-16384 -> -16382 (the last normal is 0x1p-16382)
+ * -16835..-16388 -> -16384
+ * since we want to keep the first hexdigit
+ * as one of the [8421]. */
+ exponent = -4 * ( (exponent + 1) / -4) - 2;
+ } else {
+ exponent -= 4;
+ }
+# endif
+ /* TBD: other non-implicit-bit platforms than the x86-80. */
# endif
#endif
- if (fv < 0
- || Perl_signbit(nv)
- )
+ negative = fv < 0 || Perl_signbit(nv);
+ if (negative)
*p++ = '-';
else if (plus)
*p++ = plus;
@@ -12471,50 +12516,98 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
exponent--;
#endif
- if (precis > 0) {
- if ((SSize_t)(precis + 1) < vend - vhex) {
- bool round;
-
- v = vhex + precis + 1;
- /* Round away from zero: if the tail
- * beyond the precis xdigits is equal to
- * or greater than 0x8000... */
- round = *v > 0x8;
- if (!round && *v == 0x8) {
- for (v++; v < vend; v++) {
- if (*v) {
- round = TRUE;
- break;
- }
+ if (subnormal) {
+#ifndef NV_X86_80_BIT
+ if (vfnz[0] > 1) {
+ /* IEEE 754 subnormals (but not the x86 80-bit):
+ * we want "normalize" the subnormal,
+ * so we need to right shift the hex nybbles
+ * so that the output of the subnormal starts
+ * from the first true bit. (Another, equally
+ * valid, policy would be to dump the subnormal
+ * nybbles as-is, to display the "physical" layout.) */
+ int i, n;
+ U8 *vshr;
+ /* Find the ceil(log2(v[0])) of
+ * the top non-zero nybble. */
+ for (i = vfnz[0], n = 0; i > 1; i >>= 1, n++) { }
+ assert(n < 4);
+ vlnz[1] = 0;
+ for (vshr = vlnz; vshr >= vfnz; vshr--) {
+ vshr[1] |= (vshr[0] & (0xF >> (4 - n))) << (4 - n);
+ vshr[0] >>= n;
+ }
+ if (vlnz[1]) {
+ vlnz++;
+ }
+ }
+#endif
+ v0 = vfnz;
+ } else {
+ v0 = vhex;
+ }
+
+ if (has_precis) {
+ U8* ve = (subnormal ? vlnz + 1 : vend);
+ SSize_t vn = ve - (subnormal ? vfnz : vhex);
+ if ((SSize_t)(precis + 1) < vn) {
+ bool overflow = FALSE;
+ if (v0[precis + 1] < 0x8) {
+ /* Round down, nothing to do. */
+ } else if (v0[precis + 1] > 0x8) {
+ /* Round up. */
+ v0[precis]++;
+ overflow = v0[precis] > 0xF;
+ v0[precis] &= 0xF;
+ } else { /* v0[precis] == 0x8 */
+ /* Half-point: round towards the one
+ * with the even least-significant digit:
+ * 08 -> 0 88 -> 8
+ * 18 -> 2 98 -> a
+ * 28 -> 2 a8 -> a
+ * 38 -> 4 b8 -> c
+ * 48 -> 4 c8 -> c
+ * 58 -> 6 d8 -> e
+ * 68 -> 6 e8 -> e
+ * 78 -> 8 f8 -> 10 */
+ if ((v0[precis] & 0x1)) {
+ v0[precis]++;
}
+ overflow = v0[precis] > 0xF;
+ v0[precis] &= 0xF;
}
- if (round) {
- for (v = vhex + precis; v >= vhex; v--) {
- if (*v < 0xF) {
- (*v)++;
+
+ if (overflow) {
+ for (v = v0 + precis - 1; v >= v0; v--) {
+ (*v)++;
+ overflow = *v > 0xF;
+ (*v) &= 0xF;
+ if (!overflow) {
break;
}
- *v = 0;
- if (v == vhex) {
- /* If the carry goes all the way to
- * the front, we need to output
- * a single '1'. This goes against
- * the "xdigit and then radix"
- * but since this is "cannot happen"
- * category, that is probably good. */
- *p++ = xdig[1];
- }
+ }
+ if (v == v0 - 1 && overflow) {
+ /* If the overflow goes all the
+ * way to the front, we need to
+ * insert 0x1 in front, and adjust
+ * the exponent. */
+ Move(v0, v0 + 1, vn, char);
+ *v0 = 0x1;
+ exponent += 4;
}
}
+
/* The new effective "last non zero". */
- vlnz = vhex + precis;
+ vlnz = v0 + precis;
}
else {
- zerotail = precis - (vlnz - vhex);
+ zerotail =
+ subnormal ? precis - vn + 1 :
+ precis - (vlnz - vhex);
}
}
- v = vhex;
+ v = v0;
*p++ = xdig[*v++];
/* If there are non-zero xdigits, the radix
@@ -12574,12 +12667,18 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
memset(PL_efloatbuf + elen, ' ', width - elen);
}
else if (fill == '0') {
- /* Insert the zeros between the "0x" and
- * the digits, otherwise we end up with
- * "0000xHHH..." */
+ /* Insert the zeros after the "0x" and the
+ * the potential sign, but before the digits,
+ * otherwise we end up with "0000xH.HHH...",
+ * when we want "0x000H.HHH..." */
STRLEN nzero = width - elen;
char* zerox = PL_efloatbuf + 2;
- Move(zerox, zerox + nzero, elen - 2, char);
+ STRLEN nmove = elen - 2;
+ if (negative || plus) {
+ zerox++;
+ nmove--;
+ }
+ Move(zerox, zerox + nzero, nmove, char);
memset(zerox, fill, nzero);
}
else {
diff --git a/gnu/usr.bin/perl/t/base/lex.t b/gnu/usr.bin/perl/t/base/lex.t
index 1aa563d7560..fe46f14d0a0 100644
--- a/gnu/usr.bin/perl/t/base/lex.t
+++ b/gnu/usr.bin/perl/t/base/lex.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..104\n";
+print "1..105\n";
$x = 'x';
@@ -522,3 +522,9 @@ eval q|s##[}#e|;
eval ('qq{@{[0}*sub{]]}}}=sub{0' . "\c[");
print "ok $test - 125350\n"; $test++;
}
+
+{
+ # Used to crash [perl #128171]
+ eval ('/@0{0*->@*/*]');
+ print "ok $test - 128171\n"; $test++;
+}
diff --git a/gnu/usr.bin/perl/t/io/socket.t b/gnu/usr.bin/perl/t/io/socket.t
index b51079a4a5a..54e4438717e 100644
--- a/gnu/usr.bin/perl/t/io/socket.t
+++ b/gnu/usr.bin/perl/t/io/socket.t
@@ -128,6 +128,28 @@ SKIP: {
}
}
+SKIP:
+{
+ eval { require Errno; defined &Errno::EMFILE }
+ or skip "Can't load Errno or EMFILE not defined", 1;
+ my @socks;
+ my $sock_limit = 1000; # don't consume every file in the system
+ # Default limits on various systems I have:
+ # 65536 - Linux
+ # 256 - Solaris
+ # 128 - NetBSD
+ # 256 - Cygwin
+ # 256 - darwin
+ while (@socks < $sock_limit) {
+ socket my $work, PF_INET, SOCK_STREAM, $tcp
+ or last;
+ push @socks, $work;
+ }
+ @socks == $sock_limit
+ and skip "Didn't run out of open handles", 1;
+ is(0+$!, Errno::EMFILE(), "check correct errno for too many files");
+}
+
done_testing();
my @child_tests;
diff --git a/gnu/usr.bin/perl/t/lib/croak/op b/gnu/usr.bin/perl/t/lib/croak/op
index cd3a6544e36..439878959e9 100644
--- a/gnu/usr.bin/perl/t/lib/croak/op
+++ b/gnu/usr.bin/perl/t/lib/croak/op
@@ -65,6 +65,54 @@ my main $f;
EXPECT
No such class field "c" in variable $f of type main at - line 3.
########
+# NAME Num-specific &= on @array
+use feature 'bitwise';
+@a &= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in numeric bitwise and (&) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME Num-specific |= on @array
+use feature 'bitwise';
+@a |= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in numeric bitwise or (|) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME Num-specific ^= on @array
+use feature 'bitwise';
+@a ^= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in numeric bitwise xor (^) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME &.= on @array
+use feature 'bitwise';
+@a &.= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in string bitwise and (&.) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME |.= on @array
+use feature 'bitwise';
+@a |.= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in string bitwise or (|.) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
+# NAME ^.= on @array
+use feature 'bitwise';
+@a ^.= 1;
+EXPECT
+The bitwise feature is experimental at - line 2.
+Can't modify array dereference in string bitwise xor (^.) at - line 2, near "1;"
+Execution of - aborted due to compilation errors.
+########
# NAME Can't declare conditional
my($a?$b:$c)
EXPECT
diff --git a/gnu/usr.bin/perl/t/lib/h2ph.pht b/gnu/usr.bin/perl/t/lib/h2ph.pht
index cda8d21051c..f068d6dae46 100644
--- a/gnu/usr.bin/perl/t/lib/h2ph.pht
+++ b/gnu/usr.bin/perl/t/lib/h2ph.pht
@@ -90,6 +90,10 @@ unless(defined(&_H2PH_H_)) {
}
eval("sub flim () { 0; }") unless defined(&flim);
eval("sub flam () { 1; }") unless defined(&flam);
+ eval 'sub blli_in_use {
+ my($blli) = @_;
+ eval q({ ($blli->{l2_proto}) || ($blli->{l3_proto}); });
+ }' unless defined(&blli_in_use);
eval 'sub multiline () {"multilinestring";}' unless defined(&multiline);
}
1;
diff --git a/gnu/usr.bin/perl/t/op/evalbytes.t b/gnu/usr.bin/perl/t/op/evalbytes.t
index cca7c04787a..5e2af76d21b 100644
--- a/gnu/usr.bin/perl/t/op/evalbytes.t
+++ b/gnu/usr.bin/perl/t/op/evalbytes.t
@@ -6,7 +6,7 @@ BEGIN {
require './test.pl'; require './charset_tools.pl';
}
-plan(tests => 8);
+plan(tests => 9);
{
local $SIG{__WARN__} = sub {};
@@ -33,3 +33,7 @@ chop($upcode = "use utf8; $U_100" . chr 256);
is evalbytes $upcode, chr 256, 'use utf8 within evalbytes on utf8 string';
eval { evalbytes chr 256 };
like $@, qr/Wide character/, 'evalbytes croaks on non-bytes';
+
+eval 'evalbytes S';
+ok 1, '[RT #129196] evalbytes S should not segfault';
+
diff --git a/gnu/usr.bin/perl/t/op/getppid.t b/gnu/usr.bin/perl/t/op/getppid.t
index e3175a80c35..a8d0f2cb3b8 100755
--- a/gnu/usr.bin/perl/t/op/getppid.t
+++ b/gnu/usr.bin/perl/t/op/getppid.t
@@ -97,7 +97,7 @@ sub fork_and_retrieve {
}
} else {
# Fudge it by waiting a bit more:
- sleep 3;
+ sleep 2;
}
my $ppid2 = getppid();
print $w "$how,$ppid1,$ppid2\n";
diff --git a/gnu/usr.bin/perl/t/op/gv.t b/gnu/usr.bin/perl/t/op/gv.t
index d71fd0a54d9..03ae46e46b2 100644
--- a/gnu/usr.bin/perl/t/op/gv.t
+++ b/gnu/usr.bin/perl/t/op/gv.t
@@ -12,7 +12,7 @@ BEGIN {
use warnings;
-plan(tests => 276 );
+plan(tests => 277 );
# type coercion on assignment
$foo = 'foo';
@@ -1153,6 +1153,22 @@ pass "No crash due to CvGV pointing to glob copy in the stash";
is($c_125840, 1, 'RT #125840: $c=$d');
}
+# [perl #128597] Crash when gp_free calls ckWARN_d
+# I am not sure this test even belongs in this file, as the crash was the
+# result of various features interacting. But a call to ckWARN_d from
+# gv.c:gp_free triggered the crash, so this seems as good a place as any.
+# ‘die’ (or any abnormal scope exit) can cause the current cop to be freed,
+# if the subroutine containing the ‘die’ gets freed as a result. That
+# causes PL_curcop to be set to NULL. If a writable handle gets freed
+# while PL_curcop is NULL, then gp_free will call ckWARN_d while that con-
+# dition still holds, so ckWARN_d needs to know about PL_curcop possibly
+# being NULL.
+SKIP: {
+ skip_if_miniperl("No PerlIO::scalar on miniperl", 1);
+ runperl(prog => 'open my $fh, q|>|, \$buf;'
+ .'my $sub = eval q|sub {exit 0}|; $sub->()');
+ is ($? & 127, 0,"[perl #128597] No crash when gp_free calls ckWARN_d");
+}
__END__
Perl
diff --git a/gnu/usr.bin/perl/t/op/hexfp.t b/gnu/usr.bin/perl/t/op/hexfp.t
index 4b2a96d051b..c4c08cc3f08 100644
--- a/gnu/usr.bin/perl/t/op/hexfp.t
+++ b/gnu/usr.bin/perl/t/op/hexfp.t
@@ -10,7 +10,7 @@ use strict;
use Config;
-plan(tests => 105);
+plan(tests => 109);
# Test hexfloat literals.
@@ -243,6 +243,19 @@ SKIP:
}
}
+# [perl #128919] limited exponent range in hex fp literal with long double
+SKIP: {
+ skip("non-80-bit-long-double", 4)
+ unless ($Config{uselongdouble} &&
+ ($Config{nvsize} == 16 || $Config{nvsize} == 12) &&
+ ($Config{longdblkind} == 3 ||
+ $Config{longdblkind} == 4));
+ is(0x1p-1074, 4.94065645841246544e-324);
+ is(0x1p-1075, 2.47032822920623272e-324, '[perl #128919]');
+ is(0x1p-1076, 1.23516411460311636e-324);
+ is(0x1p-16445, 3.6451995318824746e-4951);
+}
+
# sprintf %a/%A testing is done in sprintf2.t,
# trickier than necessary because of long doubles,
# and because looseness of the spec.
diff --git a/gnu/usr.bin/perl/t/op/lex.t b/gnu/usr.bin/perl/t/op/lex.t
index c515449b487..269909e3457 100755
--- a/gnu/usr.bin/perl/t/op/lex.t
+++ b/gnu/usr.bin/perl/t/op/lex.t
@@ -7,7 +7,7 @@ use warnings;
BEGIN { chdir 't' if -d 't'; require './test.pl'; }
-plan(tests => 25);
+plan(tests => 26);
{
no warnings 'deprecated';
@@ -129,7 +129,7 @@ fresh_perl_is(
'* <null> ident'
);
SKIP: {
- skip "Different output on EBCDIC (presumably)", 2 if $::IS_EBCDIC;
+ skip "Different output on EBCDIC (presumably)", 3 if $::IS_EBCDIC;
fresh_perl_is(
qq'"ab}"ax;&\0z\x8Ao}\x82x;', <<gibberish,
Bareword found where operator expected at - line 1, near ""ab}"ax"
@@ -150,6 +150,13 @@ gibberish
{ stderr => 1 },
'gibberish containing &{+z} - used to crash [perl #123753]'
);
+ fresh_perl_is(
+ "\@{\327\n", <<\gibberisi,
+Unrecognized character \xD7; marked by <-- HERE after @{<-- HERE near column 3 at - line 1.
+gibberisi
+ { stderr => 1 },
+ '@ { \327 \n - used to garble output (or fail asan) [perl #128951]'
+ );
}
fresh_perl_is(
diff --git a/gnu/usr.bin/perl/t/op/method.t b/gnu/usr.bin/perl/t/op/method.t
index b915306b8ea..1fc99cfdf9b 100644
--- a/gnu/usr.bin/perl/t/op/method.t
+++ b/gnu/usr.bin/perl/t/op/method.t
@@ -13,7 +13,7 @@ BEGIN {
use strict;
no warnings 'once';
-plan(tests => 150);
+plan(tests => 151);
@A::ISA = 'B';
@B::ISA = 'C';
@@ -704,6 +704,10 @@ SKIP: {
"check unknown import() methods don't corrupt the stack");
}
+like runperl(prog => 'sub ub(){0} ub ub', stderr=>1), qr/Bareword found/,
+ '[perl #126482] Assert failure when mentioning a constant twice in a row';
+
+
__END__
#FF9900
#F78C08
diff --git a/gnu/usr.bin/perl/t/op/require_errors.t b/gnu/usr.bin/perl/t/op/require_errors.t
index 3d3d0270f0b..d57ee957001 100644
--- a/gnu/usr.bin/perl/t/op/require_errors.t
+++ b/gnu/usr.bin/perl/t/op/require_errors.t
@@ -8,7 +8,7 @@ BEGIN {
use strict;
use warnings;
-plan(tests => 17);
+plan(tests => 19);
my $nonfile = tempfile();
@@ -134,3 +134,11 @@ like $@, qr/^Can't locate strict\.pm\\0invalid: /, 'do nul check';
eval "require strict\0::invalid;";
like $@, qr/^syntax error at \(eval \d+\) line 1/, 'parse error with \0 in barewords module names';
+# Refs and globs that stringify with embedded nulls
+# These crashed from 5.20 to 5.24 [perl #128182].
+eval { no warnings 'syscalls'; require eval "qr/\0/" };
+like $@, qr/^Can't locate \(\?\^:\\0\):/,
+ 'require ref that stringifies with embedded null';
+eval { no strict; no warnings 'syscalls'; require *{"\0a"} };
+like $@, qr/^Can't locate \*main::\\0a:/,
+ 'require ref that stringifies with embedded null';
diff --git a/gnu/usr.bin/perl/t/op/reset.t b/gnu/usr.bin/perl/t/op/reset.t
index db82309e702..227c84a3d9a 100644
--- a/gnu/usr.bin/perl/t/op/reset.t
+++ b/gnu/usr.bin/perl/t/op/reset.t
@@ -7,7 +7,7 @@ BEGIN {
}
use strict;
-plan tests => 39;
+plan tests => 40;
package aiieee;
@@ -140,6 +140,16 @@ for our $z (*_) {
is $z, "*main::_", 'And the glob still has the right value';
}
+package _128106 {
+ # Crash on non-globs in the stash.
+ sub u; # stub without proto
+ sub v($); # proto stub
+ sub w{}; # as of 5.22, $::{w} == \&w
+ $::{x} = undef;
+ reset 'u-x';
+ ::ok (1, "no crash on non-globs in the stash");
+}
+
# This used to crash under threaded builds, because pmops were remembering
# their stashes by name, rather than by pointer.
fresh_perl_is( # it crashes more reliably with a smaller script
diff --git a/gnu/usr.bin/perl/t/op/sprintf2.t b/gnu/usr.bin/perl/t/op/sprintf2.t
index 43ed919be5d..7b1d2c4567e 100755
--- a/gnu/usr.bin/perl/t/op/sprintf2.t
+++ b/gnu/usr.bin/perl/t/op/sprintf2.t
@@ -21,6 +21,7 @@ print "# uvsize = $Config{uvsize}\n";
print "# nvsize = $Config{nvsize}\n";
print "# nv_preserves_uv_bits = $Config{nv_preserves_uv_bits}\n";
print "# d_quad = $Config{d_quad}\n";
+print "# uselongdouble = " . ($Config{uselongdouble} // 'undef') . "\n";
if ($Config{nvsize} == 8 &&
(
# IEEE-754 64-bit ("double precision"), the most common out there
@@ -219,7 +220,7 @@ if ($Config{nvsize} == 8 &&
[ '%a', '0.25', '0x1p-2' ],
[ '%a', '0.75', '0x1.8p-1' ],
[ '%a', '3.14', '0x1.91eb851eb851eb851eb851eb85p+1' ],
- [ '%a', '-1', '-0x0p+0' ],
+ [ '%a', '-1', '-0x1p+0' ],
[ '%a', '-3.14', '-0x1.91eb851eb851eb851eb851eb85p+1' ],
[ '%a', '0.1', '0x1.999999999999999999999999998p-4' ],
[ '%a', '1/7', '0x1.249249249249249249249249248p-3' ],
@@ -262,8 +263,6 @@ if ($Config{nvsize} == 8 &&
print "# no hexfloat tests\n";
}
-plan tests => 1408 + ($Q ? 0 : 12) + @hexfloat + 12;
-
use strict;
use Config;
@@ -622,7 +621,7 @@ for my $t (@hexfloat) {
ok($ok, "'$format' '$arg' -> '$result' cf '$expected'");
next;
}
- unless ($ok) {
+ if (!$ok && $result =~ /\./ && $expected =~ /\./) {
# It seems that there can be difference in the last bits:
# [perl #122578]
# got "0x1.5bf0a8b14576ap+1"
@@ -721,6 +720,7 @@ SKIP: {
SKIP: {
# [perl #127183] Non-canonical hexadecimal floats are parsed prematurely
+ # IEEE 754 64-bit
skip("nv_preserves_uv_bits is $Config{nv_preserves_uv_bits}, not 53", 3)
unless $Config{nv_preserves_uv_bits} == 53;
@@ -749,3 +749,159 @@ SKIP: {
"non-canonical form");
}
}
+
+# These are IEEE 754 64-bit subnormals (formerly known as denormals).
+# Keep these as strings so that non-IEEE-754 don't trip over them.
+my @subnormals = (
+ [ '1e-320', '%a', '0x1.fap-1064' ],
+ [ '1e-321', '%a', '0x1.94p-1067' ],
+ [ '1e-322', '%a', '0x1.4p-1070' ],
+ [ '1e-323', '%a', '0x1p-1073' ],
+ [ '1e-324', '%a', '0x0p+0' ], # underflow
+ [ '3e-320', '%a', '0x1.7b8p-1062' ],
+ [ '3e-321', '%a', '0x1.2f8p-1065' ],
+ [ '3e-322', '%a', '0x1.e8p-1069' ],
+ [ '3e-323', '%a', '0x1.8p-1072' ],
+ [ '3e-324', '%a', '0x1p-1074' ], # the smallest possible value
+ [ '7e-320', '%a', '0x1.bacp-1061' ],
+ [ '7e-321', '%a', '0x1.624p-1064' ],
+ [ '7e-322', '%a', '0x1.1cp-1067' ],
+ [ '7e-323', '%a', '0x1.cp-1071' ],
+ [ '7e-324', '%a', '0x1p-1074' ], # the smallest possible value, again
+ [ '3e-320', '%.4a', '0x1.7b80p-1062' ],
+ [ '3e-321', '%.4a', '0x1.2f80p-1065' ],
+ [ '3e-322', '%.4a', '0x1.e800p-1069' ],
+ [ '3e-323', '%.4a', '0x1.8000p-1072' ],
+ [ '3e-324', '%.4a', '0x1.0000p-1074' ],
+ [ '3e-320', '%.1a', '0x1.8p-1062' ],
+ [ '3e-321', '%.1a', '0x1.3p-1065' ],
+ [ '3e-322', '%.1a', '0x1.ep-1069' ],
+ [ '3e-323', '%.1a', '0x1.8p-1072' ],
+ [ '3e-324', '%.1a', '0x1.0p-1074' ],
+ [ '0x1.fffffffffffffp-1022', '%a', '0x1.fffffffffffffp-1022' ],
+ [ '0x0.fffffffffffffp-1022', '%a', '0x1.ffffffffffffep-1023' ],
+ [ '0x0.7ffffffffffffp-1022', '%a', '0x1.ffffffffffffcp-1024' ],
+ [ '0x0.3ffffffffffffp-1022', '%a', '0x1.ffffffffffff8p-1025' ],
+ [ '0x0.1ffffffffffffp-1022', '%a', '0x1.ffffffffffffp-1026' ],
+ [ '0x0.0ffffffffffffp-1022', '%a', '0x1.fffffffffffep-1027' ],
+ );
+
+SKIP: {
+ # [rt.perl.org #128843]
+ skip("non-IEEE-754-non-64-bit", scalar @subnormals + 34)
+ unless ($Config{nvsize} == 8 &&
+ $Config{nv_preserves_uv_bits} == 53 &&
+ ($Config{doublekind} == 3 ||
+ $Config{doublekind} == 4));
+
+ for my $t (@subnormals) {
+ # Note that "0x1p+2" is not considered numeric,
+ # since neither is "0x12", hence the eval.
+ my $s = sprintf($t->[1], eval $t->[0]);
+ is($s, $t->[2], "subnormal @$t got $s");
+ }
+
+ # [rt.perl.org #128888]
+ is(sprintf("%a", 1.03125), "0x1.08p+0");
+ is(sprintf("%.1a", 1.03125), "0x1.0p+0");
+ is(sprintf("%.0a", 1.03125), "0x1p+0", "[rt.perl.org #128888]");
+
+ # [rt.perl.org #128889]
+ is(sprintf("%.*a", -1, 1.03125), "0x1.08p+0", "[rt.perl.org #128889]");
+
+ # [rt.perl.org #128890]
+ is(sprintf("%a", 0x1.18p+0), "0x1.18p+0");
+ is(sprintf("%.1a", 0x1.08p+0), "0x1.0p+0");
+ is(sprintf("%.1a", 0x1.18p+0), "0x1.2p+0", "[rt.perl.org #128890]");
+ is(sprintf("%.1a", 0x1.28p+0), "0x1.2p+0");
+ is(sprintf("%.1a", 0x1.38p+0), "0x1.4p+0");
+ is(sprintf("%.1a", 0x1.48p+0), "0x1.4p+0");
+ is(sprintf("%.1a", 0x1.58p+0), "0x1.6p+0");
+ is(sprintf("%.1a", 0x1.68p+0), "0x1.6p+0");
+ is(sprintf("%.1a", 0x1.78p+0), "0x1.8p+0");
+ is(sprintf("%.1a", 0x1.88p+0), "0x1.8p+0");
+ is(sprintf("%.1a", 0x1.98p+0), "0x1.ap+0");
+ is(sprintf("%.1a", 0x1.a8p+0), "0x1.ap+0");
+ is(sprintf("%.1a", 0x1.b8p+0), "0x1.cp+0");
+ is(sprintf("%.1a", 0x1.c8p+0), "0x1.cp+0");
+ is(sprintf("%.1a", 0x1.d8p+0), "0x1.ep+0");
+ is(sprintf("%.1a", 0x1.e8p+0), "0x1.ep+0");
+ is(sprintf("%.1a", 0x1.f8p+0), "0x2.0p+0");
+
+ is(sprintf("%.1a", 0x1.10p+0), "0x1.1p+0");
+ is(sprintf("%.1a", 0x1.17p+0), "0x1.1p+0");
+ is(sprintf("%.1a", 0x1.19p+0), "0x1.2p+0");
+ is(sprintf("%.1a", 0x1.1fp+0), "0x1.2p+0");
+
+ is(sprintf("%.2a", 0x1.fffp+0), "0x2.00p+0");
+ is(sprintf("%.2a", 0xf.fffp+0), "0x2.00p+3");
+
+ # [rt.perl.org #128893]
+ is(sprintf("%020a", 1.5), "0x0000000000001.8p+0");
+ is(sprintf("%020a", -1.5), "-0x000000000001.8p+0", "[rt.perl.org #128893]");
+ is(sprintf("%+020a", 1.5), "+0x000000000001.8p+0", "[rt.perl.org #128893]");
+ is(sprintf("% 020a", 1.5), " 0x000000000001.8p+0", "[rt.perl.org #128893]");
+ is(sprintf("%20a", -1.5), " -0x1.8p+0");
+ is(sprintf("%+20a", 1.5), " +0x1.8p+0");
+ is(sprintf("% 20a", 1.5), " 0x1.8p+0");
+}
+
+# x86 80-bit long-double tests for
+# rt.perl.org #128843, #128888, #128889, #128890, #128893, #128909
+SKIP: {
+ skip("non-80-bit-long-double", 17)
+ unless ($Config{uselongdouble} &&
+ ($Config{nvsize} == 16 || $Config{nvsize} == 12) &&
+ ($Config{longdblkind} == 3 ||
+ $Config{longdblkind} == 4));
+
+ {
+ # The last normal for this format.
+ is(sprintf("%a", eval '0x1p-16382'), "0x8p-16385", "[rt.perl.org #128843]");
+
+ # The subnormals cause "exponent underflow" warnings,
+ # but that is not why we are here.
+ local $SIG{__WARN__} = sub {
+ die "$0: $_[0]" unless $_[0] =~ /exponent underflow/;
+ };
+
+ is(sprintf("%a", eval '0x1p-16383'), "0x4p-16382", "[rt.perl.org #128843]");
+ is(sprintf("%a", eval '0x1p-16384'), "0x2p-16382", "[rt.perl.org #128843]");
+ is(sprintf("%a", eval '0x1p-16385'), "0x1p-16382", "[rt.perl.org #128843]");
+ is(sprintf("%a", eval '0x1p-16386'), "0x8p-16386", "[rt.perl.org #128843]");
+ is(sprintf("%a", eval '0x1p-16387'), "0x4p-16386", "[rt.perl.org #128843]");
+ }
+ is(sprintf("%.0a", 1.03125), "0x8p-3", "[rt.perl.org #128888]");
+ is(sprintf("%.*a", -1, 1.03125), "0x8.4p-3", "[rt.perl.org #128889]");
+ is(sprintf("%.1a", 0x8.18p+0), "0x8.2p+0", "[rt.perl.org #128890]");
+ is(sprintf("%020a", -1.5), "-0x0000000000000cp-3", "[rt.perl.org #128893]");
+ is(sprintf("%+020a", 1.5), "+0x0000000000000cp-3", "[rt.perl.org #128893]");
+ is(sprintf("% 020a", 1.5), " 0x0000000000000cp-3", "[rt.perl.org #128893]");
+ is(sprintf("%a", 1.9999999999999999999), "0xf.fffffffffffffffp-3");
+ is(sprintf("%.3a", 1.9999999999999999999), "0x1.000p+1", "[rt.perl.org #128909]");
+ is(sprintf("%.2a", 1.9999999999999999999), "0x1.00p+1");
+ is(sprintf("%.1a", 1.9999999999999999999), "0x1.0p+1");
+ is(sprintf("%.0a", 1.9999999999999999999), "0x1p+1");
+}
+
+# quadmath tests for rt.perl.org #128843
+SKIP: {
+ skip "need quadmath", 7, unless $Config{usequadmath};
+
+ is(sprintf("%a", eval '0x1p-16382'), '0x1p-16382'); # last normal
+
+ local $SIG{__WARN__} = sub {
+ die "$0: $_[0]" unless $_[0] =~ /exponent underflow/;
+ };
+
+ is(sprintf("%a", eval '0x1p-16383'), '0x1p-16383');
+ is(sprintf("%a", eval '0x1p-16384'), '0x1p-16384');
+
+ is(sprintf("%a", eval '0x1p-16491'), '0x1p-16491');
+ is(sprintf("%a", eval '0x1p-16492'), '0x1p-16492');
+ is(sprintf("%a", eval '0x1p-16493'), '0x1p-16493'); # last denormal
+
+ is(sprintf("%a", eval '0x1p-16494'), '0x1p-16494'); # underflow
+}
+
+done_testing();
diff --git a/gnu/usr.bin/perl/t/op/stash.t b/gnu/usr.bin/perl/t/op/stash.t
index 151b7296f1a..b8e0f349667 100644
--- a/gnu/usr.bin/perl/t/op/stash.t
+++ b/gnu/usr.bin/perl/t/op/stash.t
@@ -7,7 +7,7 @@ BEGIN {
BEGIN { require "./test.pl"; }
-plan( tests => 51 );
+plan( tests => 52 );
# Used to segfault (bug #15479)
fresh_perl_like(
@@ -334,3 +334,10 @@ is runperl(
),
"ok\n",
'[perl #123847] no crash from *foo::=*bar::=*glob_with_hash';
+
+is runperl(
+ prog => '%h; *::::::=*h; delete $::{q|::|}; print qq|ok\n|',
+ stderr => 1,
+ ),
+ "ok\n",
+ '[perl #128086] no crash from assigning hash to *:::::: & deleting it';
diff --git a/gnu/usr.bin/perl/t/op/svleak.t b/gnu/usr.bin/perl/t/op/svleak.t
index 595bf3e85d1..c18f498cbe7 100644
--- a/gnu/usr.bin/perl/t/op/svleak.t
+++ b/gnu/usr.bin/perl/t/op/svleak.t
@@ -15,7 +15,7 @@ BEGIN {
use Config;
-plan tests => 131;
+plan tests => 132;
# run some code N times. If the number of SVs at the end of loop N is
# greater than (N-1)*delta at the end of loop 1, we've got a leak
@@ -537,3 +537,13 @@ EOF
::leak(5, 0, \&f, q{goto shouldn't leak @_});
}
+
+# [perl #128313] POSIX warnings shouldn't leak
+{
+ no warnings 'experimental';
+ use re 'strict';
+ my $a = 'aaa';
+ my $b = 'aa';
+ sub f { $a =~ /[^.]+$b/; }
+ ::leak(2, 0, \&f, q{use re 'strict' shouldn't leak warning strings});
+}
diff --git a/gnu/usr.bin/perl/t/op/tr.t b/gnu/usr.bin/perl/t/op/tr.t
index 6783dad40d8..d40187f5fc2 100644
--- a/gnu/usr.bin/perl/t/op/tr.t
+++ b/gnu/usr.bin/perl/t/op/tr.t
@@ -9,7 +9,7 @@ BEGIN {
set_up_inc('../lib');
}
-plan tests => 164;
+plan tests => 166;
# Test this first before we extend the stack with other operations.
# This caused an asan failure due to a bad write past the end of the stack.
@@ -643,4 +643,13 @@ for ("", nullrocow) {
ok(1, "tr///d on glob does not assert");
}
+{ # [perl #128734
+ my $string = "\x{00e0}";
+ $string =~ tr/\N{U+00e0}/A/;
+ is($string, "A", 'tr// of \N{U+...} works for upper-Latin1');
+ $string = "\x{00e1}";
+ $string =~ tr/\N{LATIN SMALL LETTER A WITH ACUTE}/A/;
+ is($string, "A", 'tr// of \N{name} works for upper-Latin1');
+}
+
1;
diff --git a/gnu/usr.bin/perl/t/porting/customized.dat b/gnu/usr.bin/perl/t/porting/customized.dat
index 09b833d4380..defeae11275 100644
--- a/gnu/usr.bin/perl/t/porting/customized.dat
+++ b/gnu/usr.bin/perl/t/porting/customized.dat
@@ -1,4 +1,3 @@
-Digest::MD5 cpan/Digest-MD5/t/files.t f8fe234035918d3b7324eba05f73e7e903a45ca0
Archive::Tar cpan/Archive-Tar/bin/ptar 5e9f3c6f565114193d98847ed8569cd0010c229c
Archive::Tar cpan/Archive-Tar/bin/ptardiff 5a9f4c01a0390bf98da7e63f1c0bbf5bc74d12c7
Archive::Tar cpan/Archive-Tar/bin/ptargrep eb74056c434acf314ac5a122e33bdd2ef99e6edb
@@ -43,7 +42,7 @@ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm 1f5eb772eed
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm de777d7809c0d73e5d4622a29921731c7e5dff48
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm 01e8f08a82b5304009574e3ac0892b4066ff7639
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm 5340052b58557a6764f5ac9f8b807fefec404a06
-ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 20a9e08add92f04ee97084dbc48876c18622613b
+ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm 3c3b93f431b0a51b9592b3d69624dbf5409f6f74
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm 40397f4cd2d49700b80b4ef490da98add24c5b37
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm 147e97fbabb74841f0733dbd5d1b9f3fa51f87c1
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm 3f13ed7045ff3443bcb4dd6c95c98b9bd705820f
@@ -57,8 +56,8 @@ ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm 371cdff
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/prereq.t 53bda2c549fd13a6b6c13a070ca6bc79883081c0
ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/vstrings.t 90035a2bdbf45f15b9c3196d072d7cba7e662871
File::Fetch cpan/File-Fetch/lib/File/Fetch.pm bd0b64a1d8ee2ffac39e017f9fa9f78f95514b4d
-File::Path cpan/File-Path/lib/File/Path.pm 7837c0a6c26609714b4fad0deeb82808409b83fe
-File::Path cpan/File-Path/t/Path_win32.t bec8cc294d10f141ecdb7f165ef297a2dc27ba2f
+File::Path cpan/File-Path/lib/File/Path.pm fd8ce4420a0c113d3f47dd3223859743655c1da8
+File::Path cpan/File-Path/t/Path_win32.t 94b9276557ce7f80b91f6fd9bfa7a0cd9bf9683e
HTTP::Tiny cpan/HTTP-Tiny/lib/HTTP/Tiny.pm 3c899ab6938b588f6a2823a6aa59edc81fc2a387
IO-Compress cpan/IO-Compress/bin/zipdetails 381ba2a6ae5bd21c8d2e994316e3e13f2f0a4f41
IO-Compress cpan/IO-Compress/lib/Compress/Zlib.pm 58ddedd36889463706d4060589d0c5e6dc497b86
@@ -161,7 +160,6 @@ Test::Harness cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm bf1fbfff9720330
Test::Harness cpan/Test-Harness/lib/Test/Harness.pm da2d76ba673372da129060c9d0adb8cf0d91f9f7
autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac
bignum cpan/bignum/lib/bigint.pm 56330354995409dab5073ea92d749f8727e265db
-version vutil.c 45ff345c3d8424ba63e130a223848f5b336bd87b
bignum cpan/bignum/lib/bignum.pm e999973f78e6be12282c11bb6328246b31a9576b
bignum cpan/bignum/lib/bigrat.pm 7fccc9df30e43dbbae6e5ea91b26c8046545c9a9
bignum cpan/bignum/lib/Math/BigFloat/Trace.pm a6b4b995e18f4083252e6dc72e9bef69671893dd
diff --git a/gnu/usr.bin/perl/t/porting/dual-life.t b/gnu/usr.bin/perl/t/porting/dual-life.t
index 9aa60c2ea6f..d7d62d717d5 100644
--- a/gnu/usr.bin/perl/t/porting/dual-life.t
+++ b/gnu/usr.bin/perl/t/porting/dual-life.t
@@ -24,12 +24,6 @@ use File::Spec::Functions;
# Exceptions that are found in dual-life bin dirs but aren't
# installed by default; some occur only during testing:
my $not_installed = qr{^(?:
- \.\./cpan/Archive-Tar/bin/ptar.*
- |
- \.\./cpan/JSON-PP/bin/json_pp
- |
- \.\./cpan/IO-Compress/bin/zipdetails
- |
\.\./cpan/Encode/bin/u(?:cm(?:2table|lint|sort)|nidump)
|
\.\./cpan/Module-(?:Metadata|Build)
diff --git a/gnu/usr.bin/perl/t/re/re_tests b/gnu/usr.bin/perl/t/re/re_tests
index 34ac94a213d..7e8522da98a 100644
--- a/gnu/usr.bin/perl/t/re/re_tests
+++ b/gnu/usr.bin/perl/t/re/re_tests
@@ -1966,6 +1966,8 @@ ab(?#Comment){2}c abbc y $& abbc
.{1}?? - c - Nested quantifiers
.{1}?+ - c - Nested quantifiers
(?:.||)(?|)000000000@ 000000000@ y $& 000000000@ # [perl #126405]
+aa$|a(?R)a|a aaa y $& aaa # [perl 128420] recursive matches
+(?:\1|a)([bcd])\1(?:(?R)|e)\1 abbaccaddedcb y $& abbaccaddedcb # [perl 128420] recursive match with backreferences
# Keep these lines at the end of the file
# vim: softtabstop=0 noexpandtab
diff --git a/gnu/usr.bin/perl/t/re/reg_mesg.t b/gnu/usr.bin/perl/t/re/reg_mesg.t
index 0fe45396956..08d90c5c40c 100755
--- a/gnu/usr.bin/perl/t/re/reg_mesg.t
+++ b/gnu/usr.bin/perl/t/re/reg_mesg.t
@@ -220,8 +220,8 @@ my @death =
'/(?[ \x{} ])/' => 'Number with no digits {#} m/(?[ \x{}{#} ])/',
'/(?[ \cK + ) ])/' => 'Unexpected \')\' {#} m/(?[ \cK + ){#} ])/',
'/(?[ \cK + ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ \cK + {#}])/',
- '/(?[ ( ) ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ ( ) {#}])/',
- '/(?[[0]+()+])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[[0]+()+{#}])/',
+ '/(?[ ( ) ])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[ ( ){#} ])/',
+ '/(?[[0]+()+])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[[0]+(){#}+])/',
'/(?[ \p{foo} ])/' => 'Can\'t find Unicode property definition "foo" {#} m/(?[ \p{foo}{#} ])/',
'/(?[ \p{ foo = bar } ])/' => 'Can\'t find Unicode property definition "foo = bar" {#} m/(?[ \p{ foo = bar }{#} ])/',
'/(?[ \8 ])/' => 'Unrecognized escape \8 in character class {#} m/(?[ \8{#} ])/',
@@ -266,8 +266,9 @@ my @death =
'/(?[\ -!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[\ -!{#}])/', # [perl #126180]
'/(?[\ ^!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[\ ^!{#}])/', # [perl #126180]
'/(?[\ |!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[\ |!{#}])/', # [perl #126180]
- '/(?[()-!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[()-!{#}])/', # [perl #126204]
+ '/(?[()-!])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[(){#}-!])/', # [perl #126204]
'/(?[!()])/' => 'Incomplete expression within \'(?[ ])\' {#} m/(?[!(){#}])/', # [perl #126404]
+ '/(?<=/' => 'Sequence (?... not terminated {#} m/(?<={#}/', # [perl #128170]
);
# These are messages that are warnings when not strict; death under 'use re
diff --git a/gnu/usr.bin/perl/t/re/regex_sets.t b/gnu/usr.bin/perl/t/re/regex_sets.t
index cd5df00ed0f..92875677be3 100644
--- a/gnu/usr.bin/perl/t/re/regex_sets.t
+++ b/gnu/usr.bin/perl/t/re/regex_sets.t
@@ -182,6 +182,21 @@ for my $char ("٠", "٥", "٩") {
'qr/qr/(?[ ! ( ! (\w)])/');
}
+{ # RT #129122
+ my $pat = '(?[ ( [ABC] - [B] ) + ( [abc] - [b] ) + [def] ])';
+ like("A", qr/$pat/, "'A' matches /$pat/");
+ unlike("B", qr/$pat/, "'B' doesn't match /$pat/");
+ like("C", qr/$pat/, "'C' matches /$pat/");
+ unlike("D", qr/$pat/, "'D' doesn't match /$pat/");
+ like("a", qr/$pat/, "'a' matches /$pat/");
+ unlike("b", qr/$pat/, "'b' doesn't match /$pat/");
+ like("c", qr/$pat/, "'c' matches /$pat/");
+ like("d", qr/$pat/, "'d' matches /$pat/");
+ like("e", qr/$pat/, "'e' matches /$pat/");
+ like("f", qr/$pat/, "'f' matches /$pat/");
+ unlike("g", qr/$pat/, "'g' doesn't match /$pat/");
+}
+
done_testing();
1;
diff --git a/gnu/usr.bin/perl/t/re/speed.t b/gnu/usr.bin/perl/t/re/speed.t
index 0a32b5c9237..648f2e9b749 100644
--- a/gnu/usr.bin/perl/t/re/speed.t
+++ b/gnu/usr.bin/perl/t/re/speed.t
@@ -41,7 +41,7 @@ run_tests() unless caller;
sub run_tests {
- watchdog(($::running_as_thread && $::running_as_thread) ? 150 : 540);
+ watchdog(($::running_as_thread && $::running_as_thread) ? 150 : 225);
{
# [perl #120446]
@@ -150,7 +150,7 @@ PROG
my $substr= substr( $str, 1 );
1 while $substr=~m/0/g;
$elapsed += time;
- ok( $elapsed <= 2, "should not COW on long string with substr and m//g");
+ ok( $elapsed <= 1, "should not COW on long string with substr and m//g");
}
diff --git a/gnu/usr.bin/perl/t/win32/runenv.t b/gnu/usr.bin/perl/t/win32/runenv.t
index 0e2b0ca0159..ff755563f0e 100644
--- a/gnu/usr.bin/perl/t/win32/runenv.t
+++ b/gnu/usr.bin/perl/t/win32/runenv.t
@@ -14,10 +14,10 @@ BEGIN {
require Win32;
($::os_id, $::os_major) = ( Win32::GetOSVersion() )[ 4, 1 ];
if ($::os_id == 2 and $::os_major == 6) { # Vista, Server 2008 (incl R2), 7
- $::tests = 43;
+ $::tests = 45;
}
else {
- $::tests = 40;
+ $::tests = 42;
}
require './test.pl';
@@ -70,11 +70,12 @@ sub runperl_and_capture {
}
sub try {
- my ($env, $args, $stdout, $stderr) = @_;
+ my ($env, $args, $stdout, $stderr, $name) = @_;
my ($actual_stdout, $actual_stderr) = runperl_and_capture($env, $args);
+ $name ||= "";
local $::Level = $::Level + 1;
- is $actual_stdout, $stdout;
- is $actual_stderr, $stderr;
+ is $actual_stdout, $stdout, "$name - stdout";
+ is $actual_stderr, $stderr, "$name - stderr";
}
# PERL5OPT Command-line options (switches). Switches in
@@ -196,6 +197,16 @@ try({PERL5LIB => "foo",
'',
'');
+{
+ # 131665
+ # crashes without the fix
+ my $longname = "X" x 2048;
+ try({ $longname => 1 },
+ [ '-e', '"print q/ok/"' ],
+ 'ok', '',
+ 'very long env var names' );
+}
+
# Tests for S_incpush_use_sep():
my @dump_inc = ('-e', '"print \"$_\n\" foreach @INC"');
diff --git a/gnu/usr.bin/perl/toke.c b/gnu/usr.bin/perl/toke.c
index b4934016730..3e6839edde8 100644
--- a/gnu/usr.bin/perl/toke.c
+++ b/gnu/usr.bin/perl/toke.c
@@ -244,7 +244,7 @@ static const char* const lex_state_names[] = {
if (have_x) PL_expect = x; \
PL_bufptr = s; \
PL_last_uni = PL_oldbufptr; \
- PL_last_lop_op = f; \
+ PL_last_lop_op = (f) < 0 ? -(f) : (f); \
if (*s == '(') \
return REPORT( (int)FUNC1 ); \
s = skipspace(s); \
@@ -725,7 +725,8 @@ Perl_lex_start(pTHX_ SV *line, PerlIO *rsfp, U32 flags)
parser->linestr = flags & LEX_START_COPIED
? SvREFCNT_inc_simple_NN(line)
: newSVpvn_flags(s, len, SvUTF8(line));
- sv_catpvn(parser->linestr, "\n;", rsfp ? 1 : 2);
+ if (!rsfp)
+ sv_catpvs(parser->linestr, "\n;");
} else {
parser->linestr = newSVpvn("\n;", rsfp ? 1 : 2);
}
@@ -1938,7 +1939,6 @@ static int
S_postderef(pTHX_ int const funny, char const next)
{
assert(funny == DOLSHARP || strchr("$@%&*", funny));
- assert(strchr("*[{", next));
if (next == '*') {
PL_expect = XOPERATOR;
if (PL_lex_state == LEX_INTERPNORMAL && !PL_lex_brackets) {
@@ -3539,7 +3539,7 @@ S_scan_const(pTHX_ char *start)
}
/* Add the (Unicode) code point to the output. */
- if (OFFUNI_IS_INVARIANT(uv)) {
+ if (! has_utf8 || OFFUNI_IS_INVARIANT(uv)) {
*d++ = (char) LATIN1_TO_NATIVE(uv);
}
else {
@@ -4107,8 +4107,11 @@ S_intuit_method(pTHX_ char *start, SV *ioname, CV *cv)
tmpbuf[len] = '\0';
goto bare_package;
}
- indirgv = gv_fetchpvn_flags(tmpbuf, len, ( UTF ? SVf_UTF8 : 0 ), SVt_PVCV);
- if (indirgv && GvCVu(indirgv))
+ indirgv = gv_fetchpvn_flags(tmpbuf, len,
+ GV_NOADD_NOINIT|( UTF ? SVf_UTF8 : 0 ),
+ SVt_PVCV);
+ if (indirgv && SvTYPE(indirgv) != SVt_NULL
+ && (!isGV(indirgv) || GvCVu(indirgv)))
return 0;
/* filehandle or package name makes it a method */
if (!cv || GvIO(indirgv) || gv_stashpvn(tmpbuf, len, UTF ? SVf_UTF8 : 0)) {
@@ -9021,6 +9024,8 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
else if (ck_uni && bracket == -1)
check_uni();
if (bracket != -1) {
+ bool skip;
+ char *s2;
/* If we were processing {...} notation then... */
if (isIDFIRST_lazy_if(d,is_utf8)) {
/* if it starts as a valid identifier, assume that it is one.
@@ -9069,13 +9074,19 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
if ( !tmp_copline )
tmp_copline = CopLINE(PL_curcop);
- if (s < PL_bufend && isSPACE(*s)) {
- s = skipspace(s);
- }
+ if ((skip = s < PL_bufend && isSPACE(*s)))
+ /* Avoid incrementing line numbers or resetting PL_linestart,
+ in case we have to back up. */
+ s2 = skipspace_flags(s, LEX_NO_INCLINE);
+ else
+ s2 = s;
/* Expect to find a closing } after consuming any trailing whitespace.
*/
- if (*s == '}') {
+ if (*s2 == '}') {
+ /* Now increment line numbers if applicable. */
+ if (skip)
+ s = skipspace(s);
s++;
if (PL_lex_state == LEX_INTERPNORMAL && !PL_lex_brackets) {
PL_lex_state = LEX_INTERPEND;
@@ -10617,6 +10628,14 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp)
#ifdef NV_MIN_EXP
if (negexp
&& -hexfp_exp < NV_MIN_EXP - 1) {
+ /* NOTE: this means that the exponent
+ * underflow warning happens for
+ * the IEEE 754 subnormals (denormals),
+ * because DBL_MIN_EXP etc are the lowest
+ * possible binary (or, rather, DBL_RADIX-base)
+ * exponent for normals, not subnormals.
+ *
+ * This may or may not be a good thing. */
Perl_ck_warner(aTHX_ packWARN(WARN_OVERFLOW),
"Hexadecimal float: exponent underflow");
break;
@@ -10638,7 +10657,7 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp)
#ifdef HEXFP_UQUAD
hexfp_exp -= hexfp_frac_bits;
#endif
- hexfp_mult = pow(2.0, hexfp_exp);
+ hexfp_mult = Perl_pow(2.0, hexfp_exp);
hexfp = TRUE;
goto decimal;
}
diff --git a/gnu/usr.bin/perl/utf8.h b/gnu/usr.bin/perl/utf8.h
index c954b42ff5d..23a40072249 100644
--- a/gnu/usr.bin/perl/utf8.h
+++ b/gnu/usr.bin/perl/utf8.h
@@ -156,8 +156,8 @@ END_EXTERN_C
* rarely do we need to distinguish them. The term "NATIVE_UTF8" applies to
* whichever one is applicable on the current platform */
#ifdef PERL_SMALL_MACRO_BUFFER
-#define NATIVE_UTF8_TO_I8(ch) (ch)
-#define I8_TO_NATIVE_UTF8(ch) (ch)
+#define NATIVE_UTF8_TO_I8(ch) ((U8) (ch))
+#define I8_TO_NATIVE_UTF8(ch) ((U8) (ch))
#else
#define NATIVE_UTF8_TO_I8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
#define I8_TO_NATIVE_UTF8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
diff --git a/gnu/usr.bin/perl/util.c b/gnu/usr.bin/perl/util.c
index 72af251dd3c..7c3d271f513 100644
--- a/gnu/usr.bin/perl/util.c
+++ b/gnu/usr.bin/perl/util.c
@@ -4649,9 +4649,6 @@ Perl_parse_unicode_opts(pTHX_ const char **popt)
U32
Perl_seed(pTHX)
{
-#if defined(__OpenBSD__)
- return arc4random();
-#else
/*
* This is really just a quick hack which grabs various garbage
* values. It really should be a real hash algorithm which
@@ -4720,7 +4717,6 @@ Perl_seed(pTHX)
u += SEED_C5 * (U32)PTR2UV(&when);
#endif
return u;
-#endif
}
void
@@ -5323,7 +5319,8 @@ Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap
PERL_UNUSED_ARG(buffer);
PERL_UNUSED_ARG(len);
PERL_UNUSED_ARG(format);
- PERL_UNUSED_ARG(ap);
+ /* the cast is to avoid gcc -Wsizeof-array-argument complaining */
+ PERL_UNUSED_ARG((void*)ap);
Perl_croak_nocontext("panic: my_vsnprintf not available with quadmath");
return 0;
#else
diff --git a/gnu/usr.bin/perl/utils.lst b/gnu/usr.bin/perl/utils.lst
index 13384932674..216a9d0b557 100644
--- a/gnu/usr.bin/perl/utils.lst
+++ b/gnu/usr.bin/perl/utils.lst
@@ -11,13 +11,19 @@ utils/encguess
utils/h2ph
utils/h2xs
utils/instmodsh
+utils/json_pp
utils/libnetcfg
-utils/perlbug
+utils/perlbug # link = utils/perlthanks
utils/perldoc
utils/perlivp
utils/piconv
utils/pl2pm
utils/pod2html
utils/prove
+utils/ptar
+utils/ptardiff
+utils/ptargrep
+utils/shasum
utils/splain
utils/xsubpp
+utils/zipdetails
diff --git a/gnu/usr.bin/perl/utils/Makefile.PL b/gnu/usr.bin/perl/utils/Makefile.PL
index 640dac255bf..27c371f82a8 100644
--- a/gnu/usr.bin/perl/utils/Makefile.PL
+++ b/gnu/usr.bin/perl/utils/Makefile.PL
@@ -35,9 +35,9 @@ print $fh <<'EOT';
# Files to be built with variable substitution after miniperl is
# available. Dependencies handled manually below (for now).
-pl = c2ph.PL corelist.PL cpan.PL h2ph.PL h2xs.PL instmodsh.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL prove.PL splain.PL libnetcfg.PL piconv.PL enc2xs.PL encguess.PL xsubpp.PL pod2html.PL
-plextract = c2ph corelist cpan h2ph h2xs instmodsh perlbug perldoc perlivp pl2pm prove splain libnetcfg piconv enc2xs encguess xsubpp pod2html
-plextractexe = ./c2ph ./corelist ./cpan ./h2ph ./h2xs ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./splain ./libnetcfg ./piconv ./enc2xs ./encguess ./xsubpp ./pod2html
+pl = c2ph.PL corelist.PL cpan.PL h2ph.PL h2xs.PL instmodsh.PL json_pp.PL perlbug.PL perldoc.PL perlivp.PL pl2pm.PL prove.PL ptar.PL ptardiff.PL ptargrep.PL shasum.PL splain.PL libnetcfg.PL piconv.PL enc2xs.PL encguess.PL xsubpp.PL pod2html.PL zipdetails.PL
+plextract = c2ph corelist cpan h2ph h2xs instmodsh json_pp perlbug perldoc perlivp pl2pm prove ptar ptardiff ptargrep shasum splain libnetcfg piconv enc2xs encguess xsubpp pod2html zipdetails
+plextractexe = ./c2ph ./corelist ./cpan ./h2ph ./h2xs ./json_pp ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./ptar ./ptardiff ./ptargrep ./shasum ./splain ./libnetcfg ./piconv ./enc2xs ./encguess ./xsubpp ./pod2html ./zipdetails
all: $(plextract)
@@ -56,6 +56,8 @@ h2xs: h2xs.PL ../config.sh
instmodsh: instmodsh.PL ../config.sh
+json_pp: json_pp.PL ../config.sh
+
perlbug: perlbug.PL ../config.sh ../patchlevel.h
perldoc: perldoc.PL ../config.sh
@@ -64,8 +66,16 @@ perlivp: perlivp.PL ../config.sh
prove: prove.PL ../config.sh
+ptar: ptar.PL ../config.sh
+
+ptardiff: ptardiff.PL ../config.sh
+
+ptargrep: ptargrep.PL ../config.sh
+
pl2pm: pl2pm.PL ../config.sh
+shasum: shasum.PL ../config.sh
+
splain: splain.PL ../config.sh ../lib/diagnostics.pm
libnetcfg: libnetcfg.PL ../config.sh
@@ -78,6 +88,8 @@ enc2xs: encguess.PL ../config.sh
xsubpp: xsubpp.PL ../config.sh
+zipdetails: zipdetails.PL ../config.sh
+
pod2html: pod2html.PL ../config.sh ../ext/Pod-Html/bin/pod2html
clean:
diff --git a/gnu/usr.bin/perl/utils/h2ph.PL b/gnu/usr.bin/perl/utils/h2ph.PL
index 6d743718c63..2523c0a6545 100644
--- a/gnu/usr.bin/perl/utils/h2ph.PL
+++ b/gnu/usr.bin/perl/utils/h2ph.PL
@@ -573,7 +573,7 @@ sub next_line
$in =~ s/\?\?</{/g; # | ??<| {|
$in =~ s/\?\?>/}/g; # | ??>| }|
}
- if ($in =~ s/^\#ifdef __LANGUAGE_PASCAL__//) {
+ if ($in =~ /^\#ifdef __LANGUAGE_PASCAL__/) {
# Tru64 disassembler.h evilness: mixed C and Pascal.
while (<IN>) {
last if /^\#endif/;
@@ -581,8 +581,8 @@ sub next_line
$in = "";
next READ;
}
- # Skip inlined functions in headers
- if ($in =~ s/^(extern|static) (__inline__|inline) .*[^;]\s*$//) {
+ if ($in =~ /^extern inline / && # Inlined assembler.
+ $^O eq 'linux' && $file =~ m!(?:^|/)asm/[^/]+\.h$!) {
while (<IN>) {
last if /^}/;
}
diff --git a/gnu/usr.bin/perl/utils/perlbug.PL b/gnu/usr.bin/perl/utils/perlbug.PL
index 931fcd86851..ae8c3430521 100644
--- a/gnu/usr.bin/perl/utils/perlbug.PL
+++ b/gnu/usr.bin/perl/utils/perlbug.PL
@@ -346,14 +346,15 @@ sub Query {
This program provides an easy way to send a thank-you message back to the
authors and maintainers of perl.
-If you wish to submit a bug report, please run it without the -T flag.
+If you wish to submit a bug report, please run it without the -T flag
+(or run the program perlbug rather than perlthanks)
EOF
} else {
paraprint <<"EOF";
This program provides an easy way to create a message reporting a
bug in the core perl distribution (along with tests or patches)
to the volunteers who maintain perl at $address. To send a thank-you
-note to $thanksaddress instead of a bug report, please use the -T flag.
+note to $thanksaddress instead of a bug report, please run 'perlthanks'.
Please do not use $0 to send test messages, test whether perl
works, or to report bugs in perl modules from CPAN.
@@ -1244,6 +1245,8 @@ S<[ B<-S> ]> S<[ B<-t> ]> S<[ B<-d> ]> S<[ B<-A> ]> S<[ B<-h> ]> S<[ B<-T> ]>
B<perlbug> S<[ B<-v> ]> S<[ B<-r> I<returnaddress> ]>
S<[ B<-A> ]> S<[ B<-ok> | B<-okay> | B<-nok> | B<-nokay> ]>
+B<perlthanks>
+
=head1 DESCRIPTION
@@ -1396,8 +1399,8 @@ description of what's wrong is fine.
=item Can you use C<perlbug> to submit a thank-you note?
-Yes, you can do this by using the C<-T> option.
-Thank-you notes are good. It makes people
+Yes, you can do this by either using the C<-T> option, or by invoking
+the program as C<perlthanks>. Thank-you notes are good. It makes people
smile.
=back
diff --git a/gnu/usr.bin/perl/vms/descrip_mms.template b/gnu/usr.bin/perl/vms/descrip_mms.template
index 9702c68d5fd..0751a0996d3 100644
--- a/gnu/usr.bin/perl/vms/descrip_mms.template
+++ b/gnu/usr.bin/perl/vms/descrip_mms.template
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
extra.pods : miniperl
@ @extra_pods.com
-PERLDELTA_CURRENT = [.pod]perl5242delta.pod
+PERLDELTA_CURRENT = [.pod]perl5243delta.pod
$(PERLDELTA_CURRENT) : [.pod]perldelta.pod
Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
diff --git a/gnu/usr.bin/perl/vutil.c b/gnu/usr.bin/perl/vutil.c
index de3367e7dca..610c03c4463 100644
--- a/gnu/usr.bin/perl/vutil.c
+++ b/gnu/usr.bin/perl/vutil.c
@@ -609,11 +609,7 @@ VER_NV:
/* may get too much accuracy */
char tbuf[64];
-#ifdef __vax__
- SV *sv = SvNVX(ver) > 10e37 ? newSV(64) : 0;
-#else
SV *sv = SvNVX(ver) > 10e50 ? newSV(64) : 0;
-#endif
char *buf;
#if PERL_VERSION_GE(5,19,0)
diff --git a/gnu/usr.bin/perl/warnings.h b/gnu/usr.bin/perl/warnings.h
index 337bef374c0..4d137320bb2 100644
--- a/gnu/usr.bin/perl/warnings.h
+++ b/gnu/usr.bin/perl/warnings.h
@@ -115,8 +115,10 @@
#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-#define isLEXWARN_on cBOOL(PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off cBOOL(PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on \
+ cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off \
+ cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
#define isWARN_ONCE (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
#define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)))
#define isWARNf_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)+1))
diff --git a/gnu/usr.bin/perl/win32/GNUmakefile b/gnu/usr.bin/perl/win32/GNUmakefile
index 48952c509ae..81bda5a7e49 100644
--- a/gnu/usr.bin/perl/win32/GNUmakefile
+++ b/gnu/usr.bin/perl/win32/GNUmakefile
@@ -67,7 +67,7 @@ INST_TOP := $(INST_DRV)\perl
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-#INST_VER := \5.24.2
+#INST_VER := \5.24.3
#
# Comment this out if you DON'T want your perl installation to have
@@ -1544,7 +1544,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5242delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5243delta.pod
$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1640,7 +1640,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5242delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5243delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
@@ -1648,7 +1648,8 @@ distclean: realclean
perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
- perltru64.pod perltw.pod perlvos.pod perlwin32.pod
+ perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
+ perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails
diff --git a/gnu/usr.bin/perl/win32/Makefile b/gnu/usr.bin/perl/win32/Makefile
index fee887228d0..4f406667c14 100644
--- a/gnu/usr.bin/perl/win32/Makefile
+++ b/gnu/usr.bin/perl/win32/Makefile
@@ -38,7 +38,7 @@ INST_TOP = $(INST_DRV)\perl
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-#INST_VER = \5.24.2
+#INST_VER = \5.24.3
#
# Comment this out if you DON'T want your perl installation to have
@@ -1215,7 +1215,7 @@ utils: $(PERLEXE) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5242delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5243delta.pod
cd ..\win32
$(PERLEXE) $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1288,7 +1288,6 @@ distclean: realclean
-if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
-if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
-if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
- -if exist $(LIBDIR)\OpenBSD rmdir /s /q $(LIBDIR)\OpenBSD
-if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
-if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
-if exist $(LIBDIR)\Perl rmdir /s /q $(LIBDIR)\Perl
@@ -1314,7 +1313,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5242delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5243delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
@@ -1322,7 +1321,8 @@ distclean: realclean
perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
- perltru64.pod perltw.pod perlvos.pod perlwin32.pod
+ perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
+ perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails
diff --git a/gnu/usr.bin/perl/win32/makefile.mk b/gnu/usr.bin/perl/win32/makefile.mk
index 739e26f9841..0692a8039a4 100644
--- a/gnu/usr.bin/perl/win32/makefile.mk
+++ b/gnu/usr.bin/perl/win32/makefile.mk
@@ -44,7 +44,7 @@ INST_TOP *= $(INST_DRV)\perl
# versioned installation can be obtained by setting INST_TOP above to a
# path that includes an arbitrary version string.
#
-#INST_VER *= \5.24.2
+#INST_VER *= \5.24.3
#
# Comment this out if you DON'T want your perl installation to have
@@ -1511,7 +1511,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
copy ..\README.tw ..\pod\perltw.pod
copy ..\README.vos ..\pod\perlvos.pod
copy ..\README.win32 ..\pod\perlwin32.pod
- copy ..\pod\perldelta.pod ..\pod\perl5242delta.pod
+ copy ..\pod\perldelta.pod ..\pod\perl5243delta.pod
$(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
$(MINIPERL) -I..\lib ..\autodoc.pl ..
$(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1583,7 +1583,6 @@ distclean: realclean
-if exist $(LIBDIR)\MIME rmdir /s /q $(LIBDIR)\MIME
-if exist $(LIBDIR)\Module rmdir /s /q $(LIBDIR)\Module
-if exist $(LIBDIR)\Net\FTP rmdir /s /q $(LIBDIR)\Net\FTP
- -if exist $(LIBDIR)\OpenBSD rmdir /s /q $(LIBDIR)\OpenBSD
-if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params
-if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse
-if exist $(LIBDIR)\Perl rmdir /s /q $(LIBDIR)\Perl
@@ -1609,7 +1608,7 @@ distclean: realclean
-if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
-if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
-cd $(PODDIR) && del /f *.html *.bat roffitall \
- perl5242delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+ perl5243delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
@@ -1617,7 +1616,8 @@ distclean: realclean
perlnetware.pod perlopenbsd.pod perlos2.pod perlos390.pod \
perlos400.pod perlplan9.pod perlqnx.pod perlriscos.pod \
perlsolaris.pod perlsymbian.pod perlsynology.pod perltoc.pod \
- perltru64.pod perltw.pod perlvos.pod perlwin32.pod
+ perltru64.pod perltw.pod perluniprops.pod perlvos.pod \
+ perlwin32.pod
-cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph pstruct h2xs \
perldoc perlivp libnetcfg enc2xs encguess piconv cpan *.bat \
xsubpp pod2html instmodsh json_pp prove ptar ptardiff ptargrep shasum corelist zipdetails
diff --git a/gnu/usr.bin/perl/win32/perlhost.h b/gnu/usr.bin/perl/win32/perlhost.h
index 9963319a929..2ef773ee0ea 100644
--- a/gnu/usr.bin/perl/win32/perlhost.h
+++ b/gnu/usr.bin/perl/win32/perlhost.h
@@ -2177,17 +2177,11 @@ compare(const void *arg1, const void *arg2)
void
CPerlHost::Add(LPCSTR lpStr)
{
- char szBuffer[1024];
LPSTR *lpPtr;
- int index, length = strlen(lpStr)+1;
-
- for(index = 0; lpStr[index] != '\0' && lpStr[index] != '='; ++index)
- szBuffer[index] = lpStr[index];
-
- szBuffer[index] = '\0';
+ STRLEN length = strlen(lpStr)+1;
// replacing ?
- lpPtr = Lookup(szBuffer);
+ lpPtr = Lookup(lpStr);
if (lpPtr != NULL) {
// must allocate things via host memory allocation functions
// rather than perl's Renew() et al, as the perl interpreter
diff --git a/gnu/usr.bin/perl/win32/pod.mak b/gnu/usr.bin/perl/win32/pod.mak
index f32d93c712a..7fcd7492735 100644
--- a/gnu/usr.bin/perl/win32/pod.mak
+++ b/gnu/usr.bin/perl/win32/pod.mak
@@ -44,9 +44,11 @@ POD = perl.pod \
perl5221delta.pod \
perl5222delta.pod \
perl5223delta.pod \
+ perl5224delta.pod \
perl5240delta.pod \
perl5241delta.pod \
perl5242delta.pod \
+ perl5243delta.pod \
perl561delta.pod \
perl56delta.pod \
perl581delta.pod \
@@ -185,9 +187,11 @@ MAN = perl.man \
perl5221delta.man \
perl5222delta.man \
perl5223delta.man \
+ perl5224delta.man \
perl5240delta.man \
perl5241delta.man \
perl5242delta.man \
+ perl5243delta.man \
perl561delta.man \
perl56delta.man \
perl581delta.man \
@@ -326,9 +330,11 @@ HTML = perl.html \
perl5221delta.html \
perl5222delta.html \
perl5223delta.html \
+ perl5224delta.html \
perl5240delta.html \
perl5241delta.html \
perl5242delta.html \
+ perl5243delta.html \
perl561delta.html \
perl56delta.html \
perl581delta.html \
@@ -467,9 +473,11 @@ TEX = perl.tex \
perl5221delta.tex \
perl5222delta.tex \
perl5223delta.tex \
+ perl5224delta.tex \
perl5240delta.tex \
perl5241delta.tex \
perl5242delta.tex \
+ perl5243delta.tex \
perl561delta.tex \
perl56delta.tex \
perl581delta.tex \