From: afresh1 Date: Sat, 25 Apr 2015 19:26:15 +0000 (+0000) Subject: Apply local patches, remove excess files - perl-5.20.2 X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=2f878dc621ef63a05289a908ed1fdd874b06deeb;p=openbsd Apply local patches, remove excess files - perl-5.20.2 --- diff --git a/gnu/usr.bin/perl/Configure b/gnu/usr.bin/perl/Configure index 2f91ba1b789..056b46aaa9b 100644 --- a/gnu/usr.bin/perl/Configure +++ b/gnu/usr.bin/perl/Configure @@ -589,6 +589,7 @@ d_localtime_r='' d_localtime_r_needs_tzset='' localtime_r_proto='' d_locconv='' +d_lc_monetary_2008='' d_lockf='' d_longdbl='' longdblsize='' @@ -2795,38 +2796,31 @@ $define|true|[yY]*) *) case "$lns:$issymlink" in *"ln"*" -s:"*"test -"?) echo "Creating the symbolic links..." >&4 - echo "(First creating the subdirectories...)" >&4 cd .. - awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do - read directory - test -z "$directory" && break - mkdir -p $directory - done + awk -v src="$src" '{ + dir=$1; + if (!sub(/\/[^\/]*$/, "", dir)) { dir = "." } + mf[dir] = mf[dir]" "src"/"$1; + } END { + for (d in mf) { + if (d != ".") { system("mkdir -p "d) } + system("ln -sf "mf[d]" "d); + } + }' $src/MANIFEST # Sanity check 1. if test ! -d t/base; then echo "Failed to create the subdirectories. Aborting." >&4 exit 1 fi - echo "(Then creating the symlinks...)" >&4 - awk '{print $1}' $src/MANIFEST | while true; do - read filename - test -z "$filename" && break - if test -f $filename; then - if $issymlink $filename; then - rm -f $filename - fi - fi - if test -f $filename; then - echo "$filename already exists, not symlinking." - else - ln -s $src/$filename $filename - fi - done # Sanity check 2. if test ! -f t/base/lex.t; then echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4 exit 1 fi + if test ! -f x2p/walk.c; then + echo "Failed to create the symlinks (x2p/walk.c missing). Aborting." >&4 + exit 1 + fi cd UU ;; *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4 @@ -5349,6 +5343,25 @@ 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 -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. @@ -15582,6 +15595,27 @@ $rm_try set localeconv d_locconv eval $inlibc +: see if localtime_r calls tzset +case "$d_locconv:$d_lc_monetary_2008" in +define:) + $cat >try.c < +int main() { + struct lconv *lc = localeconv(); + char int_p_cs_precedes = lc->int_p_cs_precedes; + return 0; +} +EOCP + set try + if eval $compile; then + d_lc_monetary_2008="$define" + else + d_lc_monetary_2008="$undef" + fi; + $rm_try + ;; +esac + : see if lockf exists set lockf d_lockf eval $inlibc @@ -19583,9 +19617,9 @@ case "$ccflags" in ;; esac -randfunc=Perl_drand48 -drand01="Perl_drand48()" -seedfunc="Perl_drand48_init" +randfunc=drand48 +drand01="drand48()" +seedfunc="srand48" randbits=48 randseedtype=U32 @@ -22390,6 +22424,7 @@ xs_extensions='' find_extensions=' for xxx in *; do case "$xxx" in + CVS) ;; DynaLoader|dynaload) ;; *) this_ext=`echo $xxx | $sed -e s/-/\\\//g`; @@ -22617,6 +22652,8 @@ esac nonxs_ext='' for xxx in $nonxs_extensions ; do case "$xxx" in + CVS|RCS|SCCS|.svn) + ;; VMS*) ;; *) nonxs_ext="$nonxs_ext $xxx" @@ -23176,6 +23213,7 @@ d_localtime64='$d_localtime64' d_localtime_r='$d_localtime_r' d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset' d_locconv='$d_locconv' +d_lc_monetary_2008='$d_lc_monetary_2008' d_lockf='$d_lockf' d_longdbl='$d_longdbl' d_longlong='$d_longlong' diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux b/gnu/usr.bin/perl/Cross/config.sh-arm-linux index a6e221959b1..320c08b086d 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux @@ -296,6 +296,7 @@ d_isinf='define' d_isnan='define' d_isnanl='define' d_killpg='define' +d_lc_monetary_2008='undef' d_lchown='define' d_ldbl_dig='define' d_libm_lib_version='define' diff --git a/gnu/usr.bin/perl/MANIFEST b/gnu/usr.bin/perl/MANIFEST index 689685447cc..0430960e238 100644 --- a/gnu/usr.bin/perl/MANIFEST +++ b/gnu/usr.bin/perl/MANIFEST @@ -8,6 +8,7 @@ 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 @@ -1724,6 +1725,10 @@ 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/Package-Constants/lib/Package/Constants.pm Package::Constants cpan/Package-Constants/t/01_list.t Package::Constants tests cpan/Params-Check/lib/Params/Check.pm Params::Check @@ -3587,7 +3592,6 @@ 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 @@ -4016,6 +4020,7 @@ 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 @@ -4161,6 +4166,7 @@ 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 diff --git a/gnu/usr.bin/perl/Makefile.SH b/gnu/usr.bin/perl/Makefile.SH index a2e6034037a..6fdd000a503 100644 --- a/gnu/usr.bin/perl/Makefile.SH +++ b/gnu/usr.bin/perl/Makefile.SH @@ -571,12 +571,13 @@ all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) $(generated_pods) $(private) $(unidatafile .PHONY: all translators 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 +#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 @@ -728,6 +729,14 @@ case "$osname" in esac case "$osname" in +openbsd) + $spitshell >>$Makefile <>$Makefile <>$Makefile <<'!NO!SUBS!' -$(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) -!NO!SUBS! - case "$useshrplib" in - true) - $spitshell >>$Makefile <<'!NO!SUBS!' - rm -f $@ - $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(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) rcu $(LIBPERL) $(obj) $(DYNALOADER) - @$(ranlib) $(LIBPERL) -!NO!SUBS! - ;; - esac - $spitshell >>$Makefile <<'!NO!SUBS!' +#$(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) +#!NO!SUBS! +# case "$useshrplib" in +# true) +# $spitshell >>$Makefile <<'!NO!SUBS!' +# rm -f $@ +# $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(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) rcu $(LIBPERL) $(obj) $(DYNALOADER) +# @$(ranlib) $(LIBPERL) +#!NO!SUBS! +# ;; +# esac +# $spitshell >>$Makefile <<'!NO!SUBS!' # How to build executables. @@ -933,10 +942,6 @@ lib/buildcustomize.pl: \$& \$(mini_obj) write_buildcustomize.pl else $spitshell >>$Makefile <<'!NO!SUBS!' lib/buildcustomize.pl: $& $(mini_obj) write_buildcustomize.pl - -@rm -f miniperl.xok - $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \ - $(mini_obj) $(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! fi @@ -997,10 +1002,7 @@ $(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) - $(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 + 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 @@ -1263,14 +1265,13 @@ _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 config.arch config.over $(DTRACE_H) + -rm -f $(DTRACE_H) # Do not 'make _tidy' directly. _tidy: -cd pod; $(LDLIBPTH) $(MAKE) clean -cd utils; $(LDLIBPTH) $(MAKE) clean -cd x2p; $(LDLIBPTH) $(MAKE) clean - -rm -f lib/Config_git.pl git_version.h -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \ $(MINIPERL) make_ext.pl --target=clean $$x MAKE=$(MAKE) ; \ done @@ -1324,7 +1325,7 @@ _cleaner2: -rmdir lib/TAP/Formatter lib/TAP lib/Sys/Syslog lib/Sys lib/Search -rmdir lib/Scalar lib/Pod/Text lib/Pod/Simple lib/Pod/Perldoc -rmdir lib/PerlIO/via lib/PerlIO lib/Perl lib/Parse/CPAN lib/Parse - -rmdir lib/Params lib/Package lib/Net/FTP lib/Module/Load + -rmdir lib/Params lib/Package lib/OpenBSD lib/Net/FTP lib/Module/Load -rmdir lib/Module/CoreList lib/Module/Build/Platform lib/Module/Build -rmdir lib/Module lib/Memoize lib/Math/BigInt lib/Math/BigFloat -rmdir lib/Math lib/MIME lib/Locale/Maketext lib/Locale/Codes diff --git a/gnu/usr.bin/perl/Makefile.bsd-wrapper1 b/gnu/usr.bin/perl/Makefile.bsd-wrapper1 index 24bd7ea08c1..bbf3b6c63f5 100644 --- a/gnu/usr.bin/perl/Makefile.bsd-wrapper1 +++ b/gnu/usr.bin/perl/Makefile.bsd-wrapper1 @@ -68,8 +68,10 @@ _quick3p= perl5180delta 1 pod/perl5180delta.pod \ perl5181delta 1 pod/perl5181delta.pod \ perl5182delta 1 pod/perl5182delta.pod \ + perl5184delta 1 pod/perl5184delta.pod \ perl5200delta 1 pod/perl5200delta.pod \ perl5201delta 1 pod/perl5201delta.pod \ + perl5202delta 1 pod/perl5202delta.pod \ perl561delta 1 pod/perl561delta.pod \ perl56delta 1 pod/perl56delta.pod \ perl581delta 1 pod/perl581delta.pod \ @@ -185,6 +187,7 @@ _quick3p= perltrap 1 pod/perltrap.pod \ perltru64 1 pod/perltru64.pod \ perlunicode 1 pod/perlunicode.pod \ + perlunicook 1 pod/perlunicook.pod \ perlunifaq 1 pod/perlunifaq.pod \ perluniintro 1 pod/perluniintro.pod \ perluniprops 1 pod/perluniprops.pod \ diff --git a/gnu/usr.bin/perl/NetWare/config.wc b/gnu/usr.bin/perl/NetWare/config.wc index 5ad00a8d724..7f2ab6d6e59 100644 --- a/gnu/usr.bin/perl/NetWare/config.wc +++ b/gnu/usr.bin/perl/NetWare/config.wc @@ -285,6 +285,7 @@ d_isinf='undef' d_isnan='undef' d_isnanl='undef' d_killpg='undef' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='define' d_libm_lib_version='undef' diff --git a/gnu/usr.bin/perl/Porting/Maintainers.pl b/gnu/usr.bin/perl/Porting/Maintainers.pl index 8ad84f9a15c..96133c1bcd8 100644 --- a/gnu/usr.bin/perl/Porting/Maintainers.pl +++ b/gnu/usr.bin/perl/Porting/Maintainers.pl @@ -1507,6 +1507,9 @@ 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/config.sh b/gnu/usr.bin/perl/Porting/config.sh index a9e84aa6628..7ff00ab0567 100644 --- a/gnu/usr.bin/perl/Porting/config.sh +++ b/gnu/usr.bin/perl/Porting/config.sh @@ -305,6 +305,7 @@ d_isinf='define' d_isnan='define' d_isnanl='define' d_killpg='define' +d_lc_monetary_2008='undef' d_lchown='define' d_ldbl_dig='define' d_libm_lib_version='define' diff --git a/gnu/usr.bin/perl/Porting/pumpkin.pod b/gnu/usr.bin/perl/Porting/pumpkin.pod index a8c8fb0efdd..40fda825935 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 -xof - + gzip -d -c perl5.004_07.tar.gz | tar -xf - # unpack perl5.004_08/ - gzip -d -c perl5.004_08.tar.gz | tar -xof - + gzip -d -c perl5.004_08.tar.gz | tar -xf - makepatch perl5.004_07 perl5.004_08 > perl5.004_08.pat Makepatch will automatically generate appropriate B commands to remove diff --git a/gnu/usr.bin/perl/config_h.SH b/gnu/usr.bin/perl/config_h.SH index fd46735ad8f..5bdd95e9d0a 100644 --- a/gnu/usr.bin/perl/config_h.SH +++ b/gnu/usr.bin/perl/config_h.SH @@ -261,6 +261,12 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un */ #$d_locconv HAS_LOCALECONV /**/ +/* HAS_LC_MONETARY_2008: + * This symbol, if defined, indicates that the localeconv routine is + * available and has the additional members added in POSIX 1003.1-2008. + */ +#$d_lc_monetary_2008 HAS_LC_MONETARY_2008 /**/ + /* HAS_LOCKF: * This symbol, if defined, indicates that the lockf routine is * available to do file locking. diff --git a/gnu/usr.bin/perl/configpm b/gnu/usr.bin/perl/configpm index d5bf5f26a83..39743d65ed3 100644 --- a/gnu/usr.bin/perl/configpm +++ b/gnu/usr.bin/perl/configpm @@ -87,6 +87,11 @@ $header_files =~ s/(?=.{64}) # If line is still overlength (.{1,64})\ # Split at the last convenient space /$1\n /gx; +# libpaths that should be truncated after the first path element +my %Libpathtrunc = map {($_,$_)} + qw(archlib archlibexp privlib privlibexp sitearch sitearchexp + sitelib sitelibexp); + # allowed opts as well as specifies default and initial values my %Allowed_Opts = ( 'glossary' => 1, # --no-glossary - no glossary file inclusion, @@ -252,6 +257,9 @@ my %seen_quotes; $in_v = $val !~ /$quote\n/; next if $in_v; + # XXX - should use PERLLIB_SEP, not hard-code ':' + $val =~ s/^([^:]+).*${quote}\w*$/$1${quote}/ if $Libpathtrunc{$name}; + s,/,::,g if $Extensions{$name}; $val =~ s/$quote\n?\z//; diff --git a/gnu/usr.bin/perl/configure.com b/gnu/usr.bin/perl/configure.com index 34f3309ac29..49b14f064cf 100644 --- a/gnu/usr.bin/perl/configure.com +++ b/gnu/usr.bin/perl/configure.com @@ -5407,6 +5407,7 @@ $ d_wctomb="define" $ i_locale="define" $ i_langinfo="define" $ d_locconv="define" +$ d_lc_monetary_2008="define" $ d_nl_langinfo="define" $ d_setlocale="define" $ vms_cc_type="decc" @@ -5427,6 +5428,7 @@ $ d_wctomb="undef" $ i_locale="undef" $ i_langinfo="undef" $ d_locconv="undef" +$ d_lc_monetary_2008="undef" $ d_nl_langinfo="undef" $ d_setlocale="undef" $ ENDIF @@ -6099,6 +6101,7 @@ $ WC "d_link='" + d_link + "'" $ WC "d_llseek='undef'" $ WC "d_localtime64='undef'" $ WC "d_locconv='" + d_locconv + "'" +$ WC "d_lc_monetary_2008='" + d_lc_monetary_2008 + "'" $ WC "d_lockf='undef'" $ WC "d_longdbl='" + d_longdbl + "'" $ WC "d_longlong='" + d_longlong + "'" 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 47aebd60743..9d7e5ed262d 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,7 +35,8 @@ sub MY::libscan my $path = shift; return undef - if $path =~ /(~|\.bak|_bak)$/ || + if $path =~ /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/ || + $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 47aebd60743..9d7e5ed262d 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,7 +35,8 @@ sub MY::libscan my $path = shift; return undef - if $path =~ /(~|\.bak|_bak)$/ || + if $path =~ /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/ || + $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 f3b58f7eeee..e3696a43564 100644 --- a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs +++ b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs @@ -39,6 +39,8 @@ extern "C" { #include "EXTERN.h" #include "perl.h" #include "XSUB.h" +#include +#include #ifdef __cplusplus } #endif @@ -88,61 +90,6 @@ 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) { @@ -176,325 +123,6 @@ STATIC MGVTBL vtbl_md5 = { #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; @@ -674,7 +302,7 @@ addfile(self, fh) InputStream fh PREINIT: MD5_CTX* context = get_md5_ctx(aTHX_ self); - STRLEN fill = context->bytes_low & 0x3F; + STRLEN fill = (context->count >> 3) & (MD5_BLOCK_LENGTH - 1); #ifdef USE_HEAP_INSTEAD_OF_STACK unsigned char* buffer; #else 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 60d284756d7..4a454214dd4 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 = < returns the complete text up to the point of failure. If the string is "PARA", C 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 the default behaviour (i.e. failure) is reinstated. +If the string is "", 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/autodie/t/truncate.t b/gnu/usr.bin/perl/cpan/autodie/t/truncate.t index 2472139a1a0..df6270e6f45 100755 --- a/gnu/usr.bin/perl/cpan/autodie/t/truncate.t +++ b/gnu/usr.bin/perl/cpan/autodie/t/truncate.t @@ -6,13 +6,12 @@ use File::Temp qw(tempfile); use IO::Handle; use File::Spec; use FindBin qw($Bin); -use constant TRUNCATE_ME => File::Spec->catfile($Bin,'truncate_me'); -my ($truncate_status, $tmpfh); +my ($truncate_status, $tmpfh, $tmpfile); # Some systems have a screwy tempfile. We don't run our tests there. eval { - $tmpfh = tempfile(); + ($tmpfh, $tmpfile) = tempfile(); }; if ($@ or !defined $tmpfh) { @@ -80,7 +79,7 @@ isa_ok($@, 'autodie::exception', "Truncating unopened file (TRUNCATE_FH)"); # wrong with our tests, or autodie... { use autodie qw(open); - open(TRUNCATE_FH, '+<', TRUNCATE_ME); + open(TRUNCATE_FH, '+<', $tmpfile); } # Now try truncating the filehandle. This should succeed. 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 72ca9ff1da9..c1e5afcecbc 100644 --- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm +++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm @@ -857,7 +857,9 @@ 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) { splice (@dirs, 0, $cut); diff --git a/gnu/usr.bin/perl/deb.c b/gnu/usr.bin/perl/deb.c index d16103eb1e7..f2ad660dc86 100644 --- a/gnu/usr.bin/perl/deb.c +++ b/gnu/usr.bin/perl/deb.c @@ -236,7 +236,7 @@ Perl_deb_stack_all(pTHX) PerlIO_printf(Perl_debug_log, "\n"); else { - /* Find the the current context's stack range by searching + /* Find 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/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm index ae384fd5b58..8fb3492090b 100644 --- a/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm +++ b/gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm @@ -3,7 +3,6 @@ use strict; use warnings; use Exporter; use File::Spec; -use lib qw( lib ); use ExtUtils::ParseXS::Constants (); our $VERSION = '3.24'; diff --git a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm index eff27b95a97..a2aabc18648 100644 --- a/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm +++ b/gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm @@ -2677,11 +2677,12 @@ sub objectify { next; } - # Don't do anything with undefs. - - unless (defined($a[$i])) { - next; - } +# # Don't do anything with undefs. +# +# unless (defined($a[$i])) { +# next; +# } + $a[$i] //= 0; # Perl scalars are fed to the appropriate constructor. 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 1dd95e39595..e3c1441288e 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 = 60; + my $TIMEOUT = 600; my $mutex = 1; share($mutex); diff --git a/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL b/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL index 76c3bc0c7eb..a0f83b6e674 100644 --- a/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL +++ b/gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL @@ -64,8 +64,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/DynaLoader/dl_dlopen.xs b/gnu/usr.bin/perl/ext/DynaLoader/dl_dlopen.xs index cb513ab9d36..96d30dea243 100644 --- a/gnu/usr.bin/perl/ext/DynaLoader/dl_dlopen.xs +++ b/gnu/usr.bin/perl/ext/DynaLoader/dl_dlopen.xs @@ -170,8 +170,8 @@ dl_load_file(filename, flags=0) char pathbuf[PATH_MAX + 2]; if (*filename != '/' && strchr(filename, '/')) { if (getcwd(pathbuf, PATH_MAX - strlen(filename))) { - strcat(pathbuf, "/"); - strcat(pathbuf, filename); + my_strlcat(pathbuf, "/", sizeof(pathbuf)); + my_strlcat(pathbuf, filename, sizeof(pathbuf)); filename = pathbuf; } } diff --git a/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL b/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL index a8adbf01218..a48c039fa88 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 de0300cbfa3..307d5bf5368 100644 --- a/gnu/usr.bin/perl/ext/POSIX/POSIX.xs +++ b/gnu/usr.bin/perl/ext/POSIX/POSIX.xs @@ -309,14 +309,22 @@ const struct lconv_offset lconv_strings[] = { }; const struct lconv_offset lconv_integers[] = { - {"int_frac_digits", offsetof(struct lconv, int_frac_digits)}, - {"frac_digits", offsetof(struct lconv, frac_digits)}, - {"p_cs_precedes", offsetof(struct lconv, p_cs_precedes)}, - {"p_sep_by_space", offsetof(struct lconv, p_sep_by_space)}, - {"n_cs_precedes", offsetof(struct lconv, n_cs_precedes)}, - {"n_sep_by_space", offsetof(struct lconv, n_sep_by_space)}, - {"p_sign_posn", offsetof(struct lconv, p_sign_posn)}, - {"n_sign_posn", offsetof(struct lconv, n_sign_posn)}, + {"int_frac_digits", offsetof(struct lconv, int_frac_digits)}, + {"frac_digits", offsetof(struct lconv, frac_digits)}, + {"p_cs_precedes", offsetof(struct lconv, p_cs_precedes)}, + {"p_sep_by_space", offsetof(struct lconv, p_sep_by_space)}, + {"n_cs_precedes", offsetof(struct lconv, n_cs_precedes)}, + {"n_sep_by_space", offsetof(struct lconv, n_sep_by_space)}, + {"p_sign_posn", offsetof(struct lconv, p_sign_posn)}, + {"n_sign_posn", offsetof(struct lconv, n_sign_posn)}, +#ifdef HAS_LC_MONETARY_2008 + {"int_p_cs_precedes", offsetof(struct lconv, int_p_cs_precedes)}, + {"int_p_sep_by_space", offsetof(struct lconv, int_p_sep_by_space)}, + {"int_n_cs_precedes", offsetof(struct lconv, int_n_cs_precedes)}, + {"int_n_sep_by_space", offsetof(struct lconv, int_n_sep_by_space)}, + {"int_p_sign_posn", offsetof(struct lconv, int_p_sign_posn)}, + {"int_n_sign_posn", offsetof(struct lconv, int_n_sign_posn)}, +#endif {NULL, 0} }; diff --git a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod index 94a5f9dcd97..f72beb6aa5b 100644 --- a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod +++ b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod @@ -848,6 +848,12 @@ Here is how to query the database for the B (Deutsch or German) locale. n_sep_by_space p_sign_posn n_sign_posn + int_p_cs_precedes + int_p_sep_by_space + int_n_cs_precedes + int_n_sep_by_space + int_p_sign_posn + int_n_sign_posn )) { printf qq(%s: "%s",\n), diff --git a/gnu/usr.bin/perl/ext/POSIX/t/posix.t b/gnu/usr.bin/perl/ext/POSIX/t/posix.t index c2e4abe736e..cd46485d9bf 100644 --- a/gnu/usr.bin/perl/ext/POSIX/t/posix.t +++ b/gnu/usr.bin/perl/ext/POSIX/t/posix.t @@ -8,7 +8,7 @@ BEGIN { } } -use Test::More tests => 109; +use Test::More tests => 115; use POSIX qw(fcntl_h signal_h limits_h _exit getcwd open read strftime write errno localeconv dup dup2 lseek access); @@ -343,8 +343,24 @@ SKIP: { } } - foreach (qw(int_frac_digits frac_digits p_cs_precedes p_sep_by_space - n_cs_precedes n_sep_by_space p_sign_posn n_sign_posn)) { + my @lconv = qw( + int_frac_digits frac_digits + p_cs_precedes p_sep_by_space + n_cs_precedes n_sep_by_space + p_sign_posn n_sign_posn + ); + + SKIP: { + skip('No HAS_LC_MONETARY_2008', 6) unless $Config{d_lc_monetary_2008}; + + push @lconv, qw( + int_p_cs_precedes int_p_sep_by_space + int_n_cs_precedes int_n_sep_by_space + int_p_sign_posn int_n_sign_posn + ); + } + + foreach (@lconv) { SKIP: { skip("localeconv has no result for $_", 1) unless exists $conv->{$_}; diff --git a/gnu/usr.bin/perl/ext/re/t/reflags.t b/gnu/usr.bin/perl/ext/re/t/reflags.t index 482b2c8066d..85bbdb45ec1 100644 --- a/gnu/usr.bin/perl/ext/re/t/reflags.t +++ b/gnu/usr.bin/perl/ext/re/t/reflags.t @@ -56,7 +56,7 @@ ok 'f r e l p' =~ /f r e l p/, SKIP: { if ( !$Config::Config{d_setlocale} - || $Config::Config{ccflags} =~ /\bD?NO_LOCALE\b/ + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ ) { skip "no locale support", 7 } diff --git a/gnu/usr.bin/perl/hints/openbsd.sh b/gnu/usr.bin/perl/hints/openbsd.sh index 2c24c23fae7..a3addd9fc0f 100644 --- a/gnu/usr.bin/perl/hints/openbsd.sh +++ b/gnu/usr.bin/perl/hints/openbsd.sh @@ -8,12 +8,8 @@ # ./Configure -des -Dopenbsd_distribution=defined # -# In OpenBSD > 3.7, use perl's malloc [perl #75742] -case "$osvers" in -3.[89]*|[4-9]*) - test "$usemymalloc" || usemymalloc=y - ;; -esac +# OpenBSD has a better malloc than perl... +test "$usemymalloc" || usemymalloc='n' # malloc wrap works case "$usemallocwrap" in @@ -105,6 +101,13 @@ 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' @@ -144,12 +147,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='/usr/local/include' - loclibpth='/usr/local/lib' + locincpth='' + loclibpth='' # Link perl with shared libperl - if [ "$usedl" = "$define" -a -r shlib_version ]; then + if [ "$usedl" = "$define" -a -r $src/shlib_version ]; then useshrplib=true - libperl=`. ./shlib_version; echo libperl.so.${major}.${minor}` + libperl=`. $src/shlib_version; echo libperl.so.${major}.${minor}` fi ;; esac diff --git a/gnu/usr.bin/perl/installperl b/gnu/usr.bin/perl/installperl index 594f0453f40..0e254269cf7 100644 --- a/gnu/usr.bin/perl/installperl +++ b/gnu/usr.bin/perl/installperl @@ -146,7 +146,7 @@ if ((-e "testcompile") && (defined($ENV{'COMPILE'}))) { } # Exclude nonxs extensions that are not architecture dependent -my @nonxs = grep(!/^Errno$/, split(' ', $Config{'nonxs_ext'})); +my @nonxs = grep(!/^(Errno|IO\/Compress)$/, split(' ', $Config{'nonxs_ext'})); my @ext_dirs = qw(cpan dist ext); foreach my $ext_dir (@ext_dirs) { @@ -192,7 +192,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 = "$opts{destdir}$Config{installman1dir}"; +my $installman1dir = "none"; my $man1ext = $Config{man1ext}; my $libperl = $Config{libperl}; # Shared library and dynamic loading suffixes. @@ -246,9 +246,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 @@ -274,6 +274,10 @@ 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) { @@ -297,10 +301,7 @@ if ($Is_VMS) { } elsif ($^O ne 'dos') { if (!$Is_NetWare) { - 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"); + install("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext", "0755"); } else { # If installing onto a NetWare server @@ -372,7 +373,9 @@ elsif ($Is_Cygwin) { # On Cygwin symlink it to CORE to make Makefile happy ) } else { # [als] hard-coded 'libperl' name... not good! - @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>; + #@corefiles = <*.h libperl*.* perl*$Config{lib_ext}>; + @corefiles = <*.h *.inc perl*$Config{lib_ext}>; + push(@corefiles,) unless defined($ENV{"NOLIBINSTALL"}); # AIX needs perl.exp installed as well. push(@corefiles,'perl.exp') if $^O eq 'aix'; @@ -636,6 +639,21 @@ sub copy { $packlist->{$xto} = { type => 'file' }; } +sub install { + my($from,$to,$mode) = @_; + + my $xto = $to; + my $cmd = join(' ', @installcmd); + $cmd .= " -m $mode" if $mode; + $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' }; +} + sub installlib { my $dir = $File::Find::dir; $dir =~ s!\Alib/?!!; @@ -733,6 +751,19 @@ sub installlib { return unless $do_installprivlib; } + if ($name eq 'Config_heavy.pl') { + open my $ifh, '<', $_ or die $!; + $_ = "$_.orig"; + open my $ofh, '>', $_ or die $!; + while (my $l = <$ifh>) { + $l =~ s,^(ccflags|cppflags)[^=]*='[^']+,$& -I/usr/local/include,; + $l =~ s,^(ldflags|lddlflags)[^=]*='[^']+,$& -L/usr/local/lib,; + print $ofh $l; + } + close $ifh; + close $ofh; + } + if ($Is_NetWare && !$opts{netware} && /\.(?:nlp|nlm|bs)$/) { # Don't copy .nlp,.nlm files, doesn't make sense on Windows and also # if copied will give problems when building new extensions. diff --git a/gnu/usr.bin/perl/lib/AnyDBM_File.pm b/gnu/usr.bin/perl/lib/AnyDBM_File.pm index 4153af2de2d..3b41a4a100b 100644 --- a/gnu/usr.bin/perl/lib/AnyDBM_File.pm +++ b/gnu/usr.bin/perl/lib/AnyDBM_File.pm @@ -22,8 +22,6 @@ __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/Config.t b/gnu/usr.bin/perl/lib/Config.t index ee2eaea99a2..09e45a1751e 100644 --- a/gnu/usr.bin/perl/lib/Config.t +++ b/gnu/usr.bin/perl/lib/Config.t @@ -271,8 +271,8 @@ foreach my $lib (qw(applibexp archlibexp privlibexp sitearchexp sitelibexp } # So we expect to find it in @INC - ok (exists $orig_inc{$dir}, "Expect $lib '$dir' to be in \@INC") - or $failed++; + ok (exists $orig_inc{$_}, "Expect $lib '$_' to be in \@INC") + or $failed++ for split ':', $dir; } } _diag ('@INC is:', @orig_inc) if $failed; diff --git a/gnu/usr.bin/perl/lib/Getopt/Std.pm b/gnu/usr.bin/perl/lib/Getopt/Std.pm index ecb7ebbf971..fb7f2d3d194 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, getopts - Process single-character switches with switch clustering +Getopt::Std, getopt, getopts - Process single-character switches with switch clustering =head1 SYNOPSIS diff --git a/gnu/usr.bin/perl/lib/locale.t b/gnu/usr.bin/perl/lib/locale.t index eea92e00e02..5e24e9b257e 100644 --- a/gnu/usr.bin/perl/lib/locale.t +++ b/gnu/usr.bin/perl/lib/locale.t @@ -15,7 +15,7 @@ BEGIN { @INC = '../lib'; unshift @INC, '.'; require Config; import Config; - if (!$Config{d_setlocale} || $Config{ccflags} =~ /\bD?NO_LOCALE\b/) { + if (!$Config{d_setlocale} || $Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/) { print "1..0\n"; exit; } diff --git a/gnu/usr.bin/perl/plan9/config_sh.sample b/gnu/usr.bin/perl/plan9/config_sh.sample index 57992ff4742..ea1d853f464 100644 --- a/gnu/usr.bin/perl/plan9/config_sh.sample +++ b/gnu/usr.bin/perl/plan9/config_sh.sample @@ -296,6 +296,7 @@ d_isinf='undef' d_isnan='undef' d_isnanl='undef' d_killpg='undef' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='define' d_libm_lib_version='0' diff --git a/gnu/usr.bin/perl/pod/perlmodinstall.pod b/gnu/usr.bin/perl/pod/perlmodinstall.pod index f92620c6d61..9a2634e9ab3 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 -xof - + gzip -dc yourmodule.tar.gz | tar -xf - B. UNPACK -Unpack the result with C +Unpack the result with C C. BUILD diff --git a/gnu/usr.bin/perl/pod/perlop.pod b/gnu/usr.bin/perl/pod/perlop.pod index 56d463a332b..3cbd5bb20f0 100644 --- a/gnu/usr.bin/perl/pod/perlop.pod +++ b/gnu/usr.bin/perl/pod/perlop.pod @@ -1571,7 +1571,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 X X X -X<\n> X<\r> X<\r\n> +X<\r> For constructs that do interpolate, variables beginning with "C<$>" or "C<@>" are interpolated. Subscripted variables such as C<$a[3]> or diff --git a/gnu/usr.bin/perl/pp.c b/gnu/usr.bin/perl/pp.c index 4ec6887dfd6..79abdb01f89 100644 --- a/gnu/usr.bin/perl/pp.c +++ b/gnu/usr.bin/perl/pp.c @@ -2785,9 +2785,12 @@ PP(pp_srand) } } else { - anum = seed(); + anum = 0; } + if (anum) + (void)srand48_deterministic((Rand_seed_t)anum); + else (void)seedDrand01((Rand_seed_t)anum); PL_srand_called = TRUE; if (anum) diff --git a/gnu/usr.bin/perl/shlib_version b/gnu/usr.bin/perl/shlib_version index ffdd3d2d569..730231c38d0 100644 --- a/gnu/usr.bin/perl/shlib_version +++ b/gnu/usr.bin/perl/shlib_version @@ -1,2 +1,2 @@ major=17 -minor=0 +minor=1 diff --git a/gnu/usr.bin/perl/symbian/config.sh b/gnu/usr.bin/perl/symbian/config.sh index 29482a2c50f..bec4eafdfa2 100644 --- a/gnu/usr.bin/perl/symbian/config.sh +++ b/gnu/usr.bin/perl/symbian/config.sh @@ -242,6 +242,7 @@ d_isinf='undef' d_isnan='undef' d_isnanl='undef' d_killpg='undef' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='undef' d_libm_lib_version='undef' diff --git a/gnu/usr.bin/perl/t/lib/feature/arc4random b/gnu/usr.bin/perl/t/lib/feature/arc4random new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gnu/usr.bin/perl/t/lib/h2ph.pht b/gnu/usr.bin/perl/t/lib/h2ph.pht index f068d6dae46..cda8d21051c 100644 --- a/gnu/usr.bin/perl/t/lib/h2ph.pht +++ b/gnu/usr.bin/perl/t/lib/h2ph.pht @@ -90,10 +90,6 @@ 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/loc_tools.pl b/gnu/usr.bin/perl/t/loc_tools.pl index 737e870f8a0..193641d8315 100644 --- a/gnu/usr.bin/perl/t/loc_tools.pl +++ b/gnu/usr.bin/perl/t/loc_tools.pl @@ -229,7 +229,8 @@ sub is_locale_utf8 ($) { # Return a boolean as to if core Perl thinks the input # go through testing all the locales on the platform. if (CORE::fc(chr utf8::unicode_to_native(0xdf)) ne "ss") { if ($locale =~ /UTF-?8/i) { - ok (0, "Verify $locale with UTF-8 in name is a UTF-8 locale"); + diag("Cannot verify $locale with UTF-8 in name is a UTF-8 locale"); + #ok (0, "Verify $locale with UTF-8 in name is a UTF-8 locale"); } } else { diff --git a/gnu/usr.bin/perl/t/op/quotemeta.t b/gnu/usr.bin/perl/t/op/quotemeta.t index 1b8613ac9b9..bb10772c41a 100644 --- a/gnu/usr.bin/perl/t/op/quotemeta.t +++ b/gnu/usr.bin/perl/t/op/quotemeta.t @@ -128,10 +128,18 @@ is(length(quotemeta($char)), 1, "quotemeta '\\N{U+D8}' in UTF-8 length"); is(quotemeta($char), "\\$char", "quotemeta '\\N{U+D7}' locale in UTF-8"); is(length(quotemeta($char)), 2, "quotemeta '\\N{U+D7}' locale in UTF-8 length"); - $char = "\N{U+D8}"; # Every non-ASCII Latin1 is quoted in locale. - utf8::upgrade($char); - is(quotemeta($char), "\\$char", "quotemeta '\\N{U+D8}' locale in UTF-8"); - is(length(quotemeta($char)), 2, "quotemeta '\\N{U+D8}' locale in UTF-8 length"); + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 2 + } + $char = "\N{U+D8}"; # Every non-ASCII Latin1 is quoted in locale. + utf8::upgrade($char); + is(quotemeta($char), "\\$char", "quotemeta '\\N{U+D8}' locale in UTF-8"); + is(length(quotemeta($char)), 2, "quotemeta '\\N{U+D8}' locale in UTF-8 length"); + } is(quotemeta("\x{263a}"), "\\\x{263a}", "quotemeta locale Unicode quoted"); is(length(quotemeta("\x{263a}")), 2, "quotemeta locale Unicode quoted length"); diff --git a/gnu/usr.bin/perl/t/op/taint.t b/gnu/usr.bin/perl/t/op/taint.t index c3c03baa7ca..717005277e8 100644 --- a/gnu/usr.bin/perl/t/op/taint.t +++ b/gnu/usr.bin/perl/t/op/taint.t @@ -17,7 +17,7 @@ BEGIN { use strict; use Config; -plan tests => 801; +plan tests => 817; $| = 1; @@ -298,6 +298,12 @@ my $TEST = 'TEST'; is($res, 1, "$desc: res value"); is($one, 'a', "$desc: \$1 value"); + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 10 } SKIP: { skip 'No locale testing without d_setlocale', 10 if(!$Config{d_setlocale}); @@ -317,6 +323,7 @@ my $TEST = 'TEST'; is_tainted($one, "$desc: \$1 tainted"); is($res, 1, "$desc: res value"); is($one, 'abcd', "$desc: \$1 value"); + } $desc = "match /g with pattern tainted via locale"; @@ -341,6 +348,13 @@ my $TEST = 'TEST'; $s = 'abcd'; ($res) = $s =~ /$TAINT(.+)/; $one = $1; + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 12 + } isnt_tainted($s, "$desc: s not tainted"); is_tainted($res, "$desc: res tainted"); is_tainted($one, "$desc: \$1 tainted"); @@ -358,9 +372,10 @@ my $TEST = 'TEST'; is($res, 'a', "$desc: res value"); is($res2,'b', "$desc: res2 value"); is($one, 'd', "$desc: \$1 value"); + } SKIP: { - skip 'No locale testing without d_setlocale', 12 if(!$Config{d_setlocale}); + skip 'No locale testing without d_setlocale', 12 if(!$Config{d_setlocale}) || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/; $desc = "match with pattern tainted via locale, list cxt"; @@ -479,6 +494,13 @@ my $TEST = 'TEST'; is($one, 'd', "$desc: \$1 value"); $desc = "substitution /ge with pattern tainted"; + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 18 + } $s = 'abc'; { @@ -518,9 +540,10 @@ my $TEST = 'TEST'; is($s, 'abcd', "$desc: s value"); is($res, 'xyz', "$desc: res value"); is($one, 'abcd', "$desc: \$1 value"); + } SKIP: { - skip 'No locale testing without d_setlocale', 18 if(!$Config{d_setlocale}); + skip 'No locale testing without d_setlocale', 18 if(!$Config{d_setlocale} || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/); $desc = "substitution with pattern tainted via locale"; @@ -661,6 +684,13 @@ my $TEST = 'TEST'; $desc = "use re 'taint': match /g with string tainted"; $s = 'abcd' . $TAINT; + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 10 + } $res = $s =~ /(.)/g; $one = $1; is_tainted($s, "$desc: s tainted"); @@ -668,6 +698,7 @@ my $TEST = 'TEST'; is_tainted($one, "$desc: \$1 tainted"); is($res, 1, "$desc: res value"); is($one, 'a', "$desc: \$1 value"); + } $desc = "use re 'taint': match with string tainted, list cxt"; @@ -685,6 +716,13 @@ my $TEST = 'TEST'; $s = 'abcd' . $TAINT; ($res, $res2) = $s =~ /(.)/g; $one = $1; + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 12 + } is_tainted($s, "$desc: s tainted"); is_tainted($res, "$desc: res tainted"); is_tainted($res2, "$desc: res2 tainted"); @@ -692,6 +730,7 @@ my $TEST = 'TEST'; is($res, 'a', "$desc: res value"); is($res2,'b', "$desc: res2 value"); is($one, 'd', "$desc: \$1 value"); + } $desc = "use re 'taint': match with pattern tainted"; @@ -716,7 +755,7 @@ my $TEST = 'TEST'; is($one, 'a', "$desc: \$1 value"); SKIP: { - skip 'No locale testing without d_setlocale', 10 if(!$Config{d_setlocale}); + skip 'No locale testing without d_setlocale', 10 if(!$Config{d_setlocale} || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/); $desc = "use re 'taint': match with pattern tainted via locale"; @@ -777,7 +816,7 @@ my $TEST = 'TEST'; is($one, 'd', "$desc: \$1 value"); SKIP: { - skip 'No locale testing without d_setlocale', 12 if(!$Config{d_setlocale}); + skip 'No locale testing without d_setlocale', 12 if(!$Config{d_setlocale} || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/); $desc = "use re 'taint': match with pattern tainted via locale, list cxt"; @@ -826,6 +865,13 @@ my $TEST = 'TEST'; is_tainted($one, "$desc: \$1 tainted"); is($s, 'xyz', "$desc: s value"); is($res, 1, "$desc: res value"); + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 18 + } is($one, 'abcd', "$desc: \$1 value"); $desc = "use re 'taint': substitution /g with string tainted"; @@ -851,6 +897,7 @@ my $TEST = 'TEST'; is($s, 'abcd', "$desc: s value"); is($res, 'xyz', "$desc: res value"); is($one, 'abcd', "$desc: \$1 value"); + } $desc = "use re 'taint': substitution /e with string tainted"; @@ -938,8 +985,7 @@ my $TEST = 'TEST'; is($one, 'abcd', "$desc: \$1 value"); SKIP: { - skip 'No locale testing without d_setlocale', 18 if(!$Config{d_setlocale}); - + skip 'No locale testing without d_setlocale', 18 if(!$Config{d_setlocale} || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/); $desc = "use re 'taint': substitution with pattern tainted via locale"; $s = 'abcd'; @@ -2211,7 +2257,13 @@ end isnt_tainted($b, "regex optimization of single char /[]/i doesn't taint"); } -{ +SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 4 + } # RT 81230: tainted value during FETCH created extra ref to tied obj package P81230; @@ -2342,7 +2394,7 @@ pass("no death when TARG of ref is tainted"); } SKIP: { - skip 'No locale testing without d_setlocale', 4 if(!$Config{d_setlocale}); + skip 'No locale testing without d_setlocale', 4 if(!$Config{d_setlocale} || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/); use feature 'fc'; BEGIN { diff --git a/gnu/usr.bin/perl/t/porting/customized.dat b/gnu/usr.bin/perl/t/porting/customized.dat index 04c8db01df7..aa8bb700d2b 100644 --- a/gnu/usr.bin/perl/t/porting/customized.dat +++ b/gnu/usr.bin/perl/t/porting/customized.dat @@ -6,7 +6,7 @@ CPAN cpan/CPAN/lib/CPAN/HTTP/Client.pm 242842ca566fd8e3d776deb549ff758a571ca2e3 CPAN cpan/CPAN/lib/CPAN/Index.pm 73aee30450127c5ac4dc05abc2c10a8accd4b198 CPAN cpan/CPAN/lib/CPAN/LWP/UserAgent.pm e09525b0c2377c5ac28b7fad1b6d70c57e343913 CPAN cpan/CPAN/lib/CPAN/Mirrors.pm 580e74746abaf1628d533015d5b529d82a470af4 -Digest::MD5 cpan/Digest-MD5/t/files.t bdbe05b705d9da305fedce7a9f4b6ba63250c7cf +Digest::MD5 cpan/Digest-MD5/t/files.t c1417867017210ce3d199eb9d55d8ef61fdf1a83 Encode cpan/Encode/bin/enc2xs f60036fd3574ec05c9aab7f4db00a828d5dea92d Encode cpan/Encode/Byte/Makefile.PL 0986e25f981a3bf182a13a0060d28d4efedd87e6 Encode cpan/Encode/CN/Makefile.PL 5507a49d822d0c1d14e967f4595e29e9c873540b @@ -20,7 +20,7 @@ Encode cpan/Encode/Symbol/Makefile.PL 4beddbbd00f638b7de9c6cd0821d9d38020a8218 Encode cpan/Encode/TW/Makefile.PL 0cc44f95e59f45c0fb3b66bde41525f13c19a25c Module::Build cpan/Module-Build/lib/Module/Build/ConfigData.pm 85eb9656e68d1f256737dc52d86b5d0fed28f832 PerlIO::via::QuotedPrint cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t ca39f0146e89de02c746e199c45dcb3e5edad691 -Pod::Parser cpan/Pod-Parser/lib/Pod/PlainText.pm f0b490545b4e52e141450d1192d0ca00bd8d7a82 +Pod::Parser cpan/Pod-Parser/lib/Pod/PlainText.pm 77708dd9c53ce7cd9f14c3c40a4f90e986b22e45 Text::Balanced cpan/Text-Balanced/t/01_compile.t 1598cf491a48fa546260a2ec41142abe84da533d Text::Balanced cpan/Text-Balanced/t/02_extbrk.t 6ba1b64a4604e822dc2260b8ffcea6b406339ee8 Text::Balanced cpan/Text-Balanced/t/03_extcbk.t 3307c980af28963414cab799c427b359ef3b8657 diff --git a/gnu/usr.bin/perl/t/porting/dual-life.t b/gnu/usr.bin/perl/t/porting/dual-life.t index 8d9f070b0aa..165738ceafb 100644 --- a/gnu/usr.bin/perl/t/porting/dual-life.t +++ b/gnu/usr.bin/perl/t/porting/dual-life.t @@ -23,6 +23,12 @@ 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/pat.t b/gnu/usr.bin/perl/t/re/pat.t index 7965f4e67d2..a20c91ab747 100755 --- a/gnu/usr.bin/perl/t/re/pat.t +++ b/gnu/usr.bin/perl/t/re/pat.t @@ -509,7 +509,13 @@ sub run_tests { is(qr/\b\v$/, '(?^:\b\v$)', 'qr/\b\v$/'); } - { # Test that charset modifier work, and are interpolated + SKIP: { # Test that charset modifier work, and are interpolated + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 13 + } is(qr/\b\v$/, '(?^:\b\v$)', 'Verify no locale, no unicode_strings gives default modifier'); is(qr/(?l:\b\v$)/, '(?^:(?l:\b\v$))', 'Verify infix l modifier compiles'); is(qr/(?u:\b\v$)/, '(?^:(?u:\b\v$))', 'Verify infix u modifier compiles'); diff --git a/gnu/usr.bin/perl/t/uni/fold.t b/gnu/usr.bin/perl/t/uni/fold.t index 94090e941c0..a0e1551b6b4 100644 --- a/gnu/usr.bin/perl/t/uni/fold.t +++ b/gnu/usr.bin/perl/t/uni/fold.t @@ -432,7 +432,7 @@ foreach my $test_ref (@CF) { utf8::upgrade($utf8); is(fc($latin1), fc($utf8), "fc() gives the same results for \\x{$_} in Latin-1 and UTF-8 under unicode_strings"); SKIP: { - skip 'No locale testing without d_setlocale', 2 if(!$Config{d_setlocale}); + skip 'No locale testing without d_setlocale', 2 if(!$Config{d_setlocale}) || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/; BEGIN { if($Config{d_setlocale}) { require locale; import locale; @@ -441,7 +441,13 @@ foreach my $test_ref (@CF) { is(fc($latin1), lc($latin1), "use locale; fc(qq{\\x{$_}}), lc(qq{\\x{$_}}) when qq{\\x{$_}} is in latin-1"); is(fc($utf8), lc($utf8), "use locale; fc(qq{\\x{$_}}), lc(qq{\\x{$_}}) when qq{\\x{$_}} is in latin-1"); } - { + SKIP: { + if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ + ) { + skip "no locale support", 2 + } no feature 'unicode_strings'; is(fc($latin1), lc($latin1), "under nothing, fc() for <256 is the same as lc"); } diff --git a/gnu/usr.bin/perl/t/uni/overload.t b/gnu/usr.bin/perl/t/uni/overload.t index bd87b6665c9..dbc8e019090 100644 --- a/gnu/usr.bin/perl/t/uni/overload.t +++ b/gnu/usr.bin/perl/t/uni/overload.t @@ -101,6 +101,12 @@ eval { $have_setlocale++; } }; +if ( + !$Config::Config{d_setlocale} + || $Config::Config{ccflags} =~ /\bD?NO_LOCALE(_|\b)/ +) { + $have_setlocale = 0; +} SKIP: { if (!$have_setlocale) { diff --git a/gnu/usr.bin/perl/uconfig.h b/gnu/usr.bin/perl/uconfig.h index e5cca088d84..4056b4b4fac 100644 --- a/gnu/usr.bin/perl/uconfig.h +++ b/gnu/usr.bin/perl/uconfig.h @@ -226,6 +226,12 @@ */ /*#define HAS_LOCALECONV / **/ +/* HAS_LC_MONETARY_2008: + * This symbol, if defined, indicates that the localeconv routine is + * available and has the additional members added in POSIX 1003.1-2008. + */ +/*#define HAS_LC_MONETARY_2008 / **/ + /* HAS_LOCKF: * This symbol, if defined, indicates that the lockf routine is * available to do file locking. @@ -4718,6 +4724,6 @@ #endif /* Generated from: - * 7557e985de18f71e80f627226b454bc8eaf20477dcf0c45b5b2c51ec792f5c89 config_h.SH - * dbc8d38ba52ae23e5423418bb3f56b1b6fcdaa82cf71ba0be3463e8221bfe0c0 uconfig.sh + * 1efb97c1f4b2c9e6bb17b9172f43cc7f281124904ecca38fa6561d6800432847 config_h.SH + * 87143cb3dacf7a54fe1df682d22e85daae58d626055b7bd02efa3d12d3f05c27 uconfig.sh * ex: set ro: */ diff --git a/gnu/usr.bin/perl/uconfig.sh b/gnu/usr.bin/perl/uconfig.sh index 9585636dba1..f2460959c29 100644 --- a/gnu/usr.bin/perl/uconfig.sh +++ b/gnu/usr.bin/perl/uconfig.sh @@ -235,6 +235,7 @@ d_isinf='undef' d_isnan='undef' d_isnanl='undef' d_killpg='undef' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='undef' d_libm_lib_version='undef' diff --git a/gnu/usr.bin/perl/uconfig64.sh b/gnu/usr.bin/perl/uconfig64.sh index 98c0195e3cf..dfff260fff6 100644 --- a/gnu/usr.bin/perl/uconfig64.sh +++ b/gnu/usr.bin/perl/uconfig64.sh @@ -236,6 +236,7 @@ d_isinf='undef' d_isnan='undef' d_isnanl='undef' d_killpg='undef' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='undef' d_libm_lib_version='undef' diff --git a/gnu/usr.bin/perl/util.c b/gnu/usr.bin/perl/util.c index 5a3c0770262..5e0f788a349 100644 --- a/gnu/usr.bin/perl/util.c +++ b/gnu/usr.bin/perl/util.c @@ -4408,6 +4408,9 @@ Perl_parse_unicode_opts(pTHX_ const char **popt) U32 Perl_seed(pTHX) { +#if defined(__OpenBSD__) + return arc4random(); +#else dVAR; /* * This is really just a quick hack which grabs various garbage @@ -4484,6 +4487,7 @@ Perl_seed(pTHX) u += SEED_C5 * (U32)PTR2UV(&when); #endif return u; +#endif } void diff --git a/gnu/usr.bin/perl/utils.lst b/gnu/usr.bin/perl/utils.lst index d1e5b8f95c6..46af784d991 100644 --- a/gnu/usr.bin/perl/utils.lst +++ b/gnu/usr.bin/perl/utils.lst @@ -11,9 +11,8 @@ utils/enc2xs utils/h2ph utils/h2xs utils/instmodsh -utils/json_pp utils/libnetcfg -utils/perlbug # link = utils/perlthanks +utils/perlbug utils/perldoc utils/perlivp utils/piconv diff --git a/gnu/usr.bin/perl/utils/Makefile.PL b/gnu/usr.bin/perl/utils/Makefile.PL index 8e461d41ebe..d80cfadaf98 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 config_data.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 xsubpp.PL pod2html.PL zipdetails.PL -plextract = c2ph config_data corelist cpan h2ph h2xs instmodsh json_pp perlbug perldoc perlivp pl2pm prove ptar ptardiff ptargrep shasum splain libnetcfg piconv enc2xs xsubpp pod2html zipdetails -plextractexe = ./c2ph ./config_data ./corelist ./cpan ./h2ph ./h2xs ./json_pp ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./ptar ./ptardiff ./ptargrep ./shasum ./splain ./libnetcfg ./piconv ./enc2xs ./xsubpp ./pod2html ./zipdetails +pl = c2ph.PL config_data.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 xsubpp.PL pod2html.PL +plextract = c2ph config_data corelist cpan h2ph h2xs instmodsh perlbug perldoc perlivp pl2pm prove splain libnetcfg piconv enc2xs xsubpp pod2html +plextractexe = ./c2ph ./config_data ./corelist ./cpan ./h2ph ./h2xs ./instmodsh ./perlbug ./perldoc ./perlivp ./pl2pm ./prove ./splain ./libnetcfg ./piconv ./enc2xs ./xsubpp ./pod2html all: $(plextract) @@ -58,8 +58,6 @@ 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 @@ -68,16 +66,8 @@ 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 @@ -88,8 +78,6 @@ enc2xs: enc2xs.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 9a8b14dca8b..15a0fe429e4 100644 --- a/gnu/usr.bin/perl/utils/h2ph.PL +++ b/gnu/usr.bin/perl/utils/h2ph.PL @@ -571,7 +571,7 @@ sub next_line $in =~ s/\?\?/}/g; # | ??>| }| } - if ($in =~ /^\#ifdef __LANGUAGE_PASCAL__/) { + if ($in =~ s/^\#ifdef __LANGUAGE_PASCAL__//) { # Tru64 disassembler.h evilness: mixed C and Pascal. while () { last if /^\#endif/; @@ -579,8 +579,8 @@ sub next_line $in = ""; next READ; } - if ($in =~ /^extern inline / && # Inlined assembler. - $^O eq 'linux' && $file =~ m!(?:^|/)asm/[^/]+\.h$!) { + # Skip inlined functions in headers + if ($in =~ s/^(extern|static) (__inline__|inline) .*[^;]\s*$//) { while () { last if /^}/; } diff --git a/gnu/usr.bin/perl/utils/perlbug.PL b/gnu/usr.bin/perl/utils/perlbug.PL index 885785ae002..093ca96261d 100644 --- a/gnu/usr.bin/perl/utils/perlbug.PL +++ b/gnu/usr.bin/perl/utils/perlbug.PL @@ -345,15 +345,14 @@ 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 -(or run the program perlbug rather than perlthanks) +If you wish to submit a bug report, please run it without the -T flag. 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 run 'perlthanks'. +note to $thanksaddress instead of a bug report, please use the -T flag. Please do not use $0 to send test messages, test whether perl works, or to report bugs in perl modules from CPAN. @@ -1244,8 +1243,6 @@ S<[ B<-S> ]> S<[ B<-t> ]> S<[ B<-d> ]> S<[ B<-A> ]> S<[ B<-h> ]> S<[ B<-T> ]> B S<[ B<-v> ]> S<[ B<-r> I ]> S<[ B<-A> ]> S<[ B<-ok> | B<-okay> | B<-nok> | B<-nokay> ]> -B - =head1 DESCRIPTION @@ -1398,8 +1395,8 @@ description of what's wrong is fine. =item Can you use C to submit a thank-you note? -Yes, you can do this by either using the C<-T> option, or by invoking -the program as C. Thank-you notes are good. It makes people +Yes, you can do this by using the C<-T> option. +Thank-you notes are good. It makes people smile. =back diff --git a/gnu/usr.bin/perl/vutil.c b/gnu/usr.bin/perl/vutil.c index 1f26140a4c8..02b826fef6a 100644 --- a/gnu/usr.bin/perl/vutil.c +++ b/gnu/usr.bin/perl/vutil.c @@ -587,7 +587,11 @@ 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; #ifdef USE_LOCALE_NUMERIC const char * const cur_numeric = setlocale(LC_NUMERIC, NULL); diff --git a/gnu/usr.bin/perl/win32/Makefile b/gnu/usr.bin/perl/win32/Makefile index aa664ced92a..0de1a0dbc91 100644 --- a/gnu/usr.bin/perl/win32/Makefile +++ b/gnu/usr.bin/perl/win32/Makefile @@ -1265,6 +1265,7 @@ 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)\Package rmdir /s /q $(LIBDIR)\Package -if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params -if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse diff --git a/gnu/usr.bin/perl/win32/config.ce b/gnu/usr.bin/perl/win32/config.ce index bb87699ef6e..d6902d90d32 100644 --- a/gnu/usr.bin/perl/win32/config.ce +++ b/gnu/usr.bin/perl/win32/config.ce @@ -283,6 +283,7 @@ d_isinf='undef' d_isnan='define' d_isnanl='undef' d_killpg='undef' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='define' d_libm_lib_version='undef' diff --git a/gnu/usr.bin/perl/win32/config.gc b/gnu/usr.bin/perl/win32/config.gc index 39cdaefef71..645628a85a3 100644 --- a/gnu/usr.bin/perl/win32/config.gc +++ b/gnu/usr.bin/perl/win32/config.gc @@ -283,6 +283,7 @@ d_isinf='undef' d_isnan='define' d_isnanl='undef' d_killpg='define' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='define' d_libm_lib_version='undef' diff --git a/gnu/usr.bin/perl/win32/config.vc b/gnu/usr.bin/perl/win32/config.vc index eef02e14535..7444e027bb0 100644 --- a/gnu/usr.bin/perl/win32/config.vc +++ b/gnu/usr.bin/perl/win32/config.vc @@ -283,6 +283,7 @@ d_isinf='undef' d_isnan='define' d_isnanl='undef' d_killpg='define' +d_lc_monetary_2008='undef' d_lchown='undef' d_ldbl_dig='define' d_libm_lib_version='undef' diff --git a/gnu/usr.bin/perl/win32/makefile.mk b/gnu/usr.bin/perl/win32/makefile.mk index 02231a1565f..436df1d979c 100644 --- a/gnu/usr.bin/perl/win32/makefile.mk +++ b/gnu/usr.bin/perl/win32/makefile.mk @@ -1463,6 +1463,7 @@ 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)\Package rmdir /s /q $(LIBDIR)\Package -if exist $(LIBDIR)\Params rmdir /s /q $(LIBDIR)\Params -if exist $(LIBDIR)\Parse rmdir /s /q $(LIBDIR)\Parse