Apply local patches, remove excess files - perl-5.20.2
authorafresh1 <afresh1@openbsd.org>
Sat, 25 Apr 2015 19:26:15 +0000 (19:26 +0000)
committerafresh1 <afresh1@openbsd.org>
Sat, 25 Apr 2015 19:26:15 +0000 (19:26 +0000)
70 files changed:
gnu/usr.bin/perl/Configure
gnu/usr.bin/perl/Cross/config.sh-arm-linux
gnu/usr.bin/perl/MANIFEST
gnu/usr.bin/perl/Makefile.SH
gnu/usr.bin/perl/Makefile.bsd-wrapper1
gnu/usr.bin/perl/NetWare/config.wc
gnu/usr.bin/perl/Porting/Maintainers.pl
gnu/usr.bin/perl/Porting/config.sh
gnu/usr.bin/perl/Porting/pumpkin.pod
gnu/usr.bin/perl/config_h.SH
gnu/usr.bin/perl/configpm
gnu/usr.bin/perl/configure.com
gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm
gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm
gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs
gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t
gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
gnu/usr.bin/perl/cpan/IO-Compress/private/MakeUtil.pm
gnu/usr.bin/perl/cpan/NEXT/lib/NEXT.pm
gnu/usr.bin/perl/cpan/Pod-Parser/lib/Pod/PlainText.pm
gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm
gnu/usr.bin/perl/cpan/autodie/t/truncate.t
gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm
gnu/usr.bin/perl/deb.c
gnu/usr.bin/perl/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
gnu/usr.bin/perl/dist/Math-BigInt/lib/Math/BigInt.pm
gnu/usr.bin/perl/dist/threads-shared/t/stress.t
gnu/usr.bin/perl/ext/DynaLoader/Makefile.PL
gnu/usr.bin/perl/ext/DynaLoader/dl_dlopen.xs
gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL
gnu/usr.bin/perl/ext/POSIX/POSIX.xs
gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod
gnu/usr.bin/perl/ext/POSIX/t/posix.t
gnu/usr.bin/perl/ext/re/t/reflags.t
gnu/usr.bin/perl/hints/openbsd.sh
gnu/usr.bin/perl/installperl
gnu/usr.bin/perl/lib/AnyDBM_File.pm
gnu/usr.bin/perl/lib/Config.t
gnu/usr.bin/perl/lib/Getopt/Std.pm
gnu/usr.bin/perl/lib/locale.t
gnu/usr.bin/perl/plan9/config_sh.sample
gnu/usr.bin/perl/pod/perlmodinstall.pod
gnu/usr.bin/perl/pod/perlop.pod
gnu/usr.bin/perl/pp.c
gnu/usr.bin/perl/shlib_version
gnu/usr.bin/perl/symbian/config.sh
gnu/usr.bin/perl/t/lib/feature/arc4random [new file with mode: 0644]
gnu/usr.bin/perl/t/lib/h2ph.pht
gnu/usr.bin/perl/t/loc_tools.pl
gnu/usr.bin/perl/t/op/quotemeta.t
gnu/usr.bin/perl/t/op/taint.t
gnu/usr.bin/perl/t/porting/customized.dat
gnu/usr.bin/perl/t/porting/dual-life.t
gnu/usr.bin/perl/t/re/pat.t
gnu/usr.bin/perl/t/uni/fold.t
gnu/usr.bin/perl/t/uni/overload.t
gnu/usr.bin/perl/uconfig.h
gnu/usr.bin/perl/uconfig.sh
gnu/usr.bin/perl/uconfig64.sh
gnu/usr.bin/perl/util.c
gnu/usr.bin/perl/utils.lst
gnu/usr.bin/perl/utils/Makefile.PL
gnu/usr.bin/perl/utils/h2ph.PL
gnu/usr.bin/perl/utils/perlbug.PL
gnu/usr.bin/perl/vutil.c
gnu/usr.bin/perl/win32/Makefile
gnu/usr.bin/perl/win32/config.ce
gnu/usr.bin/perl/win32/config.gc
gnu/usr.bin/perl/win32/config.vc
gnu/usr.bin/perl/win32/makefile.mk

index 2f91ba1..056b46a 100644 (file)
@@ -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 <<EOCP
+#include <locale.h>
+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'
index a6e2219..320c08b 100644 (file)
@@ -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'
index 6896854..0430960 100644 (file)
@@ -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
index a2e6034..6fdd000 100644 (file)
@@ -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 <<!GROK!THIS!
+# When building Perl itself, link with the thread library,
+# so that extensions can use thread functions even though Perl
+# is not threaded
+CCDLFLAGS = $ccdlflags -lpthread
+!GROK!THIS!
+       ;;
 aix)
        $spitshell >>$Makefile <<!GROK!THIS!
 LIBS                   = $perllibs
@@ -744,11 +753,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): $(obj)
-       $(RMS) $(LIBPERL_NONSHR)
-       $(AR) rcu $(LIBPERL_NONSHR) $(obj)
+#$(LIBPERL_NONSHR): $(obj)
+#      $(RMS) $(LIBPERL_NONSHR)
+#      $(AR) rcu $(LIBPERL_NONSHR) $(obj)
 
-$(MINIPERL_NONSHR): $(LIBPERL_NONSHR) miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT)  perlmini$(OBJ_EXT)
+$(MINIPERL_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)
 
@@ -832,33 +841,33 @@ $(MINIDTRACE_O): perldtrace.d $(minindt_obj) perlmini$(OBJ_EXT)
                ;;
     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!'
+#$(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
index 24bd7ea..bbf3b6c 100644 (file)
@@ -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 \
index 5ad00a8..7f2ab6d 100644 (file)
@@ -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'
index 8ad84f9..96133c1 100644 (file)
@@ -1507,6 +1507,9 @@ use File::Glob qw(:case);
                 lib/vmsish.{pm,t}
                 ],
     },
+    'openbsd' => {
+        'FILES'      => q[lib/Config_git.pl],
+    },
 );
 
 # legacy CPAN flag
index a9e84aa..7ff00ab 100644 (file)
@@ -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'
index a8c8fb0..40fda82 100644 (file)
@@ -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<rm> commands to remove
index fd46735..5bdd95e 100644 (file)
@@ -261,6 +261,12 @@ sed <<!GROK!THIS! >$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.
index d5bf5f2..39743d6 100644 (file)
@@ -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//;
index 34f3309..49b14f0 100644 (file)
@@ -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 + "'"
index 47aebd6..9d7e5ed 100644 (file)
@@ -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/;
 
index 47aebd6..9d7e5ed 100644 (file)
@@ -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/;
 
index f3b58f7..e3696a4 100644 (file)
@@ -39,6 +39,8 @@ extern "C" {
 #include "EXTERN.h"
 #include "perl.h"
 #include "XSUB.h"
+#include <sys/types.h>
+#include <md5.h>
 #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
index 60d2847..4a45421 100755 (executable)
@@ -21,7 +21,7 @@ EOT
     # This is the output of: 'md5sum README MD5.xs rfc1321.txt'
     $EXPECT = <<EOT;
 2f93400875dbb56f36691d5f69f3eba5  README
-f908acbcf6bd32042f282b0deed61264  MD5.xs
+1d2a7c4f7a6180a7f3369d703ffe7cd0  MD5.xs
 754b9db19f79dbc4992f7166eb0f37ce  rfc1321.txt
 EOT
 }
index 4140432..da9e0f7 100644 (file)
@@ -911,7 +911,7 @@ OTHERLDFLAGS = '.$ld_opt.$otherldflags.'
 INST_DYNAMIC_DEP = '.$inst_dynamic_dep.'
 INST_DYNAMIC_FIX = '.$ld_fix.'
 
-$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
 ');
     if ($armaybe ne ':'){
        $ldfrom = 'tmp$(LIB_EXT)';
@@ -963,7 +963,7 @@ MAKE
 
     push @m, <<'MAKE';
        $(CHMOD) $(PERM_RWX) $@
-       $(NOECHO) $(RM_RF) $(BOOTSTRAP)
+       $(NOECHO) $(RM_RF) $(INST_BOOT)
        - $(CP_NONEMPTY) $(BOOTSTRAP) $(INST_BOOT) $(PERM_RW)
 MAKE
 
index 47aebd6..9d7e5ed 100644 (file)
@@ -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/;
 
index a77bb38..72dbee8 100644 (file)
@@ -190,7 +190,7 @@ __END__
 
 =head1 NAME
 
-NEXT.pm - Provide a pseudo-class NEXT (et al) that allows method redispatch
+NEXT - Provide a pseudo-class NEXT (et al) that allows method redispatch
 
 
 =head1 SYNOPSIS
index 3db4d90..8c22bbc 100644 (file)
@@ -596,6 +596,11 @@ sub pod2text {
     }
 }
 
+sub begin_pod {\r
+    my $self = shift;\r
+    $$self{EXCLUDE} = 0;\r
+    $$self{VERBATIM} = 0;\r
+}\r
 
 ############################################################################
 # Module return value and documentation
index 07d9567..3f2f983 100644 (file)
@@ -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 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
index 2472139..df6270e 100755 (executable)
@@ -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.
index 72ca9ff..c1e5afc 100644 (file)
@@ -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);
index d16103e..f2ad660 100644 (file)
@@ -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
index ae384fd..8fb3492 100644 (file)
@@ -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';
index eff27b9..a2aabc1 100644 (file)
@@ -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.
 
index 1dd95e3..e3c1441 100755 (executable)
@@ -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);
index 76c3bc0..a0f83b6 100644 (file)
@@ -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
 ";
index cb513ab..96d30de 100644 (file)
@@ -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;
        }
     }
index a8adbf0..a48c039 100644 (file)
@@ -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" : "")
index de0300c..307d5bf 100644 (file)
@@ -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}
 };
 
index 94a5f9d..f72beb6 100644 (file)
@@ -848,6 +848,12 @@ Here is how to query the database for the B<de> (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),
index c2e4abe..cd46485 100644 (file)
@@ -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->{$_};
index 482b2c8..85bbdb4 100644 (file)
@@ -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
   }
index 2c24c23..a3addd9 100644 (file)
@@ -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
index 594f045..0e25426 100644 (file)
@@ -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,<libperl*.*>) 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.
index 4153af2..3b41a4a 100644 (file)
@@ -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;
index ee2eaea..09e45a1 100644 (file)
@@ -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;
index ecb7ebb..fb7f2d3 100644 (file)
@@ -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
 
index eea92e0..5e24e9b 100644 (file)
@@ -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;
     }
index 57992ff..ea1d853 100644 (file)
@@ -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'
index f92620c..9a2634e 100644 (file)
@@ -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<tar -xof yourmodule.tar>
+Unpack the result with C<tar -xf yourmodule.tar>
 
 C. BUILD
 
index 56d463a..3cbd5bb 100644 (file)
@@ -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<newline> X<line terminator> X<eol> X<end of line>
-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
index 4ec6887..79abdb0 100644 (file)
@@ -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)
index 29482a2..bec4eaf 100644 (file)
@@ -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 (file)
index 0000000..e69de29
index f068d6d..cda8d21 100644 (file)
@@ -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;
index 737e870..193641d 100644 (file)
@@ -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 {
index 1b8613a..bb10772 100644 (file)
@@ -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");
index c3c03ba..7170052 100644 (file)
@@ -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 {
index 04c8db0..aa8bb70 100644 (file)
@@ -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
index 8d9f070..165738c 100644 (file)
@@ -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)
index 7965f4e..a20c91a 100755 (executable)
@@ -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');
index 94090e9..a0e1551 100644 (file)
@@ -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");
         }
index bd87b66..dbc8e01 100644 (file)
@@ -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) {
index e5cca08..4056b4b 100644 (file)
  */
 /*#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.
 #endif
 
 /* Generated from:
- * 7557e985de18f71e80f627226b454bc8eaf20477dcf0c45b5b2c51ec792f5c89 config_h.SH
- * dbc8d38ba52ae23e5423418bb3f56b1b6fcdaa82cf71ba0be3463e8221bfe0c0 uconfig.sh
+ * 1efb97c1f4b2c9e6bb17b9172f43cc7f281124904ecca38fa6561d6800432847 config_h.SH
+ * 87143cb3dacf7a54fe1df682d22e85daae58d626055b7bd02efa3d12d3f05c27 uconfig.sh
  * ex: set ro: */
index 9585636..f246095 100644 (file)
@@ -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'
index 98c0195..dfff260 100644 (file)
@@ -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'
index 5a3c077..5e0f788 100644 (file)
@@ -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
index d1e5b8f..46af784 100644 (file)
@@ -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
index 8e461d4..d80cfad 100644 (file)
@@ -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:
index 9a8b14d..15a0fe4 100644 (file)
@@ -571,7 +571,7 @@ sub next_line
                 $in =~ s/\?\?</{/g;                         # | ??<|  {|
                 $in =~ s/\?\?>/}/g;                         # | ??>|  }|
             }
-           if ($in =~ /^\#ifdef __LANGUAGE_PASCAL__/) {
+           if ($in =~ s/^\#ifdef __LANGUAGE_PASCAL__//) {
                # Tru64 disassembler.h evilness: mixed C and Pascal.
                while (<IN>) {
                    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 (<IN>) {
                    last if /^}/;
                }
index 885785a..093ca96 100644 (file)
@@ -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<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
 
 
@@ -1398,8 +1395,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 either using the C<-T> option, or by invoking
-the program as C<perlthanks>. 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
index 1f26140..02b826f 100644 (file)
@@ -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);
index aa664ce..0de1a0d 100644 (file)
@@ -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
index bb87699..d6902d9 100644 (file)
@@ -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'
index 39cdaef..645628a 100644 (file)
@@ -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'
index eef02e1..7444e02 100644 (file)
@@ -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'
index 02231a1..436df1d 100644 (file)
@@ -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