From: afresh1 Date: Tue, 14 May 2024 19:38:53 +0000 (+0000) Subject: Fix merge issues, remove excess files - match perl-5.38.2 dist X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=e068048151d29f2562a32185e21a8ba885482260;p=openbsd Fix merge issues, remove excess files - match perl-5.38.2 dist ok gkoehler@ Commit and we'll fix fallout bluhm@ Right away, please deraadt@ --- diff --git a/gnu/usr.bin/perl/.travis.yml b/gnu/usr.bin/perl/.travis.yml deleted file mode 100644 index 51f83e1f96a..00000000000 --- a/gnu/usr.bin/perl/.travis.yml +++ /dev/null @@ -1,69 +0,0 @@ -language: c -cache: ccache - -os: - - linux - -compiler: - - gcc - -install: - - git fetch --unshallow --tags # t/porting/cmp_version.t - # install & enable ccache on osx - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update && brew install ccache; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PATH="/usr/local/opt/ccache/libexec:$PATH"; fi - -env: - global: - - JOBS=4 - matrix: - # exercise a variety of build options - # threads often cause build issues - - CONFIGURE_ARGS='-Uusethreads' - - CONFIGURE_ARGS='-Dusethreads' - # check long doubles - - CONFIGURE_ARGS='-Duseshrplib -Dusesitecustomize -Duselongdouble' - # exercise quadmath - - CONFIGURE_ARGS='-Duseshrplib -Dusequadmath -Dusecbacktrace -Dusethreads' - -matrix: - fast_finish: true - -script: - - ./Configure -des -Dusedevel -Uversiononly -Dcc="ccache $CC" $CONFIGURE_ARGS -Dprefix=$HOME/perl-blead -DDEBUGGING -# all script commands are always run -# rather than using one very long oneliner using '&&', just always check the build status - - if [ "x$TRAVIS_TEST_RESULT" = "x0" ]; then TEST_JOBS=$JOBS make -j$JOBS test_harness_notty; fi - - if [ "x$TRAVIS_TEST_RESULT" = "x0" ]; then make -j$JOBS install; fi - - if [ "x$TRAVIS_TEST_RESULT" = "x0" ]; then $HOME/perl-blead/bin/perlivp; fi - -addons: - apt: - packages: - - file - - cpio - - libdb-dev - - libgdbm-dev - - zlib1g-dev - - libbz2-dev - -notifications: -## use dedicated email for smoking ? -# email: -# recipients: -# - perl5-porters@perl.org -# on_success: never # default: change -# on_failure: always # default: always - irc: - nick: travisci - channels: - - "irc.perl.org#p5p-qa" -# - "irc.perl.org#bot-test" - template: - - "Report for %{repository} (%{commit}) from %{author} (%{elapsed_time})" - - "Status: %{message}" - - "Build URL: %{build_url}" - - "GitHub URL: https://github.com/%{repository_slug}/commit/%{commit}" - on_success: change # default: always - on_failure: always # default: always -# use_notice: true diff --git a/gnu/usr.bin/perl/AUTHORS b/gnu/usr.bin/perl/AUTHORS index 8f25e9d8357..6bf0e1e4ac5 100644 --- a/gnu/usr.bin/perl/AUTHORS +++ b/gnu/usr.bin/perl/AUTHORS @@ -12,10 +12,13 @@ # is strictly forbidden. (Passive distribution with the Perl source # code kit is, of course, allowed.) # -# This should contain the preferred addresses. Alternate addresses are in -# Porting/checkAUTHORS.pl. -# -# updated_by: ./Porting/checkAUTHORS.pl --update --from=v5.30.0 +# This file contains the "canonical" or "preferred" details for our +# contributors, and is managed by the Porting/updateAUTHORS.pl script, +# along with .mailmap and Porting/exclude_contrib.txt. Generally you +# should use the script to make any changes to this file, especially if +# you wish to remove yourself. If you wish to register a new email +# against one of these names you should update the .mailmap file +# instead. -- A. C. Yardley A. Sinan Unur @@ -56,7 +59,8 @@ Albert Chin-A-Young Albert Dvornik Alberto Simões Alessandro Forghieri -Alex Davies +Alex +Alex Davies Alex Gough Alex Solovey Alex Vandiver @@ -69,6 +73,7 @@ Alexander Gernler Alexander Gough Alexander Hartmaier Alexander Klimov +Alexander Nikolov Alexander Smishlajev Alexander Voronov Alexandr Ciornii @@ -106,6 +111,7 @@ Andrew Hamm Andrew M. Langmead Andrew Pimlott Andrew Rodland +Andrew Ruthven Andrew Savige Andrew Tam Andrew Vignaux @@ -128,6 +134,7 @@ Aristotle Pagaltzis Arjen Laarhoven Arkturuz Arne Ahrend +Arne Johannessen Arnold D. Robbins Art Green Art Haas @@ -148,6 +155,8 @@ Bah Barrie Slaymaker Barry Friedman Bart Kedryna +Bart Van Assche +Bartosz Jarzyna Bas van Sisseren Beau Cox Ben Carter @@ -217,6 +226,7 @@ Brian S. Cashman Brian Strand Brooks D. Boyd Bruce Barnett +Bruce Gray Bruce J. Keeler Bruce P. Schuck Bryan Stenson @@ -283,6 +293,7 @@ Chunhui Teng Claes Jacobsson Clark Cooper Claudio Ramirez +Clemens Wasser Clinton A. Pierce Clinton Gormley Colin Kuskie @@ -331,6 +342,7 @@ Daniel P. Berrange Daniel Perrett Daniel S. Lewart Daniel Yacob +danielnachun Danny R. Faught Danny Rathjens Danny Sadinoff @@ -425,6 +437,7 @@ Earl Hood Ed Avis Ed J Ed Mooring +Ed Sabol Ed Santiago Eddy Tan Edgar Bering @@ -443,7 +456,6 @@ Eric Brine Eric E. Coe Eric Fifer Eric Herman -Eric Lindblad Eric Melville Eric Promislow Erich Rickheit @@ -459,8 +471,10 @@ Fabien Tassin Father Chrysostomos Felipe Gasper Felix Gallo +Ferenc Erki Fergal Daly Fingle Nark +Firas Khalil Khana Florent Guillaume Florian Ragwitz Florian Weimer @@ -499,7 +513,6 @@ Gideon Israel Dsouza Giles Lean Giovanni Tataranni Gisle Aas -GitHub Glenn D. Golden Glenn Linderman Gomar @@ -721,6 +734,7 @@ John W. Krahn John Wright Johnny Lam Jon Eveland +Jon Gentle Jon Gunnip Jon Orwant Jonathan Biggar @@ -780,6 +794,7 @@ Ken Williams Kenichi Ishigaki Kenneth Albanowski Kenneth Duda +Kenneth Ölwing Kent Fredric Keong Lim Kevin Brintnall @@ -800,6 +815,7 @@ Kragen Sitaker Krishna Sethuraman Kriton Kyrimis Kurt D. Starsinic +Kurt Fitzner Kyriakos Georgiou Lajos Veres Larry Parmelee @@ -822,9 +838,11 @@ Leon Brocard Leon Timmermans Les Peters Lesley Binks +Li Linjie Lincoln D. Stein Linda Walsh Lionel Cons +Loren Merritt Louis Strous Lubomir Rintel Luc St-Louis @@ -850,6 +868,7 @@ Marc Reisner Marc Simpson Marc-Philip Werner Marcel Grünauer +Marcel Telka Marco Fontani Marco Peereboom Marcus Holland-Moritz @@ -864,7 +883,7 @@ Mark Dootson Mark Fowler Mark Hanson Mark J. Reed -Mark Jason Dominus +Mark Jason Dominus Mark K Trettin Mark Kaehny Mark Kettenis @@ -879,6 +898,7 @@ Mark P. Lutz Mark Pease Mark Pizzolato Mark R. Levinson +Mark Shelor Mark Stosberg Marko Asplund Markus Jansen @@ -916,13 +936,14 @@ Matt Turner Matthew Black Matthew Green Matthew Horsfall +Matthew O. Persico Matthew Sachs Matthew T Harden Matthias Bethke Matthias Ulrich Neeracher Matthias Urlichs Matthijs van Duin -Mattia Barbon +Mattia Barbon Maurizio Loreti Max Baker Max Maischein @@ -972,6 +993,7 @@ Mikhail Zabaluev Milosz Tanski Milton L. Hankins Misty De Meo +Mohammad S Anwar Mohammed El-Afifi Moritz Lenz Moshe Kaminsky @@ -980,6 +1002,7 @@ Mr. Nobody Murray Nesbitt Nathan Glenn Nathan Kurz +Nathan Mills <38995150+quipyowert2@users.noreply.github.com> Nathan Torkington Nathan Trapuzzano Neale Ferguson @@ -998,6 +1021,7 @@ Nick Johnston Nick Logan Nick Williams Nicolas Kaiser +Nicolas Mendoza Nicolas R Niels Thykier Nigel Sandever @@ -1080,6 +1104,7 @@ Peter J. Farley III Peter J. Holzer Peter Jaspers-Fayer Peter John Acklam +Peter Levine Peter Liscovius Peter Martini Peter O'Gorman @@ -1246,12 +1271,12 @@ Shirakata Kentaro Shishir Gundavaram Shlomi Fish Shoichi Kaji +Sidney Markowitz Simon Cozens Simon Glover Simon Leinen Simon Parsons Simon Schubert -Sinan Unur Sisyphus Sizhe Zhao Slaven Rezic @@ -1370,6 +1395,7 @@ Torsten Foertsch Torsten Schönfeld Trevor Blackwell Tsutomu IKEGAMI +Tsuyoshi Watanabe Tuomas J. Lukka Tye McQueen Ulrich Habel @@ -1389,12 +1415,12 @@ Vincent Pit Vishal Bhatia Vitali Peil vividsnow -vividsnow @vividsnow Vlad Harchev Vladimir Alexiev Vladimir Marek Vladimir Timofeev Volker Schatz +vsfos W. Geoffrey Rommel W. Phillip Moore Wallace Reis @@ -1437,3 +1463,4 @@ Zefram Zsbán Ambrus Ævar Arnfjörð Bjarmason Михаил Козачков +小鸡 <345865759@163.com> diff --git a/gnu/usr.bin/perl/Configure b/gnu/usr.bin/perl/Configure index 5c5cf89ea02..e261cb95482 100644 --- a/gnu/usr.bin/perl/Configure +++ b/gnu/usr.bin/perl/Configure @@ -391,6 +391,7 @@ d_attribute_nonnull='' d_attribute_noreturn='' d_attribute_pure='' d_attribute_unused='' +d_attribute_visibility='' d_attribute_warn_unused_result='' d_printf_format_null='' d_backtrace='' @@ -761,6 +762,7 @@ d_semget='' d_semop='' d_sendmsg='' d_setegid='' +d_setenv='' d_seteuid='' d_setgrent='' d_setgrent_r='' @@ -1069,6 +1071,7 @@ i_sysselct='' i_sysstat='' i_sysstatfs='' i_sysstatvfs='' +i_syssyscall='' i_systimes='' i_systypes='' i_sysuio='' @@ -1207,6 +1210,11 @@ version_patchlevel_string='' perl5='' perladmin='' perlpath='' +i32dformat='' +u32XUformat='' +u32oformat='' +u32uformat='' +u32xformat='' d_nv_preserves_uv='' d_nv_zero_is_allbits_zero='' i16size='' @@ -1503,7 +1511,7 @@ archname='' usereentrant='undef' : List of libraries we want. : If anyone needs extra -lxxx, put those in a hint file. -libswanted="cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld" +libswanted="cl pthread socket bind inet ndbm gdbm dbm db malloc dl ld" libswanted="$libswanted sun m crypt sec util c cposix posix ucb bsd BSD" : We probably want to search /usr/shlib before most other libraries. : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. @@ -2213,6 +2221,7 @@ $startsh xxxm=\$dflt $myecho ans='!' +counter=42 case "\$fastread" in yes) case "\$dflt" in '') ;; @@ -2287,6 +2296,12 @@ while expr "X\$ans" : "X!" >/dev/null; do $myecho ;; esac + counter=\`echo \$counter | awk '{ print --\$0 }'\` + if [ \$counter = 0 ]; then + echo >&4 + echo >&4 Too many attempts asking the same question. Giving up. + exit 1 + fi done case "\$ans" in '') ans="\$xxxm";; @@ -3492,7 +3507,10 @@ EOM osvers="$3" ;; dragonfly) osname=dragonfly - osvers="$3" + case "$3" in + [0-9]*) osvers="$3" ;; + *) osvers="$2" ;; + esac ;; dynixptx*) osname=dynixptx osvers=`echo "$4"|sed 's/^v//'` @@ -3665,47 +3683,47 @@ EOM fi fi - case "$targetarch" in - '') ;; - *) hostarch=$osname - case "$targetarch" in - nto*|*-nto-*) - # Will load qnx.sh, which should change osname to nto - osname=qnx - osvers='' - ;; - *linux-android*) - # Catch arm-linux-androideabi, mipsel-linux-android, - # and i686-linux-android - osname=linux-android - osvers='' - ;; - *linux*) - # Something like arm-linux-gnueabihf is really just - # plain linux. - osname=linux - osvers='' - ;; - *solaris*|*sunos*) - osname=solaris - # XXX perhaps we should just assume - # osvers to be 2, or maybe take the value - # from targetarch. Using $run before the - # hints are run is somewhat icky. - set X `$run $uname -a 2>/dev/null` - shift - case "$3" in - 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;; - *) osvers="$3" ;; - esac - ;; - *) + case "$targetarch" in + '') ;; + *) hostarch=$osname + case "$targetarch" in + nto*|*-nto-*) + # Will load qnx.sh, which should change osname to nto + osname=qnx + osvers='' + ;; + *linux-android*) + # Catch arm-linux-androideabi, mipsel-linux-android, + # and i686-linux-android + osname=linux-android + osvers='' + ;; + *linux*) + # Something like arm-linux-gnueabihf is really just + # plain linux. + osname=linux + osvers='' + ;; + *solaris*|*sunos*) + osname=solaris + # XXX perhaps we should just assume + # osvers to be 2, or maybe take the value + # from targetarch. Using $run before the + # hints are run is somewhat icky. + set X `$run $uname -a 2>/dev/null` + shift + case "$3" in + 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;; + *) osvers="$3" ;; + esac + ;; + *) osname=`echo $targetarch|sed 's,^[^-]*-,,'` osvers='' - ;; - esac - ;; - esac + ;; + esac + ;; + esac : Now look for a hint file osname_osvers, unless one has been : specified already. @@ -5207,26 +5225,6 @@ EOM esac fi -: Check if quadmath is requested -case "$usequadmath" in -"$define"|true|[yY]*) usequadmath="$define" ;; -*) usequadmath="$undef" ;; -esac - -: Fail if both uselongdouble and usequadmath are requested -case "$usequadmath:$uselongdouble" in -define:define) - $cat <&4 - -*** You requested the use of the quadmath library and use -*** of long doubles. -*** -*** Please select one or the other. -EOM - exit 1 - ;; -esac - : Looking for optional libraries echo " " echo "Checking for optional libraries..." >&4 @@ -5243,9 +5241,6 @@ esac case "$usecbacktrace" in "$define") libswanted="$libswanted bfd" ;; esac -case "$usequadmath" in -"$define") libswanted="$libswanted quadmath" ;; -esac libsfound='' libsfiles='' libsdirs='' @@ -5264,6 +5259,16 @@ for thislib in $libswanted; do $test -f "$xxx" && eval $libscheck $test -f "$xxx" && libstyle=shared fi + if test ! -f "$xxx"; then + xxx=$thisdir/lib$thislib.$so$_a + $test -f "$xxx" && eval $libscheck + $test -f "$xxx" && libstyle="import" + fi + if test ! -f "$xxx"; then + xxx=$thisdir/$thislib.$so$_a + $test -f "$xxx" && eval $libscheck + $test -f "$xxx" && libstyle="import" + fi if test ! -f "$xxx"; then xxx=$thisdir/lib$thislib.$so $test -f "$xxx" && eval $libscheck @@ -5299,14 +5304,14 @@ for thislib in $libswanted; do case " $dflt " in *"-l$thislib "*);; *) dflt="$dflt -l$thislib" - libsfound="$libsfound $xxx" - yyy=`basename $xxx` - libsfiles="$libsfiles $yyy" - yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"` - case " $libsdirs " in - *" $yyy "*) ;; - *) libsdirs="$libsdirs $yyy" ;; - esac + libsfound="$libsfound $xxx" + yyy=`basename $xxx` + libsfiles="$libsfiles $yyy" + yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"` + case " $libsdirs " in + *" $yyy "*) ;; + *) libsdirs="$libsdirs $yyy" ;; + esac ;; esac break @@ -5447,25 +5452,6 @@ default|recommended) eval $checkccflag ;; esac - case "$gccversion" in - 1*) ;; - 2*) ;; - ?*) echo " " - echo "Checking if your compiler accepts -fno-delete-null-pointer-checks" 2>&1 - echo 'int main(void) { return 0; }' > gcctest.c - if $cc -O2 -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. @@ -7141,6 +7127,26 @@ if test "${api_revision}${api_version}${api_subversion}" = "550"; then api_versionstring='5.005' fi +: Check if quadmath is requested +case "$usequadmath" in +"$define"|true|[yY]*) usequadmath="$define" ;; +*) usequadmath="$undef" ;; +esac + +: Fail if both uselongdouble and usequadmath are requested +case "$usequadmath:$uselongdouble" in +define:define) + $cat <&4 + +*** You requested the use of the quadmath library and use +*** of long doubles. +*** +*** Please select one or the other. +EOM + exit 1 + ;; +esac + : determine the architecture name echo " " if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then @@ -7758,36 +7764,6 @@ case "$inc_version_list" in esac $rm -f getverlist -: see if malloc/malloc.h has to be included -set malloc/malloc.h i_mallocmalloc -eval $inhdr - -: see if this is a malloc.h system -: we want a real compile instead of Inhdr because some systems have a -: malloc.h that just gives a compile error saying to use stdlib.h instead -echo " " -$cat >try.c < -#include -#$i_mallocmalloc I_MALLOCMALLOC -#ifdef I_MALLOCMALLOC -# include -#endif - -int main () { return 0; } -EOCP -set try -if eval $compile; then - echo " found." >&4 - val="$define" -else - echo " NOT found." >&4 - val="$undef" -fi -$rm_try -set i_malloc -eval $setvar - : check for length of pointer echo " " case "$ptrsize" in @@ -10756,7 +10732,7 @@ while test $# -ge 2; do shift 2 done cat >> try.c <<'EOCP' -#define _(args) args +#define _(args) args EOCP echo "$foo" >> try.c echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c @@ -11321,6 +11297,34 @@ set d_attribute_always_inline eval $setvar $rm -f attrib* +: Look for GCC-style attribute visibility +case "$d_attribute_visibility" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((visibility)) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +__attribute__((visibility("hidden"))) int I_will_be_hidden(void); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $compiler_warning attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((visibility))." + val="$undef" + else + echo "Your C compiler supports __attribute__((visibility))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_visibility" ;; +esac +set d_attribute_visibility +eval $setvar +$rm -f attrib* + : see if getpgrp exists set getpgrp d_getpgrp eval $inlibc @@ -16198,6 +16202,36 @@ eval $inlibc set llroundl d_llroundl eval $inlibc +: see if malloc/malloc.h has to be included +set malloc/malloc.h i_mallocmalloc +eval $inhdr + +: see if this is a malloc.h system +: we want a real compile instead of Inhdr because some systems have a +: malloc.h that just gives a compile error saying to use stdlib.h instead +echo " " +$cat >try.c < +#include +#$i_mallocmalloc I_MALLOCMALLOC +#ifdef I_MALLOCMALLOC +# include +#endif + +int main () { return 0; } +EOCP +set try +if eval $compile; then + echo " found." >&4 + val="$define" +else + echo " NOT found." >&4 + val="$undef" +fi +$rm_try +set i_malloc +eval $setvar + : see if localtime_r exists set localtime_r d_localtime_r eval $inlibc @@ -16816,17 +16850,49 @@ case "$usequadmath:$i_quadmath" in define:define) nvtype="__float128" nvsize=16 - case "$libs" in - *quadmath*) ;; - *) $cat <&4 + : libquadmath is not in the usual places, and the place + : changes if the compiler is upgraded. So ask the compiler if it + : can find it. + : We do not need to save this, if it fails we abort. + libs="$libs -lquadmath" + set try + $cat >try.c < +#include +int main(int argc, char *argv[]) { + __float128 x = 1.0; + if (fabsq(logq(x)) > 1e-6) { + fputs("quadmath is broken\n", stderr); + return 1; + } + puts("define"); + return 0; +} +EOM + yyy='' + if eval $compile_ok; then + yyy=`$run ./try` + case "$yyy" in + define) ;; + *) cat <&4 + +*** You requested the use of the quadmath library, but +*** it appears to be nonfunctional. +*** Cannot continue, aborting. + +EOM + exit 1 + ;; + esac + else + $cat <&4 *** You requested the use of the quadmath library, but you *** do not seem to have the quadmath library installed. *** Cannot continue, aborting. EOM exit 1 - ;; - esac + fi ;; define:*) $cat <&4 @@ -16983,6 +17049,10 @@ $cat <try.c #ifdef I_STDLIB #include #endif +#$i_inttypes I_INTTYPES +#ifdef I_INTTYPES +#include +#endif #include #include #ifdef SIGFPE @@ -18035,6 +18105,10 @@ eval $inlibc set setegid d_setegid eval $inlibc +: see if setenv exists +set setenv d_setenv +eval $inlibc + : see if seteuid exists set seteuid d_seteuid eval $inlibc @@ -19717,9 +19791,13 @@ eval $inlibc set syscall d_syscall eval $inlibc +: see if this is a sys/syscall.h system +set sys/syscall.h i_syssyscall +eval $inhdr + : see if prototype for syscall is available echo " " -set d_syscallproto syscall $i_unistd unistd.h +set d_syscallproto syscall $i_unistd unistd.h $i_syssyscall sys/syscall.h eval $hasproto : see if sysconf exists @@ -20077,6 +20155,10 @@ EOM #ifdef I_STDLIB #include #endif +#$i_inttypes I_INTTYPES +#ifdef I_INTTYPES +#include +#endif #include typedef $uvtype UV; int main() @@ -21021,9 +21103,9 @@ case "$ccflags" in ;; esac -randfunc=drand48 -drand01="drand48()" -seedfunc="srand48" +randfunc=Perl_drand48 +drand01="Perl_drand48()" +seedfunc="Perl_drand48_init" randbits=48 randseedtype=U32 @@ -21585,7 +21667,7 @@ EOCP case "$yyy" in 12345678901) sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64; - sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64; + sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIX64; echo "We will use the C9X style." ;; esac @@ -21810,6 +21892,49 @@ EOM *) groupstype="$gidtype";; esac +: Check format strings for internal 32bit types +echo " " +$echo "Checking the format strings to be used for Perl's internal 32bit-types..." >&4 + +case "$i32dformat" in +'') case "$i32type" in + int) + i32dformat='"d"' + u32uformat='"u"' + u32oformat='"o"' + u32xformat='"x"' + u32XUformat='"X"' + ;; + long) + i32dformat='"ld"' + u32uformat='"lu"' + u32oformat='"lo"' + u32xformat='"lx"' + u32XUformat='"lX"' + ;; + int_least32_t) : will not happen currently + i32dformat=PRIdLEAST32 + u32uformat=PRIuLEAST32 + u32oformat=PRIoLEAST32 + u32xformat=PRIxLEAST32 + u32XUformat=PRIXLEAST32 + ;; + int32_t) + i32dformat=PRId32 + u32uformat=PRIu32 + u32oformat=PRIo32 + u32xformat=PRIx32 + u32XUformat=PRIX32 + ;; + esac ;; +esac + +case "$i32dformat" in +'') echo "$0: Fatal: failed to find format strings for 32-bit integers, cannot continue." >&4 + exit 1 + ;; +esac + : check whether make sets MAKE echo " " echo "Checking if your $make program sets \$(MAKE)..." >&4 @@ -23665,7 +23790,7 @@ EOF for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\` do case "\$i" in - -D*) echo "\$i" | $sed 's/^-D//';; + -D*) echo "\$i" | $sed 's/^-D//;s/['\''\"]//g';; -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';; esac done @@ -23975,7 +24100,6 @@ xs_extensions='' find_extensions=' for xxx in *; do case "$xxx" in - CVS) ;; DynaLoader|dynaload) ;; *) this_ext=`echo "$xxx" | $sed -e s/-/\\\//g`; @@ -24205,8 +24329,6 @@ esac nonxs_ext='' for xxx in $nonxs_extensions ; do case "$xxx" in - CVS|RCS|SCCS|.svn) - ;; VMS*) ;; *) nonxs_ext="$nonxs_ext $xxx" @@ -24370,7 +24492,7 @@ case " $extensions" in *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4 - echo "WARNING: The Perl you are building will be quite crippled." >& 4 + echo "WARNING: The Perl you are building will be quite crippled." >&4 ;; esac @@ -24585,6 +24707,7 @@ d_attribute_nonnull='$d_attribute_nonnull' d_attribute_noreturn='$d_attribute_noreturn' d_attribute_pure='$d_attribute_pure' d_attribute_unused='$d_attribute_unused' +d_attribute_visibility='$d_attribute_visibility' d_attribute_warn_unused_result='$d_attribute_warn_unused_result' d_backtrace='$d_backtrace' d_bsd='$d_bsd' @@ -24953,6 +25076,7 @@ d_semget='$d_semget' d_semop='$d_semop' d_sendmsg='$d_sendmsg' d_setegid='$d_setegid' +d_setenv='$d_setenv' d_seteuid='$d_seteuid' d_setgrent='$d_setgrent' d_setgrent_r='$d_setgrent_r' @@ -25208,6 +25332,7 @@ html3dir='$html3dir' html3direxp='$html3direxp' i16size='$i16size' i16type='$i16type' +i32dformat='$i32dformat' i32size='$i32size' i32type='$i32type' i64size='$i64size' @@ -25278,6 +25403,7 @@ i_syssockio='$i_syssockio' i_sysstat='$i_sysstat' i_sysstatfs='$i_sysstatfs' i_sysstatvfs='$i_sysstatvfs' +i_syssyscall='$i_syssyscall' i_systime='$i_systime' i_systimek='$i_systimek' i_systimes='$i_systimes' @@ -25595,8 +25721,12 @@ troff='$troff' ttyname_r_proto='$ttyname_r_proto' u16size='$u16size' u16type='$u16type' +u32XUformat='$u32XUformat' +u32oformat='$u32oformat' u32size='$u32size' u32type='$u32type' +u32uformat='$u32uformat' +u32xformat='$u32xformat' u64size='$u64size' u64type='$u64type' u8size='$u8size' diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux b/gnu/usr.bin/perl/Cross/config.sh-arm-linux index 6ae7cb9d1a7..a61ea4102b0 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux @@ -32,11 +32,11 @@ alignbytes='4' aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='36' -api_versionstring='5.36.0' +api_version='38' +api_versionstring='5.38.0' ar='ar' -archlib='/usr/lib/perl5/5.36.3/armv4l-linux' -archlibexp='/usr/lib/perl5/5.36.3/armv4l-linux' +archlib='/usr/lib/perl5/5.38.2/armv4l-linux' +archlibexp='/usr/lib/perl5/5.38.2/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -55,7 +55,7 @@ castflags='0' cat='cat' cc='cc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.36.3/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.38.2/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='arm-linux-gcc' @@ -124,6 +124,7 @@ d_attribute_nonnull='undef' d_attribute_noreturn='undef' d_attribute_pure='undef' d_attribute_unused='undef' +d_attribute_visibility='undef' d_attribute_warn_unused_result='undef' d_backtrace='undef' d_bsd='undef' @@ -489,6 +490,7 @@ d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' +d_setenv='undef' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' @@ -737,6 +739,7 @@ html3dir=' ' html3direxp='' i16size='2' i16type='short' +i32dformat='"ld"' i32size='4' i32type='long' i64size='8' @@ -807,6 +810,7 @@ i_syssockio='undef' i_sysstat='define' i_sysstatfs='define' i_sysstatvfs='define' +i_syssyscall='undef' i_systime='define' i_systimek='undef' i_systimes='define' @@ -831,7 +835,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.36.3/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.38.2/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -839,13 +843,13 @@ installman1dir='./install_me_here/usr/share/man/man1' installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.36.3' +installprivlib='./install_me_here/usr/lib/perl5/5.38.2' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.36.3/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.38.2/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.36.3' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.38.2' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -980,8 +984,8 @@ pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.36.3' -privlibexp='/usr/lib/perl5/5.36.3' +privlib='/usr/lib/perl5/5.38.2' +privlibexp='/usr/lib/perl5/5.38.2' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -1046,17 +1050,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.36.3/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.36.3/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.38.2/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.38.2/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.36.3' +sitelib='/usr/lib/perl5/site_perl/5.38.2' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.36.3' +sitelibexp='/usr/lib/perl5/site_perl/5.38.2' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -1097,7 +1101,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='3' +subversion='2' sysman='/usr/share/man/man1' tail='' tar='' @@ -1117,8 +1121,12 @@ troff='' ttyname_r_proto='0' u16size='2' u16type='unsigned short' +u32XUformat='"lX"' +u32oformat='"lo"' u32size='4' u32type='unsigned long' +u32uformat='"lu"' +u32xformat='"lx"' u64size='8' u64type='unsigned long long' u8size='1' @@ -1188,8 +1196,8 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.36.3' -version_patchlevel_string='version 36 subversion 3' +version='5.38.2' +version_patchlevel_string='version 38 subversion 2' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1203,10 +1211,10 @@ config_arg0='Configure' config_args='' config_argc=0 PERL_REVISION=5 -PERL_VERSION=36 -PERL_SUBVERSION=3 +PERL_VERSION=38 +PERL_SUBVERSION=2 PERL_API_REVISION=5 -PERL_API_VERSION=36 +PERL_API_VERSION=38 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL= PERL_CONFIG_SH=true diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 index 53bfca4cd3e..ed18781d067 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux-n770 @@ -32,11 +32,11 @@ alignbytes='4' aphostname='/bin/hostname' api_revision='5' api_subversion='0' -api_version='36' -api_versionstring='5.36.0' +api_version='38' +api_versionstring='5.38.0' ar='ar' -archlib='/usr/lib/perl5/5.36.3/armv4l-linux' -archlibexp='/usr/lib/perl5/5.36.3/armv4l-linux' +archlib='/usr/lib/perl5/5.38.2/armv4l-linux' +archlibexp='/usr/lib/perl5/5.38.2/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -54,7 +54,7 @@ castflags='0' cat='cat' cc='arm-none-linux-gnueabi-gcc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.36.3/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.38.2/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='arm-linux-gcc' @@ -123,6 +123,7 @@ d_attribute_nonnull='undef' d_attribute_noreturn='undef' d_attribute_pure='undef' d_attribute_unused='undef' +d_attribute_visibility='undef' d_attribute_warn_unused_result='undef' d_backtrace='undef' d_bsd='undef' @@ -488,6 +489,7 @@ d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' +d_setenv='undef' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' @@ -735,6 +737,7 @@ html3dir=' ' html3direxp='' i16size='2' i16type='short' +i32dformat='"ld"' i32size='4' i32type='long' i64size='8' @@ -805,6 +808,7 @@ i_syssockio='undef' i_sysstat='define' i_sysstatfs='define' i_sysstatvfs='define' +i_syssyscall='undef' i_systime='define' i_systimek='undef' i_systimes='define' @@ -829,7 +833,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.36.3/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.38.2/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -837,13 +841,13 @@ installman1dir='./install_me_here/usr/share/man/man1' installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.36.3' +installprivlib='./install_me_here/usr/lib/perl5/5.38.2' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.36.3/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.38.2/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.36.3' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.38.2' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -978,8 +982,8 @@ pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.36.3' -privlibexp='/usr/lib/perl5/5.36.3' +privlib='/usr/lib/perl5/5.38.2' +privlibexp='/usr/lib/perl5/5.38.2' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -1044,17 +1048,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.36.3/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.36.3/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.38.2/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.38.2/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.36.3' +sitelib='/usr/lib/perl5/site_perl/5.38.2' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.36.3' +sitelibexp='/usr/lib/perl5/site_perl/5.38.2' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -1095,7 +1099,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='3' +subversion='2' sysman='/usr/share/man/man1' tail='' tar='' @@ -1115,8 +1119,12 @@ troff='' ttyname_r_proto='0' u16size='2' u16type='unsigned short' +u32XUformat='"lX"' +u32oformat='"lo"' u32size='4' u32type='unsigned long' +u32uformat='"lu"' +u32xformat='"lx"' u64size='8' u64type='unsigned long long' u8size='1' @@ -1186,8 +1194,8 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.36.3' -version_patchlevel_string='version 36 subversion 3' +version='5.38.2' +version_patchlevel_string='version 38 subversion 2' versiononly='undef' vi='' xlibpth='/usr/lib/386 /lib/386' @@ -1201,10 +1209,10 @@ config_arg0='Configure' config_args='' config_argc=0 PERL_REVISION=5 -PERL_VERSION=36 -PERL_SUBVERSION=3 +PERL_VERSION=38 +PERL_SUBVERSION=2 PERL_API_REVISION=5 -PERL_API_VERSION=36 +PERL_API_VERSION=38 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL= PERL_CONFIG_SH=true diff --git a/gnu/usr.bin/perl/EXTERN.h b/gnu/usr.bin/perl/EXTERN.h index 7946323dcec..e6d97caa44d 100644 --- a/gnu/usr.bin/perl/EXTERN.h +++ b/gnu/usr.bin/perl/EXTERN.h @@ -9,10 +9,11 @@ */ /* - * EXT designates a global var which is defined in perl.h - * dEXT designates a global var which is defined in another - * file, so we can't count on finding it in perl.h - * (this practice should be avoided). + * EXT: designates a global var which is defined in perl.h + * + * dEXT: designates a global var which is defined in another + * file, so we can't count on finding it in perl.h + * (this practice should be avoided). */ #undef EXT #undef dEXT @@ -52,6 +53,6 @@ # endif #undef INIT -#define INIT(x) +#define INIT(...) #undef DOINIT diff --git a/gnu/usr.bin/perl/INSTALL b/gnu/usr.bin/perl/INSTALL index 2c94240433f..0c9d1d94a49 100644 --- a/gnu/usr.bin/perl/INSTALL +++ b/gnu/usr.bin/perl/INSTALL @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see F) which is specially designed to be readable as is. @@ -90,10 +92,10 @@ to F for more detailed information. =head3 Compatibility with earlier versions -B This version is not binary compatible with versions of Perl -earlier than 5.36.0. If you have built extensions (i.e. modules that -include C code) using an earlier version of Perl, you will need to -rebuild and reinstall those extensions. +B This version is not binary compatible with earlier versions +of Perl. If you have built extensions (i.e. modules that include C code) +using an earlier version of Perl, you will need to rebuild and reinstall +those extensions. Pure perl modules without XS or C code should continue to work fine without reinstallation. See the discussion below on @@ -101,11 +103,18 @@ L<"Coexistence with earlier versions of perl 5"> for more details. The standard extensions supplied with Perl will be handled automatically. -On a related issue, old modules may possibly be affected by the changes -in the Perl language in the current release. Please see -F for a description of what's changed. See your -installed copy of the perllocal.pod file for a (possibly incomplete) -list of locally installed modules. Also see the L module's +On a related issue, old modules may possibly be affected by the changes in the +Perl language in the current release. We try hard to make new features +"opt-in", such that existing code will work unchanged, and attempt to identify +where bug fixes might expose code which was relying on incorrect interpreter +behaviour. Please see F for a description of what's +changed between this and the previous release. If you are upgrading from an +earlier release, please also check the perldeltas describing changes for the +intermediate releases, to get a full picture of what changes might affect your +installation. + +See your installed copy of the perllocal.pod file for a (possibly +incomplete) list of locally installed modules. Also see the L module's C function for one way to make a "bundle" of your currently installed modules. @@ -411,6 +420,38 @@ the compiler dependency, you may need to also add "-Dcc=...". At C level the type is called C<__float128> (note, not "long double"), but Perl source knows it as NV. (This is not "long doubles".) +=head3 Taint Support + +Traditional perl has provided a security mechanism based on marking +input data as untrusted unless it has been validated by a regex. This +mechanism is called tainting and is enabled with the -T or -t options on +the command line. This support has a performance cost on all code +executed. It is possible to disable this support by providing the +setting C<-Accflags=-DNO_TAINT_SUPPORT> or the setting +C<-Accflags=-DSILENT_NO_TAINT_SUPPORT> to Configure. + +The former option C is more secure and disables taint +support while making the use of the C<-T> or C<-t> options which +normally enable taint support into an untrappable exception to ensure +that no-one uses them while expecting taint checks to run. With this +build mode there can be no confusion if a script supports taint or not. + +The latter option, C is less secure but more +flexible in that it silently disables taint support while ignoring the +C<-T> and C<-t> command line options entirely. In this build mode it is +possible to run a script with the C<-T> or C<-t> option and expect taint +support but not get it, so this mode is only recommended to people who +really know what they are doing. + +Both modes improve performance although the amount depends on your +workload. It is not unreasonable to expect a 5%-10% improvement in +performance by using one of these options. At this time this build mode +is supported but not recommended, and if you chose to use such a perl +you do so at your own risk. It is possible that there may be +interoperability issues with CPAN distributions as many distributions +are unaware of this build mode and will expect test scripts to pass or +to detect unvalidated data when run under the C<-T> or C<-t>. + =head3 Algorithmic Complexity Attacks on Hashes Perl 5.18 reworked the measures used to secure its hash function @@ -450,30 +491,39 @@ storage with 256 32-bit random values as well. In practice the RNG we use for seeding the SBOX32 storage is very efficient, and populating the table required for hashing even fairly long keys is negligible as we only do it during startup. By default we build with SBOX32 enabled, but you can change -that by setting +that by setting the C in the Configure process, +with something like this - PERL_HASH_USE_SBOX32_ALSO + -Accflags='-DPERL_HASH_USE_SBOX32_ALSO=0' -to zero in configure. By default Perl will use SBOX32 to hash strings 24 bytes -or shorter, you can change this length by setting +or alternatively you can use the simple define C like this: - SBOX32_MAX_LEN + -Accflags='-DPERL_HASH_NO_SBOX32' -to the desired length, with the maximum length being 256. +By default Perl will use SBOX32 to hash strings 24 bytes +or shorter, you can change this length by setting C +to the desired length, with the maximum length being 256. For example with +this: + + -Accflags='-DSBOX_MAX_LEN=128' As of Perl 5.18 the order returned by keys(), values(), and each() is non-deterministic and distinct per hash, and the insert order for colliding keys is randomized as well, and perl allows for controlling this by the PERL_PERTURB_KEYS environment setting. You can disable this behavior -entirely with the define +entirely with the define C with - PERL_PERTURB_KEYS_DISABLED + -Accflags='-DPERL_PERTURB_KEYS_DISABLED' You can disable the environment variable checks and compile time specify -the type of key traversal randomization to be used by defining one of these: +the type of key traversal randomization to be used by defining either +C or C with + + -Accflags='-DPERL_PERTURB_KEYS_RANDOM' - PERL_PERTURB_KEYS_RANDOM - PERL_PERTURB_KEYS_DETERMINISTIC +or + + -Accflags='-DPERL_PERTURB_KEYS_DETERMINISTIC' Since Perl 5.18 the seed used for the hash function is randomly selected at process start, which can be overridden by specifying a seed by setting @@ -489,9 +539,9 @@ DETERMINISTIC in this context means "if everything else is kept the same the same results should be observed". You can change this behavior so that your perl is built with a hard coded -seed with the define +seed with the define C by providing to Configure - NO_HASH_SEED + -Accflags='-DNO_HASH_SEED' Note that if you do this you should modify the code in hv_func.h to specify your own key. In the future this define may be renamed and replaced with one @@ -519,6 +569,38 @@ C<-Accflags=-DNO_PERL_HASH_ENV>. The C environment variable can be disabled by configuring perl with C<-Accflags=-DNO_PERL_HASH_SEED_DEBUG>. +=head3 MISCELLANEOUS CONFIG + +Perl uses various defines to control defaults for its behavior. These +values are chosen to represent "sane" config, but users can override +these values in their builds if they wish. This is a list of such +settings. + +=over 2 + +=item PERL_MAX_NESTED_EVAL_BEGIN_BLOCKS_DEFAULT + +This define is used to control the default maximum number of nested +eval/BEGIN statements, and in this context require should be +understood to be a special form of eval so this means require/BEGIN +and "use" statements as well. + +Currently each C block inside of an C or C +operation will use a fairly high number of frames of the perl internal +C stack, and this value is used to prevent stack overflows. Normally +it is defaulted to 1000 but the default can be configured to another +value, for instance 100, like this + + -Accflags='-DPERL_MAX_NESTED_EVAL_BEGIN_BLOCKS_DEFAULT=100' + + +If you don't know what this is then it is safe to ignore it. Do not +configure this to 0 or another very low value, it will break a lot of +code. If you want to set it to a low value use the run time variable +C<${^MAX_NESTED_EVAL_BEGIN_BLOCKS}> instead. + +=back + =head3 SOCKS Perl can be configured to be 'socksified', that is, to use the SOCKS @@ -612,7 +694,7 @@ for example: 18126:./miniperl: /sbin/loader: Fatal Error: cannot map libperl.so -There is also an potential problem with the shared perl library if you +There is also a potential problem with the shared perl library if you want to have more than one "flavor" of the same version of perl (e.g. with and without -DDEBUGGING). For example, suppose you build and install a standard Perl 5.10.0 with a shared library. Then, suppose you @@ -637,21 +719,6 @@ architecture-dependent library for your -DDEBUGGING version of perl. You can do this by changing all the *archlib* variables in config.sh to point to your new architecture-dependent library. -=head3 Environment access - -Perl often needs to write to the program's environment, such as when -C<%ENV> is assigned to. Many implementations of the C library function -C leak memory, so where possible perl will manipulate the -environment directly to avoid these leaks. The default is now to perform -direct manipulation whenever perl is running as a stand alone interpreter, -and to call the safe but potentially leaky C function when the -perl interpreter is embedded in another application. You can force perl -to always use C by compiling with -C<-Accflags="-DPERL_USE_SAFE_PUTENV">, see section L. You can force an embedded perl -to use direct manipulation by setting C after -the C call. - =head3 External glob Before File::Glob entered core in 5.6.0 globbing was implemented by shelling @@ -683,7 +750,7 @@ The directories set up by Configure fall into three broad categories. =item Directories for the perl distribution -By default, Configure will use the following directories for 5.36.3. +By default, Configure will use the following directories for 5.38.2. $version is the full perl version number, including subversion, e.g. 5.12.3, and $archname is a string like sun4-sunos, determined by Configure. The full definitions of all Configure @@ -826,7 +893,7 @@ separated list of directories, like this sh Configure -Accflags='-DAPPLLIB_EXP=\"/usr/libperl\"' -The directories defined by APPLLIB_EXP get added to @INC I, +The directories defined by APPLLIB_EXP get added to @INC B, ahead of any others, and so provide a way to override the standard perl modules should you, for example, want to distribute fixes without touching the perl distribution proper. And, like otherlib dirs, @@ -1258,6 +1325,13 @@ options. Try for a listing. +Unrecognized arguments with a double dash prefix produce an error. + +Any other arguments are passed through to C, so you could +build a threaded perl with: + + CC=gcc ./configure.gnu -Dusethreads + (The file is called configure.gnu to avoid problems on systems that would not distinguish the files "Configure" and "configure".) @@ -2506,8 +2580,8 @@ L =head1 Coexistence with earlier versions of perl 5 -Perl 5.36.3 is not binary compatible with versions of Perl earlier than. -5.36.0. In other words, you will have to recompile your XS modules. +Perl 5.38.2 is not binary compatible with earlier versions of Perl. +In other words, you will have to recompile your XS modules. In general, you can usually safely upgrade from one stable version of Perl (e.g. 5.30.0) to another similar minor version (e.g. 5.30.1) without @@ -2581,9 +2655,9 @@ won't interfere with another version. (The defaults guarantee this for libraries after 5.6.0, but not for executables. TODO?) One convenient way to do this is by using a separate prefix for each version, such as - sh Configure -Dprefix=/opt/perl5.36.3 + sh Configure -Dprefix=/opt/perl5.38.2 -and adding /opt/perl5.36.3/bin to the shell PATH variable. Such users +and adding /opt/perl5.38.2/bin to the shell PATH variable. Such users may also wish to add a symbolic link /usr/local/bin/perl so that scripts can still start with #!/usr/local/bin/perl. @@ -2596,13 +2670,13 @@ seriously consider using a separate directory, since development subversions may not have all the compatibility wrinkles ironed out yet. -=head2 Upgrading from 5.35.11 or earlier +=head2 Upgrading from 5.36.0 or earlier -B Perl modules having binary parts (meaning that a C compiler is used) will have to be recompiled to be -used with 5.36.3. If you find you do need to rebuild an extension with -5.36.3, you may safely do so without disturbing the older +used with 5.38.2. If you find you do need to rebuild an extension with +5.38.2, you may safely do so without disturbing the older installations. (See L<"Coexistence with earlier versions of perl 5"> above.) @@ -2635,15 +2709,15 @@ Firstly, the bare minimum to run this script print("$f\n"); } -in Linux with perl-5.36.3 is as follows (under $Config{prefix}): +in Linux with perl-5.38.2 is as follows (under $Config{prefix}): ./bin/perl - ./lib/perl5/5.36.3/strict.pm - ./lib/perl5/5.36.3/warnings.pm - ./lib/perl5/5.36.3/i686-linux/File/Glob.pm - ./lib/perl5/5.36.3/feature.pm - ./lib/perl5/5.36.3/XSLoader.pm - ./lib/perl5/5.36.3/i686-linux/auto/File/Glob/Glob.so + ./lib/perl5/5.38.2/strict.pm + ./lib/perl5/5.38.2/warnings.pm + ./lib/perl5/5.38.2/i686-linux/File/Glob.pm + ./lib/perl5/5.38.2/feature.pm + ./lib/perl5/5.38.2/XSLoader.pm + ./lib/perl5/5.38.2/i686-linux/auto/File/Glob/Glob.so Secondly, for perl-5.10.1, the Debian perl-base package contains 591 files, (of which 510 are for lib/unicore) totaling about 3.5MB in its @@ -2756,11 +2830,16 @@ by perl itself; for source compatibility reasons, though, they weren't completely removed. =head2 C<-DNO_PERL_INTERNAL_RAND_SEED> -X If you configure perl with C<-Accflags=-DNO_PERL_INTERNAL_RAND_SEED>, perl will ignore the C environment variable. +=head2 C<-DNO_PERL_RAND_SEED> +X + +If you configure perl with C<-Accflags=-DNO_PERL_RAND_SEED>, +perl will ignore the C environment variable. + =head1 DOCUMENTATION Read the manual entries before running perl. The main documentation diff --git a/gnu/usr.bin/perl/INTERN.h b/gnu/usr.bin/perl/INTERN.h index 4305b6bc029..6a28e6020b9 100644 --- a/gnu/usr.bin/perl/INTERN.h +++ b/gnu/usr.bin/perl/INTERN.h @@ -46,6 +46,6 @@ # endif #undef INIT -#define INIT(x) = x +#define INIT(...) = __VA_ARGS__ #define DOINIT diff --git a/gnu/usr.bin/perl/MANIFEST b/gnu/usr.bin/perl/MANIFEST index ba3ab8de7fd..88d3080885e 100644 --- a/gnu/usr.bin/perl/MANIFEST +++ b/gnu/usr.bin/perl/MANIFEST @@ -1,146 +1,340 @@ -.dir-locals.el Emacs control file -.editorconfig EditorConfig style file -.lgtm.yml LGTM.com configuration file -.metaconf-exclusions.txt Symbols that should ignored when generating Configure -.travis.yml continuous integration on github (where enabled) -amigaos4/amigaio.c AmigaOS4 port -amigaos4/amigaio.h AmigaOS4 port -amigaos4/amigaos.c AmigaOS4 port -amigaos4/amigaos.h AmigaOS4 port -amigaos4/config.sh AmigaOS4 config -Artistic The "Artistic License" -asan_ignore Errors to skip under clang's Addresss Sanitizer -AUTHORS Contact info for contributors -autodoc.pl Creates pod/perlintern.pod and pod/perlapi.pod -av.c Array value code -av.h Array value header -builtin.c Functions in the builtin:: namespace -caretx.c C file to create $^X -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 -CODE_OF_CONDUCT.md Information on where to find the Standards of Conduct -config.over Site-specific overrides for Configure defaults -config_h.SH Produces config.h -configpm Produces lib/Config.pm -Configure Portability tool -configure.com Configure-equivalent for VMS -configure.gnu Crude emulation of GNU configure -cop.h Control operator header -Copying The GNU General Public License +.dir-locals.el Emacs control file +.editorconfig EditorConfig style file +.lgtm.yml LGTM.com configuration file +.metaconf-exclusions.txt Symbols that should ignored when generating Configure +Artistic The "Artistic License" +asan_ignore Errors to skip under clang's Addresss Sanitizer +AUTHORS Contact info for contributors +autodoc.pl Creates pod/perlintern.pod and pod/perlapi.pod +av.c Array value code +av.h Array value header +builtin.c Functions in the builtin:: namespace +caretx.c C file to create $^X +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 +class.c Internals of the `use feature 'class'` object system +CODE_OF_CONDUCT.md Information on where to find the Standards of Conduct +config_h.SH Produces config.h +configpm Produces lib/Config.pm +Configure Portability tool +configure.com Configure-equivalent for VMS +configure.gnu Crude emulation of GNU configure +cop.h Control operator header +Copying The GNU General Public License +cv.h Code value header +deb.c Debugging routines +doio.c I/O operations +doop.c Support code for various operations +dosish.h Some defines for MS/DOSish machines +dquote.c Functions for double quotish contexts +dump.c Debugging output +ebcdic_tables.h Generated tables included in utfebcdic.h +embed.fnc Database used by embed.pl +embed.h Maps symbols to safer names +embedvar.h C namespace management +EXTERN.h Included before foreign .h files +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 +globals.c File to declare global symbols (for shared library) +globvar.sym Global variables that need hiding when embedded +gv.c Glob value code +gv.h Glob value header +handy.h Handy definitions +hv.c Hash value code +hv.h Hash value header +hv_func.h Hash value static inline function header +hv_macro.h Macros used by hv_func.h +inline.h Static inline functions +INSTALL Detailed installation instructions +install_lib.pl functions shared between install* scripts +installhtml Perl script to install html files for pods +installman Perl script to install man pages for pods +installperl Perl script to do "make install" dirty work +INTERN.h Included before domestic .h files +intrpvar.h Variables held in each interpreter instance +invlist_inline.h Inline functions for handling inversion lists +iperlsys.h Perl's interface to the system +keywords.c Perl_keyword(), generated by regen/keywords.pl +keywords.h The keyword numbers +l1_char_class_tab.h 256 word bit table of character classes (for handy.h) +locale.c locale-specific utility functions +make_ext.pl Used by Makefile to execute extension Makefiles +make_patchnum.pl Script to generate git_version.h and lib/Config_git.pl files for all OS'es +makedef.pl Create symbol export lists for linking +makedepend.SH Precursor to makedepend +makedepend_file.SH Precursor to makedepend_file +Makefile.micro microperl Makefile +Makefile.SH A script that generates Makefile +malloc.c A version of malloc you might not want +malloc_ctl.h A version of malloc you might not want +MANIFEST This list of files +mathoms.c A home for binary-compatible code artifacts +META.json Distribution meta-data in JSON +META.yml Distribution meta-data in YAML +metaconfig.h Control file for the metaconfig process +metaconfig.SH Control file for the metaconfig process +mg.c Magic code +mg.h Magic header +mg_names.inc Generated magic names used by dump.c +mg_raw.h Generated magic data used by generate_uudmap.c +mg_vtable.h Generated magic vtable data +miniperlmain.c Basic perl w/o dynamic loading or extensions +mkppport A script that distributes ppport.h +mkppport.lst List of extensions that need a ppport.h +mro_core.c Method Resolution Order code +myconfig.SH Prints summary of the current configuration +mydtrace.h Support for optional DTrace probes +nostdio.h Cause compile error on stdio calls +numeric.c Miscellaneous numeric conversion routines +op.c Opcode syntax tree code +op.h Opcode syntax tree header +op_reg_common.h Common parts of op.h, regexp.h header +opcode.h Automatically generated opcode header +opnames.h Automatically generated opcode header +overload.h generated overload enum (public) +overload.inc generated overload name table (implementation) +PACKAGING notes and best practice for packaging perl 5 +packsizetables.inc The generated packprops array used in pp_pack.c +pad.c Scratchpad functions +pad.h Scratchpad headers +parser.h parser object header +patchlevel.h The current patch level of perl +peep.c The peephole optimizer and optree finalizer +perl.c main() +perl.h Global declarations +perl_inc_macro.h macro used to set \@INC using S_incpush_use_sep +perl_langinfo.h Perl's version of +perl_siphash.h Implementation of SipHash +perlapi.h Empty backwards-compat include +perldtrace.d D script for Perl probes +perlio.c C code for PerlIO abstraction +perlio.h PerlIO abstraction +perlio.sym Symbols for PerlIO abstraction +perliol.h PerlIO Layer definition +perlsdio.h Fake stdio using perlio +perlstatic.h Like inline.h, but functions not declared inline +perlvars.h Global variables +perly.act parser actions; derived from perly.y +perly.c parser code (NOT derived from perly.y) +perly.h header file for perly.c; derived from perly.y +perly.tab parser state tables; derived from perly.y +perly.y Yacc grammar for perl +Policy_sh.SH Hold site-wide preferences between Configure runs. +pp.c Push/Pop code +pp.h Push/Pop code defs +pp_ctl.c Push/Pop code for control flow +pp_hot.c Push/Pop code for heavily used opcodes +pp_pack.c Push/Pop code for pack/unpack +pp_proto.h C++ definitions for Push/Pop code +pp_sort.c Push/Pop code for sort +pp_sys.c Push/Pop code for system interaction +proto.h Prototypes +README The Instructions +README.aix Perl notes for AIX +README.amiga Perl notes for AmigaOS +README.android Perl notes for Android +README.bs2000 Perl notes for POSIX-BC BS2000 +README.cn Perl for Simplified Chinese (in UTF-8) +README.cygwin Perl notes for Cygwin +README.freebsd Perl notes for FreeBSD +README.haiku Perl notes for Haiku +README.hpux Perl notes for HP-UX +README.hurd Perl notes for Hurd +README.irix Perl notes for Irix +README.jp Perl for Japanese (in EUC-JP) +README.ko Perl for Korean (in EUC-KR) +README.linux Perl notes for Linux +README.macosx Perl notes for Mac OS X +README.micro Notes about microperl +README.openbsd Perl notes for OpenBSD +README.os2 Perl notes for OS/2 +README.os390 Perl notes for OS/390 +README.os400 Perl notes for OS/400 +README.plan9 Perl notes for Plan 9 +README.qnx Perl notes for QNX +README.riscos Perl notes for RISC OS +README.solaris Perl notes for Solaris +README.synology Perl notes for Synology +README.tru64 Perl notes for Tru64 +README.tw Perl for Traditional Chinese (in Big5) +README.vms Notes about installing the VMS port +README.vos Perl notes for Stratus VOS +README.win32 Perl notes for Windows +reentr.c Reentrant interfaces +reentr.h Reentrant interfaces +regcharclass.h Generated by regen/regcharclass.pl +regcomp.c Regular expression compiler +regcomp.h Private declarations for above +regcomp.sym Data for regnodes.h +regcomp_debug.c Regular expression compiler debug code +regcomp_internal.h Internal stuff for regex compiler +regcomp_invlist.c Invlist logic for regular expression engine +regcomp_study.c Optimizer for regular expression compiler +regcomp_trie.c Trie logic for regular expression compiler +regen.pl Run all scripts that (re)generate files +regen_perly.pl generate perly.{act,h,tab} from perly.y +regexec.c Regular expression evaluator +regexp.h Public declarations for the above +reginline.h Inline subs for the RE engine. +regnodes.h Description of nodes of the RE engine +run.c The interpreter loop +runtests.SH A script that generates runtests +sbox32_hash.h SBox hash code (32 Bit SBOX based hash function) +scope.c Scope entry and exit code +scope.h Scope entry and exit header +scope_types.h Types used to manage the save stack +SECURITY.md Add Security Policy for GitHub +sv.c Scalar value code +sv.h Scalar value header +sv_inline.h Perl_newSV_type and required defs +taint.c Tainting code +TestInit.pm Preamble library for tests +thread.h Threading header +time64.c 64 bit clean time.h (code) +time64.h 64 bit clean time.h (header) +time64_config.h 64 bit clean time.h (configuration) +toke.c The tokener +uconfig.h Configuration header for microperl +uconfig.sh Configuration script for microperl +uconfig64.sh Configuration script for microperl for LP64 +uni_keywords.h Map unicode property names to numbers +unicode_constants.h compile-time macros for Unicode code points +universal.c The default UNIVERSAL package methods +unixish.h Defines that are assumed on Unix +utf8.c Unicode routines +utf8.h Unicode header +utfebcdic.h Unicode on EBCDIC (UTF-EBCDIC, tr16) header +util.c Utility routines +util.h Dummy header +utils.lst Lists utilities bundled with Perl +vutil.c Version object C functions +vutil.h Version object headers +vxs.inc Version object XS methods +warnings.h The warning numbers +write_buildcustomize.pl Generate lib/buildcustomize.pl +XSUB.h Include file for extension subroutines +zaphod32_hash.h Zaphod32 hash code (32 bit fast hash function) +amigaos4/amigaio.c AmigaOS4 port +amigaos4/amigaio.h AmigaOS4 port +amigaos4/amigaos.c AmigaOS4 port +amigaos4/amigaos.h AmigaOS4 port +amigaos4/config.sh AmigaOS4 config cpan/.dir-locals.el Emacs control file -cpan/Archive-Tar/bin/ptar the ptar utility -cpan/Archive-Tar/bin/ptardiff the ptardiff utility -cpan/Archive-Tar/bin/ptargrep the ptardiff utility -cpan/Archive-Tar/lib/Archive/Tar.pm Archive::Tar -cpan/Archive-Tar/lib/Archive/Tar/Constant.pm Archive::Tar -cpan/Archive-Tar/lib/Archive/Tar/File.pm Archive::Tar -cpan/Archive-Tar/t/01_use.t Archive::Tar tests -cpan/Archive-Tar/t/02_methods.t Archive::Tar tests -cpan/Archive-Tar/t/03_file.t Archive::Tar tests -cpan/Archive-Tar/t/04_resolved_issues.t Archive::Tar tests -cpan/Archive-Tar/t/05_iter.t Archive::Tar tests -cpan/Archive-Tar/t/06_error.t Archive::Tar tests +cpan/Archive-Tar/bin/ptar the ptar utility +cpan/Archive-Tar/bin/ptardiff the ptardiff utility +cpan/Archive-Tar/bin/ptargrep the ptardiff utility +cpan/Archive-Tar/lib/Archive/Tar.pm Archive::Tar +cpan/Archive-Tar/lib/Archive/Tar/Constant.pm Archive::Tar +cpan/Archive-Tar/lib/Archive/Tar/File.pm Archive::Tar +cpan/Archive-Tar/t/01_use.t Archive::Tar tests +cpan/Archive-Tar/t/02_methods.t Archive::Tar tests +cpan/Archive-Tar/t/03_file.t Archive::Tar tests +cpan/Archive-Tar/t/04_resolved_issues.t Archive::Tar tests +cpan/Archive-Tar/t/05_iter.t Archive::Tar tests +cpan/Archive-Tar/t/06_error.t Archive::Tar tests cpan/Archive-Tar/t/08_ptargrep.t cpan/Archive-Tar/t/09_roundtrip.t -cpan/Archive-Tar/t/90_symlink.t Archive::Tar tests -cpan/Archive-Tar/t/99_pod.t Archive::Tar tests -cpan/Archive-Tar/t/src/header/signed.tar Archive::Tar tests +cpan/Archive-Tar/t/90_symlink.t Archive::Tar tests +cpan/Archive-Tar/t/99_pod.t Archive::Tar tests +cpan/Archive-Tar/t/src/header/signed.tar Archive::Tar tests cpan/Archive-Tar/t/src/linktest/linktest_missing_dir.tar Archive::Tar tests -cpan/Archive-Tar/t/src/linktest/linktest_with_dir.tar Archive::Tar tests -cpan/Archive-Tar/t/src/long/b Archive::Tar tests -cpan/Archive-Tar/t/src/long/bar.tar Archive::Tar tests -cpan/Archive-Tar/t/src/long/foo.tbz Archive::Tar tests -cpan/Archive-Tar/t/src/long/foo.tgz Archive::Tar tests -cpan/Archive-Tar/t/src/short/b Archive::Tar tests -cpan/Archive-Tar/t/src/short/bar.tar Archive::Tar tests -cpan/Archive-Tar/t/src/short/foo.tbz Archive::Tar tests -cpan/Archive-Tar/t/src/short/foo.tgz Archive::Tar tests -cpan/autodie/lib/autodie.pm Functions succeed or die with lexical scope -cpan/autodie/lib/autodie/exception.pm Exception class for autodie -cpan/autodie/lib/autodie/exception/system.pm Exception class for autodying system() -cpan/autodie/lib/autodie/hints.pm Hinting interface for autodie +cpan/Archive-Tar/t/src/linktest/linktest_with_dir.tar Archive::Tar tests +cpan/Archive-Tar/t/src/long/b Archive::Tar tests +cpan/Archive-Tar/t/src/long/bar.tar Archive::Tar tests +cpan/Archive-Tar/t/src/long/foo.tbz Archive::Tar tests +cpan/Archive-Tar/t/src/long/foo.tgz Archive::Tar tests +cpan/Archive-Tar/t/src/short/b Archive::Tar tests +cpan/Archive-Tar/t/src/short/bar.tar Archive::Tar tests +cpan/Archive-Tar/t/src/short/foo.tbz Archive::Tar tests +cpan/Archive-Tar/t/src/short/foo.tgz Archive::Tar tests +cpan/autodie/lib/autodie.pm Functions succeed or die with lexical scope +cpan/autodie/lib/autodie/exception.pm Exception class for autodie +cpan/autodie/lib/autodie/exception/system.pm Exception class for autodying system() +cpan/autodie/lib/autodie/hints.pm Hinting interface for autodie cpan/autodie/lib/autodie/Scope/Guard.pm cpan/autodie/lib/autodie/Scope/GuardStack.pm cpan/autodie/lib/autodie/skip.pm cpan/autodie/lib/autodie/Util.pm -cpan/autodie/lib/Fatal.pm Make errors in functions/builtins fatal -cpan/autodie/t/00-load.t autodie - basic load +cpan/autodie/lib/Fatal.pm Make errors in functions/builtins fatal +cpan/autodie/t/00-load.t autodie - basic load cpan/autodie/t/args.t -cpan/autodie/t/autodie.t autodie - Basic functionality +cpan/autodie/t/autodie.t autodie - Basic functionality cpan/autodie/t/autodie_skippy.pm -cpan/autodie/t/autodie_test_module.pm autodie - test helper -cpan/autodie/t/backcompat.t autodie - More Fatal backcompat -cpan/autodie/t/basic_exceptions.t autodie - Basic exception tests -cpan/autodie/t/binmode.t autodie - Binmode testing -cpan/autodie/t/blog_hints.t autodie - Tests fro PJF's blog -cpan/autodie/t/caller.t autodie - Caller diagnostics +cpan/autodie/t/autodie_test_module.pm autodie - test helper +cpan/autodie/t/backcompat.t autodie - More Fatal backcompat +cpan/autodie/t/basic_exceptions.t autodie - Basic exception tests +cpan/autodie/t/binmode.t autodie - Binmode testing +cpan/autodie/t/blog_hints.t autodie - Tests fro PJF's blog +cpan/autodie/t/caller.t autodie - Caller diagnostics cpan/autodie/t/chmod.t cpan/autodie/t/chown.t -cpan/autodie/t/context.t autodie - Context clobbering tests -cpan/autodie/t/context_lexical.t autodie - Context clobbering lexically +cpan/autodie/t/context.t autodie - Context clobbering tests +cpan/autodie/t/context_lexical.t autodie - Context clobbering lexically cpan/autodie/t/core-trampoline-slurp.t -cpan/autodie/t/crickey.t autodie - Like an Australian -cpan/autodie/t/dbmopen.t autodie - dbm tests +cpan/autodie/t/crickey.t autodie - Like an Australian +cpan/autodie/t/dbmopen.t autodie - dbm tests cpan/autodie/t/eval_error.t -cpan/autodie/t/exception_class.t autodie - Exception class subclasses +cpan/autodie/t/exception_class.t autodie - Exception class subclasses cpan/autodie/t/exception_nonref.t -cpan/autodie/t/exceptions.t autodie - 5.10 exception tests. -cpan/autodie/t/exec.t autodie - exec tests. -cpan/autodie/t/Fatal.t autodie - Fatal backcompatibility -cpan/autodie/t/filehandles.t autodie - filehandle tests -cpan/autodie/t/fileno.t autodie - fileno tests -cpan/autodie/t/flock.t autodie - File locking tests -cpan/autodie/t/format-clobber.t autodie - Don't clobber scalars -cpan/autodie/t/hints.t autodie - Test hints interface -cpan/autodie/t/hints_insist.t autodie - Test hints insistance -cpan/autodie/t/hints_pod_examples.t autodie - Test hints POD examples -cpan/autodie/t/hints_provider_does.t autodie - Test hints/does roles -cpan/autodie/t/hints_provider_easy_does_it.t autodie - Test easy hints/does -cpan/autodie/t/hints_provider_isa.t autodie - Test hints/inheritance +cpan/autodie/t/exceptions.t autodie - 5.10 exception tests. +cpan/autodie/t/exec.t autodie - exec tests. +cpan/autodie/t/Fatal.t autodie - Fatal backcompatibility +cpan/autodie/t/filehandles.t autodie - filehandle tests +cpan/autodie/t/fileno.t autodie - fileno tests +cpan/autodie/t/flock.t autodie - File locking tests +cpan/autodie/t/format-clobber.t autodie - Don't clobber scalars +cpan/autodie/t/hints.t autodie - Test hints interface +cpan/autodie/t/hints_insist.t autodie - Test hints insistance +cpan/autodie/t/hints_pod_examples.t autodie - Test hints POD examples +cpan/autodie/t/hints_provider_does.t autodie - Test hints/does roles +cpan/autodie/t/hints_provider_easy_does_it.t autodie - Test easy hints/does +cpan/autodie/t/hints_provider_isa.t autodie - Test hints/inheritance cpan/autodie/t/import-into.t -cpan/autodie/t/internal.t autodie - internal interface tests -cpan/autodie/t/internal-backcompat.t autodie - Back-compatibility tests +cpan/autodie/t/internal.t autodie - internal interface tests +cpan/autodie/t/internal-backcompat.t autodie - Back-compatibility tests cpan/autodie/t/kill.t -cpan/autodie/t/lethal.t autodie - lethal is the one true name -cpan/autodie/t/lib/autodie/test/au.pm autodie - Australian helper -cpan/autodie/t/lib/autodie/test/au/exception.pm autodie - Australian helper -cpan/autodie/t/lib/autodie/test/badname.pm autodie - Bad exception class -cpan/autodie/t/lib/autodie/test/missing.pm autodie - Missing exception class -cpan/autodie/t/lib/Caller_helper.pm autodie - Caller helper -cpan/autodie/t/lib/Hints_pod_examples.pm autodie - Hints/pod helper -cpan/autodie/t/lib/Hints_provider_does.pm autodie - Hints/does helper +cpan/autodie/t/lethal.t autodie - lethal is the one true name +cpan/autodie/t/lib/autodie/test/au.pm autodie - Australian helper +cpan/autodie/t/lib/autodie/test/au/exception.pm autodie - Australian helper +cpan/autodie/t/lib/autodie/test/badname.pm autodie - Bad exception class +cpan/autodie/t/lib/autodie/test/missing.pm autodie - Missing exception class +cpan/autodie/t/lib/Caller_helper.pm autodie - Caller helper +cpan/autodie/t/lib/Hints_pod_examples.pm autodie - Hints/pod helper +cpan/autodie/t/lib/Hints_provider_does.pm autodie - Hints/does helper cpan/autodie/t/lib/Hints_provider_easy_does_it.pm autodie - Hints/easy helper -cpan/autodie/t/lib/Hints_provider_isa.pm autodie - Hints/inherit helper -cpan/autodie/t/lib/Hints_test.pm autodie - Hints test helper -cpan/autodie/t/lib/lethal.pm autodie - with a better name -cpan/autodie/t/lib/my/autodie.pm autodie - blog_hints.t helper +cpan/autodie/t/lib/Hints_provider_isa.pm autodie - Hints/inherit helper +cpan/autodie/t/lib/Hints_test.pm autodie - Hints test helper +cpan/autodie/t/lib/lethal.pm autodie - with a better name +cpan/autodie/t/lib/my/autodie.pm autodie - blog_hints.t helper cpan/autodie/t/lib/my/pragma.pm -cpan/autodie/t/lib/OtherTypes.pm autodie - Format clobberer helper. -cpan/autodie/t/lib/pujHa/ghach.pm autodie - Like a Klingon -cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm autodie - With Klingon honour -cpan/autodie/t/lib/Some/Module.pm autodie - blog_hints.t helper -cpan/autodie/t/mkdir.t autodie - filesystem tests +cpan/autodie/t/lib/OtherTypes.pm autodie - Format clobberer helper. +cpan/autodie/t/lib/pujHa/ghach.pm autodie - Like a Klingon +cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm autodie - With Klingon honour +cpan/autodie/t/lib/Some/Module.pm autodie - blog_hints.t helper +cpan/autodie/t/mkdir.t autodie - filesystem tests cpan/autodie/t/no-default.t cpan/autodie/t/no_carp.t -cpan/autodie/t/open.t autodie - Testing open +cpan/autodie/t/open.t autodie - Testing open cpan/autodie/t/read.t -cpan/autodie/t/recv.t autodie - send/recv tests -cpan/autodie/t/repeat.t autodie - repeat autodie leak tests +cpan/autodie/t/recv.t autodie - send/recv tests +cpan/autodie/t/repeat.t autodie - repeat autodie leak tests cpan/autodie/t/rt-74246.t -cpan/autodie/t/scope_leak.t autodie - file scope leak tests +cpan/autodie/t/scope_leak.t autodie - file scope leak tests cpan/autodie/t/skip.t -cpan/autodie/t/string-eval-basic.t autodie - Basic string eval test -cpan/autodie/t/string-eval-leak.t autodie - String eval leak test -cpan/autodie/t/sysopen.t autodie - sysopen tests +cpan/autodie/t/string-eval-basic.t autodie - Basic string eval test +cpan/autodie/t/string-eval-leak.t autodie - String eval leak test +cpan/autodie/t/sysopen.t autodie - sysopen tests cpan/autodie/t/touch_me -cpan/autodie/t/truncate.t autodie - File truncation tests -cpan/autodie/t/unlink.t autodie - Unlink system tests. -cpan/autodie/t/user-context.t autodie - Context changes for usersubs -cpan/autodie/t/usersub.t autodie - user subroutine tests +cpan/autodie/t/truncate.t autodie - File truncation tests +cpan/autodie/t/unlink.t autodie - Unlink system tests. +cpan/autodie/t/user-context.t autodie - Context changes for usersubs +cpan/autodie/t/usersub.t autodie - user subroutine tests cpan/autodie/t/utf8_open.t cpan/autodie/t/utime.t -cpan/autodie/t/version.t autodie - versioning tests +cpan/autodie/t/version.t autodie - versioning tests cpan/autodie/t/version_tag.t cpan/AutoLoader/lib/AutoLoader.pm Autoloader base class cpan/AutoLoader/lib/AutoSplit.pm Split up autoload functions @@ -150,11 +344,11 @@ cpan/bignum/gentest/backend.sh cpan/bignum/gentest/scope-nested-const.sh cpan/bignum/gentest/scope-nested-hex-oct.sh cpan/bignum/lib/bigfloat.pm -cpan/bignum/lib/bigint.pm bigint -cpan/bignum/lib/bignum.pm bignum -cpan/bignum/lib/bigrat.pm bigrat -cpan/bignum/lib/Math/BigFloat/Trace.pm bignum tracing -cpan/bignum/lib/Math/BigInt/Trace.pm bignum tracing +cpan/bignum/lib/bigint.pm bigint +cpan/bignum/lib/bignum.pm bignum +cpan/bignum/lib/bigrat.pm bigrat +cpan/bignum/lib/Math/BigFloat/Trace.pm bignum tracing +cpan/bignum/lib/Math/BigInt/Trace.pm bignum tracing cpan/bignum/lib/Math/BigRat/Trace.pm cpan/bignum/t/backend-gmp-bigfloat.t cpan/bignum/t/backend-gmp-bigint.t @@ -164,11 +358,11 @@ cpan/bignum/t/backend-pari-bigfloat.t cpan/bignum/t/backend-pari-bigint.t cpan/bignum/t/backend-pari-bignum.t cpan/bignum/t/backend-pari-bigrat.t -cpan/bignum/t/bigexp.t See if bignum works +cpan/bignum/t/bigexp.t See if bignum works cpan/bignum/t/bigfloat.t -cpan/bignum/t/bigint.t See if bigint works -cpan/bignum/t/bignum.t See if bignum works -cpan/bignum/t/bigrat.t See if bigrat works +cpan/bignum/t/bigint.t See if bigint works +cpan/bignum/t/bignum.t See if bignum works +cpan/bignum/t/bigrat.t See if bigrat works cpan/bignum/t/const-bigfloat.t cpan/bignum/t/const-bigint.t cpan/bignum/t/const-bignum.t @@ -185,21 +379,22 @@ cpan/bignum/t/import-bigfloat.t cpan/bignum/t/import-bigint.t cpan/bignum/t/import-bignum.t cpan/bignum/t/import-bigrat.t -cpan/bignum/t/in_effect.t See if in_effect() works +cpan/bignum/t/in_effect.t See if in_effect() works cpan/bignum/t/infnan-bigfloat.t cpan/bignum/t/infnan-bigint.t -cpan/bignum/t/infnan-bignum.t +cpan/bignum/t/infnan-bignum-mbf.t +cpan/bignum/t/infnan-bignum-mbr.t cpan/bignum/t/infnan-bigrat.t -cpan/bignum/t/option_a.t See if bignum a => X works +cpan/bignum/t/option_a.t See if bignum a => X works cpan/bignum/t/option_a-bignum.t cpan/bignum/t/option_l-bigfloat.t cpan/bignum/t/option_l-bigint.t cpan/bignum/t/option_l-bignum.t cpan/bignum/t/option_l-bigrat.t -cpan/bignum/t/option_p.t See if bignum p => X works +cpan/bignum/t/option_p.t See if bignum p => X works cpan/bignum/t/option_p-bignum.t -cpan/bignum/t/overrides.t See if global overrides behave -cpan/bignum/t/ratopt_a.t See if bigrat a => X works +cpan/bignum/t/overrides.t See if global overrides behave +cpan/bignum/t/ratopt_a.t See if bigrat a => X works cpan/bignum/t/scope-bigfloat.t cpan/bignum/t/scope-bigint.t cpan/bignum/t/scope-bignum.t @@ -230,118 +425,123 @@ cpan/Compress-Raw-Bzip2/t/19nonpv.t cpan/Compress-Raw-Bzip2/t/99pod.t cpan/Compress-Raw-Bzip2/t/compress/CompTestUtils.pm cpan/Compress-Raw-Bzip2/typemap -cpan/Compress-Raw-Zlib/config.in Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/fallback/constants.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/fallback/constants.xs Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/Makefile.PL Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/private/MakeUtil.pm Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/t/01version.t Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/t/02zlib.t Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/t/07bufsize.t Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/t/09limitoutput.t Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/t/18lvalue.t Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/config.in Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/fallback/constants.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/fallback/constants.xs Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/Makefile.PL Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/private/MakeUtil.pm Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/t/01version.t Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/t/02zlib.t Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/t/07bufsize.t Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/t/09limitoutput.t Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/t/18lvalue.t Compress::Raw::Zlib cpan/Compress-Raw-Zlib/t/19nonpv.t cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm -cpan/Compress-Raw-Zlib/typemap Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/Zlib.xs Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/adler32.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/compress.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/crc32.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/crc32.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/deflate.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/deflate.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/infback.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/inffast.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/inffast.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/inffixed.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/inflate.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/inflate.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/inftrees.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/inftrees.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/trees.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/trees.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/uncompr.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/zconf.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/zlib.h Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/zutil.c Compress::Raw::Zlib -cpan/Compress-Raw-Zlib/zlib-src/zutil.h Compress::Raw::Zlib -cpan/Config-Perl-V/t/10_base.t Config::Perl::V -cpan/Config-Perl-V/t/20_plv56.t Config::Perl::V -cpan/Config-Perl-V/t/21_plv58.t Config::Perl::V -cpan/Config-Perl-V/t/22_plv510.t Config::Perl::V -cpan/Config-Perl-V/t/23_plv512.t Config::Perl::V -cpan/Config-Perl-V/t/24_plv514.t Config::Perl::V -cpan/Config-Perl-V/t/25_plv516.t Config::Perl::V -cpan/Config-Perl-V/t/25_plv5162.t Config::Perl::V -cpan/Config-Perl-V/t/26_plv518.t Config::Perl::V -cpan/Config-Perl-V/t/26_plv5182.t Config::Perl::V -cpan/Config-Perl-V/t/27_plv5200.t Config::Perl::V -cpan/Config-Perl-V/t/27_plv5202.t Config::Perl::V -cpan/Config-Perl-V/t/28_plv5220.t Config::Perl::V -cpan/Config-Perl-V/t/28_plv52201w.t Config::Perl::V -cpan/Config-Perl-V/t/29_plv5235w.t Config::Perl::V -cpan/Config-Perl-V/t/30_plv5240.t Config::Perl::V -cpan/Config-Perl-V/t/31_plv52511.t Config::Perl::V -cpan/Config-Perl-V/t/32_plv5261rc1.t Config::Perl::V -cpan/Config-Perl-V/t/33_plv52711r.t Config::Perl::V -cpan/Config-Perl-V/t/34_plv5280.t Config::Perl::V -cpan/Config-Perl-V/t/35_plv52910g.t Config::Perl::V -cpan/Config-Perl-V/t/36_plv5300.t Config::Perl::V -cpan/Config-Perl-V/t/37_plv53111qm.t Config::Perl::V -cpan/Config-Perl-V/t/38_plv5320tld.t Config::Perl::V -cpan/Config-Perl-V/V.pm Config::Perl::V -cpan/CPAN/lib/App/Cpan.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN.pm Interface to Comprehensive Perl Archive Network -cpan/CPAN/lib/CPAN/API/HOWTO.pod recipe book for programming with CPAN.pm -cpan/CPAN/lib/CPAN/Author.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Bundle.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/CacheMgr.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Complete.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Debug.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/DeferredCode.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Distribution.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Distroprefs.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Distrostatus.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Exception/blocked_urllist.pm helper package for CPAN.pm +cpan/Compress-Raw-Zlib/typemap Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/Zlib.xs Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/adler32.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/compress.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/crc32.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/crc32.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/deflate.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/deflate.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/infback.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/inffast.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/inffast.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/inffixed.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/inflate.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/inflate.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/inftrees.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/inftrees.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/trees.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/trees.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/uncompr.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/zconf.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/zlib.h Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/zutil.c Compress::Raw::Zlib +cpan/Compress-Raw-Zlib/zlib-src/zutil.h Compress::Raw::Zlib +cpan/Config-Perl-V/t/10_base.t Config::Perl::V +cpan/Config-Perl-V/t/20_plv56.t Config::Perl::V +cpan/Config-Perl-V/t/21_plv58.t Config::Perl::V +cpan/Config-Perl-V/t/22_plv510.t Config::Perl::V +cpan/Config-Perl-V/t/23_plv512.t Config::Perl::V +cpan/Config-Perl-V/t/24_plv514.t Config::Perl::V +cpan/Config-Perl-V/t/25_plv516.t Config::Perl::V +cpan/Config-Perl-V/t/25_plv5162.t Config::Perl::V +cpan/Config-Perl-V/t/26_plv518.t Config::Perl::V +cpan/Config-Perl-V/t/26_plv5182.t Config::Perl::V +cpan/Config-Perl-V/t/27_plv5200.t Config::Perl::V +cpan/Config-Perl-V/t/27_plv5202.t Config::Perl::V +cpan/Config-Perl-V/t/28_plv5220.t Config::Perl::V +cpan/Config-Perl-V/t/28_plv52201w.t Config::Perl::V +cpan/Config-Perl-V/t/29_plv5235w.t Config::Perl::V +cpan/Config-Perl-V/t/30_plv5240.t Config::Perl::V +cpan/Config-Perl-V/t/31_plv52511.t Config::Perl::V +cpan/Config-Perl-V/t/32_plv5261rc1.t Config::Perl::V +cpan/Config-Perl-V/t/33_plv52711r.t Config::Perl::V +cpan/Config-Perl-V/t/34_plv5280.t Config::Perl::V +cpan/Config-Perl-V/t/35_plv52910g.t Config::Perl::V +cpan/Config-Perl-V/t/36_plv5300.t Config::Perl::V +cpan/Config-Perl-V/t/37_plv53111qm.t Config::Perl::V +cpan/Config-Perl-V/t/38_plv5320tld.t Config::Perl::V +cpan/Config-Perl-V/t/39_plv5340tqm.t Config::Perl::V +cpan/Config-Perl-V/t/40_plv5358dnqm.t Config::Perl::V +cpan/Config-Perl-V/t/41_plv5360dnqm.t Config::Perl::V +cpan/Config-Perl-V/t/42_plv5373tld.t Config::Perl::V +cpan/Config-Perl-V/t/43_plv53710rcs.t Test file related to Config::Perl::V +cpan/Config-Perl-V/V.pm Config::Perl::V +cpan/CPAN/lib/App/Cpan.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN.pm Interface to Comprehensive Perl Archive Network +cpan/CPAN/lib/CPAN/API/HOWTO.pod recipe book for programming with CPAN.pm +cpan/CPAN/lib/CPAN/Author.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Bundle.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/CacheMgr.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Complete.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Debug.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/DeferredCode.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Distribution.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Distroprefs.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Distrostatus.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Exception/blocked_urllist.pm helper package for CPAN.pm cpan/CPAN/lib/CPAN/Exception/RecursiveDependency.pm helper package for CPAN.pm cpan/CPAN/lib/CPAN/Exception/yaml_not_installed.pm helper package for CPAN.pm cpan/CPAN/lib/CPAN/Exception/yaml_process_error.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/FirstTime.pm Utility for creating CPAN config files -cpan/CPAN/lib/CPAN/FTP.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/FTP/netrc.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/HandleConfig.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/HTTP/Client.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/HTTP/Credentials.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Index.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/InfoObj.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Kwalify.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/FirstTime.pm Utility for creating CPAN config files +cpan/CPAN/lib/CPAN/FTP.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/FTP/netrc.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/HandleConfig.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/HTTP/Client.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/HTTP/Credentials.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Index.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/InfoObj.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Kwalify.pm helper package for CPAN.pm cpan/CPAN/lib/CPAN/Kwalify/distroprefs.dd helper file for validating config files -cpan/CPAN/lib/CPAN/Kwalify/distroprefs.yml helper file for validating config files -cpan/CPAN/lib/CPAN/LWP/UserAgent.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Mirrors.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Module.pm helper package for CPAN.pm -cpan/CPAN/lib/CPAN/Nox.pm Runs CPAN while avoiding compiled extensions +cpan/CPAN/lib/CPAN/Kwalify/distroprefs.yml helper file for validating config files +cpan/CPAN/lib/CPAN/LWP/UserAgent.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Mirrors.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Module.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Nox.pm Runs CPAN while avoiding compiled extensions cpan/CPAN/lib/CPAN/Plugin.pm cpan/CPAN/lib/CPAN/Plugin/Specfile.pm cpan/CPAN/lib/CPAN/Prompt.pm -cpan/CPAN/lib/CPAN/Queue.pm queueing system for CPAN.pm +cpan/CPAN/lib/CPAN/Queue.pm queueing system for CPAN.pm cpan/CPAN/lib/CPAN/Shell.pm -cpan/CPAN/lib/CPAN/Tarzip.pm helper package for CPAN.pm +cpan/CPAN/lib/CPAN/Tarzip.pm helper package for CPAN.pm cpan/CPAN/lib/CPAN/URL.pm -cpan/CPAN/lib/CPAN/Version.pm Simple math with different flavors of version strings -cpan/CPAN/PAUSE2003.pub CPAN public key -cpan/CPAN/PAUSE2005.pub CPAN public key -cpan/CPAN/PAUSE2007.pub CPAN public key -cpan/CPAN/PAUSE2009.pub CPAN public key +cpan/CPAN/lib/CPAN/Version.pm Simple math with different flavors of version strings +cpan/CPAN/PAUSE2003.pub CPAN public key +cpan/CPAN/PAUSE2005.pub CPAN public key +cpan/CPAN/PAUSE2007.pub CPAN public key +cpan/CPAN/PAUSE2009.pub CPAN public key cpan/CPAN/PAUSE2011.pub cpan/CPAN/PAUSE2022.pub -cpan/CPAN/scripts/cpan easily interact with CPAN from the command line -cpan/CPAN/t/01loadme.t See if CPAN the module works -cpan/CPAN/t/02nox.t See if CPAN::Nox works -cpan/CPAN/t/03pkgs.t See if CPAN::Version works -cpan/CPAN/t/10version.t See if CPAN the module works -cpan/CPAN/t/11mirroredby.t See if CPAN::Mirrored::By works +cpan/CPAN/scripts/cpan easily interact with CPAN from the command line +cpan/CPAN/t/01loadme.t See if CPAN the module works +cpan/CPAN/t/02nox.t See if CPAN::Nox works +cpan/CPAN/t/03pkgs.t See if CPAN::Version works +cpan/CPAN/t/10version.t See if CPAN the module works +cpan/CPAN/t/11mirroredby.t See if CPAN::Mirrored::By works cpan/CPAN/t/32pushyhttps.t cpan/CPAN-Meta/corpus/BadMETA.yml cpan/CPAN-Meta/corpus/bareyaml.meta @@ -446,14 +646,14 @@ cpan/CPAN-Meta-Requirements/t/finalize.t cpan/CPAN-Meta-Requirements/t/from-hash.t cpan/CPAN-Meta-Requirements/t/merge.t cpan/CPAN-Meta-Requirements/t/strings.t -cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm CPAN-Meta-YAML files +cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm CPAN-Meta-YAML files cpan/CPAN-Meta-YAML/t/01_api.t -cpan/CPAN-Meta-YAML/t/01_compile.t CPAN-Meta-YAML files +cpan/CPAN-Meta-YAML/t/01_compile.t CPAN-Meta-YAML files cpan/CPAN-Meta-YAML/t/10_read.t cpan/CPAN-Meta-YAML/t/11_read_string.t cpan/CPAN-Meta-YAML/t/12_write.t cpan/CPAN-Meta-YAML/t/13_write_string.t -cpan/CPAN-Meta-YAML/t/20_subclass.t CPAN-Meta-YAML files +cpan/CPAN-Meta-YAML/t/20_subclass.t CPAN-Meta-YAML files cpan/CPAN-Meta-YAML/t/21_yamlpm_compat.t cpan/CPAN-Meta-YAML/t/30_yaml_spec_tml.t cpan/CPAN-Meta-YAML/t/31_local_tml.t @@ -461,8 +661,8 @@ cpan/CPAN-Meta-YAML/t/32_world_tml.t cpan/CPAN-Meta-YAML/t/86_fail.t cpan/CPAN-Meta-YAML/t/data/ascii.yml cpan/CPAN-Meta-YAML/t/data/latin1.yml -cpan/CPAN-Meta-YAML/t/data/multibyte.yml CPAN-Meta-YAML files -cpan/CPAN-Meta-YAML/t/data/utf_16_le_bom.yml CPAN-Meta-YAML files +cpan/CPAN-Meta-YAML/t/data/multibyte.yml CPAN-Meta-YAML files +cpan/CPAN-Meta-YAML/t/data/utf_16_le_bom.yml CPAN-Meta-YAML files cpan/CPAN-Meta-YAML/t/data/utf_8_bom.yml cpan/CPAN-Meta-YAML/t/lib/SubtestCompat.pm cpan/CPAN-Meta-YAML/t/lib/TestBridge.pm @@ -497,30 +697,30 @@ cpan/CPAN-Meta-YAML/t/tml-world/toolbar.tml cpan/CPAN-Meta-YAML/t/tml-world/Vanilla-Perl.tml cpan/CPAN-Meta-YAML/t/tml-world/YAML-Tiny-META.tml cpan/CPAN-Meta-YAML/t/tml-world/yaml_org.tml -cpan/DB_File/config.in Part of Berkeley DB configuration -cpan/DB_File/DB_File.pm Berkeley DB extension Perl module -cpan/DB_File/DB_File.xs Berkeley DB extension external subroutines -cpan/DB_File/dbinfo Berkeley DB database version checker +cpan/DB_File/config.in Part of Berkeley DB configuration +cpan/DB_File/DB_File.pm Berkeley DB extension Perl module +cpan/DB_File/DB_File.xs Berkeley DB extension external subroutines +cpan/DB_File/dbinfo Berkeley DB database version checker cpan/DB_File/hints/bitrig.pl -cpan/DB_File/hints/dynixptx.pl Hint for DB_File for named architecture +cpan/DB_File/hints/dynixptx.pl Hint for DB_File for named architecture cpan/DB_File/hints/minix.pl cpan/DB_File/hints/netbsd.pl cpan/DB_File/hints/openbsd.pl -cpan/DB_File/hints/sco.pl Hint for DB_File for named architecture -cpan/DB_File/Makefile.PL Berkeley DB extension makefile writer -cpan/DB_File/t/db-btree.t See if DB_File works -cpan/DB_File/t/db-hash.t See if DB_File works -cpan/DB_File/t/db-recno.t See if DB_File works -cpan/DB_File/t/db-threads.t See if DB_File works -cpan/DB_File/typemap Berkeley DB extension interface types -cpan/DB_File/version.c Berkeley DB extension interface version check +cpan/DB_File/hints/sco.pl Hint for DB_File for named architecture +cpan/DB_File/Makefile.PL Berkeley DB extension makefile writer +cpan/DB_File/t/db-btree.t See if DB_File works +cpan/DB_File/t/db-hash.t See if DB_File works +cpan/DB_File/t/db-recno.t See if DB_File works +cpan/DB_File/t/db-threads.t See if DB_File works +cpan/DB_File/typemap Berkeley DB extension interface types +cpan/DB_File/version.c Berkeley DB extension interface version check cpan/Digest/lib/Digest.pm cpan/Digest/lib/Digest/base.pm cpan/Digest/lib/Digest/file.pm -cpan/Digest/t/base.t See if Digest extensions work -cpan/Digest/t/digest.t See if Digest extensions work -cpan/Digest/t/file.t See if Digest extensions work -cpan/Digest/t/lib/Digest/Dummy.pm See if Digest extensions work +cpan/Digest/t/base.t See if Digest extensions work +cpan/Digest/t/digest.t See if Digest extensions work +cpan/Digest/t/file.t See if Digest extensions work +cpan/Digest/t/lib/Digest/Dummy.pm See if Digest extensions work cpan/Digest/t/security.t See if Digest extensions work cpan/Digest-MD5/hints/dec_osf.pl Hints for named architecture cpan/Digest-MD5/hints/irix_6.pl Hints for named architecture @@ -571,225 +771,226 @@ cpan/Digest-SHA/t/state.t See if Digest::SHA works cpan/Digest-SHA/t/unicode.t cpan/Digest-SHA/t/woodbury.t See if Digest::SHA works cpan/Digest-SHA/typemap Typemap for Digest::SHA -cpan/Encode/bin/enc2xs Encode module generator -cpan/Encode/bin/encguess guess character encodings of files -cpan/Encode/bin/piconv iconv by perl -cpan/Encode/bin/ucm2table Table Generator for testing -cpan/Encode/bin/ucmlint A UCM Lint utility -cpan/Encode/bin/ucmsort A UCM sort utility -cpan/Encode/bin/unidump Unicode Dump like hexdump(1) -cpan/Encode/Byte/Byte.pm Encode extension -cpan/Encode/Byte/Makefile.PL Encode extension -cpan/Encode/CN/CN.pm Encode extension -cpan/Encode/CN/Makefile.PL Encode extension -cpan/Encode/EBCDIC/EBCDIC.pm Encode extension -cpan/Encode/EBCDIC/Makefile.PL Encode extension -cpan/Encode/encengine.c Encode extension -cpan/Encode/Encode.pm Mother of all Encode extensions -cpan/Encode/Encode.xs Encode extension -cpan/Encode/Encode/_PM.e2x Skeleton file for enc2xs -cpan/Encode/Encode/_T.e2x Skeleton file for enc2xs -cpan/Encode/Encode/Changes.e2x Skeleton file for enc2xs -cpan/Encode/Encode/ConfigLocal_PM.e2x Skeleton file for enc2xs -cpan/Encode/Encode/encode.h Encode extension header file -cpan/Encode/Encode/Makefile_PL.e2x Skeleton file for enc2xs -cpan/Encode/Encode/README.e2x Skeleton file for enc2xs -cpan/Encode/encoding.pm Perl Pragmatic Module -cpan/Encode/JP/JP.pm Encode extension -cpan/Encode/JP/Makefile.PL Encode extension -cpan/Encode/KR/KR.pm Encode extension -cpan/Encode/KR/Makefile.PL Encode extension -cpan/Encode/lib/Encode/Alias.pm Encode extension -cpan/Encode/lib/Encode/CJKConstants.pm Encode extension -cpan/Encode/lib/Encode/CN/HZ.pm Encode extension -cpan/Encode/lib/Encode/Config.pm Encode configuration module -cpan/Encode/lib/Encode/Encoder.pm OO Encoder -cpan/Encode/lib/Encode/Encoding.pm Encode extension -cpan/Encode/lib/Encode/GSM0338.pm Encode extension -cpan/Encode/lib/Encode/Guess.pm Encode Extension -cpan/Encode/lib/Encode/JP/H2Z.pm Encode extension -cpan/Encode/lib/Encode/JP/JIS7.pm Encode extension -cpan/Encode/lib/Encode/KR/2022_KR.pm Encode extension -cpan/Encode/lib/Encode/MIME/Header.pm Encode extension +cpan/Encode/bin/enc2xs Encode module generator +cpan/Encode/bin/encguess guess character encodings of files +cpan/Encode/bin/piconv iconv by perl +cpan/Encode/bin/ucm2table Table Generator for testing +cpan/Encode/bin/ucmlint A UCM Lint utility +cpan/Encode/bin/ucmsort A UCM sort utility +cpan/Encode/bin/unidump Unicode Dump like hexdump(1) +cpan/Encode/Byte/Byte.pm Encode extension +cpan/Encode/Byte/Makefile.PL Encode extension +cpan/Encode/CN/CN.pm Encode extension +cpan/Encode/CN/Makefile.PL Encode extension +cpan/Encode/EBCDIC/EBCDIC.pm Encode extension +cpan/Encode/EBCDIC/Makefile.PL Encode extension +cpan/Encode/encengine.c Encode extension +cpan/Encode/Encode.pm Mother of all Encode extensions +cpan/Encode/Encode.xs Encode extension +cpan/Encode/Encode/_PM.e2x Skeleton file for enc2xs +cpan/Encode/Encode/_T.e2x Skeleton file for enc2xs +cpan/Encode/Encode/Changes.e2x Skeleton file for enc2xs +cpan/Encode/Encode/ConfigLocal_PM.e2x Skeleton file for enc2xs +cpan/Encode/Encode/encode.h Encode extension header file +cpan/Encode/Encode/Makefile_PL.e2x Skeleton file for enc2xs +cpan/Encode/Encode/README.e2x Skeleton file for enc2xs +cpan/Encode/encoding.pm Perl Pragmatic Module +cpan/Encode/JP/JP.pm Encode extension +cpan/Encode/JP/Makefile.PL Encode extension +cpan/Encode/KR/KR.pm Encode extension +cpan/Encode/KR/Makefile.PL Encode extension +cpan/Encode/lib/Encode/Alias.pm Encode extension +cpan/Encode/lib/Encode/CJKConstants.pm Encode extension +cpan/Encode/lib/Encode/CN/HZ.pm Encode extension +cpan/Encode/lib/Encode/Config.pm Encode configuration module +cpan/Encode/lib/Encode/Encoder.pm OO Encoder +cpan/Encode/lib/Encode/Encoding.pm Encode extension +cpan/Encode/lib/Encode/GSM0338.pm Encode extension +cpan/Encode/lib/Encode/Guess.pm Encode Extension +cpan/Encode/lib/Encode/JP/H2Z.pm Encode extension +cpan/Encode/lib/Encode/JP/JIS7.pm Encode extension +cpan/Encode/lib/Encode/KR/2022_KR.pm Encode extension +cpan/Encode/lib/Encode/MIME/Header.pm Encode extension cpan/Encode/lib/Encode/MIME/Header/ISO_2022_JP.pm Encode extension -cpan/Encode/lib/Encode/MIME/Name.pm Encode extension -cpan/Encode/lib/Encode/PerlIO.pod Documents for Encode & PerlIO -cpan/Encode/lib/Encode/Supported.pod Documents for supported encodings -cpan/Encode/lib/Encode/Unicode/UTF7.pm Encode extension -cpan/Encode/Makefile.PL Encode extension makefile writer -cpan/Encode/Symbol/Makefile.PL Encode extension -cpan/Encode/Symbol/Symbol.pm Encode extension -cpan/Encode/t/Aliases.t test script -cpan/Encode/t/at-cn.t test script -cpan/Encode/t/at-tw.t test script -cpan/Encode/t/big5-eten.enc test data -cpan/Encode/t/big5-eten.utf test data -cpan/Encode/t/big5-hkscs.enc test data -cpan/Encode/t/big5-hkscs.utf test data -cpan/Encode/t/CJKT.t test script +cpan/Encode/lib/Encode/MIME/Name.pm Encode extension +cpan/Encode/lib/Encode/PerlIO.pod Documents for Encode & PerlIO +cpan/Encode/lib/Encode/Supported.pod Documents for supported encodings +cpan/Encode/lib/Encode/Unicode/UTF7.pm Encode extension +cpan/Encode/Makefile.PL Encode extension makefile writer +cpan/Encode/Symbol/Makefile.PL Encode extension +cpan/Encode/Symbol/Symbol.pm Encode extension +cpan/Encode/t/Aliases.t test script +cpan/Encode/t/at-cn.t test script +cpan/Encode/t/at-tw.t test script +cpan/Encode/t/big5-eten.enc test data +cpan/Encode/t/big5-eten.utf test data +cpan/Encode/t/big5-hkscs.enc test data +cpan/Encode/t/big5-hkscs.utf test data +cpan/Encode/t/CJKT.t test script cpan/Encode/t/cow.t cpan/Encode/t/decode.t -cpan/Encode/t/enc_data.t test script for utf8 DATA -cpan/Encode/t/enc_eucjp.t test script -cpan/Encode/t/enc_module.enc test data for t/enc_module.t -cpan/Encode/t/enc_module.t test script -cpan/Encode/t/enc_utf8.t test script -cpan/Encode/t/Encode.t test script -cpan/Encode/t/Encoder.t test script -cpan/Encode/t/encoding.t test script -cpan/Encode/t/encoding-locale.t test script -cpan/Encode/t/fallback.t test script -cpan/Encode/t/from_to.t test script -cpan/Encode/t/gb2312.enc test data -cpan/Encode/t/gb2312.utf test data -cpan/Encode/t/grow.t test script -cpan/Encode/t/gsm0338.t test script -cpan/Encode/t/guess.t test script +cpan/Encode/t/enc_data.t test script for utf8 DATA +cpan/Encode/t/enc_eucjp.t test script +cpan/Encode/t/enc_module.enc test data for t/enc_module.t +cpan/Encode/t/enc_module.t test script +cpan/Encode/t/enc_utf8.t test script +cpan/Encode/t/Encode.t test script +cpan/Encode/t/Encoder.t test script +cpan/Encode/t/encoding.t test script +cpan/Encode/t/encoding-locale.t test script +cpan/Encode/t/fallback.t test script +cpan/Encode/t/from_to.t test script +cpan/Encode/t/gb2312.enc test data +cpan/Encode/t/gb2312.utf test data +cpan/Encode/t/grow.t test script +cpan/Encode/t/gsm0338.t test script +cpan/Encode/t/guess.t test script cpan/Encode/t/isa.t -cpan/Encode/t/jis7-fallback.t test script -cpan/Encode/t/jisx0201.enc test data -cpan/Encode/t/jisx0201.utf test data -cpan/Encode/t/jisx0208.enc test data -cpan/Encode/t/jisx0208.utf test data -cpan/Encode/t/jisx0212.enc test data -cpan/Encode/t/jisx0212.utf test data -cpan/Encode/t/jperl.t test script -cpan/Encode/t/ksc5601.enc test data -cpan/Encode/t/ksc5601.utf test data -cpan/Encode/t/magic.t test script -cpan/Encode/t/mime-header.t test script -cpan/Encode/t/mime-name.t test script -cpan/Encode/t/mime_header_iso2022jp.t test script -cpan/Encode/t/Mod_EUCJP.pm module that t/enc_module.enc uses -cpan/Encode/t/perlio.t test script -cpan/Encode/t/piconv.t Test for piconv.t -cpan/Encode/t/rt.pl test script -cpan/Encode/t/rt113164.t test script -cpan/Encode/t/rt65541.t test script -cpan/Encode/t/rt76824.t test script -cpan/Encode/t/rt85489.t test script -cpan/Encode/t/rt86327.t test script +cpan/Encode/t/jis7-fallback.t test script +cpan/Encode/t/jisx0201.enc test data +cpan/Encode/t/jisx0201.utf test data +cpan/Encode/t/jisx0208.enc test data +cpan/Encode/t/jisx0208.utf test data +cpan/Encode/t/jisx0212.enc test data +cpan/Encode/t/jisx0212.utf test data +cpan/Encode/t/jperl.t test script +cpan/Encode/t/ksc5601.enc test data +cpan/Encode/t/ksc5601.utf test data +cpan/Encode/t/magic.t test script +cpan/Encode/t/mime-header.t test script +cpan/Encode/t/mime-name.t test script +cpan/Encode/t/mime_header_iso2022jp.t test script +cpan/Encode/t/Mod_EUCJP.pm module that t/enc_module.enc uses +cpan/Encode/t/perlio.t test script +cpan/Encode/t/piconv.t Test for piconv.t +cpan/Encode/t/rt.pl test script +cpan/Encode/t/rt113164.t test script +cpan/Encode/t/rt65541.t test script +cpan/Encode/t/rt76824.t test script +cpan/Encode/t/rt85489.t test script +cpan/Encode/t/rt86327.t test script cpan/Encode/t/taint.t cpan/Encode/t/truncated_utf8.t cpan/Encode/t/undef.t -cpan/Encode/t/unibench.pl benchmark script -cpan/Encode/t/Unicode.t test script +cpan/Encode/t/unibench.pl benchmark script +cpan/Encode/t/Unicode.t test script cpan/Encode/t/Unicode_trailing_nul.t cpan/Encode/t/use-Encode-Alias.t cpan/Encode/t/utf32warnings.t -cpan/Encode/t/utf8ref.t test script -cpan/Encode/t/utf8strict.t test script +cpan/Encode/t/utf8ref.t test script +cpan/Encode/t/utf8strict.t test script cpan/Encode/t/utf8warnings.t cpan/Encode/t/xml.t -cpan/Encode/TW/Makefile.PL Encode extension -cpan/Encode/TW/TW.pm Encode extension -cpan/Encode/ucm/8859-1.ucm Unicode Character Map -cpan/Encode/ucm/8859-10.ucm Unicode Character Map -cpan/Encode/ucm/8859-11.ucm Unicode Character Map -cpan/Encode/ucm/8859-13.ucm Unicode Character Map -cpan/Encode/ucm/8859-14.ucm Unicode Character Map -cpan/Encode/ucm/8859-15.ucm Unicode Character Map -cpan/Encode/ucm/8859-16.ucm Unicode Character Map -cpan/Encode/ucm/8859-2.ucm Unicode Character Map -cpan/Encode/ucm/8859-3.ucm Unicode Character Map -cpan/Encode/ucm/8859-4.ucm Unicode Character Map -cpan/Encode/ucm/8859-5.ucm Unicode Character Map -cpan/Encode/ucm/8859-6.ucm Unicode Character Map -cpan/Encode/ucm/8859-7.ucm Unicode Character Map -cpan/Encode/ucm/8859-8.ucm Unicode Character Map -cpan/Encode/ucm/8859-9.ucm Unicode Character Map -cpan/Encode/ucm/adobeStdenc.ucm Unicode Character Map -cpan/Encode/ucm/adobeSymbol.ucm Unicode Character Map -cpan/Encode/ucm/adobeZdingbat.ucm Unicode Character Map -cpan/Encode/ucm/ascii.ucm Unicode Character Map -cpan/Encode/ucm/big5-eten.ucm Unicode Character Map -cpan/Encode/ucm/big5-hkscs.ucm Unicode Character Map -cpan/Encode/ucm/cp037.ucm Unicode Character Map -cpan/Encode/ucm/cp1006.ucm Unicode Character Map -cpan/Encode/ucm/cp1026.ucm Unicode Character Map -cpan/Encode/ucm/cp1047.ucm Unicode Character Map -cpan/Encode/ucm/cp1250.ucm Unicode Character Map -cpan/Encode/ucm/cp1251.ucm Unicode Character Map -cpan/Encode/ucm/cp1252.ucm Unicode Character Map -cpan/Encode/ucm/cp1253.ucm Unicode Character Map -cpan/Encode/ucm/cp1254.ucm Unicode Character Map -cpan/Encode/ucm/cp1255.ucm Unicode Character Map -cpan/Encode/ucm/cp1256.ucm Unicode Character Map -cpan/Encode/ucm/cp1257.ucm Unicode Character Map -cpan/Encode/ucm/cp1258.ucm Unicode Character Map -cpan/Encode/ucm/cp424.ucm Unicode Character Map -cpan/Encode/ucm/cp437.ucm Unicode Character Map -cpan/Encode/ucm/cp500.ucm Unicode Character Map -cpan/Encode/ucm/cp737.ucm Unicode Character Map -cpan/Encode/ucm/cp775.ucm Unicode Character Map -cpan/Encode/ucm/cp850.ucm Unicode Character Map -cpan/Encode/ucm/cp852.ucm Unicode Character Map -cpan/Encode/ucm/cp855.ucm Unicode Character Map -cpan/Encode/ucm/cp856.ucm Unicode Character Map -cpan/Encode/ucm/cp857.ucm Unicode Character Map -cpan/Encode/ucm/cp858.ucm Unicode Character Map -cpan/Encode/ucm/cp860.ucm Unicode Character Map -cpan/Encode/ucm/cp861.ucm Unicode Character Map -cpan/Encode/ucm/cp862.ucm Unicode Character Map -cpan/Encode/ucm/cp863.ucm Unicode Character Map -cpan/Encode/ucm/cp864.ucm Unicode Character Map -cpan/Encode/ucm/cp865.ucm Unicode Character Map -cpan/Encode/ucm/cp866.ucm Unicode Character Map -cpan/Encode/ucm/cp869.ucm Unicode Character Map -cpan/Encode/ucm/cp874.ucm Unicode Character Map -cpan/Encode/ucm/cp875.ucm Unicode Character Map -cpan/Encode/ucm/cp932.ucm Unicode Character Map -cpan/Encode/ucm/cp936.ucm Unicode Character Map -cpan/Encode/ucm/cp949.ucm Unicode Character Map -cpan/Encode/ucm/cp950.ucm Unicode Character Map -cpan/Encode/ucm/ctrl.ucm Unicode Character Map -cpan/Encode/ucm/dingbats.ucm Unicode Character Map -cpan/Encode/ucm/euc-cn.ucm Unicode Character Map -cpan/Encode/ucm/euc-jp.ucm Unicode Character Map -cpan/Encode/ucm/euc-kr.ucm Unicode Character Map -cpan/Encode/ucm/gb12345.ucm Unicode Character Map -cpan/Encode/ucm/gb2312.ucm Unicode Character Map -cpan/Encode/ucm/hp-roman8.ucm Unicode Character Map -cpan/Encode/ucm/ir-165.ucm Unicode Character Map -cpan/Encode/ucm/jis0201.ucm Unicode Character Map -cpan/Encode/ucm/jis0208.ucm Unicode Character Map -cpan/Encode/ucm/jis0212.ucm Unicode Character Map -cpan/Encode/ucm/johab.ucm Unicode Character Map -cpan/Encode/ucm/koi8-f.ucm Unicode Character Map -cpan/Encode/ucm/koi8-r.ucm Unicode Character Map -cpan/Encode/ucm/koi8-u.ucm Unicode Character Map -cpan/Encode/ucm/ksc5601.ucm Unicode Character Map -cpan/Encode/ucm/macArabic.ucm Unicode Character Map -cpan/Encode/ucm/macCentEuro.ucm Unicode Character Map -cpan/Encode/ucm/macChinsimp.ucm Unicode Character Map -cpan/Encode/ucm/macChintrad.ucm Unicode Character Map -cpan/Encode/ucm/macCroatian.ucm Unicode Character Map -cpan/Encode/ucm/macCyrillic.ucm Unicode Character Map -cpan/Encode/ucm/macDingbats.ucm Unicode Character Map -cpan/Encode/ucm/macFarsi.ucm Unicode Character Map -cpan/Encode/ucm/macGreek.ucm Unicode Character Map -cpan/Encode/ucm/macHebrew.ucm Unicode Character Map -cpan/Encode/ucm/macIceland.ucm Unicode Character Map -cpan/Encode/ucm/macJapanese.ucm Unicode Character Map -cpan/Encode/ucm/macKorean.ucm Unicode Character Map -cpan/Encode/ucm/macRoman.ucm Unicode Character Map -cpan/Encode/ucm/macROMnn.ucm Unicode Character Map -cpan/Encode/ucm/macRUMnn.ucm Unicode Character Map -cpan/Encode/ucm/macSami.ucm Unicode Character Map -cpan/Encode/ucm/macSymbol.ucm Unicode Character Map -cpan/Encode/ucm/macThai.ucm Unicode Character Map -cpan/Encode/ucm/macTurkish.ucm Unicode Character Map -cpan/Encode/ucm/macUkraine.ucm Unicode Character Map -cpan/Encode/ucm/nextstep.ucm Unicode Character Map -cpan/Encode/ucm/null.ucm Unicode Character Map -cpan/Encode/ucm/posix-bc.ucm Unicode Character Map -cpan/Encode/ucm/shiftjis.ucm Unicode Character Map -cpan/Encode/ucm/symbol.ucm Unicode Character Map -cpan/Encode/ucm/viscii.ucm Unicode Character Map -cpan/Encode/Unicode/Makefile.PL Encode extension -cpan/Encode/Unicode/Unicode.pm Encode extension -cpan/Encode/Unicode/Unicode.xs Encode extension +cpan/Encode/TW/Makefile.PL Encode extension +cpan/Encode/TW/TW.pm Encode extension +cpan/Encode/ucm/8859-1.ucm Unicode Character Map +cpan/Encode/ucm/8859-10.ucm Unicode Character Map +cpan/Encode/ucm/8859-11.ucm Unicode Character Map +cpan/Encode/ucm/8859-13.ucm Unicode Character Map +cpan/Encode/ucm/8859-14.ucm Unicode Character Map +cpan/Encode/ucm/8859-15.ucm Unicode Character Map +cpan/Encode/ucm/8859-16.ucm Unicode Character Map +cpan/Encode/ucm/8859-2.ucm Unicode Character Map +cpan/Encode/ucm/8859-3.ucm Unicode Character Map +cpan/Encode/ucm/8859-4.ucm Unicode Character Map +cpan/Encode/ucm/8859-5.ucm Unicode Character Map +cpan/Encode/ucm/8859-6.ucm Unicode Character Map +cpan/Encode/ucm/8859-7.ucm Unicode Character Map +cpan/Encode/ucm/8859-8.ucm Unicode Character Map +cpan/Encode/ucm/8859-9.ucm Unicode Character Map +cpan/Encode/ucm/adobeStdenc.ucm Unicode Character Map +cpan/Encode/ucm/adobeSymbol.ucm Unicode Character Map +cpan/Encode/ucm/adobeZdingbat.ucm Unicode Character Map +cpan/Encode/ucm/ascii.ucm Unicode Character Map +cpan/Encode/ucm/big5-eten.ucm Unicode Character Map +cpan/Encode/ucm/big5-hkscs.ucm Unicode Character Map +cpan/Encode/ucm/cp037.ucm Unicode Character Map +cpan/Encode/ucm/cp1006.ucm Unicode Character Map +cpan/Encode/ucm/cp1026.ucm Unicode Character Map +cpan/Encode/ucm/cp1047.ucm Unicode Character Map +cpan/Encode/ucm/cp1250.ucm Unicode Character Map +cpan/Encode/ucm/cp1251.ucm Unicode Character Map +cpan/Encode/ucm/cp1252.ucm Unicode Character Map +cpan/Encode/ucm/cp1253.ucm Unicode Character Map +cpan/Encode/ucm/cp1254.ucm Unicode Character Map +cpan/Encode/ucm/cp1255.ucm Unicode Character Map +cpan/Encode/ucm/cp1256.ucm Unicode Character Map +cpan/Encode/ucm/cp1257.ucm Unicode Character Map +cpan/Encode/ucm/cp1258.ucm Unicode Character Map +cpan/Encode/ucm/cp424.ucm Unicode Character Map +cpan/Encode/ucm/cp437.ucm Unicode Character Map +cpan/Encode/ucm/cp500.ucm Unicode Character Map +cpan/Encode/ucm/cp737.ucm Unicode Character Map +cpan/Encode/ucm/cp775.ucm Unicode Character Map +cpan/Encode/ucm/cp850.ucm Unicode Character Map +cpan/Encode/ucm/cp852.ucm Unicode Character Map +cpan/Encode/ucm/cp855.ucm Unicode Character Map +cpan/Encode/ucm/cp856.ucm Unicode Character Map +cpan/Encode/ucm/cp857.ucm Unicode Character Map +cpan/Encode/ucm/cp858.ucm Unicode Character Map +cpan/Encode/ucm/cp860.ucm Unicode Character Map +cpan/Encode/ucm/cp861.ucm Unicode Character Map +cpan/Encode/ucm/cp862.ucm Unicode Character Map +cpan/Encode/ucm/cp863.ucm Unicode Character Map +cpan/Encode/ucm/cp864.ucm Unicode Character Map +cpan/Encode/ucm/cp865.ucm Unicode Character Map +cpan/Encode/ucm/cp866.ucm Unicode Character Map +cpan/Encode/ucm/cp869.ucm Unicode Character Map +cpan/Encode/ucm/cp874.ucm Unicode Character Map +cpan/Encode/ucm/cp875.ucm Unicode Character Map +cpan/Encode/ucm/cp932.ucm Unicode Character Map +cpan/Encode/ucm/cp936.ucm Unicode Character Map +cpan/Encode/ucm/cp949.ucm Unicode Character Map +cpan/Encode/ucm/cp950.ucm Unicode Character Map +cpan/Encode/ucm/ctrl.ucm Unicode Character Map +cpan/Encode/ucm/dingbats.ucm Unicode Character Map +cpan/Encode/ucm/euc-cn.ucm Unicode Character Map +cpan/Encode/ucm/euc-jp.ucm Unicode Character Map +cpan/Encode/ucm/euc-kr.ucm Unicode Character Map +cpan/Encode/ucm/gb12345.ucm Unicode Character Map +cpan/Encode/ucm/gb2312.ucm Unicode Character Map +cpan/Encode/ucm/hp-roman8.ucm Unicode Character Map +cpan/Encode/ucm/ir-165.ucm Unicode Character Map +cpan/Encode/ucm/jis0201.ucm Unicode Character Map +cpan/Encode/ucm/jis0208.ucm Unicode Character Map +cpan/Encode/ucm/jis0212.ucm Unicode Character Map +cpan/Encode/ucm/johab.ucm Unicode Character Map +cpan/Encode/ucm/koi8-f.ucm Unicode Character Map +cpan/Encode/ucm/koi8-r.ucm Unicode Character Map +cpan/Encode/ucm/koi8-u.ucm Unicode Character Map +cpan/Encode/ucm/ksc5601.ucm Unicode Character Map +cpan/Encode/ucm/macArabic.ucm Unicode Character Map +cpan/Encode/ucm/macCentEuro.ucm Unicode Character Map +cpan/Encode/ucm/macChinsimp.ucm Unicode Character Map +cpan/Encode/ucm/macChintrad.ucm Unicode Character Map +cpan/Encode/ucm/macCroatian.ucm Unicode Character Map +cpan/Encode/ucm/macCyrillic.ucm Unicode Character Map +cpan/Encode/ucm/macDingbats.ucm Unicode Character Map +cpan/Encode/ucm/macFarsi.ucm Unicode Character Map +cpan/Encode/ucm/macGreek.ucm Unicode Character Map +cpan/Encode/ucm/macHebrew.ucm Unicode Character Map +cpan/Encode/ucm/macIceland.ucm Unicode Character Map +cpan/Encode/ucm/macJapanese.ucm Unicode Character Map +cpan/Encode/ucm/macKorean.ucm Unicode Character Map +cpan/Encode/ucm/macRoman.ucm Unicode Character Map +cpan/Encode/ucm/macROMnn.ucm Unicode Character Map +cpan/Encode/ucm/macRUMnn.ucm Unicode Character Map +cpan/Encode/ucm/macSami.ucm Unicode Character Map +cpan/Encode/ucm/macSymbol.ucm Unicode Character Map +cpan/Encode/ucm/macThai.ucm Unicode Character Map +cpan/Encode/ucm/macTurkish.ucm Unicode Character Map +cpan/Encode/ucm/macUkraine.ucm Unicode Character Map +cpan/Encode/ucm/nextstep.ucm Unicode Character Map +cpan/Encode/ucm/null.ucm Unicode Character Map +cpan/Encode/ucm/posix-bc.ucm Unicode Character Map +cpan/Encode/ucm/shiftjis.ucm Unicode Character Map +cpan/Encode/ucm/symbol.ucm Unicode Character Map +cpan/Encode/ucm/viscii.ucm Unicode Character Map +cpan/Encode/Unicode/Makefile.PL Encode extension +cpan/Encode/Unicode/Unicode.pm Encode extension +cpan/Encode/Unicode/Unicode.xs Encode extension cpan/experimental/lib/experimental.pm +cpan/experimental/lib/stable.pm cpan/experimental/t/basic.t cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm generate XS code to import C header constants cpan/ExtUtils-Constant/lib/ExtUtils/Constant/Base.pm generate XS code to import C header constants @@ -809,121 +1010,121 @@ cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm MakeMaker test utilities cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm MakeMaker test utilities cpan/ExtUtils-Install/t/lib/TieOut.pm Testing library to capture prints cpan/ExtUtils-Install/t/Packlist.t See if Packlist works -cpan/ExtUtils-MakeMaker/bin/instmodsh Give information about installed extensions -cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm -cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm Calling MM functions from the cmd line -cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm Locates libraries -cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm Does the real work of the above -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm Write Makefiles for extensions -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm MakeMaker wrapper for Config -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod MakeMaker FAQ -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod Writing a module with MakeMaker -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm -cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm Writes a bootstrap file (see MakeMaker) -cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm Writes a linker options file for extensions -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm MakeMaker adaptor class -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm MakeMaker methods for AIX -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm MakeMaker methods for Any OS -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm MakeMaker methods for BeOS -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm MakeMaker methods for Cygwin -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm MakeMaker methods for Darwin -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm MakeMaker methods for DOS -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm MakeMaker methods for MacOS -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm MakeMaker methods for NetWare -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2 -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm MakeMaker methods for OS 390 -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm MakeMaker methods for QNX -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm MakeMaker methods for Unix -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm MakeMaker methods for U/WIN -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm MakeMaker methods for VMS -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm MakeMaker methods for VOS -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm MakeMaker methods for Win32 -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm MakeMaker methods for Win95 -cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm MakeMaker user override class -cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm Fixes up @INC to use just-built extension -cpan/ExtUtils-MakeMaker/t/00compile.t See if MakeMaker modules compile -cpan/ExtUtils-MakeMaker/t/01perl_bugs.t -cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t -cpan/ExtUtils-MakeMaker/t/03-xsstatic.t -cpan/ExtUtils-MakeMaker/t/04-xs-rpath-darwin.t -cpan/ExtUtils-MakeMaker/t/arch_check.t Test MakeMaker's arch_check() -cpan/ExtUtils-MakeMaker/t/backwards.t Check MakeMaker's backwards compatibility -cpan/ExtUtils-MakeMaker/t/basic.t See if MakeMaker can build a module -cpan/ExtUtils-MakeMaker/t/build_man.t Set if MakeMaker builds manpages -cpan/ExtUtils-MakeMaker/t/cd.t Test to see cd works -cpan/ExtUtils-MakeMaker/t/config.t Test ExtUtils::MakeMaker::Config -cpan/ExtUtils-MakeMaker/t/cp.t -cpan/ExtUtils-MakeMaker/t/dir_target.t Verify if dir_target() is supported -cpan/ExtUtils-MakeMaker/t/echo.t Test for ExtUtils::MakeMaker -cpan/ExtUtils-MakeMaker/t/eu_command.t -cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t See if FIRST_MAKEFILE works -cpan/ExtUtils-MakeMaker/t/fix_libs.t Test for ExtUtils::MakeMaker -cpan/ExtUtils-MakeMaker/t/fixin.t See if ExtUtils::MakeMaker works -cpan/ExtUtils-MakeMaker/t/hints.t See if hint files are honored. -cpan/ExtUtils-MakeMaker/t/INST.t Check MakeMaker INST_* macros -cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t See if MakeMaker can apply PREFIXs -cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t Test INSTALL_BASE in MakeMaker -cpan/ExtUtils-MakeMaker/t/installed_file.t Test for ExtUtils::MakeMaker -cpan/ExtUtils-MakeMaker/t/is_of_type.t Test for ExtUtils::MakeMaker -cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm MakeMaker test utilities -cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm MakeMaker test utilities -cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm MakeMaker test utilities -cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm MakeMaker test utilities -cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm Testing library for dummy input handles -cpan/ExtUtils-MakeMaker/t/lib/TieOut.pm Testing library to capture prints -cpan/ExtUtils-MakeMaker/t/Liblist.t See if ExtUtils::Liblist works -cpan/ExtUtils-MakeMaker/t/make.t See if make detection works -cpan/ExtUtils-MakeMaker/t/MakeMaker_Parameters.t test "MakeMaker Parameters" section -cpan/ExtUtils-MakeMaker/t/maketext_filter.t See if maketext_filter works -cpan/ExtUtils-MakeMaker/t/meta_convert.t See if MakeMaker works -cpan/ExtUtils-MakeMaker/t/META_for_testing.json test data for MakeMaker -cpan/ExtUtils-MakeMaker/t/META_for_testing.yml test data for MakeMaker -cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml test data for MakeMaker -cpan/ExtUtils-MakeMaker/t/metafile_data.t See if META.yml handling works -cpan/ExtUtils-MakeMaker/t/metafile_file.t See if META.yml handling works -cpan/ExtUtils-MakeMaker/t/min_perl_version.t Test the MIN_PERL_VERSION argument to WriteMakefile. -cpan/ExtUtils-MakeMaker/t/miniperl.t Test MakeMaker with miniperl -cpan/ExtUtils-MakeMaker/t/Mkbootstrap.t See if ExtUtils::Mkbootstrap works -cpan/ExtUtils-MakeMaker/t/MM_Any.t See if ExtUtils::MM_Any works -cpan/ExtUtils-MakeMaker/t/MM_BeOS.t See if ExtUtils::MM_BeOS works -cpan/ExtUtils-MakeMaker/t/MM_Cygwin.t See if ExtUtils::MM_Cygwin works -cpan/ExtUtils-MakeMaker/t/MM_NW5.t See if ExtUtils::MM_NW5 works -cpan/ExtUtils-MakeMaker/t/MM_OS2.t See if ExtUtils::MM_OS2 works -cpan/ExtUtils-MakeMaker/t/MM_Unix.t See if ExtUtils::MM_UNIX works -cpan/ExtUtils-MakeMaker/t/MM_VMS.t See if ExtUtils::MM_VMS works -cpan/ExtUtils-MakeMaker/t/MM_Win32.t See if ExtUtils::MM_Win32 works -cpan/ExtUtils-MakeMaker/t/oneliner.t See if MM can generate perl one-liners -cpan/ExtUtils-MakeMaker/t/os_unsupported.t -cpan/ExtUtils-MakeMaker/t/parse_abstract.t See if parse_abstract works -cpan/ExtUtils-MakeMaker/t/parse_version.t See if parse_version works -cpan/ExtUtils-MakeMaker/t/PL_FILES.t Test PL_FILES in MakeMaker -cpan/ExtUtils-MakeMaker/t/pm.t See if MakeMaker can handle PM -cpan/ExtUtils-MakeMaker/t/pm_to_blib.t Test for ExtUtils::MakeMaker -cpan/ExtUtils-MakeMaker/t/pod2man.t See if MakeMaker can handle no pod2man -cpan/ExtUtils-MakeMaker/t/postamble.t See if postamble works -cpan/ExtUtils-MakeMaker/t/prefixify.t See if MakeMaker can apply a PREFIX -cpan/ExtUtils-MakeMaker/t/prereq.t See if MakeMaker works -cpan/ExtUtils-MakeMaker/t/prereq_print.t See if PREREQ_PRINT works -cpan/ExtUtils-MakeMaker/t/problems.t How MakeMaker reacts to build problems -cpan/ExtUtils-MakeMaker/t/prompt.t See if E::MM::prompt() works -cpan/ExtUtils-MakeMaker/t/recurs.t See if recursive builds work -cpan/ExtUtils-MakeMaker/t/revision.t See if $Revision is correct -cpan/ExtUtils-MakeMaker/t/several_authors.t See if multiple AUTHORs work -cpan/ExtUtils-MakeMaker/t/split_command.t See if MM's xargs-like function works -cpan/ExtUtils-MakeMaker/t/test_boilerplate.t MakeMaker test +cpan/ExtUtils-MakeMaker/bin/instmodsh Give information about installed extensions +cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm Module related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm Calling MM functions from the cmd line +cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm Locates libraries +cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm Does the real work of the above +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm Write Makefiles for extensions +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm MakeMaker wrapper for Config +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod MakeMaker FAQ +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm Module related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod Writing a module with MakeMaker +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm Module related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm Module related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm Writes a bootstrap file (see MakeMaker) +cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm Writes a linker options file for extensions +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm MakeMaker adaptor class +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm MakeMaker methods for AIX +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm MakeMaker methods for Any OS +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm MakeMaker methods for BeOS +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm MakeMaker methods for Cygwin +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm MakeMaker methods for Darwin +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm MakeMaker methods for DOS +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm MakeMaker methods for MacOS +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm MakeMaker methods for NetWare +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2 +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS390.pm MakeMaker methods for OS 390 +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm MakeMaker methods for QNX +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm MakeMaker methods for Unix +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm MakeMaker methods for U/WIN +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm MakeMaker methods for VMS +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm MakeMaker methods for VOS +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm MakeMaker methods for Win32 +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm MakeMaker methods for Win95 +cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm MakeMaker user override class +cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm Fixes up @INC to use just-built extension +cpan/ExtUtils-MakeMaker/t/00compile.t See if MakeMaker modules compile +cpan/ExtUtils-MakeMaker/t/01perl_bugs.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/03-xsstatic.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/04-xs-rpath-darwin.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/arch_check.t Test MakeMaker's arch_check() +cpan/ExtUtils-MakeMaker/t/backwards.t Check MakeMaker's backwards compatibility +cpan/ExtUtils-MakeMaker/t/basic.t See if MakeMaker can build a module +cpan/ExtUtils-MakeMaker/t/build_man.t Set if MakeMaker builds manpages +cpan/ExtUtils-MakeMaker/t/cd.t Test to see cd works +cpan/ExtUtils-MakeMaker/t/config.t Test ExtUtils::MakeMaker::Config +cpan/ExtUtils-MakeMaker/t/cp.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/dir_target.t Verify if dir_target() is supported +cpan/ExtUtils-MakeMaker/t/echo.t Test for ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/eu_command.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t See if FIRST_MAKEFILE works +cpan/ExtUtils-MakeMaker/t/fix_libs.t Test for ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/fixin.t See if ExtUtils::MakeMaker works +cpan/ExtUtils-MakeMaker/t/hints.t See if hint files are honored. +cpan/ExtUtils-MakeMaker/t/INST.t Check MakeMaker INST_* macros +cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t See if MakeMaker can apply PREFIXs +cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t Test INSTALL_BASE in MakeMaker +cpan/ExtUtils-MakeMaker/t/installed_file.t Test for ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/is_of_type.t Test for ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm MakeMaker test utilities +cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm MakeMaker test utilities +cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm MakeMaker test utilities +cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm MakeMaker test utilities +cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm Testing library for dummy input handles +cpan/ExtUtils-MakeMaker/t/lib/TieOut.pm Testing library to capture prints +cpan/ExtUtils-MakeMaker/t/Liblist.t See if ExtUtils::Liblist works +cpan/ExtUtils-MakeMaker/t/make.t See if make detection works +cpan/ExtUtils-MakeMaker/t/MakeMaker_Parameters.t test "MakeMaker Parameters" section +cpan/ExtUtils-MakeMaker/t/maketext_filter.t See if maketext_filter works +cpan/ExtUtils-MakeMaker/t/meta_convert.t See if MakeMaker works +cpan/ExtUtils-MakeMaker/t/META_for_testing.json test data for MakeMaker +cpan/ExtUtils-MakeMaker/t/META_for_testing.yml test data for MakeMaker +cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml test data for MakeMaker +cpan/ExtUtils-MakeMaker/t/metafile_data.t See if META.yml handling works +cpan/ExtUtils-MakeMaker/t/metafile_file.t See if META.yml handling works +cpan/ExtUtils-MakeMaker/t/min_perl_version.t Test the MIN_PERL_VERSION argument to WriteMakefile. +cpan/ExtUtils-MakeMaker/t/miniperl.t Test MakeMaker with miniperl +cpan/ExtUtils-MakeMaker/t/Mkbootstrap.t See if ExtUtils::Mkbootstrap works +cpan/ExtUtils-MakeMaker/t/MM_Any.t See if ExtUtils::MM_Any works +cpan/ExtUtils-MakeMaker/t/MM_BeOS.t See if ExtUtils::MM_BeOS works +cpan/ExtUtils-MakeMaker/t/MM_Cygwin.t See if ExtUtils::MM_Cygwin works +cpan/ExtUtils-MakeMaker/t/MM_NW5.t See if ExtUtils::MM_NW5 works +cpan/ExtUtils-MakeMaker/t/MM_OS2.t See if ExtUtils::MM_OS2 works +cpan/ExtUtils-MakeMaker/t/MM_Unix.t See if ExtUtils::MM_UNIX works +cpan/ExtUtils-MakeMaker/t/MM_VMS.t See if ExtUtils::MM_VMS works +cpan/ExtUtils-MakeMaker/t/MM_Win32.t See if ExtUtils::MM_Win32 works +cpan/ExtUtils-MakeMaker/t/oneliner.t See if MM can generate perl one-liners +cpan/ExtUtils-MakeMaker/t/os_unsupported.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/parse_abstract.t See if parse_abstract works +cpan/ExtUtils-MakeMaker/t/parse_version.t See if parse_version works +cpan/ExtUtils-MakeMaker/t/PL_FILES.t Test PL_FILES in MakeMaker +cpan/ExtUtils-MakeMaker/t/pm.t See if MakeMaker can handle PM +cpan/ExtUtils-MakeMaker/t/pm_to_blib.t Test for ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/pod2man.t See if MakeMaker can handle no pod2man +cpan/ExtUtils-MakeMaker/t/postamble.t See if postamble works +cpan/ExtUtils-MakeMaker/t/prefixify.t See if MakeMaker can apply a PREFIX +cpan/ExtUtils-MakeMaker/t/prereq.t See if MakeMaker works +cpan/ExtUtils-MakeMaker/t/prereq_print.t See if PREREQ_PRINT works +cpan/ExtUtils-MakeMaker/t/problems.t How MakeMaker reacts to build problems +cpan/ExtUtils-MakeMaker/t/prompt.t See if E::MM::prompt() works +cpan/ExtUtils-MakeMaker/t/recurs.t See if recursive builds work +cpan/ExtUtils-MakeMaker/t/revision.t See if $Revision is correct +cpan/ExtUtils-MakeMaker/t/several_authors.t See if multiple AUTHORs work +cpan/ExtUtils-MakeMaker/t/split_command.t See if MM's xargs-like function works +cpan/ExtUtils-MakeMaker/t/test_boilerplate.t MakeMaker test cpan/ExtUtils-MakeMaker/t/testdata/reallylongdirectoryname/arch1/Config.pm test data for MakeMaker cpan/ExtUtils-MakeMaker/t/testdata/reallylongdirectoryname/arch2/Config.pm test data for MakeMaker -cpan/ExtUtils-MakeMaker/t/testlib.t See if ExtUtils::testlib works -cpan/ExtUtils-MakeMaker/t/unicode.t -cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t See if MakeMaker's VERSION_FROM works -cpan/ExtUtils-MakeMaker/t/vstrings.t -cpan/ExtUtils-MakeMaker/t/WriteEmptyMakefile.t See if WriteEmptyMakefile works -cpan/ExtUtils-MakeMaker/t/writemakefile_args.t See if WriteMakefile works -cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm Utilities to write MANIFEST files -cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP The default MANIFEST.SKIP -cpan/ExtUtils-Manifest/t/Manifest.t See if ExtUtils::Manifest works +cpan/ExtUtils-MakeMaker/t/testlib.t See if ExtUtils::testlib works +cpan/ExtUtils-MakeMaker/t/unicode.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/VERSION_FROM.t See if MakeMaker's VERSION_FROM works +cpan/ExtUtils-MakeMaker/t/vstrings.t Test file related to ExtUtils::MakeMaker +cpan/ExtUtils-MakeMaker/t/WriteEmptyMakefile.t See if WriteEmptyMakefile works +cpan/ExtUtils-MakeMaker/t/writemakefile_args.t See if WriteMakefile works +cpan/ExtUtils-Manifest/lib/ExtUtils/Manifest.pm Utilities to write MANIFEST files +cpan/ExtUtils-Manifest/lib/ExtUtils/MANIFEST.SKIP The default MANIFEST.SKIP +cpan/ExtUtils-Manifest/t/Manifest.t See if ExtUtils::Manifest works cpan/ExtUtils-PL2Bat/lib/ExtUtils/PL2Bat.pm Implement pl2bat cpan/ExtUtils-PL2Bat/t/make_executable.t Tests if ExtUtils::PL2Bat makes bat files that are executable cpan/File-Fetch/lib/File/Fetch.pm File::Fetch @@ -935,21 +1136,21 @@ cpan/File-Path/t/Path.t See if File::Path works cpan/File-Path/t/Path_root.t See if File::Path works cpan/File-Path/t/Path_win32.t See if File::Path works cpan/File-Path/t/taint.t See if File::Path works with -T -cpan/File-Temp/lib/File/Temp.pm create safe temporary files and file handles -cpan/File-Temp/t/cmp.t See if File::Temp works -cpan/File-Temp/t/fork.t See if File::Temp works -cpan/File-Temp/t/lock.t See if File::Temp works -cpan/File-Temp/t/mktemp.t See if File::Temp works -cpan/File-Temp/t/object.t See if File::Temp works -cpan/File-Temp/t/posix.t See if File::Temp works -cpan/File-Temp/t/rmtree.t See if File::Temp works -cpan/File-Temp/t/security.t See if File::Temp works -cpan/File-Temp/t/seekable.t See if File::Temp works -cpan/File-Temp/t/tempfile.t See if File::Temp works -cpan/Filter-Util-Call/Call.pm Filter::Util::Call extension module -cpan/Filter-Util-Call/Call.xs Filter::Util::Call extension external subroutines +cpan/File-Temp/lib/File/Temp.pm create safe temporary files and file handles +cpan/File-Temp/t/cmp.t See if File::Temp works +cpan/File-Temp/t/fork.t See if File::Temp works +cpan/File-Temp/t/lock.t See if File::Temp works +cpan/File-Temp/t/mktemp.t See if File::Temp works +cpan/File-Temp/t/object.t See if File::Temp works +cpan/File-Temp/t/posix.t See if File::Temp works +cpan/File-Temp/t/rmtree.t See if File::Temp works +cpan/File-Temp/t/security.t See if File::Temp works +cpan/File-Temp/t/seekable.t See if File::Temp works +cpan/File-Temp/t/tempfile.t See if File::Temp works +cpan/Filter-Util-Call/Call.pm Filter::Util::Call extension module +cpan/Filter-Util-Call/Call.xs Filter::Util::Call extension external subroutines cpan/Filter-Util-Call/filter-util.pl See if Filter::Util::Call works -cpan/Filter-Util-Call/t/call.t See if Filter::Util::Call works +cpan/Filter-Util-Call/t/call.t See if Filter::Util::Call works cpan/Filter-Util-Call/t/rt_101033.pm cpan/Filter-Util-Call/t/rt_101033.t cpan/Filter-Util-Call/t/rt_54452-rebless.t @@ -1059,6 +1260,7 @@ cpan/HTTP-Tiny/t/160_cookies.t cpan/HTTP-Tiny/t/161_basic_auth.t cpan/HTTP-Tiny/t/162_proxy_auth.t cpan/HTTP-Tiny/t/170_keepalive.t +cpan/HTTP-Tiny/t/180_verify_SSL.t cpan/HTTP-Tiny/t/BrokenCookieJar.pm cpan/HTTP-Tiny/t/SimpleCookieJar.pm cpan/HTTP-Tiny/t/Util.pm @@ -1227,23 +1429,23 @@ cpan/IO-Socket-IP/t/22timeout.t cpan/IO-Socket-IP/t/30nonblocking-connect.t IO::Socket::IP tests cpan/IO-Socket-IP/t/31nonblocking-connect-internet.t IO::Socket::IP tests cpan/IO-Socket-IP/t/99pod.t IO::Socket::IP tests -cpan/IO-Zlib/t/basic.t Tests for IO::Zlib -cpan/IO-Zlib/t/external.t Tests for IO::Zlib -cpan/IO-Zlib/t/getc.t Tests for IO::Zlib -cpan/IO-Zlib/t/getline.t Tests for IO::Zlib -cpan/IO-Zlib/t/import.t Tests for IO::Zlib -cpan/IO-Zlib/t/large.t Tests for IO::Zlib -cpan/IO-Zlib/t/tied.t Tests for IO::Zlib -cpan/IO-Zlib/t/uncomp1.t Tests for IO::Zlib -cpan/IO-Zlib/t/uncomp2.t Tests for IO::Zlib -cpan/IO-Zlib/Zlib.pm IO::Zlib -cpan/IPC-Cmd/lib/IPC/Cmd.pm IPC::Cmd -cpan/IPC-Cmd/t/01_IPC-Cmd.t IPC::Cmd tests -cpan/IPC-Cmd/t/02_Interactive.t IPC::Cmd tests -cpan/IPC-Cmd/t/03_run-forked.t IPC::Cmd tests -cpan/IPC-Cmd/t/src/child.pl IPC::Cmd tests -cpan/IPC-Cmd/t/src/output.pl IPC::Cmd tests -cpan/IPC-Cmd/t/src/x.tgz IPC::Cmd tests +cpan/IO-Zlib/t/basic.t Tests for IO::Zlib +cpan/IO-Zlib/t/external.t Tests for IO::Zlib +cpan/IO-Zlib/t/getc.t Tests for IO::Zlib +cpan/IO-Zlib/t/getline.t Tests for IO::Zlib +cpan/IO-Zlib/t/import.t Tests for IO::Zlib +cpan/IO-Zlib/t/large.t Tests for IO::Zlib +cpan/IO-Zlib/t/tied.t Tests for IO::Zlib +cpan/IO-Zlib/t/uncomp1.t Tests for IO::Zlib +cpan/IO-Zlib/t/uncomp2.t Tests for IO::Zlib +cpan/IO-Zlib/Zlib.pm IO::Zlib +cpan/IPC-Cmd/lib/IPC/Cmd.pm IPC::Cmd +cpan/IPC-Cmd/t/01_IPC-Cmd.t IPC::Cmd tests +cpan/IPC-Cmd/t/02_Interactive.t IPC::Cmd tests +cpan/IPC-Cmd/t/03_run-forked.t IPC::Cmd tests +cpan/IPC-Cmd/t/src/child.pl IPC::Cmd tests +cpan/IPC-Cmd/t/src/output.pl IPC::Cmd tests +cpan/IPC-Cmd/t/src/x.tgz IPC::Cmd tests cpan/IPC-SysV/hints/cygwin.pl Hint for IPC::SysV for named architecture cpan/IPC-SysV/hints/next_3.pl Hint for IPC::SysV for named architecture cpan/IPC-SysV/lib/IPC/Msg.pm IPC::SysV extension Perl module @@ -1288,7 +1490,23 @@ cpan/JSON-PP/t/020_unknown.t cpan/JSON-PP/t/021_evans.t cpan/JSON-PP/t/022_comment_at_eof.t cpan/JSON-PP/t/052_object.t -cpan/JSON-PP/t/099_binary.t +cpan/JSON-PP/t/099_binary.pl +cpan/JSON-PP/t/099_binary00.t +cpan/JSON-PP/t/099_binary01.t +cpan/JSON-PP/t/099_binary02.t +cpan/JSON-PP/t/099_binary03.t +cpan/JSON-PP/t/099_binary04.t +cpan/JSON-PP/t/099_binary05.t +cpan/JSON-PP/t/099_binary06.t +cpan/JSON-PP/t/099_binary07.t +cpan/JSON-PP/t/099_binary08.t +cpan/JSON-PP/t/099_binary09.t +cpan/JSON-PP/t/099_binary10.t +cpan/JSON-PP/t/099_binary11.t +cpan/JSON-PP/t/099_binary12.t +cpan/JSON-PP/t/099_binary13.t +cpan/JSON-PP/t/099_binary14.t +cpan/JSON-PP/t/099_binary15.t cpan/JSON-PP/t/104_sortby.t cpan/JSON-PP/t/105_esc_slash.t cpan/JSON-PP/t/106_allow_barekey.t @@ -1303,42 +1521,46 @@ cpan/JSON-PP/t/115_tie_ixhash.t cpan/JSON-PP/t/116_incr_parse_fixed.t cpan/JSON-PP/t/117_numbers.t cpan/JSON-PP/t/118_boolean_values.t +cpan/JSON-PP/t/119_incr_parse_utf8.t +cpan/JSON-PP/t/120_incr_parse_truncated.t +cpan/JSON-PP/t/core_bools.t cpan/JSON-PP/t/gh_28_json_test_suite.t cpan/JSON-PP/t/gh_29_trailing_false_value.t cpan/JSON-PP/t/rt_116998_wrong_character_offset.t +cpan/JSON-PP/t/rt_122270_old_xs_boolean.t cpan/JSON-PP/t/rt_90071_incr_parse.t cpan/JSON-PP/t/zero-mojibake.t -cpan/libnet/lib/Net/Cmd.pm -cpan/libnet/lib/Net/Config.pm -cpan/libnet/lib/Net/Domain.pm -cpan/libnet/lib/Net/FTP.pm -cpan/libnet/lib/Net/FTP/A.pm -cpan/libnet/lib/Net/FTP/dataconn.pm -cpan/libnet/lib/Net/FTP/E.pm -cpan/libnet/lib/Net/FTP/I.pm -cpan/libnet/lib/Net/FTP/L.pm -cpan/libnet/lib/Net/libnetFAQ.pod -cpan/libnet/lib/Net/Netrc.pm -cpan/libnet/lib/Net/NNTP.pm -cpan/libnet/lib/Net/POP3.pm -cpan/libnet/lib/Net/SMTP.pm -cpan/libnet/lib/Net/Time.pm -cpan/libnet/Makefile.PL -cpan/libnet/t/config.t libnet -cpan/libnet/t/datasend.t libnet -cpan/libnet/t/ftp.t libnet -cpan/libnet/t/hostname.t libnet -cpan/libnet/t/netrc.t libnet -cpan/libnet/t/nntp.t libnet -cpan/libnet/t/nntp_ipv6.t -cpan/libnet/t/nntp_ssl.t -cpan/libnet/t/pop3_ipv6.t -cpan/libnet/t/pop3_ssl.t -cpan/libnet/t/require.t libnet -cpan/libnet/t/smtp.t libnet -cpan/libnet/t/smtp_ipv6.t -cpan/libnet/t/smtp_ssl.t -cpan/libnet/t/time.t libnet +cpan/libnet/lib/Net/Cmd.pm Module related to libnet +cpan/libnet/lib/Net/Config.pm Module related to libnet +cpan/libnet/lib/Net/Domain.pm Module related to libnet +cpan/libnet/lib/Net/FTP.pm Module related to libnet +cpan/libnet/lib/Net/FTP/A.pm Module related to libnet +cpan/libnet/lib/Net/FTP/dataconn.pm Module related to libnet +cpan/libnet/lib/Net/FTP/E.pm Module related to libnet +cpan/libnet/lib/Net/FTP/I.pm Module related to libnet +cpan/libnet/lib/Net/FTP/L.pm Module related to libnet +cpan/libnet/lib/Net/libnetFAQ.pod libnet +cpan/libnet/lib/Net/Netrc.pm Module related to libnet +cpan/libnet/lib/Net/NNTP.pm Module related to libnet +cpan/libnet/lib/Net/POP3.pm Module related to libnet +cpan/libnet/lib/Net/SMTP.pm Module related to libnet +cpan/libnet/lib/Net/Time.pm Module related to libnet +cpan/libnet/Makefile.PL libnet +cpan/libnet/t/config.t libnet +cpan/libnet/t/datasend.t libnet +cpan/libnet/t/ftp.t libnet +cpan/libnet/t/hostname.t libnet +cpan/libnet/t/netrc.t libnet +cpan/libnet/t/nntp.t libnet +cpan/libnet/t/nntp_ipv6.t Test file related to libnet +cpan/libnet/t/nntp_ssl.t Test file related to libnet +cpan/libnet/t/pop3_ipv6.t Test file related to libnet +cpan/libnet/t/pop3_ssl.t Test file related to libnet +cpan/libnet/t/require.t libnet +cpan/libnet/t/smtp.t libnet +cpan/libnet/t/smtp_ipv6.t Test file related to libnet +cpan/libnet/t/smtp_ssl.t Test file related to libnet +cpan/libnet/t/time.t libnet cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm Locale::Simple cpan/Locale-Maketext-Simple/t/0-signature.t Locale::Simple tests cpan/Locale-Maketext-Simple/t/1-basic.t Locale::Simple tests @@ -1350,136 +1572,80 @@ cpan/Locale-Maketext-Simple/t/po_with_i_default/i_default.po Locale::Simple test cpan/Locale-Maketext-Simple/t/po_without_i_default/en.po Locale::Simple tests cpan/Locale-Maketext-Simple/t/po_without_i_default/fr.po Locale::Simple tests cpan/Math-BigInt/lib/Math/BigFloat.pm An arbitrary precision floating-point arithmetic package -cpan/Math-BigInt/lib/Math/BigInt.pm An arbitrary precision integer arithmetic package +cpan/Math-BigInt/lib/Math/BigInt.pm An arbitrary precision integer arithmetic package cpan/Math-BigInt/lib/Math/BigInt/Calc.pm Pure Perl module to support Math::BigInt cpan/Math-BigInt/lib/Math/BigInt/Lib.pm -cpan/Math-BigInt/t/_bin_parts_to_lib_parts.t -cpan/Math-BigInt/t/_bin_str_to_str_parts.t -cpan/Math-BigInt/t/_dec_parts_to_lib_parts.t -cpan/Math-BigInt/t/_dec_str_to_str_parts.t -cpan/Math-BigInt/t/_e_math.t Helper routine in BigFloat for _e math -cpan/Math-BigInt/t/_hex_str_to_str_parts.t -cpan/Math-BigInt/t/_oct_str_to_str_parts.t -cpan/Math-BigInt/t/alias.inc Support for BigInt tests -cpan/Math-BigInt/t/backermann-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/bare_mbf.t Test MBF under Math::BigInt::BareCalc -cpan/Math-BigInt/t/bare_mbi.t Test MBI under Math::BigInt::BareCalc -cpan/Math-BigInt/t/bare_mif.t Rounding tests under BareCalc -cpan/Math-BigInt/t/bdigitsum-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/bdstr-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/bdstr-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/bestr-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/bestr-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/bfib-mbi.t -cpan/Math-BigInt/t/big_pi_e.t test bpi() and bexp() -cpan/Math-BigInt/t/bigfltpm.inc Shared tests for bigfltpm.t and sub_mbf.t -cpan/Math-BigInt/t/bigfltpm.t See if BigFloat.pm works -cpan/Math-BigInt/t/bigintc.t See if BigInt/Calc.pm works +cpan/Math-BigInt/t/alias.inc Support for BigInt tests +cpan/Math-BigInt/t/bare_mbf.t Test MBF under Math::BigInt::BareCalc +cpan/Math-BigInt/t/bare_mbi.t Test MBI under Math::BigInt::BareCalc +cpan/Math-BigInt/t/bare_mif.t Rounding tests under BareCalc +cpan/Math-BigInt/t/big_pi_e.t test bpi() and bexp() +cpan/Math-BigInt/t/bigfltpm.inc Shared tests for bigfltpm.t and sub_mbf.t +cpan/Math-BigInt/t/bigfltpm.t See if BigFloat.pm works +cpan/Math-BigInt/t/bigintc.t See if BigInt/Calc.pm works cpan/Math-BigInt/t/bigintc-import.t -cpan/Math-BigInt/t/bigintpm.inc Shared tests for bigintpm.t and sub_mbi.t -cpan/Math-BigInt/t/bigintpm.t See if BigInt.pm works -cpan/Math-BigInt/t/bigints.t See if BigInt.pm works -cpan/Math-BigInt/t/biglog.t Test the log function -cpan/Math-BigInt/t/bigroot.t Test the broot function -cpan/Math-BigInt/t/blucas-mbi.t -cpan/Math-BigInt/t/bnok-mbf.t -cpan/Math-BigInt/t/bnok-mbi.t -cpan/Math-BigInt/t/bnstr-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/bnstr-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/bpi-mbf.t -cpan/Math-BigInt/t/bpi-mbi.t -cpan/Math-BigInt/t/bpow-mbf.t -cpan/Math-BigInt/t/bpow-mbi.t -cpan/Math-BigInt/t/bsstr-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/bsstr-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/buparrow-mbi.t Test Math::BigInt +cpan/Math-BigInt/t/bigintpm.inc Shared tests for bigintpm.t and sub_mbi.t +cpan/Math-BigInt/t/bigintpm.t See if BigInt.pm works +cpan/Math-BigInt/t/bigints.t See if BigInt.pm works +cpan/Math-BigInt/t/biglog.t Test the log function +cpan/Math-BigInt/t/bigroot.t Test the broot function cpan/Math-BigInt/t/calling-class-methods.t Test Math::BigInt cpan/Math-BigInt/t/calling-constant.t cpan/Math-BigInt/t/calling-instance-methods.t Test Math::BigInt cpan/Math-BigInt/t/calling-lib1.t cpan/Math-BigInt/t/calling-lib2.t -cpan/Math-BigInt/t/config.t Test Math::BigInt->config() -cpan/Math-BigInt/t/const-mbf.t -cpan/Math-BigInt/t/const-mbi.t -cpan/Math-BigInt/t/downgrade.t Test if use Math::BigInt(); under downgrade works -cpan/Math-BigInt/t/dparts-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/dparts-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/eparts-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/eparts-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/fparts-mbf.t -cpan/Math-BigInt/t/fparts-mbi.t -cpan/Math-BigInt/t/from_base-mbi.t -cpan/Math-BigInt/t/from_base_num-mbi.t -cpan/Math-BigInt/t/from_bin-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/from_bin-mbi.t -cpan/Math-BigInt/t/from_hex-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/from_hex-mbi.t -cpan/Math-BigInt/t/from_ieee754-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/from_oct-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/from_oct-mbi.t -cpan/Math-BigInt/t/inf_nan.t Special tests for inf and *NaN* handling -cpan/Math-BigInt/t/isa.t Test for Math::BigInt inheritance -cpan/Math-BigInt/t/lib_load-mbf-mbi.t -cpan/Math-BigInt/t/lib_load-mbi-mbf.t +cpan/Math-BigInt/t/config.t Test Math::BigInt->config() +cpan/Math-BigInt/t/downgrade.t Test if use Math::BigInt(); under downgrade works +cpan/Math-BigInt/t/inf_nan.t Special tests for inf and *NaN* handling +cpan/Math-BigInt/t/isa.t Test for Math::BigInt inheritance cpan/Math-BigInt/t/Math/BigFloat/Subclass.pm Empty subclass of BigFloat for test cpan/Math-BigInt/t/Math/BigInt/BareCalc.pm Bigint's simulation of Calc cpan/Math-BigInt/t/Math/BigInt/Lib/Minimal.pm cpan/Math-BigInt/t/Math/BigInt/Lib/TestUtil.pm Test Math::BigInt cpan/Math-BigInt/t/Math/BigInt/Scalar.pm Pure Perl module to support Math::BigInt cpan/Math-BigInt/t/Math/BigInt/Subclass.pm Empty subclass of BigInt for test -cpan/Math-BigInt/t/mbf_ali.t Tests for BigFloat -cpan/Math-BigInt/t/mbi_ali.t Tests for BigInt -cpan/Math-BigInt/t/mbi_rand.t Test Math::BigInt randomly -cpan/Math-BigInt/t/mbimbf.inc Actual BigInt/BigFloat accuracy, precision and fallback, round_mode tests -cpan/Math-BigInt/t/mbimbf.t BigInt/BigFloat accuracy, precision and fallback, round_mode -cpan/Math-BigInt/t/nan_cmp.t overloaded comparison involving *NaN* -cpan/Math-BigInt/t/new-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/new-mbi.t -cpan/Math-BigInt/t/new_overloaded.t test overloaded numbers in BigFloat's new() -cpan/Math-BigInt/t/nparts-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/nparts-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/objectify_mbf.t Math::BigInt tests -cpan/Math-BigInt/t/objectify_mbi.t Math::BigInt tests -cpan/Math-BigInt/t/req_mbf0.t test: require Math::BigFloat; ->bzero(); -cpan/Math-BigInt/t/req_mbf1.t test: require Math::BigFloat; ->bone(); -cpan/Math-BigInt/t/req_mbfa.t test: require Math::BigFloat; ->bnan(); -cpan/Math-BigInt/t/req_mbfi.t test: require Math::BigFloat; ->binf(); -cpan/Math-BigInt/t/req_mbfn.t test: require Math::BigFloat; ->new(); -cpan/Math-BigInt/t/req_mbfw.t require Math::BigFloat; import ( with => ); -cpan/Math-BigInt/t/require.t Test if require Math::BigInt works -cpan/Math-BigInt/t/round.t Test rounding with non-integer A and P -cpan/Math-BigInt/t/rt-16221.t Tests for objectify() w/foreign objs -cpan/Math-BigInt/t/sparts-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/sparts-mbi.t Test Math::BigInt -cpan/Math-BigInt/t/sub_ali.t Tests for aliases in BigInt subclasses -cpan/Math-BigInt/t/sub_mbf.t Empty subclass test of BigFloat -cpan/Math-BigInt/t/sub_mbi.t Empty subclass test of BigInt -cpan/Math-BigInt/t/sub_mif.t Test A & P with subclasses using mbimbf.inc -cpan/Math-BigInt/t/to_base-mbi.t -cpan/Math-BigInt/t/to_base_num-mbi.t -cpan/Math-BigInt/t/to_ieee754-mbf.t Test Math::BigInt -cpan/Math-BigInt/t/trap.t Test whether trap_nan and trap_inf work -cpan/Math-BigInt/t/upgrade.inc Actual tests for upgrade.t -cpan/Math-BigInt/t/upgrade.t Test if use Math::BigInt(); under upgrade works -cpan/Math-BigInt/t/upgrade2.t Test that two upgrade levels work -cpan/Math-BigInt/t/upgradef.t Test if use Math::BigFloat(); under upgrade works -cpan/Math-BigInt/t/use.t Test if use Math::BigInt(); works -cpan/Math-BigInt/t/use_lib1.t Test combinations of Math::BigInt and BigFloat -cpan/Math-BigInt/t/use_lib2.t Test combinations of Math::BigInt and BigFloat -cpan/Math-BigInt/t/use_lib3.t Test combinations of Math::BigInt and BigFloat -cpan/Math-BigInt/t/use_lib4.t Test combinations of Math::BigInt and BigFloat +cpan/Math-BigInt/t/mbf_ali.t Tests for BigFloat +cpan/Math-BigInt/t/mbi_ali.t Tests for BigInt +cpan/Math-BigInt/t/mbi_rand.t Test Math::BigInt randomly +cpan/Math-BigInt/t/mbimbf.inc Actual BigInt/BigFloat accuracy, precision and fallback, round_mode tests +cpan/Math-BigInt/t/mbimbf.t BigInt/BigFloat accuracy, precision and fallback, round_mode +cpan/Math-BigInt/t/nan_cmp.t overloaded comparison involving *NaN* +cpan/Math-BigInt/t/new_overloaded.t test overloaded numbers in BigFloat's new() +cpan/Math-BigInt/t/req_mbf0.t test: require Math::BigFloat; ->bzero(); +cpan/Math-BigInt/t/req_mbf1.t test: require Math::BigFloat; ->bone(); +cpan/Math-BigInt/t/req_mbfa.t test: require Math::BigFloat; ->bnan(); +cpan/Math-BigInt/t/req_mbfi.t test: require Math::BigFloat; ->binf(); +cpan/Math-BigInt/t/req_mbfn.t test: require Math::BigFloat; ->new(); +cpan/Math-BigInt/t/req_mbfw.t require Math::BigFloat; import ( with => ); +cpan/Math-BigInt/t/require.t Test if require Math::BigInt works +cpan/Math-BigInt/t/round.t Test rounding with non-integer A and P +cpan/Math-BigInt/t/rt-16221.t Tests for objectify() w/foreign objs +cpan/Math-BigInt/t/sub_ali.t Tests for aliases in BigInt subclasses +cpan/Math-BigInt/t/sub_mbf.t Empty subclass test of BigFloat +cpan/Math-BigInt/t/sub_mbi.t Empty subclass test of BigInt +cpan/Math-BigInt/t/sub_mif.t Test A & P with subclasses using mbimbf.inc +cpan/Math-BigInt/t/trap.t Test whether trap_nan and trap_inf work +cpan/Math-BigInt/t/upgrade.inc Actual tests for upgrade.t +cpan/Math-BigInt/t/upgrade.t Test if use Math::BigInt(); under upgrade works +cpan/Math-BigInt/t/upgrade2.t Test that two upgrade levels work +cpan/Math-BigInt/t/upgradef.t Test if use Math::BigFloat(); under upgrade works +cpan/Math-BigInt/t/use.t Test if use Math::BigInt(); works +cpan/Math-BigInt/t/use_lib1.t Test combinations of Math::BigInt and BigFloat +cpan/Math-BigInt/t/use_lib2.t Test combinations of Math::BigInt and BigFloat +cpan/Math-BigInt/t/use_lib3.t Test combinations of Math::BigInt and BigFloat +cpan/Math-BigInt/t/use_lib4.t Test combinations of Math::BigInt and BigFloat cpan/Math-BigInt/t/use_lib5.t cpan/Math-BigInt/t/use_lib6.t -cpan/Math-BigInt/t/use_mbfw.t use BigFloat w/ with and lib at the same time -cpan/Math-BigInt/t/with_sub.t Test use Math::BigFloat with => package -cpan/Math-BigInt-FastCalc/FastCalc.xs Math::BigInt::FastCalc extension +cpan/Math-BigInt/t/use_mbfw.t use BigFloat w/ with and lib at the same time +cpan/Math-BigInt/t/with_sub.t Test use Math::BigFloat with => package +cpan/Math-BigInt-FastCalc/FastCalc.xs Math::BigInt::FastCalc extension cpan/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm Math::BigInt::FastCalc extension -cpan/Math-BigInt-FastCalc/t/bigintfc.t Math::BigInt::FastCalc extension +cpan/Math-BigInt-FastCalc/t/bigintfc.t Math::BigInt::FastCalc extension cpan/Math-BigInt-FastCalc/t/biglog.t cpan/Math-BigInt-FastCalc/t/bigroot.t -cpan/Math-BigInt-FastCalc/t/bootstrap.t Math::BigInt::FastCalc extension -cpan/Math-BigInt-FastCalc/t/leak.t test for memory leaks in Math::BigInt::FastCalc -cpan/Math-BigInt-FastCalc/t/mbi_rand.t Math::BigInt::FastCalc extension +cpan/Math-BigInt-FastCalc/t/bootstrap.t Math::BigInt::FastCalc extension +cpan/Math-BigInt-FastCalc/t/leak.t test for memory leaks in Math::BigInt::FastCalc +cpan/Math-BigInt-FastCalc/t/mbi_rand.t Math::BigInt::FastCalc extension cpan/Math-BigRat/lib/Math/BigRat.pm Math::BigRat cpan/Math-BigRat/t/badd-mbr.t cpan/Math-BigRat/t/big_ap.t Math::BigRat test @@ -1502,46 +1668,38 @@ cpan/Math-BigRat/t/new-mbr.t cpan/Math-BigRat/t/requirer.t see if require works properly cpan/Math-BigRat/t/rt121139.t cpan/Math-BigRat/t/trap.t see if trap_nan and trap_inf work -cpan/Math-Complex/lib/Math/Complex.pm A Complex package -cpan/Math-Complex/lib/Math/Trig.pm A simple interface to complex trigonometry -cpan/Math-Complex/t/Complex.t See if Math::Complex works -cpan/Math-Complex/t/Trig.t See if Math::Trig works -cpan/Math-Complex/t/underbar.t See if Math::Complex works cpan/Memoize/Memoize.pm Memoize cpan/Memoize/Memoize/AnyDBM_File.pm Memoize glue layer for AnyDBM_File cpan/Memoize/Memoize/Expire.pm Memoize expiry manager example -cpan/Memoize/Memoize/ExpireFile.pm Memoize expiry manager test scaffold -cpan/Memoize/Memoize/ExpireTest.pm Memoize expiry manager test scaffold cpan/Memoize/Memoize/NDBM_File.pm Memoize glue layer for NDBM_File cpan/Memoize/Memoize/SDBM_File.pm Memoize glue layer for SDBM_File cpan/Memoize/Memoize/Storable.pm Memoize glue layer for Storable -cpan/Memoize/t/array.t Memoize array context return tests -cpan/Memoize/t/array_confusion.t Memoize ambiguous array return tests +cpan/Memoize/t/basic.t +cpan/Memoize/t/cache.t cpan/Memoize/t/correctness.t Memoize basic correctness tests -cpan/Memoize/t/errors.t Memoize PEBKAC detection tests -cpan/Memoize/t/expfile.t Memoize expiry manager tests -cpan/Memoize/t/expire.t Memoize expiry manager tests -cpan/Memoize/t/expmod_n.t Memoize expiry manager tests +cpan/Memoize/t/expmod.t cpan/Memoize/t/expmod_t.t Memoize expiry manager (timed) tests cpan/Memoize/t/flush.t Memoize 'flush_cache' function tests +cpan/Memoize/t/lib/DBMTest.pm cpan/Memoize/t/normalize.t Memoize 'normalizer' feature tests -cpan/Memoize/t/prototype.t Memoize prototyped function handling tests -cpan/Memoize/t/speed.t "Makes functions faster" advertisement test +cpan/Memoize/t/st_concurrency +cpan/Memoize/t/threadsafe.t cpan/Memoize/t/tie.t Memoize tied file test +cpan/Memoize/t/tie_db.t cpan/Memoize/t/tie_gdbm.t Memoize GDBM interface test cpan/Memoize/t/tie_ndbm.t Memoize NDBM interface test +cpan/Memoize/t/tie_odbm.t cpan/Memoize/t/tie_sdbm.t Memoize SDBM interface test cpan/Memoize/t/tie_storable.t Memoize Storable interface test -cpan/Memoize/t/tiefeatures.t Memoize FAULT / MERGE / HASH options test cpan/Memoize/t/unmemoize.t Memoize 'unmemoize' function test -cpan/MIME-Base64/Base64.xs MIME::Base64 extension +cpan/MIME-Base64/Base64.xs MIME::Base64 extension cpan/MIME-Base64/lib/MIME/Base64.pm cpan/MIME-Base64/lib/MIME/QuotedPrint.pm -cpan/MIME-Base64/t/base64.t See whether MIME::Base64 works +cpan/MIME-Base64/t/base64.t See whether MIME::Base64 works cpan/MIME-Base64/t/base64url.t -cpan/MIME-Base64/t/length.t See whether MIME::QuotedPrint works -cpan/MIME-Base64/t/quoted-print.t See whether MIME::QuotedPrint works -cpan/MIME-Base64/t/unicode.t See whether MIME::Base64 works +cpan/MIME-Base64/t/length.t See whether MIME::QuotedPrint works +cpan/MIME-Base64/t/quoted-print.t See whether MIME::QuotedPrint works +cpan/MIME-Base64/t/unicode.t See whether MIME::Base64 works cpan/Module-Load/lib/Module/Load.pm Module::Load cpan/Module-Load/t/01_Module-Load.t Module::Load tests cpan/Module-Load/t/02_Module-Load.t Module::Load tests @@ -1584,23 +1742,13 @@ cpan/Module-Metadata/t/lib/GeneratePackage.pm cpan/Module-Metadata/t/metadata.t cpan/Module-Metadata/t/taint.t cpan/Module-Metadata/t/version.t -cpan/NEXT/lib/NEXT.pm Pseudo-class NEXT for method redispatch -cpan/NEXT/t/actual.t NEXT -cpan/NEXT/t/actuns.t NEXT +cpan/NEXT/lib/NEXT.pm Pseudo-class NEXT for method redispatch +cpan/NEXT/t/actual.t NEXT +cpan/NEXT/t/actuns.t NEXT cpan/NEXT/t/dynamically_scoped_regex_vars.t NEXT -cpan/NEXT/t/next.t NEXT -cpan/NEXT/t/stringify.t NEXT -cpan/NEXT/t/unseen.t NEXT -cpan/OpenBSD-MkTemp/lib/OpenBSD/MkTemp.pm OpenBSD::MkTemp -cpan/OpenBSD-MkTemp/MkTemp.xs OpenBSD::MkTemp -cpan/OpenBSD-MkTemp/README OpenBSD::MkTemp Readme -cpan/OpenBSD-MkTemp/t/OpenBSD-MkTemp.t OpenBSD::MkTemp test file -cpan/OpenBSD-Pledge/lib/OpenBSD/Pledge.pm OpenBSD::Pledge -cpan/OpenBSD-Pledge/Pledge.xs OpenBSD::Pledge -cpan/OpenBSD-Pledge/t/OpenBSD-Pledge.t OpenBSD::Pledge test file -cpan/OpenBSD-Unveil/lib/OpenBSD/Unveil.pm OpenBSD::Unveil -cpan/OpenBSD-Unveil/t/OpenBSD-Unveil.t OpenBSD::Unveil test file -cpan/OpenBSD-Unveil/Unveil.xs OpenBSD::Unveil +cpan/NEXT/t/next.t NEXT +cpan/NEXT/t/stringify.t NEXT +cpan/NEXT/t/unseen.t NEXT cpan/Params-Check/lib/Params/Check.pm Params::Check cpan/Params-Check/t/01_Params-Check.t Params::Check tests cpan/parent/lib/parent.pm Establish an ISA relationship with base classes at compile time @@ -1617,19 +1765,19 @@ cpan/parent/t/parent-classfromfile.t tests for parent.pm cpan/parent/t/parent-pmc.t tests for parent.pm cpan/parent/t/parent-returns-false.t tests for parent.pm cpan/parent/t/rt62341.t.disabled test files for parent.pm -cpan/Perl-OSType/lib/Perl/OSType.pm Perl::OSType -cpan/Perl-OSType/t/OSType.t Perl::OSType -cpan/perlfaq/lib/perlfaq.pm Perl frequently asked questions -cpan/perlfaq/lib/perlfaq.pod Perl frequently asked questions +cpan/Perl-OSType/lib/Perl/OSType.pm Perl::OSType +cpan/Perl-OSType/t/OSType.t Perl::OSType +cpan/perlfaq/lib/perlfaq.pm Perl frequently asked questions +cpan/perlfaq/lib/perlfaq.pod Perl frequently asked questions cpan/perlfaq/lib/perlfaq1.pod General Questions About Perl -cpan/perlfaq/lib/perlfaq2.pod Obtaining and Learning about Perl -cpan/perlfaq/lib/perlfaq3.pod Programming Tools -cpan/perlfaq/lib/perlfaq4.pod Data Manipulation -cpan/perlfaq/lib/perlfaq5.pod Files and Formats -cpan/perlfaq/lib/perlfaq6.pod Regexes -cpan/perlfaq/lib/perlfaq7.pod Perl Language Issues -cpan/perlfaq/lib/perlfaq8.pod System Interaction -cpan/perlfaq/lib/perlfaq9.pod Networking +cpan/perlfaq/lib/perlfaq2.pod Obtaining and Learning about Perl +cpan/perlfaq/lib/perlfaq3.pod Programming Tools +cpan/perlfaq/lib/perlfaq4.pod Data Manipulation +cpan/perlfaq/lib/perlfaq5.pod Files and Formats +cpan/perlfaq/lib/perlfaq6.pod Regexes +cpan/perlfaq/lib/perlfaq7.pod Perl Language Issues +cpan/perlfaq/lib/perlfaq8.pod System Interaction +cpan/perlfaq/lib/perlfaq9.pod Networking cpan/perlfaq/lib/perlglossary.pod Perl Glossary cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm PerlIO::via::QuotedPrint cpan/PerlIO-via-QuotedPrint/t/changes.t @@ -1732,10 +1880,10 @@ cpan/Pod-Simple/t/corpus/8859_7.pod Pod::Simple test file cpan/Pod-Simple/t/corpus/8859_7.xml Pod::Simple test file cpan/Pod-Simple/t/corpus/cp1256.txt Pod::Simple test file cpan/Pod-Simple/t/corpus/cp1256.xml Pod::Simple test file -cpan/Pod-Simple/t/corpus/enc_char_directive.txt Pod::Simple test file -cpan/Pod-Simple/t/corpus/enc_char_directive.xml Pod::Simple test file -cpan/Pod-Simple/t/corpus/enc_char_wrong_directive.txt Pod::Simple test file -cpan/Pod-Simple/t/corpus/enc_char_wrong_directive.xml Pod::Simple test file +cpan/Pod-Simple/t/corpus/enc_char_directive.txt Pod::Simple test file +cpan/Pod-Simple/t/corpus/enc_char_directive.xml Pod::Simple test file +cpan/Pod-Simple/t/corpus/enc_char_wrong_directive.txt Pod::Simple test file +cpan/Pod-Simple/t/corpus/enc_char_wrong_directive.xml Pod::Simple test file cpan/Pod-Simple/t/corpus/encwarn01.txt Pod::Simple test file cpan/Pod-Simple/t/corpus/encwarn01.xml Pod::Simple test file cpan/Pod-Simple/t/corpus/encwarn02.txt Pod::Simple test file @@ -1906,22 +2054,30 @@ cpan/Pod-Usage/t/pod/testcmp.pl cpan/Pod-Usage/t/pod/testp2pt.pl cpan/Pod-Usage/t/pod/usage.pod cpan/Pod-Usage/t/pod/usage2.pod -cpan/podlators/lib/Pod/Man.pm Convert POD data to *roff -cpan/podlators/lib/Pod/ParseLink.pm Perl an L<> formatting code in POD text -cpan/podlators/lib/Pod/Text.pm Pod-Parser - convert POD data to formatted ASCII text -cpan/podlators/lib/Pod/Text/Color.pm Convert POD data to color ASCII text -cpan/podlators/lib/Pod/Text/Overstrike.pm Convert POD data to formatted overstrike text -cpan/podlators/lib/Pod/Text/Termcap.pm Convert POD data to ASCII text with format escapes -cpan/podlators/Makefile.PL podlators Makefile.PL -cpan/podlators/scripts/pod2man.PL Translator to turn pod into manpage -cpan/podlators/scripts/pod2text.PL Translator to turn pod into text -cpan/podlators/t/data/basic.cap podlators test podlators test -cpan/podlators/t/data/basic.clr podlators test -cpan/podlators/t/data/basic.man podlators test -cpan/podlators/t/data/basic.ovr podlators test -cpan/podlators/t/data/basic.pod podlators test -cpan/podlators/t/data/basic.txt podlators test -cpan/podlators/t/data/perl.conf podlators test +cpan/podlators/docs/docknot.yaml +cpan/podlators/lib/Pod/Man.pm Convert POD data to *roff +cpan/podlators/lib/Pod/ParseLink.pm Perl an L<> formatting code in POD text +cpan/podlators/lib/Pod/Text.pm Pod-Parser - convert POD data to formatted ASCII text +cpan/podlators/lib/Pod/Text/Color.pm Convert POD data to color ASCII text +cpan/podlators/lib/Pod/Text/Overstrike.pm Convert POD data to formatted overstrike text +cpan/podlators/lib/Pod/Text/Termcap.pm Convert POD data to ASCII text with format escapes +cpan/podlators/Makefile.PL podlators Makefile.PL +cpan/podlators/scripts/pod2man.PL Translator to turn pod into manpage +cpan/podlators/scripts/pod2text.PL Translator to turn pod into text +cpan/podlators/t/data/basic.cap podlators test +cpan/podlators/t/data/basic.clr podlators test +cpan/podlators/t/data/basic.man podlators test +cpan/podlators/t/data/basic.ovr podlators test +cpan/podlators/t/data/basic.pod podlators test +cpan/podlators/t/data/basic.txt podlators test +cpan/podlators/t/data/man/encoding.groff +cpan/podlators/t/data/man/encoding.pod +cpan/podlators/t/data/man/encoding.roff +cpan/podlators/t/data/man/encoding.utf8 +cpan/podlators/t/data/perl.conf podlators test +cpan/podlators/t/data/perlcriticrc +cpan/podlators/t/data/perltidyrc +cpan/podlators/t/data/regenerate-data cpan/podlators/t/data/snippets/color/escape-wrapping cpan/podlators/t/data/snippets/color/tag-width cpan/podlators/t/data/snippets/color/tag-wrapping @@ -1945,9 +2101,19 @@ cpan/podlators/t/data/snippets/man/eth cpan/podlators/t/data/snippets/man/fixed-font cpan/podlators/t/data/snippets/man/fixed-font-in-item cpan/podlators/t/data/snippets/man/for-blocks +cpan/podlators/t/data/snippets/man/guesswork +cpan/podlators/t/data/snippets/man/guesswork-all +cpan/podlators/t/data/snippets/man/guesswork-no-quoting +cpan/podlators/t/data/snippets/man/guesswork-none +cpan/podlators/t/data/snippets/man/guesswork-partial +cpan/podlators/t/data/snippets/man/guesswork-quoting cpan/podlators/t/data/snippets/man/hyphen-in-s cpan/podlators/t/data/snippets/man/iso-8859-1 +cpan/podlators/t/data/snippets/man/iso-8859-1-error-die +cpan/podlators/t/data/snippets/man/iso-8859-1-error-pod +cpan/podlators/t/data/snippets/man/iso-8859-1-roff cpan/podlators/t/data/snippets/man/item-fonts +cpan/podlators/t/data/snippets/man/language cpan/podlators/t/data/snippets/man/link-quoting cpan/podlators/t/data/snippets/man/link-to-url cpan/podlators/t/data/snippets/man/long-quote @@ -1955,29 +2121,32 @@ cpan/podlators/t/data/snippets/man/lquote-and-quote cpan/podlators/t/data/snippets/man/lquote-rquote cpan/podlators/t/data/snippets/man/markup-in-name cpan/podlators/t/data/snippets/man/multiline-x +cpan/podlators/t/data/snippets/man/naive +cpan/podlators/t/data/snippets/man/naive-groff cpan/podlators/t/data/snippets/man/name-guesswork +cpan/podlators/t/data/snippets/man/name-quotes +cpan/podlators/t/data/snippets/man/name-quotes-none cpan/podlators/t/data/snippets/man/nested-lists cpan/podlators/t/data/snippets/man/newlines-in-c cpan/podlators/t/data/snippets/man/non-ascii +cpan/podlators/t/data/snippets/man/nonbreaking-space-l cpan/podlators/t/data/snippets/man/not-bullet cpan/podlators/t/data/snippets/man/not-numbers cpan/podlators/t/data/snippets/man/nourls -cpan/podlators/t/data/snippets/man/paired-quotes cpan/podlators/t/data/snippets/man/periods cpan/podlators/t/data/snippets/man/quote-escaping cpan/podlators/t/data/snippets/man/rquote-none -cpan/podlators/t/data/snippets/man/small-caps-magic cpan/podlators/t/data/snippets/man/soft-hyphens cpan/podlators/t/data/snippets/man/trailing-space cpan/podlators/t/data/snippets/man/true-false -cpan/podlators/t/data/snippets/man/uppercase-license cpan/podlators/t/data/snippets/man/utf8-nonbreaking cpan/podlators/t/data/snippets/man/utf8-verbatim cpan/podlators/t/data/snippets/man/x-whitespace cpan/podlators/t/data/snippets/man/x-whitespace-entry +cpan/podlators/t/data/snippets/man/zero-width-space cpan/podlators/t/data/snippets/overstrike/tag-width cpan/podlators/t/data/snippets/overstrike/wrapping -cpan/podlators/t/data/snippets/README podlators test +cpan/podlators/t/data/snippets/README.md cpan/podlators/t/data/snippets/termcap/escape-wrapping cpan/podlators/t/data/snippets/termcap/tag-width cpan/podlators/t/data/snippets/termcap/tag-wrapping @@ -1987,7 +2156,7 @@ cpan/podlators/t/data/snippets/termcap/wrapping cpan/podlators/t/data/snippets/text/alt cpan/podlators/t/data/snippets/text/c-with-spaces cpan/podlators/t/data/snippets/text/code -cpan/podlators/t/data/snippets/text/cpp podlators test +cpan/podlators/t/data/snippets/text/cpp podlators test cpan/podlators/t/data/snippets/text/empty cpan/podlators/t/data/snippets/text/error-die cpan/podlators/t/data/snippets/text/error-none @@ -1996,12 +2165,22 @@ cpan/podlators/t/data/snippets/text/error-pod cpan/podlators/t/data/snippets/text/error-stderr cpan/podlators/t/data/snippets/text/error-stderr-opt cpan/podlators/t/data/snippets/text/for +cpan/podlators/t/data/snippets/text/guesswork-no-quoting +cpan/podlators/t/data/snippets/text/guesswork-quoting cpan/podlators/t/data/snippets/text/iso-8859-1 +cpan/podlators/t/data/snippets/text/iso-8859-1-error-die +cpan/podlators/t/data/snippets/text/iso-8859-1-error-pod +cpan/podlators/t/data/snippets/text/iso-8859-1-utf8 cpan/podlators/t/data/snippets/text/late-encoding cpan/podlators/t/data/snippets/text/link-rt cpan/podlators/t/data/snippets/text/link-url cpan/podlators/t/data/snippets/text/margin +cpan/podlators/t/data/snippets/text/naive +cpan/podlators/t/data/snippets/text/name-quotes +cpan/podlators/t/data/snippets/text/name-quotes-none +cpan/podlators/t/data/snippets/text/non-latin cpan/podlators/t/data/snippets/text/nonbreaking-space +cpan/podlators/t/data/snippets/text/nonbreaking-space-l cpan/podlators/t/data/snippets/text/nourls cpan/podlators/t/data/snippets/text/periods cpan/podlators/t/data/snippets/text/quotes-opt @@ -2010,37 +2189,41 @@ cpan/podlators/t/data/snippets/text/sentence-spacing cpan/podlators/t/data/snippets/text/utf8 cpan/podlators/t/data/snippets/text/utf8-iso cpan/podlators/t/data/snippets/text/verbatim -cpan/podlators/t/data/termcap podlators test -cpan/podlators/t/docs/pod.t podlators test -cpan/podlators/t/docs/pod-spelling.t podlators test -cpan/podlators/t/docs/spdx-license.t podlators test -cpan/podlators/t/docs/synopsis.t podlators test -cpan/podlators/t/general/basic.t podlators test -cpan/podlators/t/general/filehandle.t podlators test -cpan/podlators/t/general/pod-parser.t podlators test -cpan/podlators/t/lib/Test/Podlators.pm podlators test -cpan/podlators/t/lib/Test/RRA.pm podlators test -cpan/podlators/t/lib/Test/RRA/Config.pm podlators test -cpan/podlators/t/lib/Test/RRA/ModuleVersion.pm podlators test -cpan/podlators/t/man/devise-date.t podlators test -cpan/podlators/t/man/devise-title.t podlators test -cpan/podlators/t/man/empty.t podlators test -cpan/podlators/t/man/heading.t podlators test -cpan/podlators/t/man/iso-8859-1.t podlators test -cpan/podlators/t/man/no-encode.t podlators test -cpan/podlators/t/man/snippets.t podlators test -cpan/podlators/t/man/utf8-io.t podlators test -cpan/podlators/t/parselink/basic.t podlators test +cpan/podlators/t/data/termcap podlators test +cpan/podlators/t/docs/changes.t +cpan/podlators/t/docs/pod.t podlators test +cpan/podlators/t/docs/pod-spelling.t podlators test +cpan/podlators/t/docs/spdx-license.t podlators test +cpan/podlators/t/docs/synopsis.t podlators test +cpan/podlators/t/general/basic.t podlators test +cpan/podlators/t/general/filehandle.t podlators test +cpan/podlators/t/general/pod-parser.t podlators test +cpan/podlators/t/lib/Test/Podlators.pm podlators test +cpan/podlators/t/lib/Test/RRA.pm podlators test +cpan/podlators/t/lib/Test/RRA/Config.pm podlators test +cpan/podlators/t/lib/Test/RRA/ModuleVersion.pm podlators test +cpan/podlators/t/man/devise-date.t podlators test +cpan/podlators/t/man/devise-title.t podlators test +cpan/podlators/t/man/empty.t podlators test +cpan/podlators/t/man/encoding.t +cpan/podlators/t/man/heading.t podlators test +cpan/podlators/t/man/iso-8859-1.t podlators test +cpan/podlators/t/man/no-encode.t podlators test +cpan/podlators/t/man/snippets.t podlators test +cpan/podlators/t/man/utf8-io.t podlators test +cpan/podlators/t/parselink/basic.t podlators test +cpan/podlators/t/style/critic.t +cpan/podlators/t/style/kwalitee.t cpan/podlators/t/style/minimum-version.t podlators test -cpan/podlators/t/style/module-version.t podlators test +cpan/podlators/t/style/module-version.t podlators test cpan/podlators/t/style/obsolete-strings.t -cpan/podlators/t/style/strict.t podlators test -cpan/podlators/t/text/color.t podlators test +cpan/podlators/t/style/strict.t podlators test +cpan/podlators/t/text/color.t podlators test cpan/podlators/t/text/invalid.t cpan/podlators/t/text/iso-8859-1.t -cpan/podlators/t/text/overstrike.t podlators test +cpan/podlators/t/text/overstrike.t podlators test cpan/podlators/t/text/snippets.t -cpan/podlators/t/text/termcap.t podlators test +cpan/podlators/t/text/termcap.t podlators test cpan/podlators/t/text/utf8-io.t cpan/Scalar-List-Utils/lib/List/Util.pm List::Util cpan/Scalar-List-Utils/lib/List/Util/XS.pm List::Util @@ -2132,556 +2315,545 @@ cpan/Term-ANSIColor/t/module/true-color.t cpan/Term-ANSIColor/t/taint/basic.t cpan/Term-Cap/Cap.pm Perl module supporting termcap usage cpan/Term-Cap/test.pl See if Term::Cap works -cpan/Term-ReadKey/Changes Term::ReadKey -cpan/Term-ReadKey/Configure.pm Term::ReadKey -cpan/Term-ReadKey/example/test.pl Term::ReadKey -cpan/Term-ReadKey/genchars.pl Term::ReadKey -cpan/Term-ReadKey/Makefile.PL Term::ReadKey -cpan/Term-ReadKey/ppport.h Term::ReadKey -cpan/Term-ReadKey/ReadKey.xs Term::ReadKey -cpan/Term-ReadKey/ReadKey.pm.PL Term::ReadKey -cpan/Term-ReadKey/README Term::ReadKey -cpan/Term-ReadKey/t/01_basic.t Term::ReadKey -cpan/Term-ReadKey/t/02_terminal_functions.t Term::ReadKey -cpan/Test-Harness/bin/prove The prove harness utility -cpan/Test-Harness/lib/App/Prove.pm Gubbins for the prove utility -cpan/Test-Harness/lib/App/Prove/State.pm Gubbins for the prove utility -cpan/Test-Harness/lib/App/Prove/State/Result.pm Gubbins for the prove utility -cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm Gubbins for the prove utility -cpan/Test-Harness/lib/TAP/Base.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Formatter/Base.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Formatter/Color.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Formatter/Console.pm A parser for Test Anything Protocol +cpan/Test-Harness/bin/prove The prove harness utility +cpan/Test-Harness/lib/App/Prove.pm Gubbins for the prove utility +cpan/Test-Harness/lib/App/Prove/State.pm Gubbins for the prove utility +cpan/Test-Harness/lib/App/Prove/State/Result.pm Gubbins for the prove utility +cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm Gubbins for the prove utility +cpan/Test-Harness/lib/TAP/Base.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Formatter/Base.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Formatter/Color.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Formatter/Console.pm A parser for Test Anything Protocol cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Formatter/File.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Formatter/Session.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Harness.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Formatter/File.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Formatter/Session.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Harness.pm A parser for Test Anything Protocol cpan/Test-Harness/lib/TAP/Harness/Beyond.pod -cpan/Test-Harness/lib/TAP/Harness/Env.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Object.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Grammar.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Iterator.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/Source.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Harness/Env.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Object.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Grammar.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Iterator.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/Source.pm A parser for Test Anything Protocol cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm A parser for Test Anything Protocol cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm -cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm A parser for Test Anything Protocol -cpan/Test-Harness/lib/Test/Harness.pm A test harness -cpan/Test-Harness/t/aggregator.t Test::Harness test -cpan/Test-Harness/t/bailout.t Test::Harness test -cpan/Test-Harness/t/base.t Test::Harness test -cpan/Test-Harness/t/callbacks.t Test::Harness test -cpan/Test-Harness/t/compat/env.t Test::Harness test -cpan/Test-Harness/t/compat/env_opts.t Test::Harness test -cpan/Test-Harness/t/compat/failure.t Test::Harness test -cpan/Test-Harness/t/compat/inc-propagation.t Test::Harness test -cpan/Test-Harness/t/compat/inc_taint.t Test::Harness test -cpan/Test-Harness/t/compat/nonumbers.t Test::Harness test -cpan/Test-Harness/t/compat/regression.t Test::Harness test +cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm A parser for Test Anything Protocol +cpan/Test-Harness/lib/Test/Harness.pm A test harness +cpan/Test-Harness/t/aggregator.t Test::Harness test +cpan/Test-Harness/t/bailout.t Test::Harness test +cpan/Test-Harness/t/base.t Test::Harness test +cpan/Test-Harness/t/callbacks.t Test::Harness test +cpan/Test-Harness/t/compat/env.t Test::Harness test +cpan/Test-Harness/t/compat/env_opts.t Test::Harness test +cpan/Test-Harness/t/compat/failure.t Test::Harness test +cpan/Test-Harness/t/compat/inc-propagation.t Test::Harness test +cpan/Test-Harness/t/compat/inc_taint.t Test::Harness test +cpan/Test-Harness/t/compat/nonumbers.t Test::Harness test +cpan/Test-Harness/t/compat/regression.t Test::Harness test cpan/Test-Harness/t/compat/subclass.t Test::Harness test -cpan/Test-Harness/t/compat/switches.t Test::Harness test -cpan/Test-Harness/t/compat/test-harness-compat.t Test::Harness test -cpan/Test-Harness/t/compat/version.t Test::Harness test -cpan/Test-Harness/t/console.t Test::Harness test -cpan/Test-Harness/t/data/catme.1 Test data for Test::Harness -cpan/Test-Harness/t/data/proverc Test data for Test::Harness -cpan/Test-Harness/t/data/sample.yml Test data for Test::Harness +cpan/Test-Harness/t/compat/switches.t Test::Harness test +cpan/Test-Harness/t/compat/test-harness-compat.t Test::Harness test +cpan/Test-Harness/t/compat/version.t Test::Harness test +cpan/Test-Harness/t/console.t Test::Harness test +cpan/Test-Harness/t/data/catme.1 Test data for Test::Harness +cpan/Test-Harness/t/data/proverc Test data for Test::Harness +cpan/Test-Harness/t/data/sample.yml Test data for Test::Harness cpan/Test-Harness/t/env_opts.t -cpan/Test-Harness/t/errors.t Test::Harness test -cpan/Test-Harness/t/file.t Test::Harness test -cpan/Test-Harness/t/glob-to-regexp.t Test::Harness test -cpan/Test-Harness/t/grammar.t Test::Harness test -cpan/Test-Harness/t/harness.t Test::Harness test -cpan/Test-Harness/t/harness-bailout.t Test::Harness test -cpan/Test-Harness/t/harness-subclass.t Test::Harness test +cpan/Test-Harness/t/errors.t Test::Harness test +cpan/Test-Harness/t/file.t Test::Harness test +cpan/Test-Harness/t/glob-to-regexp.t Test::Harness test +cpan/Test-Harness/t/grammar.t Test::Harness test +cpan/Test-Harness/t/harness.t Test::Harness test +cpan/Test-Harness/t/harness-bailout.t Test::Harness test +cpan/Test-Harness/t/harness-subclass.t Test::Harness test cpan/Test-Harness/t/iterator_factory.t Test::Harness test -cpan/Test-Harness/t/iterators.t Test::Harness test -cpan/Test-Harness/t/lib/App/Prove/Plugin/Dummy.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/App/Prove/Plugin/Dummy2.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/Dev/Null.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/EmptyParser.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/IO/c55Capture.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/MyCustom.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/MyFileSourceHandler.pm Test::Harness test -cpan/Test-Harness/t/lib/MyGrammar.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/MyIterator.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/MyPerlSourceHandler.pm Test::Harness test -cpan/Test-Harness/t/lib/MyResult.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/MyResultFactory.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/MySourceHandler.pm Test::Harness test -cpan/Test-Harness/t/lib/NoFork.pm Module for testing Test::Harness -cpan/Test-Harness/t/lib/NOP.pm Module for testing Test::Harness +cpan/Test-Harness/t/iterators.t Test::Harness test +cpan/Test-Harness/t/lib/App/Prove/Plugin/Dummy.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/App/Prove/Plugin/Dummy2.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/Dev/Null.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/EmptyParser.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/IO/c55Capture.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/MyCustom.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/MyFileSourceHandler.pm Test::Harness test +cpan/Test-Harness/t/lib/MyGrammar.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/MyIterator.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/MyPerlSourceHandler.pm Test::Harness test +cpan/Test-Harness/t/lib/MyResult.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/MyResultFactory.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/MySourceHandler.pm Test::Harness test +cpan/Test-Harness/t/lib/NoFork.pm Module for testing Test::Harness +cpan/Test-Harness/t/lib/NOP.pm Module for testing Test::Harness cpan/Test-Harness/t/lib/TAP/Harness/TestSubclass.pm -cpan/Test-Harness/t/lib/TAP/Parser/SubclassTest.pm Module for testing Test::Harness -cpan/Test-Harness/t/multiplexer.t Test::Harness test -cpan/Test-Harness/t/nested.t Test::Harness test -cpan/Test-Harness/t/nofork.t Test::Harness test -cpan/Test-Harness/t/nofork-mux.t Test::Harness test -cpan/Test-Harness/t/object.t Test::Harness test -cpan/Test-Harness/t/parse.t Test::Harness test -cpan/Test-Harness/t/parser-config.t Test::Harness test -cpan/Test-Harness/t/parser-subclass.t Test::Harness test -cpan/Test-Harness/t/perl5lib.t Test::Harness test -cpan/Test-Harness/t/premature-bailout.t Test::Harness test -cpan/Test-Harness/t/process.t Test::Harness test -cpan/Test-Harness/t/prove.t Test::Harness test -cpan/Test-Harness/t/proverc.t Test::Harness test -cpan/Test-Harness/t/proverc/emptyexec Test data for Test::Harness -cpan/Test-Harness/t/proverun.t Test::Harness test +cpan/Test-Harness/t/lib/TAP/Parser/SubclassTest.pm Module for testing Test::Harness +cpan/Test-Harness/t/multiplexer.t Test::Harness test +cpan/Test-Harness/t/nested.t Test::Harness test +cpan/Test-Harness/t/nofork.t Test::Harness test +cpan/Test-Harness/t/nofork-mux.t Test::Harness test +cpan/Test-Harness/t/object.t Test::Harness test +cpan/Test-Harness/t/parse.t Test::Harness test +cpan/Test-Harness/t/parser-config.t Test::Harness test +cpan/Test-Harness/t/parser-subclass.t Test::Harness test +cpan/Test-Harness/t/perl5lib.t Test::Harness test +cpan/Test-Harness/t/premature-bailout.t Test::Harness test +cpan/Test-Harness/t/process.t Test::Harness test +cpan/Test-Harness/t/prove.t Test::Harness test +cpan/Test-Harness/t/proverc.t Test::Harness test +cpan/Test-Harness/t/proverc/emptyexec Test data for Test::Harness +cpan/Test-Harness/t/proverun.t Test::Harness test cpan/Test-Harness/t/proveversion.t Test::Harness test -cpan/Test-Harness/t/regression.t Test::Harness test -cpan/Test-Harness/t/results.t Test::Harness test +cpan/Test-Harness/t/regression.t Test::Harness test +cpan/Test-Harness/t/results.t Test::Harness test cpan/Test-Harness/t/rulesfile.t -cpan/Test-Harness/t/sample-tests/bailout Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/bignum Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/bignum_many Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/combined Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/combined_compat Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/delayed Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/descriptive Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/descriptive_trailing Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/die Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/die_head_end Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/die_last_minute Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/die_unfinished Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/duplicates Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/echo Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/empty Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/escape_eol Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/escape_hash Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/head_end Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/head_fail Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/inc_taint Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/junk_before_plan Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/lone_not_bug Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/no_nums Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/no_output Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/out_err_mix Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/out_of_order Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/schwern Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/schwern-todo-quiet Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/segfault Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/sequence_misparse Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/shbang_misparse Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/simple Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/simple_fail Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/simple_yaml Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/simple_yaml_missing_version13 Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/skip Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/skip_nomsg Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/skipall Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/skipall_nomsg Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/skipall_v13 Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/space_after_plan Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/bailout Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/bignum Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/bignum_many Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/combined Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/combined_compat Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/delayed Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/descriptive Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/descriptive_trailing Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/die Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/die_head_end Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/die_last_minute Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/die_unfinished Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/duplicates Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/echo Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/empty Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/escape_eol Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/escape_hash Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/head_end Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/head_fail Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/inc_taint Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/junk_before_plan Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/lone_not_bug Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/no_nums Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/no_output Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/out_err_mix Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/out_of_order Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/schwern Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/schwern-todo-quiet Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/segfault Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/sequence_misparse Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/shbang_misparse Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/simple Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/simple_fail Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/simple_yaml Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/simple_yaml_missing_version13 Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/skip Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/skip_nomsg Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/skipall Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/skipall_nomsg Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/skipall_v13 Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/space_after_plan Test data for Test::Harness cpan/Test-Harness/t/sample-tests/space_after_plan_v13 -cpan/Test-Harness/t/sample-tests/stdout_stderr Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/strict Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/switches Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/taint Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/taint_warn Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/todo Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/todo_inline Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/todo_misparse Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/too_many Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/version_good Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/version_late Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/version_old Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/vms_nit Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/with_comments Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/yaml_late_plan Test data for Test::Harness -cpan/Test-Harness/t/sample-tests/zero_valid Test data for Test::Harness -cpan/Test-Harness/t/scheduler.t Test::Harness test -cpan/Test-Harness/t/source.t Test::Harness test +cpan/Test-Harness/t/sample-tests/stdout_stderr Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/strict Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/switches Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/taint Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/taint_warn Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/todo Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/todo_inline Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/todo_misparse Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/too_many Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/version_good Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/version_late Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/version_old Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/vms_nit Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/with_comments Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/yaml_late_plan Test data for Test::Harness +cpan/Test-Harness/t/sample-tests/zero_valid Test data for Test::Harness +cpan/Test-Harness/t/scheduler.t Test::Harness test +cpan/Test-Harness/t/source.t Test::Harness test cpan/Test-Harness/t/source_handler.t Test::Harness test -cpan/Test-Harness/t/source_tests/harness Test data for Test::Harness -cpan/Test-Harness/t/source_tests/harness_badtap Test data for Test::Harness -cpan/Test-Harness/t/source_tests/harness_complain Test data for Test::Harness -cpan/Test-Harness/t/source_tests/harness_directives Test data for Test::Harness -cpan/Test-Harness/t/source_tests/harness_failure Test data for Test::Harness -cpan/Test-Harness/t/source_tests/psql.bat Test::Harness test -cpan/Test-Harness/t/source_tests/source Test data for Test::Harness -cpan/Test-Harness/t/source_tests/source.1 Test::Harness test -cpan/Test-Harness/t/source_tests/source.bat Test::Harness test -cpan/Test-Harness/t/source_tests/source.pl Test::Harness test -cpan/Test-Harness/t/source_tests/source.sh Test::Harness test -cpan/Test-Harness/t/source_tests/source.t Test::Harness test -cpan/Test-Harness/t/source_tests/source.tap Test::Harness test -cpan/Test-Harness/t/source_tests/source_args.sh Test::Harness test +cpan/Test-Harness/t/source_tests/harness Test data for Test::Harness +cpan/Test-Harness/t/source_tests/harness_badtap Test data for Test::Harness +cpan/Test-Harness/t/source_tests/harness_complain Test data for Test::Harness +cpan/Test-Harness/t/source_tests/harness_directives Test data for Test::Harness +cpan/Test-Harness/t/source_tests/harness_failure Test data for Test::Harness +cpan/Test-Harness/t/source_tests/psql.bat Test::Harness test +cpan/Test-Harness/t/source_tests/source Test data for Test::Harness +cpan/Test-Harness/t/source_tests/source.1 Test::Harness test +cpan/Test-Harness/t/source_tests/source.bat Test::Harness test +cpan/Test-Harness/t/source_tests/source.pl Test::Harness test +cpan/Test-Harness/t/source_tests/source.sh Test::Harness test +cpan/Test-Harness/t/source_tests/source.t Test::Harness test +cpan/Test-Harness/t/source_tests/source.tap Test::Harness test +cpan/Test-Harness/t/source_tests/source_args.sh Test::Harness test cpan/Test-Harness/t/source_tests/test.tap -cpan/Test-Harness/t/spool.t Test::Harness test -cpan/Test-Harness/t/state.t Test::Harness test -cpan/Test-Harness/t/state_results.t Test::Harness test -cpan/Test-Harness/t/streams.t Test::Harness test -cpan/Test-Harness/t/subclass_tests/non_perl_source Test data for Test::Harness -cpan/Test-Harness/t/subclass_tests/perl_source Test data for Test::Harness -cpan/Test-Harness/t/taint.t Test::Harness test -cpan/Test-Harness/t/testargs.t Test::Harness test -cpan/Test-Harness/t/unicode.t Test::Harness test -cpan/Test-Harness/t/yamlish.t Test::Harness test -cpan/Test-Harness/t/yamlish-output.t Test::Harness test -cpan/Test-Harness/t/yamlish-writer.t Test::Harness test -cpan/Test-Simple/lib/ok.pm -cpan/Test-Simple/lib/Test/Builder.pm -cpan/Test-Simple/lib/Test/Builder/Formatter.pm -cpan/Test-Simple/lib/Test/Builder/IO/Scalar.pm -cpan/Test-Simple/lib/Test/Builder/Module.pm -cpan/Test-Simple/lib/Test/Builder/Tester.pm -cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm -cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm -cpan/Test-Simple/lib/Test/More.pm -cpan/Test-Simple/lib/Test/Simple.pm -cpan/Test-Simple/lib/Test/Tester.pm -cpan/Test-Simple/lib/Test/Tester/Capture.pm -cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm -cpan/Test-Simple/lib/Test/Tester/Delegate.pm -cpan/Test-Simple/lib/Test/Tutorial.pod -cpan/Test-Simple/lib/Test/use/ok.pm -cpan/Test-Simple/lib/Test2.pm -cpan/Test-Simple/lib/Test2/API.pm -cpan/Test-Simple/lib/Test2/API/Breakage.pm -cpan/Test-Simple/lib/Test2/API/Context.pm -cpan/Test-Simple/lib/Test2/API/Instance.pm -cpan/Test-Simple/lib/Test2/API/InterceptResult.pm -cpan/Test-Simple/lib/Test2/API/InterceptResult/Event.pm -cpan/Test-Simple/lib/Test2/API/InterceptResult/Facet.pm -cpan/Test-Simple/lib/Test2/API/InterceptResult/Hub.pm -cpan/Test-Simple/lib/Test2/API/InterceptResult/Squasher.pm -cpan/Test-Simple/lib/Test2/API/Stack.pm -cpan/Test-Simple/lib/Test2/Event.pm -cpan/Test-Simple/lib/Test2/Event/Bail.pm -cpan/Test-Simple/lib/Test2/Event/Diag.pm -cpan/Test-Simple/lib/Test2/Event/Encoding.pm -cpan/Test-Simple/lib/Test2/Event/Exception.pm -cpan/Test-Simple/lib/Test2/Event/Fail.pm -cpan/Test-Simple/lib/Test2/Event/Generic.pm -cpan/Test-Simple/lib/Test2/Event/Note.pm -cpan/Test-Simple/lib/Test2/Event/Ok.pm -cpan/Test-Simple/lib/Test2/Event/Pass.pm -cpan/Test-Simple/lib/Test2/Event/Plan.pm -cpan/Test-Simple/lib/Test2/Event/Skip.pm -cpan/Test-Simple/lib/Test2/Event/Subtest.pm -cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm -cpan/Test-Simple/lib/Test2/Event/V2.pm -cpan/Test-Simple/lib/Test2/Event/Waiting.pm -cpan/Test-Simple/lib/Test2/EventFacet.pm -cpan/Test-Simple/lib/Test2/EventFacet/About.pm -cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm -cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm -cpan/Test-Simple/lib/Test2/EventFacet/Control.pm -cpan/Test-Simple/lib/Test2/EventFacet/Error.pm -cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm -cpan/Test-Simple/lib/Test2/EventFacet/Info.pm -cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm -cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm -cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm -cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm -cpan/Test-Simple/lib/Test2/EventFacet/Render.pm -cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm -cpan/Test-Simple/lib/Test2/Formatter.pm -cpan/Test-Simple/lib/Test2/Formatter/TAP.pm -cpan/Test-Simple/lib/Test2/Hub.pm -cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm -cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm -cpan/Test-Simple/lib/Test2/Hub/Subtest.pm -cpan/Test-Simple/lib/Test2/IPC.pm -cpan/Test-Simple/lib/Test2/IPC/Driver.pm -cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm -cpan/Test-Simple/lib/Test2/Tools/Tiny.pm -cpan/Test-Simple/lib/Test2/Transition.pod -cpan/Test-Simple/lib/Test2/Util.pm -cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm -cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm -cpan/Test-Simple/lib/Test2/Util/HashBase.pm -cpan/Test-Simple/lib/Test2/Util/Trace.pm -cpan/Test-Simple/t/HashBase.t -cpan/Test-Simple/t/Legacy/00test_harness_check.t -cpan/Test-Simple/t/Legacy/01-basic.t -cpan/Test-Simple/t/Legacy/478-cmp_ok_hash.t -cpan/Test-Simple/t/Legacy/auto.t -cpan/Test-Simple/t/Legacy/bad_plan.t -cpan/Test-Simple/t/Legacy/bail_out.t -cpan/Test-Simple/t/Legacy/BEGIN_require_ok.t -cpan/Test-Simple/t/Legacy/BEGIN_use_ok.t -cpan/Test-Simple/t/Legacy/buffer.t -cpan/Test-Simple/t/Legacy/Bugs/600.t -cpan/Test-Simple/t/Legacy/Bugs/629.t -cpan/Test-Simple/t/Legacy/Builder/Builder.t -cpan/Test-Simple/t/Legacy/Builder/carp.t -cpan/Test-Simple/t/Legacy/Builder/create.t -cpan/Test-Simple/t/Legacy/Builder/current_test.t -cpan/Test-Simple/t/Legacy/Builder/current_test_without_plan.t -cpan/Test-Simple/t/Legacy/Builder/details.t -cpan/Test-Simple/t/Legacy/Builder/done_testing.t -cpan/Test-Simple/t/Legacy/Builder/done_testing_double.t -cpan/Test-Simple/t/Legacy/Builder/done_testing_plan_mismatch.t -cpan/Test-Simple/t/Legacy/Builder/done_testing_with_no_plan.t -cpan/Test-Simple/t/Legacy/Builder/done_testing_with_number.t -cpan/Test-Simple/t/Legacy/Builder/done_testing_with_plan.t -cpan/Test-Simple/t/Legacy/Builder/fork_with_new_stdout.t -cpan/Test-Simple/t/Legacy/Builder/has_plan.t -cpan/Test-Simple/t/Legacy/Builder/has_plan2.t -cpan/Test-Simple/t/Legacy/Builder/is_fh.t -cpan/Test-Simple/t/Legacy/Builder/is_passing.t -cpan/Test-Simple/t/Legacy/Builder/maybe_regex.t -cpan/Test-Simple/t/Legacy/Builder/no_diag.t -cpan/Test-Simple/t/Legacy/Builder/no_ending.t -cpan/Test-Simple/t/Legacy/Builder/no_header.t -cpan/Test-Simple/t/Legacy/Builder/no_plan_at_all.t -cpan/Test-Simple/t/Legacy/Builder/ok_obj.t -cpan/Test-Simple/t/Legacy/Builder/output.t -cpan/Test-Simple/t/Legacy/Builder/reset.t -cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t -cpan/Test-Simple/t/Legacy/Builder/try.t -cpan/Test-Simple/t/Legacy/c_flag.t -cpan/Test-Simple/t/Legacy/capture.t -cpan/Test-Simple/t/Legacy/check_tests.t -cpan/Test-Simple/t/Legacy/circular_data.t -cpan/Test-Simple/t/Legacy/cmp_ok.t -cpan/Test-Simple/t/Legacy/depth.t -cpan/Test-Simple/t/Legacy/diag.t -cpan/Test-Simple/t/Legacy/died.t -cpan/Test-Simple/t/Legacy/dont_overwrite_die_handler.t -cpan/Test-Simple/t/Legacy/eq_set.t -cpan/Test-Simple/t/Legacy/exit.t -cpan/Test-Simple/t/Legacy/explain.t -cpan/Test-Simple/t/Legacy/explain_err_vars.t -cpan/Test-Simple/t/Legacy/extra.t -cpan/Test-Simple/t/Legacy/extra_one.t -cpan/Test-Simple/t/Legacy/fail.t -cpan/Test-Simple/t/Legacy/fail-like.t -cpan/Test-Simple/t/Legacy/fail-more.t -cpan/Test-Simple/t/Legacy/fail_one.t -cpan/Test-Simple/t/Legacy/filehandles.t -cpan/Test-Simple/t/Legacy/fork.t -cpan/Test-Simple/t/Legacy/harness_active.t -cpan/Test-Simple/t/Legacy/import.t -cpan/Test-Simple/t/Legacy/is_deeply_dne_bug.t -cpan/Test-Simple/t/Legacy/is_deeply_fail.t -cpan/Test-Simple/t/Legacy/is_deeply_with_threads.t -cpan/Test-Simple/t/Legacy/missing.t -cpan/Test-Simple/t/Legacy/More.t -cpan/Test-Simple/t/Legacy/new_ok.t -cpan/Test-Simple/t/Legacy/no_log_results.t -cpan/Test-Simple/t/Legacy/no_plan.t -cpan/Test-Simple/t/Legacy/no_tests.t -cpan/Test-Simple/t/Legacy/note.t -cpan/Test-Simple/t/Legacy/overload.t -cpan/Test-Simple/t/Legacy/overload_threads.t -cpan/Test-Simple/t/Legacy/plan.t -cpan/Test-Simple/t/Legacy/plan_bad.t -cpan/Test-Simple/t/Legacy/plan_is_noplan.t -cpan/Test-Simple/t/Legacy/plan_no_plan.t -cpan/Test-Simple/t/Legacy/plan_shouldnt_import.t -cpan/Test-Simple/t/Legacy/plan_skip_all.t -cpan/Test-Simple/t/Legacy/Regression/637.t -cpan/Test-Simple/t/Legacy/Regression/683_thread_todo.t -cpan/Test-Simple/t/Legacy/Regression/6_cmp_ok.t -cpan/Test-Simple/t/Legacy/Regression/736_use_ok.t -cpan/Test-Simple/t/Legacy/Regression/789-read-only.t -cpan/Test-Simple/t/Legacy/Regression/870-experimental-warnings.t -cpan/Test-Simple/t/Legacy/Regression/is_capture.t -cpan/Test-Simple/t/Legacy/require_ok.t -cpan/Test-Simple/t/Legacy/run_test.t -cpan/Test-Simple/t/Legacy/simple.t -cpan/Test-Simple/t/Legacy/Simple/load.t -cpan/Test-Simple/t/Legacy/skip.t -cpan/Test-Simple/t/Legacy/skipall.t -cpan/Test-Simple/t/Legacy/strays.t -cpan/Test-Simple/t/Legacy/subtest/args.t -cpan/Test-Simple/t/Legacy/subtest/bail_out.t -cpan/Test-Simple/t/Legacy/subtest/basic.t -cpan/Test-Simple/t/Legacy/subtest/callback.t -cpan/Test-Simple/t/Legacy/subtest/die.t -cpan/Test-Simple/t/Legacy/subtest/do.t -cpan/Test-Simple/t/Legacy/subtest/events.t -cpan/Test-Simple/t/Legacy/subtest/for_do_t.test -cpan/Test-Simple/t/Legacy/subtest/fork.t -cpan/Test-Simple/t/Legacy/subtest/implicit_done.t -cpan/Test-Simple/t/Legacy/subtest/line_numbers.t -cpan/Test-Simple/t/Legacy/subtest/plan.t -cpan/Test-Simple/t/Legacy/subtest/predicate.t -cpan/Test-Simple/t/Legacy/subtest/singleton.t -cpan/Test-Simple/t/Legacy/subtest/threads.t -cpan/Test-Simple/t/Legacy/subtest/todo.t -cpan/Test-Simple/t/Legacy/subtest/wstat.t -cpan/Test-Simple/t/Legacy/tbm_doesnt_set_exported_to.t -cpan/Test-Simple/t/Legacy/Test2/Subtest.t -cpan/Test-Simple/t/Legacy/Tester/tbt_01basic.t -cpan/Test-Simple/t/Legacy/Tester/tbt_02fhrestore.t -cpan/Test-Simple/t/Legacy/Tester/tbt_03die.t -cpan/Test-Simple/t/Legacy/Tester/tbt_04line_num.t -cpan/Test-Simple/t/Legacy/Tester/tbt_05faildiag.t -cpan/Test-Simple/t/Legacy/Tester/tbt_06errormess.t -cpan/Test-Simple/t/Legacy/Tester/tbt_07args.t -cpan/Test-Simple/t/Legacy/Tester/tbt_08subtest.t -cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t -cpan/Test-Simple/t/Legacy/Tester/tbt_09do_script.pl -cpan/Test-Simple/t/Legacy/thread_taint.t -cpan/Test-Simple/t/Legacy/threads.t -cpan/Test-Simple/t/Legacy/todo.t -cpan/Test-Simple/t/Legacy/undef.t -cpan/Test-Simple/t/Legacy/use_ok.t -cpan/Test-Simple/t/Legacy/useing.t -cpan/Test-Simple/t/Legacy/utf8.t -cpan/Test-Simple/t/Legacy/versions.t -cpan/Test-Simple/t/Legacy_And_Test2/builder_loaded_late.t -cpan/Test-Simple/t/Legacy_And_Test2/diag_event_on_ok.t -cpan/Test-Simple/t/Legacy_And_Test2/hidden_warnings.t -cpan/Test-Simple/t/Legacy_And_Test2/preload_diag_note.t -cpan/Test-Simple/t/Legacy_And_Test2/thread_init_warning.t -cpan/Test-Simple/t/lib/Dev/Null.pm -cpan/Test-Simple/t/lib/Dummy.pm -cpan/Test-Simple/t/lib/MyOverload.pm -cpan/Test-Simple/t/lib/MyTest.pm -cpan/Test-Simple/t/lib/NoExporter.pm -cpan/Test-Simple/t/lib/SigDie.pm -cpan/Test-Simple/t/lib/SkipAll.pm -cpan/Test-Simple/t/lib/SmallTest.pm -cpan/Test-Simple/t/lib/Test/Builder/NoOutput.pm -cpan/Test-Simple/t/lib/Test/Simple/Catch.pm -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_in_eval.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_with_handler.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/exit.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/extras.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/five_fail.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/last_minute_death.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/missing_done_testing.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail_without_plan.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/pre_plan_death.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/require.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/success.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few_fail.plx -cpan/Test-Simple/t/lib/Test/Simple/sample_tests/two_fail.plx -cpan/Test-Simple/t/lib/TieOut.pm -cpan/Test-Simple/t/regression/642_persistent_end.t -cpan/Test-Simple/t/regression/662-tbt-no-plan.t -cpan/Test-Simple/t/regression/684-nested_todo_diag.t -cpan/Test-Simple/t/regression/694_note_diag_return_values.t -cpan/Test-Simple/t/regression/696-intercept_skip_all.t -cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t -cpan/Test-Simple/t/regression/757-reset_in_subtest.t -cpan/Test-Simple/t/regression/812-todo.t -cpan/Test-Simple/t/regression/817-subtest-todo.t -cpan/Test-Simple/t/regression/862-intercept_tb_todo.t -cpan/Test-Simple/t/regression/buffered_subtest_plan_buffered.t -cpan/Test-Simple/t/regression/builder_does_not_init.t -cpan/Test-Simple/t/regression/errors_facet.t -cpan/Test-Simple/t/regression/fork_first.t -cpan/Test-Simple/t/regression/inherit_trace.t -cpan/Test-Simple/t/regression/no_name_in_subtest.t -cpan/Test-Simple/t/regression/skip_reason_object_ipc.t -cpan/Test-Simple/t/regression/todo_and_facets.t -cpan/Test-Simple/t/Test2/acceptance/try_it_done_testing.t -cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t -cpan/Test-Simple/t/Test2/acceptance/try_it_no_plan.t -cpan/Test-Simple/t/Test2/acceptance/try_it_plan.t -cpan/Test-Simple/t/Test2/acceptance/try_it_skip.t -cpan/Test-Simple/t/Test2/acceptance/try_it_threads.t -cpan/Test-Simple/t/Test2/acceptance/try_it_todo.t -cpan/Test-Simple/t/Test2/behavior/disable_ipc_a.t -cpan/Test-Simple/t/Test2/behavior/disable_ipc_b.t -cpan/Test-Simple/t/Test2/behavior/disable_ipc_c.t -cpan/Test-Simple/t/Test2/behavior/disable_ipc_d.t -cpan/Test-Simple/t/Test2/behavior/err_var.t -cpan/Test-Simple/t/Test2/behavior/Formatter.t -cpan/Test-Simple/t/Test2/behavior/init_croak.t -cpan/Test-Simple/t/Test2/behavior/intercept.t -cpan/Test-Simple/t/Test2/behavior/ipc_wait_timeout.t -cpan/Test-Simple/t/Test2/behavior/nested_context_exception.t -cpan/Test-Simple/t/Test2/behavior/no_load_api.t -cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t -cpan/Test-Simple/t/Test2/behavior/special_names.t -cpan/Test-Simple/t/Test2/behavior/subtest_bailout.t -cpan/Test-Simple/t/Test2/behavior/Subtest_buffer_formatter.t -cpan/Test-Simple/t/Test2/behavior/Subtest_callback.t -cpan/Test-Simple/t/Test2/behavior/Subtest_events.t -cpan/Test-Simple/t/Test2/behavior/Subtest_plan.t -cpan/Test-Simple/t/Test2/behavior/Subtest_todo.t -cpan/Test-Simple/t/Test2/behavior/Taint.t -cpan/Test-Simple/t/Test2/behavior/trace_signature.t -cpan/Test-Simple/t/Test2/behavior/uuid.t -cpan/Test-Simple/t/Test2/legacy/TAP.t -cpan/Test-Simple/t/Test2/modules/API.t -cpan/Test-Simple/t/Test2/modules/API/Breakage.t -cpan/Test-Simple/t/Test2/modules/API/Context.t -cpan/Test-Simple/t/Test2/modules/API/Instance.t -cpan/Test-Simple/t/Test2/modules/API/InterceptResult.t -cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Event.t -cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Squasher.t -cpan/Test-Simple/t/Test2/modules/API/Stack.t -cpan/Test-Simple/t/Test2/modules/Event.t -cpan/Test-Simple/t/Test2/modules/Event/Bail.t -cpan/Test-Simple/t/Test2/modules/Event/Diag.t -cpan/Test-Simple/t/Test2/modules/Event/Encoding.t -cpan/Test-Simple/t/Test2/modules/Event/Exception.t -cpan/Test-Simple/t/Test2/modules/Event/Fail.t -cpan/Test-Simple/t/Test2/modules/Event/Generic.t -cpan/Test-Simple/t/Test2/modules/Event/Note.t -cpan/Test-Simple/t/Test2/modules/Event/Ok.t -cpan/Test-Simple/t/Test2/modules/Event/Pass.t -cpan/Test-Simple/t/Test2/modules/Event/Plan.t -cpan/Test-Simple/t/Test2/modules/Event/Skip.t -cpan/Test-Simple/t/Test2/modules/Event/Subtest.t -cpan/Test-Simple/t/Test2/modules/Event/TAP/Version.t -cpan/Test-Simple/t/Test2/modules/Event/V2.t -cpan/Test-Simple/t/Test2/modules/Event/Waiting.t -cpan/Test-Simple/t/Test2/modules/EventFacet.t -cpan/Test-Simple/t/Test2/modules/EventFacet/About.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Amnesty.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Assert.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Control.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Error.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Info.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Meta.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Parent.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Plan.t -cpan/Test-Simple/t/Test2/modules/EventFacet/Trace.t -cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t -cpan/Test-Simple/t/Test2/modules/Hub.t -cpan/Test-Simple/t/Test2/modules/Hub/Interceptor.t -cpan/Test-Simple/t/Test2/modules/Hub/Interceptor/Terminator.t -cpan/Test-Simple/t/Test2/modules/Hub/Subtest.t -cpan/Test-Simple/t/Test2/modules/IPC.t -cpan/Test-Simple/t/Test2/modules/IPC/Driver.t -cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t -cpan/Test-Simple/t/Test2/modules/Tools/Tiny.t -cpan/Test-Simple/t/Test2/modules/Util.t -cpan/Test-Simple/t/Test2/modules/Util/ExternalMeta.t -cpan/Test-Simple/t/Test2/modules/Util/Facets2Legacy.t -cpan/Test-Simple/t/Test2/modules/Util/Trace.t -cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t -cpan/Test-Simple/t/Test2/regression/746-forking-subtest.t -cpan/Test-Simple/t/Test2/regression/gh_16.t -cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t +cpan/Test-Harness/t/spool.t Test::Harness test +cpan/Test-Harness/t/state.t Test::Harness test +cpan/Test-Harness/t/state_results.t Test::Harness test +cpan/Test-Harness/t/streams.t Test::Harness test +cpan/Test-Harness/t/subclass_tests/non_perl_source Test data for Test::Harness +cpan/Test-Harness/t/subclass_tests/perl_source Test data for Test::Harness +cpan/Test-Harness/t/taint.t Test::Harness test +cpan/Test-Harness/t/testargs.t Test::Harness test +cpan/Test-Harness/t/unicode.t Test::Harness test +cpan/Test-Harness/t/yamlish.t Test::Harness test +cpan/Test-Harness/t/yamlish-output.t Test::Harness test +cpan/Test-Harness/t/yamlish-writer.t Test::Harness test +cpan/Test-Simple/lib/ok.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Builder.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Builder/Formatter.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Builder/IO/Scalar.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Builder/Module.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Builder/Tester.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/More.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Simple.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Tester.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Tester/Capture.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Tester/Delegate.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test/Tutorial.pod Test::Simple +cpan/Test-Simple/lib/Test/use/ok.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/Breakage.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/Context.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/Instance.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/InterceptResult.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/InterceptResult/Event.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/InterceptResult/Facet.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/InterceptResult/Hub.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/InterceptResult/Squasher.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/API/Stack.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Bail.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Diag.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Encoding.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Exception.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Fail.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Generic.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Note.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Ok.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Pass.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Plan.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Skip.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Subtest.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/V2.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Event/Waiting.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/About.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Control.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Error.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Info.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Info/Table.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Render.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Formatter.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Formatter/TAP.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Hub.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Hub/Subtest.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/IPC.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/IPC/Driver.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Tools/Tiny.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Transition.pod Test::Simple +cpan/Test-Simple/lib/Test2/Util.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Util/HashBase.pm Module related to Test::Simple +cpan/Test-Simple/lib/Test2/Util/Trace.pm Module related to Test::Simple +cpan/Test-Simple/t/HashBase.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/00test_harness_check.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/01-basic.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/478-cmp_ok_hash.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/auto.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/bad_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/bail_out.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/BEGIN_require_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/BEGIN_use_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/buffer.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Bugs/600.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Bugs/629.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/Builder.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/carp.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/create.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/current_test.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/current_test_without_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/details.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/done_testing.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/done_testing_double.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/done_testing_plan_mismatch.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/done_testing_with_no_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/done_testing_with_number.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/done_testing_with_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/fork_with_new_stdout.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/has_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/has_plan2.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/is_fh.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/is_passing.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/maybe_regex.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/no_diag.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/no_ending.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/no_header.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/no_plan_at_all.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/ok_obj.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/output.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/reset.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Builder/try.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/c_flag.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/capture.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/check_tests.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/circular_data.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/cmp_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/depth.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/diag.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/died.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/dont_overwrite_die_handler.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/eq_set.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/exit.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/explain.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/explain_err_vars.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/extra.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/extra_one.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/fail.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/fail-like.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/fail-more.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/fail_one.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/filehandles.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/fork.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/harness_active.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/import.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/is_deeply_dne_bug.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/is_deeply_fail.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/is_deeply_with_threads.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/missing.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/More.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/new_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/no_log_results.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/no_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/no_tests.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/note.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/overload.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/overload_threads.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/plan_bad.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/plan_is_noplan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/plan_no_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/plan_shouldnt_import.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/plan_skip_all.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Regression/637.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Regression/683_thread_todo.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Regression/6_cmp_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Regression/736_use_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Regression/789-read-only.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Regression/870-experimental-warnings.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Regression/is_capture.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/require_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/run_test.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/simple.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Simple/load.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/skip.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/skipall.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/strays.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/args.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/bail_out.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/basic.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/callback.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/die.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/do.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/events.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/for_do_t.test Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/fork.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/implicit_done.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/line_numbers.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/predicate.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/singleton.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/threads.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/todo.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/subtest/wstat.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/tbm_doesnt_set_exported_to.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Test2/Subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_01basic.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_02fhrestore.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_03die.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_04line_num.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_05faildiag.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_06errormess.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_07args.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_08subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/Tester/tbt_09do_script.pl Script related to Test::Simple +cpan/Test-Simple/t/Legacy/thread_taint.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/threads.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/todo.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/undef.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/use_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/useing.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/utf8.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy/versions.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy_And_Test2/builder_loaded_late.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy_And_Test2/diag_event_on_ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy_And_Test2/hidden_warnings.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy_And_Test2/preload_diag_note.t Test file related to Test::Simple +cpan/Test-Simple/t/Legacy_And_Test2/thread_init_warning.t Test file related to Test::Simple +cpan/Test-Simple/t/lib/Dev/Null.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/Dummy.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/MyOverload.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/MyTest.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/NoExporter.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/SigDie.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/SkipAll.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/SmallTest.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/Test/Builder/NoOutput.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/Catch.pm Module related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_in_eval.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_with_handler.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/exit.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/extras.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/five_fail.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/last_minute_death.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/missing_done_testing.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail_without_plan.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/pre_plan_death.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/require.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/success.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few_fail.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/Test/Simple/sample_tests/two_fail.plx Script related to Test::Simple +cpan/Test-Simple/t/lib/TieOut.pm Module related to Test::Simple +cpan/Test-Simple/t/regression/642_persistent_end.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/662-tbt-no-plan.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/684-nested_todo_diag.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/694_note_diag_return_values.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/696-intercept_skip_all.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/721-nested-streamed-subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/757-reset_in_subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/812-todo.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/817-subtest-todo.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/862-intercept_tb_todo.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/buffered_subtest_plan_buffered.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/builder_does_not_init.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/errors_facet.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/fork_first.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/inherit_trace.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/no_name_in_subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/skip_reason_object_ipc.t Test file related to Test::Simple +cpan/Test-Simple/t/regression/todo_and_facets.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/acceptance/try_it_done_testing.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/acceptance/try_it_no_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/acceptance/try_it_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/acceptance/try_it_skip.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/acceptance/try_it_threads.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/acceptance/try_it_todo.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/disable_ipc_a.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/disable_ipc_b.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/disable_ipc_c.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/disable_ipc_d.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/err_var.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/Formatter.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/init_croak.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/intercept.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/ipc_wait_timeout.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/nested_context_exception.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/no_load_api.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/special_names.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/subtest_bailout.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/Subtest_buffer_formatter.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/Subtest_callback.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/Subtest_events.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/Subtest_plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/Subtest_todo.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/Taint.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/trace_signature.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/behavior/uuid.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/legacy/TAP.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API/Breakage.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API/Context.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API/Instance.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API/InterceptResult.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Event.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API/InterceptResult/Squasher.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/API/Stack.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Bail.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Diag.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Encoding.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Exception.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Fail.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Generic.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Note.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Ok.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Pass.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Skip.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/TAP/Version.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/V2.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Event/Waiting.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/About.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Amnesty.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Assert.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Control.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Error.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Info.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Meta.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Parent.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Plan.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/EventFacet/Trace.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Hub.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Hub/Interceptor.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Hub/Interceptor/Terminator.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Hub/Subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/IPC.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/IPC/Driver.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Tools/Tiny.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Util.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Util/ExternalMeta.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Util/Facets2Legacy.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/modules/Util/Trace.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/regression/746-forking-subtest.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/regression/gh_16.t Test file related to Test::Simple +cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t Test file related to Test::Simple cpan/Text-Balanced/lib/Text/Balanced.pm Text::Balanced cpan/Text-Balanced/t/01_compile.t See if Text::Balanced works cpan/Text-Balanced/t/02_extbrk.t See if Text::Balanced works @@ -2720,25 +2892,25 @@ cpan/Text-Tabs/t/undef.t cpan/Text-Tabs/t/wrap.t See if Text::Wrap::wrap works cpan/Text-Tabs/t/Wrap-JLB.t See if Text::Wrap::wrap works cpan/Text-Tabs/t/wrap_separator2.t See if Text::Wrap::wrap works -cpan/Tie-RefHash/lib/Tie/RefHash.pm Base class for tied hashes with references as keys -cpan/Tie-RefHash/t/rebless.t Test for Tie::RefHash with rebless -cpan/Tie-RefHash/t/refhash.t Test for Tie::RefHash and Tie::RefHash::Nestable -cpan/Tie-RefHash/t/storable.t Test for Tie::RefHash with storable -cpan/Tie-RefHash/t/threaded.t Test for Tie::RefHash with threads +cpan/Tie-RefHash/lib/Tie/RefHash.pm Base class for tied hashes with references as keys +cpan/Tie-RefHash/t/rebless.t Test for Tie::RefHash with rebless +cpan/Tie-RefHash/t/refhash.t Test for Tie::RefHash and Tie::RefHash::Nestable +cpan/Tie-RefHash/t/storable.t Test for Tie::RefHash with storable +cpan/Tie-RefHash/t/threaded.t Test for Tie::RefHash with threads cpan/Time-Local/lib/Time/Local.pm Reverse translation of localtime, gmtime cpan/Time-Local/t/Local.t See if Time::Local works -cpan/Time-Piece/Piece.pm Time::Piece extension -cpan/Time-Piece/Piece.xs Time::Piece extension -cpan/Time-Piece/Seconds.pm Time::Piece extension -cpan/Time-Piece/t/01base.t Test for Time::Piece -cpan/Time-Piece/t/02core.t Test for Time::Piece +cpan/Time-Piece/Piece.pm Time::Piece extension +cpan/Time-Piece/Piece.xs Time::Piece extension +cpan/Time-Piece/Seconds.pm Time::Piece extension +cpan/Time-Piece/t/01base.t Test for Time::Piece +cpan/Time-Piece/t/02core.t Test for Time::Piece cpan/Time-Piece/t/02core_dst.t -cpan/Time-Piece/t/03compare.t Test for Time::Piece -cpan/Time-Piece/t/04mjd.t Test for Time::Piece -cpan/Time-Piece/t/05overload.t Test for Time::Piece +cpan/Time-Piece/t/03compare.t Test for Time::Piece +cpan/Time-Piece/t/04mjd.t Test for Time::Piece +cpan/Time-Piece/t/05overload.t Test for Time::Piece cpan/Time-Piece/t/06large.t -cpan/Time-Piece/t/06subclass.t Test for Time::Piece -cpan/Time-Piece/t/07arith.t Test for Time::Piece +cpan/Time-Piece/t/06subclass.t Test for Time::Piece +cpan/Time-Piece/t/07arith.t Test for Time::Piece cpan/Time-Piece/t/08truncate.t cpan/Time-Piece/t/09locales.t cpan/Time-Piece/t/10overload.t @@ -2747,112 +2919,112 @@ cpan/Time-Piece/t/lib/Time/Piece/Twin.pm cpan/Unicode-Collate/Collate.pm Unicode::Collate cpan/Unicode-Collate/Collate.xs Unicode::Collate cpan/Unicode-Collate/Collate/allkeys.txt Unicode::Collate -cpan/Unicode-Collate/Collate/CJK/Big5.pm Unicode::Collate -cpan/Unicode-Collate/Collate/CJK/GB2312.pm Unicode::Collate -cpan/Unicode-Collate/Collate/CJK/JISX0208.pm Unicode::Collate -cpan/Unicode-Collate/Collate/CJK/Korean.pm Unicode::Collate -cpan/Unicode-Collate/Collate/CJK/Pinyin.pm Unicode::Collate -cpan/Unicode-Collate/Collate/CJK/Stroke.pm Unicode::Collate +cpan/Unicode-Collate/Collate/CJK/Big5.pm Unicode::Collate +cpan/Unicode-Collate/Collate/CJK/GB2312.pm Unicode::Collate +cpan/Unicode-Collate/Collate/CJK/JISX0208.pm Unicode::Collate +cpan/Unicode-Collate/Collate/CJK/Korean.pm Unicode::Collate +cpan/Unicode-Collate/Collate/CJK/Pinyin.pm Unicode::Collate +cpan/Unicode-Collate/Collate/CJK/Stroke.pm Unicode::Collate cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm cpan/Unicode-Collate/Collate/keys.txt Unicode::Collate -cpan/Unicode-Collate/Collate/Locale.pm Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/af.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ar.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale.pm Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/af.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ar.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/as.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/az.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/az.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/be.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/bn.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ca.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/cs.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/bn.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ca.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/cs.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/cu.pl -cpan/Unicode-Collate/Collate/Locale/cy.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/da.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/de_phone.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/cy.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/da.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/de_at_ph.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/de_phone.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/dsb.pl cpan/Unicode-Collate/Collate/Locale/ee.pl -cpan/Unicode-Collate/Collate/Locale/eo.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/es.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/es_trad.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/et.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/eo.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/es.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/es_trad.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/et.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/fa.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/fi.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/fi.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/fi_phone.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/fil.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/fo.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/fr_ca.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/fil.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/fo.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/fr_ca.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/gu.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ha.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/haw.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ha.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/haw.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/he.pl cpan/Unicode-Collate/Collate/Locale/hi.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/hr.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/hu.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/hy.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ig.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/is.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ja.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/kk.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/kl.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/hr.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/hu.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/hy.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ig.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/is.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ja.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/kk.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/kl.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/kn.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ko.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ko.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/kok.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/lkt.pl cpan/Unicode-Collate/Collate/Locale/ln.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/lt.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/lv.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/lt.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/lv.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/mk.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/ml.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/mr.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/mt.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/nb.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/nn.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/nso.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/om.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/mt.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/nb.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/nn.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/nso.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/om.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/or.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/pa.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/pl.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ro.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/sa.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/se.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/pl.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ro.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/sa.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/se.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/si.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/si_dict.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/sk.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/sl.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/sq.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/sk.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/sl.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/sq.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/sr.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/sv.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/sv.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/sv_refo.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/ta.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/te.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/th.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/tn.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/to.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/tr.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/uk.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/tn.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/to.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/tr.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/ug_cyrl.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/uk.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/ur.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/vi.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/vi.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/vo.pl cpan/Unicode-Collate/Collate/Locale/wae.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/wo.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/yo.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/zh.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/zh_big5.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/zh_gb.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/zh_pin.pl Unicode::Collate -cpan/Unicode-Collate/Collate/Locale/zh_strk.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/wo.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/yo.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/zh.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/zh_big5.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/zh_gb.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/zh_pin.pl Unicode::Collate +cpan/Unicode-Collate/Collate/Locale/zh_strk.pl Unicode::Collate cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl -cpan/Unicode-Collate/Makefile.PL Unicode::Collate +cpan/Unicode-Collate/Makefile.PL Unicode::Collate cpan/Unicode-Collate/mkheader Unicode::Collate cpan/Unicode-Collate/t/altern.t Unicode::Collate -cpan/Unicode-Collate/t/backwds.t Unicode::Collate -cpan/Unicode-Collate/t/cjk_b5.t Unicode::Collate -cpan/Unicode-Collate/t/cjk_gb.t Unicode::Collate -cpan/Unicode-Collate/t/cjk_ja.t Unicode::Collate -cpan/Unicode-Collate/t/cjk_ko.t Unicode::Collate -cpan/Unicode-Collate/t/cjk_py.t Unicode::Collate -cpan/Unicode-Collate/t/cjk_st.t Unicode::Collate +cpan/Unicode-Collate/t/backwds.t Unicode::Collate +cpan/Unicode-Collate/t/cjk_b5.t Unicode::Collate +cpan/Unicode-Collate/t/cjk_gb.t Unicode::Collate +cpan/Unicode-Collate/t/cjk_ja.t Unicode::Collate +cpan/Unicode-Collate/t/cjk_ko.t Unicode::Collate +cpan/Unicode-Collate/t/cjk_py.t Unicode::Collate +cpan/Unicode-Collate/t/cjk_st.t Unicode::Collate cpan/Unicode-Collate/t/cjk_zy.t cpan/Unicode-Collate/t/cjkrange.t Unicode::Collate cpan/Unicode-Collate/t/compatui.t Unicode::Collate @@ -2861,7 +3033,7 @@ cpan/Unicode-Collate/t/default.t Unicode::Collate cpan/Unicode-Collate/t/hangtype.t Unicode::Collate cpan/Unicode-Collate/t/hangul.t Unicode::Collate cpan/Unicode-Collate/t/ident.t -cpan/Unicode-Collate/t/iglevel2.t Unicode::Collate +cpan/Unicode-Collate/t/iglevel2.t Unicode::Collate cpan/Unicode-Collate/t/ignor.t Unicode::Collate cpan/Unicode-Collate/t/illegal.t Unicode::Collate cpan/Unicode-Collate/t/illegalp.t Unicode::Collate @@ -2869,12 +3041,12 @@ cpan/Unicode-Collate/t/index.t Unicode::Collate cpan/Unicode-Collate/t/khitan.t Unicode::Collate cpan/Unicode-Collate/t/loc_af.t Unicode::Collate cpan/Unicode-Collate/t/loc_ar.t Unicode::Collate -cpan/Unicode-Collate/t/loc_as.t Unicode::Collate +cpan/Unicode-Collate/t/loc_as.t Unicode::Collate cpan/Unicode-Collate/t/loc_az.t Unicode::Collate cpan/Unicode-Collate/t/loc_be.t Unicode::Collate cpan/Unicode-Collate/t/loc_bg.t Unicode::Collate -cpan/Unicode-Collate/t/loc_bn.t Unicode::Collate -cpan/Unicode-Collate/t/loc_bs.t Unicode::Collate +cpan/Unicode-Collate/t/loc_bn.t Unicode::Collate +cpan/Unicode-Collate/t/loc_bs.t Unicode::Collate cpan/Unicode-Collate/t/loc_bscy.t cpan/Unicode-Collate/t/loc_ca.t Unicode::Collate cpan/Unicode-Collate/t/loc_cjk.t Unicode::Collate @@ -2882,94 +3054,94 @@ cpan/Unicode-Collate/t/loc_cjkc.t Unicode::Collate cpan/Unicode-Collate/t/loc_cs.t Unicode::Collate cpan/Unicode-Collate/t/loc_cu.t cpan/Unicode-Collate/t/loc_cy.t Unicode::Collate -cpan/Unicode-Collate/t/loc_cyrl.t Unicode::Collate +cpan/Unicode-Collate/t/loc_cyrl.t Unicode::Collate cpan/Unicode-Collate/t/loc_da.t Unicode::Collate cpan/Unicode-Collate/t/loc_de.t Unicode::Collate -cpan/Unicode-Collate/t/loc_deat.t Unicode::Collate -cpan/Unicode-Collate/t/loc_deph.t Unicode::Collate +cpan/Unicode-Collate/t/loc_deat.t Unicode::Collate +cpan/Unicode-Collate/t/loc_deph.t Unicode::Collate cpan/Unicode-Collate/t/loc_dsb.t cpan/Unicode-Collate/t/loc_ee.t cpan/Unicode-Collate/t/loc_eo.t Unicode::Collate cpan/Unicode-Collate/t/loc_es.t Unicode::Collate -cpan/Unicode-Collate/t/loc_estr.t Unicode::Collate +cpan/Unicode-Collate/t/loc_estr.t Unicode::Collate cpan/Unicode-Collate/t/loc_et.t Unicode::Collate -cpan/Unicode-Collate/t/loc_fa.t Unicode::Collate +cpan/Unicode-Collate/t/loc_fa.t Unicode::Collate cpan/Unicode-Collate/t/loc_fi.t Unicode::Collate -cpan/Unicode-Collate/t/loc_fil.t Unicode::Collate -cpan/Unicode-Collate/t/loc_fiph.t Unicode::Collate +cpan/Unicode-Collate/t/loc_fil.t Unicode::Collate +cpan/Unicode-Collate/t/loc_fiph.t Unicode::Collate cpan/Unicode-Collate/t/loc_fo.t Unicode::Collate cpan/Unicode-Collate/t/loc_fr.t Unicode::Collate cpan/Unicode-Collate/t/loc_frca.t Unicode::Collate -cpan/Unicode-Collate/t/loc_gu.t Unicode::Collate +cpan/Unicode-Collate/t/loc_gu.t Unicode::Collate cpan/Unicode-Collate/t/loc_ha.t Unicode::Collate -cpan/Unicode-Collate/t/loc_haw.t Unicode::Collate +cpan/Unicode-Collate/t/loc_haw.t Unicode::Collate cpan/Unicode-Collate/t/loc_he.t -cpan/Unicode-Collate/t/loc_hi.t Unicode::Collate +cpan/Unicode-Collate/t/loc_hi.t Unicode::Collate cpan/Unicode-Collate/t/loc_hr.t Unicode::Collate cpan/Unicode-Collate/t/loc_hu.t Unicode::Collate cpan/Unicode-Collate/t/loc_hy.t Unicode::Collate cpan/Unicode-Collate/t/loc_ig.t Unicode::Collate cpan/Unicode-Collate/t/loc_is.t Unicode::Collate cpan/Unicode-Collate/t/loc_ja.t Unicode::Collate -cpan/Unicode-Collate/t/loc_jait.t Unicode::Collate -cpan/Unicode-Collate/t/loc_japr.t Unicode::Collate +cpan/Unicode-Collate/t/loc_jait.t Unicode::Collate +cpan/Unicode-Collate/t/loc_japr.t Unicode::Collate cpan/Unicode-Collate/t/loc_kk.t Unicode::Collate cpan/Unicode-Collate/t/loc_kl.t Unicode::Collate -cpan/Unicode-Collate/t/loc_kn.t Unicode::Collate +cpan/Unicode-Collate/t/loc_kn.t Unicode::Collate cpan/Unicode-Collate/t/loc_ko.t Unicode::Collate -cpan/Unicode-Collate/t/loc_kok.t Unicode::Collate +cpan/Unicode-Collate/t/loc_kok.t Unicode::Collate cpan/Unicode-Collate/t/loc_lkt.t -cpan/Unicode-Collate/t/loc_ln.t Unicode::Collate +cpan/Unicode-Collate/t/loc_ln.t Unicode::Collate cpan/Unicode-Collate/t/loc_lt.t Unicode::Collate cpan/Unicode-Collate/t/loc_lv.t Unicode::Collate cpan/Unicode-Collate/t/loc_mk.t Unicode::Collate -cpan/Unicode-Collate/t/loc_ml.t Unicode::Collate +cpan/Unicode-Collate/t/loc_ml.t Unicode::Collate cpan/Unicode-Collate/t/loc_mncy.t Unicode::Collate -cpan/Unicode-Collate/t/loc_mr.t Unicode::Collate +cpan/Unicode-Collate/t/loc_mr.t Unicode::Collate cpan/Unicode-Collate/t/loc_mt.t Unicode::Collate cpan/Unicode-Collate/t/loc_nb.t Unicode::Collate cpan/Unicode-Collate/t/loc_nn.t Unicode::Collate -cpan/Unicode-Collate/t/loc_nso.t Unicode::Collate +cpan/Unicode-Collate/t/loc_nso.t Unicode::Collate cpan/Unicode-Collate/t/loc_om.t Unicode::Collate -cpan/Unicode-Collate/t/loc_or.t Unicode::Collate -cpan/Unicode-Collate/t/loc_pa.t Unicode::Collate +cpan/Unicode-Collate/t/loc_or.t Unicode::Collate +cpan/Unicode-Collate/t/loc_pa.t Unicode::Collate cpan/Unicode-Collate/t/loc_pl.t Unicode::Collate cpan/Unicode-Collate/t/loc_ro.t Unicode::Collate cpan/Unicode-Collate/t/loc_ru.t Unicode::Collate -cpan/Unicode-Collate/t/loc_sa.t Unicode::Collate +cpan/Unicode-Collate/t/loc_sa.t Unicode::Collate cpan/Unicode-Collate/t/loc_se.t Unicode::Collate -cpan/Unicode-Collate/t/loc_si.t Unicode::Collate -cpan/Unicode-Collate/t/loc_sidt.t Unicode::Collate +cpan/Unicode-Collate/t/loc_si.t Unicode::Collate +cpan/Unicode-Collate/t/loc_sidt.t Unicode::Collate cpan/Unicode-Collate/t/loc_sk.t Unicode::Collate cpan/Unicode-Collate/t/loc_sl.t Unicode::Collate cpan/Unicode-Collate/t/loc_sq.t Unicode::Collate cpan/Unicode-Collate/t/loc_sr.t Unicode::Collate -cpan/Unicode-Collate/t/loc_srla.t Unicode::Collate +cpan/Unicode-Collate/t/loc_srla.t Unicode::Collate cpan/Unicode-Collate/t/loc_sv.t Unicode::Collate -cpan/Unicode-Collate/t/loc_svrf.t Unicode::Collate +cpan/Unicode-Collate/t/loc_svrf.t Unicode::Collate cpan/Unicode-Collate/t/loc_sw.t Unicode::Collate -cpan/Unicode-Collate/t/loc_ta.t Unicode::Collate -cpan/Unicode-Collate/t/loc_te.t Unicode::Collate -cpan/Unicode-Collate/t/loc_test.t Unicode::Collate -cpan/Unicode-Collate/t/loc_th.t Unicode::Collate +cpan/Unicode-Collate/t/loc_ta.t Unicode::Collate +cpan/Unicode-Collate/t/loc_te.t Unicode::Collate +cpan/Unicode-Collate/t/loc_test.t Unicode::Collate +cpan/Unicode-Collate/t/loc_th.t Unicode::Collate cpan/Unicode-Collate/t/loc_tn.t Unicode::Collate cpan/Unicode-Collate/t/loc_to.t Unicode::Collate cpan/Unicode-Collate/t/loc_tr.t Unicode::Collate cpan/Unicode-Collate/t/loc_ugcy.t Unicode::Collate cpan/Unicode-Collate/t/loc_uk.t Unicode::Collate -cpan/Unicode-Collate/t/loc_ur.t Unicode::Collate +cpan/Unicode-Collate/t/loc_ur.t Unicode::Collate cpan/Unicode-Collate/t/loc_vi.t Unicode::Collate cpan/Unicode-Collate/t/loc_vo.t -cpan/Unicode-Collate/t/loc_wae.t Unicode::Collate +cpan/Unicode-Collate/t/loc_wae.t Unicode::Collate cpan/Unicode-Collate/t/loc_wo.t Unicode::Collate cpan/Unicode-Collate/t/loc_yo.t Unicode::Collate cpan/Unicode-Collate/t/loc_zh.t Unicode::Collate -cpan/Unicode-Collate/t/loc_zhb5.t Unicode::Collate -cpan/Unicode-Collate/t/loc_zhgb.t Unicode::Collate -cpan/Unicode-Collate/t/loc_zhpy.t Unicode::Collate -cpan/Unicode-Collate/t/loc_zhst.t Unicode::Collate +cpan/Unicode-Collate/t/loc_zhb5.t Unicode::Collate +cpan/Unicode-Collate/t/loc_zhgb.t Unicode::Collate +cpan/Unicode-Collate/t/loc_zhpy.t Unicode::Collate +cpan/Unicode-Collate/t/loc_zhst.t Unicode::Collate cpan/Unicode-Collate/t/loc_zhzy.t -cpan/Unicode-Collate/t/nonchar.t Unicode::Collate +cpan/Unicode-Collate/t/nonchar.t Unicode::Collate cpan/Unicode-Collate/t/normal.t Unicode::Collate cpan/Unicode-Collate/t/notable.t cpan/Unicode-Collate/t/nushu.t @@ -2977,7 +3149,7 @@ cpan/Unicode-Collate/t/overcjk0.t Unicode::Collate cpan/Unicode-Collate/t/overcjk1.t Unicode::Collate cpan/Unicode-Collate/t/override.t Unicode::Collate cpan/Unicode-Collate/t/rearrang.t Unicode::Collate -cpan/Unicode-Collate/t/rewrite.t Unicode::Collate +cpan/Unicode-Collate/t/rewrite.t Unicode::Collate cpan/Unicode-Collate/t/tangut.t cpan/Unicode-Collate/t/test.t Unicode::Collate cpan/Unicode-Collate/t/trailwt.t Unicode::Collate @@ -3019,34 +3191,32 @@ cpan/Win32/t/Privileges.t cpan/Win32/t/Unicode.t See if Win32 extension works cpan/Win32/Win32.pm Win32 extension Perl module cpan/Win32/Win32.xs Win32 extension external subroutines -cpan/Win32API-File/buffers.h Win32API::File extension -cpan/Win32API-File/cFile.h Win32API::File extension -cpan/Win32API-File/cFile.pc Win32API::File extension -cpan/Win32API-File/const2perl.h Win32API::File extension -cpan/Win32API-File/File.pm Win32API::File extension -cpan/Win32API-File/File.xs Win32API::File extension +cpan/Win32API-File/buffers.h Win32API::File extension +cpan/Win32API-File/cFile.h Win32API::File extension +cpan/Win32API-File/cFile.pc Win32API::File extension +cpan/Win32API-File/const2perl.h Win32API::File extension +cpan/Win32API-File/File.pm Win32API::File extension +cpan/Win32API-File/File.xs Win32API::File extension cpan/Win32API-File/inc/ExtUtils/Myconst2perl.pm Win32API::File extension -cpan/Win32API-File/Makefile.PL Win32API::File extension makefile write -cpan/Win32API-File/t/file.t See if Win32API::File extension works -cpan/Win32API-File/t/tie.t See if Win32API::File extension works -cpan/Win32API-File/typemap Win32API::File extension interface types -Cross/build-arm-n770-sh Cross-compilation -Cross/cflags-cross-arm Cross-compilation -Cross/config Cross-compilation -Cross/config.sh-arm-linux Cross-compilation -Cross/config.sh-arm-linux-n770 Cross-compilation -Cross/generate_config_sh Cross-compilation -Cross/installperl.patch Cross-compilation -Cross/Makefile Cross-compilation -Cross/Makefile-cross-SH Cross-compilation -Cross/Makefile.SH.patch Cross-compilation -Cross/README Cross-compilation -Cross/README.new Cross-compilation -Cross/TODO Cross-compilation -Cross/warp Cross-compilation -cv.h Code value header -cygwin/cygwin.c Additional code for Cygwin port -deb.c Debugging routines +cpan/Win32API-File/Makefile.PL Win32API::File extension makefile write +cpan/Win32API-File/t/file.t See if Win32API::File extension works +cpan/Win32API-File/t/tie.t See if Win32API::File extension works +cpan/Win32API-File/typemap Win32API::File extension interface types +Cross/build-arm-n770-sh Cross-compilation +Cross/cflags-cross-arm Cross-compilation +Cross/config Cross-compilation +Cross/config.sh-arm-linux Cross-compilation +Cross/config.sh-arm-linux-n770 Cross-compilation +Cross/generate_config_sh Cross-compilation +Cross/installperl.patch Cross-compilation +Cross/Makefile Cross-compilation +Cross/Makefile-cross-SH Cross-compilation +Cross/Makefile.SH.patch Cross-compilation +Cross/README Cross-compilation +Cross/README.new Cross-compilation +Cross/TODO Cross-compilation +Cross/warp Cross-compilation +cygwin/cygwin.c Additional code for Cygwin port dist/Attribute-Handlers/Changes Attribute::Handlers dist/Attribute-Handlers/demo/demo.pl Attribute::Handlers demo dist/Attribute-Handlers/demo/Demo.pm Attribute::Handlers demo @@ -3063,6 +3233,7 @@ dist/Attribute-Handlers/demo/demo_rawdata.pl Attribute::Handlers demo dist/Attribute-Handlers/demo/Descriptions.pm Attribute::Handlers demo dist/Attribute-Handlers/demo/MyClass.pm Attribute::Handlers demo dist/Attribute-Handlers/lib/Attribute/Handlers.pm Attribute::Handlers +dist/Attribute-Handlers/Makefile.PL Attribute::Handlers dist/Attribute-Handlers/t/caller.t See if Attribute::Handlers works dist/Attribute-Handlers/t/constants.t Test constants and Attribute::Handlers dist/Attribute-Handlers/t/data_convert.t Test attribute data conversion @@ -3072,316 +3243,318 @@ dist/autouse/lib/autouse.pm Load and call a function only when it's used dist/autouse/t/autouse.t See if autouse works dist/autouse/t/lib/MyTestModule.pm Test module for autouse dist/autouse/t/lib/MyTestModule2.pm Test module for autouse -dist/base/Changes base.pm changelog -dist/base/lib/base.pm Establish IS-A relationship at compile time -dist/base/lib/fields.pm Set up object field names for pseudo-hash-using classes -dist/base/Makefile.PL base.pm Makefile.PL -dist/base/t/base.t See if base works -dist/base/t/base-open-chunk.t See if base works -dist/base/t/base-open-line.t See if base works -dist/base/t/compile-time.t See if base works -dist/base/t/core-global.t See if base works around CORE::GLOBAL::require -dist/base/t/fields.t See if fields work -dist/base/t/fields-5_6_0.t See if fields work -dist/base/t/fields-5_8_0.t See if fields work -dist/base/t/fields-base.t See if fields work -dist/base/t/incdot.t Test how base.pm handles '.' in @INC -dist/base/t/isa.t See if base's behaviour doesn't change +dist/base/Changes base.pm changelog +dist/base/lib/base.pm Establish IS-A relationship at compile time +dist/base/lib/fields.pm Set up object field names for pseudo-hash-using classes +dist/base/Makefile.PL base.pm Makefile.PL +dist/base/t/base.t See if base works +dist/base/t/base-open-chunk.t See if base works +dist/base/t/base-open-line.t See if base works +dist/base/t/compile-time.t See if base works +dist/base/t/core-global.t See if base works around CORE::GLOBAL::require +dist/base/t/fields.t See if fields work +dist/base/t/fields-5_6_0.t See if fields work +dist/base/t/fields-5_8_0.t See if fields work +dist/base/t/fields-base.t See if fields work +dist/base/t/incdot.t Test how base.pm handles '.' in @INC +dist/base/t/isa.t See if base's behaviour doesn't change dist/base/t/lib/BaseIncMandatory.pm Test module for base.pm dist/base/t/lib/BaseIncOptional.pm Test module for base.pm -dist/base/t/lib/Broken.pm Test module for base.pm -dist/base/t/lib/Dummy.pm Test module for base.pm -dist/base/t/lib/HasSigDie.pm Module for testing base.pm -dist/base/t/sigdie.t See if base works with SIGDIE -dist/base/t/version.t See if base works with versions -dist/base/t/warnings.t See if base works with warnings -dist/Carp/Changes Changelog for Carp's CPAN releases -dist/Carp/lib/Carp.pm Error message extension -dist/Carp/lib/Carp/Heavy.pm Error message retired workhorse -dist/Carp/Makefile.PL makefile writer for Carp -dist/Carp/README README for Carp's CPAN releases +dist/base/t/lib/Broken.pm Test module for base.pm +dist/base/t/lib/Dummy.pm Test module for base.pm +dist/base/t/lib/HasSigDie.pm Module for testing base.pm +dist/base/t/sigdie.t See if base works with SIGDIE +dist/base/t/version.t See if base works with versions +dist/base/t/warnings.t See if base works with warnings +dist/Carp/Changes Changelog for Carp's CPAN releases +dist/Carp/lib/Carp.pm Error message extension +dist/Carp/lib/Carp/Heavy.pm Error message retired workhorse +dist/Carp/Makefile.PL makefile writer for Carp +dist/Carp/README README for Carp's CPAN releases dist/Carp/t/arg_regexp.t See if Carp formats regexp args OK in stack traces dist/Carp/t/arg_string.t See if Carp formats string args OK in stack traces -dist/Carp/t/baduni.t See if Carp handles non-char Unicode +dist/Carp/t/baduni.t See if Carp handles non-char Unicode dist/Carp/t/baduni_warnings.t See if Carp handles non-char Unicode when loaded via warnings.pm -dist/Carp/t/broken_can.t Test Carp with bad can implementations -dist/Carp/t/broken_univ_can.t Test Carp with bad UNIVERSAL::can -dist/Carp/t/Carp.t See if Carp works +dist/Carp/t/broken_can.t Test Carp with bad can implementations +dist/Carp/t/broken_univ_can.t Test Carp with bad UNIVERSAL::can +dist/Carp/t/Carp.t See if Carp works dist/Carp/t/Carp_overload.t See if Carp handles overloads dist/Carp/t/Carp_overloadless.t See if Carp handles overloads that dont use overload.pm -dist/Carp/t/errno.t See if Carp preserves $! and $^E -dist/Carp/t/heavy.t See if Carp::Heavy works +dist/Carp/t/errno.t See if Carp preserves $! and $^E +dist/Carp/t/heavy.t See if Carp::Heavy works dist/Carp/t/heavy_mismatch.t See if Carp::Heavy catches version mismatch -dist/Carp/t/stack_after_err.t Test stack traces after syntax errors +dist/Carp/t/stack_after_err.t Test stack traces after syntax errors dist/Carp/t/stash_deletion.t See if Carp handles stash deletion -dist/Carp/t/swash.t See if Carp avoids breaking swash loading -dist/Carp/t/vivify_gv.t See if Carp leaves utf8:: stuff alone +dist/Carp/t/swash.t See if Carp avoids breaking swash loading +dist/Carp/t/vivify_gv.t See if Carp leaves utf8:: stuff alone dist/Carp/t/vivify_stash.t See if Carp leaves utf8:: stash alone dist/Carp/t/with_warnings.t See if Carp plays nicely with warnings -dist/constant/lib/constant.pm For "use constant" -dist/constant/t/constant.t See if compile-time constants work -dist/constant/t/utf8.t Test Unicode constants under utf8 pragma -dist/Data-Dumper/Changes Data pretty printer, changelog -dist/Data-Dumper/Dumper.pm Data pretty printer, module -dist/Data-Dumper/Dumper.xs Data pretty printer, externals -dist/Data-Dumper/Makefile.PL Data pretty printer, makefile writer -dist/Data-Dumper/t/bless.t See if Data::Dumper works -dist/Data-Dumper/t/bless_var_method.t See if Data::Dumper::Bless works -dist/Data-Dumper/t/bugs.t See if Data::Dumper works -dist/Data-Dumper/t/deparse.t See if Data::Dumper::Deparse works -dist/Data-Dumper/t/dumper.t See if Data::Dumper works -dist/Data-Dumper/t/dumpperl.t See if Data::Dumper::Dumpperl works -dist/Data-Dumper/t/freezer.t See if Data::Dumper::Freezer works -dist/Data-Dumper/t/freezer_useperl.t See if Data::Dumper works -dist/Data-Dumper/t/huge.t See if Data::Dumper works on huge inputs -dist/Data-Dumper/t/indent.t See if Data::Dumper::Indent works -dist/Data-Dumper/t/lib/Testing.pm Functions used in testing Data-Dumper -dist/Data-Dumper/t/misc.t Miscellaneous tests for Data-Dumper -dist/Data-Dumper/t/names.t See if Data::Dumper::Names works -dist/Data-Dumper/t/overload.t See if Data::Dumper works for overloaded data -dist/Data-Dumper/t/pair.t See if Data::Dumper pair separator works -dist/Data-Dumper/t/perl-74170.t Regression test for stack reallocation +dist/constant/Changes Changes for constant.pm +dist/constant/lib/constant.pm For "use constant" +dist/constant/Makefile.PL Build constant.pm (from the cpan release) +dist/constant/t/constant.t See if compile-time constants work +dist/constant/t/utf8.t Test Unicode constants under utf8 pragma +dist/Data-Dumper/Changes Data pretty printer, changelog +dist/Data-Dumper/Dumper.pm Data pretty printer, module +dist/Data-Dumper/Dumper.xs Data pretty printer, externals +dist/Data-Dumper/Makefile.PL Data pretty printer, makefile writer +dist/Data-Dumper/t/bless.t See if Data::Dumper works +dist/Data-Dumper/t/bless_var_method.t See if Data::Dumper::Bless works +dist/Data-Dumper/t/bugs.t See if Data::Dumper works +dist/Data-Dumper/t/deparse.t See if Data::Dumper::Deparse works +dist/Data-Dumper/t/dumper.t See if Data::Dumper works +dist/Data-Dumper/t/dumpperl.t See if Data::Dumper::Dumpperl works +dist/Data-Dumper/t/freezer.t See if Data::Dumper::Freezer works +dist/Data-Dumper/t/freezer_useperl.t See if Data::Dumper works +dist/Data-Dumper/t/huge.t See if Data::Dumper works on huge inputs +dist/Data-Dumper/t/indent.t See if Data::Dumper::Indent works +dist/Data-Dumper/t/lib/Testing.pm Functions used in testing Data-Dumper +dist/Data-Dumper/t/misc.t Miscellaneous tests for Data-Dumper +dist/Data-Dumper/t/names.t See if Data::Dumper::Names works +dist/Data-Dumper/t/overload.t See if Data::Dumper works for overloaded data +dist/Data-Dumper/t/pair.t See if Data::Dumper pair separator works +dist/Data-Dumper/t/perl-74170.t Regression test for stack reallocation dist/Data-Dumper/t/purity_deepcopy_maxdepth.t See if three Data::Dumper functions work -dist/Data-Dumper/t/qr.t See if Data::Dumper works with qr|/| -dist/Data-Dumper/t/quotekeys.t See if Data::Dumper::Quotekeys works -dist/Data-Dumper/t/recurse.t See if Data::Dumper::Maxrecurse works -dist/Data-Dumper/t/seen.t See if Data::Dumper::Seen works -dist/Data-Dumper/t/sortkeys.t See if Data::Dumper::Sortkeys works -dist/Data-Dumper/t/sparseseen.t See if Data::Dumper::Sparseseen works -dist/Data-Dumper/t/terse.t See if Data::Dumper terse option works -dist/Data-Dumper/t/toaster.t See if Data::Dumper::Toaster works -dist/Data-Dumper/t/trailing_comma.t See if Data::Dumper::Trailingcomma works -dist/Data-Dumper/t/values.t See if Data::Dumper::Values works -dist/Data-Dumper/Todo Data pretty printer, futures -dist/Devel-PPPort/apicheck_c.PL Devel::PPPort apicheck generator +dist/Data-Dumper/t/qr.t See if Data::Dumper works with qr|/| +dist/Data-Dumper/t/quotekeys.t See if Data::Dumper::Quotekeys works +dist/Data-Dumper/t/recurse.t See if Data::Dumper::Maxrecurse works +dist/Data-Dumper/t/seen.t See if Data::Dumper::Seen works +dist/Data-Dumper/t/sortkeys.t See if Data::Dumper::Sortkeys works +dist/Data-Dumper/t/sparseseen.t See if Data::Dumper::Sparseseen works +dist/Data-Dumper/t/terse.t See if Data::Dumper terse option works +dist/Data-Dumper/t/toaster.t See if Data::Dumper::Toaster works +dist/Data-Dumper/t/trailing_comma.t See if Data::Dumper::Trailingcomma works +dist/Data-Dumper/t/values.t See if Data::Dumper::Values works +dist/Data-Dumper/Todo Data pretty printer, futures +dist/Devel-PPPort/apicheck_c.PL Devel::PPPort apicheck generator dist/Devel-PPPort/Changes Devel::PPPort Changes file -dist/Devel-PPPort/devel/buildperl.pl Devel::PPPort perl version builder -dist/Devel-PPPort/devel/devtools.pl Devel::PPPort development utilities -dist/Devel-PPPort/devel/mkapidoc.pl Devel::PPPort apidoc collector -dist/Devel-PPPort/devel/mkppport_fnc.pl Devel::PPPort -dist/Devel-PPPort/devel/mktodo Devel::PPPort baseline/todo generator -dist/Devel-PPPort/devel/mktodo.pl Devel::PPPort baseline/todo generator -dist/Devel-PPPort/devel/regenerate Devel::PPPort API re-generator -dist/Devel-PPPort/devel/scanprov Devel::PPPort provided API scanner +dist/Devel-PPPort/devel/buildperl.pl Devel::PPPort perl version builder +dist/Devel-PPPort/devel/devtools.pl Devel::PPPort development utilities +dist/Devel-PPPort/devel/mkapidoc.pl Devel::PPPort apidoc collector +dist/Devel-PPPort/devel/mkppport_fnc.pl Devel::PPPort +dist/Devel-PPPort/devel/mktodo Devel::PPPort baseline/todo generator +dist/Devel-PPPort/devel/mktodo.pl Devel::PPPort baseline/todo generator +dist/Devel-PPPort/devel/regenerate Devel::PPPort API re-generator +dist/Devel-PPPort/devel/scanprov Devel::PPPort provided API scanner dist/Devel-PPPort/devel/update_release_date.pl Devel::PPPort timestamp builder -dist/Devel-PPPort/HACKERS Devel::PPPort hackers documentation -dist/Devel-PPPort/Makefile.PL Devel::PPPort makefile writer -dist/Devel-PPPort/MANIFEST.SKIP Devel::PPPort manifest skip file -dist/Devel-PPPort/mktests.PL Devel::PPPort test file writer -dist/Devel-PPPort/module2.c Devel::PPPort test file -dist/Devel-PPPort/module3.c Devel::PPPort test file -dist/Devel-PPPort/parts/apicheck.pl Devel::PPPort apicheck generator -dist/Devel-PPPort/parts/apidoc.fnc Devel::PPPort Perl API listing -dist/Devel-PPPort/parts/base/5003007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5004000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5004001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5004002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5004003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5004004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5004005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5005000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5005001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5005002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5005003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5005004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5006000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5006001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5006002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5007000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5007001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5007002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5007003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5008009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5009000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5009001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5009002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5009003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5009004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5009005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5010000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5010001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5011000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5011001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5011002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5011003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5011004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5011005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5012000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5012001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5012002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5012003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5012004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5012005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5013011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5014000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5014001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5014002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5014003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5014004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5015009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5016000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5016001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5016002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5016003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5017011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5018000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5018001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5018002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5018003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5018004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5019011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5020000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5020001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5020002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5020003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5021011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5022000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5022001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5022002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5022003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5022004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5023009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5024000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5024001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5024002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5024003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5024004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5025012 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5026000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5026001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5026002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5026003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5027011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5028000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5028001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5028002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5028003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5029010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5030000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5030001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5030002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5030003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031007 Devel::PPPort baseline todo file +dist/Devel-PPPort/HACKERS Devel::PPPort hackers documentation +dist/Devel-PPPort/Makefile.PL Devel::PPPort makefile writer +dist/Devel-PPPort/MANIFEST.SKIP Devel::PPPort manifest skip file +dist/Devel-PPPort/mktests.PL Devel::PPPort test file writer +dist/Devel-PPPort/module2.c Devel::PPPort test file +dist/Devel-PPPort/module3.c Devel::PPPort test file +dist/Devel-PPPort/parts/apicheck.pl Devel::PPPort apicheck generator +dist/Devel-PPPort/parts/apidoc.fnc Devel::PPPort Perl API listing +dist/Devel-PPPort/parts/base/5003007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5004000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5004001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5004002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5004003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5004004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5004005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5005000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5005001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5005002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5005003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5005004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5006000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5006001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5006002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5007000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5007001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5007002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5007003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5008009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5009000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5009001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5009002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5009003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5009004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5009005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5010000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5010001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5011000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5011001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5011002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5011003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5011004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5011005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5012000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5012001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5012002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5012003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5012004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5012005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5013011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5014000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5014001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5014002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5014003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5014004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5015009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5016000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5016001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5016002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5016003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5017011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5018000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5018001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5018002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5018003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5018004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5019011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5020000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5020001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5020002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5020003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5021011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5022000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5022001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5022002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5022003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5022004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5023009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5024000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5024001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5024002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5024003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5024004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5025012 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5026000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5026001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5026002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5026003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5027011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5028000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5028001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5028002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5028003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5029010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5030000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5030001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5030002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5030003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031007 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5031008 -dist/Devel-PPPort/parts/base/5031009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5031011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5032000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5031011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5032000 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5032001 -dist/Devel-PPPort/parts/base/5033000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5033001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/base/5033002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5033000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5033001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/base/5033002 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/base/5033003 dist/Devel-PPPort/parts/base/5033004 dist/Devel-PPPort/parts/base/5033005 @@ -3400,262 +3573,262 @@ dist/Devel-PPPort/parts/base/5035007 dist/Devel-PPPort/parts/base/5035008 dist/Devel-PPPort/parts/base/5035009 dist/Devel-PPPort/parts/base/5035010 -dist/Devel-PPPort/parts/embed.fnc Devel::PPPort Perl API listing -dist/Devel-PPPort/parts/inc/01_test Devel::PPPort include -dist/Devel-PPPort/parts/inc/call Devel::PPPort include -dist/Devel-PPPort/parts/inc/cop Devel::PPPort include -dist/Devel-PPPort/parts/inc/exception Devel::PPPort include -dist/Devel-PPPort/parts/inc/format Devel::PPPort include -dist/Devel-PPPort/parts/inc/grok Devel::PPPort include -dist/Devel-PPPort/parts/inc/gv Devel::PPPort include -dist/Devel-PPPort/parts/inc/HvNAME Devel::PPPort include +dist/Devel-PPPort/parts/embed.fnc Devel::PPPort Perl API listing +dist/Devel-PPPort/parts/inc/01_test Devel::PPPort include +dist/Devel-PPPort/parts/inc/call Devel::PPPort include +dist/Devel-PPPort/parts/inc/cop Devel::PPPort include +dist/Devel-PPPort/parts/inc/exception Devel::PPPort include +dist/Devel-PPPort/parts/inc/format Devel::PPPort include +dist/Devel-PPPort/parts/inc/grok Devel::PPPort include +dist/Devel-PPPort/parts/inc/gv Devel::PPPort include +dist/Devel-PPPort/parts/inc/HvNAME Devel::PPPort include dist/Devel-PPPort/parts/inc/inctools -dist/Devel-PPPort/parts/inc/limits Devel::PPPort include +dist/Devel-PPPort/parts/inc/limits Devel::PPPort include dist/Devel-PPPort/parts/inc/locale -dist/Devel-PPPort/parts/inc/magic Devel::PPPort include -dist/Devel-PPPort/parts/inc/magic_defs Devel::PPPort include -dist/Devel-PPPort/parts/inc/memory Devel::PPPort include -dist/Devel-PPPort/parts/inc/mess Devel::PPPort include -dist/Devel-PPPort/parts/inc/misc Devel::PPPort include -dist/Devel-PPPort/parts/inc/mPUSH Devel::PPPort include -dist/Devel-PPPort/parts/inc/MY_CXT Devel::PPPort include -dist/Devel-PPPort/parts/inc/newCONSTSUB Devel::PPPort include -dist/Devel-PPPort/parts/inc/newRV Devel::PPPort include -dist/Devel-PPPort/parts/inc/newSV_type Devel::PPPort include -dist/Devel-PPPort/parts/inc/newSVpv Devel::PPPort include -dist/Devel-PPPort/parts/inc/podtest Devel::PPPort include -dist/Devel-PPPort/parts/inc/ppphbin Devel::PPPort include -dist/Devel-PPPort/parts/inc/ppphdoc Devel::PPPort include -dist/Devel-PPPort/parts/inc/ppphtest Devel::PPPort include -dist/Devel-PPPort/parts/inc/pv_tools Devel::PPPort include -dist/Devel-PPPort/parts/inc/pvs Devel::PPPort include -dist/Devel-PPPort/parts/inc/shared_pv Devel::PPPort include -dist/Devel-PPPort/parts/inc/snprintf Devel::PPPort include -dist/Devel-PPPort/parts/inc/sprintf Devel::PPPort include -dist/Devel-PPPort/parts/inc/strlfuncs Devel::PPPort include +dist/Devel-PPPort/parts/inc/magic Devel::PPPort include +dist/Devel-PPPort/parts/inc/magic_defs Devel::PPPort include +dist/Devel-PPPort/parts/inc/memory Devel::PPPort include +dist/Devel-PPPort/parts/inc/mess Devel::PPPort include +dist/Devel-PPPort/parts/inc/misc Devel::PPPort include +dist/Devel-PPPort/parts/inc/mPUSH Devel::PPPort include +dist/Devel-PPPort/parts/inc/MY_CXT Devel::PPPort include +dist/Devel-PPPort/parts/inc/newCONSTSUB Devel::PPPort include +dist/Devel-PPPort/parts/inc/newRV Devel::PPPort include +dist/Devel-PPPort/parts/inc/newSV_type Devel::PPPort include +dist/Devel-PPPort/parts/inc/newSVpv Devel::PPPort include +dist/Devel-PPPort/parts/inc/podtest Devel::PPPort include +dist/Devel-PPPort/parts/inc/ppphbin Devel::PPPort include +dist/Devel-PPPort/parts/inc/ppphdoc Devel::PPPort include +dist/Devel-PPPort/parts/inc/ppphtest Devel::PPPort include +dist/Devel-PPPort/parts/inc/pv_tools Devel::PPPort include +dist/Devel-PPPort/parts/inc/pvs Devel::PPPort include +dist/Devel-PPPort/parts/inc/shared_pv Devel::PPPort include +dist/Devel-PPPort/parts/inc/snprintf Devel::PPPort include +dist/Devel-PPPort/parts/inc/sprintf Devel::PPPort include +dist/Devel-PPPort/parts/inc/strlfuncs Devel::PPPort include dist/Devel-PPPort/parts/inc/subparse -dist/Devel-PPPort/parts/inc/Sv_set Devel::PPPort include -dist/Devel-PPPort/parts/inc/sv_xpvf Devel::PPPort include -dist/Devel-PPPort/parts/inc/SvPV Devel::PPPort include -dist/Devel-PPPort/parts/inc/SvREFCNT Devel::PPPort include -dist/Devel-PPPort/parts/inc/threads Devel::PPPort include +dist/Devel-PPPort/parts/inc/Sv_set Devel::PPPort include +dist/Devel-PPPort/parts/inc/sv_xpvf Devel::PPPort include +dist/Devel-PPPort/parts/inc/SvPV Devel::PPPort include +dist/Devel-PPPort/parts/inc/SvREFCNT Devel::PPPort include +dist/Devel-PPPort/parts/inc/threads Devel::PPPort include dist/Devel-PPPort/parts/inc/utf8 -dist/Devel-PPPort/parts/inc/uv Devel::PPPort include -dist/Devel-PPPort/parts/inc/variables Devel::PPPort include -dist/Devel-PPPort/parts/inc/version Devel::PPPort include -dist/Devel-PPPort/parts/inc/warn Devel::PPPort include -dist/Devel-PPPort/parts/ppport.fnc Devel::PPPort API listing -dist/Devel-PPPort/parts/ppptools.pl Devel::PPPort various utilities -dist/Devel-PPPort/parts/todo/5003007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5004000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5004001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5004002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5004003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5004004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5004005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5005000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5005001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5005002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5005003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5005004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5006000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5006001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5006002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5007000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5007001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5007002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5007003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008006 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008007 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008008 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5008009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5009000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5009001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5009002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5009003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5009004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5009005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5010000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5010001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5011000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5011001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5011002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5011003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5011004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5011005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5012000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5012001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5012002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5012003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5012004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5012005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013006 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013007 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013008 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013010 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5013011 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5014000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5014001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5014002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5014003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5014004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015006 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015007 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015008 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5015009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5016000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5016001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5016002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5016003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017006 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017007 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017008 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017010 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5017011 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5018000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5018001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5018002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5018003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5018004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019006 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019007 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019008 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019010 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5019011 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5020000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5020001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5020002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5020003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5021004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021006 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021007 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021008 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021010 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5021011 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5022000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5022001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5022002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5022003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5022004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5023000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023004 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023005 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023006 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023007 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023008 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5023009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5024000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5024001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5024002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5024003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5024004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5025012 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5026000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5026001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5026002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5026003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5027011 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5028000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5028001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5028002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5028003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5029000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029007 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029008 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029009 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5029010 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5030000 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5030001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5030002 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5030003 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5031000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5031001 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5031002 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5031003 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5031004 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5031005 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5031006 Devel::PPPort baseline todo file -dist/Devel-PPPort/parts/todo/5031007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/inc/uv Devel::PPPort include +dist/Devel-PPPort/parts/inc/variables Devel::PPPort include +dist/Devel-PPPort/parts/inc/version Devel::PPPort include +dist/Devel-PPPort/parts/inc/warn Devel::PPPort include +dist/Devel-PPPort/parts/ppport.fnc Devel::PPPort API listing +dist/Devel-PPPort/parts/ppptools.pl Devel::PPPort various utilities +dist/Devel-PPPort/parts/todo/5003007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5004000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5004001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5004002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5004003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5004004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5004005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5005000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5005001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5005002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5005003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5005004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5006000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5006001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5006002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5007000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5007001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5007002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5007003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008006 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008007 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008008 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5008009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5009000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5009001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5009002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5009003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5009004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5009005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5010000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5010001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5011000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5011001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5011002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5011003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5011004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5011005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5012000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5012001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5012002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5012003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5012004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5012005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013006 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013007 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013008 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013010 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5013011 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5014000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5014001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5014002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5014003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5014004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015006 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015007 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015008 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5015009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5016000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5016001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5016002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5016003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017006 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017007 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017008 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017010 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5017011 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5018000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5018001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5018002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5018003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5018004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019006 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019007 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019008 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019010 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5019011 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5020000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5020001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5020002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5020003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5021004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021006 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021007 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021008 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021010 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5021011 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5022000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5022001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5022002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5022003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5022004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5023000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023004 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023005 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023006 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023007 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023008 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5023009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5024000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5024001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5024002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5024003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5024004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5025012 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5026000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5026001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5026002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5026003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5027011 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5028000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5028001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5028002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5028003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5029000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029007 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029008 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029009 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5029010 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5030000 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5030001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5030002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5030003 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031001 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5031002 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5031003 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5031004 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5031005 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5031006 Devel::PPPort baseline todo file +dist/Devel-PPPort/parts/todo/5031007 Devel::PPPort baseline todo file dist/Devel-PPPort/parts/todo/5031008 -dist/Devel-PPPort/parts/todo/5031009 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5031010 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5031011 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5032000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031009 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031010 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5031011 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5032000 Devel::PPPort todo file dist/Devel-PPPort/parts/todo/5032001 -dist/Devel-PPPort/parts/todo/5033000 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5033001 Devel::PPPort todo file -dist/Devel-PPPort/parts/todo/5033002 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5033000 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5033001 Devel::PPPort todo file +dist/Devel-PPPort/parts/todo/5033002 Devel::PPPort todo file dist/Devel-PPPort/parts/todo/5033003 dist/Devel-PPPort/parts/todo/5033004 dist/Devel-PPPort/parts/todo/5033005 @@ -3674,57 +3847,61 @@ dist/Devel-PPPort/parts/todo/5035007 dist/Devel-PPPort/parts/todo/5035008 dist/Devel-PPPort/parts/todo/5035009 dist/Devel-PPPort/parts/todo/5035010 -dist/Devel-PPPort/PPPort.xs Devel::PPPort dummy PPPort.xs -dist/Devel-PPPort/ppport_h.PL Devel::PPPort ppport.h writer -dist/Devel-PPPort/PPPort_pm.PL Devel::PPPort PPPort.pm writer +dist/Devel-PPPort/PPPort.xs Devel::PPPort dummy PPPort.xs +dist/Devel-PPPort/ppport_h.PL Devel::PPPort ppport.h writer +dist/Devel-PPPort/PPPort_pm.PL Devel::PPPort PPPort.pm writer dist/Devel-PPPort/RealPPPort_xs.PL Devel::PPPort RealPPPort.xs writer -dist/Devel-PPPort/soak Devel::PPPort Test Harness to run under various Perls +dist/Devel-PPPort/soak Devel::PPPort Test Harness to run under various Perls dist/Devel-PPPort/t/testutil.pl Devel::PPPort test utilities -dist/Devel-PPPort/TODO Devel::PPPort developer notes -dist/Devel-PPPort/typemap Devel::PPPort Typemap +dist/Devel-PPPort/TODO Devel::PPPort developer notes +dist/Devel-PPPort/typemap Devel::PPPort Typemap dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm Generate stubs for SelfLoader.pm dist/Devel-SelfStubber/t/Devel-SelfStubber.t See if Devel::SelfStubber works -dist/Dumpvalue/lib/Dumpvalue.pm Screen dump of perl values -dist/Dumpvalue/t/Dumpvalue.t See if Dumpvalue works +dist/Dumpvalue/lib/Dumpvalue.pm Screen dump of perl values +dist/Dumpvalue/t/Dumpvalue.t See if Dumpvalue works dist/Dumpvalue/t/extend-coverage.t Extend Dumpvalue's test coverage -dist/Dumpvalue/t/lib/TieOut.pm Helper module for Dumpvalue tests +dist/Dumpvalue/t/lib/TieOut.pm Helper module for Dumpvalue tests dist/Dumpvalue/t/rt-134441-dumpvalue.t See if Dumpvalue works +dist/encoding-warnings/Changes encoding::warnings dist/encoding-warnings/lib/encoding/warnings.pm warn on implicit encoding conversions -dist/encoding-warnings/t/1-warning.t tests for encoding::warnings -dist/encoding-warnings/t/2-fatal.t tests for encoding::warnings -dist/encoding-warnings/t/3-normal.t tests for encoding::warnings -dist/encoding-warnings/t/4-lexical.t tests for encoding::warnings -dist/Env/lib/Env.pm Map environment into ordinary variables -dist/Env/t/array.t See if Env works for arrays -dist/Env/t/env.t See if Env works +dist/encoding-warnings/Makefile.PL encoding::warnings +dist/encoding-warnings/t/1-warning.t tests for encoding::warnings +dist/encoding-warnings/t/2-fatal.t tests for encoding::warnings +dist/encoding-warnings/t/3-normal.t tests for encoding::warnings +dist/encoding-warnings/t/4-lexical.t tests for encoding::warnings +dist/Env/lib/Env.pm Map environment into ordinary variables +dist/Env/t/array.t See if Env works for arrays +dist/Env/t/env.t See if Env works +dist/Exporter/Changes History of changes for Exporter dist/Exporter/lib/Exporter.pm Exporter base class dist/Exporter/lib/Exporter/Heavy.pm Complicated routines for Exporter +dist/Exporter/Makefile.PL Build Exporter dist/Exporter/t/Exporter.t See if Exporter works dist/Exporter/t/warn.t See if Exporter respects warning handlers -dist/ExtUtils-CBuilder/Changes EU-CB change log -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm Compile and link C code for Perl modules -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm Base class for ExtUtils::CBuilder methods -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm CBuilder methods for AIX +dist/ExtUtils-CBuilder/Changes EU-CB change log +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm Compile and link C code for Perl modules +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm Base class for ExtUtils::CBuilder methods +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm CBuilder methods for AIX dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/android.pm CBuilder methods for Android -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm CBuilder methods for cygwin -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm CBuilder methods for darwin +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm CBuilder methods for cygwin +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm CBuilder methods for darwin dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm CBuilder methods for OSF -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm CBuilder methods for OS/2 -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm CBuilder methods for Unix -dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm CBuilder methods for VMS +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm CBuilder methods for OS/2 +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm CBuilder methods for Unix +dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm CBuilder methods for VMS dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm CBuilder methods for Windows dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm CBuilder methods for Windows dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm CBuilder methods for Windows dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm CBuilder methods for Windows -dist/ExtUtils-CBuilder/LICENSE EU-CB license -dist/ExtUtils-CBuilder/Makefile.PL EU-CB configuration script -dist/ExtUtils-CBuilder/README.patching EU-CB patching nstructions -dist/ExtUtils-CBuilder/README.release EU-CB release instructions -dist/ExtUtils-CBuilder/t/00-have-compiler.t ExtUtils::CBuilder tests -dist/ExtUtils-CBuilder/t/01-basic.t tests for ExtUtils::CBuilder -dist/ExtUtils-CBuilder/t/02-link.t tests for ExtUtils::CBuilder -dist/ExtUtils-CBuilder/t/03-cplusplus.t tests for ExtUtils::CBuilder -dist/ExtUtils-CBuilder/t/04-base.t tests for ExtUtils::CBuilder +dist/ExtUtils-CBuilder/LICENSE EU-CB license +dist/ExtUtils-CBuilder/Makefile.PL EU-CB configuration script +dist/ExtUtils-CBuilder/README.patching EU-CB patching nstructions +dist/ExtUtils-CBuilder/README.release EU-CB release instructions +dist/ExtUtils-CBuilder/t/00-have-compiler.t ExtUtils::CBuilder tests +dist/ExtUtils-CBuilder/t/01-basic.t tests for ExtUtils::CBuilder +dist/ExtUtils-CBuilder/t/02-link.t tests for ExtUtils::CBuilder +dist/ExtUtils-CBuilder/t/03-cplusplus.t tests for ExtUtils::CBuilder +dist/ExtUtils-CBuilder/t/04-base.t tests for ExtUtils::CBuilder dist/ExtUtils-ParseXS/Changes ExtUtils::ParseXS change log dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm converts Perl XS code into C code dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod ExtUtils::ParseXS documentation @@ -3782,15 +3959,22 @@ dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm Primitive STDOUT/ERR capturing dist/ExtUtils-ParseXS/t/lib/TypemapTest/Foo.pm ExtUtils::Typemaps tests dist/ExtUtils-ParseXS/t/pseudotypemap1 A test-typemap dist/ExtUtils-ParseXS/t/typemap Standard typemap for controlled testing +dist/ExtUtils-ParseXS/t/XSAlias.xs Test file for ExtUtils::ParseXS ALIAS tests dist/ExtUtils-ParseXS/t/XSBroken.xs Test file for ExtUtils::ParseXS tests +dist/ExtUtils-ParseXS/t/XSFalsePositive.xs Test file for ExtUtils::ParseXS tests +dist/ExtUtils-ParseXS/t/XSFalsePositive2.xs Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSInclude.xsh Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSMore.xs Test file for ExtUtils::ParseXS tests +dist/ExtUtils-ParseXS/t/XSNoMap.xs dist/ExtUtils-ParseXS/t/XSTest.pm Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSTest.xs Test file for ExtUtils::ParseXS tests +dist/ExtUtils-ParseXS/t/XSTightDirectives.xs Test file for ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSUsage.pm ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSUsage.xs ExtUtils::ParseXS tests dist/ExtUtils-ParseXS/t/XSWarn.xs ExtUtils::ParseXS tests +dist/Filter-Simple/Changes History of change for Filter::Simple dist/Filter-Simple/lib/Filter/Simple.pm Simple frontend to Filter::Util::Call +dist/Filter-Simple/Makefile.PL Build Filter::Simple dist/Filter-Simple/t/code_no_comments.t See if Filter::Simple works dist/Filter-Simple/t/data.t See if Filter::Simple works dist/Filter-Simple/t/export.t See if Filter::Simple works @@ -3804,14 +3988,17 @@ dist/Filter-Simple/t/lib/Filter/Simple/FilterOnlyTest.pm Helper file for Filter: dist/Filter-Simple/t/lib/Filter/Simple/FilterTest.pm Helper file for Filter::Simple tests dist/Filter-Simple/t/lib/Filter/Simple/ImportTest.pm Helper file for Filter::Simple tests dist/Filter-Simple/t/no.t See if Filter::Simple works -dist/FindBin/lib/FindBin.pm Find name of currently executing program -dist/FindBin/t/FindBin.t See if FindBin works -dist/I18N-Collate/lib/I18N/Collate.pm Routines to do strxfrm-based collation -dist/I18N-Collate/t/I18N-Collate.t See if I18N::Collate works -dist/I18N-LangTags/ChangeLog I18N::LangTags +dist/FindBin/Changes Tracks changes made in blead +dist/FindBin/lib/FindBin.pm Find name of currently executing program +dist/FindBin/Makefile.PL Build FindBin +dist/FindBin/t/FindBin.t See if FindBin works +dist/I18N-Collate/lib/I18N/Collate.pm Routines to do strxfrm-based collation +dist/I18N-Collate/t/I18N-Collate.t See if I18N::Collate works +dist/I18N-LangTags/ChangeLog I18N::LangTags change history dist/I18N-LangTags/lib/I18N/LangTags.pm I18N::LangTags dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm Detect language preferences dist/I18N-LangTags/lib/I18N/LangTags/List.pm List of tags for human languages +dist/I18N-LangTags/Makefile.PL Build I18N::LangTags dist/I18N-LangTags/README I18N::LangTags dist/I18N-LangTags/t/01_about_verbose.t See whether I18N::LangTags works dist/I18N-LangTags/t/05_main.t See whether I18N::LangTags works @@ -3821,59 +4008,60 @@ dist/I18N-LangTags/t/20_locales.t See whether I18N::LangTags works dist/I18N-LangTags/t/50_super.t See whether I18N::LangTags works dist/I18N-LangTags/t/55_supers_strict.t See whether I18N::LangTags works dist/I18N-LangTags/t/80_all_env.t See whether I18N::LangTags works -dist/if/Changes if perl module change log -dist/if/if.pm For "use if" -dist/if/MANIFEST MANIFEST for if.pm -dist/if/META.json META.json for if.pm -dist/if/META.yml META.json for if.pm -dist/if/t/if.t Tests for "use if" -dist/IO/ChangeLog IO perl module change log -dist/IO/hints/sco.pl Hint for IO for named architecture -dist/IO/IO.pm Top-level interface to IO::* classes -dist/IO/IO.xs IO extension external subroutines -dist/IO/lib/IO/Dir.pm IO directory reading package -dist/IO/lib/IO/File.pm IO file handle package -dist/IO/lib/IO/Handle.pm IO base handle package -dist/IO/lib/IO/Pipe.pm IO pipe package -dist/IO/lib/IO/Poll.pm IO system poll() interface -dist/IO/lib/IO/Seekable.pm IO methods for seekable handles -dist/IO/lib/IO/Select.pm IO system select() interface -dist/IO/lib/IO/Socket.pm IO socket handle package -dist/IO/lib/IO/Socket/INET.pm IO INET specific socket methods -dist/IO/lib/IO/Socket/UNIX.pm IO UNIX specific socket methods -dist/IO/Makefile.PL IO extension makefile writer -dist/IO/poll.c IO poll() emulation using select() -dist/IO/poll.h IO poll() emulation using select() -dist/IO/README IO extension maintenance notice -dist/IO/t/cachepropagate-tcp.t See if IO::Socket duplication works -dist/IO/t/cachepropagate-udp.t See if IO::Socket duplication works -dist/IO/t/cachepropagate-unix.t See if IO::Socket duplication works -dist/IO/t/gh17447.t Tests fix for #17447 -dist/IO/t/IO.t See if IO works -dist/IO/t/io_const.t See if constants from IO work -dist/IO/t/io_dir.t See if directory-related methods from IO work -dist/IO/t/io_dup.t See if dup()-related methods from IO work -dist/IO/t/io_file.t See if binmode()-related methods on IO::File work -dist/IO/t/io_file_export.t Test IO::File exports -dist/IO/t/io_getline.t Test getline and getlines -dist/IO/t/io_leak.t See if IO leaks SVs (only run in core) -dist/IO/t/io_linenum.t See if I/O line numbers are tracked correctly -dist/IO/t/io_multihomed.t See if INET sockets work with multi-homed hosts -dist/IO/t/io_pipe.t See if pipe()-related methods from IO work -dist/IO/t/io_poll.t See if poll()-related methods from IO work -dist/IO/t/io_sel.t See if select()-related methods from IO work -dist/IO/t/io_sock.t See if INET socket-related methods from IO work -dist/IO/t/io_sock_errstr.t See if socket constructors put error string in the right place -dist/IO/t/io_taint.t See if the untaint method from IO works -dist/IO/t/io_tell.t See if seek()/tell()-related methods from IO work -dist/IO/t/io_udp.t See if UDP socket-related methods from IO work -dist/IO/t/io_unix.t See if UNIX socket-related methods from IO work -dist/IO/t/io_utf8.t See if perlio opens work -dist/IO/t/io_utf8argv.t See if <> respects open pragma -dist/IO/t/io_xs.t See if XSUB methods from IO work -dist/lib/lib_pm.PL For "use lib", produces lib/lib.pm +dist/if/Changes if perl module change log +dist/if/if.pm For "use if" +dist/if/Makefile.PL Makefile.PL for if.pm +dist/if/MANIFEST MANIFEST for if.pm +dist/if/META.json META.json for if.pm +dist/if/META.yml META.json for if.pm +dist/if/t/if.t Tests for "use if" +dist/IO/ChangeLog IO perl module change log +dist/IO/hints/sco.pl Hint for IO for named architecture +dist/IO/IO.pm Top-level interface to IO::* classes +dist/IO/IO.xs IO extension external subroutines +dist/IO/lib/IO/Dir.pm IO directory reading package +dist/IO/lib/IO/File.pm IO file handle package +dist/IO/lib/IO/Handle.pm IO base handle package +dist/IO/lib/IO/Pipe.pm IO pipe package +dist/IO/lib/IO/Poll.pm IO system poll() interface +dist/IO/lib/IO/Seekable.pm IO methods for seekable handles +dist/IO/lib/IO/Select.pm IO system select() interface +dist/IO/lib/IO/Socket.pm IO socket handle package +dist/IO/lib/IO/Socket/INET.pm IO INET specific socket methods +dist/IO/lib/IO/Socket/UNIX.pm IO UNIX specific socket methods +dist/IO/Makefile.PL IO extension makefile writer +dist/IO/poll.c IO poll() emulation using select() +dist/IO/poll.h IO poll() emulation using select() +dist/IO/README IO extension maintenance notice +dist/IO/t/cachepropagate-tcp.t See if IO::Socket duplication works +dist/IO/t/cachepropagate-udp.t See if IO::Socket duplication works +dist/IO/t/cachepropagate-unix.t See if IO::Socket duplication works +dist/IO/t/gh17447.t Tests fix for #17447 +dist/IO/t/IO.t See if IO works +dist/IO/t/io_const.t See if constants from IO work +dist/IO/t/io_dir.t See if directory-related methods from IO work +dist/IO/t/io_dup.t See if dup()-related methods from IO work +dist/IO/t/io_file.t See if binmode()-related methods on IO::File work +dist/IO/t/io_file_export.t Test IO::File exports +dist/IO/t/io_getline.t Test getline and getlines +dist/IO/t/io_leak.t See if IO leaks SVs (only run in core) +dist/IO/t/io_linenum.t See if I/O line numbers are tracked correctly +dist/IO/t/io_multihomed.t See if INET sockets work with multi-homed hosts +dist/IO/t/io_pipe.t See if pipe()-related methods from IO work +dist/IO/t/io_poll.t See if poll()-related methods from IO work +dist/IO/t/io_sel.t See if select()-related methods from IO work +dist/IO/t/io_sock.t See if INET socket-related methods from IO work +dist/IO/t/io_sock_errstr.t See if socket constructors put error string in the right place +dist/IO/t/io_taint.t See if the untaint method from IO works +dist/IO/t/io_tell.t See if seek()/tell()-related methods from IO work +dist/IO/t/io_udp.t See if UDP socket-related methods from IO work +dist/IO/t/io_unix.t See if UNIX socket-related methods from IO work +dist/IO/t/io_utf8.t See if perlio opens work +dist/IO/t/io_utf8argv.t See if <> respects open pragma +dist/IO/t/io_xs.t See if XSUB methods from IO work +dist/lib/lib_pm.PL For "use lib", produces lib/lib.pm dist/lib/Makefile.PL -dist/lib/t/01lib.t For "use lib" testing +dist/lib/t/01lib.t For "use lib" testing dist/Locale-Maketext/ChangeLog Locale::Maketext dist/Locale-Maketext/lib/Locale/Maketext.pm Locale::Maketext dist/Locale-Maketext/lib/Locale/Maketext.pod Locale::Maketext documentation @@ -3881,10 +4069,11 @@ dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod Locale::Maketext dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm Locale::Maketext dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm Locale::Maketext dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod Locale::Maketext documentation article +dist/Locale-Maketext/Makefile.PL Build Locale::Maketext dist/Locale-Maketext/README Locale::Maketext dist/Locale-Maketext/t/01_about_verbose.t See if Locale::Maketext works dist/Locale-Maketext/t/04_use_external_lex_cache.t See if Locale::Maketext works -dist/Locale-Maketext/t/09_compile.t Test Locale::Maketext::_compile +dist/Locale-Maketext/t/09_compile.t Test Locale::Maketext::_compile dist/Locale-Maketext/t/10_make.t See if Locale::Maketext works dist/Locale-Maketext/t/20_get.t See if Locale::Maketext works dist/Locale-Maketext/t/30_eval_dollar_at.t See if Locale::Maketext works @@ -3898,24 +4087,33 @@ dist/Locale-Maketext/t/92_blacklist.t See if Locale::Maketext works dist/Locale-Maketext/t/93_whitelist.t See if Locale::Maketext works dist/Locale-Maketext/t/94_denylist.t See if Locale::Maketext works dist/Locale-Maketext/t/95_allowlist.t See if Locale::Maketext works -dist/Module-CoreList/Changes Module::CoreList Changes -dist/Module-CoreList/corelist The corelist command-line utility -dist/Module-CoreList/identify-dependencies A usage example for Module::CoreList -dist/Module-CoreList/lib/Module/CoreList.pm Module::CoreList -dist/Module-CoreList/lib/Module/CoreList.pod Module::CoreList +dist/Math-Complex/ChangeLog History of changes for Math::Complex +dist/Math-Complex/lib/Math/Complex.pm A package for doing math with complex numbers +dist/Math-Complex/lib/Math/Trig.pm A simple interface to complex trigonometry +dist/Math-Complex/Makefile.PL Build Math::Complex +dist/Math-Complex/t/Complex.t See if Math::Complex works +dist/Math-Complex/t/Trig.t See if Math::Trig works +dist/Math-Complex/t/underbar.t See if Math::Complex works +dist/Math-Complex/TODO TODO for Math::Complex +dist/Module-CoreList/Changes Module::CoreList Changes +dist/Module-CoreList/corelist The corelist command-line utility +dist/Module-CoreList/identify-dependencies A usage example for Module::CoreList +dist/Module-CoreList/lib/Module/CoreList.pm Module::CoreList +dist/Module-CoreList/lib/Module/CoreList.pod Module::CoreList dist/Module-CoreList/lib/Module/CoreList/Utils.pm Module::CoreList guts -dist/Module-CoreList/Makefile.PL Module::CoreList -dist/Module-CoreList/MANIFEST Module::CoreList -dist/Module-CoreList/README Module::CoreList -dist/Module-CoreList/t/corelist.t Module::CoreList tests -dist/Module-CoreList/t/deprecated.t Module::CoreList tests -dist/Module-CoreList/t/find_modules.t Module::CoreList tests -dist/Module-CoreList/t/is_core.t Module::CoreList tests +dist/Module-CoreList/Makefile.PL Module::CoreList +dist/Module-CoreList/MANIFEST Module::CoreList +dist/Module-CoreList/README Module::CoreList +dist/Module-CoreList/t/corelist.t Module::CoreList tests +dist/Module-CoreList/t/deprecated.t Module::CoreList tests +dist/Module-CoreList/t/find_modules.t Module::CoreList tests +dist/Module-CoreList/t/is_core.t Module::CoreList tests dist/Module-CoreList/t/maintainer.t Module::CoreList tests -dist/Module-CoreList/t/pod.t Module::CoreList tests -dist/Module-CoreList/t/utils.t Module::CoreList tests +dist/Module-CoreList/t/pod.t Module::CoreList tests +dist/Module-CoreList/t/utils.t Module::CoreList tests dist/Net-Ping/Changes Net::Ping dist/Net-Ping/lib/Net/Ping.pm Hello, anybody home? +dist/Net-Ping/Makefile.PL Build Net::Ping dist/Net-Ping/t/000_load.t dist/Net-Ping/t/001_new.t dist/Net-Ping/t/010_pingecho.t @@ -3924,7 +4122,7 @@ dist/Net-Ping/t/120_udp_inst.t Ping Net::Ping dist/Net-Ping/t/130_tcp_inst.t Ping Net::Ping dist/Net-Ping/t/140_stream_inst.t Ping Net::Ping dist/Net-Ping/t/150_syn_inst.t Ping Net::Ping -dist/Net-Ping/t/190_alarm.t Ping Net::Ping +dist/Net-Ping/t/190_alarm.t Ping Net::Ping dist/Net-Ping/t/200_ping_tcp.t Ping Net::Ping dist/Net-Ping/t/250_ping_hires.t Ping Net::Ping dist/Net-Ping/t/300_ping_stream.t Ping Net::Ping @@ -3936,12 +4134,13 @@ dist/Net-Ping/t/500_ping_icmp.t Ping Net::Ping dist/Net-Ping/t/501_ping_icmpv6.t Ping Net::Ping dist/Net-Ping/t/510_ping_udp.t Ping Net::Ping dist/Net-Ping/t/520_icmp_ttl.t Ping Net::Ping -dist/PathTools/Changes Changelog for PathTools dist +dist/Net-Ping/TODO TODO list for Net::Ping +dist/PathTools/Changes Changelog for PathTools dist dist/PathTools/Cwd.pm Various cwd routines (getcwd, fastcwd, chdir) dist/PathTools/Cwd.xs Cwd extension external subroutines -dist/PathTools/lib/File/Spec.pm portable operations on file names +dist/PathTools/lib/File/Spec.pm portable operations on file names dist/PathTools/lib/File/Spec/AmigaOS.pm portable operations on AmigaOS file names -dist/PathTools/lib/File/Spec/Cygwin.pm portable operations on Cygwin file names +dist/PathTools/lib/File/Spec/Cygwin.pm portable operations on Cygwin file names dist/PathTools/lib/File/Spec/Epoc.pm portable operations on EPOC file names dist/PathTools/lib/File/Spec/Functions.pm Function interface to File::Spec object methods dist/PathTools/lib/File/Spec/Mac.pm portable operations on Mac file names @@ -3950,45 +4149,47 @@ dist/PathTools/lib/File/Spec/Unix.pm portable operations on Unix file names dist/PathTools/lib/File/Spec/VMS.pm portable operations on VMS file names dist/PathTools/lib/File/Spec/Win32.pm portable operations on Win32 and NetWare file names dist/PathTools/Makefile.PL makefile writer for Cwd -dist/PathTools/MANIFEST MANIFEST for PathTools -dist/PathTools/META.json META.json for PathTools -dist/PathTools/META.yml META.yml for PathTools -dist/PathTools/t/abs2rel.t See if File::Spec->abs2rel works +dist/PathTools/MANIFEST MANIFEST for PathTools +dist/PathTools/META.json META.json for PathTools +dist/PathTools/META.yml META.yml for PathTools +dist/PathTools/t/abs2rel.t See if File::Spec->abs2rel works dist/PathTools/t/crossplatform.t See if File::Spec works crossplatform -dist/PathTools/t/cwd.t See if Cwd works +dist/PathTools/t/cwd.t See if Cwd works dist/PathTools/t/cwd_enoent.t See if getcwd errors correctly dist/PathTools/t/Functions.t See if File::Spec::Functions works -dist/PathTools/t/rel2abs2rel.t See if File::Spec->rel2abs/abs2rel works -dist/PathTools/t/Spec.t See if File::Spec works +dist/PathTools/t/rel2abs2rel.t See if File::Spec->rel2abs/abs2rel works +dist/PathTools/t/Spec.t See if File::Spec works dist/PathTools/t/Spec-taint.t See if File::Spec works with taint dist/PathTools/t/taint.t See if Cwd works with taint dist/PathTools/t/tmpdir.t See if File::Spec->tmpdir() works dist/PathTools/t/win32.t See if Cwd works on Win32 -dist/Safe/Changes Changes for Safe.pm -dist/Safe/Makefile.PL Makefile.PL for Safe.pm -dist/Safe/MANIFEST MANIFEST for Safe.pm -dist/Safe/META.yml META.yml for Safe.pm -dist/Safe/README README for Safe.pm -dist/Safe/Safe.pm Safe extension Perl module -dist/Safe/t/safe1.t See if Safe works -dist/Safe/t/safe2.t See if Safe works -dist/Safe/t/safe3.t See if Safe works -dist/Safe/t/safeload.t Tests that some modules can be loaded by Safe -dist/Safe/t/safenamedcap.t Tests that Tie::Hash::NamedCapture can be loaded -dist/Safe/t/safeops.t Tests that all ops can be trapped by Safe -dist/Safe/t/saferegexp.t Tests Safe with regular expressions -dist/Safe/t/safesecurity.t Tests misc. security fixes in Safe -dist/Safe/t/safesort.t Tests Safe with sort -dist/Safe/t/safeuniversal.t Tests Safe with functions from universal.c -dist/Safe/t/safeutf8.t Tests Safe with utf8.pm -dist/Safe/t/safewrap.t Tests Safe::wrap_code_ref() +dist/Safe/Changes Changes for Safe.pm +dist/Safe/Makefile.PL Makefile.PL for Safe.pm +dist/Safe/MANIFEST MANIFEST for Safe.pm +dist/Safe/META.yml META.yml for Safe.pm +dist/Safe/README README for Safe.pm +dist/Safe/Safe.pm Safe extension Perl module +dist/Safe/t/safe1.t See if Safe works +dist/Safe/t/safe2.t See if Safe works +dist/Safe/t/safe3.t See if Safe works +dist/Safe/t/safeload.t Tests that some modules can be loaded by Safe +dist/Safe/t/safenamedcap.t Tests that Tie::Hash::NamedCapture can be loaded +dist/Safe/t/safeops.t Tests that all ops can be trapped by Safe +dist/Safe/t/saferegexp.t Tests Safe with regular expressions +dist/Safe/t/safesecurity.t Tests misc. security fixes in Safe +dist/Safe/t/safesort.t Tests Safe with sort +dist/Safe/t/safeuniversal.t Tests Safe with functions from universal.c +dist/Safe/t/safeutf8.t Tests Safe with utf8.pm +dist/Safe/t/safewrap.t Tests Safe::wrap_code_ref() dist/Search-Dict/Changes Change log dist/Search-Dict/lib/Search/Dict.pm Perform binary search on dictionaries dist/Search-Dict/Makefile.PL Makefile.PL dist/Search-Dict/README.patching Patch instructions dist/Search-Dict/README.release Release instructions dist/Search-Dict/t/Dict.t See if Search::Dict works +dist/SelfLoader/Changes History of changes for SelfLoader dist/SelfLoader/lib/SelfLoader.pm Load functions only on demand +dist/SelfLoader/Makefile.PL Build SelfLoader dist/SelfLoader/t/01SelfLoader.t See if SelfLoader works dist/SelfLoader/t/02SelfLoader-buggy.t See if SelfLoader works dist/SelfLoader/t/03taint.t See if SelfLoader works under taint @@ -4007,6 +4208,7 @@ dist/Storable/t/attach.t Check STORABLE_attach doesn't create objects unnecessa dist/Storable/t/attach_errors.t Trigger and test STORABLE_attach errors dist/Storable/t/attach_singleton.t Test STORABLE_attach for the Singleton pattern dist/Storable/t/blessed.t See if Storable works +dist/Storable/t/boolean.t See if Storable works dist/Storable/t/canonical.t See if Storable works dist/Storable/t/circular_hook.t Test thaw hook called depth-first for circular refs dist/Storable/t/code.t See if Storable works @@ -4056,25 +4258,31 @@ dist/Storable/t/utf8hash.t See if Storable works dist/Storable/t/weak.t Can Storable store weakrefs dist/Term-Complete/lib/Term/Complete.pm A command completion subroutine dist/Term-Complete/t/Complete.t See if Term::Complete works -dist/Term-ReadLine/lib/Term/ReadLine.pm Stub readline library -dist/Term-ReadLine/t/AE.t See if Term::ReadLine works -dist/Term-ReadLine/t/AETk.t See if Term::ReadLine works -dist/Term-ReadLine/t/ReadLine.t See if Term::ReadLine works -dist/Term-ReadLine/t/ReadLine-STDERR.t See if Term::ReadLine works -dist/Term-ReadLine/t/Tk.t See if Term::ReadLine works -dist/Test/lib/Test.pm A simple framework for writing test scripts -dist/Test/t/05_about_verbose.t See if Test works -dist/Test/t/fail.t See if Test works -dist/Test/t/mix.t See if Test works -dist/Test/t/multiline.t See if Test works -dist/Test/t/onfail.t See if Test works -dist/Test/t/qr.t See if Test works -dist/Test/t/skip.t See if Test works -dist/Test/t/success.t See if Test works -dist/Test/t/todo.t See if Test works -dist/Text-Abbrev/lib/Text/Abbrev.pm An abbreviation table builder +dist/Term-ReadLine/lib/Term/ReadLine.pm Stub readline library +dist/Term-ReadLine/t/AE.t See if Term::ReadLine works +dist/Term-ReadLine/t/AETk.t See if Term::ReadLine works +dist/Term-ReadLine/t/ReadLine.t See if Term::ReadLine works +dist/Term-ReadLine/t/ReadLine-STDERR.t See if Term::ReadLine works +dist/Term-ReadLine/t/Tk.t See if Term::ReadLine works +dist/Test/ChangeLog History of changes for the Test module +dist/Test/lib/Test.pm A simple framework for writing test scripts +dist/Test/Makefile.PL Build the Test module +dist/Test/t/05_about_verbose.t See if Test works +dist/Test/t/fail.t See if Test works +dist/Test/t/mix.t See if Test works +dist/Test/t/multiline.t See if Test works +dist/Test/t/onfail.t See if Test works +dist/Test/t/qr.t See if Test works +dist/Test/t/skip.t See if Test works +dist/Test/t/success.t See if Test works +dist/Test/t/todo.t See if Test works +dist/Text-Abbrev/lib/Text/Abbrev.pm An abbreviation table builder dist/Text-Abbrev/t/Abbrev.t Test Text::Abbrev +dist/Thread-Queue/Changes Thread-safe queues +dist/Thread-Queue/examples/callback.pl Thread::Queue example script +dist/Thread-Queue/examples/queue.pl Thread::Queue example script dist/Thread-Queue/lib/Thread/Queue.pm Thread-safe queues +dist/Thread-Queue/Makefile.PL Build Thread::Queue dist/Thread-Queue/t/01_basic.t Thread::Queue tests dist/Thread-Queue/t/02_refs.t Thread::Queue tests dist/Thread-Queue/t/03_peek.t Thread::Queue tests @@ -4084,68 +4292,74 @@ dist/Thread-Queue/t/06_insert.t Thread::Queue tests dist/Thread-Queue/t/07_lock.t Thread::Queue tests dist/Thread-Queue/t/08_nothreads.t Thread::Queue tests dist/Thread-Queue/t/09_ended.t Thread::Queue tests -dist/Thread-Queue/t/10_timed.t Thread::Queue tests -dist/Thread-Queue/t/11_limit.t Thread::Queue tests +dist/Thread-Queue/t/10_timed.t Thread::Queue tests +dist/Thread-Queue/t/11_limit.t Thread::Queue tests +dist/Thread-Semaphore/Changes History of changes for Thread::Semaphore +dist/Thread-Semaphore/examples/semaphore.pl Thread::Semaphore example script dist/Thread-Semaphore/lib/Thread/Semaphore.pm Thread-safe semaphores +dist/Thread-Semaphore/Makefile.PL Build Thread::Semaphore dist/Thread-Semaphore/t/01_basic.t Thread::Semaphore tests dist/Thread-Semaphore/t/02_errs.t Thread::Semaphore tests dist/Thread-Semaphore/t/03_nothreads.t Thread::Semaphore tests dist/Thread-Semaphore/t/04_nonblocking.t Thread::Semaphore tests -dist/Thread-Semaphore/t/05_force.t Thread::Semaphore tests -dist/Thread-Semaphore/t/06_timed.t Thread::Semaphore tests -dist/threads/hints/hpux.pl Hint file for HPUX -dist/threads/hints/linux.pl Hint file for Linux +dist/Thread-Semaphore/t/05_force.t Thread::Semaphore tests +dist/Thread-Semaphore/t/06_timed.t Thread::Semaphore tests +dist/threads/hints/hpux.pl Hint file for HPUX +dist/threads/hints/linux.pl Hint file for Linux dist/threads/lib/threads.pm ithreads -dist/threads/t/basic.t ithreads -dist/threads/t/blocks.t Test threads in special blocks -dist/threads/t/context.t Explicit thread context -dist/threads/t/end.t Test end functions -dist/threads/t/err.t Test $thr->error() -dist/threads/t/exit.t Test exit and die in threads -dist/threads/t/free.t Test ithread destruction -dist/threads/t/free2.t More ithread destruction tests -dist/threads/t/join.t Testing the join function -dist/threads/t/kill.t Tests thread signalling -dist/threads/t/kill2.t Tests thread signalling -dist/threads/t/kill3.t Tests thread signalling -dist/threads/t/libc.t testing libc functions for threadsafety -dist/threads/t/list.t Test threads->list() -dist/threads/t/no_threads.t threads test for non-threaded Perls -dist/threads/t/problems.t Test various memory problems -dist/threads/t/stack.t Tests for stack limits -dist/threads/t/stack_env.t Tests for stack limits -dist/threads/t/state.t Tests state methods -dist/threads/t/stress_cv.t Test with multiple threads, coderef cv argument. -dist/threads/t/stress_re.t Test with multiple threads, string cv argument and regexes. -dist/threads/t/stress_string.t Test with multiple threads, string cv argument. -dist/threads/t/thread.t General ithread tests from thr5005 +dist/threads/t/basic.t ithreads +dist/threads/t/blocks.t Test threads in special blocks +dist/threads/t/context.t Explicit thread context +dist/threads/t/end.t Test end functions +dist/threads/t/err.t Test $thr->error() +dist/threads/t/exit.t Test exit and die in threads +dist/threads/t/free.t Test ithread destruction +dist/threads/t/free2.t More ithread destruction tests +dist/threads/t/join.t Testing the join function +dist/threads/t/kill.t Tests thread signalling +dist/threads/t/kill2.t Tests thread signalling +dist/threads/t/kill3.t Tests thread signalling +dist/threads/t/libc.t testing libc functions for threadsafety +dist/threads/t/list.t Test threads->list() +dist/threads/t/no_threads.t threads test for non-threaded Perls +dist/threads/t/problems.t Test various memory problems +dist/threads/t/stack.t Tests for stack limits +dist/threads/t/stack_env.t Tests for stack limits +dist/threads/t/state.t Tests state methods +dist/threads/t/stress_cv.t Test with multiple threads, coderef cv argument. +dist/threads/t/stress_re.t Test with multiple threads, string cv argument and regexes. +dist/threads/t/stress_string.t Test with multiple threads, string cv argument. +dist/threads/t/thread.t General ithread tests from thr5005 dist/threads/t/unique.t Test unique attribute with threads -dist/threads/threads.xs ithreads -dist/threads-shared/hints/linux.pl thread shared variables +dist/threads/t/version.t Test that pod version matches code version. +dist/threads/threads.h threads compatibility helper +dist/threads/threads.xs ithreads +dist/threads-shared/hints/linux.pl thread shared variables dist/threads-shared/lib/threads/shared.pm thread shared variables -dist/threads-shared/shared.xs thread shared variables -dist/threads-shared/t/0nothread.t Tests for basic shared array functionality. -dist/threads-shared/t/av_refs.t Tests for arrays containing references -dist/threads-shared/t/av_simple.t Tests for basic shared array functionality. -dist/threads-shared/t/blessed.t Test blessed shared variables -dist/threads-shared/t/clone.t Test shared cloning -dist/threads-shared/t/cond.t Test condition variables -dist/threads-shared/t/disabled.t Test threads::shared when threads are disabled. -dist/threads-shared/t/dualvar.t Test dual-valued variables -dist/threads-shared/t/hv_refs.t Test shared hashes containing references -dist/threads-shared/t/hv_simple.t Tests for basic shared hash functionality. -dist/threads-shared/t/no_share.t Tests for disabled share on variables. -dist/threads-shared/t/object.t Shared objects tests -dist/threads-shared/t/object2.t More shared objects tests -dist/threads-shared/t/shared_attr.t Test :shared attribute -dist/threads-shared/t/stress.t Stress test -dist/threads-shared/t/sv_refs.t thread shared variables -dist/threads-shared/t/sv_simple.t thread shared variables -dist/threads-shared/t/utf8.t Test UTF-8 keys in shared hashes -dist/threads-shared/t/wait.t Test cond_wait and cond_timedwait -dist/threads-shared/t/waithires.t Test sub-second cond_timedwait +dist/threads-shared/shared.xs thread shared variables +dist/threads-shared/t/0nothread.t Tests for basic shared array functionality. +dist/threads-shared/t/av_refs.t Tests for arrays containing references +dist/threads-shared/t/av_simple.t Tests for basic shared array functionality. +dist/threads-shared/t/blessed.t Test blessed shared variables +dist/threads-shared/t/clone.t Test shared cloning +dist/threads-shared/t/cond.t Test condition variables +dist/threads-shared/t/disabled.t Test threads::shared when threads are disabled. +dist/threads-shared/t/dualvar.t Test dual-valued variables +dist/threads-shared/t/hv_refs.t Test shared hashes containing references +dist/threads-shared/t/hv_simple.t Tests for basic shared hash functionality. +dist/threads-shared/t/no_share.t Tests for disabled share on variables. +dist/threads-shared/t/object.t Shared objects tests +dist/threads-shared/t/object2.t More shared objects tests +dist/threads-shared/t/shared_attr.t Test :shared attribute +dist/threads-shared/t/stress.t Stress test +dist/threads-shared/t/sv_refs.t thread shared variables +dist/threads-shared/t/sv_simple.t thread shared variables +dist/threads-shared/t/utf8.t Test UTF-8 keys in shared hashes +dist/threads-shared/t/wait.t Test cond_wait and cond_timedwait +dist/threads-shared/t/waithires.t Test sub-second cond_timedwait dist/Tie-File/ChangeLog Tie::File dist/Tie-File/lib/Tie/File.pm Files as tied arrays +dist/Tie-File/Makefile.PL Build Tie::File dist/Tie-File/t/01_gen.t Generic read/write tests for Tie::File dist/Tie-File/t/02_fetchsize.t File length fetch test for Tie::File dist/Tie-File/t/03_longfetch.t Past-the-end-of-the-array tests for Tie::File @@ -4223,255 +4437,247 @@ dist/Unicode-Normalize/t/func.t Unicode::Normalize dist/Unicode-Normalize/t/illegal.t Unicode::Normalize dist/Unicode-Normalize/t/norm.t Unicode::Normalize dist/Unicode-Normalize/t/null.t Unicode::Normalize -dist/Unicode-Normalize/t/partial1.t Unicode::Normalize -dist/Unicode-Normalize/t/partial2.t Unicode::Normalize +dist/Unicode-Normalize/t/partial1.t Unicode::Normalize +dist/Unicode-Normalize/t/partial2.t Unicode::Normalize dist/Unicode-Normalize/t/proto.t Unicode::Normalize dist/Unicode-Normalize/t/split.t Unicode::Normalize dist/Unicode-Normalize/t/test.t Unicode::Normalize dist/Unicode-Normalize/t/tie.t Unicode::Normalize -dist/XSLoader/Makefile.PL Dynamic Loader makefile writer -dist/XSLoader/t/XSLoader.t See if XSLoader works -dist/XSLoader/XSLoader_pm.PL Simple XS Loader perl module -doio.c I/O operations -doop.c Support code for various operations -dosish.h Some defines for MS/DOSish machines -dquote.c Functions for double quotish contexts -dump.c Debugging output -ebcdic_tables.h Generated tables included in utfebcdic.h -embed.fnc Database used by embed.pl -embed.h Maps symbols to safer names -embedvar.h C namespace management +dist/XSLoader/Makefile.PL Dynamic Loader makefile writer +dist/XSLoader/t/XSLoader.t See if XSLoader works +dist/XSLoader/XSLoader_pm.PL Simple XS Loader perl module ext/Amiga-ARexx/__examples/simplecommand.pl Amiga::ARexx extension ext/Amiga-ARexx/__examples/simplehost.pl Amiga::ARexx extension -ext/Amiga-ARexx/ARexx.pm Amiga::ARexx extension -ext/Amiga-ARexx/ARexx.xs Amiga::ARexx extension -ext/Amiga-ARexx/Makefile.PL Amiga::ARexx extension +ext/Amiga-ARexx/ARexx.pm Amiga::ARexx extension +ext/Amiga-ARexx/ARexx.xs Amiga::ARexx extension +ext/Amiga-ARexx/Makefile.PL Amiga::ARexx extension ext/Amiga-ARexx/tagtypes.h Amiga::ARexx extension -ext/Amiga-ARexx/typemap Amiga::ARexx extension +ext/Amiga-ARexx/typemap Amiga::ARexx extension ext/Amiga-Exec/__examples/simplecommand.pl Amiga::Exec extension ext/Amiga-Exec/__examples/simplehost.pl Amiga::Exec extension -ext/Amiga-Exec/Exec.pm Amiga::Exec extension -ext/Amiga-Exec/Exec.xs Amiga::Exec extension +ext/Amiga-Exec/Exec.pm Amiga::Exec extension +ext/Amiga-Exec/Exec.xs Amiga::Exec extension ext/Amiga-Exec/Makefile.PL Amiga::Exec extension -ext/Amiga-Exec/tagtypes.h Amiga::Exec extension -ext/Amiga-Exec/typemap Amiga::Exec extension +ext/Amiga-Exec/tagtypes.h Amiga::Exec extension +ext/Amiga-Exec/typemap Amiga::Exec extension ext/attributes/attributes.pm For "sub foo : attrlist" ext/attributes/attributes.xs For "sub foo : attrlist" -ext/B/B.pm Compiler backend support functions and methods -ext/B/B.xs Compiler backend external subroutines -ext/B/B/Concise.pm Compiler Concise backend -ext/B/B/Showlex.pm Compiler Showlex backend -ext/B/B/Terse.pm Compiler Terse backend -ext/B/B/Xref.pm Compiler Xref backend -ext/B/hints/darwin.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 -ext/B/t/B/success.pm Test module for ext/B/t/o.t -ext/B/t/concise.t See whether B::Concise works -ext/B/t/concise-xs.t See whether B::Concise recognizes XS functions -ext/B/t/f_map code from perldoc -f map -ext/B/t/f_map.t converted to optreeCheck()s -ext/B/t/f_sort optree test raw material -ext/B/t/f_sort.t optree test raw material -ext/B/t/invlist.t test B::INVLIST -ext/B/t/o.t See if O works -ext/B/t/optree_check.t test OptreeCheck apparatus -ext/B/t/optree_concise.t more B::Concise tests -ext/B/t/optree_constants.t B::Concise rendering of optimized constant subs -ext/B/t/optree_for.t for loops -ext/B/t/optree_misc.t misc optree tests -ext/B/t/optree_samples.t various basic codes: if for while -ext/B/t/optree_sort.t inplace sort optimization regression -ext/B/t/optree_specials.t BEGIN, END, etc code -ext/B/t/optree_varinit.t my,our,local var init optimization -ext/B/t/OptreeCheck.pm optree comparison tool -ext/B/t/perlstring.t See if B::perlstring output roundtrips properly -ext/B/t/pragma.t See if user pragmas work. -ext/B/t/showlex.t See if B::ShowLex works -ext/B/t/strict.t See if B works with strict and warnings. -ext/B/t/sv_stash.t See if SvSTASH() works -ext/B/t/terse.t See if B::Terse works -ext/B/t/walkoptree.t See if B::walkoptree (and friends) work -ext/B/t/xref.t See if B::Xref works -ext/B/typemap Compiler backend interface types -ext/Devel-Peek/Changes Data debugging tool, changelog -ext/Devel-Peek/Peek.pm Data debugging tool, module and pod -ext/Devel-Peek/Peek.xs Data debugging tool, externals -ext/Devel-Peek/t/Peek.t See if Devel::Peek works -ext/DynaLoader/dl_aix.xs AIX implementation -ext/DynaLoader/dl_dllload.xs S/390 dllload() style implementation -ext/DynaLoader/dl_dlopen.xs BSD/SunOS4&5 dlopen() style implementation -ext/DynaLoader/dl_dyld.xs NeXT/Apple dyld implementation -ext/DynaLoader/dl_freemint.xs GNU dld style implementation for FreeMINT -ext/DynaLoader/dl_hpux.xs HP-UX implementation -ext/DynaLoader/dl_none.xs Stub implementation -ext/DynaLoader/dl_vms.xs VMS implementation -ext/DynaLoader/dl_win32.xs Win32 implementation -ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files -ext/DynaLoader/DynaLoader_pm.PL Dynamic Loader perl module -ext/DynaLoader/hints/aix.pl Hint for DynaLoader for named architecture -ext/DynaLoader/hints/android.pl Hint for DynaLoader for named architecture +ext/B/B.pm Compiler backend support functions and methods +ext/B/B.xs Compiler backend external subroutines +ext/B/B/Concise.pm Compiler Concise backend +ext/B/B/Showlex.pm Compiler Showlex backend +ext/B/B/Terse.pm Compiler Terse backend +ext/B/B/Xref.pm Compiler Xref backend +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 +ext/B/t/B/success.pm Test module for ext/B/t/o.t +ext/B/t/bool.t See if B works for bool +ext/B/t/concise.t See whether B::Concise works +ext/B/t/concise-xs.t See whether B::Concise recognizes XS functions +ext/B/t/f_map code from perldoc -f map +ext/B/t/f_map.t converted to optreeCheck()s +ext/B/t/f_sort optree test raw material +ext/B/t/f_sort.t optree test raw material +ext/B/t/invlist.t test B::INVLIST +ext/B/t/o.t See if O works +ext/B/t/optree_check.t test OptreeCheck apparatus +ext/B/t/optree_concise.t more B::Concise tests +ext/B/t/optree_constants.t B::Concise rendering of optimized constant subs +ext/B/t/optree_for.t for loops +ext/B/t/optree_misc.t misc optree tests +ext/B/t/optree_samples.t various basic codes: if for while +ext/B/t/optree_sort.t inplace sort optimization regression +ext/B/t/optree_specials.t BEGIN, END, etc code +ext/B/t/optree_varinit.t my,our,local var init optimization +ext/B/t/OptreeCheck.pm optree comparison tool +ext/B/t/perlstring.t See if B::perlstring output roundtrips properly +ext/B/t/pragma.t See if user pragmas work. +ext/B/t/showlex.t See if B::ShowLex works +ext/B/t/strict.t See if B works with strict and warnings. +ext/B/t/sv_stash.t See if SvSTASH() works +ext/B/t/terse.t See if B::Terse works +ext/B/t/walkoptree.t See if B::walkoptree (and friends) work +ext/B/t/xref.t See if B::Xref works +ext/B/typemap Compiler backend interface types +ext/Devel-Peek/Changes Data debugging tool, changelog +ext/Devel-Peek/Peek.pm Data debugging tool, module and pod +ext/Devel-Peek/Peek.xs Data debugging tool, externals +ext/Devel-Peek/t/Peek.t See if Devel::Peek works +ext/DynaLoader/dl_aix.xs AIX implementation +ext/DynaLoader/dl_dllload.xs S/390 dllload() style implementation +ext/DynaLoader/dl_dlopen.xs BSD/SunOS4&5 dlopen() style implementation +ext/DynaLoader/dl_dyld.xs NeXT/Apple dyld implementation +ext/DynaLoader/dl_freemint.xs GNU dld style implementation for FreeMINT +ext/DynaLoader/dl_hpux.xs HP-UX implementation +ext/DynaLoader/dl_none.xs Stub implementation +ext/DynaLoader/dl_vms.xs VMS implementation +ext/DynaLoader/dl_win32.xs Win32 implementation +ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files +ext/DynaLoader/DynaLoader_pm.PL Dynamic Loader perl module +ext/DynaLoader/hints/aix.pl Hint for DynaLoader for named architecture +ext/DynaLoader/hints/android.pl Hint for DynaLoader for named architecture ext/DynaLoader/hints/gnukfreebsd.pl Hint for DynaLoader for named architecture ext/DynaLoader/hints/gnuknetbsd.pl Hint for DynaLoader for named architecture -ext/DynaLoader/hints/linux.pl Hint for DynaLoader for named architecture -ext/DynaLoader/hints/netbsd.pl Hint for DynaLoader for named architecture -ext/DynaLoader/hints/openbsd.pl Hint for DynaLoader for named architecture -ext/DynaLoader/Makefile.PL Dynamic Loader makefile writer -ext/DynaLoader/README Dynamic Loader notes and intro -ext/DynaLoader/t/DynaLoader.t See if DynaLoader works -ext/Errno/ChangeLog Errno changes -ext/Errno/Errno_pm.PL Errno perl module create script -ext/Errno/Makefile.PL Errno extension makefile writer -ext/Errno/t/Errno.t See if Errno works +ext/DynaLoader/hints/linux.pl Hint for DynaLoader for named architecture +ext/DynaLoader/hints/netbsd.pl Hint for DynaLoader for named architecture +ext/DynaLoader/hints/openbsd.pl Hint for DynaLoader for named architecture +ext/DynaLoader/Makefile.PL Dynamic Loader makefile writer +ext/DynaLoader/README Dynamic Loader notes and intro +ext/DynaLoader/t/DynaLoader.t See if DynaLoader works +ext/Errno/ChangeLog Errno changes +ext/Errno/Errno_pm.PL Errno perl module create script +ext/Errno/Makefile.PL Errno extension makefile writer +ext/Errno/t/Errno.t See if Errno works ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm Writes {mini,}perlmain.c -ext/Fcntl/Fcntl.pm Fcntl extension Perl module -ext/Fcntl/Fcntl.xs Fcntl extension external subroutines -ext/Fcntl/Makefile.PL Fcntl extension makefile writer -ext/Fcntl/t/autoload.t See if Fcntl AUTOLOAD error messages work -ext/Fcntl/t/fcntl.t See if Fcntl works -ext/Fcntl/t/mode.t See if S_ISREG() and S_ISDIR() work -ext/Fcntl/t/syslfs.t See if large files work for sysio +ext/Fcntl/Fcntl.pm Fcntl extension Perl module +ext/Fcntl/Fcntl.xs Fcntl extension external subroutines +ext/Fcntl/Makefile.PL Fcntl extension makefile writer +ext/Fcntl/t/autoload.t See if Fcntl AUTOLOAD error messages work +ext/Fcntl/t/fcntl.t See if Fcntl works +ext/Fcntl/t/mode.t See if S_ISREG() and S_ISDIR() work +ext/Fcntl/t/syslfs.t See if large files work for sysio ext/File-DosGlob/DosGlob.xs Win32 DOS-globbing module ext/File-DosGlob/lib/File/DosGlob.pm Win32 DOS-globbing module ext/File-DosGlob/t/DosGlob.t See if File::DosGlob works -ext/File-Find/lib/File/Find.pm Routines to do a find -ext/File-Find/t/find.t See if File::Find works -ext/File-Find/t/lib/Testing.pm Functions used in testing File-find -ext/File-Find/t/taint.t See if File::Find works with taint -ext/File-Glob/bsd_glob.c File::Glob extension run time code -ext/File-Glob/bsd_glob.h File::Glob extension header file -ext/File-Glob/Changes File::Glob extension changelog -ext/File-Glob/Glob.pm File::Glob extension module -ext/File-Glob/Glob.xs File::Glob extension external subroutines -ext/File-Glob/Makefile.PL File::Glob extension makefile writer -ext/File-Glob/t/basic.t See if File::Glob works -ext/File-Glob/t/case.t See if File::Glob works -ext/File-Glob/t/global.t See if File::Glob works -ext/File-Glob/t/rt114984.t See if File::Glob works -ext/File-Glob/t/rt131211.t See if File::Glob works -ext/File-Glob/t/taint.t See if File::Glob works -ext/File-Glob/t/threads.t See if File::Glob + threads works -ext/File-Glob/TODO File::Glob extension todo list -ext/FileCache/lib/FileCache.pm Keep more files open than the system permits -ext/FileCache/t/01open.t See if FileCache works -ext/FileCache/t/02maxopen.t See if FileCache works -ext/FileCache/t/03append.t See if FileCache works -ext/FileCache/t/04twoarg.t See if FileCache works -ext/FileCache/t/05override.t See if FileCache works -ext/FileCache/t/06export.t See if FileCache exporting works -ext/FileCache/t/07noimport.t See if FileCache works without importing -ext/GDBM_File/GDBM_File.pm GDBM extension Perl module -ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines -ext/GDBM_File/hints/sco.pl Hint for GDBM_File for named architecture -ext/GDBM_File/Makefile.PL GDBM extension makefile writer -ext/GDBM_File/t/count.t Test if the count method works -ext/GDBM_File/t/dump.t Test if export/import methods work -ext/GDBM_File/t/fatal.t Test the fatal_func argument to gdbm_open -ext/GDBM_File/t/gdbm.t See if GDBM_File works -ext/GDBM_File/t/opt.t Test if gdbm_setopt and derived methods work -ext/GDBM_File/t/snapshot.t Test if the latest_snapshot method works -ext/GDBM_File/typemap GDBM extension interface types -ext/Hash-Util/Changes Change history of Hash::Util -ext/Hash-Util/lib/Hash/Util.pm Hash::Util -ext/Hash-Util/Makefile.PL Makefile for Hash::Util -ext/Hash-Util/t/builtin.t See if Hash::Util builtin exports work as expected -ext/Hash-Util/t/Util.t See if Hash::Util works -ext/Hash-Util/Util.xs XS bits of Hash::Util -ext/Hash-Util-FieldHash/Changes Changes for Hash::Util::FieldHash -ext/Hash-Util-FieldHash/FieldHash.xs XS portion +ext/File-Find/lib/File/Find.pm Routines to do a find +ext/File-Find/t/correct-absolute-path-with-follow.t +ext/File-Find/t/find.t See if File::Find works +ext/File-Find/t/lib/Testing.pm Functions used in testing File-find +ext/File-Find/t/taint.t See if File::Find works with taint +ext/File-Glob/bsd_glob.c File::Glob extension run time code +ext/File-Glob/bsd_glob.h File::Glob extension header file +ext/File-Glob/Changes File::Glob extension changelog +ext/File-Glob/Glob.pm File::Glob extension module +ext/File-Glob/Glob.xs File::Glob extension external subroutines +ext/File-Glob/Makefile.PL File::Glob extension makefile writer +ext/File-Glob/t/basic.t See if File::Glob works +ext/File-Glob/t/case.t See if File::Glob works +ext/File-Glob/t/global.t See if File::Glob works +ext/File-Glob/t/rt114984.t See if File::Glob works +ext/File-Glob/t/rt131211.t See if File::Glob works +ext/File-Glob/t/taint.t See if File::Glob works +ext/File-Glob/t/threads.t See if File::Glob + threads works +ext/File-Glob/TODO File::Glob extension todo list +ext/FileCache/lib/FileCache.pm Keep more files open than the system permits +ext/FileCache/t/01open.t See if FileCache works +ext/FileCache/t/02maxopen.t See if FileCache works +ext/FileCache/t/03append.t See if FileCache works +ext/FileCache/t/04twoarg.t See if FileCache works +ext/FileCache/t/05override.t See if FileCache works +ext/FileCache/t/06export.t See if FileCache exporting works +ext/FileCache/t/07noimport.t See if FileCache works without importing +ext/GDBM_File/GDBM_File.pm GDBM extension Perl module +ext/GDBM_File/GDBM_File.xs GDBM extension external subroutines +ext/GDBM_File/hints/sco.pl Hint for GDBM_File for named architecture +ext/GDBM_File/Makefile.PL GDBM extension makefile writer +ext/GDBM_File/t/count.t Test if the count method works +ext/GDBM_File/t/dump.t Test if export/import methods work +ext/GDBM_File/t/fatal.t Test the fatal_func argument to gdbm_open +ext/GDBM_File/t/gdbm.t See if GDBM_File works +ext/GDBM_File/t/opt.t Test if gdbm_setopt and derived methods work +ext/GDBM_File/t/snapshot.t Test if the latest_snapshot method works +ext/GDBM_File/typemap GDBM extension interface types +ext/Hash-Util/Changes Change history of Hash::Util +ext/Hash-Util/lib/Hash/Util.pm Hash::Util +ext/Hash-Util/Makefile.PL Makefile for Hash::Util +ext/Hash-Util/t/builtin.t See if Hash::Util builtin exports work as expected +ext/Hash-Util/t/Util.t See if Hash::Util works +ext/Hash-Util/Util.xs XS bits of Hash::Util +ext/Hash-Util-FieldHash/Changes Changes for Hash::Util::FieldHash +ext/Hash-Util-FieldHash/FieldHash.xs XS portion ext/Hash-Util-FieldHash/lib/Hash/Util/FieldHash.pm Perl portion and documentation -ext/Hash-Util-FieldHash/t/01_load.t Test script -ext/Hash-Util-FieldHash/t/02_function.t Test script -ext/Hash-Util-FieldHash/t/03_class.t Test script -ext/Hash-Util-FieldHash/t/04_thread.t Test script -ext/Hash-Util-FieldHash/t/05_perlhook.t Test script -ext/Hash-Util-FieldHash/t/11_hashassign.t Adapted from t/op/hashassign.t -ext/Hash-Util-FieldHash/t/12_hashwarn.t Adapted from t/op/hashwarn.t -ext/I18N-Langinfo/Langinfo.pm I18N::Langinfo -ext/I18N-Langinfo/Langinfo.xs I18N::Langinfo -ext/I18N-Langinfo/Makefile.PL I18N::Langinfo -ext/I18N-Langinfo/t/Langinfo.t See whether I18N::Langinfo works -ext/IPC-Open3/lib/IPC/Open2.pm Open a two-ended pipe -ext/IPC-Open3/lib/IPC/Open3.pm Open a three-ended pipe -ext/IPC-Open3/t/fd.t See if IPC::Open3 works w/ file descriptors -ext/IPC-Open3/t/IPC-Open2.t See if IPC::Open2 works -ext/IPC-Open3/t/IPC-Open3.t See if IPC::Open3 works -ext/mro/Changes mro extension -ext/mro/mro.pm mro extension -ext/mro/mro.xs mro extension -ext/NDBM_File/hints/cygwin.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/dec_osf.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/dynixptx.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/gnu.pl Hint for NDBM_File for named architecture +ext/Hash-Util-FieldHash/t/01_load.t Test script +ext/Hash-Util-FieldHash/t/02_function.t Test script +ext/Hash-Util-FieldHash/t/03_class.t Test script +ext/Hash-Util-FieldHash/t/04_thread.t Test script +ext/Hash-Util-FieldHash/t/05_perlhook.t Test script +ext/Hash-Util-FieldHash/t/11_hashassign.t Adapted from t/op/hashassign.t +ext/Hash-Util-FieldHash/t/12_hashwarn.t Adapted from t/op/hashwarn.t +ext/I18N-Langinfo/Langinfo.pm I18N::Langinfo +ext/I18N-Langinfo/Langinfo.xs I18N::Langinfo +ext/I18N-Langinfo/Makefile.PL I18N::Langinfo +ext/I18N-Langinfo/t/Langinfo.t See whether I18N::Langinfo works +ext/IPC-Open3/lib/IPC/Open2.pm Open a two-ended pipe +ext/IPC-Open3/lib/IPC/Open3.pm Open a three-ended pipe +ext/IPC-Open3/t/fd.t See if IPC::Open3 works w/ file descriptors +ext/IPC-Open3/t/IPC-Open2.t See if IPC::Open2 works +ext/IPC-Open3/t/IPC-Open3.t See if IPC::Open3 works +ext/mro/Changes mro extension +ext/mro/mro.pm mro extension +ext/mro/mro.xs mro extension +ext/NDBM_File/hints/cygwin.pl Hint for NDBM_File for named architecture +ext/NDBM_File/hints/dec_osf.pl Hint for NDBM_File for named architecture +ext/NDBM_File/hints/dynixptx.pl Hint for NDBM_File for named architecture +ext/NDBM_File/hints/gnu.pl Hint for NDBM_File for named architecture ext/NDBM_File/hints/gnukfreebsd.pl Hint for NDBM_File for named architecture ext/NDBM_File/hints/gnuknetbsd.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/linux.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/MSWin32.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/sco.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/solaris.pl Hint for NDBM_File for named architecture -ext/NDBM_File/hints/svr4.pl Hint for NDBM_File for named architecture -ext/NDBM_File/Makefile.PL NDBM extension makefile writer -ext/NDBM_File/NDBM_File.pm NDBM extension Perl module -ext/NDBM_File/NDBM_File.xs NDBM extension external subroutines -ext/NDBM_File/t/ndbm.t See if NDBM_File works -ext/NDBM_File/typemap NDBM extension interface types -ext/ODBM_File/hints/cygwin.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/dec_osf.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/gnu.pl Hint for ODBM_File for named architecture +ext/NDBM_File/hints/linux.pl Hint for NDBM_File for named architecture +ext/NDBM_File/hints/MSWin32.pl Hint for NDBM_File for named architecture +ext/NDBM_File/hints/sco.pl Hint for NDBM_File for named architecture +ext/NDBM_File/hints/solaris.pl Hint for NDBM_File for named architecture +ext/NDBM_File/hints/svr4.pl Hint for NDBM_File for named architecture +ext/NDBM_File/Makefile.PL NDBM extension makefile writer +ext/NDBM_File/NDBM_File.pm NDBM extension Perl module +ext/NDBM_File/NDBM_File.xs NDBM extension external subroutines +ext/NDBM_File/t/ndbm.t See if NDBM_File works +ext/NDBM_File/typemap NDBM extension interface types +ext/ODBM_File/hints/cygwin.pl Hint for ODBM_File for named architecture +ext/ODBM_File/hints/dec_osf.pl Hint for ODBM_File for named architecture +ext/ODBM_File/hints/gnu.pl Hint for ODBM_File for named architecture ext/ODBM_File/hints/gnukfreebsd.pl Hint for NDBM_File for named architecture ext/ODBM_File/hints/gnuknetbsd.pl Hint for NDBM_File for named architecture -ext/ODBM_File/hints/hpux.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/linux.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/MSWin32.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/sco.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/solaris.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/svr4.pl Hint for ODBM_File for named architecture -ext/ODBM_File/hints/ultrix.pl Hint for ODBM_File for named architecture -ext/ODBM_File/Makefile.PL ODBM extension makefile writer -ext/ODBM_File/ODBM_File.pm ODBM extension Perl module -ext/ODBM_File/ODBM_File.xs ODBM extension external subroutines -ext/ODBM_File/t/odbm.t See if ODBM_File works -ext/ODBM_File/typemap ODBM extension interface types -ext/Opcode/Opcode.pm Opcode extension Perl module -ext/Opcode/Opcode.xs Opcode extension external subroutines -ext/Opcode/ops.pm "Pragma" form of Opcode extension Perl module -ext/Opcode/t/Opcode.t See if Opcode works -ext/Opcode/t/ops.t See if Opcode works -ext/PerlIO-encoding/encoding.pm PerlIO::encoding -ext/PerlIO-encoding/encoding.xs PerlIO::encoding +ext/ODBM_File/hints/hpux.pl Hint for ODBM_File for named architecture +ext/ODBM_File/hints/linux.pl Hint for ODBM_File for named architecture +ext/ODBM_File/hints/MSWin32.pl Hint for ODBM_File for named architecture +ext/ODBM_File/hints/sco.pl Hint for ODBM_File for named architecture +ext/ODBM_File/hints/solaris.pl Hint for ODBM_File for named architecture +ext/ODBM_File/hints/svr4.pl Hint for ODBM_File for named architecture +ext/ODBM_File/Makefile.PL ODBM extension makefile writer +ext/ODBM_File/ODBM_File.pm ODBM extension Perl module +ext/ODBM_File/ODBM_File.xs ODBM extension external subroutines +ext/ODBM_File/t/odbm.t See if ODBM_File works +ext/ODBM_File/typemap ODBM extension interface types +ext/Opcode/Opcode.pm Opcode extension Perl module +ext/Opcode/Opcode.xs Opcode extension external subroutines +ext/Opcode/ops.pm "Pragma" form of Opcode extension Perl module +ext/Opcode/t/Opcode.t See if Opcode works +ext/Opcode/t/ops.t See if Opcode works +ext/PerlIO-encoding/encoding.pm PerlIO::encoding +ext/PerlIO-encoding/encoding.xs PerlIO::encoding ext/PerlIO-encoding/t/encoding.t See if PerlIO encoding conversion works ext/PerlIO-encoding/t/fallback.t See if PerlIO fallbacks work ext/PerlIO-encoding/t/nolooping.t Tests for PerlIO::encoding ext/PerlIO-encoding/t/threads.t Tests PerlIO::encoding and threads -ext/PerlIO-mmap/mmap.pm PerlIO layer for memory maps -ext/PerlIO-mmap/mmap.xs PerlIO layer for memory maps -ext/PerlIO-scalar/scalar.pm PerlIO layer for scalars -ext/PerlIO-scalar/scalar.xs PerlIO layer for scalars -ext/PerlIO-scalar/t/scalar.t See if PerlIO::scalar works +ext/PerlIO-mmap/mmap.pm PerlIO layer for memory maps +ext/PerlIO-mmap/mmap.xs PerlIO layer for memory maps +ext/PerlIO-scalar/scalar.pm PerlIO layer for scalars +ext/PerlIO-scalar/scalar.xs PerlIO layer for scalars +ext/PerlIO-scalar/t/scalar.t See if PerlIO::scalar works ext/PerlIO-scalar/t/scalar_ungetc.t Tests for PerlIO layer for scalars -ext/PerlIO-via/hints/aix.pl Hint for PerlIO::via for named architecture +ext/PerlIO-via/hints/aix.pl Hint for PerlIO::via for named architecture ext/PerlIO-via/t/thread.t See if PerlIO::via works with threads -ext/PerlIO-via/t/via.t See if PerlIO::via works -ext/PerlIO-via/via.pm PerlIO layer for layers in perl -ext/PerlIO-via/via.xs PerlIO layer for layers in perl +ext/PerlIO-via/t/via.t See if PerlIO::via works +ext/PerlIO-via/via.pm PerlIO layer for layers in perl +ext/PerlIO-via/via.xs PerlIO layer for layers in perl ext/Pod-Functions/Functions_pm.PL Writes Functions.pm ext/Pod-Functions/Makefile.PL Makefile writer ext/Pod-Functions/t/Functions.t See if Pod::Functions works -ext/Pod-Html/bin/pod2html Translator to turn pod into HTML +ext/Pod-Html/bin/pod2html Translator to turn pod into HTML ext/Pod-Html/corpus/perlpodspec-copy.pod ext/Pod-Html/corpus/perlvar-copy.pod -ext/Pod-Html/lib/Pod/Html.pm Convert POD data to HTML -ext/Pod-Html/lib/Pod/Html/Util.pm Helper functions for Pod-Html +ext/Pod-Html/lib/Pod/Html.pm Convert POD data to HTML +ext/Pod-Html/lib/Pod/Html/Util.pm Helper functions for Pod-Html ext/Pod-Html/t/anchorify.t -ext/Pod-Html/t/anchorify-536.t Test Pod-Html utility functions during perl-5.36 ext/Pod-Html/t/cache.pod ext/Pod-Html/t/cache.t ext/Pod-Html/t/crossref.pod ext/Pod-Html/t/crossref.t ext/Pod-Html/t/crossref2.t ext/Pod-Html/t/crossref3.t -ext/Pod-Html/t/eol.t test end of line agnosticism +ext/Pod-Html/t/eol.t test end of line agnosticism ext/Pod-Html/t/feature.pod ext/Pod-Html/t/feature.t ext/Pod-Html/t/feature2.pod @@ -4486,2481 +4692,1799 @@ ext/Pod-Html/t/htmldir4.pod ext/Pod-Html/t/htmldir4.t ext/Pod-Html/t/htmldir5.pod ext/Pod-Html/t/htmldir5.t -ext/Pod-Html/t/htmlescp.pod pod2html escape test input data -ext/Pod-Html/t/htmlescp.t pod2html escape test -ext/Pod-Html/t/htmllink.pod pod2html link test input data -ext/Pod-Html/t/htmllink.t pod2html link test -ext/Pod-Html/t/htmlview.pod pod2html render test input data -ext/Pod-Html/t/htmlview.t pod2html render test -ext/Pod-Html/t/lib/Testing.pm Testing functions for Pod-Html +ext/Pod-Html/t/htmlescp.pod pod2html escape test input data +ext/Pod-Html/t/htmlescp.t pod2html escape test +ext/Pod-Html/t/htmllink.pod pod2html link test input data +ext/Pod-Html/t/htmllink.t pod2html link test +ext/Pod-Html/t/htmlview.pod pod2html render test input data +ext/Pod-Html/t/htmlview.t pod2html render test +ext/Pod-Html/t/lib/Testing.pm Testing functions for Pod-Html ext/Pod-Html/t/poderr.pod ext/Pod-Html/t/poderr.t ext/Pod-Html/t/podnoerr.pod ext/Pod-Html/t/podnoerr.t -ext/POSIX/hints/bsdos.pl Hint for POSIX for named architecture -ext/POSIX/hints/dynixptx.pl Hint for POSIX for named architecture -ext/POSIX/hints/freebsd.pl Hint for POSIX for named architecture -ext/POSIX/hints/gnukfreebsd.pl Hint for POSIX for named architecture -ext/POSIX/hints/gnuknetbsd.pl Hint for POSIX for named architecture -ext/POSIX/hints/linux.pl Hint for POSIX for named architecture -ext/POSIX/hints/mint.pl Hint for POSIX for named architecture -ext/POSIX/hints/netbsd.pl Hint for POSIX for named architecture -ext/POSIX/hints/openbsd.pl Hint for POSIX for named architecture -ext/POSIX/hints/sunos_4.pl Hint for POSIX for named architecture -ext/POSIX/hints/svr4.pl Hint for POSIX for named architecture -ext/POSIX/lib/POSIX.pm POSIX extension Perl module -ext/POSIX/lib/POSIX.pod POSIX extension documentation -ext/POSIX/Makefile.PL POSIX extension makefile writer -ext/POSIX/POSIX.xs POSIX extension external subroutines -ext/POSIX/t/export.t Test @EXPORT and @EXPORT_OK -ext/POSIX/t/fenv.t Floating-point rounding mode tests for POSIX -ext/POSIX/t/iscrash See if POSIX isxxx() crashes with threads on Win32 -ext/POSIX/t/iv_const.t See if integer constants of POSIX are IV -ext/POSIX/t/math.t Basic math tests for POSIX -ext/POSIX/t/mb.t Multibyte function tests for POSIX -ext/POSIX/t/posix.t See if POSIX works -ext/POSIX/t/sigaction.t See if POSIX::sigaction works -ext/POSIX/t/sigset.t See if POSIX::SigSet works -ext/POSIX/t/strerror_errno.t See if POSIX:strerror doesn't trash $! -ext/POSIX/t/sysconf.t See if POSIX works -ext/POSIX/t/taint.t See if POSIX works with taint -ext/POSIX/t/termios.t See if POSIX works -ext/POSIX/t/time.t See if POSIX time-related functions work -ext/POSIX/t/unimplemented.t Test the diagnostics for unimplemented functions -ext/POSIX/t/usage.t Test the diagnostics for usage messages -ext/POSIX/t/waitpid.t See if waitpid works -ext/POSIX/t/wrappers.t Test the POSIX wrapper subroutines -ext/POSIX/typemap POSIX extension interface types -ext/re/Makefile.PL re extension makefile writer -ext/re/re.pm re extension Perl module -ext/re/re.xs re extension external subroutines -ext/re/re_comp.h re extension wrapper for regcomp.h -ext/re/re_top.h re extension symbol hiding header -ext/re/t/lexical_debug.pl generate debug output for lexical re 'debug' -ext/re/t/lexical_debug.t test that lexical re 'debug' works -ext/re/t/qr.t test that qr// is a Regexp -ext/re/t/re.t see if re pragma works -ext/re/t/re_funcs.t See if exportable 're' funcs in re.xs work -ext/re/t/re_funcs_u.t See if exportable 're' funcs in universal.c work -ext/re/t/reflags.t see if re '/xism' pragma works -ext/re/t/regop.pl generate debug output for various patterns -ext/re/t/regop.t test RE optimizations by scraping debug output -ext/re/t/strict.t see if re 'strict' subpragma works -ext/SDBM_File/biblio SDBM kit -ext/SDBM_File/CHANGES SDBM kit -ext/SDBM_File/dba.c SDBM kit -ext/SDBM_File/dbd.c SDBM kit -ext/SDBM_File/dbe.1 SDBM kit -ext/SDBM_File/dbe.c SDBM kit -ext/SDBM_File/dbu.c SDBM kit -ext/SDBM_File/grind SDBM kit -ext/SDBM_File/hash.c SDBM kit -ext/SDBM_File/Makefile.PL SDBM extension makefile writer -ext/SDBM_File/pair.c SDBM kit -ext/SDBM_File/pair.h SDBM kit -ext/SDBM_File/README SDBM kit -ext/SDBM_File/readme.ms SDBM kit -ext/SDBM_File/README.too SDBM kit -ext/SDBM_File/sdbm.3 SDBM kit -ext/SDBM_File/sdbm.c SDBM kit -ext/SDBM_File/sdbm.h SDBM kit -ext/SDBM_File/SDBM_File.pm SDBM extension Perl module -ext/SDBM_File/SDBM_File.xs SDBM extension external subroutines -ext/SDBM_File/t/constants.t See if SDBM_File constants work -ext/SDBM_File/t/corrupt.t See if SDBM_File handles corrupt files -ext/SDBM_File/t/prep.t See if SDBM_File with extra argument works -ext/SDBM_File/t/sdbm.t See if SDBM_File works -ext/SDBM_File/tune.h SDBM kit -ext/SDBM_File/typemap SDBM extension interface types -ext/SDBM_File/util.c SDBM kit -ext/Sys-Hostname/Hostname.pm Sys::Hostname extension Perl module -ext/Sys-Hostname/Hostname.xs Sys::Hostname extension external subroutines -ext/Sys-Hostname/t/Hostname.t See if Sys::Hostname works +ext/POSIX/hints/bsdos.pl Hint for POSIX for named architecture +ext/POSIX/hints/dynixptx.pl Hint for POSIX for named architecture +ext/POSIX/hints/freebsd.pl Hint for POSIX for named architecture +ext/POSIX/hints/gnukfreebsd.pl Hint for POSIX for named architecture +ext/POSIX/hints/gnuknetbsd.pl Hint for POSIX for named architecture +ext/POSIX/hints/linux.pl Hint for POSIX for named architecture +ext/POSIX/hints/mint.pl Hint for POSIX for named architecture +ext/POSIX/hints/netbsd.pl Hint for POSIX for named architecture +ext/POSIX/hints/openbsd.pl Hint for POSIX for named architecture +ext/POSIX/hints/sunos_4.pl Hint for POSIX for named architecture +ext/POSIX/hints/svr4.pl Hint for POSIX for named architecture +ext/POSIX/lib/POSIX.pm POSIX extension Perl module +ext/POSIX/lib/POSIX.pod POSIX extension documentation +ext/POSIX/Makefile.PL POSIX extension makefile writer +ext/POSIX/POSIX.xs POSIX extension external subroutines +ext/POSIX/t/export.t Test @EXPORT and @EXPORT_OK +ext/POSIX/t/fenv.t Floating-point rounding mode tests for POSIX +ext/POSIX/t/iscrash See if POSIX isxxx() crashes with threads on Win32 +ext/POSIX/t/iv_const.t See if integer constants of POSIX are IV +ext/POSIX/t/math.t Basic math tests for POSIX +ext/POSIX/t/mb.t Multibyte function tests for POSIX +ext/POSIX/t/posix.t See if POSIX works +ext/POSIX/t/sigaction.t See if POSIX::sigaction works +ext/POSIX/t/sigset.t See if POSIX::SigSet works +ext/POSIX/t/strerror_errno.t See if POSIX:strerror doesn't trash $! +ext/POSIX/t/sysconf.t See if POSIX works +ext/POSIX/t/taint.t See if POSIX works with taint +ext/POSIX/t/termios.t See if POSIX works +ext/POSIX/t/time.t See if POSIX time-related functions work +ext/POSIX/t/unimplemented.t Test the diagnostics for unimplemented functions +ext/POSIX/t/usage.t Test the diagnostics for usage messages +ext/POSIX/t/waitpid.t See if waitpid works +ext/POSIX/t/wrappers.t Test the POSIX wrapper subroutines +ext/POSIX/typemap POSIX extension interface types +ext/re/Makefile.PL re extension makefile writer +ext/re/re.pm re extension Perl module +ext/re/re.xs re extension external subroutines +ext/re/re_comp.h re extension wrapper for regcomp.h +ext/re/re_top.h re extension symbol hiding header +ext/re/t/intflags.pl Program used by intflags.t +ext/re/t/intflags.t Test that intflags are serialized properly +ext/re/t/lexical_debug.pl generate debug output for lexical re 'debug' +ext/re/t/lexical_debug.t test that lexical re 'debug' works +ext/re/t/qr.t test that qr// is a Regexp +ext/re/t/re.t see if re pragma works +ext/re/t/re_funcs.t See if exportable 're' funcs in re.xs work +ext/re/t/re_funcs_u.t See if exportable 're' funcs in universal.c work +ext/re/t/reflags.t see if re '/xism' pragma works +ext/re/t/regop.pl generate debug output for various patterns +ext/re/t/regop.t test RE optimizations by scraping debug output +ext/re/t/strict.t see if re 'strict' subpragma works +ext/SDBM_File/biblio SDBM kit +ext/SDBM_File/CHANGES SDBM kit +ext/SDBM_File/dba.c SDBM kit +ext/SDBM_File/dbd.c SDBM kit +ext/SDBM_File/dbe.1 SDBM kit +ext/SDBM_File/dbe.c SDBM kit +ext/SDBM_File/dbu.c SDBM kit +ext/SDBM_File/grind SDBM kit +ext/SDBM_File/hash.c SDBM kit +ext/SDBM_File/Makefile.PL SDBM extension makefile writer +ext/SDBM_File/pair.c SDBM kit +ext/SDBM_File/pair.h SDBM kit +ext/SDBM_File/README SDBM kit +ext/SDBM_File/readme.ms SDBM kit +ext/SDBM_File/README.too SDBM kit +ext/SDBM_File/sdbm.3 SDBM kit +ext/SDBM_File/sdbm.c SDBM kit +ext/SDBM_File/sdbm.h SDBM kit +ext/SDBM_File/SDBM_File.pm SDBM extension Perl module +ext/SDBM_File/SDBM_File.xs SDBM extension external subroutines +ext/SDBM_File/t/constants.t See if SDBM_File constants work +ext/SDBM_File/t/corrupt.t See if SDBM_File handles corrupt files +ext/SDBM_File/t/prep.t See if SDBM_File with extra argument works +ext/SDBM_File/t/sdbm.t See if SDBM_File works +ext/SDBM_File/tune.h SDBM kit +ext/SDBM_File/typemap SDBM extension interface types +ext/SDBM_File/util.c SDBM kit +ext/Sys-Hostname/Hostname.pm Sys::Hostname extension Perl module +ext/Sys-Hostname/Hostname.xs Sys::Hostname extension external subroutines +ext/Sys-Hostname/t/Hostname.t See if Sys::Hostname works ext/Tie-Hash-NamedCapture/NamedCapture.pm Implements %- and %+ behaviour ext/Tie-Hash-NamedCapture/t/tiehash.t Tests TIEHASH ext/Tie-Memoize/lib/Tie/Memoize.pm Base class for memoized tied hashes ext/Tie-Memoize/t/Tie-Memoize.t Test for Tie::Memoize -ext/VMS-DCLsym/0README.txt ReadMe file for VMS::DCLsym -ext/VMS-DCLsym/DCLsym.pm Perl access to CLI symbols -ext/VMS-DCLsym/DCLsym.xs Perl access to CLI symbols -ext/VMS-DCLsym/Makefile.PL MakeMaker driver for VMS::DCLsym -ext/VMS-DCLsym/t/vms_dclsym.t regression tests for VMS::DCLsym +ext/VMS-DCLsym/0README.txt ReadMe file for VMS::DCLsym +ext/VMS-DCLsym/DCLsym.pm Perl access to CLI symbols +ext/VMS-DCLsym/DCLsym.xs Perl access to CLI symbols +ext/VMS-DCLsym/Makefile.PL MakeMaker driver for VMS::DCLsym +ext/VMS-DCLsym/t/vms_dclsym.t regression tests for VMS::DCLsym ext/VMS-Filespec/lib/VMS/Filespec.pm VMS-Unix file syntax interconversion ext/VMS-Filespec/t/filespec.t See if VMS::Filespec functions work -ext/VMS-Stdio/0README.txt ReadMe file for VMS::Stdio -ext/VMS-Stdio/Makefile.PL MakeMaker driver for VMS::Stdio -ext/VMS-Stdio/Stdio.pm VMS options to stdio routines -ext/VMS-Stdio/Stdio.xs VMS options to stdio routines -ext/VMS-Stdio/t/vms_stdio.t regression tests for VMS::Stdio -ext/Win32CORE/Makefile.PL Win32CORE extension -ext/Win32CORE/t/win32core.t Win32CORE extension -ext/Win32CORE/Win32CORE.c Win32CORE extension -ext/Win32CORE/Win32CORE.pm Win32CORE extension (stubs for Win32 CORE subs) -ext/XS-APItest/APItest.pm XS::APItest extension -ext/XS-APItest/APItest.xs XS::APItest extension -ext/XS-APItest/APItest_BS autogenerate APItest.bs -ext/XS-APItest/core.c Test API functions when PERL_CORE is defined -ext/XS-APItest/core_or_not.inc Code common to core.c and notcore.c -ext/XS-APItest/exception.c XS::APItest extension -ext/XS-APItest/Makefile.PL XS::APItest extension -ext/XS-APItest/notcore.c Test API functions when PERL_CORE is not defined -ext/XS-APItest/numeric.xs XS::APItest wrappers for numeric.c -ext/XS-APItest/t/addissub.t test op check wrapping -ext/XS-APItest/t/arrayexpr.t test recursive descent expression parsing -ext/XS-APItest/t/autoload.t Test XS AUTOLOAD routines -ext/XS-APItest/t/BHK.pm Helper for ./blockhooks.t -ext/XS-APItest/t/Block.pm Helper for ./blockhooks.t -ext/XS-APItest/t/blockasexpr.t test recursive descent block parsing -ext/XS-APItest/t/blockhooks.t XS::APItest: tests for PL_blockhooks -ext/XS-APItest/t/blockhooks-csc.t XS::APItest: more tests for PL_blockhooks -ext/XS-APItest/t/boolean.t test SvIsBOOL -ext/XS-APItest/t/boolean-thr.t test SvIsBOOL on threads -ext/XS-APItest/t/bootstrap.t XS::APItest: test APItest.bs -ext/XS-APItest/t/call.t Test calling perl from C -ext/XS-APItest/t/call_checker.t test call checker plugin API -ext/XS-APItest/t/caller.t XS::APItest: tests for caller_cx -ext/XS-APItest/t/callregexec.t XS::APItest: tests for CALLREGEXEC() -ext/XS-APItest/t/check_warnings.t test scope of "Too late for CHECK" -ext/XS-APItest/t/cleanup.t test stack behaviour on unwinding -ext/XS-APItest/t/clone-with-stack.t test clone with CLONEf_COPY_STACKS works -ext/XS-APItest/t/cophh.t test COPHH API -ext/XS-APItest/t/coplabel.t test cop_*_label -ext/XS-APItest/t/copstash.t test alloccopstash -ext/XS-APItest/t/copyhints.t test hv_copy_hints_hv() API -ext/XS-APItest/t/customop.t XS::APItest: tests for custom ops -ext/XS-APItest/t/cv_name.t test cv_name -ext/XS-APItest/t/delimcpy.t test delimcpy -ext/XS-APItest/t/eval-filter.t Simple source filter/eval test -ext/XS-APItest/t/exception.t XS::APItest extension -ext/XS-APItest/t/extend.t test EXTEND() macro -ext/XS-APItest/t/fetch_pad_names.t Tests for UTF8 names in pad -ext/XS-APItest/t/get.t test get_sv et al. -ext/XS-APItest/t/gotosub.t XS::APItest: tests goto &xsub and hints -ext/XS-APItest/t/grok.t XS::APItest: tests for grok* functions -ext/XS-APItest/t/gv_autoload4.t XS::APItest: tests for gv_autoload4() and variants -ext/XS-APItest/t/gv_const_sv.t XS::APItest: test gv_const_sv() -ext/XS-APItest/t/gv_fetchmeth.t XS::APItest: tests for gv_fetchmeth() and variants +ext/VMS-Stdio/0README.txt ReadMe file for VMS::Stdio +ext/VMS-Stdio/Makefile.PL MakeMaker driver for VMS::Stdio +ext/VMS-Stdio/Stdio.pm VMS options to stdio routines +ext/VMS-Stdio/Stdio.xs VMS options to stdio routines +ext/VMS-Stdio/t/vms_stdio.t regression tests for VMS::Stdio +ext/Win32CORE/Makefile.PL Win32CORE extension +ext/Win32CORE/t/win32core.t Win32CORE extension +ext/Win32CORE/Win32CORE.c Win32CORE extension +ext/Win32CORE/Win32CORE.pm Win32CORE extension (stubs for Win32 CORE subs) +ext/XS-APItest/APItest.pm XS::APItest extension +ext/XS-APItest/APItest.xs XS::APItest extension +ext/XS-APItest/APItest_BS autogenerate APItest.bs +ext/XS-APItest/core.c Test API functions when PERL_CORE is defined +ext/XS-APItest/core_or_not.inc Code common to core.c and notcore.c +ext/XS-APItest/exception.c XS::APItest extension +ext/XS-APItest/Makefile.PL XS::APItest extension +ext/XS-APItest/notcore.c Test API functions when PERL_CORE is not defined +ext/XS-APItest/numeric.xs XS::APItest wrappers for numeric.c +ext/XS-APItest/t/addissub.t test op check wrapping +ext/XS-APItest/t/arrayexpr.t test recursive descent expression parsing +ext/XS-APItest/t/autoload.t Test XS AUTOLOAD routines +ext/XS-APItest/t/BHK.pm Helper for ./blockhooks.t +ext/XS-APItest/t/Block.pm Helper for ./blockhooks.t +ext/XS-APItest/t/blockasexpr.t test recursive descent block parsing +ext/XS-APItest/t/blockhooks.t XS::APItest: tests for PL_blockhooks +ext/XS-APItest/t/blockhooks-csc.t XS::APItest: more tests for PL_blockhooks +ext/XS-APItest/t/boolean.t test SvIsBOOL +ext/XS-APItest/t/boolean-thr.t test SvIsBOOL on threads +ext/XS-APItest/t/bootstrap.t XS::APItest: test APItest.bs +ext/XS-APItest/t/call.t Test calling perl from C +ext/XS-APItest/t/call_checker.t test call checker plugin API +ext/XS-APItest/t/caller.t XS::APItest: tests for caller_cx +ext/XS-APItest/t/callregexec.t XS::APItest: tests for CALLREGEXEC() +ext/XS-APItest/t/check_warnings.t test scope of "Too late for CHECK" +ext/XS-APItest/t/cleanup.t test stack behaviour on unwinding +ext/XS-APItest/t/clone-with-stack.t test clone with CLONEf_COPY_STACKS works +ext/XS-APItest/t/cophh.t test COPHH API +ext/XS-APItest/t/coplabel.t test cop_*_label +ext/XS-APItest/t/copstash.t test alloccopstash +ext/XS-APItest/t/copyhints.t test hv_copy_hints_hv() API +ext/XS-APItest/t/customop.t XS::APItest: tests for custom ops +ext/XS-APItest/t/cv_name.t test cv_name +ext/XS-APItest/t/cv_refcounted_anysv.t test CvREFCOUNTED_ANYSV +ext/XS-APItest/t/delimcpy.t test delimcpy +ext/XS-APItest/t/eval-filter.t Simple source filter/eval test +ext/XS-APItest/t/exception.t XS::APItest extension +ext/XS-APItest/t/extend.t test EXTEND() macro +ext/XS-APItest/t/fetch_pad_names.t Tests for UTF8 names in pad +ext/XS-APItest/t/get.t test get_sv et al. +ext/XS-APItest/t/gotosub.t XS::APItest: tests goto &xsub and hints +ext/XS-APItest/t/grok.t XS::APItest: tests for grok* functions +ext/XS-APItest/t/gv_autoload4.t XS::APItest: tests for gv_autoload4() and variants +ext/XS-APItest/t/gv_const_sv.t XS::APItest: test gv_const_sv() +ext/XS-APItest/t/gv_fetchmeth.t XS::APItest: tests for gv_fetchmeth() and variants ext/XS-APItest/t/gv_fetchmeth_autoload.t XS::APItest: tests for gv_fetchmeth_autoload() and variants -ext/XS-APItest/t/gv_fetchmethod_flags.t XS::APItest: tests for gv_fetchmethod_flags() and variants -ext/XS-APItest/t/gv_init.t XS::APItest: tests for gv_init and variants -ext/XS-APItest/t/handy00.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy01.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy02.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy03.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy04.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy05.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy06.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy07.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy08.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy09.t XS::APItest: tests for handy.h -ext/XS-APItest/t/handy_base.pl XS::APItest: tests for handy.h -ext/XS-APItest/t/hash.t XS::APItest: tests for hash related APIs -ext/XS-APItest/t/hv_macro.t XS::APItest: tests for low level macros used in hashing -ext/XS-APItest/t/join_with_space.t test op_convert_list -ext/XS-APItest/t/keyword_multiline.t test keyword plugin parsing across lines -ext/XS-APItest/t/keyword_plugin.t test keyword plugin mechanism +ext/XS-APItest/t/gv_fetchmethod_flags.t XS::APItest: tests for gv_fetchmethod_flags() and variants +ext/XS-APItest/t/gv_init.t XS::APItest: tests for gv_init and variants +ext/XS-APItest/t/handy00.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy01.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy02.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy03.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy04.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy05.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy06.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy07.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy08.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy09.t XS::APItest: tests for handy.h +ext/XS-APItest/t/handy_base.pl XS::APItest: tests for handy.h +ext/XS-APItest/t/hash.t XS::APItest: tests for hash related APIs +ext/XS-APItest/t/hv_macro.t XS::APItest: tests for low level macros used in hashing +ext/XS-APItest/t/join_with_space.t test op_convert_list +ext/XS-APItest/t/keyword_multiline.t test keyword plugin parsing across lines +ext/XS-APItest/t/keyword_plugin.t test keyword plugin mechanism ext/XS-APItest/t/keyword_plugin_threads.t test keyword plugin loading from multiple threads -ext/XS-APItest/t/labelconst.aux auxiliary file for label test -ext/XS-APItest/t/labelconst.t test recursive descent label parsing -ext/XS-APItest/t/labelconst_utf8.aux auxiliary file for label test in UTF-8 -ext/XS-APItest/t/lexsub.t Test XS registration of lexical subs -ext/XS-APItest/t/load-module.t test load_module() -ext/XS-APItest/t/locale.t test locale-related things -ext/XS-APItest/t/loopblock.t test recursive descent block parsing -ext/XS-APItest/t/looprest.t test recursive descent statement-sequence parsing -ext/XS-APItest/t/lvalue.t Test XS lvalue functions -ext/XS-APItest/t/magic.t test attaching, finding, and removing magic -ext/XS-APItest/t/magic_chain.t test low-level MAGIC chain handling -ext/XS-APItest/t/Markers.pm Helper for ./blockhooks.t -ext/XS-APItest/t/mro.t Test mro plugin api -ext/XS-APItest/t/multicall.t XS::APItest: test MULTICALL macros -ext/XS-APItest/t/my_cxt.t XS::APItest: test MY_CXT interface -ext/XS-APItest/t/my_exit.t XS::APItest: test my_exit -ext/XS-APItest/t/my_strtod.t XS::APItest: test my_strtod -ext/XS-APItest/t/newCONSTSUB.t XS::APItest: test newCONSTSUB(_flags) -ext/XS-APItest/t/newDEFSVOP.t XS::APItest: test newDEFSVOP -ext/XS-APItest/t/Null.pm Helper for ./blockhooks.t -ext/XS-APItest/t/op.t XS::APItest: tests for OP related APIs -ext/XS-APItest/t/op_contextualize.t test op_contextualize() API -ext/XS-APItest/t/op_list.t test OP list construction API -ext/XS-APItest/t/overload.t XS::APItest: tests for overload related APIs -ext/XS-APItest/t/pad_scalar.t Test pad_findmy_* functions -ext/XS-APItest/t/peep.t test PL_peepp/PL_rpeepp -ext/XS-APItest/t/pmflag.t Test removal of Perl_pmflag() -ext/XS-APItest/t/postinc.t test op_lvalue() -ext/XS-APItest/t/printf.t XS::APItest extension -ext/XS-APItest/t/ptr_table.t Test ptr_table_* APIs -ext/XS-APItest/t/push.t XS::APItest extension -ext/XS-APItest/t/refs.t Test typemap ref handling -ext/XS-APItest/t/rmagical.t XS::APItest extension -ext/XS-APItest/t/rv2cv_op_cv.t test rv2cv_op_cv() API -ext/XS-APItest/t/savehints.t test SAVEHINTS() API -ext/XS-APItest/t/scopelessblock.t test recursive descent statement-sequence parsing -ext/XS-APItest/t/sort.t Test sort(xs_cmp ...) -ext/XS-APItest/t/stmtasexpr.t test recursive descent statement parsing -ext/XS-APItest/t/stmtsasexpr.t test recursive descent statement-sequence parsing -ext/XS-APItest/t/stuff_modify_bug.t test for eval side-effecting source string -ext/XS-APItest/t/stuff_svcur_bug.t test for a bug in lex_stuff_pvn -ext/XS-APItest/t/subcall.t Test XSUB calls -ext/XS-APItest/t/subsignature.t Test parse_subsignature() -ext/XS-APItest/t/sv_numeq.t Test sv_numeq -ext/XS-APItest/t/sv_streq.t Test sv_streq -ext/XS-APItest/t/svcat.t Test sv_catpvn -ext/XS-APItest/t/svcatpvf.t Test sv_catpvf argument reordering -ext/XS-APItest/t/sviscow.t Test SvIsCOW -ext/XS-APItest/t/svpeek.t XS::APItest extension -ext/XS-APItest/t/svpv.t More generic SvPVbyte and SvPVutf8 tests -ext/XS-APItest/t/svpv_magic.t Test behaviour of SvPVbyte/utf8 & get magic -ext/XS-APItest/t/svsetsv.t Test behaviour of sv_setsv with/without PERL_CORE -ext/XS-APItest/t/swaplabel.t test recursive descent label parsing -ext/XS-APItest/t/swaptwostmts.t test recursive descent statement parsing -ext/XS-APItest/t/sym-hook.t Test rv2cv hooks for bareword lookup -ext/XS-APItest/t/synthetic_scope.t Test block_start/block_end/intro_my -ext/XS-APItest/t/temp_lv_sub.t XS::APItest: tests for lvalue subs returning temps -ext/XS-APItest/t/underscore_length.t Test find_rundefsv() -ext/XS-APItest/t/utf16_to_utf8.t Test behaviour of utf16_to_utf8{,reversed} -ext/XS-APItest/t/utf8.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_setup.pl Tests for code in utf8.c -ext/XS-APItest/t/utf8_to_bytes.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn00.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn01.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn02.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn03.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn04.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn05.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn06.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn07.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn08.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn09.t Tests for code in utf8.c -ext/XS-APItest/t/utf8_warn_base.pl Tests for code in utf8.c -ext/XS-APItest/t/weaken.t XS::APItest: tests for sv_rvweaken() and sv_get_backrefs() -ext/XS-APItest/t/whichsig.t XS::APItest: tests for whichsig() and variants -ext/XS-APItest/t/win32.t Test Win32 specific APIs -ext/XS-APItest/t/xs_special_subs.t Test that XS BEGIN/CHECK/INIT/END work +ext/XS-APItest/t/labelconst.aux auxiliary file for label test +ext/XS-APItest/t/labelconst.t test recursive descent label parsing +ext/XS-APItest/t/labelconst_utf8.aux auxiliary file for label test in UTF-8 +ext/XS-APItest/t/lexsub.t Test XS registration of lexical subs +ext/XS-APItest/t/load-module.t test load_module() +ext/XS-APItest/t/locale.t test locale-related things +ext/XS-APItest/t/loopblock.t test recursive descent block parsing +ext/XS-APItest/t/looprest.t test recursive descent statement-sequence parsing +ext/XS-APItest/t/lvalue.t Test XS lvalue functions +ext/XS-APItest/t/magic.t test attaching, finding, and removing magic +ext/XS-APItest/t/magic_chain.t test low-level MAGIC chain handling +ext/XS-APItest/t/Markers.pm Helper for ./blockhooks.t +ext/XS-APItest/t/mortal_destructor.t Test mortal_destructor api. +ext/XS-APItest/t/mro.t Test mro plugin api +ext/XS-APItest/t/multicall.t XS::APItest: test MULTICALL macros +ext/XS-APItest/t/my_cxt.t XS::APItest: test MY_CXT interface +ext/XS-APItest/t/my_exit.t XS::APItest: test my_exit +ext/XS-APItest/t/my_strtod.t XS::APItest: test my_strtod +ext/XS-APItest/t/newAV.t XS::APItest: test newAV* functions +ext/XS-APItest/t/newCONSTSUB.t XS::APItest: test newCONSTSUB(_flags) +ext/XS-APItest/t/newDEFSVOP.t XS::APItest: test newDEFSVOP +ext/XS-APItest/t/Null.pm Helper for ./blockhooks.t +ext/XS-APItest/t/op.t XS::APItest: tests for OP related APIs +ext/XS-APItest/t/op_contextualize.t test op_contextualize() API +ext/XS-APItest/t/op_list.t test OP list construction API +ext/XS-APItest/t/overload.t XS::APItest: tests for overload related APIs +ext/XS-APItest/t/pad_scalar.t Test pad_findmy_* functions +ext/XS-APItest/t/peep.t test PL_peepp/PL_rpeepp +ext/XS-APItest/t/pmflag.t Test removal of Perl_pmflag() +ext/XS-APItest/t/postinc.t test op_lvalue() +ext/XS-APItest/t/printf.t XS::APItest extension +ext/XS-APItest/t/ptr_table.t Test ptr_table_* APIs +ext/XS-APItest/t/push.t XS::APItest extension +ext/XS-APItest/t/refs.t Test typemap ref handling +ext/XS-APItest/t/rmagical.t XS::APItest extension +ext/XS-APItest/t/rv2cv_op_cv.t test rv2cv_op_cv() API +ext/XS-APItest/t/savehints.t test SAVEHINTS() API +ext/XS-APItest/t/savestack.t test savestack behavior, currently only in the regex engine +ext/XS-APItest/t/scopelessblock.t test recursive descent statement-sequence parsing +ext/XS-APItest/t/sort.t Test sort(xs_cmp ...) +ext/XS-APItest/t/stmtasexpr.t test recursive descent statement parsing +ext/XS-APItest/t/stmtsasexpr.t test recursive descent statement-sequence parsing +ext/XS-APItest/t/stuff_modify_bug.t test for eval side-effecting source string +ext/XS-APItest/t/stuff_svcur_bug.t test for a bug in lex_stuff_pvn +ext/XS-APItest/t/subcall.t Test XSUB calls +ext/XS-APItest/t/subsignature.t Test parse_subsignature() +ext/XS-APItest/t/sv_numeq.t Test sv_numeq +ext/XS-APItest/t/sv_streq.t Test sv_streq +ext/XS-APItest/t/svcat.t Test sv_catpvn +ext/XS-APItest/t/svcatpvf.t Test sv_catpvf argument reordering +ext/XS-APItest/t/sviscow.t Test SvIsCOW +ext/XS-APItest/t/svpeek.t XS::APItest extension +ext/XS-APItest/t/svpv.t More generic SvPVbyte and SvPVutf8 tests +ext/XS-APItest/t/svpv_magic.t Test behaviour of SvPVbyte/utf8 & get magic +ext/XS-APItest/t/svsetsv.t Test behaviour of sv_setsv with/without PERL_CORE +ext/XS-APItest/t/swaplabel.t test recursive descent label parsing +ext/XS-APItest/t/swaptwostmts.t test recursive descent statement parsing +ext/XS-APItest/t/sym-hook.t Test rv2cv hooks for bareword lookup +ext/XS-APItest/t/synthetic_scope.t Test block_start/block_end/intro_my +ext/XS-APItest/t/temp_lv_sub.t XS::APItest: tests for lvalue subs returning temps +ext/XS-APItest/t/underscore_length.t Test find_rundefsv() +ext/XS-APItest/t/utf16_to_utf8.t Test behaviour of utf16_to_utf8{,reversed} +ext/XS-APItest/t/utf8.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_setup.pl Tests for code in utf8.c +ext/XS-APItest/t/utf8_to_bytes.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn00.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn01.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn02.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn03.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn04.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn05.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn06.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn07.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn08.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn09.t Tests for code in utf8.c +ext/XS-APItest/t/utf8_warn_base.pl Tests for code in utf8.c +ext/XS-APItest/t/weaken.t XS::APItest: tests for sv_rvweaken() and sv_get_backrefs() +ext/XS-APItest/t/whichsig.t XS::APItest: tests for whichsig() and variants +ext/XS-APItest/t/win32.t Test Win32 specific APIs +ext/XS-APItest/t/xs_special_subs.t Test that XS BEGIN/CHECK/INIT/END work ext/XS-APItest/t/xs_special_subs_require.t for require too -ext/XS-APItest/t/xsub_h.t Tests for XSUB.h +ext/XS-APItest/t/xsub_h.t Tests for XSUB.h ext/XS-APItest/typemap -ext/XS-APItest/XSUB-redefined-macros.xs XS code needing redefined macros. -ext/XS-APItest/XSUB-undef-XS_VERSION.xs XS code needing #undef XS_VERSION -ext/XS-Typemap/Makefile.PL XS::Typemap extension -ext/XS-Typemap/README XS::Typemap extension -ext/XS-Typemap/stdio.c XS::Typemap extension -ext/XS-Typemap/t/Typemap.t test that typemaps work -ext/XS-Typemap/Typemap.pm XS::Typemap extension -ext/XS-Typemap/Typemap.xs XS::Typemap extension -EXTERN.h Included before foreign .h files -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 -gv.h Glob value header -h2pl/cbreak.pl cbreak routines using .ph -h2pl/cbreak2.pl cbreak routines using .pl -h2pl/eg/sizeof.ph Sample sizeof array initialization -h2pl/eg/sys/errno.pl Sample translated errno.pl -h2pl/eg/sys/ioctl.pl Sample translated ioctl.pl -h2pl/eg/sysexits.pl Sample translated sysexits.pl -h2pl/getioctlsizes Program to extract types from ioctl.h -h2pl/mksizes Program to make %sizeof array -h2pl/mkvars Program to make .pl from .ph files -h2pl/README How to turn .ph files into .pl files -h2pl/tcbreak cbreak test routine using .ph -h2pl/tcbreak2 cbreak test routine using .pl -haiku/Haiku/Haiku.pm Haiku extension Perl module -haiku/Haiku/Haiku.xs Haiku extension external subroutines -haiku/Haiku/Makefile.PL Haiku extension makefile writer -haiku/haikuish.h Header for the Haiku port -handy.h Handy definitions -hints/aix.sh Hints for named architecture -hints/aix_3.sh Hints for named architecture -hints/aix_4.sh Hints for named architecture -hints/altos486.sh Hints for named architecture -hints/amigaos.sh Hints for named architecture -hints/atheos.sh Hints for named architecture -hints/aux_3.sh Hints for named architecture -hints/bitrig.sh Hints for named architecture -hints/broken-db.msg Warning message for systems with broken DB library -hints/bsdos.sh Hints for named architecture -hints/catamount.sh Hints for named architecture -hints/convexos.sh Hints for named architecture -hints/cxux.sh Hints for named architecture -hints/cygwin.sh Hints for named architecture -hints/darwin.sh Hints for named architecture -hints/dcosx.sh Hints for named architecture -hints/dec_osf.sh Hints for named architecture -hints/dragonfly.sh Hints for named architecture -hints/dynix.sh Hints for named architecture -hints/dynixptx.sh Hints for named architecture -hints/epix.sh Hints for named architecture -hints/esix4.sh Hints for named architecture -hints/fps.sh Hints for named architecture -hints/freebsd.sh Hints for named architecture -hints/freemint.sh Hints for named architecture -hints/gnu.sh Hints for named architecture -hints/gnukfreebsd.sh Hints for named architecture -hints/gnuknetbsd.sh Hints for named architecture -hints/greenhills.sh Hints for named architecture -hints/haiku.sh Hints for named architecture -hints/hpux.sh Hints for named architecture -hints/i386.sh Hints for named architecture -hints/interix.sh Hints for named architecture -hints/irix_4.sh Hints for named architecture -hints/irix_5.sh Hints for named architecture -hints/irix_6.sh Hints for named architecture -hints/irix_6_0.sh Hints for named architecture -hints/irix_6_1.sh Hints for named architecture -hints/isc.sh Hints for named architecture -hints/isc_2.sh Hints for named architecture -hints/linux.sh Hints for named architecture -hints/linux-android.sh Hints for named architecture -hints/lynxos.sh Hints for named architecture -hints/midnightbsd.sh Hints for named architecture -hints/minix.sh Hints for named architecture -hints/mips.sh Hints for named architecture -hints/mirbsd.sh Hints for named architecture -hints/mpc.sh Hints for named architecture -hints/ncr_tower.sh Hints for named architecture -hints/netbsd.sh Hints for named architecture -hints/newsos4.sh Hints for named architecture -hints/nonstopux.sh Hints for named architecture -hints/openbsd.sh Hints for named architecture -hints/opus.sh Hints for named architecture -hints/os2.sh Hints for named architecture -hints/os390.sh Hints for named architecture -hints/os400.sh Hints for named architecture -hints/posix-bc.sh Hints for named architecture -hints/qnx.sh Hints for named architecture -hints/README.hints Notes about hints -hints/riscos.sh Hints for named architecture -hints/sco.sh Hints for named architecture -hints/sco_2_3_0.sh Hints for named architecture -hints/sco_2_3_1.sh Hints for named architecture -hints/sco_2_3_2.sh Hints for named architecture -hints/sco_2_3_3.sh Hints for named architecture -hints/sco_2_3_4.sh Hints for named architecture -hints/solaris_2.sh Hints for named architecture -hints/stellar.sh Hints for named architecture -hints/sunos_4_0.sh Hints for named architecture -hints/sunos_4_1.sh Hints for named architecture -hints/super-ux.sh Hints for named architecture -hints/svr4.sh Hints for named architecture -hints/svr5.sh Hints for named architecture -hints/t001.c Test case for gcc bug -hints/ti1500.sh Hints for named architecture -hints/ultrix_4.sh Hints for named architecture -hints/umips.sh Hints for named architecture -hints/unicos.sh Hints for named architecture -hints/unicosmk.sh Hints for named architecture -hints/unisysdynix.sh Hints for named architecture -hints/utekv.sh Hints for named architecture -hints/vos.sh Hints for named architecture -hv.c Hash value code -hv.h Hash value header -hv_func.h Hash value static inline function header -hv_macro.h Macros used by hv_func.h -inline.h Static inline functions -INSTALL Detailed installation instructions -install_lib.pl functions shared between install* scripts -installhtml Perl script to install html files for pods -installman Perl script to install man pages for pods -installperl Perl script to do "make install" dirty work -INTERN.h Included before domestic .h files -intrpvar.h Variables held in each interpreter instance -invlist_inline.h Inline functions for handling inversion lists -iperlsys.h Perl's interface to the system -keywords.c Perl_keyword(), generated by regen/keywords.pl -keywords.h The keyword numbers -l1_char_class_tab.h 256 word bit table of character classes (for handy.h) -lib/_charnames.pm Character names -lib/AnyDBM_File.pm Perl module to emulate dbmopen -lib/AnyDBM_File.t See if AnyDBM_File works -lib/B/Deparse.pm Compiler Deparse backend -lib/B/Deparse.t See if B::Deparse works -lib/B/Deparse-core.t See if B::Deparse knows when to use CORE:: -lib/B/Deparse-subclass.t See if B::Deparse can be subclassed -lib/B/Op_private.pm Definitions of OP op_private flags -lib/Benchmark.pm Measure execution time -lib/Benchmark.t See if Benchmark works -lib/blib.pm For "use blib" -lib/blib.t blib.pm test -lib/builtin.pm builtin function namespace -lib/builtin.t test builtin function namespace -lib/bytes.pm Pragma to enable byte operations -lib/bytes.t bytes.pm test -lib/bytes_heavy.pl Support routines for byte pragma -lib/charnames.pm Character names -lib/charnames.t See if character names work -lib/Class/Struct.pm Declare struct-like datatypes as Perl classes -lib/Class/Struct.t See if Class::Struct works -lib/Config.t See if Config 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/CORE.pod document the CORE namespace -lib/DB.pm Debugger API (draft) -lib/DB.t See if DB works -lib/DBM_Filter.pm DBM Filter module -lib/DBM_Filter/compress.pm DBM Filter to compress keys/values -lib/DBM_Filter/encode.pm DBM Filter for encoding -lib/DBM_Filter/int32.pm DBM Filter for creating int32 keys/values -lib/DBM_Filter/null.pm DBM Filter for null termination -lib/DBM_Filter/t/01error.t test DBM_Filter::null -lib/DBM_Filter/t/02core.t test DBM_Filter::null -lib/DBM_Filter/t/compress.t test DBM_Filter::compress -lib/DBM_Filter/t/encode.t test DBM_Filter::encode -lib/DBM_Filter/t/int32.t test DBM_Filter::int32 -lib/DBM_Filter/t/null.t test DBM_Filter::null -lib/DBM_Filter/t/utf8.t test DBM_Filter::utf8 -lib/DBM_Filter/utf8.pm DBM Filter for UTF-8 Encoding -lib/dbm_filter_util.pl Utility functions used by DBM Filter tests -lib/deprecate.pm A pragma for deprecating modules from the core. -lib/diagnostics.pm Print verbose diagnostics -lib/diagnostics.t See if diagnostics.pm works -lib/DirHandle.pm like FileHandle only for directories -lib/DirHandle.t See if DirHandle works -lib/dumpvar.pl A variable dumper -lib/dumpvar.t A variable dumper tester -lib/English.pm Readable aliases for short variables -lib/English.t See if English works -lib/ExtUtils/Embed.pm Utilities for embedding Perl in C programs -lib/ExtUtils/t/Embed.t See if ExtUtils::Embed and embedding works -lib/ExtUtils/typemap Extension interface types -lib/ExtUtils/XSSymSet.pm on VMS, manage linker symbols when building extensions -lib/feature.pm Pragma to enable new syntax -lib/feature.t See if features work -lib/feature/unicode_strings.t See if feature "unicode_strings" work -lib/File/Basename.pm Emulate the basename program -lib/File/Basename.t See if File::Basename works -lib/File/Compare.pm Emulation of cmp command -lib/File/Compare.t See if File::Compare works -lib/File/Copy.pm Emulation of cp command -lib/File/Copy.t See if File::Copy works -lib/File/stat.pm By-name interface to Perl's builtin stat -lib/File/stat.t See if File::stat works -lib/File/stat-7896.t A test for ID 20011110.104 -lib/FileHandle.pm Backward-compatible front end to IO extension -lib/FileHandle.t See if FileHandle works -lib/filetest.pm For "use filetest" -lib/filetest.t See if filetest works -lib/Getopt/Std.pm Fetch command options (getopt, getopts) -lib/Getopt/Std.t See if Getopt::Std and Getopt::Long work -lib/h2ph.t See if h2ph works like it should -lib/h2xs.t See if h2xs produces expected lists of files -lib/integer.pm For "use integer" -lib/integer.t For "use integer" testing -lib/Internals.pod Document the Internals namespace (implemented by universal.c) -lib/Internals.t For Internals::* testing -lib/less.pm For "use less" -lib/less.t See if less support works -lib/locale.pm For "use locale" -lib/locale.t See if locale support works -lib/locale_threads.t Tes locale and threads interactions -lib/meta_notation.pm Helper for certain /lib .pm's -lib/meta_notation.t See if meta_notation.t works -lib/Net/hostent.pm By-name interface to Perl's builtin gethost* -lib/Net/hostent.t See if Net::hostent works -lib/Net/netent.pm By-name interface to Perl's builtin getnet* -lib/Net/netent.t See if Net::netent works -lib/Net/protoent.pm By-name interface to Perl's builtin getproto* -lib/Net/protoent.t See if Net::protoent works -lib/Net/servent.pm By-name interface to Perl's builtin getserv* -lib/Net/servent.t See if Net::servtent works -lib/open.pm Pragma to specify default I/O layers -lib/open.t See if the open pragma works -lib/overload.pm Module for overloading perl operators -lib/overload.t See if operator overloading works -lib/overload/numbers.pm Helper for overloading pragma -lib/overload64.t See if operator overloading works with 64-bit ints -lib/overloading.pm Pragma to lexically control overloading -lib/overloading.t Tests for overloading.pm -lib/perl5db.pl Perl debugging routines -lib/perl5db.t Tests for the Perl debugger -lib/perl5db/t/break-on-dot Test script used by perl5db.t -lib/perl5db/t/breakpoint-bug Test script used by perl5db.t -lib/perl5db/t/disable-breakpoints-1 Test script used by perl5db.t -lib/perl5db/t/disable-breakpoints-2 Test script used by perl5db.t -lib/perl5db/t/disable-breakpoints-3 Test script used by perl5db.t -lib/perl5db/t/EnableModule.pm Tests for the Perl debugger -lib/perl5db/t/eval-line-bug Tests for the Perl debugger -lib/perl5db/t/fact Tests for the Perl debugger -lib/perl5db/t/filename-line-breakpoint Tests for the Perl debugger -lib/perl5db/t/gh-17660 Tests for the Perl debugger -lib/perl5db/t/gh-17661 Tests for the Perl debugger -lib/perl5db/t/gh-17661b Tests for the Perl debugger -lib/perl5db/t/load-modules Tests for the Perl debugger -lib/perl5db/t/lsub-n Test script used by perl5db.t -lib/perl5db/t/lvalue-bug Tests for the Perl debugger -lib/perl5db/t/MyModule.pm Tests for the Perl debugger -lib/perl5db/t/proxy-constants Tests for the Perl debugger -lib/perl5db/t/rt-104168 Tests for the Perl debugger -lib/perl5db/t/rt-120174 Tests for the Perl debugger +ext/XS-APItest/XSUB-redefined-macros.xs XS code needing redefined macros. +ext/XS-APItest/XSUB-undef-XS_VERSION.xs XS code needing #undef XS_VERSION +ext/XS-Typemap/Makefile.PL XS::Typemap extension +ext/XS-Typemap/README XS::Typemap extension +ext/XS-Typemap/stdio.c XS::Typemap extension +ext/XS-Typemap/t/Typemap.t test that typemaps work +ext/XS-Typemap/Typemap.pm XS::Typemap extension +ext/XS-Typemap/Typemap.xs XS::Typemap extension +h2pl/cbreak.pl cbreak routines using .ph +h2pl/cbreak2.pl cbreak routines using .pl +h2pl/eg/sizeof.ph Sample sizeof array initialization +h2pl/eg/sys/errno.pl Sample translated errno.pl +h2pl/eg/sys/ioctl.pl Sample translated ioctl.pl +h2pl/eg/sysexits.pl Sample translated sysexits.pl +h2pl/getioctlsizes Program to extract types from ioctl.h +h2pl/mksizes Program to make %sizeof array +h2pl/mkvars Program to make .pl from .ph files +h2pl/README How to turn .ph files into .pl files +h2pl/tcbreak cbreak test routine using .ph +h2pl/tcbreak2 cbreak test routine using .pl +haiku/Haiku/Haiku.pm Haiku extension Perl module +haiku/Haiku/Haiku.xs Haiku extension external subroutines +haiku/Haiku/Makefile.PL Haiku extension makefile writer +haiku/haikuish.h Header for the Haiku port +hints/aix.sh Hints for named architecture +hints/aix_3.sh Hints for named architecture +hints/aix_4.sh Hints for named architecture +hints/altos486.sh Hints for named architecture +hints/amigaos.sh Hints for named architecture +hints/atheos.sh Hints for named architecture +hints/aux_3.sh Hints for named architecture +hints/bitrig.sh Hints for named architecture +hints/broken-db.msg Warning message for systems with broken DB library +hints/bsdos.sh Hints for named architecture +hints/catamount.sh Hints for named architecture +hints/convexos.sh Hints for named architecture +hints/cxux.sh Hints for named architecture +hints/cygwin.sh Hints for named architecture +hints/darwin.sh Hints for named architecture +hints/dcosx.sh Hints for named architecture +hints/dec_osf.sh Hints for named architecture +hints/dragonfly.sh Hints for named architecture +hints/dynix.sh Hints for named architecture +hints/dynixptx.sh Hints for named architecture +hints/epix.sh Hints for named architecture +hints/esix4.sh Hints for named architecture +hints/fps.sh Hints for named architecture +hints/freebsd.sh Hints for named architecture +hints/freemint.sh Hints for named architecture +hints/gnu.sh Hints for named architecture +hints/gnukfreebsd.sh Hints for named architecture +hints/gnuknetbsd.sh Hints for named architecture +hints/greenhills.sh Hints for named architecture +hints/haiku.sh Hints for named architecture +hints/hpux.sh Hints for named architecture +hints/i386.sh Hints for named architecture +hints/interix.sh Hints for named architecture +hints/irix_4.sh Hints for named architecture +hints/irix_5.sh Hints for named architecture +hints/irix_6.sh Hints for named architecture +hints/irix_6_0.sh Hints for named architecture +hints/irix_6_1.sh Hints for named architecture +hints/isc.sh Hints for named architecture +hints/isc_2.sh Hints for named architecture +hints/linux.sh Hints for named architecture +hints/linux-android.sh Hints for named architecture +hints/lynxos.sh Hints for named architecture +hints/midnightbsd.sh Hints for named architecture +hints/minix.sh Hints for named architecture +hints/mips.sh Hints for named architecture +hints/mirbsd.sh Hints for named architecture +hints/mpc.sh Hints for named architecture +hints/ncr_tower.sh Hints for named architecture +hints/netbsd.sh Hints for named architecture +hints/newsos4.sh Hints for named architecture +hints/nonstopux.sh Hints for named architecture +hints/openbsd.sh Hints for named architecture +hints/opus.sh Hints for named architecture +hints/os2.sh Hints for named architecture +hints/os390.sh Hints for named architecture +hints/os400.sh Hints for named architecture +hints/posix-bc.sh Hints for named architecture +hints/qnx.sh Hints for named architecture +hints/README.hints Notes about hints +hints/riscos.sh Hints for named architecture +hints/sco.sh Hints for named architecture +hints/sco_2_3_0.sh Hints for named architecture +hints/sco_2_3_1.sh Hints for named architecture +hints/sco_2_3_2.sh Hints for named architecture +hints/sco_2_3_3.sh Hints for named architecture +hints/sco_2_3_4.sh Hints for named architecture +hints/solaris_2.sh Hints for named architecture +hints/stellar.sh Hints for named architecture +hints/sunos_4_0.sh Hints for named architecture +hints/sunos_4_1.sh Hints for named architecture +hints/super-ux.sh Hints for named architecture +hints/svr4.sh Hints for named architecture +hints/svr5.sh Hints for named architecture +hints/t001.c Test case for gcc bug +hints/ti1500.sh Hints for named architecture +hints/umips.sh Hints for named architecture +hints/unicos.sh Hints for named architecture +hints/unicosmk.sh Hints for named architecture +hints/unisysdynix.sh Hints for named architecture +hints/utekv.sh Hints for named architecture +hints/vos.sh Hints for named architecture +lib/_charnames.pm Character names +lib/AnyDBM_File.pm Perl module to emulate dbmopen +lib/AnyDBM_File.t See if AnyDBM_File works +lib/B/Deparse.pm Compiler Deparse backend +lib/B/Deparse.t See if B::Deparse works +lib/B/Deparse-core.t See if B::Deparse knows when to use CORE:: +lib/B/Deparse-subclass.t See if B::Deparse can be subclassed +lib/B/Op_private.pm Definitions of OP op_private flags +lib/Benchmark.pm Measure execution time +lib/Benchmark.t See if Benchmark works +lib/blib.pm For "use blib" +lib/blib.t blib.pm test +lib/builtin.pm builtin function namespace +lib/builtin.t test builtin function namespace +lib/bytes.pm Pragma to enable byte operations +lib/bytes.t bytes.pm test +lib/bytes_heavy.pl Support routines for byte pragma +lib/charnames.pm Character names +lib/charnames.t See if character names work +lib/Class/Struct.pm Declare struct-like datatypes as Perl classes +lib/Class/Struct.t See if Class::Struct works +lib/Config.t See if Config works +lib/Config/Extensions.pm Convenient hash lookup for built extensions +lib/Config/Extensions.t See if Config::Extensions works +lib/CORE.pod document the CORE namespace +lib/DB.pm Debugger API (draft) +lib/DB.t See if DB works +lib/DBM_Filter.pm DBM Filter module +lib/DBM_Filter/compress.pm DBM Filter to compress keys/values +lib/DBM_Filter/encode.pm DBM Filter for encoding +lib/DBM_Filter/int32.pm DBM Filter for creating int32 keys/values +lib/DBM_Filter/null.pm DBM Filter for null termination +lib/DBM_Filter/t/01error.t test DBM_Filter::null +lib/DBM_Filter/t/02core.t test DBM_Filter::null +lib/DBM_Filter/t/compress.t test DBM_Filter::compress +lib/DBM_Filter/t/encode.t test DBM_Filter::encode +lib/DBM_Filter/t/int32.t test DBM_Filter::int32 +lib/DBM_Filter/t/null.t test DBM_Filter::null +lib/DBM_Filter/t/utf8.t test DBM_Filter::utf8 +lib/DBM_Filter/utf8.pm DBM Filter for UTF-8 Encoding +lib/dbm_filter_util.pl Utility functions used by DBM Filter tests +lib/deprecate.pm A pragma for deprecating modules from the core. +lib/diagnostics.pm Print verbose diagnostics +lib/diagnostics.t See if diagnostics.pm works +lib/DirHandle.pm like FileHandle only for directories +lib/DirHandle.t See if DirHandle works +lib/dumpvar.pl A variable dumper +lib/dumpvar.t A variable dumper tester +lib/English.pm Readable aliases for short variables +lib/English.t See if English works +lib/ExtUtils/Embed.pm Utilities for embedding Perl in C programs +lib/ExtUtils/t/Embed.t See if ExtUtils::Embed and embedding works +lib/ExtUtils/typemap Extension interface types +lib/ExtUtils/XSSymSet.pm on VMS, manage linker symbols when building extensions +lib/feature.pm Pragma to enable new syntax +lib/feature.t See if features work +lib/feature/unicode_strings.t See if feature "unicode_strings" work +lib/File/Basename.pm Emulate the basename program +lib/File/Basename.t See if File::Basename works +lib/File/Compare.pm Emulation of cmp command +lib/File/Compare.t See if File::Compare works +lib/File/Copy.pm Emulation of cp command +lib/File/Copy.t See if File::Copy works +lib/File/stat.pm By-name interface to Perl's builtin stat +lib/File/stat.t See if File::stat works +lib/File/stat-7896.t A test for ID 20011110.104 +lib/FileHandle.pm Backward-compatible front end to IO extension +lib/FileHandle.t See if FileHandle works +lib/filetest.pm For "use filetest" +lib/filetest.t See if filetest works +lib/Getopt/Std.pm Fetch command options (getopt, getopts) +lib/Getopt/Std.t See if Getopt::Std and Getopt::Long work +lib/h2ph.t See if h2ph works like it should +lib/h2xs.t See if h2xs produces expected lists of files +lib/integer.pm For "use integer" +lib/integer.t For "use integer" testing +lib/Internals.pod Document the Internals namespace (implemented by universal.c) +lib/Internals.t For Internals::* testing +lib/less.pm For "use less" +lib/less.t See if less support works +lib/locale.pm For "use locale" +lib/locale.t See if locale support works +lib/locale_threads.t Tes locale and threads interactions +lib/meta_notation.pm Helper for certain /lib .pm's +lib/meta_notation.t See if meta_notation.t works +lib/Net/hostent.pm By-name interface to Perl's builtin gethost* +lib/Net/hostent.t See if Net::hostent works +lib/Net/netent.pm By-name interface to Perl's builtin getnet* +lib/Net/netent.t See if Net::netent works +lib/Net/protoent.pm By-name interface to Perl's builtin getproto* +lib/Net/protoent.t See if Net::protoent works +lib/Net/servent.pm By-name interface to Perl's builtin getserv* +lib/Net/servent.t See if Net::servtent works +lib/open.pm Pragma to specify default I/O layers +lib/open.t See if the open pragma works +lib/overload.pm Module for overloading perl operators +lib/overload.t See if operator overloading works +lib/overload/numbers.pm Helper for overloading pragma +lib/overload64.t See if operator overloading works with 64-bit ints +lib/overloading.pm Pragma to lexically control overloading +lib/overloading.t Tests for overloading.pm +lib/perl5db.pl Perl debugging routines +lib/perl5db.t Tests for the Perl debugger +lib/perl5db/t/break-on-dot Test script used by perl5db.t +lib/perl5db/t/breakpoint-bug Test script used by perl5db.t +lib/perl5db/t/disable-breakpoints-1 Test script used by perl5db.t +lib/perl5db/t/disable-breakpoints-2 Test script used by perl5db.t +lib/perl5db/t/disable-breakpoints-3 Test script used by perl5db.t +lib/perl5db/t/EnableModule.pm Tests for the Perl debugger +lib/perl5db/t/eval-line-bug Tests for the Perl debugger +lib/perl5db/t/fact Tests for the Perl debugger +lib/perl5db/t/filename-line-breakpoint Tests for the Perl debugger +lib/perl5db/t/gh-17660 Tests for the Perl debugger +lib/perl5db/t/gh-17661 Tests for the Perl debugger +lib/perl5db/t/gh-17661b Tests for the Perl debugger +lib/perl5db/t/load-modules Tests for the Perl debugger +lib/perl5db/t/lsub-n Test script used by perl5db.t +lib/perl5db/t/lvalue-bug Tests for the Perl debugger +lib/perl5db/t/MyModule.pm Tests for the Perl debugger +lib/perl5db/t/proxy-constants Tests for the Perl debugger +lib/perl5db/t/rt-104168 Tests for the Perl debugger +lib/perl5db/t/rt-120174 Tests for the Perl debugger lib/perl5db/t/rt-121509-restart-after-chdir Tests for the Perl debugger -lib/perl5db/t/rt-124203 Test threads in the Perl debugger -lib/perl5db/t/rt-124203b Test threads in the Perl debugger -lib/perl5db/t/rt-61222 Tests for the Perl debugger -lib/perl5db/t/rt-66110 Tests for the Perl debugger -lib/perl5db/t/source-cmd-test.perldb Tests for the Perl debugger +lib/perl5db/t/rt-124203 Test threads in the Perl debugger +lib/perl5db/t/rt-124203b Test threads in the Perl debugger +lib/perl5db/t/rt-61222 Tests for the Perl debugger +lib/perl5db/t/rt-66110 Tests for the Perl debugger +lib/perl5db/t/source-cmd-test.perldb Tests for the Perl debugger lib/perl5db/t/source-cmd-test-no-q.perldb Tests for the Perl debugger -lib/perl5db/t/symbol-table-bug Tests for the Perl debugger -lib/perl5db/t/taint Tests for the Perl debugger -lib/perl5db/t/test-a-statement-1 Tests for the Perl debugger -lib/perl5db/t/test-a-statement-2 Tests for the Perl debugger -lib/perl5db/t/test-a-statement-3 Tests for the Perl debugger -lib/perl5db/t/test-dieLevel-option-1 Tests for the Perl debugger -lib/perl5db/t/test-frame-option-1 Tests for the Perl debugger -lib/perl5db/t/test-l-statement-1 Tests for the Perl debugger -lib/perl5db/t/test-l-statement-2 Tests for the Perl debugger -lib/perl5db/t/test-m-statement-1 Tests for the Perl debugger +lib/perl5db/t/symbol-table-bug Tests for the Perl debugger +lib/perl5db/t/taint Tests for the Perl debugger +lib/perl5db/t/test-a-statement-1 Tests for the Perl debugger +lib/perl5db/t/test-a-statement-2 Tests for the Perl debugger +lib/perl5db/t/test-a-statement-3 Tests for the Perl debugger +lib/perl5db/t/test-dieLevel-option-1 Tests for the Perl debugger +lib/perl5db/t/test-frame-option-1 Tests for the Perl debugger +lib/perl5db/t/test-l-statement-1 Tests for the Perl debugger +lib/perl5db/t/test-l-statement-2 Tests for the Perl debugger +lib/perl5db/t/test-m-statement-1 Tests for the Perl debugger lib/perl5db/t/test-passing-at-underscore-to-x-etc Tests for the Perl debugger -lib/perl5db/t/test-PrintRet-option-1 Tests for the Perl debugger -lib/perl5db/t/test-r-statement Tests for the Perl debugger -lib/perl5db/t/test-w-statement-1 Tests for the Perl debugger -lib/perl5db/t/test-warnLevel-option-1 Tests for the Perl debugger -lib/perl5db/t/uncalled-subroutine Tests for the Perl debugger -lib/perl5db/t/with-subroutine Tests for the Perl debugger -lib/perlbug.t Tests for the Perl bug reporter -lib/PerlIO.pm PerlIO support module -lib/Pod/t/Usage.t See if Pod::Usage works -lib/SelectSaver.pm Enforce proper select scoping -lib/SelectSaver.t See if SelectSaver works -lib/sigtrap.pm For trapping an abort and giving traceback -lib/sigtrap.t See if sigtrap works -lib/sort.pm For "use sort" -lib/sort.t See if "use sort" works -lib/strict.pm For "use strict" -lib/strict.t See if strictures work -lib/subs.pm Declare overriding subs -lib/subs.t See if subroutine pseudo-importation works -lib/Symbol.pm Symbol table manipulation routines -lib/Symbol.t See if Symbol works -lib/Thread.pm Thread extensions frontend -lib/Thread.t Thread extensions frontend tests -lib/Tie/Array.pm Base class for tied arrays -lib/Tie/Array/push.t Test for Tie::Array -lib/Tie/Array/splice.t Test for Tie::Array::SPLICE -lib/Tie/Array/std.t Test for Tie::StdArray -lib/Tie/Array/stdpush.t Test for Tie::StdArray -lib/Tie/ExtraHash.t Test for Tie::ExtraHash (in Tie/Hash.pm) -lib/Tie/Handle.pm Base class for tied handles -lib/Tie/Handle/stdhandle.t Test for Tie::StdHandle +lib/perl5db/t/test-PrintRet-option-1 Tests for the Perl debugger +lib/perl5db/t/test-r-statement Tests for the Perl debugger +lib/perl5db/t/test-w-statement-1 Tests for the Perl debugger +lib/perl5db/t/test-warnLevel-option-1 Tests for the Perl debugger +lib/perl5db/t/uncalled-subroutine Tests for the Perl debugger +lib/perl5db/t/with-subroutine Tests for the Perl debugger +lib/perlbug.t Tests for the Perl bug reporter +lib/PerlIO.pm PerlIO support module +lib/Pod/t/Usage.t See if Pod::Usage works +lib/SelectSaver.pm Enforce proper select scoping +lib/SelectSaver.t See if SelectSaver works +lib/sigtrap.pm For trapping an abort and giving traceback +lib/sigtrap.t See if sigtrap works +lib/sort.pm For "use sort" +lib/sort.t See if "use sort" works +lib/strict.pm For "use strict" +lib/strict.t See if strictures work +lib/subs.pm Declare overriding subs +lib/subs.t See if subroutine pseudo-importation works +lib/Symbol.pm Symbol table manipulation routines +lib/Symbol.t See if Symbol works +lib/Thread.pm Thread extensions frontend +lib/Thread.t Thread extensions frontend tests +lib/Tie/Array.pm Base class for tied arrays +lib/Tie/Array/push.t Test for Tie::Array +lib/Tie/Array/splice.t Test for Tie::Array::SPLICE +lib/Tie/Array/std.t Test for Tie::StdArray +lib/Tie/Array/stdpush.t Test for Tie::StdArray +lib/Tie/ExtraHash.t Test for Tie::ExtraHash (in Tie/Hash.pm) +lib/Tie/Handle.pm Base class for tied handles +lib/Tie/Handle/stdhandle.t Test for Tie::StdHandle lib/Tie/Handle/stdhandle_from_handle.t Test for Tie::StdHandle/Handle backwards compat -lib/Tie/Hash.pm Base class for tied hashes -lib/Tie/Hash.t See if Tie::Hash works -lib/Tie/Scalar.pm Base class for tied scalars -lib/Tie/Scalar.t See if Tie::Scalar works -lib/Tie/StdHandle.pm Tie::StdHandle -lib/Tie/SubstrHash.pm Compact hash for known key, value and table size -lib/Tie/SubstrHash.t Test for Tie::SubstrHash -lib/Time/gmtime.pm By-name interface to Perl's builtin gmtime -lib/Time/gmtime.t Test for Time::gmtime -lib/Time/localtime.pm By-name interface to Perl's builtin localtime -lib/Time/localtime.t Test for Time::localtime -lib/Time/tm.pm Internal object for Time::{gm,local}time -lib/Unicode/README Explanation what happened to lib/unicode. -lib/Unicode/UCD.pm Unicode character database -lib/Unicode/UCD.t See if Unicode character database works +lib/Tie/Hash.pm Base class for tied hashes +lib/Tie/Hash.t See if Tie::Hash works +lib/Tie/Scalar.pm Base class for tied scalars +lib/Tie/Scalar.t See if Tie::Scalar works +lib/Tie/StdHandle.pm Tie::StdHandle +lib/Tie/SubstrHash.pm Compact hash for known key, value and table size +lib/Tie/SubstrHash.t Test for Tie::SubstrHash +lib/Time/gmtime.pm By-name interface to Perl's builtin gmtime +lib/Time/gmtime.t Test for Time::gmtime +lib/Time/localtime.pm By-name interface to Perl's builtin localtime +lib/Time/localtime.t Test for Time::localtime +lib/Time/tm.pm Internal object for Time::{gm,local}time +lib/Unicode/README Explanation what happened to lib/unicode. +lib/Unicode/testnorm.t Run official Unicode Consortium's normalization tests +lib/Unicode/UCD.pm Unicode character database +lib/Unicode/UCD.t See if Unicode character database works lib/unicore/ArabicShaping.txt Unicode character database -lib/unicore/auxiliary/GCBTest.txt Unicode character database -lib/unicore/auxiliary/GraphemeBreakProperty.txt Unicode character database -lib/unicore/auxiliary/LBTest.txt Unicode character database -lib/unicore/auxiliary/SBTest.txt Unicode character database -lib/unicore/auxiliary/SentenceBreakProperty.txt Unicode character database -lib/unicore/auxiliary/WBTest.txt Unicode character database -lib/unicore/auxiliary/WordBreakProperty.txt Unicode character database +lib/unicore/auxiliary/GCBTest.txt Unicode character database +lib/unicore/auxiliary/GraphemeBreakProperty.txt Unicode character database +lib/unicore/auxiliary/LBTest.txt Unicode character database +lib/unicore/auxiliary/SBTest.txt Unicode character database +lib/unicore/auxiliary/SentenceBreakProperty.txt Unicode character database +lib/unicore/auxiliary/WBTest.txt Unicode character database +lib/unicore/auxiliary/WordBreakProperty.txt Unicode character database lib/unicore/BidiBrackets.txt Unicode character database lib/unicore/BidiMirroring.txt Unicode character database lib/unicore/Blocks.txt Unicode character database lib/unicore/CaseFolding.txt Unicode character database lib/unicore/CJKRadicals.txt Unicode character database -lib/unicore/CombiningClass.pl Unicode character database -lib/unicore/CompositionExclusions.txt Unicode character database +lib/unicore/CompositionExclusions.txt Unicode character database lib/unicore/DAge.txt Unicode character database lib/unicore/DCoreProperties.txt Unicode character database -lib/unicore/Decomposition.pl Unicode character database -lib/unicore/DNormalizationProps.txt Unicode character database +lib/unicore/DNormalizationProps.txt Unicode character database lib/unicore/EastAsianWidth.txt Unicode character database lib/unicore/emoji/emoji.txt Unicode character database lib/unicore/EmojiSources.txt Unicode character database -lib/unicore/EquivalentUnifiedIdeograph.txt Unicode character database -lib/unicore/extracted/DBidiClass.txt Unicode character database -lib/unicore/extracted/DBinaryProperties.txt Unicode character database -lib/unicore/extracted/DCombiningClass.txt Unicode character database -lib/unicore/extracted/DDecompositionType.txt Unicode character database -lib/unicore/extracted/DEastAsianWidth.txt Unicode character database -lib/unicore/extracted/DGeneralCategory.txt Unicode character database -lib/unicore/extracted/DJoinGroup.txt Unicode character database -lib/unicore/extracted/DJoinType.txt Unicode character database -lib/unicore/extracted/DLineBreak.txt Unicode character database -lib/unicore/extracted/DNumType.txt Unicode character database -lib/unicore/extracted/DNumValues.txt Unicode character database -lib/unicore/HangulSyllableType.txt Unicode character database +lib/unicore/EquivalentUnifiedIdeograph.txt Unicode character database +lib/unicore/extracted/DBidiClass.txt Unicode character database +lib/unicore/extracted/DBinaryProperties.txt Unicode character database +lib/unicore/extracted/DCombiningClass.txt Unicode character database +lib/unicore/extracted/DDecompositionType.txt Unicode character database +lib/unicore/extracted/DEastAsianWidth.txt Unicode character database +lib/unicore/extracted/DGeneralCategory.txt Unicode character database +lib/unicore/extracted/DJoinGroup.txt Unicode character database +lib/unicore/extracted/DJoinType.txt Unicode character database +lib/unicore/extracted/DLineBreak.txt Unicode character database +lib/unicore/extracted/DNumType.txt Unicode character database +lib/unicore/extracted/DNumValues.txt Unicode character database +lib/unicore/HangulSyllableType.txt Unicode character database lib/unicore/IdStatus.txt Unicode UTS 39 database lib/unicore/IdType.txt Unicode UTS 39 database lib/unicore/Index.txt Unicode character database -lib/unicore/IndicPositionalCategory.txt Unicode character database -lib/unicore/IndicSyllabicCategory.txt Unicode character database +lib/unicore/IndicPositionalCategory.txt Unicode character database +lib/unicore/IndicSyllabicCategory.txt Unicode character database lib/unicore/Jamo.txt Unicode character database -lib/unicore/lib/Age/NA.pl Unicode character database -lib/unicore/lib/Age/V100.pl Unicode character database -lib/unicore/lib/Age/V11.pl Unicode character database -lib/unicore/lib/Age/V110.pl Unicode character database -lib/unicore/lib/Age/V120.pl Unicode character database -lib/unicore/lib/Age/V130.pl Unicode character database -lib/unicore/lib/Age/V140.pl Unicode character database -lib/unicore/lib/Age/V20.pl Unicode character database -lib/unicore/lib/Age/V30.pl Unicode character database -lib/unicore/lib/Age/V31.pl Unicode character database -lib/unicore/lib/Age/V32.pl Unicode character database -lib/unicore/lib/Age/V40.pl Unicode character database -lib/unicore/lib/Age/V41.pl Unicode character database -lib/unicore/lib/Age/V50.pl Unicode character database -lib/unicore/lib/Age/V51.pl Unicode character database -lib/unicore/lib/Age/V52.pl Unicode character database -lib/unicore/lib/Age/V60.pl Unicode character database -lib/unicore/lib/Age/V61.pl Unicode character database -lib/unicore/lib/Age/V70.pl Unicode character database -lib/unicore/lib/Age/V80.pl Unicode character database -lib/unicore/lib/Age/V90.pl Unicode character database -lib/unicore/lib/Alpha/Y.pl Unicode character database -lib/unicore/lib/Bc/AL.pl Unicode character database -lib/unicore/lib/Bc/AN.pl Unicode character database -lib/unicore/lib/Bc/B.pl Unicode character database -lib/unicore/lib/Bc/BN.pl Unicode character database -lib/unicore/lib/Bc/CS.pl Unicode character database -lib/unicore/lib/Bc/EN.pl Unicode character database -lib/unicore/lib/Bc/ES.pl Unicode character database -lib/unicore/lib/Bc/ET.pl Unicode character database -lib/unicore/lib/Bc/L.pl Unicode character database -lib/unicore/lib/Bc/NSM.pl Unicode character database -lib/unicore/lib/Bc/ON.pl Unicode character database -lib/unicore/lib/Bc/R.pl Unicode character database -lib/unicore/lib/Bc/WS.pl Unicode character database -lib/unicore/lib/BidiC/Y.pl Unicode character database -lib/unicore/lib/BidiM/Y.pl Unicode character database -lib/unicore/lib/Blk/NB.pl Unicode character database -lib/unicore/lib/Bpt/C.pl Unicode character database -lib/unicore/lib/Bpt/N.pl Unicode character database -lib/unicore/lib/Bpt/O.pl Unicode character database -lib/unicore/lib/Cased/Y.pl Unicode character database -lib/unicore/lib/Ccc/A.pl Unicode character database -lib/unicore/lib/Ccc/AL.pl Unicode character database -lib/unicore/lib/Ccc/AR.pl Unicode character database -lib/unicore/lib/Ccc/ATAR.pl Unicode character database -lib/unicore/lib/Ccc/B.pl Unicode character database -lib/unicore/lib/Ccc/BR.pl Unicode character database -lib/unicore/lib/Ccc/DB.pl Unicode character database -lib/unicore/lib/Ccc/NK.pl Unicode character database -lib/unicore/lib/Ccc/NR.pl Unicode character database -lib/unicore/lib/Ccc/OV.pl Unicode character database -lib/unicore/lib/Ccc/VR.pl Unicode character database -lib/unicore/lib/CE/Y.pl Unicode character database -lib/unicore/lib/CI/Y.pl Unicode character database -lib/unicore/lib/CompEx/Y.pl Unicode character database -lib/unicore/lib/CWCF/Y.pl Unicode character database -lib/unicore/lib/CWCM/Y.pl Unicode character database -lib/unicore/lib/CWKCF/Y.pl Unicode character database -lib/unicore/lib/CWL/Y.pl Unicode character database -lib/unicore/lib/CWT/Y.pl Unicode character database -lib/unicore/lib/CWU/Y.pl Unicode character database -lib/unicore/lib/Dash/Y.pl Unicode character database -lib/unicore/lib/Dep/Y.pl Unicode character database -lib/unicore/lib/DI/Y.pl Unicode character database -lib/unicore/lib/Dia/Y.pl Unicode character database -lib/unicore/lib/Dt/Com.pl Unicode character database -lib/unicore/lib/Dt/Enc.pl Unicode character database -lib/unicore/lib/Dt/Fin.pl Unicode character database -lib/unicore/lib/Dt/Font.pl Unicode character database -lib/unicore/lib/Dt/Init.pl Unicode character database -lib/unicore/lib/Dt/Iso.pl Unicode character database -lib/unicore/lib/Dt/Med.pl Unicode character database -lib/unicore/lib/Dt/Nar.pl Unicode character database -lib/unicore/lib/Dt/Nb.pl Unicode character database -lib/unicore/lib/Dt/NonCanon.pl Unicode character database -lib/unicore/lib/Dt/Sqr.pl Unicode character database -lib/unicore/lib/Dt/Sub.pl Unicode character database -lib/unicore/lib/Dt/Sup.pl Unicode character database -lib/unicore/lib/Dt/Vert.pl Unicode character database -lib/unicore/lib/Ea/A.pl Unicode character database -lib/unicore/lib/Ea/H.pl Unicode character database -lib/unicore/lib/Ea/N.pl Unicode character database -lib/unicore/lib/Ea/Na.pl Unicode character database -lib/unicore/lib/Ea/W.pl Unicode character database -lib/unicore/lib/EBase/Y.pl Unicode character database -lib/unicore/lib/EComp/Y.pl Unicode character database -lib/unicore/lib/Emoji/Y.pl Unicode character database -lib/unicore/lib/EPres/Y.pl Unicode character database -lib/unicore/lib/Ext/Y.pl Unicode character database -lib/unicore/lib/ExtPict/Y.pl Unicode character database -lib/unicore/lib/Gc/C.pl Unicode character database -lib/unicore/lib/Gc/Cf.pl Unicode character database -lib/unicore/lib/Gc/Cn.pl Unicode character database -lib/unicore/lib/Gc/L.pl Unicode character database -lib/unicore/lib/Gc/LC.pl Unicode character database -lib/unicore/lib/Gc/Ll.pl Unicode character database -lib/unicore/lib/Gc/Lm.pl Unicode character database -lib/unicore/lib/Gc/Lo.pl Unicode character database -lib/unicore/lib/Gc/Lu.pl Unicode character database -lib/unicore/lib/Gc/M.pl Unicode character database -lib/unicore/lib/Gc/Mc.pl Unicode character database -lib/unicore/lib/Gc/Me.pl Unicode character database -lib/unicore/lib/Gc/Mn.pl Unicode character database -lib/unicore/lib/Gc/N.pl Unicode character database -lib/unicore/lib/Gc/Nd.pl Unicode character database -lib/unicore/lib/Gc/Nl.pl Unicode character database -lib/unicore/lib/Gc/No.pl Unicode character database -lib/unicore/lib/Gc/P.pl Unicode character database -lib/unicore/lib/Gc/Pc.pl Unicode character database -lib/unicore/lib/Gc/Pd.pl Unicode character database -lib/unicore/lib/Gc/Pe.pl Unicode character database -lib/unicore/lib/Gc/Pf.pl Unicode character database -lib/unicore/lib/Gc/Pi.pl Unicode character database -lib/unicore/lib/Gc/Po.pl Unicode character database -lib/unicore/lib/Gc/Ps.pl Unicode character database -lib/unicore/lib/Gc/S.pl Unicode character database -lib/unicore/lib/Gc/Sc.pl Unicode character database -lib/unicore/lib/Gc/Sk.pl Unicode character database -lib/unicore/lib/Gc/Sm.pl Unicode character database -lib/unicore/lib/Gc/So.pl Unicode character database -lib/unicore/lib/Gc/Z.pl Unicode character database -lib/unicore/lib/Gc/Zs.pl Unicode character database -lib/unicore/lib/GCB/CN.pl Unicode character database -lib/unicore/lib/GCB/EX.pl Unicode character database -lib/unicore/lib/GCB/LV.pl Unicode character database -lib/unicore/lib/GCB/LVT.pl Unicode character database -lib/unicore/lib/GCB/PP.pl Unicode character database -lib/unicore/lib/GCB/SM.pl Unicode character database -lib/unicore/lib/GCB/XX.pl Unicode character database -lib/unicore/lib/GrBase/Y.pl Unicode character database -lib/unicore/lib/GrExt/Y.pl Unicode character database -lib/unicore/lib/Hex/Y.pl Unicode character database -lib/unicore/lib/Hst/NA.pl Unicode character database -lib/unicore/lib/Hyphen/T.pl Unicode character database -lib/unicore/lib/IDC/Y.pl Unicode character database -lib/unicore/lib/Ideo/Y.pl Unicode character database -lib/unicore/lib/IDS/Y.pl Unicode character database -lib/unicore/lib/IdStatus/Allowed.pl Unicode character database -lib/unicore/lib/IdStatus/Restrict.pl Unicode character database -lib/unicore/lib/IdType/DefaultI.pl Unicode character database -lib/unicore/lib/IdType/Exclusio.pl Unicode character database -lib/unicore/lib/IdType/Inclusio.pl Unicode character database -lib/unicore/lib/IdType/LimitedU.pl Unicode character database -lib/unicore/lib/IdType/NotChara.pl Unicode character database -lib/unicore/lib/IdType/NotNFKC.pl Unicode character database -lib/unicore/lib/IdType/NotXID.pl Unicode character database -lib/unicore/lib/IdType/Obsolete.pl Unicode character database -lib/unicore/lib/IdType/Recommen.pl Unicode character database -lib/unicore/lib/IdType/Technica.pl Unicode character database -lib/unicore/lib/IdType/Uncommon.pl Unicode character database -lib/unicore/lib/In/10_0.pl Unicode character database -lib/unicore/lib/In/11_0.pl Unicode character database -lib/unicore/lib/In/12_0.pl Unicode character database -lib/unicore/lib/In/12_1.pl Unicode character database -lib/unicore/lib/In/13_0.pl Unicode character database -lib/unicore/lib/In/14_0.pl Unicode character database -lib/unicore/lib/In/2_0.pl Unicode character database -lib/unicore/lib/In/2_1.pl Unicode character database -lib/unicore/lib/In/3_0.pl Unicode character database -lib/unicore/lib/In/3_1.pl Unicode character database -lib/unicore/lib/In/3_2.pl Unicode character database -lib/unicore/lib/In/4_0.pl Unicode character database -lib/unicore/lib/In/4_1.pl Unicode character database -lib/unicore/lib/In/5_0.pl Unicode character database -lib/unicore/lib/In/5_1.pl Unicode character database -lib/unicore/lib/In/5_2.pl Unicode character database -lib/unicore/lib/In/6_0.pl Unicode character database -lib/unicore/lib/In/6_1.pl Unicode character database -lib/unicore/lib/In/6_2.pl Unicode character database -lib/unicore/lib/In/6_3.pl Unicode character database -lib/unicore/lib/In/7_0.pl Unicode character database -lib/unicore/lib/In/8_0.pl Unicode character database -lib/unicore/lib/In/9_0.pl Unicode character database -lib/unicore/lib/InPC/Bottom.pl Unicode character database -lib/unicore/lib/InPC/BottomAn.pl Unicode character database -lib/unicore/lib/InPC/Left.pl Unicode character database -lib/unicore/lib/InPC/LeftAndR.pl Unicode character database -lib/unicore/lib/InPC/NA.pl Unicode character database -lib/unicore/lib/InPC/Overstru.pl Unicode character database -lib/unicore/lib/InPC/Right.pl Unicode character database -lib/unicore/lib/InPC/Top.pl Unicode character database -lib/unicore/lib/InPC/TopAndBo.pl Unicode character database -lib/unicore/lib/InPC/TopAndL2.pl Unicode character database -lib/unicore/lib/InPC/TopAndLe.pl Unicode character database -lib/unicore/lib/InPC/TopAndRi.pl Unicode character database -lib/unicore/lib/InPC/VisualOr.pl Unicode character database -lib/unicore/lib/InSC/Avagraha.pl Unicode character database -lib/unicore/lib/InSC/Bindu.pl Unicode character database -lib/unicore/lib/InSC/Cantilla.pl Unicode character database -lib/unicore/lib/InSC/Consona2.pl Unicode character database -lib/unicore/lib/InSC/Consona3.pl Unicode character database -lib/unicore/lib/InSC/Consona4.pl Unicode character database -lib/unicore/lib/InSC/Consona5.pl Unicode character database -lib/unicore/lib/InSC/Consona6.pl Unicode character database -lib/unicore/lib/InSC/Consona7.pl Unicode character database -lib/unicore/lib/InSC/Consona8.pl Unicode character database -lib/unicore/lib/InSC/Consonan.pl Unicode character database -lib/unicore/lib/InSC/Invisibl.pl Unicode character database -lib/unicore/lib/InSC/Nukta.pl Unicode character database -lib/unicore/lib/InSC/Number.pl Unicode character database -lib/unicore/lib/InSC/Other.pl Unicode character database -lib/unicore/lib/InSC/PureKill.pl Unicode character database -lib/unicore/lib/InSC/Syllable.pl Unicode character database -lib/unicore/lib/InSC/ToneMark.pl Unicode character database -lib/unicore/lib/InSC/Virama.pl Unicode character database -lib/unicore/lib/InSC/Visarga.pl Unicode character database -lib/unicore/lib/InSC/Vowel.pl Unicode character database -lib/unicore/lib/InSC/VowelDep.pl Unicode character database -lib/unicore/lib/InSC/VowelInd.pl Unicode character database -lib/unicore/lib/Jg/Ain.pl Unicode character database -lib/unicore/lib/Jg/Alef.pl Unicode character database -lib/unicore/lib/Jg/Beh.pl Unicode character database -lib/unicore/lib/Jg/Dal.pl Unicode character database -lib/unicore/lib/Jg/FarsiYeh.pl Unicode character database -lib/unicore/lib/Jg/Feh.pl Unicode character database -lib/unicore/lib/Jg/Gaf.pl Unicode character database -lib/unicore/lib/Jg/Hah.pl Unicode character database -lib/unicore/lib/Jg/HanifiRo.pl Unicode character database -lib/unicore/lib/Jg/Kaf.pl Unicode character database -lib/unicore/lib/Jg/Lam.pl Unicode character database -lib/unicore/lib/Jg/NoJoinin.pl Unicode character database -lib/unicore/lib/Jg/Noon.pl Unicode character database -lib/unicore/lib/Jg/Qaf.pl Unicode character database -lib/unicore/lib/Jg/Reh.pl Unicode character database -lib/unicore/lib/Jg/Sad.pl Unicode character database -lib/unicore/lib/Jg/Seen.pl Unicode character database -lib/unicore/lib/Jg/Tah.pl Unicode character database -lib/unicore/lib/Jg/Waw.pl Unicode character database -lib/unicore/lib/Jg/Yeh.pl Unicode character database -lib/unicore/lib/Jt/C.pl Unicode character database -lib/unicore/lib/Jt/D.pl Unicode character database -lib/unicore/lib/Jt/L.pl Unicode character database -lib/unicore/lib/Jt/R.pl Unicode character database -lib/unicore/lib/Jt/T.pl Unicode character database -lib/unicore/lib/Jt/U.pl Unicode character database -lib/unicore/lib/Lb/AI.pl Unicode character database -lib/unicore/lib/Lb/AL.pl Unicode character database -lib/unicore/lib/Lb/BA.pl Unicode character database -lib/unicore/lib/Lb/BB.pl Unicode character database -lib/unicore/lib/Lb/CJ.pl Unicode character database -lib/unicore/lib/Lb/CL.pl Unicode character database -lib/unicore/lib/Lb/CM.pl Unicode character database -lib/unicore/lib/Lb/EX.pl Unicode character database -lib/unicore/lib/Lb/GL.pl Unicode character database -lib/unicore/lib/Lb/ID.pl Unicode character database -lib/unicore/lib/Lb/IN.pl Unicode character database -lib/unicore/lib/Lb/IS.pl Unicode character database -lib/unicore/lib/Lb/NS.pl Unicode character database -lib/unicore/lib/Lb/NU.pl Unicode character database -lib/unicore/lib/Lb/OP.pl Unicode character database -lib/unicore/lib/Lb/PO.pl Unicode character database -lib/unicore/lib/Lb/PR.pl Unicode character database -lib/unicore/lib/Lb/QU.pl Unicode character database -lib/unicore/lib/Lb/SA.pl Unicode character database -lib/unicore/lib/Lb/XX.pl Unicode character database -lib/unicore/lib/Lower/Y.pl Unicode character database -lib/unicore/lib/Math/Y.pl Unicode character database -lib/unicore/lib/NFCQC/M.pl Unicode character database -lib/unicore/lib/NFCQC/Y.pl Unicode character database -lib/unicore/lib/NFDQC/N.pl Unicode character database -lib/unicore/lib/NFDQC/Y.pl Unicode character database -lib/unicore/lib/NFKCQC/N.pl Unicode character database -lib/unicore/lib/NFKCQC/Y.pl Unicode character database -lib/unicore/lib/NFKDQC/N.pl Unicode character database -lib/unicore/lib/NFKDQC/Y.pl Unicode character database -lib/unicore/lib/Nt/Di.pl Unicode character database -lib/unicore/lib/Nt/None.pl Unicode character database -lib/unicore/lib/Nt/Nu.pl Unicode character database -lib/unicore/lib/Nv/0.pl Unicode character database -lib/unicore/lib/Nv/1.pl Unicode character database -lib/unicore/lib/Nv/10.pl Unicode character database -lib/unicore/lib/Nv/100.pl Unicode character database -lib/unicore/lib/Nv/1000.pl Unicode character database -lib/unicore/lib/Nv/10000.pl Unicode character database -lib/unicore/lib/Nv/100000.pl Unicode character database -lib/unicore/lib/Nv/11.pl Unicode character database -lib/unicore/lib/Nv/12.pl Unicode character database -lib/unicore/lib/Nv/13.pl Unicode character database -lib/unicore/lib/Nv/14.pl Unicode character database -lib/unicore/lib/Nv/15.pl Unicode character database -lib/unicore/lib/Nv/16.pl Unicode character database -lib/unicore/lib/Nv/17.pl Unicode character database -lib/unicore/lib/Nv/18.pl Unicode character database -lib/unicore/lib/Nv/19.pl Unicode character database -lib/unicore/lib/Nv/1_16.pl Unicode character database -lib/unicore/lib/Nv/1_2.pl Unicode character database -lib/unicore/lib/Nv/1_3.pl Unicode character database -lib/unicore/lib/Nv/1_4.pl Unicode character database -lib/unicore/lib/Nv/1_6.pl Unicode character database -lib/unicore/lib/Nv/1_8.pl Unicode character database -lib/unicore/lib/Nv/2.pl Unicode character database -lib/unicore/lib/Nv/20.pl Unicode character database -lib/unicore/lib/Nv/200.pl Unicode character database -lib/unicore/lib/Nv/2000.pl Unicode character database -lib/unicore/lib/Nv/20000.pl Unicode character database -lib/unicore/lib/Nv/2_3.pl Unicode character database -lib/unicore/lib/Nv/3.pl Unicode character database -lib/unicore/lib/Nv/30.pl Unicode character database -lib/unicore/lib/Nv/300.pl Unicode character database -lib/unicore/lib/Nv/3000.pl Unicode character database -lib/unicore/lib/Nv/30000.pl Unicode character database -lib/unicore/lib/Nv/3_16.pl Unicode character database -lib/unicore/lib/Nv/3_4.pl Unicode character database -lib/unicore/lib/Nv/4.pl Unicode character database -lib/unicore/lib/Nv/40.pl Unicode character database -lib/unicore/lib/Nv/400.pl Unicode character database -lib/unicore/lib/Nv/4000.pl Unicode character database -lib/unicore/lib/Nv/40000.pl Unicode character database -lib/unicore/lib/Nv/5.pl Unicode character database -lib/unicore/lib/Nv/50.pl Unicode character database -lib/unicore/lib/Nv/500.pl Unicode character database -lib/unicore/lib/Nv/5000.pl Unicode character database -lib/unicore/lib/Nv/50000.pl Unicode character database -lib/unicore/lib/Nv/6.pl Unicode character database -lib/unicore/lib/Nv/60.pl Unicode character database -lib/unicore/lib/Nv/600.pl Unicode character database -lib/unicore/lib/Nv/6000.pl Unicode character database -lib/unicore/lib/Nv/60000.pl Unicode character database -lib/unicore/lib/Nv/7.pl Unicode character database -lib/unicore/lib/Nv/70.pl Unicode character database -lib/unicore/lib/Nv/700.pl Unicode character database -lib/unicore/lib/Nv/7000.pl Unicode character database -lib/unicore/lib/Nv/70000.pl Unicode character database -lib/unicore/lib/Nv/8.pl Unicode character database -lib/unicore/lib/Nv/80.pl Unicode character database -lib/unicore/lib/Nv/800.pl Unicode character database -lib/unicore/lib/Nv/8000.pl Unicode character database -lib/unicore/lib/Nv/80000.pl Unicode character database -lib/unicore/lib/Nv/9.pl Unicode character database -lib/unicore/lib/Nv/90.pl Unicode character database -lib/unicore/lib/Nv/900.pl Unicode character database -lib/unicore/lib/Nv/9000.pl Unicode character database -lib/unicore/lib/Nv/90000.pl Unicode character database -lib/unicore/lib/PatSyn/Y.pl Unicode character database -lib/unicore/lib/PCM/Y.pl Unicode character database -lib/unicore/lib/Perl/_PerlAny.pl Unicode character database -lib/unicore/lib/Perl/_PerlCh2.pl Unicode character database -lib/unicore/lib/Perl/_PerlCha.pl Unicode character database -lib/unicore/lib/Perl/_PerlFol.pl Unicode character database -lib/unicore/lib/Perl/_PerlIDC.pl Unicode character database -lib/unicore/lib/Perl/_PerlIDS.pl Unicode character database -lib/unicore/lib/Perl/_PerlIsI.pl Unicode character database -lib/unicore/lib/Perl/_PerlNch.pl Unicode character database -lib/unicore/lib/Perl/_PerlPat.pl Unicode character database -lib/unicore/lib/Perl/_PerlPr2.pl Unicode character database -lib/unicore/lib/Perl/_PerlPro.pl Unicode character database -lib/unicore/lib/Perl/_PerlQuo.pl Unicode character database -lib/unicore/lib/Perl/Alnum.pl Unicode character database -lib/unicore/lib/Perl/Assigned.pl Unicode character database -lib/unicore/lib/Perl/Blank.pl Unicode character database -lib/unicore/lib/Perl/Graph.pl Unicode character database -lib/unicore/lib/Perl/PerlWord.pl Unicode character database -lib/unicore/lib/Perl/PosixPun.pl Unicode character database -lib/unicore/lib/Perl/Print.pl Unicode character database -lib/unicore/lib/Perl/SpacePer.pl Unicode character database -lib/unicore/lib/Perl/Title.pl Unicode character database -lib/unicore/lib/Perl/Word.pl Unicode character database -lib/unicore/lib/Perl/XPosixPu.pl Unicode character database -lib/unicore/lib/QMark/Y.pl Unicode character database -lib/unicore/lib/SB/AT.pl Unicode character database -lib/unicore/lib/SB/CL.pl Unicode character database -lib/unicore/lib/SB/EX.pl Unicode character database -lib/unicore/lib/SB/FO.pl Unicode character database -lib/unicore/lib/SB/LE.pl Unicode character database -lib/unicore/lib/SB/LO.pl Unicode character database -lib/unicore/lib/SB/NU.pl Unicode character database -lib/unicore/lib/SB/SC.pl Unicode character database -lib/unicore/lib/SB/Sp.pl Unicode character database -lib/unicore/lib/SB/ST.pl Unicode character database -lib/unicore/lib/SB/UP.pl Unicode character database -lib/unicore/lib/SB/XX.pl Unicode character database -lib/unicore/lib/Sc/Arab.pl Unicode character database -lib/unicore/lib/Sc/Beng.pl Unicode character database -lib/unicore/lib/Sc/Cprt.pl Unicode character database -lib/unicore/lib/Sc/Cyrl.pl Unicode character database -lib/unicore/lib/Sc/Deva.pl Unicode character database -lib/unicore/lib/Sc/Dupl.pl Unicode character database -lib/unicore/lib/Sc/Geor.pl Unicode character database -lib/unicore/lib/Sc/Glag.pl Unicode character database -lib/unicore/lib/Sc/Gong.pl Unicode character database -lib/unicore/lib/Sc/Gonm.pl Unicode character database -lib/unicore/lib/Sc/Gran.pl Unicode character database -lib/unicore/lib/Sc/Grek.pl Unicode character database -lib/unicore/lib/Sc/Gujr.pl Unicode character database -lib/unicore/lib/Sc/Guru.pl Unicode character database -lib/unicore/lib/Sc/Han.pl Unicode character database -lib/unicore/lib/Sc/Hang.pl Unicode character database -lib/unicore/lib/Sc/Hira.pl Unicode character database -lib/unicore/lib/Sc/Kana.pl Unicode character database -lib/unicore/lib/Sc/Knda.pl Unicode character database -lib/unicore/lib/Sc/Latn.pl Unicode character database -lib/unicore/lib/Sc/Limb.pl Unicode character database -lib/unicore/lib/Sc/Linb.pl Unicode character database -lib/unicore/lib/Sc/Mlym.pl Unicode character database -lib/unicore/lib/Sc/Mong.pl Unicode character database -lib/unicore/lib/Sc/Mult.pl Unicode character database -lib/unicore/lib/Sc/Orya.pl Unicode character database -lib/unicore/lib/Sc/Sinh.pl Unicode character database -lib/unicore/lib/Sc/Syrc.pl Unicode character database -lib/unicore/lib/Sc/Taml.pl Unicode character database -lib/unicore/lib/Sc/Telu.pl Unicode character database -lib/unicore/lib/Sc/Zinh.pl Unicode character database -lib/unicore/lib/Sc/Zyyy.pl Unicode character database -lib/unicore/lib/Scx/Adlm.pl Unicode character database -lib/unicore/lib/Scx/Arab.pl Unicode character database -lib/unicore/lib/Scx/Armn.pl Unicode character database -lib/unicore/lib/Scx/Beng.pl Unicode character database -lib/unicore/lib/Scx/Bhks.pl Unicode character database -lib/unicore/lib/Scx/Bopo.pl Unicode character database -lib/unicore/lib/Scx/Cakm.pl Unicode character database -lib/unicore/lib/Scx/Cham.pl Unicode character database -lib/unicore/lib/Scx/Copt.pl Unicode character database -lib/unicore/lib/Scx/Cprt.pl Unicode character database -lib/unicore/lib/Scx/Cyrl.pl Unicode character database -lib/unicore/lib/Scx/Deva.pl Unicode character database -lib/unicore/lib/Scx/Diak.pl Unicode character database -lib/unicore/lib/Scx/Dupl.pl Unicode character database -lib/unicore/lib/Scx/Ethi.pl Unicode character database -lib/unicore/lib/Scx/Geor.pl Unicode character database -lib/unicore/lib/Scx/Glag.pl Unicode character database -lib/unicore/lib/Scx/Gong.pl Unicode character database -lib/unicore/lib/Scx/Gonm.pl Unicode character database -lib/unicore/lib/Scx/Gran.pl Unicode character database -lib/unicore/lib/Scx/Grek.pl Unicode character database -lib/unicore/lib/Scx/Gujr.pl Unicode character database -lib/unicore/lib/Scx/Guru.pl Unicode character database -lib/unicore/lib/Scx/Han.pl Unicode character database -lib/unicore/lib/Scx/Hang.pl Unicode character database -lib/unicore/lib/Scx/Hebr.pl Unicode character database -lib/unicore/lib/Scx/Hira.pl Unicode character database -lib/unicore/lib/Scx/Hmng.pl Unicode character database -lib/unicore/lib/Scx/Hmnp.pl Unicode character database -lib/unicore/lib/Scx/Kana.pl Unicode character database -lib/unicore/lib/Scx/Khar.pl Unicode character database -lib/unicore/lib/Scx/Khmr.pl Unicode character database -lib/unicore/lib/Scx/Khoj.pl Unicode character database -lib/unicore/lib/Scx/Knda.pl Unicode character database -lib/unicore/lib/Scx/Kthi.pl Unicode character database -lib/unicore/lib/Scx/Lana.pl Unicode character database -lib/unicore/lib/Scx/Lao.pl Unicode character database -lib/unicore/lib/Scx/Latn.pl Unicode character database -lib/unicore/lib/Scx/Limb.pl Unicode character database -lib/unicore/lib/Scx/Lina.pl Unicode character database -lib/unicore/lib/Scx/Linb.pl Unicode character database -lib/unicore/lib/Scx/Mlym.pl Unicode character database -lib/unicore/lib/Scx/Mong.pl Unicode character database -lib/unicore/lib/Scx/Mult.pl Unicode character database -lib/unicore/lib/Scx/Mymr.pl Unicode character database -lib/unicore/lib/Scx/Nand.pl Unicode character database -lib/unicore/lib/Scx/Nko.pl Unicode character database -lib/unicore/lib/Scx/Orya.pl Unicode character database -lib/unicore/lib/Scx/Phlp.pl Unicode character database -lib/unicore/lib/Scx/Rohg.pl Unicode character database -lib/unicore/lib/Scx/Shrd.pl Unicode character database -lib/unicore/lib/Scx/Sind.pl Unicode character database -lib/unicore/lib/Scx/Sinh.pl Unicode character database -lib/unicore/lib/Scx/Syrc.pl Unicode character database -lib/unicore/lib/Scx/Tagb.pl Unicode character database -lib/unicore/lib/Scx/Takr.pl Unicode character database -lib/unicore/lib/Scx/Talu.pl Unicode character database -lib/unicore/lib/Scx/Taml.pl Unicode character database -lib/unicore/lib/Scx/Tang.pl Unicode character database -lib/unicore/lib/Scx/Telu.pl Unicode character database -lib/unicore/lib/Scx/Thaa.pl Unicode character database -lib/unicore/lib/Scx/Tibt.pl Unicode character database -lib/unicore/lib/Scx/Tirh.pl Unicode character database -lib/unicore/lib/Scx/Vith.pl Unicode character database -lib/unicore/lib/Scx/Xsux.pl Unicode character database -lib/unicore/lib/Scx/Yezi.pl Unicode character database -lib/unicore/lib/Scx/Yi.pl Unicode character database -lib/unicore/lib/Scx/Zinh.pl Unicode character database -lib/unicore/lib/Scx/Zyyy.pl Unicode character database -lib/unicore/lib/Scx/Zzzz.pl Unicode character database -lib/unicore/lib/SD/Y.pl Unicode character database -lib/unicore/lib/STerm/Y.pl Unicode character database -lib/unicore/lib/Term/Y.pl Unicode character database -lib/unicore/lib/UIdeo/Y.pl Unicode character database -lib/unicore/lib/Upper/Y.pl Unicode character database -lib/unicore/lib/Vo/R.pl Unicode character database -lib/unicore/lib/Vo/Tr.pl Unicode character database -lib/unicore/lib/Vo/Tu.pl Unicode character database -lib/unicore/lib/Vo/U.pl Unicode character database -lib/unicore/lib/VS/Y.pl Unicode character database -lib/unicore/lib/WB/EX.pl Unicode character database -lib/unicore/lib/WB/Extend.pl Unicode character database -lib/unicore/lib/WB/FO.pl Unicode character database -lib/unicore/lib/WB/HL.pl Unicode character database -lib/unicore/lib/WB/KA.pl Unicode character database -lib/unicore/lib/WB/LE.pl Unicode character database -lib/unicore/lib/WB/MB.pl Unicode character database -lib/unicore/lib/WB/ML.pl Unicode character database -lib/unicore/lib/WB/MN.pl Unicode character database -lib/unicore/lib/WB/NU.pl Unicode character database -lib/unicore/lib/WB/WSegSpac.pl Unicode character database -lib/unicore/lib/WB/XX.pl Unicode character database -lib/unicore/lib/XIDC/Y.pl Unicode character database -lib/unicore/lib/XIDS/Y.pl Unicode character database lib/unicore/LineBreak.txt Unicode character database lib/unicore/Makefile Unicode character database lib/unicore/mktables Unicode character database generator -lib/unicore/mktables.lst Unicode character database -lib/unicore/Name.pl Unicode character database -lib/unicore/Name.pm Unicode character database lib/unicore/NameAliases.txt Unicode character database lib/unicore/NamedSequences.txt Unicode character database lib/unicore/NamedSqProv.txt Unicode character database lib/unicore/NamesList.txt Unicode character database -lib/unicore/NormalizationCorrections.txt Unicode character database +lib/unicore/NormalizationCorrections.txt Unicode character database +lib/unicore/NormTest.txt Unicode character database lib/unicore/PropertyAliases.txt Unicode character database lib/unicore/PropList.txt Unicode character database -lib/unicore/PropValueAliases.txt Unicode character database +lib/unicore/PropValueAliases.txt Unicode character database lib/unicore/README.perl Unicode character database lib/unicore/ReadMe.txt Unicode character database info -lib/unicore/ScriptExtensions.txt Unicode character database +lib/unicore/ScriptExtensions.txt Unicode character database lib/unicore/Scripts.txt Unicode character database lib/unicore/SpecialCasing.txt Unicode character database -lib/unicore/StandardizedVariants.txt Unicode character database -lib/unicore/TestProp.pl Unicode character database -lib/unicore/To/_PerlLB.pl Unicode character database -lib/unicore/To/_PerlSCX.pl Unicode character database -lib/unicore/To/Age.pl Unicode character database -lib/unicore/To/Bc.pl Unicode character database -lib/unicore/To/Bmg.pl Unicode character database -lib/unicore/To/Bpb.pl Unicode character database -lib/unicore/To/Bpt.pl Unicode character database -lib/unicore/To/Cf.pl Unicode character database -lib/unicore/To/Ea.pl Unicode character database -lib/unicore/To/EqUIdeo.pl Unicode character database -lib/unicore/To/Gc.pl Unicode character database -lib/unicore/To/GCB.pl Unicode character database -lib/unicore/To/Hst.pl Unicode character database -lib/unicore/To/Identif2.pl Unicode character database -lib/unicore/To/Identifi.pl Unicode character database -lib/unicore/To/InPC.pl Unicode character database -lib/unicore/To/InSC.pl Unicode character database -lib/unicore/To/Isc.pl Unicode character database -lib/unicore/To/Jg.pl Unicode character database -lib/unicore/To/Jt.pl Unicode character database -lib/unicore/To/Lb.pl Unicode character database -lib/unicore/To/Lc.pl Unicode character database -lib/unicore/To/Na1.pl Unicode character database -lib/unicore/To/NameAlia.pl Unicode character database -lib/unicore/To/NFCQC.pl Unicode character database -lib/unicore/To/NFDQC.pl Unicode character database -lib/unicore/To/NFKCCF.pl Unicode character database -lib/unicore/To/NFKCQC.pl Unicode character database -lib/unicore/To/NFKDQC.pl Unicode character database -lib/unicore/To/Nt.pl Unicode character database -lib/unicore/To/Nv.pl Unicode character database -lib/unicore/To/PerlDeci.pl Unicode character database -lib/unicore/To/SB.pl Unicode character database -lib/unicore/To/Sc.pl Unicode character database -lib/unicore/To/Scx.pl Unicode character database -lib/unicore/To/Tc.pl Unicode character database -lib/unicore/To/Uc.pl Unicode character database -lib/unicore/To/Vo.pl Unicode character database -lib/unicore/To/WB.pl Unicode character database -lib/unicore/UCD.pl Unicode character database +lib/unicore/StandardizedVariants.txt Unicode character database +lib/unicore/TestNorm.pl Unicode character database lib/unicore/uni_keywords.pl Indices into array in charclass_invlists.h lib/unicore/UnicodeData.txt Unicode character database lib/unicore/version The version of the Unicode -lib/unicore/VerticalOrientation.txt Unicode character database -lib/UNIVERSAL.pm Base class for ALL classes -lib/User/grent.pm By-name interface to Perl's builtin getgr* -lib/User/grent.t See if User::grwent works -lib/User/pwent.pm By-name interface to Perl's builtin getpw* -lib/User/pwent.t See if User::pwent works -lib/utf8.pm Pragma to control Unicode support -lib/utf8.t See if utf8 operations work -lib/vars.pm Declare pseudo-imported global variables -lib/vars.t See if "use vars" works -lib/vars_carp.t See if "use vars" doesn't load Carp.pm per default -lib/vmsish.pm Control VMS-specific behavior of Perl core -lib/vmsish.t Tests for vmsish.pm -lib/warnings.pm For "use warnings" -lib/warnings.t See if warning controls work -lib/warnings/register.pm For "use warnings::register" -locale.c locale-specific utility functions -make_ext.pl Used by Makefile to execute extension Makefiles -make_patchnum.pl Script to generate git_version.h and lib/Config_git.pl files for all OS'es -makedef.pl Create symbol export lists for linking -makedepend.SH Precursor to makedepend -makedepend_file.SH Precursor to makedepend_file -Makefile.micro microperl Makefile -Makefile.SH A script that generates Makefile -malloc.c A version of malloc you might not want -malloc_ctl.h A version of malloc you might not want -MANIFEST This list of files -mathoms.c A home for binary-compatible code artifacts -META.json Distribution meta-data in JSON -META.yml Distribution meta-data in YAML -metaconfig.h Control file for the metaconfig process -metaconfig.SH Control file for the metaconfig process -mg.c Magic code -mg.h Magic header -mg_names.inc Generated magic names used by dump.c -mg_raw.h Generated magic data used by generate_uudmap.c -mg_vtable.h Generated magic vtable data -miniperlmain.c Basic perl w/o dynamic loading or extensions -mkppport A script that distributes ppport.h -mkppport.lst List of extensions that need a ppport.h -mro_core.c Method Resolution Order code -myconfig.SH Prints summary of the current configuration -mydtrace.h Support for optional DTrace probes -nostdio.h Cause compile error on stdio calls -numeric.c Miscellaneous numeric conversion routines -op.c Opcode syntax tree code -op.h Opcode syntax tree header -op_reg_common.h Common parts of op.h, regexp.h header -opcode.h Automatically generated opcode header -opnames.h Automatically generated opcode header -os2/Changes Changelog for OS/2 port -os2/diff.configure Patches to Configure -os2/dl_os2.c Addon for dl_open -os2/dlfcn.h Addon for dl_open -os2/Makefile.SHs Shared library generation for OS/2 -os2/os2.c Additional code for OS/2 -os2/os2.sym Additional symbols to export -os2/OS2/OS2-ExtAttr/Changes EA access module -os2/OS2/OS2-ExtAttr/ExtAttr.pm EA access module -os2/OS2/OS2-ExtAttr/ExtAttr.xs EA access module -os2/OS2/OS2-ExtAttr/Makefile.PL EA access module -os2/OS2/OS2-ExtAttr/MANIFEST EA access module -os2/OS2/OS2-ExtAttr/myea.h EA access module -os2/OS2/OS2-ExtAttr/t/os2_ea.t EA access module -os2/OS2/OS2-ExtAttr/typemap EA access module -os2/OS2/OS2-PrfDB/Changes System database access module -os2/OS2/OS2-PrfDB/Makefile.PL System database access module -os2/OS2/OS2-PrfDB/MANIFEST System database access module -os2/OS2/OS2-PrfDB/PrfDB.pm System database access module -os2/OS2/OS2-PrfDB/PrfDB.xs System database access module -os2/OS2/OS2-PrfDB/t/os2_prfdb.t System database access module -os2/OS2/OS2-Process/Makefile.PL system() constants in a module -os2/OS2/OS2-Process/MANIFEST system() constants in a module -os2/OS2/OS2-Process/Process.pm system() constants in a module -os2/OS2/OS2-Process/Process.xs system() constants in a module -os2/OS2/OS2-Process/t/os2_atoms.t Test for OS2::Process -os2/OS2/OS2-Process/t/os2_clipboard.t Test for OS2::Process -os2/OS2/OS2-Process/t/os2_process.t Tests -os2/OS2/OS2-Process/t/os2_process_kid.t Tests +lib/unicore/VerticalOrientation.txt Unicode character database +lib/UNIVERSAL.pm Base class for ALL classes +lib/User/grent.pm By-name interface to Perl's builtin getgr* +lib/User/grent.t See if User::grwent works +lib/User/pwent.pm By-name interface to Perl's builtin getpw* +lib/User/pwent.t See if User::pwent works +lib/utf8.pm Pragma to control Unicode support +lib/utf8.t See if utf8 operations work +lib/vars.pm Declare pseudo-imported global variables +lib/vars.t See if "use vars" works +lib/vars_carp.t See if "use vars" doesn't load Carp.pm per default +lib/vmsish.pm Control VMS-specific behavior of Perl core +lib/vmsish.t Tests for vmsish.pm +lib/warnings.pm For "use warnings" +lib/warnings.t See if warning controls work +lib/warnings/register.pm For "use warnings::register" +os2/Changes Changelog for OS/2 port +os2/diff.configure Patches to Configure +os2/dl_os2.c Addon for dl_open +os2/dlfcn.h Addon for dl_open +os2/Makefile.SHs Shared library generation for OS/2 +os2/os2.c Additional code for OS/2 +os2/os2.sym Additional symbols to export +os2/OS2/OS2-ExtAttr/Changes EA access module +os2/OS2/OS2-ExtAttr/ExtAttr.pm EA access module +os2/OS2/OS2-ExtAttr/ExtAttr.xs EA access module +os2/OS2/OS2-ExtAttr/Makefile.PL EA access module +os2/OS2/OS2-ExtAttr/MANIFEST EA access module +os2/OS2/OS2-ExtAttr/myea.h EA access module +os2/OS2/OS2-ExtAttr/t/os2_ea.t EA access module +os2/OS2/OS2-ExtAttr/typemap EA access module +os2/OS2/OS2-PrfDB/Changes System database access module +os2/OS2/OS2-PrfDB/Makefile.PL System database access module +os2/OS2/OS2-PrfDB/MANIFEST System database access module +os2/OS2/OS2-PrfDB/PrfDB.pm System database access module +os2/OS2/OS2-PrfDB/PrfDB.xs System database access module +os2/OS2/OS2-PrfDB/t/os2_prfdb.t System database access module +os2/OS2/OS2-Process/Makefile.PL system() constants in a module +os2/OS2/OS2-Process/MANIFEST system() constants in a module +os2/OS2/OS2-Process/Process.pm system() constants in a module +os2/OS2/OS2-Process/Process.xs system() constants in a module +os2/OS2/OS2-Process/t/os2_atoms.t Test for OS2::Process +os2/OS2/OS2-Process/t/os2_clipboard.t Test for OS2::Process +os2/OS2/OS2-Process/t/os2_process.t Tests +os2/OS2/OS2-Process/t/os2_process_kid.t Tests os2/OS2/OS2-Process/t/os2_process_text.t Tests -os2/OS2/OS2-REXX/Changes DLL access module -os2/OS2/OS2-REXX/DLL/Changes DLL access module -os2/OS2/OS2-REXX/DLL/DLL.pm DLL access module -os2/OS2/OS2-REXX/DLL/DLL.xs DLL access module -os2/OS2/OS2-REXX/DLL/Makefile.PL DLL access module -os2/OS2/OS2-REXX/DLL/MANIFEST DLL access module -os2/OS2/OS2-REXX/Makefile.PL DLL access module -os2/OS2/OS2-REXX/MANIFEST DLL access module -os2/OS2/OS2-REXX/REXX.pm DLL access module -os2/OS2/OS2-REXX/REXX.xs DLL access module -os2/OS2/OS2-REXX/t/rx_cmprt.t DLL access module -os2/OS2/OS2-REXX/t/rx_dllld.t DLL access module -os2/OS2/OS2-REXX/t/rx_emxrv.t DLL access module -os2/OS2/OS2-REXX/t/rx_objcall.t DLL access module -os2/OS2/OS2-REXX/t/rx_sql.test DLL access module -os2/OS2/OS2-REXX/t/rx_tiesql.test DLL access module -os2/OS2/OS2-REXX/t/rx_tievar.t DLL access module -os2/OS2/OS2-REXX/t/rx_tieydb.t DLL access module -os2/OS2/OS2-REXX/t/rx_varset.t DLL access module -os2/OS2/OS2-REXX/t/rx_vrexx.t DLL access module -os2/OS2/typemap Common typemap for OS/2 types -os2/os2_base.t Additional tests for builtin methods -os2/os2_pipe.t Tests for pipe creation logic -os2/os2add.sym Overriding symbols to export -os2/os2ish.h Header for OS/2 -os2/os2thread.h pthread-like typedefs -os2/perl2cmd.pl Corrects installed binaries under OS/2 -os2/perlrexx.c Support perl interpreter embedded in REXX -os2/perlrexx.cmd Test perl interpreter embedded in REXX -overload.h generated overload enum (public) -overload.inc generated overload name table (implementation) -PACKAGING notes and best practice for packaging perl 5 -packsizetables.inc The generated packprops array used in pp_pack.c -pad.c Scratchpad functions -pad.h Scratchpad headers -parser.h parser object header -patchlevel.h The current patch level of perl -perl.c main() -perl.h Global declarations -perl_inc_macro.h macro used to set \@INC using S_incpush_use_sep -perl_langinfo.h Perl's version of -perl_siphash.h Implementation of SipHash -perlapi.h Empty backwards-compat include -perldtrace.d D script for Perl probes -perlio.c C code for PerlIO abstraction -perlio.h PerlIO abstraction -perlio.sym Symbols for PerlIO abstraction -perliol.h PerlIO Layer definition -perlsdio.h Fake stdio using perlio -perlvars.h Global variables -perly.act parser actions; derived from perly.y -perly.c parser code (NOT derived from perly.y) -perly.h header file for perly.c; derived from perly.y -perly.tab parser state tables; derived from perly.y -perly.y Yacc grammar for perl -plan9/9front.patch Plan9 port: patch for 9front-specific flavor of Plan 9 -plan9/aperl Plan9 port: shell to make Perl error messages Acme-friendly -plan9/arpa/inet.h Plan9 port: replacement C header file -plan9/buildinfo Plan9 port: configuration information -plan9/config.plan9 Plan9 port: config.h template -plan9/config_h.sample Plan9 port: 5.32.0 sample config.h -plan9/config_sh.sample Plan9 port: 5.32.0 sample config.sh -plan9/exclude Plan9 port: tests to skip -plan9/fndvers Plan9 port: update Perl version in config.plan9 -plan9/genconfig.pl Plan9 port: generate config.sh -plan9/math.h Plan9 port: Plan9-specific math.h -plan9/mkfile Plan9 port: Mk driver for build -plan9/myconfig.plan9 Plan9 port: script to print config summary -plan9/plan9.c Plan9 port: Plan9-specific C routines -plan9/plan9ish.h Plan9 port: Plan9-specific C header file -plan9/setup.rc Plan9 port: script for easy build+install -plan9/uninstall.rc Plan9 port: uninstall script -plan9/versnum Plan9 port: script to print version number -pod/buildtoc Generate pod/perltoc.pod and pod/roffitall -pod/Makefile.SH generate Makefile which makes pods into something else -pod/perl.pod Perl overview (this section) -pod/perl5004delta.pod Perl changes in version 5.004 -pod/perl5005delta.pod Perl changes in version 5.005 -pod/perl5100delta.pod Perl changes in version 5.10.0 -pod/perl5101delta.pod Perl changes in version 5.10.1 -pod/perl5120delta.pod Perl changes in version 5.12.0 -pod/perl5121delta.pod Perl changes in version 5.12.1 -pod/perl5122delta.pod Perl changes in version 5.12.2 -pod/perl5123delta.pod Perl changes in version 5.12.3 -pod/perl5124delta.pod Perl changes in version 5.12.4 -pod/perl5125delta.pod Perl changes in version 5.12.5 -pod/perl5140delta.pod Perl changes in version 5.14.0 -pod/perl5141delta.pod Perl changes in version 5.14.1 -pod/perl5142delta.pod Perl changes in version 5.14.2 -pod/perl5143delta.pod Perl changes in version 5.14.3 -pod/perl5144delta.pod Perl changes in version 5.14.4 -pod/perl5160delta.pod Perl changes in version 5.16.0 -pod/perl5161delta.pod Perl changes in version 5.16.1 -pod/perl5162delta.pod Perl changes in version 5.16.2 -pod/perl5163delta.pod Perl changes in version 5.16.3 -pod/perl5180delta.pod Perl changes in version 5.18.0 -pod/perl5181delta.pod Perl changes in version 5.18.1 -pod/perl5182delta.pod Perl changes in version 5.18.2 -pod/perl5184delta.pod Perl changes in version 5.18.4 -pod/perl5200delta.pod Perl changes in version 5.20.0 -pod/perl5201delta.pod Perl changes in version 5.20.1 -pod/perl5202delta.pod Perl changes in version 5.20.2 -pod/perl5203delta.pod Perl changes in version 5.20.3 -pod/perl5220delta.pod Perl changes in version 5.22.0 -pod/perl5221delta.pod Perl changes in version 5.22.1 -pod/perl5222delta.pod Perl changes in version 5.22.2 -pod/perl5223delta.pod Perl changes in version 5.22.3 -pod/perl5224delta.pod Perl changes in version 5.22.4 -pod/perl5240delta.pod Perl changes in version 5.24.0 -pod/perl5241delta.pod Perl changes in version 5.24.1 -pod/perl5242delta.pod Perl changes in version 5.24.2 -pod/perl5243delta.pod Perl changes in version 5.24.3 -pod/perl5244delta.pod Perl changes in version 5.24.4 -pod/perl5260delta.pod Perl changes in version 5.26.0 -pod/perl5261delta.pod Perl changes in version 5.26.1 -pod/perl5262delta.pod Perl changes in version 5.26.2 -pod/perl5263delta.pod Perl changes in version 5.26.3 -pod/perl5280delta.pod Perl changes in version 5.28.0 -pod/perl5281delta.pod Perl changes in version 5.28.1 -pod/perl5282delta.pod Perl changes in version 5.28.2 -pod/perl5283delta.pod Perl changes in version 5.28.3 -pod/perl5300delta.pod Perl changes in version 5.30.0 -pod/perl5301delta.pod Perl changes in version 5.30.1 -pod/perl5302delta.pod Perl changes in version 5.30.2 -pod/perl5303delta.pod Perl changes in version 5.30.3 -pod/perl5320delta.pod Perl changes in version 5.32.0 -pod/perl5321delta.pod Perl changes in version 5.32.1 -pod/perl5340delta.pod Perl changes in version 5.34.0 -pod/perl5341delta.pod Perl changes in version 5.34.1 -pod/perl5342delta.pod Perl changes in version 5.34.2 -pod/perl5343delta.pod Perl changes in version 5.34.3 -pod/perl5360delta.pod Perl changes in version 5.36.0 -pod/perl5361delta.pod Perl changes in version 5.36.1 -pod/perl5362delta.pod Perl changes in version 5.36.2 -pod/perl561delta.pod Perl changes in version 5.6.1 -pod/perl56delta.pod Perl changes in version 5.6 -pod/perl581delta.pod Perl changes in version 5.8.1 -pod/perl582delta.pod Perl changes in version 5.8.2 -pod/perl583delta.pod Perl changes in version 5.8.3 -pod/perl584delta.pod Perl changes in version 5.8.4 -pod/perl585delta.pod Perl changes in version 5.8.5 -pod/perl586delta.pod Perl changes in version 5.8.6 -pod/perl587delta.pod Perl changes in version 5.8.7 -pod/perl588delta.pod Perl changes in version 5.8.8 -pod/perl589delta.pod Perl changes in version 5.8.9 -pod/perl58delta.pod Perl changes in version 5.8.0 -pod/perlapio.pod Perl internal IO abstraction interface -pod/perlartistic.pod Perl Artistic License -pod/perlbook.pod Perl book information -pod/perlboot.pod -pod/perlbot.pod -pod/perlcall.pod Perl calling conventions from C -pod/perlcheat.pod Perl cheat sheet -pod/perlclib.pod Internal replacements for standard C library functions -pod/perlcommunity.pod Perl community information -pod/perldata.pod Perl data structures -pod/perldbmfilter.pod Perl DBM filters -pod/perldebguts.pod Perl debugging guts and tips -pod/perldebtut.pod Perl debugging tutorial -pod/perldebug.pod Perl debugging -pod/perldelta.pod Perl changes since previous version -pod/perldeprecation.pod Perl deprecations -pod/perldiag.pod Perl diagnostic messages -pod/perldocstyle.pod Perl style guide for core docs -pod/perldsc.pod Perl data structures intro -pod/perldtrace.pod Perl's support for DTrace -pod/perlebcdic.pod Considerations for running Perl on EBCDIC platforms -pod/perlembed.pod Perl ways to embed perl in your C or C++ application -pod/perlexperiment.pod A listing of experimental features in Perl -pod/perlfilter.pod Perl source filters -pod/perlfork.pod Perl fork() information -pod/perlform.pod Perl formats -pod/perlfunc.pod Perl built-in functions -pod/perlgit.pod Using git with the Perl repository -pod/perlgov.pod Perl Rules of Governance -pod/perlgpl.pod GNU General Public License -pod/perlguts.pod Perl internal functions for those doing extensions -pod/perlhack.pod Perl hackers guide -pod/perlhacktips.pod Tips for Perl core C code hacking -pod/perlhacktut.pod Walk through the creation of a simple C code patch -pod/perlhist.pod Perl history records -pod/perlinterp.pod Overview of the Perl interpreter source and how it works -pod/perlintro.pod Perl introduction for beginners -pod/perliol.pod C API for Perl's implementation of IO in Layers -pod/perlipc.pod Perl interprocess communication -pod/perllexwarn.pod Perl warnings and their control -pod/perllocale.pod Perl locale support -pod/perllol.pod Perl data structures: arrays of arrays -pod/perlmod.pod Perl modules: how they work -pod/perlmodinstall.pod Perl modules: how to install from CPAN -pod/perlmodlib.PL Generate pod/perlmodlib.pod -pod/perlmodstyle.pod Perl modules: how to write modules with style -pod/perlmroapi.pod Perl method resolution plugin interface -pod/perlnewmod.pod Perl modules: preparing a new module for distribution -pod/perlnumber.pod Perl number semantics -pod/perlobj.pod Perl objects -pod/perlootut.pod Perl OO tutorial for beginners -pod/perlop.pod Perl operators and precedence -pod/perlopentut.pod Perl open() tutorial -pod/perlpacktut.pod Perl pack() and unpack() tutorial -pod/perlperf.pod Perl Performance and Optimization Techniques -pod/perlpod.pod Perl plain old documentation -pod/perlpodspec.pod Perl plain old documentation format specification -pod/perlpodstyle.pod Perl POD style guide -pod/perlpolicy.pod Perl development policies -pod/perlport.pod Perl portability guide -pod/perlpragma.pod Perl modules: writing a user pragma -pod/perlre.pod Perl regular expressions, the rest of the story -pod/perlreapi.pod Perl regular expression plugin interface -pod/perlrebackslash.pod Perl regular expression backslash sequences -pod/perlrecharclass.pod Perl regular expression character classes -pod/perlref.pod Perl references, the rest of the story -pod/perlreftut.pod Perl references short introduction -pod/perlreguts.pod Perl regular expression engine internals -pod/perlrepository.pod -pod/perlrequick.pod Perl regular expressions quick start -pod/perlreref.pod Perl regular expressions quick reference -pod/perlretut.pod Perl regular expressions tutorial -pod/perlrun.pod Perl execution and options -pod/perlsec.pod Perl security -pod/perlsecpolicy.pod Perl security report handling policy -pod/perlsource.pod Guide to the Perl source tree -pod/perlstyle.pod Perl style guide -pod/perlsub.pod Perl subroutines -pod/perlsyn.pod Perl syntax -pod/perlthrtut.pod Perl threads tutorial -pod/perltie.pod Perl objects hidden behind simple variables -pod/perltodo.pod -pod/perltooc.pod -pod/perltoot.pod -pod/perltrap.pod Perl traps for the unwary -pod/perlunicode.pod Perl Unicode support -pod/perlunicook.pod Perl Unicode cookbook -pod/perlunifaq.pod Perl Unicode FAQ -pod/perluniintro.pod Perl Unicode introduction -pod/perluniprops.pod Index of Unicode properties in Perl -pod/perlunitut.pod Perl Unicode tutorial -pod/perlutil.pod utilities packaged with the Perl distribution -pod/perlvar.pod Perl predefined variables -pod/perlvms.pod Perl notes for VMS -pod/rofftoc Generate a table of contents in troff format -pod/splitman Splits perlfunc into multiple man pages -pod/splitpod Splits perlfunc into multiple pod pages -Policy_sh.SH Hold site-wide preferences between Configure runs. -Porting/acknowledgements.pl Generate perldelta acknowledgements text -Porting/add-package.pl Add/Update CPAN modules that are part of Core -Porting/add-pod-file Utility to add new pod/*.pod file to core distribution -Porting/bench.pl Run benchmarks against t/perf/benchmarks -Porting/bisect.pl A tool to make bisecting easy -Porting/bisect-example.sh Example script to use with git bisect run -Porting/bisect-runner.pl Tool to be called by git bisect run -Porting/bump-perl-version bump the perl version in relevant files -Porting/check-cpan-pollution Check for commits that may wrongly touch CPAN distros -Porting/checkansi.pl Check source code for ANSI-C violations -Porting/checkAUTHORS.pl Check that the AUTHORS file is complete -Porting/checkcfguse.pl Check that config symbols are being used -Porting/checkcfgvar.pl Check that config scripts define all symbols -Porting/checkpodencoding.pl Check POD encoding -Porting/checkURL.pl Check whether we have working URLs -Porting/checkVERSION.pl Check whether we have $VERSIONs -Porting/cmpVERSION.pl Compare whether two trees have changed modules -Porting/config.sh Sample config.sh -Porting/config_H Sample config.h -Porting/config_h.pl Reorder config_h.SH after metaconfig -Porting/core-cpan-diff Compare core distros with their CPAN equivalents -Porting/core-team.json Membership of the Perl Core Team -Porting/corecpan.pl Reports outdated dual-lived modules -Porting/corelist.pl Generates data for Module::CoreList -Porting/corelist-diff Tool to produce corelist diffs -Porting/corelist-perldelta.pl Generates data perldelta from Module::CoreList -Porting/deparse-skips.txt List of test files to ignore/skip for deparse tests. -Porting/docs-team-charter.pod Perl Documentation Team charter -Porting/epigraphs.pod the release epigraphs used over the years -Porting/exec-bit.txt List of files that get +x in release tarball -Porting/exercise_makedef.pl Brute force testing for makedef.pl -Porting/expand-macro.pl A tool to expand C macro definitions in the Perl source -Porting/findrfuncs Find reentrant variants of functions used in an executable -Porting/git-deltatool Mark commits for perldelta in git notes -Porting/git-find-p4-change Find the change for a p4 change number -Porting/git-make-p4-refs Output git refs for each p4 change number, suitable for appending to .git/packed-refs -Porting/GitUtils.pm Generate the contents of a .patch file -Porting/Glossary Glossary of config.sh variables -Porting/harness-timer-report.pl Analyze the timings from the test harness -Porting/how_to_write_a_perldelta.pod Bluffer's guide to writing a perldelta. -Porting/leakfinder.pl Hacky script for finding memory leaks -Porting/Maintainers Program to pretty print info in Maintainers.pl -Porting/Maintainers.pl Information about maintainers -Porting/Maintainers.pm Library to pretty print info in Maintainers.pl -Porting/make-rmg-checklist Generates a checklist 4 the release manager -Porting/make_dot_patch.pl Make a .patch file from a git WD -Porting/make_snapshot.pl Make a tgz snapshot of our tree with a .patch file in it -Porting/makemeta Create the top-level META.yml -Porting/makerel Release making utility -Porting/manicheck Check against MANIFEST -Porting/manifest_lib.pl Library for checking and sorting the MANIFEST -Porting/manisort Sort the MANIFEST -Porting/mksample Generate Porting/config_H and Porting/config.sh -Porting/new-perldelta.pl Generate a new perldelta -Porting/newtests-perldelta.pl Generate Perldelta stub for newly added tests -Porting/perldelta_template.pod Template for creating new perldelta.pod files +os2/OS2/OS2-REXX/Changes DLL access module +os2/OS2/OS2-REXX/DLL/Changes DLL access module +os2/OS2/OS2-REXX/DLL/DLL.pm DLL access module +os2/OS2/OS2-REXX/DLL/DLL.xs DLL access module +os2/OS2/OS2-REXX/DLL/Makefile.PL DLL access module +os2/OS2/OS2-REXX/DLL/MANIFEST DLL access module +os2/OS2/OS2-REXX/Makefile.PL DLL access module +os2/OS2/OS2-REXX/MANIFEST DLL access module +os2/OS2/OS2-REXX/REXX.pm DLL access module +os2/OS2/OS2-REXX/REXX.xs DLL access module +os2/OS2/OS2-REXX/t/rx_cmprt.t DLL access module +os2/OS2/OS2-REXX/t/rx_dllld.t DLL access module +os2/OS2/OS2-REXX/t/rx_emxrv.t DLL access module +os2/OS2/OS2-REXX/t/rx_objcall.t DLL access module +os2/OS2/OS2-REXX/t/rx_sql.test DLL access module +os2/OS2/OS2-REXX/t/rx_tiesql.test DLL access module +os2/OS2/OS2-REXX/t/rx_tievar.t DLL access module +os2/OS2/OS2-REXX/t/rx_tieydb.t DLL access module +os2/OS2/OS2-REXX/t/rx_varset.t DLL access module +os2/OS2/OS2-REXX/t/rx_vrexx.t DLL access module +os2/OS2/typemap Common typemap for OS/2 types +os2/os2_base.t Additional tests for builtin methods +os2/os2_pipe.t Tests for pipe creation logic +os2/os2add.sym Overriding symbols to export +os2/os2ish.h Header for OS/2 +os2/os2thread.h pthread-like typedefs +os2/perl2cmd.pl Corrects installed binaries under OS/2 +os2/perlrexx.c Support perl interpreter embedded in REXX +os2/perlrexx.cmd Test perl interpreter embedded in REXX +plan9/9front.patch Plan9 port: patch for 9front-specific flavor of Plan 9 +plan9/aperl Plan9 port: shell to make Perl error messages Acme-friendly +plan9/arpa/inet.h Plan9 port: replacement C header file +plan9/buildinfo Plan9 port: configuration information +plan9/config.plan9 Plan9 port: config.h template +plan9/config_h.sample Plan9 port: 5.32.0 sample config.h +plan9/config_sh.sample Plan9 port: 5.32.0 sample config.sh +plan9/exclude Plan9 port: tests to skip +plan9/fndvers Plan9 port: update Perl version in config.plan9 +plan9/genconfig.pl Plan9 port: generate config.sh +plan9/math.h Plan9 port: Plan9-specific math.h +plan9/mkfile Plan9 port: Mk driver for build +plan9/myconfig.plan9 Plan9 port: script to print config summary +plan9/plan9.c Plan9 port: Plan9-specific C routines +plan9/plan9ish.h Plan9 port: Plan9-specific C header file +plan9/setup.rc Plan9 port: script for easy build+install +plan9/uninstall.rc Plan9 port: uninstall script +plan9/versnum Plan9 port: script to print version number +pod/buildtoc Generate pod/perltoc.pod and pod/roffitall +pod/Makefile.SH generate Makefile which makes pods into something else +pod/perl.pod Perl overview (this section) +pod/perl5004delta.pod Perl changes in version 5.004 +pod/perl5005delta.pod Perl changes in version 5.005 +pod/perl5100delta.pod Perl changes in version 5.10.0 +pod/perl5101delta.pod Perl changes in version 5.10.1 +pod/perl5120delta.pod Perl changes in version 5.12.0 +pod/perl5121delta.pod Perl changes in version 5.12.1 +pod/perl5122delta.pod Perl changes in version 5.12.2 +pod/perl5123delta.pod Perl changes in version 5.12.3 +pod/perl5124delta.pod Perl changes in version 5.12.4 +pod/perl5125delta.pod Perl changes in version 5.12.5 +pod/perl5140delta.pod Perl changes in version 5.14.0 +pod/perl5141delta.pod Perl changes in version 5.14.1 +pod/perl5142delta.pod Perl changes in version 5.14.2 +pod/perl5143delta.pod Perl changes in version 5.14.3 +pod/perl5144delta.pod Perl changes in version 5.14.4 +pod/perl5160delta.pod Perl changes in version 5.16.0 +pod/perl5161delta.pod Perl changes in version 5.16.1 +pod/perl5162delta.pod Perl changes in version 5.16.2 +pod/perl5163delta.pod Perl changes in version 5.16.3 +pod/perl5180delta.pod Perl changes in version 5.18.0 +pod/perl5181delta.pod Perl changes in version 5.18.1 +pod/perl5182delta.pod Perl changes in version 5.18.2 +pod/perl5184delta.pod Perl changes in version 5.18.4 +pod/perl5200delta.pod Perl changes in version 5.20.0 +pod/perl5201delta.pod Perl changes in version 5.20.1 +pod/perl5202delta.pod Perl changes in version 5.20.2 +pod/perl5203delta.pod Perl changes in version 5.20.3 +pod/perl5220delta.pod Perl changes in version 5.22.0 +pod/perl5221delta.pod Perl changes in version 5.22.1 +pod/perl5222delta.pod Perl changes in version 5.22.2 +pod/perl5223delta.pod Perl changes in version 5.22.3 +pod/perl5224delta.pod Perl changes in version 5.22.4 +pod/perl5240delta.pod Perl changes in version 5.24.0 +pod/perl5241delta.pod Perl changes in version 5.24.1 +pod/perl5242delta.pod Perl changes in version 5.24.2 +pod/perl5243delta.pod Perl changes in version 5.24.3 +pod/perl5244delta.pod Perl changes in version 5.24.4 +pod/perl5260delta.pod Perl changes in version 5.26.0 +pod/perl5261delta.pod Perl changes in version 5.26.1 +pod/perl5262delta.pod Perl changes in version 5.26.2 +pod/perl5263delta.pod Perl changes in version 5.26.3 +pod/perl5280delta.pod Perl changes in version 5.28.0 +pod/perl5281delta.pod Perl changes in version 5.28.1 +pod/perl5282delta.pod Perl changes in version 5.28.2 +pod/perl5283delta.pod Perl changes in version 5.28.3 +pod/perl5300delta.pod Perl changes in version 5.30.0 +pod/perl5301delta.pod Perl changes in version 5.30.1 +pod/perl5302delta.pod Perl changes in version 5.30.2 +pod/perl5303delta.pod Perl changes in version 5.30.3 +pod/perl5320delta.pod Perl changes in version 5.32.0 +pod/perl5321delta.pod Perl changes in version 5.32.1 +pod/perl5340delta.pod Perl changes in version 5.34.0 +pod/perl5341delta.pod Perl changes in version 5.34.1 +pod/perl5342delta.pod Perl changes in version 5.34.2 +pod/perl5343delta.pod Perl changes in version 5.34.3 +pod/perl5360delta.pod Perl changes in version 5.36.0 +pod/perl5361delta.pod Perl changes in version 5.36.1 +pod/perl5362delta.pod Perl changes in version 5.36.2 +pod/perl5363delta.pod Perl changes in version 5.36.3 +pod/perl5380delta.pod Perl changes in version 5.38.0 +pod/perl5381delta.pod Perl changes in version 5.38.1 +pod/perl561delta.pod Perl changes in version 5.6.1 +pod/perl56delta.pod Perl changes in version 5.6 +pod/perl581delta.pod Perl changes in version 5.8.1 +pod/perl582delta.pod Perl changes in version 5.8.2 +pod/perl583delta.pod Perl changes in version 5.8.3 +pod/perl584delta.pod Perl changes in version 5.8.4 +pod/perl585delta.pod Perl changes in version 5.8.5 +pod/perl586delta.pod Perl changes in version 5.8.6 +pod/perl587delta.pod Perl changes in version 5.8.7 +pod/perl588delta.pod Perl changes in version 5.8.8 +pod/perl589delta.pod Perl changes in version 5.8.9 +pod/perl58delta.pod Perl changes in version 5.8.0 +pod/perlapio.pod Perl internal IO abstraction interface +pod/perlartistic.pod Perl Artistic License +pod/perlbook.pod Perl book information +pod/perlboot.pod +pod/perlbot.pod +pod/perlcall.pod Perl calling conventions from C +pod/perlcheat.pod Perl cheat sheet +pod/perlclass.pod Perl class syntax +pod/perlclassguts.pod Internals of class syntax +pod/perlclib.pod Internal replacements for standard C library functions +pod/perlcommunity.pod Perl community information +pod/perldata.pod Perl data structures +pod/perldbmfilter.pod Perl DBM filters +pod/perldebguts.pod Perl debugging guts and tips +pod/perldebtut.pod Perl debugging tutorial +pod/perldebug.pod Perl debugging +pod/perldelta.pod Perl changes since previous version +pod/perldeprecation.pod Perl deprecations +pod/perldiag.pod Perl diagnostic messages +pod/perldocstyle.pod Perl style guide for core docs +pod/perldsc.pod Perl data structures intro +pod/perldtrace.pod Perl's support for DTrace +pod/perlebcdic.pod Considerations for running Perl on EBCDIC platforms +pod/perlembed.pod Perl ways to embed perl in your C or C++ application +pod/perlexperiment.pod A listing of experimental features in Perl +pod/perlfilter.pod Perl source filters +pod/perlfork.pod Perl fork() information +pod/perlform.pod Perl formats +pod/perlfunc.pod Perl built-in functions +pod/perlgit.pod Using git with the Perl repository +pod/perlgov.pod Perl Rules of Governance +pod/perlgpl.pod GNU General Public License +pod/perlguts.pod Perl internal functions for those doing extensions +pod/perlhack.pod Perl hackers guide +pod/perlhacktips.pod Tips for Perl core C code hacking +pod/perlhacktut.pod Walk through the creation of a simple C code patch +pod/perlhist.pod Perl history records +pod/perlinterp.pod Overview of the Perl interpreter source and how it works +pod/perlintro.pod Perl introduction for beginners +pod/perliol.pod C API for Perl's implementation of IO in Layers +pod/perlipc.pod Perl interprocess communication +pod/perllexwarn.pod Perl warnings and their control +pod/perllocale.pod Perl locale support +pod/perllol.pod Perl data structures: arrays of arrays +pod/perlmod.pod Perl modules: how they work +pod/perlmodinstall.pod Perl modules: how to install from CPAN +pod/perlmodlib.PL Generate pod/perlmodlib.pod +pod/perlmodstyle.pod Perl modules: how to write modules with style +pod/perlmroapi.pod Perl method resolution plugin interface +pod/perlnewmod.pod Perl modules: preparing a new module for distribution +pod/perlnumber.pod Perl number semantics +pod/perlobj.pod Perl objects +pod/perlootut.pod Perl OO tutorial for beginners +pod/perlop.pod Perl operators and precedence +pod/perlopentut.pod Perl open() tutorial +pod/perlpacktut.pod Perl pack() and unpack() tutorial +pod/perlperf.pod Perl Performance and Optimization Techniques +pod/perlpod.pod Perl plain old documentation +pod/perlpodspec.pod Perl plain old documentation format specification +pod/perlpodstyle.pod Perl POD style guide +pod/perlpolicy.pod Perl development policies +pod/perlport.pod Perl portability guide +pod/perlpragma.pod Perl modules: writing a user pragma +pod/perlre.pod Perl regular expressions, the rest of the story +pod/perlreapi.pod Perl regular expression plugin interface +pod/perlrebackslash.pod Perl regular expression backslash sequences +pod/perlrecharclass.pod Perl regular expression character classes +pod/perlref.pod Perl references, the rest of the story +pod/perlreftut.pod Perl references short introduction +pod/perlreguts.pod Perl regular expression engine internals +pod/perlrepository.pod +pod/perlrequick.pod Perl regular expressions quick start +pod/perlreref.pod Perl regular expressions quick reference +pod/perlretut.pod Perl regular expressions tutorial +pod/perlrun.pod Perl execution and options +pod/perlsec.pod Perl security +pod/perlsecpolicy.pod Perl security report handling policy +pod/perlsource.pod Guide to the Perl source tree +pod/perlstyle.pod Perl style guide +pod/perlsub.pod Perl subroutines +pod/perlsyn.pod Perl syntax +pod/perlthrtut.pod Perl threads tutorial +pod/perltie.pod Perl objects hidden behind simple variables +pod/perltodo.pod +pod/perltooc.pod +pod/perltoot.pod +pod/perltrap.pod Perl traps for the unwary +pod/perlunicode.pod Perl Unicode support +pod/perlunicook.pod Perl Unicode cookbook +pod/perlunifaq.pod Perl Unicode FAQ +pod/perluniintro.pod Perl Unicode introduction +pod/perlunitut.pod Perl Unicode tutorial +pod/perlutil.pod utilities packaged with the Perl distribution +pod/perlvar.pod Perl predefined variables +pod/perlvms.pod Perl notes for VMS +pod/rofftoc Generate a table of contents in troff format +pod/splitman Splits perlfunc into multiple man pages +pod/splitpod Splits perlfunc into multiple pod pages +Porting/acknowledgements.pl Generate perldelta acknowledgements text +Porting/add-package.pl Add/Update CPAN modules that are part of Core +Porting/add-pod-file Utility to add new pod/*.pod file to core distribution +Porting/bench.pl Run benchmarks against t/perf/benchmarks +Porting/bisect.pl A tool to make bisecting easy +Porting/bisect-example.sh Example script to use with git bisect run +Porting/bisect-runner.pl Tool to be called by git bisect run +Porting/bump-perl-version bump the perl version in relevant files +Porting/check-cpan-pollution Check for commits that may wrongly touch CPAN distros +Porting/checkansi.pl Check source code for ANSI-C violations +Porting/checkcfguse.pl Check that config symbols are being used +Porting/checkcfgvar.pl Check that config scripts define all symbols +Porting/checkpodencoding.pl Check POD encoding +Porting/checkURL.pl Check whether we have working URLs +Porting/checkVERSION.pl Check whether we have $VERSIONs +Porting/cmpVERSION.pl Compare whether two trees have changed modules +Porting/config.sh Sample config.sh +Porting/config_H Sample config.h +Porting/config_h.pl Reorder config_h.SH after metaconfig +Porting/core-cpan-diff Compare core distros with their CPAN equivalents +Porting/core-team.json Membership of the Perl Core Team +Porting/corecpan.pl Reports outdated dual-lived modules +Porting/corelist.pl Generates data for Module::CoreList +Porting/corelist-diff Tool to produce corelist diffs +Porting/corelist-perldelta.pl Generates data perldelta from Module::CoreList +Porting/deparse-skips.txt List of test files to ignore/skip for deparse tests. +Porting/docs-team-charter.pod Perl Documentation Team charter +Porting/epigraphs.pod the release epigraphs used over the years +Porting/exclude_contrib.txt Data about contributors that do not want to be listed in AUTHORS +Porting/exec-bit.txt List of files that get +x in release tarball +Porting/exercise_makedef.pl Brute force testing for makedef.pl +Porting/expand-macro.pl A tool to expand C macro definitions in the Perl source +Porting/findrfuncs Find reentrant variants of functions used in an executable +Porting/git-deltatool Mark commits for perldelta in git notes +Porting/git-find-p4-change Find the change for a p4 change number +Porting/git-make-p4-refs Output git refs for each p4 change number, suitable for appending to .git/packed-refs +Porting/GitUtils.pm Generate the contents of a .patch file +Porting/Glossary Glossary of config.sh variables +Porting/harness-timer-report.pl Analyze the timings from the test harness +Porting/how_to_write_a_perldelta.pod Bluffer's guide to writing a perldelta. +Porting/leakfinder.pl Hacky script for finding memory leaks +Porting/Maintainers Program to pretty print info in Maintainers.pl +Porting/Maintainers.pl Information about maintainers +Porting/Maintainers.pm Library to pretty print info in Maintainers.pl +Porting/make-rmg-checklist Generates a checklist 4 the release manager +Porting/make_dot_patch.pl Make a .patch file from a git WD +Porting/make_snapshot.pl Make a tgz snapshot of our tree with a .patch file in it +Porting/makemeta Create the top-level META.yml +Porting/makerel Release making utility +Porting/manicheck Check against MANIFEST +Porting/manifest_lib.pl Library for checking and sorting the MANIFEST +Porting/manisort Sort the MANIFEST +Porting/mksample Generate Porting/config_H and Porting/config.sh +Porting/new-perldelta.pl Generate a new perldelta +Porting/newtests-perldelta.pl Generate Perldelta stub for newly added tests +Porting/perldelta_template.pod Template for creating new perldelta.pod files Porting/perlgov-team-update Tool to update perlgov from perl-core-teaml -Porting/perlhist_calculate.pl Perform calculations to update perlhist -Porting/pod_lib.pl Code for handling generated pods -Porting/pod_rules.pl generate lists of pod files for Makefiles -Porting/podtidy Reformat pod using Pod::Tidy -Porting/pumpkin.pod Guidelines and hints for Perl maintainers -Porting/README.pod Outline of contents of Porting directory -Porting/README.y2038 Perl notes for the 2038 fix +Porting/perlhist_calculate.pl Perform calculations to update perlhist +Porting/pod_lib.pl Code for handling generated pods +Porting/pod_rules.pl generate lists of pod files for Makefiles +Porting/podtidy Reformat pod using Pod::Tidy +Porting/pumpkin.pod Guidelines and hints for Perl maintainers +Porting/README.pod Outline of contents of Porting directory +Porting/README.y2038 Perl notes for the 2038 fix Porting/release_announcement_template.txt -Porting/release_managers_guide.pod Release Manager's Guide -Porting/release_schedule.pod Schedule for future releases -Porting/rt_list_patches A tool to help you apply patches from RT -Porting/security_template.pod Template for vulnerability announcements -Porting/sort_perldiag.pl Keep our diagnostics orderly -Porting/sync-with-cpan Sync with CPAN -Porting/timecheck.c Test program for the 2038 fix -Porting/timecheck2.c Test program for the 2038 fix -Porting/todo.pod Perl things to do -Porting/updateAUTHORS.pl Tool to automatically update AUTHORS and .mailmap from git log data -Porting/valgrindpp.pl Summarize valgrind reports -Porting/vote_admin_guide.pod Perlgov Vote Administrator guide -pp.c Push/Pop code -pp.h Push/Pop code defs -pp_ctl.c Push/Pop code for control flow -pp_hot.c Push/Pop code for heavily used opcodes -pp_pack.c Push/Pop code for pack/unpack -pp_proto.h C++ definitions for Push/Pop code -pp_sort.c Push/Pop code for sort -pp_sys.c Push/Pop code for system interaction -proto.h Prototypes -qnx/ar QNX implementation of "ar" utility -qnx/cpp QNX implementation of preprocessor filter -qnx/qnx.c QNX silent matherr callback -README The Instructions -README.aix Perl notes for AIX -README.amiga Perl notes for AmigaOS -README.android Perl notes for Android -README.bs2000 Perl notes for POSIX-BC BS2000 -README.cn Perl for Simplified Chinese (in UTF-8) -README.cygwin Perl notes for Cygwin -README.freebsd Perl notes for FreeBSD -README.haiku Perl notes for Haiku -README.hpux Perl notes for HP-UX -README.hurd Perl notes for Hurd -README.irix Perl notes for Irix -README.jp Perl for Japanese (in EUC-JP) -README.ko Perl for Korean (in EUC-KR) -README.linux Perl notes for Linux -README.macosx Perl notes for Mac OS X -README.micro Notes about microperl -README.openbsd Perl notes for OpenBSD -README.os2 Perl notes for OS/2 -README.os390 Perl notes for OS/390 -README.os400 Perl notes for OS/400 -README.plan9 Perl notes for Plan 9 -README.qnx Perl notes for QNX -README.riscos Perl notes for RISC OS -README.solaris Perl notes for Solaris -README.synology Perl notes for Synology -README.tru64 Perl notes for Tru64 -README.tw Perl for Traditional Chinese (in Big5) -README.vms Notes about installing the VMS port -README.vos Perl notes for Stratus VOS -README.win32 Perl notes for Windows -reentr.c Reentrant interfaces -reentr.h Reentrant interfaces -regcharclass.h Generated by regen/regcharclass.pl -regcomp.c Regular expression compiler -regcomp.h Private declarations for above -regcomp.sym Data for regnodes.h -regen.pl Run all scripts that (re)generate files -regen/charset_translations.pl Character set utilities -regen/ebcdic.pl Generates ebcdic_tables.h -regen/embed.pl Produces {embed,embedvar,proto}.h -regen/embed_lib.pl Reads embed.fnc and regen/opcodes -regen/feature.pl Generates feature.pm -regen/genpacksizetables.pl Generate the size tables for pack/unpack -regen/keywords.pl Program to write keywords.h -regen/lib_cleanup.pl Generate lib/.gitignore from MANIFEST -regen/mg_vtable.pl generate mg_vtable.h -regen/miniperlmain.pl generate miniperlmain.c -regen/mk_invlists.pl Generates charclass_invlists.h -regen/mk_PL_charclass.pl Populate the PL_charclass table -regen/mph.pl Generate perfect hashes -regen/op_private Definitions of bits in an OP's op_private field -regen/opcode.pl Opcode header generator -regen/opcodes Opcode data -regen/overload.pl generate overload.h -regen/reentr.pl Reentrant interfaces -regen/regcharclass.pl Generate regcharclass.h from inline data +Porting/release_managers_guide.pod Release Manager's Guide +Porting/release_schedule.pod Schedule for future releases +Porting/rt_list_patches A tool to help you apply patches from RT +Porting/security_template.pod Template for vulnerability announcements +Porting/sort_perldiag.pl Keep our diagnostics orderly +Porting/sync-with-cpan Sync with CPAN +Porting/test-dist-modules.pl Test dist/ modules on currently active perl (used for CI) +Porting/timecheck.c Test program for the 2038 fix +Porting/timecheck2.c Test program for the 2038 fix +Porting/todo.pod Perl things to do +Porting/updateAUTHORS.pl Tool to automatically update AUTHORS and .mailmap from git log data +Porting/updateAUTHORS.pm Brains of updateAUTHORS.pl +Porting/valgrindpp.pl Summarize valgrind reports +Porting/vote_admin_guide.pod Perlgov Vote Administrator guide +qnx/ar QNX implementation of "ar" utility +qnx/cpp QNX implementation of preprocessor filter +qnx/qnx.c QNX silent matherr callback +regen/charset_translations.pl Character set utilities +regen/ebcdic.pl Generates ebcdic_tables.h +regen/embed.pl Produces {embed,embedvar,proto}.h +regen/embed_lib.pl Reads embed.fnc and regen/opcodes +regen/feature.pl Generates feature.pm +regen/genpacksizetables.pl Generate the size tables for pack/unpack +regen/HeaderParser.pm Module used to parse header files +regen/keywords.pl Program to write keywords.h +regen/lib_cleanup.pl Generate lib/.gitignore from MANIFEST +regen/mg_vtable.pl generate mg_vtable.h +regen/miniperlmain.pl generate miniperlmain.c +regen/mk_invlists.pl Generates charclass_invlists.h +regen/mk_PL_charclass.pl Populate the PL_charclass table +regen/mph.pl Generate perfect hashes +regen/op_private Definitions of bits in an OP's op_private field +regen/opcode.pl Opcode header generator +regen/opcodes Opcode data +regen/overload.pl generate overload.h +regen/reentr.pl Reentrant interfaces +regen/regcharclass.pl Generate regcharclass.h from inline data regen/regcharclass_multi_char_folds.pl Generate input for regcharclass.pl -regen/regcomp.pl Builder of regnodes.h -regen/regen_lib.pl Common file routines for generator scripts -regen/uconfig_h.pl generate uconfig.h (requires /bin/sh) -regen/unicode_constants.pl generate unicode_constants.h -regen/warnings.pl Program to write warnings.h and lib/warnings.pm -regen_perly.pl generate perly.{act,h,tab} from perly.y -regexec.c Regular expression evaluator -regexp.h Public declarations for the above -regnodes.h Description of nodes of RE engine -run.c The interpreter loop -runtests.SH A script that generates runtests -sbox32_hash.h SBox hash code (32 Bit SBOX based hash function) -scope.c Scope entry and exit code -scope.h Scope entry and exit header -SECURITY.md Add Security Policy for GitHub -sv.c Scalar value code -sv.h Scalar value header -sv_inline.h Perl_newSV_type and required defs -t/base/cond.t See if conditionals work -t/base/if.t See if if works -t/base/lex.t See if lexical items work -t/base/num.t See if numbers work -t/base/pat.t See if pattern matching works -t/base/rs.t See if record-read works -t/base/term.t See if various terms work -t/base/translate.t See if character set translation works -t/base/while.t See if while work +regen/regcomp.pl Builder of regnodes.h +regen/regen_lib.pl Common file routines for generator scripts +regen/scope_types.pl Regenerate scope_types.h +regen/tidy_embed.pl Program to clean up embed.fnc manually +regen/uconfig_h.pl generate uconfig.h (requires /bin/sh) +regen/unicode_constants.pl generate unicode_constants.h +regen/warnings.pl Program to write warnings.h and lib/warnings.pm +t/base/cond.t See if conditionals work +t/base/if.t See if if works +t/base/lex.t See if lexical items work +t/base/num.t See if numbers work +t/base/pat.t See if pattern matching works +t/base/rs.t See if record-read works +t/base/term.t See if various terms work +t/base/translate.t See if character set translation works +t/base/while.t See if while work t/benchmark/gh7094-speed-up-keys-on-empty-hash.t Benchmark if keys on empty hashes is fast enough -t/bigmem/hash.t Check hashing too large strings throws an exception -t/bigmem/index.t Check that index() handles large offsets -t/bigmem/pos.t Check that pos() handles large offsets -t/bigmem/read.t Check read() handles large offsets -t/bigmem/regexp.t Test regular expressions with large strings -t/bigmem/subst.t Test s/// with large strings -t/bigmem/vec.t Check vec() handles large offsets -t/charset_tools.pl To aid in portable testing across platforms with different character sets -t/cmd/elsif.t See if else-if works -t/cmd/for.t See if for loops work -t/cmd/mod.t See if statement modifiers work -t/cmd/subval.t See if subroutine values work -t/cmd/switch.t See if switch optimizations work -t/comp/bproto.t See if builtins conform to their prototypes -t/comp/cmdopt.t See if command optimization works -t/comp/colon.t See if colons are parsed correctly -t/comp/decl.t See if declarations work -t/comp/filter_exception.t See if $@ survives source filters -t/comp/final_line_num.t See if line numbers are correct at EOF -t/comp/fold.t See if constant folding works -t/comp/form_scope.t See if format scoping works -t/comp/hints.aux Auxiliary file for %^H test -t/comp/hints.t See if %^H works -t/comp/line_debug.t See if @{"_<$file"} works -t/comp/line_debug_0.aux Auxiliary file for @{"_<$file"} test -t/comp/multiline.t See if multiline strings work -t/comp/opsubs.t See if q() etc. are not parsed as functions -t/comp/our.t Tests for our declaration -t/comp/package.t See if packages work -t/comp/package_block.t See if package block syntax works -t/comp/parser.t See if the parser works in edge cases +t/bigmem/hash.t Check hashing too large strings throws an exception +t/bigmem/index.t Check that index() handles large offsets +t/bigmem/pos.t Check that pos() handles large offsets +t/bigmem/read.t Check read() handles large offsets +t/bigmem/regexp.t Test regular expressions with large strings +t/bigmem/subst.t Test s/// with large strings +t/bigmem/vec.t Check vec() handles large offsets +t/charset_tools.pl To aid in portable testing across platforms with different character sets +t/class/class.t See if class declarations work +t/class/construct.t See if class constructors work +t/class/destruct.t See if class destruction works +t/class/field.t See if class field declarations work +t/class/inherit.t See if class inheritance works +t/class/method.t See if class method declarations work +t/class/phasers.t See if class phaser blocks work +t/class/threads.t See if classes work across multiple threads +t/cmd/elsif.t See if else-if works +t/cmd/for.t See if for loops work +t/cmd/mod.t See if statement modifiers work +t/cmd/subval.t See if subroutine values work +t/cmd/switch.t See if switch optimizations work +t/comp/bproto.t See if builtins conform to their prototypes +t/comp/cmdopt.t See if command optimization works +t/comp/colon.t See if colons are parsed correctly +t/comp/decl.t See if declarations work +t/comp/filter_exception.t See if $@ survives source filters +t/comp/final_line_num.t See if line numbers are correct at EOF +t/comp/fold.t See if constant folding works +t/comp/form_scope.t See if format scoping works +t/comp/hints.aux Auxiliary file for %^H test +t/comp/hints.t See if %^H works +t/comp/line_debug.t See if @{"_<$file"} works +t/comp/line_debug_0.aux Auxiliary file for @{"_<$file"} test +t/comp/multiline.t See if multiline strings work +t/comp/opsubs.t See if q() etc. are not parsed as functions +t/comp/our.t Tests for our declaration +t/comp/package.t See if packages work +t/comp/package_block.t See if package block syntax works +t/comp/parser.t See if the parser works in edge cases t/comp/parser_run.t See if parser works in additional edge case -t/comp/proto.t See if function prototypes work -t/comp/redef.t See if we get correct warnings on redefined subs -t/comp/require.t See if require works -t/comp/retainedlines.t See if the debugger can retain eval's lines -t/comp/term.t See if more terms work -t/comp/uproto.t See if the _ prototype works -t/comp/use.t See if pragmata work -t/comp/utf.t See if UTFs work -t/harness Finer diagnostics from test suite -t/io/argv.t See if ARGV stuff works -t/io/binmode.t See if binmode() works -t/io/bom.t See if scripts can start with a byte order mark -t/io/closepid.t See if close works for subprocesses -t/io/crlf.t See if :crlf works -t/io/crlf_through.t See if pipe passes data intact with :crlf -t/io/data.t See if DATA works -t/io/defout.t See if PL_defoutgv works -t/io/dup.t See if >& works right -t/io/eintr.t See if code called during EINTR is safe -t/io/eintr_print.t Test that print is not returning EINTR -t/io/errno.t See if $! is correctly set -t/io/errnosig.t Test case for restoration $! when leaving signal handlers -t/io/fflush.t See if auto-flush on fork/exec/system/qx works -t/io/fs.t See if directory manipulations work -t/io/getcwd.t See if Internals::getcwd is sane -t/io/inplace.t See if inplace editing works -t/io/iofile.t See if we can load IO::File on demand -t/io/iprefix.t See if inplace editing works with prefixes -t/io/layers.t See if PerlIO layers work -t/io/msg.t See if SysV message queues work -t/io/nargv.t See if nested ARGV stuff works -t/io/open.t See if open works -t/io/openpid.t See if open works for subprocesses +t/comp/proto.t See if function prototypes work +t/comp/redef.t See if we get correct warnings on redefined subs +t/comp/require.t See if require works +t/comp/retainedlines.t See if the debugger can retain eval's lines +t/comp/term.t See if more terms work +t/comp/uproto.t See if the _ prototype works +t/comp/use.t See if pragmata work +t/comp/utf.t See if UTFs work +t/harness Finer diagnostics from test suite +t/io/argv.t See if ARGV stuff works +t/io/binmode.t See if binmode() works +t/io/bom.t See if scripts can start with a byte order mark +t/io/closepid.t See if close works for subprocesses +t/io/crlf.t See if :crlf works +t/io/crlf_through.t See if pipe passes data intact with :crlf +t/io/data.t See if DATA works +t/io/defout.t See if PL_defoutgv works +t/io/dup.t See if >& works right +t/io/eintr.t See if code called during EINTR is safe +t/io/eintr_print.t Test that print is not returning EINTR +t/io/errno.t See if $! is correctly set +t/io/errnosig.t Test case for restoration $! when leaving signal handlers +t/io/fflush.t See if auto-flush on fork/exec/system/qx works +t/io/fs.t See if directory manipulations work +t/io/getcwd.t See if Internals::getcwd is sane +t/io/inplace.t See if inplace editing works +t/io/iofile.t See if we can load IO::File on demand +t/io/iprefix.t See if inplace editing works with prefixes +t/io/layers.t See if PerlIO layers work +t/io/msg.t See if SysV message queues work +t/io/nargv.t See if nested ARGV stuff works +t/io/open.t See if open works +t/io/openpid.t See if open works for subprocesses t/io/paragraph_mode.t See if paragraph mode works -t/io/perlio.t See if PerlIO works -t/io/perlio_fail.t See if bad layers fail -t/io/perlio_leaks.t See if PerlIO layers are leaking -t/io/perlio_open.t See if certain special forms of open work -t/io/pipe.t See if secure pipes work -t/io/print.t See if print commands work -t/io/pvbm.t See if PVBMs break IO commands -t/io/read.t See if read works -t/io/say.t See if say works -t/io/sem.t See if SysV semaphores work -t/io/semctl.t See if SysV semaphore semctl works -t/io/shm.t See if SysV shared memory works -t/io/socket.t See if socket functions work -t/io/socketpair.t See if socketpair function works -t/io/tell.t See if file seeking works -t/io/through.t See if pipe passes data intact -t/io/utf8.t See if file seeking works -t/japh/abigail.t Obscure tests -t/lib/CannotParse.pm For test case in op/require_errors.t -t/lib/charnames/alias Tests of "use charnames" with aliases. -t/lib/Cname.pm Test charnames in regexes (op/pat.t) -t/lib/common.pl Helper for lib/{warnings,feature}.t -t/lib/commonsense.t See if configuration meets basic needs -t/lib/Count.pm Helper for t/op/method.t -t/lib/croak.t Test calls to Perl_croak() in the C source. -t/lib/croak/gv Test croak calls from gv.c -t/lib/croak/mg Test croak calls from mg.c -t/lib/croak/op Test croak calls from op.c -t/lib/croak/pp Test croak calls from pp.c -t/lib/croak/pp_ctl Test croak calls from pp_ctl.c -t/lib/croak/pp_hot Test croak calls from pp_hot.c -t/lib/croak/pp_sys Test croak calls from pp_sys.c -t/lib/croak/regcomp Test croak calls from regcomp.c -t/lib/croak/toke Test croak calls from toke.c -t/lib/croak/toke_l1 Test croak calls from toke.c; file is not UTF-8 encoded -t/lib/cygwin.t Builtin cygwin function tests -t/lib/dbmt_common.pl Common functionality for ?DBM_File tests -t/lib/deprecate.t Test deprecate.pm -t/lib/deprecate/Deprecated.pm Deprecated module to test deprecate.pm -t/lib/deprecate/Optionally.pm Optionally deprecated module to test deprecate.pm -t/lib/Devel/nodb.pm Module for t/run/switchd.t -t/lib/Devel/switchd.pm Module for t/run/switchd.t -t/lib/Devel/switchd_empty.pm Module for t/run/switchd.t -t/lib/Devel/switchd_goto.pm Module for t/run/switchd.t -t/lib/feature/api Test API for checking features enabled/disabled +t/io/perlio.t See if PerlIO works +t/io/perlio_fail.t See if bad layers fail +t/io/perlio_leaks.t See if PerlIO layers are leaking +t/io/perlio_open.t See if certain special forms of open work +t/io/pipe.t See if secure pipes work +t/io/print.t See if print commands work +t/io/pvbm.t See if PVBMs break IO commands +t/io/read.t See if read works +t/io/say.t See if say works +t/io/sem.t See if SysV semaphores work +t/io/semctl.t See if SysV semaphore semctl works +t/io/shm.t See if SysV shared memory works +t/io/socket.t See if socket functions work +t/io/socketpair.t See if socketpair function works +t/io/tell.t See if file seeking works +t/io/through.t See if pipe passes data intact +t/io/utf8.t See if file seeking works +t/japh/abigail.t Obscure tests +t/lib/caller/Apack.pm test Module for caller.t and t/op/hook/require.t +t/lib/caller/Bicycle.pm test Module for t/op/hook/require.t (cyclic) +t/lib/caller/Bpack.pm test Module for caller.t and t/op/hook/require.t +t/lib/caller/Cpack.pm test Module for caller.t and t/op/hook/require.t +t/lib/caller/Cycle.pm test Module for t/op/hook/require.t (cyclic) +t/lib/caller/Foo.pm test Module for caller.t and t/op/hook/require.t +t/lib/caller/Tricycle.pm test Module for t/op/hook/require.t (cyclic) +t/lib/CannotParse.pm For test case in op/require_errors.t +t/lib/charnames/alias Tests of "use charnames" with aliases. +t/lib/Cname.pm Test charnames in regexes (op/pat.t) +t/lib/common.pl Helper for lib/{warnings,feature}.t +t/lib/commonsense.t See if configuration meets basic needs +t/lib/Count.pm Helper for t/op/method.t +t/lib/croak.t Test calls to Perl_croak() in the C source. +t/lib/croak/class Test croak calls from class.c +t/lib/croak/gv Test croak calls from gv.c +t/lib/croak/mg Test croak calls from mg.c +t/lib/croak/op Test croak calls from op.c +t/lib/croak/pp Test croak calls from pp.c +t/lib/croak/pp_ctl Test croak calls from pp_ctl.c +t/lib/croak/pp_hot Test croak calls from pp_hot.c +t/lib/croak/pp_sys Test croak calls from pp_sys.c +t/lib/croak/regcomp Test croak calls from regcomp.c +t/lib/croak/toke Test croak calls from toke.c +t/lib/croak/toke_l1 Test croak calls from toke.c; file is not UTF-8 encoded +t/lib/cygwin.t Builtin cygwin function tests +t/lib/dbmt_common.pl Common functionality for ?DBM_File tests +t/lib/deprecate.t Test deprecate.pm +t/lib/deprecate/Deprecated.pm Deprecated module to test deprecate.pm +t/lib/deprecate/Optionally.pm Optionally deprecated module to test deprecate.pm +t/lib/Devel/nodb.pm Module for t/run/switchd.t +t/lib/Devel/switchd.pm Module for t/run/switchd.t +t/lib/Devel/switchd_empty.pm Module for t/run/switchd.t +t/lib/Devel/switchd_goto.pm Module for t/run/switchd.t +t/lib/Dies.pm For test case in op/require_errors.t +t/lib/feature/api Test API for checking features enabled/disabled t/lib/feature/bareword_filehandles Tests for enabling/disabling bareword_filehandles feature -t/lib/feature/bits Tests for feature bit handling -t/lib/feature/bundle Tests for feature bundles -t/lib/feature/implicit Tests for implicit loading of feature.pm -t/lib/feature/indirect Tests for enabling/disabling indirect method calls -t/lib/feature/multidimensional Tests for enabling/disabling $foo{$x, $y} => $foo{join($;, $x, $y)} -t/lib/feature/nonesuch Tests for enabling/disabling nonexistent feature -t/lib/feature/removed Tests for enabling/disabling removed feature -t/lib/feature/say Tests for enabling/disabling say feature -t/lib/feature/switch Tests for enabling/disabling switch feature -t/lib/GH_15109/Apack.pm test Module for caller.t -t/lib/GH_15109/Bpack.pm test Module for caller.t -t/lib/GH_15109/Cpack.pm test Module for caller.t -t/lib/GH_15109/Foo.pm test Module for caller.t -t/lib/h2ph.h Test header file for h2ph -t/lib/h2ph.pht Generated output from h2ph.h by h2ph, for comparison -t/lib/locale/latin1 Part of locale.t in Latin 1 -t/lib/locale/utf8 Part of locale.t in UTF8 -t/lib/mypragma.pm An example user pragma -t/lib/mypragma.t Test the example user pragma -t/lib/no_load.t Test that some modules don't load others -t/lib/overload_fallback.t Test that using overload 2x in a scope doesn't clobber fallback -t/lib/overload_nomethod.t Test that nomethod works as expected -t/lib/proxy_constant_subs.t Test that Proxy Constant Subs behave correctly -t/lib/Sans_mypragma.pm Test module for t/lib/mypragma.t -t/lib/strict/refs Tests of "use strict 'refs'" for strict.t -t/lib/strict/subs Tests of "use strict 'subs'" for strict.t -t/lib/strict/vars Tests of "use strict 'vars'" for strict.t -t/lib/subs/subs Tests of "use subs" -t/lib/test_require.pm A test file for t/op/inccode.t -t/lib/test_use.pm A test pragma for t/comp/use.t -t/lib/test_use_14937.pm A test pragma for t/comp/use.t -t/lib/universal.t Tests for functions in universal.c -t/lib/warnings/1global Tests of global warnings for warnings.t -t/lib/warnings/2use Tests for "use warnings" for warnings.t -t/lib/warnings/3both Tests for interaction of $^W and "use warnings" -t/lib/warnings/4lint Tests for -W switch -t/lib/warnings/5nolint Tests for -X switch -t/lib/warnings/6default Tests default warnings -t/lib/warnings/7fatal Tests fatal warnings -t/lib/warnings/8signal Tests warnings + __WARN__ and __DIE__ -t/lib/warnings/9enabled Tests warnings -t/lib/warnings/9uninit Tests "Use of uninitialized" warnings -t/lib/warnings/av Tests for av.c for warnings.t -t/lib/warnings/builtin Tests for builtin.c for warnings.t -t/lib/warnings/doio Tests for doio.c for warnings.t -t/lib/warnings/gv Tests for gv.c for warnings.t -t/lib/warnings/hv Tests for hv.c for warnings.t -t/lib/warnings/malloc Tests for malloc.c for warnings.t -t/lib/warnings/mg Tests for mg.c for warnings.t -t/lib/warnings/op Tests for op.c for warnings.t -t/lib/warnings/pad Tests for pad.c for warnings.t -t/lib/warnings/perl Tests for perl.c for warnings.t -t/lib/warnings/perlio Tests for perlio.c for warnings.t -t/lib/warnings/pp Tests for pp.c for warnings.t -t/lib/warnings/pp_ctl Tests for pp_ctl.c for warnings.t -t/lib/warnings/pp_hot Tests for pp_hot.c for warnings.t -t/lib/warnings/pp_pack Tests for pp_pack.c for warnings.t -t/lib/warnings/pp_sys Tests for pp_sys.c for warnings.t -t/lib/warnings/regcomp Tests for regcomp.c for warnings.t -t/lib/warnings/regexec Tests for regexec.c for warnings.t -t/lib/warnings/run Tests for run.c for warnings.t -t/lib/warnings/sv Tests for sv.c for warnings.t -t/lib/warnings/taint Tests for taint.c for warnings.t -t/lib/warnings/toke Tests for toke.c for warnings.t -t/lib/warnings/universal Tests for universal.c for warnings.t -t/lib/warnings/utf8 Tests for utf8.c for warnings.t -t/lib/warnings/util Tests for util.c for warnings.t -t/loc_tools.pl Common functions for finding platform's locales -t/mro/basic.t mro tests -t/mro/basic_01_c3.t mro tests -t/mro/basic_01_c3_utf8.t utf8 mro tests -t/mro/basic_01_dfs.t mro tests -t/mro/basic_01_dfs_utf8.t utf8 mro tests -t/mro/basic_02_c3.t mro tests -t/mro/basic_02_c3_utf8.t utf8 mro tests -t/mro/basic_02_dfs.t mro tests -t/mro/basic_02_dfs_utf8.t utf8 mro tests -t/mro/basic_03_c3.t mro tests -t/mro/basic_03_c3_utf8.t utf8 mro tests -t/mro/basic_03_dfs.t mro tests -t/mro/basic_03_dfs_utf8.t utf8 mro tests -t/mro/basic_04_c3.t mro tests -t/mro/basic_04_c3_utf8.t utf8 mro tests -t/mro/basic_04_dfs.t mro tests -t/mro/basic_04_dfs_utf8.t utf8 mro tests -t/mro/basic_05_c3.t mro tests -t/mro/basic_05_c3_utf8.t utf8 mro tests -t/mro/basic_05_dfs.t mro tests -t/mro/basic_05_dfs_utf8.t utf8 mro tests -t/mro/basic_utf8.t utf8 mro tests -t/mro/c3_with_overload.t mro tests -t/mro/c3_with_overload_utf8.t utf8 mro tests -t/mro/complex_c3.t mro tests -t/mro/complex_c3_utf8.t utf8 mro tests -t/mro/complex_dfs.t mro tests -t/mro/complex_dfs_utf8.t utf8 mro tests -t/mro/dbic_c3.t mro tests -t/mro/dbic_c3_utf8.t utf8 mro tests -t/mro/dbic_dfs.t mro tests -t/mro/dbic_dfs_utf8.t utf8 mro tests -t/mro/inconsistent_c3.t mro tests -t/mro/inconsistent_c3_utf8.t utf8 mro tests -t/mro/isa_aliases.t tests for shared @ISA arrays -t/mro/isa_aliases_utf8.t utf8 mro tests -t/mro/isa_c3.t test for optimisatised mro_get_linear_isa_c3 -t/mro/isa_c3_utf8.t utf8 mro tests -t/mro/isa_dfs.t test for optimisatised mro_get_linear_isa_dfs -t/mro/isa_dfs_utf8.t utf8 mro tests -t/mro/isarev.t PL_isarev/mro::get_isarev tests -t/mro/isarev_utf8.t utf8 mro tests -t/mro/method_caching.t mro tests -t/mro/method_caching_utf8.t utf8 mro tests -t/mro/next_edgecases.t mro tests -t/mro/next_edgecases_utf8.t utf8 mro tests -t/mro/next_goto.t mro tests -t/mro/next_goto_utf8.t utf8 mro tests -t/mro/next_inanon.t mro tests -t/mro/next_inanon_utf8.t utf8 mro tests -t/mro/next_ineval.t mro tests -t/mro/next_ineval_utf8.t utf8 mro tests -t/mro/next_method.t mro tests -t/mro/next_method_utf8.t utf8 mro tests -t/mro/next_NEXT.t mro tests -t/mro/next_NEXT_utf8.t utf8 mro tests -t/mro/next_skip.t mro tests -t/mro/next_skip_utf8.t utf8 mro tests -t/mro/overload_c3.t mro tests -t/mro/overload_c3_utf8.t utf8 mro tests -t/mro/overload_dfs.t mro tests -t/mro/package_aliases.t mro tests -t/mro/package_aliases_utf8.t utf8 mro tests -t/mro/pkg_gen.t mro tests -t/mro/pkg_gen_utf8.t utf8 mro tests -t/mro/recursion_c3.t mro tests -t/mro/recursion_c3_utf8.t utf8 mro tests -t/mro/recursion_dfs.t mro tests -t/mro/recursion_dfs_utf8.t utf8 mro tests -t/mro/vulcan_c3.t mro tests -t/mro/vulcan_c3_utf8.t utf8 mro tests -t/mro/vulcan_dfs.t mro tests -t/mro/vulcan_dfs_utf8.t utf8 mro tests -t/op/64bitint.t See if 64 bit integers work -t/op/aassign.t test list assign -t/op/alarm.t See if alarm works -t/op/anonconst.t See if :const works -t/op/anonsub.t See if anonymous subroutines work -t/op/append.t See if . works -t/op/args.t See if operations on @_ work -t/op/arith2.t See if arithmetic works -t/op/array.t See if array operations work -t/op/assignwarn.t See if OP= operators warn correctly for undef targets -t/op/attrhand.t See if attribute handlers work -t/op/attrproto.t See if the prototype attribute works -t/op/attrs.t See if attributes on declarations work -t/op/auto.t See if autoincrement et all work -t/op/avhv.t See if pseudo-hashes work -t/op/bless.t See if bless works -t/op/blocks.t See if BEGIN and friends work -t/op/bool.t Check misc details of boolean values -t/op/bop.t See if bitops work -t/op/caller.pl Tests shared between caller.t and XS op.t -t/op/caller.t See if caller() works -t/op/catch.t See if catching exception works -t/op/chars.t See if character escapes work -t/op/chdir.t See if chdir works -t/op/chop.t See if chop works -t/op/chr.t See if chr works -t/op/closure.t See if closures work -t/op/closure_test.pl Extra file for closure.t -t/op/cmpchain.t See if comparison chaining works -t/op/concat2.t Tests too complex for concat.t -t/op/cond.t See if conditional expressions work -t/op/const-optree.t Tests for sub(){...} becoming constant -t/op/context.t See if context propagation works -t/op/coreamp.t Test &foo() calls for CORE subs -t/op/coresubs.t Generic tests for CORE subs -t/op/cproto.t Check builtin prototypes -t/op/crypt.t See if crypt works -t/op/current_sub.t __SUB__ tests -t/op/dbm.t See if dbmopen/dbmclose work -t/op/decl-refs.t See if my \$foo works -t/op/defer.t See if defer blocks work -t/op/defined.t See if defined() edge cases work -t/op/defins.t See if auto-insert of defined() works -t/op/delete.t See if delete works -t/op/die.t See if die works -t/op/die_except.t See if die/eval avoids $@ clobberage -t/op/die_exit.t See if die and exit status interaction works -t/op/die_keeperr.t See if G_KEEPERR works for destructors -t/op/die_unwind.t Check die/eval early-$@ backcompat hack -t/op/do.t See if subroutines work -t/op/dor.t See if defined-or (//) works -t/op/dump.t See if dump works. -t/op/each.t See if hash iterators work -t/op/each_array.t See if array iterators work -t/op/eval.t See if eval operator works -t/op/evalbytes.t See if evalbytes operator works -t/op/exec.t See if exec, system and qx work -t/op/exists_sub.t See if exists(&sub) works -t/op/exp.t See if math functions work -t/op/fh.t See if filehandles work -t/op/filehandle.t Tests for https://github.com/Perl/perl5/issues/10133 -t/op/filetest.t See if file tests work -t/op/filetest_stack_ok.t See if file tests leave their argument on the stack -t/op/filetest_t.t See if -t file test works -t/op/flip.t See if range operator works -t/op/for.t See if for loops work -t/op/for-many.t See if n-at-a-time for loops work -t/op/fork.t See if fork works -t/op/fresh_perl_utf8.t UTF8 tests for pads and gvs -t/op/getpid.t See if $$ and getppid work with threads -t/op/getppid.t See if getppid works -t/op/glob.t See if <*> works -t/op/gmagic.t See if GMAGIC works -t/op/goto.t See if goto works -t/op/goto_xs.t See if "goto &sub" works on XSUBs -t/op/grent.t See if getgr*() functions work -t/op/grep.t See if grep() and map() work -t/op/groups.t See if $( works -t/op/gv.t See if typeglobs work -t/op/hash.t See if the complexity attackers are repelled -t/op/hash-clear-placeholders.t Tests for corner cases in S_clear_placeholders -t/op/hash-rt85026.t See if hash iteration/deletion works -t/op/hashassign.t See if hash assignments work -t/op/hashwarn.t See if warnings for bad hash assignments work -t/op/heredoc.t See if heredoc edge and corner cases work -t/op/hexfp.t See if hexadecimal float literals work -t/op/inc.t See if inc/dec of integers near 32 bit limit work -t/op/inccode.t See if coderefs work in @INC -t/op/inccode-tie.t See if tie to @INC works -t/op/incfilter.t See if the source filters in coderef-in-@INC work -t/op/index.t See if index works -t/op/index_thr.t See if index works in another thread -t/op/infnan.t See if inf/nan work -t/op/int.t See if int works -t/op/isa.t See if isa works -t/op/join.t See if join works -t/op/kill0.t See if kill works -t/op/kill0_child Process tree script that is kill()ed -t/op/kvaslice.t See if index/value array slices work -t/op/kvhslice.t See if key/value hash slices work -t/op/lc.t See if lc, uc, lcfirst, ucfirst, quotemeta work -t/op/leaky-magic.t See whether vars' magic leaks into packages -t/op/length.t See if length works -t/op/lex.t Tests too complex for t/base/lex.t -t/op/lex_assign.t See if ops involving lexicals or pad temps work -t/op/lexsub.t See if lexical subroutines work -t/op/lfs.t See if large files work for perlio -t/op/list.t See if lists and list slices work -t/op/local.t See if local works -t/op/localref.t See if local ${deref} works -t/op/lock.t Tests for lock args & retval (no threads) -t/op/loopctl.t See if next/last/redo work -t/op/lop.t See if logical operators work -t/op/lvref.t See if aliasing via references works -t/op/magic.t See if magic variables work -t/op/magic-27839.t Test for #27839, skipped for minitest -t/op/method.t See if method calls work -t/op/mkdir.t See if mkdir works -t/op/multideref.t See if "$a[0]{foo}[$i]{$k}" etc works -t/op/my.t See if lexical scoping works -t/op/my_stash.t See if my Package works -t/op/mydef.t See if "my $_" works -t/op/negate.t See if unary minus works -t/op/not.t See if not works -t/op/numconvert.t See if accessing fields does not change numeric values -t/op/numify.t See if string-to-number conversion works -t/op/numify_chkflags.t See if string-to-number conversion behaves correctly -t/op/oct.t See if oct and hex work -t/op/or.t See if || works in weird situations -t/op/ord.t See if ord works -t/op/overload_integer.t See if overload::constant for integer works after "use". -t/op/override.t See if operator overriding works -t/op/pack.t See if pack and unpack work -t/op/packagev.t See if package VERSION work -t/op/pos.t See if pos works -t/op/postfixderef.t See if ->$* ->@[ et al work -t/op/pow.t See if ** works -t/op/print.t See if print works -t/op/protowarn.t See if the illegalproto warnings work -t/op/push.t See if push and pop work -t/op/pwent.t See if getpw*() functions work -t/op/qr.t See if qr works -t/op/quotemeta.t See if quotemeta works -t/op/rand.t See if rand works -t/op/range.t See if .. works -t/op/read.t See if read() works -t/op/readdir.t See if readdir() works -t/op/readline.t See if <> / readline / rcatline work -t/op/recurse.t See if deep recursion works -t/op/ref.t See if refs and objects work -t/op/repeat.t See if x operator works -t/op/require_37033.t See if require always closes rsfp -t/op/require_errors.t See if errors from require are reported correctly -t/op/require_override.t See if require handles no argument properly -t/op/reset.t See if reset operator works -t/op/reverse.t See if reverse operator works -t/op/rt119311.t Test bug #119311 (die/DESTROY/recursion) -t/op/runlevel.t See if die() works from perl_call_*() -t/op/select.t See if 0- and 1-argument select works -t/op/setpgrpstack.t See if setpgrp works -t/op/sigdispatch.t See if signals are always dispatched -t/op/signame_canonical.t See if duplicate signal names always use the canonical name when the handler is invoked. -t/op/signatures.t See if sub signatures work -t/op/sigsystem.t See if system and SIGCHLD handlers play together nicely -t/op/sleep.t See if sleep works -t/op/smartkve.t See if smart deref for keys/values/each works -t/op/smartmatch.t See if the ~~ operator works -t/op/sort.t See if sort works -t/op/splice.t See if splice works -t/op/split.t See if split works -t/op/split_unicode.t Test split /\s/ and Unicode -t/op/sprintf.t See if sprintf works -t/op/sprintf2.t See if sprintf works -t/op/srand.t See if srand works -t/op/sselect.t See if 4 argument select works -t/op/stash.t See if %:: stashes work -t/op/stash_parse_gv.t See if parse_gv_stash_name works -t/op/stat.t See if stat works -t/op/stat_errors.t See if stat and file tests handle threshold errors -t/op/state.t See if state variables work -t/op/study.t See if study works -t/op/studytied.t See if study works with tied scalars -t/op/sub.t See if subroutines work -t/op/sub_lval.t See if lvalue subroutines work -t/op/substr.t See if substr works -t/op/substr_thr.t See if substr works in another thread -t/op/svflags.t See if POK is set as expected. -t/op/svleak.pl Test file for svleak.t -t/op/svleak.t See if stuff leaks SVs -t/op/switch.t See if switches (given/when) work -t/op/symbolcache.t See if undef/delete works on stashes with functions -t/op/syscall_emulator.t Tests that syscall works via the emulator -t/op/sysio.t See if sysread and syswrite work -t/op/taint.t See if tainting works -t/op/threads.t Misc. tests for perl features with threads -t/op/threads-dirh.t Test interaction of threads and dir handles -t/op/threads_create.pl Ancillary file for t/op/threads.t -t/op/tie.t See if tie/untie functions work -t/op/tie_fetch_count.t See if FETCH is only called once on tied variables -t/op/tiearray.t See if tie for arrays works -t/op/tiehandle.t See if tie for handles works -t/op/tiehash.t Tests for tied hashes using test.pl -t/op/time.t See if time functions work -t/op/time_loop.t Test that very large values don't hang gmtime and localtime. -t/op/tr.t See if tr works -t/op/tr_latin1.t See if tr works, but file isn't encoded in UTF-8 -t/op/try.t See if try works -t/op/undef.t See if undef works -t/op/universal.t See if UNIVERSAL class works -t/op/unlink.t See if unlink works -t/op/unshift.t See if unshift works -t/op/upgrade.t See if upgrading and assigning scalars works -t/op/utf8cache.t Tests malfunctions of utf8 cache -t/op/utf8decode.t See if UTF-8 decoding works -t/op/utf8magic.t See if utf8:: functions handle magic variables -t/op/utfhash.t See if utf8 keys in hashes behave -t/op/utftaint.t See if utf8 and taint work together -t/op/vec.t See if vectors work -t/op/ver.t See if v-strings and the %v format flag work -t/op/waitpid.t See if waitpid works -t/op/wantarray.t See if wantarray works -t/op/warn.t See if warn works -t/op/while.t See if while loops work -t/op/write.t See if write works (formats work) -t/op/yadayada.t See if ... works +t/lib/feature/bits Tests for feature bit handling +t/lib/feature/bundle Tests for feature bundles +t/lib/feature/implicit Tests for implicit loading of feature.pm +t/lib/feature/indirect Tests for enabling/disabling indirect method calls +t/lib/feature/multidimensional Tests for enabling/disabling $foo{$x, $y} => $foo{join($;, $x, $y)} +t/lib/feature/nonesuch Tests for enabling/disabling nonexistent feature +t/lib/feature/removed Tests for enabling/disabling removed feature +t/lib/feature/say Tests for enabling/disabling say feature +t/lib/feature/switch Tests for enabling/disabling switch feature +t/lib/h2ph.h Test header file for h2ph +t/lib/h2ph.pht Generated output from h2ph.h by h2ph, for comparison +t/lib/locale/latin1 Part of locale.t in Latin 1 +t/lib/locale/utf8 Part of locale.t in UTF8 +t/lib/mypragma.pm An example user pragma +t/lib/mypragma.t Test the example user pragma +t/lib/no_load.t Test that some modules don't load others +t/lib/overload_fallback.t Test that using overload 2x in a scope doesn't clobber fallback +t/lib/overload_nomethod.t Test that nomethod works as expected +t/lib/proxy_constant_subs.t Test that Proxy Constant Subs behave correctly +t/lib/Sans_mypragma.pm Test module for t/lib/mypragma.t +t/lib/strict/refs Tests of "use strict 'refs'" for strict.t +t/lib/strict/subs Tests of "use strict 'subs'" for strict.t +t/lib/strict/vars Tests of "use strict 'vars'" for strict.t +t/lib/subs/subs Tests of "use subs" +t/lib/test_require.pm A test file for t/op/inccode.t +t/lib/test_use.pm A test pragma for t/comp/use.t +t/lib/test_use_14937.pm A test pragma for t/comp/use.t +t/lib/universal.t Tests for functions in universal.c +t/lib/warnings/1global Tests of global warnings for warnings.t +t/lib/warnings/2use Tests for "use warnings" for warnings.t +t/lib/warnings/3both Tests for interaction of $^W and "use warnings" +t/lib/warnings/4lint Tests for -W switch +t/lib/warnings/5nolint Tests for -X switch +t/lib/warnings/6default Tests default warnings +t/lib/warnings/7fatal Tests fatal warnings +t/lib/warnings/8signal Tests warnings + __WARN__ and __DIE__ +t/lib/warnings/9enabled Tests warnings +t/lib/warnings/9uninit Tests "Use of uninitialized" warnings +t/lib/warnings/av Tests for av.c for warnings.t +t/lib/warnings/builtin Tests for builtin.c for warnings.t +t/lib/warnings/class Tests for class.c for warnings.t +t/lib/warnings/doio Tests for doio.c for warnings.t +t/lib/warnings/gv Tests for gv.c for warnings.t +t/lib/warnings/hv Tests for hv.c for warnings.t +t/lib/warnings/malloc Tests for malloc.c for warnings.t +t/lib/warnings/mg Tests for mg.c for warnings.t +t/lib/warnings/op Tests for op.c for warnings.t +t/lib/warnings/pad Tests for pad.c for warnings.t +t/lib/warnings/perl Tests for perl.c for warnings.t +t/lib/warnings/perlio Tests for perlio.c for warnings.t +t/lib/warnings/pp Tests for pp.c for warnings.t +t/lib/warnings/pp_ctl Tests for pp_ctl.c for warnings.t +t/lib/warnings/pp_hot Tests for pp_hot.c for warnings.t +t/lib/warnings/pp_pack Tests for pp_pack.c for warnings.t +t/lib/warnings/pp_sys Tests for pp_sys.c for warnings.t +t/lib/warnings/regcomp Tests for regcomp.c for warnings.t +t/lib/warnings/regexec Tests for regexec.c for warnings.t +t/lib/warnings/run Tests for run.c for warnings.t +t/lib/warnings/sv Tests for sv.c for warnings.t +t/lib/warnings/taint Tests for taint.c for warnings.t +t/lib/warnings/toke Tests for toke.c for warnings.t +t/lib/warnings/universal Tests for universal.c for warnings.t +t/lib/warnings/utf8 Tests for utf8.c for warnings.t +t/lib/warnings/util Tests for util.c for warnings.t +t/loc_tools.pl Common functions for finding platform's locales +t/mro/basic.t mro tests +t/mro/basic_01_c3.t mro tests +t/mro/basic_01_c3_utf8.t utf8 mro tests +t/mro/basic_01_dfs.t mro tests +t/mro/basic_01_dfs_utf8.t utf8 mro tests +t/mro/basic_02_c3.t mro tests +t/mro/basic_02_c3_utf8.t utf8 mro tests +t/mro/basic_02_dfs.t mro tests +t/mro/basic_02_dfs_utf8.t utf8 mro tests +t/mro/basic_03_c3.t mro tests +t/mro/basic_03_c3_utf8.t utf8 mro tests +t/mro/basic_03_dfs.t mro tests +t/mro/basic_03_dfs_utf8.t utf8 mro tests +t/mro/basic_04_c3.t mro tests +t/mro/basic_04_c3_utf8.t utf8 mro tests +t/mro/basic_04_dfs.t mro tests +t/mro/basic_04_dfs_utf8.t utf8 mro tests +t/mro/basic_05_c3.t mro tests +t/mro/basic_05_c3_utf8.t utf8 mro tests +t/mro/basic_05_dfs.t mro tests +t/mro/basic_05_dfs_utf8.t utf8 mro tests +t/mro/basic_utf8.t utf8 mro tests +t/mro/c3_with_overload.t mro tests +t/mro/c3_with_overload_utf8.t utf8 mro tests +t/mro/complex_c3.t mro tests +t/mro/complex_c3_utf8.t utf8 mro tests +t/mro/complex_dfs.t mro tests +t/mro/complex_dfs_utf8.t utf8 mro tests +t/mro/dbic_c3.t mro tests +t/mro/dbic_c3_utf8.t utf8 mro tests +t/mro/dbic_dfs.t mro tests +t/mro/dbic_dfs_utf8.t utf8 mro tests +t/mro/inconsistent_c3.t mro tests +t/mro/inconsistent_c3_utf8.t utf8 mro tests +t/mro/isa_aliases.t tests for shared @ISA arrays +t/mro/isa_aliases_utf8.t utf8 mro tests +t/mro/isa_c3.t test for optimisatised mro_get_linear_isa_c3 +t/mro/isa_c3_utf8.t utf8 mro tests +t/mro/isa_dfs.t test for optimisatised mro_get_linear_isa_dfs +t/mro/isa_dfs_utf8.t utf8 mro tests +t/mro/isarev.t PL_isarev/mro::get_isarev tests +t/mro/isarev_utf8.t utf8 mro tests +t/mro/method_caching.t mro tests +t/mro/method_caching_utf8.t utf8 mro tests +t/mro/next_edgecases.t mro tests +t/mro/next_edgecases_utf8.t utf8 mro tests +t/mro/next_goto.t mro tests +t/mro/next_goto_utf8.t utf8 mro tests +t/mro/next_inanon.t mro tests +t/mro/next_inanon_utf8.t utf8 mro tests +t/mro/next_ineval.t mro tests +t/mro/next_ineval_utf8.t utf8 mro tests +t/mro/next_method.t mro tests +t/mro/next_method_utf8.t utf8 mro tests +t/mro/next_NEXT.t mro tests +t/mro/next_NEXT_utf8.t utf8 mro tests +t/mro/next_skip.t mro tests +t/mro/next_skip_utf8.t utf8 mro tests +t/mro/overload_c3.t mro tests +t/mro/overload_c3_utf8.t utf8 mro tests +t/mro/overload_dfs.t mro tests +t/mro/package_aliases.t mro tests +t/mro/package_aliases_utf8.t utf8 mro tests +t/mro/pkg_gen.t mro tests +t/mro/pkg_gen_utf8.t utf8 mro tests +t/mro/recursion_c3.t mro tests +t/mro/recursion_c3_utf8.t utf8 mro tests +t/mro/recursion_dfs.t mro tests +t/mro/recursion_dfs_utf8.t utf8 mro tests +t/mro/vulcan_c3.t mro tests +t/mro/vulcan_c3_utf8.t utf8 mro tests +t/mro/vulcan_dfs.t mro tests +t/mro/vulcan_dfs_utf8.t utf8 mro tests +t/op/64bitint.t See if 64 bit integers work +t/op/aassign.t test list assign +t/op/alarm.t See if alarm works +t/op/anonconst.t See if :const works +t/op/anonsub.t See if anonymous subroutines work +t/op/append.t See if . works +t/op/args.t See if operations on @_ work +t/op/arith2.t See if arithmetic works +t/op/array.t See if array operations work +t/op/assignwarn.t See if OP= operators warn correctly for undef targets +t/op/attrhand.t See if attribute handlers work +t/op/attrproto.t See if the prototype attribute works +t/op/attrs.t See if attributes on declarations work +t/op/auto.t See if autoincrement et all work +t/op/avhv.t See if pseudo-hashes work +t/op/bless.t See if bless works +t/op/blocks.t See if BEGIN and friends work +t/op/bool.t Check misc details of boolean values +t/op/bop.t See if bitops work +t/op/caller.pl Tests shared between caller.t and XS op.t +t/op/caller.t See if caller() works +t/op/catch.t See if catching exception works +t/op/chars.t See if character escapes work +t/op/chdir.t See if chdir works +t/op/chop.t See if chop works +t/op/chr.t See if chr works +t/op/closure.t See if closures work +t/op/closure_test.pl Extra file for closure.t +t/op/cmpchain.t See if comparison chaining works +t/op/concat2.t Tests too complex for concat.t +t/op/cond.t See if conditional expressions work +t/op/const-optree.t Tests for sub(){...} becoming constant +t/op/context.t See if context propagation works +t/op/coreamp.t Test &foo() calls for CORE subs +t/op/coresubs.t Generic tests for CORE subs +t/op/cproto.t Check builtin prototypes +t/op/crypt.t See if crypt works +t/op/current_sub.t __SUB__ tests +t/op/dbm.t See if dbmopen/dbmclose work +t/op/decl-refs.t See if my \$foo works +t/op/defer.t See if defer blocks work +t/op/defined.t See if defined() edge cases work +t/op/defins.t See if auto-insert of defined() works +t/op/delete.t See if delete works +t/op/die.t See if die works +t/op/die_except.t See if die/eval avoids $@ clobberage +t/op/die_exit.t See if die and exit status interaction works +t/op/die_keeperr.t See if G_KEEPERR works for destructors +t/op/die_unwind.t Check die/eval early-$@ backcompat hack +t/op/do.t See if subroutines work +t/op/dor.t See if defined-or (//) works +t/op/dump.t See if dump works. +t/op/each.t See if hash iterators work +t/op/each_array.t See if array iterators work +t/op/eval.t See if eval operator works +t/op/evalbytes.t See if evalbytes operator works +t/op/exec.t See if exec, system and qx work +t/op/exists_sub.t See if exists(&sub) works +t/op/exp.t See if math functions work +t/op/fh.t See if filehandles work +t/op/filehandle.t Tests for https://github.com/Perl/perl5/issues/10133 +t/op/filetest.t See if file tests work +t/op/filetest_stack_ok.t See if file tests leave their argument on the stack +t/op/filetest_t.t See if -t file test works +t/op/flip.t See if range operator works +t/op/for.t See if for loops work +t/op/for-many.t See if n-at-a-time for loops work +t/op/fork.t See if fork works +t/op/fresh_perl_utf8.t UTF8 tests for pads and gvs +t/op/getpid.t See if $$ and getppid work with threads +t/op/getppid.t See if getppid works +t/op/glob.t See if <*> works +t/op/gmagic.t See if GMAGIC works +t/op/goto.t See if goto works +t/op/goto_xs.t See if "goto &sub" works on XSUBs +t/op/grent.t See if getgr*() functions work +t/op/grep.t See if grep() and map() work +t/op/groups.t See if $( works +t/op/gv.t See if typeglobs work +t/op/hash.t See if the complexity attackers are repelled +t/op/hash-clear-placeholders.t Tests for corner cases in S_clear_placeholders +t/op/hash-rt85026.t See if hash iteration/deletion works +t/op/hashassign.t See if hash assignments work +t/op/hashwarn.t See if warnings for bad hash assignments work +t/op/heredoc.t See if heredoc edge and corner cases work +t/op/hexfp.t See if hexadecimal float literals work +t/op/hook/require.t See if require hooks work properly. +t/op/inc.t See if inc/dec of integers near 32 bit limit work +t/op/inccode.t See if coderefs work in @INC +t/op/inccode-tie.t See if tie to @INC works +t/op/incfilter.t See if the source filters in coderef-in-@INC work +t/op/index.t See if index works +t/op/index_thr.t See if index works in another thread +t/op/infnan.t See if inf/nan work +t/op/int.t See if int works +t/op/isa.t See if isa works +t/op/join.t See if join works +t/op/kill0.t See if kill works +t/op/kill0_child Process tree script that is kill()ed +t/op/kvaslice.t See if index/value array slices work +t/op/kvhslice.t See if key/value hash slices work +t/op/lc.t See if lc, uc, lcfirst, ucfirst, quotemeta work +t/op/leaky-magic.t See whether vars' magic leaks into packages +t/op/length.t See if length works +t/op/lex.t Tests too complex for t/base/lex.t +t/op/lex_assign.t See if ops involving lexicals or pad temps work +t/op/lexsub.t See if lexical subroutines work +t/op/lfs.t See if large files work for perlio +t/op/list.t See if lists and list slices work +t/op/local.t See if local works +t/op/localref.t See if local ${deref} works +t/op/lock.t Tests for lock args & retval (no threads) +t/op/loopctl.t See if next/last/redo work +t/op/lop.t See if logical operators work +t/op/lvref.t See if aliasing via references works +t/op/magic.t See if magic variables work +t/op/magic-27839.t Test for #27839, skipped for minitest +t/op/method.t See if method calls work +t/op/mkdir.t See if mkdir works +t/op/multideref.t See if "$a[0]{foo}[$i]{$k}" etc works +t/op/my.t See if lexical scoping works +t/op/my_stash.t See if my Package works +t/op/mydef.t See if "my $_" works +t/op/negate.t See if unary minus works +t/op/not.t See if not works +t/op/numconvert.t See if accessing fields does not change numeric values +t/op/numify.t See if string-to-number conversion works +t/op/numify_chkflags.t See if string-to-number conversion behaves correctly +t/op/oct.t See if oct and hex work +t/op/or.t See if || works in weird situations +t/op/ord.t See if ord works +t/op/overload_integer.t See if overload::constant for integer works after "use". +t/op/override.t See if operator overriding works +t/op/pack.t See if pack and unpack work +t/op/packagev.t See if package VERSION work +t/op/pos.t See if pos works +t/op/postfixderef.t See if ->$* ->@[ et al work +t/op/pow.t See if ** works +t/op/print.t See if print works +t/op/protowarn.t See if the illegalproto warnings work +t/op/push.t See if push and pop work +t/op/pwent.t See if getpw*() functions work +t/op/qr.t See if qr works +t/op/quotemeta.t See if quotemeta works +t/op/rand.t See if rand works +t/op/range.t See if .. works +t/op/read.t See if read() works +t/op/readdir.t See if readdir() works +t/op/readline.t See if <> / readline / rcatline work +t/op/recurse.t See if deep recursion works +t/op/ref.t See if refs and objects work +t/op/repeat.t See if x operator works +t/op/require_37033.t See if require always closes rsfp +t/op/require_errors.t See if errors from require are reported correctly +t/op/require_gh20577.t Make sure updating %INC from an INC hook doesnt break @INC +t/op/require_override.t See if require handles no argument properly +t/op/reset.t See if reset operator works +t/op/reverse.t See if reverse operator works +t/op/rt119311.t Test bug #119311 (die/DESTROY/recursion) +t/op/runlevel.t See if die() works from perl_call_*() +t/op/select.t See if 0- and 1-argument select works +t/op/setpgrpstack.t See if setpgrp works +t/op/sigdispatch.t See if signals are always dispatched +t/op/signame_canonical.t See if duplicate signal names always use the canonical name when the handler is invoked. +t/op/signatures.t See if sub signatures work +t/op/sigsystem.t See if system and SIGCHLD handlers play together nicely +t/op/sleep.t See if sleep works +t/op/smartkve.t See if smart deref for keys/values/each works +t/op/smartmatch.t See if the ~~ operator works +t/op/sort.t See if sort works +t/op/splice.t See if splice works +t/op/split.t See if split works +t/op/split_unicode.t Test split /\s/ and Unicode +t/op/sprintf.t See if sprintf works +t/op/sprintf2.t See if sprintf works +t/op/srand.t See if srand works +t/op/sselect.t See if 4 argument select works +t/op/stash.t See if %:: stashes work +t/op/stash_parse_gv.t See if parse_gv_stash_name works +t/op/stat.t See if stat works +t/op/stat_errors.t See if stat and file tests handle threshold errors +t/op/state.t See if state variables work +t/op/study.t See if study works +t/op/studytied.t See if study works with tied scalars +t/op/sub.t See if subroutines work +t/op/sub_lval.t See if lvalue subroutines work +t/op/substr.t See if substr works +t/op/substr_thr.t See if substr works in another thread +t/op/svflags.t See if POK is set as expected. +t/op/svleak.pl Test file for svleak.t +t/op/svleak.t See if stuff leaks SVs +t/op/switch.t See if switches (given/when) work +t/op/symbolcache.t See if undef/delete works on stashes with functions +t/op/sysio.t See if sysread and syswrite work +t/op/taint.t See if tainting works +t/op/threads.t Misc. tests for perl features with threads +t/op/threads-dirh.t Test interaction of threads and dir handles +t/op/threads_create.pl Ancillary file for t/op/threads.t +t/op/tie.t See if tie/untie functions work +t/op/tie_fetch_count.t See if FETCH is only called once on tied variables +t/op/tiearray.t See if tie for arrays works +t/op/tiehandle.t See if tie for handles works +t/op/tiehash.t Tests for tied hashes using test.pl +t/op/time.t See if time functions work +t/op/time_loop.t Test that very large values don't hang gmtime and localtime. +t/op/tr.t See if tr works +t/op/tr_latin1.t See if tr works, but file isn't encoded in UTF-8 +t/op/try.t See if try works +t/op/undef.t See if undef works +t/op/universal.t See if UNIVERSAL class works +t/op/unlink.t See if unlink works +t/op/unshift.t See if unshift works +t/op/upgrade.t See if upgrading and assigning scalars works +t/op/utf8cache.t Tests malfunctions of utf8 cache +t/op/utf8decode.t See if UTF-8 decoding works +t/op/utf8magic.t See if utf8:: functions handle magic variables +t/op/utfhash.t See if utf8 keys in hashes behave +t/op/utftaint.t See if utf8 and taint work together +t/op/vec.t See if vectors work +t/op/ver.t See if v-strings and the %v format flag work +t/op/waitpid.t See if waitpid works +t/op/wantarray.t See if wantarray works +t/op/warn.t See if warn works +t/op/while.t See if while loops work +t/op/write.t See if write works (formats work) +t/op/yadayada.t See if ... works t/opbasic/arith.t See if arithmetic works -t/opbasic/cmp.t See if the various string and numeric compare work +t/opbasic/cmp.t See if the various string and numeric compare work t/opbasic/concat.t See if string concatenation works -t/opbasic/magic_phase.t See if ${^GLOBAL_PHASE} works -t/opbasic/qq.t See if qq works -t/perf/benchmarks snippets of benchmarking/profiling code -t/perf/benchmarks.t test t/perf/benchmarks syntax -t/perf/opcount.t See if optimised subs have the right op counts -t/perf/optree.t Test presence of some op optimisations -t/perf/speed.t See if optimisations are keeping things fast -t/perf/taint.t See if optimisations are keeping things fast (taint issues) -t/perl.supp Perl valgrind suppressions -t/porting/args_assert.t Check that all PERL_ARGS_ASSERT* macros are used -t/porting/authors.t Check that all authors have been acknowledged -t/porting/bench.t Check Porting/bench.pl runs ok -t/porting/bench/badhash a test file for t/porting/bench.t -t/porting/bench/badname a test file for t/porting/bench.t -t/porting/bench/badversion.json a test file for t/porting/bench.t -t/porting/bench/callsub.json a test file for t/porting/bench.t -t/porting/bench/callsub2.json a test file for t/porting/bench.t -t/porting/bench/oddentry a test file for t/porting/bench.t -t/porting/bench/ret0 a test file for t/porting/bench.t -t/porting/bench/synerr a test file for t/porting/bench.t -t/porting/bench_selftest.t run Porting/bench.pl's selftest facility -t/porting/bincompat.t Check that {non_,}bincompat_options are ordered -t/porting/checkcase.t Check whether we are case-insensitive-fs-friendly -t/porting/checkcfgvar.t Check that all config.sh-like files are good -t/porting/cmp_version.t Test whether all changed module files have their VERSION bumped -t/porting/copyright.t Check that copyright years match -t/porting/corelist.t Check that Module-CoreList has perl versions for the current perl +t/opbasic/magic_phase.t See if ${^GLOBAL_PHASE} works +t/opbasic/qq.t See if qq works +t/perf/benchmarks snippets of benchmarking/profiling code +t/perf/benchmarks.t test t/perf/benchmarks syntax +t/perf/opcount.t See if optimised subs have the right op counts +t/perf/optree.t Test presence of some op optimisations +t/perf/speed.t See if optimisations are keeping things fast +t/perf/taint.t See if optimisations are keeping things fast (taint issues) +t/perl.supp Perl valgrind suppressions +t/porting/args_assert.t Check that all PERL_ARGS_ASSERT* macros are used +t/porting/authors.t Check that all authors have been acknowledged +t/porting/bench.t Check Porting/bench.pl runs ok +t/porting/bench/badhash a test file for t/porting/bench.t +t/porting/bench/badname a test file for t/porting/bench.t +t/porting/bench/badversion.json a test file for t/porting/bench.t +t/porting/bench/callsub.json a test file for t/porting/bench.t +t/porting/bench/callsub2.json a test file for t/porting/bench.t +t/porting/bench/oddentry a test file for t/porting/bench.t +t/porting/bench/ret0 a test file for t/porting/bench.t +t/porting/bench/synerr a test file for t/porting/bench.t +t/porting/bench_selftest.t run Porting/bench.pl's selftest facility +t/porting/bincompat.t Check that {non_,}bincompat_options are ordered +t/porting/checkcase.t Check whether we are case-insensitive-fs-friendly +t/porting/checkcfgvar.t Check that all config.sh-like files are good +t/porting/cmp_version.t Test whether all changed module files have their VERSION bumped +t/porting/copyright.t Check that copyright years match +t/porting/corelist.t Check that Module-CoreList has perl versions for the current perl t/porting/customized.dat Data file for porting/customized.t -t/porting/customized.t Check all CUSTOMIZED files are as they should be -t/porting/diag.t Test completeness of perldiag.pod -t/porting/dual-life.t Check that dual-life bins are in utils/ -t/porting/exec-bit.t Check that exec-bit bins are identified -t/porting/extrefs.t Check perl headers don't make extern refs -t/porting/filenames.t Check the MANIFEST for filename portability. -t/porting/FindExt.t Test win32/FindExt.pm -t/porting/globvar.t Check that globvar.sym is sane -t/porting/known_pod_issues.dat Data file for porting/podcheck.t -t/porting/libperl.t Check libperl.a sanity -t/porting/maintainers.t Test that Porting/Maintainers.pl is up to date -t/porting/manifest.t Test that this MANIFEST file is well formed -t/porting/pending-author.t Check if any pending commit would break tests -t/porting/perlfunc.t Test that Functions_pm.PL can parse perlfunc.pod -t/porting/pod_rules.t Check that various pod lists are consistent -t/porting/podcheck.t Test the POD of shipped modules is well formed -t/porting/re_context.t Check assumptions made by save_re_context() -t/porting/readme.t Check that all files in Porting/ are mentioned in Porting/README.pod -t/porting/regen.t Check that regen.pl doesn't need running -t/porting/ss_dup.t Check that sv.c:ss_dup handles everything -t/porting/test_bootstrap.t Test that the instructions for test bootstrapping aren't accidentally overlooked. -t/porting/utils.t Check that utility scripts still compile -t/re/alpha_assertions.t See if things like '(*postive_lookahed:...) work properly -t/re/anyof.t See if bracketed char classes [...] compile properly -t/re/begin-once.t Checking that /o freeze a variable in a RegExp -t/re/bigfuzzy_not_utf8.t Big and ugly tests not storable as UTF-8 -t/re/charset.t See if regex modifiers like /d, /u work properly -t/re/fold_grind.pl Core file to see if regex case folding works properly -t/re/fold_grind_8.t Wrapper for fold_grind.pl for /l testing with a UTF-8 locale -t/re/fold_grind_a.t Wrapper for fold_grind.pl for /a testing -t/re/fold_grind_aa.t Wrapper for fold_grind.pl for /aa testing -t/re/fold_grind_d.t Wrapper for fold_grind.pl for /d testing -t/re/fold_grind_l.t Wrapper for fold_grind.pl for /l testing with a C locale -t/re/fold_grind_T.t Wrapper for fold_grind.pl for /l testing with a Turkic locale -t/re/fold_grind_u.t Wrapper for fold_grind.pl for /u testing -t/re/keep_tabs.t Tests where \t can't be expanded. -t/re/no_utf8_pm.t Verify utf8.pm doesn't get loaded unless required +t/porting/customized.t Check all CUSTOMIZED files are as they should be +t/porting/deprecation.t Test that deprecation warnings are handled right +t/porting/diag.t Test completeness of perldiag.pod +t/porting/dual-life.t Check that dual-life bins are in utils/ +t/porting/exec-bit.t Check that exec-bit bins are identified +t/porting/extrefs.t Check perl headers don't make extern refs +t/porting/filenames.t Check the MANIFEST for filename portability. +t/porting/FindExt.t Test win32/FindExt.pm +t/porting/globvar.t Check that globvar.sym is sane +t/porting/header_parser.t Check that regen/HeaderParser.pm works as expected +t/porting/known_pod_issues.dat Data file for porting/podcheck.t +t/porting/libperl.t Check libperl.a sanity +t/porting/maintainers.t Test that Porting/Maintainers.pl is up to date +t/porting/manifest.t Test that this MANIFEST file is well formed +t/porting/perlfunc.t Test that Functions_pm.PL can parse perlfunc.pod +t/porting/pod_rules.t Check that various pod lists are consistent +t/porting/podcheck.t Test the POD of shipped modules is well formed +t/porting/re_context.t Check assumptions made by save_re_context() +t/porting/readme.t Check that all files in Porting/ are mentioned in Porting/README.pod +t/porting/regen.t Check that regen.pl doesn't need running +t/porting/ss_dup.t Check that sv.c:ss_dup handles everything +t/porting/test_bootstrap.t Test that the instructions for test bootstrapping aren't accidentally overlooked. +t/porting/test_testlist.t Test that we t/harness and t/TEST and MANIFEST agree on our test list +t/porting/update_authors.t Tests for Porting/updateAUTHORS.pl +t/porting/utils.t Check that utility scripts still compile +t/re/alpha_assertions.t See if things like '(*postive_lookahed:...) work properly +t/re/anyof.t See if bracketed char classes [...] compile properly +t/re/begin-once.t Checking that /o freeze a variable in a RegExp +t/re/bigfuzzy_not_utf8.t Big and ugly tests not storable as UTF-8 +t/re/charset.t See if regex modifiers like /d, /u work properly +t/re/fold_grind.pl Core file to see if regex case folding works properly +t/re/fold_grind_8.t Wrapper for fold_grind.pl for /l testing with a UTF-8 locale +t/re/fold_grind_a.t Wrapper for fold_grind.pl for /a testing +t/re/fold_grind_aa.t Wrapper for fold_grind.pl for /aa testing +t/re/fold_grind_d.t Wrapper for fold_grind.pl for /d testing +t/re/fold_grind_l.t Wrapper for fold_grind.pl for /l testing with a C locale +t/re/fold_grind_T.t Wrapper for fold_grind.pl for /l testing with a Turkic locale +t/re/fold_grind_u.t Wrapper for fold_grind.pl for /u testing +t/re/keep_tabs.t Tests where \t can't be expanded. +t/re/no_utf8_pm.t Verify utf8.pm doesn't get loaded unless required t/re/opt.t Test regexp optimizations -t/re/overload.t Test against string corruption in pattern matches on overloaded objects -t/re/pat.t See if esoteric patterns work -t/re/pat_advanced.t See if advanced esoteric patterns work -t/re/pat_advanced_thr.t See if advanced esoteric patterns work in another thread -t/re/pat_psycho.t See if insane esoteric and slow patterns work -t/re/pat_psycho_thr.t See if insane esoteric and slow patterns work in another thread -t/re/pat_re_eval.t See if esoteric patterns using re 'eval' work -t/re/pat_re_eval_thr.t See if esoteric patterns using re 'eval' work in another thread -t/re/pat_rt_report.t See if esoteric patterns from rt reports work -t/re/pat_rt_report_thr.t See if esoteric patterns from rt reports work in another thread -t/re/pat_special_cc.t See if special charclasses (\s \w \d) work the same as (\s and [\s]) -t/re/pat_special_cc_thr.t See if special charclasses (\s \w \d) work the same as (\s and [\s]) under threads -t/re/pat_thr.t See if esoteric patterns work in another thread -t/re/pos.t Ensure pos() gets set properly after pre-match failures in pp_match -t/re/qr.t See if qr works -t/re/qr-72922.t Test for bug #72922 -t/re/qr_gc.t See if qr doesn't leak -t/re/qrstack.t See if qr expands the stack properly -t/re/re_tests Regular expressions for regexp.t -t/re/recompile.t See if pattern caching/recompilation works -t/re/reg_60508.t See if bug #60508 is fixed -t/re/reg_email.t See if regex recursion works by parsing email addresses -t/re/reg_email_thr.t See if regex recursion works by parsing email addresses in another thread -t/re/reg_eval.t Test again regexp state corruption in (?{ }) and (??{ }) -t/re/reg_eval_scope.t Test scoping issues with (?{ }) and (??{ }) -t/re/reg_fold.t See if case folding works properly -t/re/reg_mesg.t See if one can get regular expression errors -t/re/reg_namedcapture.t Make sure glob assignment doesn't break named capture -t/re/reg_nc_tie.t Test the tied methods of Tie::Hash::NamedCapture -t/re/reg_nocapture.t Test the /n flag for regexps -t/re/reg_pmod.t See if regexp /p modifier works as expected -t/re/reg_posixcc.t See if posix character classes behave consistently -t/re/regex_sets.t Test (?[ ]) -t/re/regex_sets_compat.t Test (?[ ]) is compatible with old [ ] -t/re/regexp.t See if regular expressions work -t/re/regexp_noamp.t See if regular expressions work with optimizations -t/re/regexp_nonull.t See if regexps work without trailing nulls -t/re/regexp_notrie.t See if regular expressions work without trie optimisation -t/re/regexp_qr.t See if regular expressions work as qr// -t/re/regexp_qr_embed.t See if regular expressions work with embedded qr// -t/re/regexp_qr_embed_thr.t See if regular expressions work with embedded qr// in another thread -t/re/regexp_trielist.t See if regular expressions work with trie optimisation -t/re/regexp_unicode_prop.t See if unicode properties work in regular expressions as expected -t/re/regexp_unicode_prop_thr.t See if unicode properties work in regular expressions as expected under threads -t/re/rt122747.t Test rt122747 assert faile (requires DEBUGGING) -t/re/rxcode.t See if /(?{ code })/ works -t/re/script_run.t See if script runs works -t/re/speed.t See if optimisations are keeping things fast -t/re/speed_thr.t ditto under threads -t/re/subst.t See if substitution works -t/re/subst_amp.t See if $&-related substitution works -t/re/subst_wamp.t See if substitution works with $& present -t/re/substT.t See if substitution works with -T -t/re/uniprops01.t Test unicode \p{} regex constructs -t/re/uniprops02.t Test unicode \p{} regex constructs -t/re/uniprops03.t Test unicode \p{} regex constructs -t/re/uniprops04.t Test unicode \p{} regex constructs -t/re/uniprops05.t Test unicode \p{} regex constructs -t/re/uniprops06.t Test unicode \p{} regex constructs -t/re/uniprops07.t Test unicode \p{} regex constructs -t/re/uniprops08.t Test unicode \p{} regex constructs -t/re/uniprops09.t Test unicode \p{} regex constructs -t/re/uniprops10.t Test unicode \p{} regex constructs -t/re/user_prop_race_thr.t Test races in user-defined \p{} under threads -t/README Instructions for regression tests -t/run/cloexec.t Test close-on-exec. -t/run/dtrace.pl For dtrace.t -t/run/dtrace.t Test for DTrace probes -t/run/exit.t Test perl's exit status. -t/run/flib/broken.pm Bad .pm file for switchM.t -t/run/flib/t2.pm Test for .pmcs with -I/dir/ -t/run/flib/t2.pmc Test for .pmcs with -I/dir/ -t/run/fresh_perl.t Tests that require a fresh perl. -t/run/locale.t Tests related to locale handling -t/run/noswitch.t Test aliasing ARGV for other switch tests -t/run/runenv.t Test if perl honors its environment variables. -t/run/runenv_hashseed.t Test if perl honors PERL_HASH_SEED. -t/run/script.t See if script invocation works -t/run/switch0.t Test the -0 switch -t/run/switcha.t Test the -a switch -t/run/switchC.t Test the -C switch -t/run/switchd.t Test the -d switch -t/run/switchd-78586.t See whether bug 78586 is fixed -t/run/switchDx.t Test the -D switch -t/run/switches.t Tests for the other switches (-0, -l, -c, -s, -M, -m, -V, -v, -h, -z, -i) -t/run/switchF.t Test the -F switch -t/run/switchF1.t Pathological tests for the -F switch -t/run/switchF2.t Pathological tests for the -F switch -t/run/switchI.t Test the -I switch -t/run/switchM.t Test the -M switch -t/run/switchn.t Test the -n switch -t/run/switchp.t Test the -p switch -t/run/switcht.t Test the -t switch -t/run/switchx.aux Data for switchx.t -t/run/switchx.t Test the -x switch -t/run/switchx2.aux Data for switchx.t -t/run/switchx3.aux Data for switchx.t -t/TEST The regression tester -t/test.pl Simple testing library -t/test_pl/_num_to_alpha.t Tests for the simple testing library -t/test_pl/can_isa_ok.t Tests for the simple testing library -t/test_pl/plan_skip_all.t Tests for the simple testing library -t/test_pl/tempfile.t Tests for the simple testing library -t/thread_it.pl Run regression tests in a new thread -t/uni/attrs.t See if Unicode attributes work -t/uni/bless.t See if Unicode bless works -t/uni/caller.t See if Unicode doesn't get mangled in caller() -t/uni/case.pl See if Unicode casing works -t/uni/chomp.t See if Unicode chomp works -t/uni/class.t See if Unicode classes work (\p) -t/uni/eval.t See if Unicode hints don't affect eval() -t/uni/fold.t See if Unicode folding works -t/uni/goto.t See if Unicode goto &sub works -t/uni/greek.t See if Unicode in greek works -t/uni/gv.t See if Unicode GVs work. -t/uni/labels.t See if Unicode labels work -t/uni/latin2.t See if Unicode in latin2 works -t/uni/lex_utf8.t See if Unicode in lexer works -t/uni/lower.t See if Unicode casing works -t/uni/method.t See if Unicode methods work -t/uni/opcroak.t See if Unicode croaks from op.c work -t/uni/overload.t See if Unicode overloading works -t/uni/package.t See if Unicode in package declarations works -t/uni/parser.t See if Unicode in the parser works in edge cases. -t/uni/readline.t See if Unicode filehandles in work -t/uni/select.t See if Unicode filehandles aren't mangled by select() -t/uni/sprintf.t See if Unicode sprintf works -t/uni/stash.t See if Unicode stashes work -t/uni/tie.t See if Unicode tie works -t/uni/title.t See if Unicode casing works -t/uni/tr_utf8.t See if Unicode tr/// in utf8 works -t/uni/universal.t See if Unicode in calls to UNIVERSAL works -t/uni/upper.t See if Unicode casing works -t/uni/variables.t See that the rules for variable names work -t/uni/write.t See if Unicode formats work -t/win32/crypt.t Test Win32 crypt for compatibility -t/win32/fs.t Test Win32 link for compatibility -t/win32/popen.t Test for stdout races in backticks, etc -t/win32/runenv.t Test if Win* perl honors its env variables -t/win32/signal.t Test Win32 signal emulation -t/win32/stat.t Test Win32 stat emulation -t/win32/symlink.t Test Win32 symlink -t/win32/system.t See if system works in Win* -t/win32/system_tests Test runner for system.t -taint.c Tainting code -TestInit.pm Preamble library for tests -thread.h Threading header -time64.c 64 bit clean time.h (code) -time64.h 64 bit clean time.h (header) -time64_config.h 64 bit clean time.h (configuration) -toke.c The tokener -uconfig.h Configuration header for microperl -uconfig.sh Configuration script for microperl -uconfig64.sh Configuration script for microperl for LP64 -uni_keywords.h Map unicode property names to numbers -unicode_constants.h compile-time macros for Unicode code points -universal.c The default UNIVERSAL package methods -unixish.h Defines that are assumed on Unix -utf8.c Unicode routines -utf8.h Unicode header -utfebcdic.h Unicode on EBCDIC (UTF-EBCDIC, tr16) header -util.c Utility routines -util.h Dummy header -utils.lst Lists utilities bundled with Perl -utils/corelist.PL Module::CoreList -utils/cpan.PL easily interact with CPAN from the command line -utils/enc2xs.PL Encode module generator +t/re/overload.t Test against string corruption in pattern matches on overloaded objects +t/re/pat.t See if esoteric patterns work +t/re/pat_advanced.t See if advanced esoteric patterns work +t/re/pat_advanced_thr.t See if advanced esoteric patterns work in another thread +t/re/pat_psycho.t See if insane esoteric and slow patterns work +t/re/pat_psycho_thr.t See if insane esoteric and slow patterns work in another thread +t/re/pat_re_eval.t See if esoteric patterns using re 'eval' work +t/re/pat_re_eval_thr.t See if esoteric patterns using re 'eval' work in another thread +t/re/pat_rt_report.t See if esoteric patterns from rt reports work +t/re/pat_rt_report_thr.t See if esoteric patterns from rt reports work in another thread +t/re/pat_special_cc.t See if special charclasses (\s \w \d) work the same as (\s and [\s]) +t/re/pat_special_cc_thr.t See if special charclasses (\s \w \d) work the same as (\s and [\s]) under threads +t/re/pat_thr.t See if esoteric patterns work in another thread +t/re/pos.t Ensure pos() gets set properly after pre-match failures in pp_match +t/re/qr.t See if qr works +t/re/qr-72922.t Test for bug #72922 +t/re/qr_gc.t See if qr doesn't leak +t/re/qrstack.t See if qr expands the stack properly +t/re/re_tests Regular expressions for regexp.t +t/re/recompile.t See if pattern caching/recompilation works +t/re/reg_60508.t See if bug #60508 is fixed +t/re/reg_email.t See if regex recursion works by parsing email addresses +t/re/reg_email_thr.t See if regex recursion works by parsing email addresses in another thread +t/re/reg_eval.t Test again regexp state corruption in (?{ }) and (??{ }) +t/re/reg_eval_scope.t Test scoping issues with (?{ }) and (??{ }) +t/re/reg_fold.t See if case folding works properly +t/re/reg_mesg.t See if one can get regular expression errors +t/re/reg_namedcapture.t Make sure glob assignment doesn't break named capture +t/re/reg_nc_tie.t Test the tied methods of Tie::Hash::NamedCapture +t/re/reg_nocapture.t Test the /n flag for regexps +t/re/reg_pmod.t See if regexp /p modifier works as expected +t/re/reg_posixcc.t See if posix character classes behave consistently +t/re/regex_sets.t Test (?[ ]) +t/re/regex_sets_compat.t Test (?[ ]) is compatible with old [ ] +t/re/regexp.t See if regular expressions work +t/re/regexp_noamp.t See if regular expressions work with optimizations +t/re/regexp_nonull.t See if regexps work without trailing nulls +t/re/regexp_normal.t See if regexps work when expressions are normalized in various ways +t/re/regexp_notrie.t See if regular expressions work without trie optimisation +t/re/regexp_qr.t See if regular expressions work as qr// +t/re/regexp_qr_embed.t See if regular expressions work with embedded qr// +t/re/regexp_qr_embed_thr.t See if regular expressions work with embedded qr// in another thread +t/re/regexp_trielist.t See if regular expressions work with trie optimisation +t/re/regexp_unicode_prop.t See if unicode properties work in regular expressions as expected +t/re/regexp_unicode_prop_thr.t See if unicode properties work in regular expressions as expected under threads +t/re/rt122747.t Test rt122747 assert faile (requires DEBUGGING) +t/re/rxcode.t See if /(?{ code })/ works +t/re/script_run.t See if script runs works +t/re/speed.t See if optimisations are keeping things fast +t/re/speed_thr.t ditto under threads +t/re/stclass_threads.t Test if stclass is preserved across threads +t/re/subst.t See if substitution works +t/re/subst_amp.t See if $&-related substitution works +t/re/subst_wamp.t See if substitution works with $& present +t/re/substT.t See if substitution works with -T +t/re/uniprops01.t Test unicode \p{} regex constructs +t/re/uniprops02.t Test unicode \p{} regex constructs +t/re/uniprops03.t Test unicode \p{} regex constructs +t/re/uniprops04.t Test unicode \p{} regex constructs +t/re/uniprops05.t Test unicode \p{} regex constructs +t/re/uniprops06.t Test unicode \p{} regex constructs +t/re/uniprops07.t Test unicode \p{} regex constructs +t/re/uniprops08.t Test unicode \p{} regex constructs +t/re/uniprops09.t Test unicode \p{} regex constructs +t/re/uniprops10.t Test unicode \p{} regex constructs +t/re/user_prop_race_thr.t Test races in user-defined \p{} under threads +t/README Instructions for regression tests +t/run/cloexec.t Test close-on-exec. +t/run/dtrace.pl For dtrace.t +t/run/dtrace.t Test for DTrace probes +t/run/exit.t Test perl's exit status. +t/run/flib/broken.pm Bad .pm file for switchM.t +t/run/flib/t2.pm Test for .pmcs with -I/dir/ +t/run/flib/t2.pmc Test for .pmcs with -I/dir/ +t/run/fresh_perl.t Tests that require a fresh perl. +t/run/locale.t Tests related to locale handling +t/run/noswitch.t Test aliasing ARGV for other switch tests +t/run/runenv.t Test if perl honors its environment variables. +t/run/runenv_hashseed.t Test if perl honors PERL_HASH_SEED. +t/run/runenv_randseed.t Test if perl honors PERL_RAND_SEED. +t/run/script.t See if script invocation works +t/run/switch0.t Test the -0 switch +t/run/switcha.t Test the -a switch +t/run/switchC.t Test the -C switch +t/run/switchd.t Test the -d switch +t/run/switchd-78586.t See whether bug 78586 is fixed +t/run/switchDx.t Test the -D switch +t/run/switches.t Tests for the other switches (-0, -l, -c, -s, -M, -m, -V, -v, -h, -z, -i) +t/run/switchF.t Test the -F switch +t/run/switchF1.t Pathological tests for the -F switch +t/run/switchF2.t Pathological tests for the -F switch +t/run/switchI.t Test the -I switch +t/run/switchM.t Test the -M switch +t/run/switchn.t Test the -n switch +t/run/switchp.t Test the -p switch +t/run/switcht.t Test the -t switch +t/run/switchx.aux Data for switchx.t +t/run/switchx.t Test the -x switch +t/run/switchx2.aux Data for switchx.t +t/run/switchx3.aux Data for switchx.t +t/TEST The regression tester +t/test.pl Simple testing library +t/test_pl/_num_to_alpha.t Tests for the simple testing library +t/test_pl/can_isa_ok.t Tests for the simple testing library +t/test_pl/plan_skip_all.t Tests for the simple testing library +t/test_pl/tempfile.t Tests for the simple testing library +t/thread_it.pl Run regression tests in a new thread +t/uni/attrs.t See if Unicode attributes work +t/uni/bless.t See if Unicode bless works +t/uni/caller.t See if Unicode doesn't get mangled in caller() +t/uni/case.pl See if Unicode casing works +t/uni/chomp.t See if Unicode chomp works +t/uni/class.t See if Unicode classes work (\p) +t/uni/eval.t See if Unicode hints don't affect eval() +t/uni/fold.t See if Unicode folding works +t/uni/goto.t See if Unicode goto &sub works +t/uni/greek.t See if Unicode in greek works +t/uni/gv.t See if Unicode GVs work. +t/uni/labels.t See if Unicode labels work +t/uni/latin2.t See if Unicode in latin2 works +t/uni/lex_utf8.t See if Unicode in lexer works +t/uni/lower.t See if Unicode casing works +t/uni/method.t See if Unicode methods work +t/uni/opcroak.t See if Unicode croaks from op.c work +t/uni/overload.t See if Unicode overloading works +t/uni/package.t See if Unicode in package declarations works +t/uni/parser.t See if Unicode in the parser works in edge cases. +t/uni/readline.t See if Unicode filehandles in work +t/uni/select.t See if Unicode filehandles aren't mangled by select() +t/uni/sprintf.t See if Unicode sprintf works +t/uni/stash.t See if Unicode stashes work +t/uni/tie.t See if Unicode tie works +t/uni/title.t See if Unicode casing works +t/uni/tr_utf8.t See if Unicode tr/// in utf8 works +t/uni/universal.t See if Unicode in calls to UNIVERSAL works +t/uni/upper.t See if Unicode casing works +t/uni/variables.t See that the rules for variable names work +t/uni/write.t See if Unicode formats work +t/win32/crypt.t Test Win32 crypt for compatibility +t/win32/fs.t Test Win32 link for compatibility +t/win32/popen.t Test for stdout races in backticks, etc +t/win32/runenv.t Test if Win* perl honors its env variables +t/win32/seekdir.t Test that seekdir/readdir are restricted to relevant memory +t/win32/signal.t Test Win32 signal emulation +t/win32/stat.t Test Win32 stat emulation +t/win32/symlink.t Test Win32 symlink +t/win32/system.t See if system works in Win* +t/win32/system_tests Test runner for system.t +utils/corelist.PL Module::CoreList +utils/cpan.PL easily interact with CPAN from the command line +utils/enc2xs.PL Encode module generator utils/encguess.PL guess character encodings of files -utils/h2ph.PL A thing to turn C .h files into perl .ph files -utils/h2xs.PL Program to make .xs files from C header files -utils/instmodsh.PL Give information about installed extensions -utils/json_pp.PL JSON::PP command line utility -utils/libnetcfg.PL libnet -utils/Makefile.PL Extract the utility scripts -utils/perlbug.PL A simple tool to submit a bug report -utils/perldoc.PL A simple tool to find & display perl's documentation -utils/perlivp.PL installation verification procedure -utils/piconv.PL iconv(1), reinvented in perl -utils/pl2pm.PL A pl to pm translator -utils/pod2html.PL Translator to turn pod into HTML -utils/prove.PL The prove harness utility -utils/ptar.PL The ptar utility -utils/ptardiff.PL The ptardiff utility -utils/ptargrep.PL The ptargrep utility -utils/shasum.PL filter for computing SHA digests (analogous to md5sum) -utils/splain.PL Stand-alone version of diagnostics.pm +utils/h2ph.PL A thing to turn C .h files into perl .ph files +utils/h2xs.PL Program to make .xs files from C header files +utils/instmodsh.PL Give information about installed extensions +utils/json_pp.PL JSON::PP command line utility +utils/libnetcfg.PL libnet +utils/Makefile.PL Extract the utility scripts +utils/perlbug.PL A simple tool to submit a bug report +utils/perldoc.PL A simple tool to find & display perl's documentation +utils/perlivp.PL installation verification procedure +utils/piconv.PL iconv(1), reinvented in perl +utils/pl2pm.PL A pl to pm translator +utils/pod2html.PL Translator to turn pod into HTML +utils/prove.PL The prove harness utility +utils/ptar.PL The ptar utility +utils/ptardiff.PL The ptardiff utility +utils/ptargrep.PL The ptargrep utility +utils/shasum.PL filter for computing SHA digests (analogous to md5sum) +utils/splain.PL Stand-alone version of diagnostics.pm utils/streamzip.PL -utils/xsubpp.PL External subroutine preprocessor +utils/xsubpp.PL External subroutine preprocessor utils/zipdetails.PL display the internal structure of zip files -vms/descrip_mms.template Template MM[SK] description file for build -vms/gen_shrfls.pl generate options files and glue for shareable image -vms/genopt.com hack to write options files in case of broken makes -vms/make_command.com record MM[SK] command used to build Perl -vms/mms2make.pl convert descrip.mms to make syntax -vms/munchconfig.c performs shell $var substitution for VMS -vms/myconfig.com record local configuration info for bug report -vms/test.com DCL driver for regression tests -vms/vms.c VMS-specific C code for Perl core -vms/vmsish.h VMS-specific C header for Perl core -vms/vmspipe.com VMS-specific piped command helper script -vos/Changes Changes made to port Perl to the VOS operating system -vos/compile_full_perl.cm VOS command macro to build "full" Perl -vos/configure_full_perl.sh VOS shell script to configure "full" perl before building -vos/make_full_perl.sh VOS shell script to build and test "full" perl -vos/vos.c VOS emulations for missing POSIX functions -vos/vosish.h VOS-specific header file -vutil.c Version object C functions -vutil.h Version object headers -vxs.inc Version object XS methods -warnings.h The warning numbers -win32/bin/exetype.pl Set executable type to CONSOLE or WINDOWS -win32/bin/perlglob.pl Win32 globbing -win32/bin/pl2bat.pl wrap perl scripts into batch files -win32/bin/runperl.pl run perl script via batch file namesake -win32/bin/search.pl Win32 port -win32/config.gc Win32 base line config.sh (MinGW build) -win32/config.vc Win32 base line config.sh (Visual C++ build) -win32/config_H.gc Win32 config header (MinGW build) -win32/config_h.PL Perl code to convert Win32 config.sh to config.h -win32/config_H.vc Win32 config header (Visual C++ build) -win32/config_sh.PL Perl code to update Win32 config.sh from Makefile -win32/create_perllibst_h.pl creates perllibst.h file for inclusion from perllib.c -win32/distclean.bat Remove _ALL_ files not listed here in MANIFEST -win32/fcrypt.c crypt() implementation -win32/FindExt.pm Scan for extensions -win32/GNUmakefile Win32 makefile for GNU make -win32/include/arpa/inet.h Win32 port -win32/include/dirent.h Win32 port -win32/include/netdb.h Win32 port -win32/include/sys/errno2.h Win32 port -win32/include/sys/socket.h Win32 port -win32/list_static_libs.pl prints libraries for static linking -win32/Makefile Win32 makefile for NMAKE (Visual C++ build) -win32/perlexe.ico perlexe.ico image file -win32/perlexe.manifest Assembly manifest file -win32/perlexe.rc associated perl binary with icon -win32/perlglob.c Win32 port -win32/perlhost.h Perl "host" implementation -win32/perllib.c Win32 port -win32/pod.mak Win32 port -win32/runperl.c Win32 port -win32/vdir.h Perl "host" virtual directory manager for Win32 -win32/vmem.h Perl "host" memory manager for Win32 -win32/win32.c Win32 port -win32/win32.h Win32 port -win32/win32iop.h Win32 port -win32/win32sck.c Win32 port -win32/win32thread.c Win32 functions for threads -win32/win32thread.h Win32 port mapping to threads -write_buildcustomize.pl Generate lib/buildcustomize.pl -XSUB.h Include file for extension subroutines -zaphod32_hash.h Zaphod32 hash code (32 bit fast hash function) +vms/descrip_mms.template Template MM[SK] description file for build +vms/gen_shrfls.pl generate options files and glue for shareable image +vms/genopt.com hack to write options files in case of broken makes +vms/make_command.com record MM[SK] command used to build Perl +vms/mms2make.pl convert descrip.mms to make syntax +vms/munchconfig.c performs shell $var substitution for VMS +vms/myconfig.com record local configuration info for bug report +vms/test.com DCL driver for regression tests +vms/vms.c VMS-specific C code for Perl core +vms/vmsish.h VMS-specific C header for Perl core +vms/vmspipe.com VMS-specific piped command helper script +vos/Changes Changes made to port Perl to the VOS operating system +vos/compile_full_perl.cm VOS command macro to build "full" Perl +vos/configure_full_perl.sh VOS shell script to configure "full" perl before building +vos/make_full_perl.sh VOS shell script to build and test "full" perl +vos/vos.c VOS emulations for missing POSIX functions +vos/vosish.h VOS-specific header file +win32/bin/exetype.pl Set executable type to CONSOLE or WINDOWS +win32/bin/perlglob.pl Win32 globbing +win32/bin/pl2bat.pl wrap perl scripts into batch files +win32/bin/runperl.pl run perl script via batch file namesake +win32/bin/search.pl Win32 port +win32/config.gc Win32 base line config.sh (MinGW build) +win32/config.vc Win32 base line config.sh (Visual C++ build) +win32/config_H.gc Win32 config header (MinGW build) +win32/config_h.PL Perl code to convert Win32 config.sh to config.h +win32/config_H.vc Win32 config header (Visual C++ build) +win32/config_sh.PL Perl code to update Win32 config.sh from Makefile +win32/create_perllibst_h.pl creates perllibst.h file for inclusion from perllib.c +win32/distclean.bat Remove _ALL_ files not listed here in MANIFEST +win32/fcrypt.c crypt() implementation +win32/FindExt.pm Scan for extensions +win32/GNUmakefile Win32 makefile for GNU make +win32/include/arpa/inet.h Win32 port +win32/include/dirent.h Win32 port +win32/include/netdb.h Win32 port +win32/include/sys/errno2.h Win32 port +win32/include/sys/socket.h Win32 port +win32/list_static_libs.pl prints libraries for static linking +win32/Makefile Win32 makefile for NMAKE (Visual C++ build) +win32/perlexe.ico perlexe.ico image file +win32/perlexe.manifest Assembly manifest file +win32/perlexe.rc associated perl binary with icon +win32/perlglob.c Win32 port +win32/perlhost.h Perl "host" implementation +win32/perllib.c Win32 port +win32/pod.mak Win32 port +win32/runperl.c Win32 port +win32/vdir.h Perl "host" virtual directory manager for Win32 +win32/vmem.h Perl "host" memory manager for Win32 +win32/win32.c Win32 port +win32/win32.h Win32 port +win32/win32iop.h Win32 port +win32/win32sck.c Win32 port +win32/win32thread.c Win32 functions for threads +win32/win32thread.h Win32 port mapping to threads diff --git a/gnu/usr.bin/perl/META.json b/gnu/usr.bin/perl/META.json index 442e1c4ecba..026a96a0625 100644 --- a/gnu/usr.bin/perl/META.json +++ b/gnu/usr.bin/perl/META.json @@ -36,6 +36,7 @@ "dist/IO", "dist/lib", "dist/Locale-Maketext", + "dist/Math-Complex", "dist/Module-CoreList", "dist/Net-Ping", "dist/PathTools", @@ -118,6 +119,6 @@ "url" : "https://github.com/Perl/perl5" } }, - "version" : "5.036003", - "x_serialization_backend" : "JSON::PP version 4.07" + "version" : "5.038002", + "x_serialization_backend" : "JSON::PP version 4.16" } diff --git a/gnu/usr.bin/perl/META.yml b/gnu/usr.bin/perl/META.yml index bb662741196..08e3568c181 100644 --- a/gnu/usr.bin/perl/META.yml +++ b/gnu/usr.bin/perl/META.yml @@ -34,6 +34,7 @@ no_index: - dist/IO - dist/lib - dist/Locale-Maketext + - dist/Math-Complex - dist/Module-CoreList - dist/Net-Ping - dist/PathTools @@ -105,5 +106,5 @@ resources: homepage: https://www.perl.org/ license: https://dev.perl.org/licenses/ repository: https://github.com/Perl/perl5 -version: '5.036003' +version: '5.038002' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff --git a/gnu/usr.bin/perl/Makefile.SH b/gnu/usr.bin/perl/Makefile.SH index 3985e3719c9..160f21ddaa2 100644 --- a/gnu/usr.bin/perl/Makefile.SH +++ b/gnu/usr.bin/perl/Makefile.SH @@ -73,7 +73,7 @@ true) esac ;; cygwin*) - shrpldflags="$shrpldflags -Wl,--out-implib=libperl.dll.a -Wl,--image-base,0x52000000" + shrpldflags="$shrpldflags -Wl,--out-implib=libperl.dll.a" linklibperl="-L. -lperl" ;; sunos*) @@ -209,7 +209,6 @@ extra_dep=' cpan/Pod-Simple/pm_to_blib: dist/if/pm_to_blib ext/Pod-Functions/pm_to_blib: cpan/Pod-Simple/pm_to_blib cpan/Pod-Escapes/pm_to_blib pod/perlfunc.pod cpan/IO-Compress/pm_to_blib: dist/lib/pm_to_blib -lib/auto/Term/ReadKey/ReadKey.so: lib/auto/Cwd/Cwd.so ' for f in $dynamic_ext; do : the dependency named here will never exist @@ -497,7 +496,7 @@ shextract=`SH_to_target $SH` ## In the following dollars and backticks do not need the extra backslash. $spitshell >>$Makefile <>$Makefile <<'!NO!SUBS!' -c = $(c1) $(c2) $(c3) $(c4) $(c5) miniperlmain.c $(mini_only_src) +c = $(c_base) miniperlmain.c $(mini_only_src) -obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ_EXT) keywords$(OBJ_EXT) builtin$(OBJ_EXT) -obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) -obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) caretx$(OBJ_EXT) dquote$(OBJ_EXT) time64$(OBJ_EXT) syscall_emulator$(OBJ_EXT) +obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) pad$(OBJ_EXT) +obj2 = regcomp$(OBJ_EXT) regcomp_debug$(OBJ_EXT) regcomp_invlist$(OBJ_EXT) regcomp_study$(OBJ_EXT) regcomp_trie$(OBJ_EXT) +obj3 = regexec$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) reentr$(OBJ_EXT) mro_core$(OBJ_EXT) +obj4 = keywords$(OBJ_EXT) builtin$(OBJ_EXT) class$(OBJ_EXT) +obj5 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) +obj6 = scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT) peep$(OBJ_EXT) +obj7 = doop$(OBJ_EXT) doio$(OBJ_EXT) utf8$(OBJ_EXT) taint$(OBJ_EXT) +obj8 = deb$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT) numeric$(OBJ_EXT) mathoms$(OBJ_EXT) +obj9 = locale$(OBJ_EXT) pp_pack$(OBJ_EXT) pp_sort$(OBJ_EXT) caretx$(OBJ_EXT) dquote$(OBJ_EXT) +obj10 = time64$(OBJ_EXT) # split the objects into 3 exclusive sets: those used by both miniperl and # perl, and those used by just one or the other. Doesn't include the # actual perl(mini)main.o, nor any dtrace objects. -common_objs = $(obj1) $(obj2) $(obj3) $(ARCHOBJS) +common_objs = $(obj1) $(obj2) $(obj3) $(obj4) $(obj5) $(obj6) $(obj7) $(obj8) $(obj9) $(obj10) $(ARCHOBJS) miniperl_objs_nodt = $(mini_only_objs) $(common_objs) miniperlmain$(OBJ_EXT) perllib_objs_nodt = $(main_only_objs) $(common_objs) @@ -614,7 +622,7 @@ esac $spitshell >>$Makefile <<'!NO!SUBS!' -perltoc_pod_prereqs = extra.pods pod/perl5363delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod +perltoc_pod_prereqs = extra.pods pod/perl5382delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) generated_headers = uudmap.h bitcount.h mg_data.h @@ -654,11 +662,11 @@ lintflags = \ @echo `$(CCCMD)` $(PLDLFLAGS) $*.c @`$(CCCMD)` $(PLDLFLAGS) $*.c -.c.i: perl.h config.h +.c.i: @echo `$(CCCMDSRC)` -E $*.c \> $*.i @`$(CCCMDSRC)` -E $*.c > $*.i -.c.s: perl.h config.h +.c.s: @echo `$(CCCMDSRC)` -S $*.c @`$(CCCMDSRC)` -S $*.c @@ -673,16 +681,15 @@ $(MANIFEST_SRT): MANIFEST $(PERL_EXE) .PHONY: all utilities -# OpenBSD uses pre-generated lib/Config_git.pl and git_version.h files # Both git_version.h and lib/Config_git.pl are built # by make_patchnum.pl. -#git_version.h: lib/Config_git.pl -# -#lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl -# $(MINIPERL) make_patchnum.pl -# -## make sure that we recompile perl.c if the git version changes -#perl$(OBJ_EXT): git_version.h +git_version.h: lib/Config_git.pl + +lib/Config_git.pl: $(MINIPERL_EXE) make_patchnum.pl + $(MINIPERL) make_patchnum.pl + +# make sure that we recompile perl.c if the git version changes +perl$(OBJ_EXT): git_version.h !NO!SUBS! @@ -1113,7 +1120,10 @@ $(CONFIGPOD): config.sh $(MINIPERL_EXE) configpm Porting/Glossary lib/Config_git unidatafiles $(unidatafiles) pod/perluniprops.pod: uni.data uni.data: $(MINIPERL_EXE) $(CONFIGPM) lib/unicore/mktables $(nonxs_ext) - touch uni.data + $(MINIPERL) lib/unicore/mktables -C lib/unicore -P pod -maketest -makenormtest -makelist -p +# Commented out so always runs, mktables looks at far more files than we +# can in this makefile to decide if needs to run or not +# touch uni.data # $(PERL_EXE) and ext because pod_lib.pl needs Digest::MD5 # But also this ensures that all extensions are built before we try to scan @@ -1129,9 +1139,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST $(MINIPERL) pod/perlmodlib.PL -q -pod/perl5363delta.pod: pod/perldelta.pod - $(RMS) pod/perl5363delta.pod - $(LNS) perldelta.pod pod/perl5363delta.pod +pod/perl5382delta.pod: pod/perldelta.pod + $(RMS) pod/perl5382delta.pod + $(LNS) perldelta.pod pod/perl5382delta.pod extra.pods: $(MINIPERL_EXE) -@test ! -f extra.pods || rm -f `cat extra.pods` @@ -1361,7 +1371,7 @@ _mopup: -rm -f *perl.xok -rm -f cygwin.c libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump -rm -f $(PERL_EXE) $(MINIPERL_EXE) $(LIBPERL) libperl.* microperl - -rm -f $(DTRACE_H) + -rm -f config.arch config.over $(DTRACE_H) _cleaner1: -cd os2; rm -f Makefile @@ -1426,10 +1436,10 @@ _cleaner2: -rmdir lib/TAP/Formatter lib/TAP lib/Sys/Syslog lib/Sys lib/Sub -rmdir lib/Search lib/Scalar lib/Pod/Text lib/Pod/Simple -rmdir lib/Pod/Perldoc lib/Pod/Html lib/PerlIO/via lib/PerlIO lib/Perl - -rmdir lib/Parse/CPAN lib/Parse lib/Params lib/OpenBSD lib/Net/FTP - -rmdir lib/Module/Load lib/Module/CoreList lib/Module lib/Memoize - -rmdir lib/Math/BigRat lib/Math/BigInt lib/Math/BigFloat lib/Math - -rmdir lib/MIME lib/Locale/Maketext lib/Locale lib/List/Util lib/List + -rmdir lib/Parse/CPAN lib/Parse lib/Params lib/Net/FTP lib/Module/Load + -rmdir lib/Module/CoreList lib/Module lib/Memoize lib/Math/BigRat + -rmdir lib/Math/BigInt lib/Math/BigFloat lib/Math lib/MIME + -rmdir lib/Locale/Maketext lib/Locale lib/List/Util lib/List -rmdir lib/JSON/PP lib/JSON lib/IPC lib/IO/Uncompress/Adapter -rmdir lib/IO/Uncompress lib/IO/Socket lib/IO/Compress/Zlib -rmdir lib/IO/Compress/Zip lib/IO/Compress/Gzip lib/IO/Compress/Base @@ -1632,7 +1642,7 @@ $spitshell >>$Makefile <<'!NO!SUBS!' # minitest can't depend on lib/Config.pm because that might be where miniperl # is crashing. -minitest_prep: +minitest_prep: $(MINIPERL_EXE) -@test -f lib/Config.pm || $(MAKE) lib/Config.pm $(unidatafiles) @echo " " @echo "You may see some irrelevant test failures if you have been unable" @@ -1642,10 +1652,10 @@ minitest_prep: MINITEST_TESTS = base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t opbasic/*.t op/*.t uni/*.t perf/*.t -minitest: $(MINIPERL_EXE) minitest_prep +minitest: minitest_prep cd t && $(RUN_PERL) TEST $(MINITEST_TESTS) <$(devtty) -minitest-notty minitest_notty: $(MINIPERL_EXE) minitest_prep +minitest-notty minitest_notty: minitest_prep cd t && PERL_SKIP_TTY_TEST=1 $(RUN_PERL) TEST $(MINITEST_TESTS) # Test via harness @@ -1657,7 +1667,7 @@ test_harness_notty: test_prep HARNESS_NOTTY=1 TESTFILE=harness $(RUN_TESTS) choose test_reonly test-reonly: test_prep_reonly - TEST_ARGS='re/*.t ext/re/t/*.t' TESTFILE=harness $(RUN_TESTS) choose + TEST_ARGS='re/*.t ../ext/re/t/*.t' PERL_TEST_HARNESS_ASAP=1 TESTFILE=harness $(RUN_TESTS) choose # Porting tests (well-formedness of pod, manifest, etc) @@ -1721,8 +1731,8 @@ distcheck: FORCE .PHONY: ctags -TAGS: $(c1) $(c2) $(c3) $(c4) $(c5) $(h) - etags $(c1) $(c2) $(c3) $(c4) $(c5) $(h) +TAGS: $(c_base) $(h) + etags $(c_base) $(h) !NO!SUBS! $spitshell >>$Makefile <. +i_syssyscall (i_syssyscall.U): + This variable conditionally defines the I_SYS_SYSCALL symbol, + and indicates whether a C program should include . + i_systime (i_time.U): This variable conditionally defines I_SYS_TIME, which indicates to the C program that it should include . @@ -5518,12 +5534,28 @@ u16size (perlxv.U): u16type (perlxv.U): This variable contains the C type used for Perl's U16. +u32oformat (perlx32f.U): + This variable contains the format string used for printing + a Perl U32 as an unsigned octal integer. + u32size (perlxv.U): This variable is the size of an U32 in bytes. u32type (perlxv.U): This variable contains the C type used for Perl's U32. +u32uformat (perlx32f.U): + This variable contains the format string used for printing + a Perl U32 as an unsigned decimal integer. + +u32xformat (perlx32f.U): + This variable contains the format string used for printing + a Perl U32 as an unsigned hexadecimal integer in lowercase abcdef. + +u32XUformat (perlx32f.U): + This variable contains the format string used for printing + a Perl U32 as an unsigned hexadecimal integer in uppercase ABCDEF. + u64size (perlxv.U): This variable is the size of an U64 in bytes. diff --git a/gnu/usr.bin/perl/Porting/Maintainers.pl b/gnu/usr.bin/perl/Porting/Maintainers.pl index 30c321241e8..825aa502bf6 100644 --- a/gnu/usr.bin/perl/Porting/Maintainers.pl +++ b/gnu/usr.bin/perl/Porting/Maintainers.pl @@ -142,7 +142,7 @@ use File::Glob qw(:case); }, 'autodie' => { - 'DISTRIBUTION' => 'TODDR/autodie-2.34.tar.gz', + 'DISTRIBUTION' => 'TODDR/autodie-2.36.tar.gz', 'FILES' => q[cpan/autodie], 'EXCLUDED' => [ qr{benchmarks}, @@ -172,6 +172,7 @@ use File::Glob qw(:case); 'DISTRIBUTION' => 'SMUELLER/AutoLoader-5.74.tar.gz', 'FILES' => q[cpan/AutoLoader], 'EXCLUDED' => ['t/00pod.t'], + 'CUSTOMIZED' => ['t/02AutoSplit.t'], }, 'autouse' => { @@ -186,7 +187,7 @@ use File::Glob qw(:case); }, 'bignum' => { - 'DISTRIBUTION' => 'PJACKLAM/bignum-0.65.tar.gz', + 'DISTRIBUTION' => 'PJACKLAM/bignum-0.66.tar.gz', 'FILES' => q[cpan/bignum], 'EXCLUDED' => [ qr{^xt/}, @@ -204,7 +205,7 @@ use File::Glob qw(:case); }, 'Compress::Raw::Bzip2' => { - 'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.103.tar.gz', + 'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.204.tar.gz', 'FILES' => q[cpan/Compress-Raw-Bzip2], 'EXCLUDED' => [ qr{^t/Test/}, @@ -213,10 +214,15 @@ use File::Glob qw(:case); 'bzip2-src/bzip2-cpp.patch', 'bzip2-src/bzip2-unsigned.patch', ], + 'CUSTOMIZED' => [ + # https://github.com/pmqs/Compress-Raw-Bzip2/issues/11 + 'Bzip2.xs', + 'lib/Compress/Raw/Bzip.pm' + ], }, 'Compress::Raw::Zlib' => { - 'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.105.tar.gz', + 'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.204.tar.gz', 'FILES' => q[cpan/Compress-Raw-Zlib], 'EXCLUDED' => [ qr{^examples/}, @@ -226,10 +232,16 @@ use File::Glob qw(:case); t/99pod.t ), ], + 'CUSTOMIZED' => [ + # https://github.com/pmqs/Compress-Raw-Zlib/issues/23 + 'lib/Compress/Raw/Zlib.pm', + 'Zlib.xs' + ], }, 'Config::Perl::V' => { - 'DISTRIBUTION' => 'HMBRAND/Config-Perl-V-0.33.tgz', + 'DISTRIBUTION' => 'HMBRAND/Config-Perl-V-0.36.tgz', + 'SYNCINFO' => 'yorton on Sat Mar 4 10:43:06 2023', 'FILES' => q[cpan/Config-Perl-V], 'EXCLUDED' => [qw( examples/show-v.pl @@ -250,7 +262,7 @@ use File::Glob qw(:case); }, 'CPAN' => { - 'DISTRIBUTION' => 'ANDK/CPAN-2.33-TRIAL.tar.gz', + 'DISTRIBUTION' => 'ANDK/CPAN-2.36.tar.gz', 'FILES' => q[cpan/CPAN], 'EXCLUDED' => [ qr{^distroprefs/}, @@ -330,7 +342,7 @@ use File::Glob qw(:case); }, 'DB_File' => { - 'DISTRIBUTION' => 'PMQS/DB_File-1.857.tar.gz', + 'DISTRIBUTION' => 'PMQS/DB_File-1.858.tar.gz', 'FILES' => q[cpan/DB_File], 'EXCLUDED' => [ qr{^patches/}, @@ -367,10 +379,15 @@ use File::Glob qw(:case); 'DISTRIBUTION' => 'TODDR/Digest-MD5-2.58.tar.gz', 'FILES' => q[cpan/Digest-MD5], 'EXCLUDED' => [ 'rfc1321.txt', 'bin/md5sum.pl' ], + 'CUSTOMIZED' => [ + # https://github.com/Dual-Life/digest-md5/pull/24 + 'MD5.pm', + 'MD5.xs' + ], }, 'Digest::SHA' => { - 'DISTRIBUTION' => 'MSHELOR/Digest-SHA-6.02.tar.gz', + 'DISTRIBUTION' => 'MSHELOR/Digest-SHA-6.04.tar.gz', 'FILES' => q[cpan/Digest-SHA], 'EXCLUDED' => [ qw( t/pod.t @@ -387,7 +404,7 @@ use File::Glob qw(:case); }, 'Encode' => { - 'DISTRIBUTION' => 'DANKOGAI/Encode-3.17.tar.gz', + 'DISTRIBUTION' => 'DANKOGAI/Encode-3.19.tar.gz', 'FILES' => q[cpan/Encode], 'EXCLUDED' => [ qw( t/whatwg-aliases.json @@ -412,13 +429,13 @@ use File::Glob qw(:case); }, 'experimental' => { - 'DISTRIBUTION' => 'LEONT/experimental-0.027.tar.gz', + 'DISTRIBUTION' => 'LEONT/experimental-0.031.tar.gz', 'FILES' => q[cpan/experimental], 'EXCLUDED' => [qr{^xt/}], }, 'Exporter' => { - 'DISTRIBUTION' => 'TODDR/Exporter-5.74.tar.gz', + 'DISTRIBUTION' => 'TODDR/Exporter-5.77.tar.gz', 'FILES' => q[dist/Exporter], 'EXCLUDED' => [ qw( t/pod.t @@ -457,7 +474,7 @@ use File::Glob qw(:case); }, 'ExtUtils::Install' => { - 'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.20.tar.gz', + 'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.22.tar.gz', 'FILES' => q[cpan/ExtUtils-Install], 'EXCLUDED' => [ qw( t/lib/Test/Builder.pm @@ -471,7 +488,8 @@ use File::Glob qw(:case); }, 'ExtUtils::MakeMaker' => { - 'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.64.tar.gz', + 'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.70.tar.gz', + 'SYNCINFO' => 'yorton on Sun Mar 26 16:20:23 2023', 'FILES' => q[cpan/ExtUtils-MakeMaker], 'EXCLUDED' => [ qr{^t/lib/Test/}, @@ -486,7 +504,7 @@ use File::Glob qw(:case); }, 'ExtUtils::PL2Bat' => { - 'DISTRIBUTION' => 'LEONT/ExtUtils-PL2Bat-0.004.tar.gz', + 'DISTRIBUTION' => 'LEONT/ExtUtils-PL2Bat-0.005.tar.gz', 'FILES' => q[cpan/ExtUtils-PL2Bat], 'EXCLUDED' => [ 't/00-compile.t', @@ -544,7 +562,7 @@ use File::Glob qw(:case); }, 'Filter::Util::Call' => { - 'DISTRIBUTION' => 'RURBAN/Filter-1.60.tar.gz', + 'DISTRIBUTION' => 'RURBAN/Filter-1.64.tar.gz', 'FILES' => q[cpan/Filter-Util-Call pod/perlfilter.pod ], @@ -555,6 +573,8 @@ use File::Glob qw(:case); qr{^lib/Filter/}, qr{^tee/}, qw( .appveyor.yml + .cirrus.yml + .github/workflows/testsuite.yml .whitesource Call/Makefile.PL Call/ppport.h @@ -587,12 +607,12 @@ use File::Glob qw(:case); }, 'FindBin' => { - 'DISTRIBUTION' => 'TODDR/FindBin-1.52.tar.gz', + 'DISTRIBUTION' => 'TODDR/FindBin-1.53.tar.gz', 'FILES' => q[dist/FindBin], }, 'Getopt::Long' => { - 'DISTRIBUTION' => 'JV/Getopt-Long-2.52.tar.gz', + 'DISTRIBUTION' => 'JV/Getopt-Long-2.54.tar.gz', 'FILES' => q[cpan/Getopt-Long], 'EXCLUDED' => [ qr{^examples/}, @@ -603,9 +623,10 @@ use File::Glob qw(:case); }, 'HTTP::Tiny' => { - 'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.080.tar.gz', + 'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.086.tar.gz', 'FILES' => q[cpan/HTTP-Tiny], 'EXCLUDED' => [ + 'corpus/snake-oil.crt', # only used by 210_live_ssl.t 't/00-report-prereqs.t', 't/00-report-prereqs.dd', 't/200_live.t', @@ -632,13 +653,13 @@ use File::Glob qw(:case); }, 'IO' => { - 'DISTRIBUTION' => 'TODDR/IO-1.50.tar.gz', + 'DISTRIBUTION' => 'TODDR/IO-1.51.tar.gz', 'FILES' => q[dist/IO], 'EXCLUDED' => ['t/test.pl'], }, 'IO-Compress' => { - 'DISTRIBUTION' => 'PMQS/IO-Compress-2.106.tar.gz', + 'DISTRIBUTION' => 'PMQS/IO-Compress-2.204.tar.gz', 'MAIN_MODULE' => 'IO::Compress::Base', 'FILES' => q[cpan/IO-Compress], 'EXCLUDED' => [ @@ -657,10 +678,14 @@ use File::Glob qw(:case); 'EXCLUDED' => [ qr{^examples/}, ], + 'CUSTOMIZED' => [ + # https://rt.cpan.org/Ticket/Display.html?id=148293 + 'lib/IO/Socket/IP.pm' + ], }, 'IO::Zlib' => { - 'DISTRIBUTION' => 'TOMHUGHES/IO-Zlib-1.11.tar.gz', + 'DISTRIBUTION' => 'TOMHUGHES/IO-Zlib-1.14.tar.gz', 'FILES' => q[cpan/IO-Zlib], }, @@ -680,7 +705,7 @@ use File::Glob qw(:case); }, 'JSON::PP' => { - 'DISTRIBUTION' => 'ISHIGAKI/JSON-PP-4.07.tar.gz', + 'DISTRIBUTION' => 'ISHIGAKI/JSON-PP-4.16.tar.gz', 'FILES' => q[cpan/JSON-PP], }, @@ -695,7 +720,8 @@ use File::Glob qw(:case); }, 'libnet' => { - 'DISTRIBUTION' => 'SHAY/libnet-3.13.tar.gz', + 'DISTRIBUTION' => 'SHAY/libnet-3.15.tar.gz', + 'SYNCINFO' => 'yorton on Mon Mar 20 20:48:38 2023', 'MAIN_MODULE' => 'Net::Cmd', 'FILES' => q[cpan/libnet], 'EXCLUDED' => [ @@ -708,27 +734,10 @@ use File::Glob qw(:case); qr(^demos/), qr(^t/external/), ], - # https://github.com/steve-m-hay/perl-libnet/pull/45 - 'CUSTOMIZED' => [ - 'lib/Net/Cmd.pm', - 'lib/Net/Config.pm', - 'lib/Net/Domain.pm', - 'lib/Net/FTP.pm', - 'lib/Net/FTP/A.pm', - 'lib/Net/FTP/E.pm', - 'lib/Net/FTP/I.pm', - 'lib/Net/FTP/L.pm', - 'lib/Net/FTP/dataconn.pm', - 'lib/Net/NNTP.pm', - 'lib/Net/Netrc.pm', - 'lib/Net/POP3.pm', - 'lib/Net/SMTP.pm', - 'lib/Net/Time.pm', - ], }, 'Locale::Maketext' => { - 'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.29.tar.gz', + 'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.32.tar.gz', 'FILES' => q[dist/Locale-Maketext], 'EXCLUDED' => [ qw( @@ -749,7 +758,7 @@ use File::Glob qw(:case); }, 'Math::BigInt' => { - 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.999830.tar.gz', + 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.999837.tar.gz', 'FILES' => q[cpan/Math-BigInt], 'EXCLUDED' => [ qr{^xt/}, @@ -763,7 +772,7 @@ use File::Glob qw(:case); }, 'Math::BigInt::FastCalc' => { - 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.5012.tar.gz', + 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.5013.tar.gz', 'FILES' => q[cpan/Math-BigInt-FastCalc], 'EXCLUDED' => [ qr{^inc/}, @@ -788,7 +797,7 @@ use File::Glob qw(:case); }, 'Math::BigRat' => { - 'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2621.tar.gz', + 'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2624.tar.gz', 'FILES' => q[cpan/Math-BigRat], 'EXCLUDED' => [ qr{^xt/}, @@ -803,13 +812,7 @@ use File::Glob qw(:case); 'Math::Complex' => { 'DISTRIBUTION' => 'ZEFRAM/Math-Complex-1.59.tar.gz', - 'FILES' => q[cpan/Math-Complex], - 'CUSTOMIZED' => [ - 'lib/Math/Complex.pm', # CPAN RT 118467 - 't/Complex.t', # CPAN RT 118467 - 't/Trig.t', # CPAN RT 118467 - 't/underbar.t', - ], + 'FILES' => q[dist/Math-Complex], 'EXCLUDED' => [ qw( t/pod.t t/pod-coverage.t @@ -818,29 +821,25 @@ use File::Glob qw(:case); }, 'Memoize' => { - 'DISTRIBUTION' => 'MJD/Memoize-1.03.tgz', + 'DISTRIBUTION' => 'ARISTOTLE/Memoize-1.16.tar.gz', 'FILES' => q[cpan/Memoize], - 'EXCLUDED' => ['article.html'], - 'CUSTOMIZED' => [ - # CVE-2016-1238 - qw( Memoize.pm ), - - # CPAN RT 108382 - qw( t/expmod_t.t t/speed.t ), - - # CPAN RT 139736 - qw( t/errors.t t/tie_gdbm.t ), - ], + 'EXCLUDED' => [ qr{^inc/} ], }, 'MIME::Base64' => { 'DISTRIBUTION' => 'CAPOEIRAB/MIME-Base64-3.16.tar.gz', 'FILES' => q[cpan/MIME-Base64], 'EXCLUDED' => [ qr{^xt/}, 'benchmark', 'benchmark-qp', qr{^t/00-report-prereqs} ], + 'CUSTOMIZED' => [ + # https://github.com/Dual-Life/mime-base64/pull/17 + 'Base64.xs', + 'lib/MIME/Base64.pm' + ], }, 'Module::CoreList' => { - 'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20220320.tar.gz', + 'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20230320.tar.gz', + 'SYNCINFO' => 'yorton on Tue Mar 21 11:46:02 2023', 'FILES' => q[dist/Module-CoreList], }, @@ -871,7 +870,7 @@ use File::Glob qw(:case); }, 'Net::Ping' => { - 'DISTRIBUTION' => 'RURBAN/Net-Ping-2.74.tar.gz', + 'DISTRIBUTION' => 'RURBAN/Net-Ping-2.75.tar.gz', 'FILES' => q[dist/Net-Ping], 'EXCLUDED' => [ qr{^\.[awc]}, @@ -885,16 +884,6 @@ use File::Glob qw(:case); qw(t/appveyor-test.bat), ], - 'CUSTOMIZED' => [ - qw{ - t/000_load.t - t/001_new.t - t/010_pingecho.t - t/450_service.t - t/500_ping_icmp.t - t/501_ping_icmpv6.t - } - ], }, 'NEXT' => { @@ -909,7 +898,7 @@ use File::Glob qw(:case); }, 'parent' => { - 'DISTRIBUTION' => 'CORION/parent-0.238.tar.gz', + 'DISTRIBUTION' => 'CORION/parent-0.241.tar.gz', 'FILES' => q[cpan/parent], 'EXCLUDED' => [ qr{^xt} @@ -939,12 +928,12 @@ use File::Glob qw(:case); }, 'PerlIO::via::QuotedPrint' => { - 'DISTRIBUTION' => 'SHAY/PerlIO-via-QuotedPrint-0.09.tar.gz', + 'DISTRIBUTION' => 'SHAY/PerlIO-via-QuotedPrint-0.10.tar.gz', 'FILES' => q[cpan/PerlIO-via-QuotedPrint], }, 'Pod::Checker' => { - 'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.74.tar.gz', + 'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.75.tar.gz', 'FILES' => q[cpan/Pod-Checker], }, @@ -987,7 +976,7 @@ use File::Glob qw(:case); }, 'Pod::Usage' => { - 'DISTRIBUTION' => 'ATOOMIC/Pod-Usage-2.01.tar.gz', + 'DISTRIBUTION' => 'MAREKR/Pod-Usage-2.03.tar.gz', 'FILES' => q[cpan/Pod-Usage], 'EXCLUDED' => [ qr{^t/00-}, @@ -996,19 +985,12 @@ use File::Glob qw(:case); }, 'podlators' => { - 'DISTRIBUTION' => 'RRA/podlators-4.14.tar.gz', + 'DISTRIBUTION' => 'RRA/podlators-5.01.tar.gz', 'MAIN_MODULE' => 'Pod::Man', 'FILES' => q[cpan/podlators pod/perlpodstyle.pod], 'EXCLUDED' => [ - qr{^docs/metadata/}, - ], - - # https://github.com/rra/podlators/pull/15 - 'CUSTOMIZED' => [ - 't/general/basic.t', - 't/man/empty.t', - 't/man/no-encode.t', - 't/text/invalid.t', + qr{^\.github/dependabot\.yml}, + qr{^\.github/workflows/build\.yaml}, ], 'MAP' => { @@ -1024,7 +1006,7 @@ use File::Glob qw(:case); }, 'Scalar::Util' => { - 'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.62.tar.gz', + 'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.63.tar.gz', 'FILES' => q[cpan/Scalar-List-Utils], }, @@ -1040,14 +1022,8 @@ use File::Glob qw(:case); }, 'Socket' => { - 'DISTRIBUTION' => 'PEVANS/Socket-2.032.tar.gz', + 'DISTRIBUTION' => 'PEVANS/Socket-2.036.tar.gz', 'FILES' => q[cpan/Socket], - # https://rt.cpan.org/Ticket/Display.html?id=142470&results=b81893fab36c7e48a07b4b763c03731a - # maybe others - 'CUSTOMIZED' => [ - 'Socket.pm', - 'Socket.xs', - ], }, 'Storable' => { @@ -1089,7 +1065,7 @@ use File::Glob qw(:case); }, 'Term::Cap' => { - 'DISTRIBUTION' => 'JSTOWE/Term-Cap-1.17.tar.gz', + 'DISTRIBUTION' => 'JSTOWE/Term-Cap-1.18.tar.gz', 'FILES' => q[cpan/Term-Cap], }, @@ -1130,7 +1106,9 @@ use File::Glob qw(:case); }, 'Test::Simple' => { - 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302190.tar.gz', + 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302194.tar.gz', + 'SYNCINFO' => 'yorton on Tue Mar 14 13:43:38 2023', + 'SYNCINFO' => 'yorton on Mon Mar 6 19:16:42 2023', 'FILES' => q[cpan/Test-Simple], 'EXCLUDED' => [ qr{^examples/}, @@ -1150,14 +1128,8 @@ use File::Glob qw(:case); }, 'Text::Balanced' => { - 'DISTRIBUTION' => 'SHAY/Text-Balanced-2.04.tar.gz', + 'DISTRIBUTION' => 'SHAY/Text-Balanced-2.06.tar.gz', 'FILES' => q[cpan/Text-Balanced], - 'EXCLUDED' => [ - qw( t/97_meta.t - t/98_pod.t - t/99_pmv.t - ), - ], }, 'Text::ParseWords' => { @@ -1215,7 +1187,6 @@ use File::Glob qw(:case); qr{^examples/}, qw( t/pod.t t/test.pl - threads.h ), ], }, @@ -1225,7 +1196,6 @@ use File::Glob qw(:case); 'FILES' => q[dist/threads-shared], 'EXCLUDED' => [ qw( examples/class.pl - shared.h t/pod.t t/test.pl ), @@ -1233,7 +1203,7 @@ use File::Glob qw(:case); }, 'Tie::File' => { - 'DISTRIBUTION' => 'TODDR/Tie-File-1.05.tar.gz', + 'DISTRIBUTION' => 'TODDR/Tie-File-1.07.tar.gz', 'FILES' => q[dist/Tie-File], }, @@ -1271,6 +1241,11 @@ use File::Glob qw(:case); 'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3401.tar.gz', 'FILES' => q[cpan/Time-Piece], 'EXCLUDED' => [ qw[reverse_deps.txt] ], + 'CUSTOMIZED' => [ + # https://github.com/Dual-Life/Time-Piece/pull/64 + 'Piece.pm', + 'Piece.xs' + ], }, 'Unicode::Collate' => { @@ -1316,7 +1291,9 @@ use File::Glob qw(:case); # to delete an entire block out of lib/version.pm, since that code is # only necessary with the CPAN release. 'CUSTOMIZED' => [ - 'lib/version.pm' + 'lib/version.pm', + + 't/07locale.t' ], 'MAP' => { @@ -1335,7 +1312,7 @@ use File::Glob qw(:case); }, 'Win32' => { - 'DISTRIBUTION' => "JDB/Win32-0.58.tar.gz", + 'DISTRIBUTION' => "JDB/Win32-0.59.tar.gz", 'FILES' => q[cpan/Win32], }, @@ -1468,6 +1445,7 @@ use File::Glob qw(:case); lib/Time/tm.pm lib/UNIVERSAL.pm lib/Unicode/README + lib/Unicode/testnorm.t lib/Unicode/UCD.{pm,t} lib/User/grent.{pm,t} lib/User/pwent.{pm,t} @@ -1507,14 +1485,18 @@ use File::Glob qw(:case); lib/vmsish.{pm,t} ], }, - 'openbsd' => { - 'FILES' => q[lib/Config_git.pl], - }, ); + # legacy CPAN flag -for ( values %Modules ) { - $_->{CPAN} = !!$_->{DISTRIBUTION}; +for my $mod_name ( keys %Modules ) { + my $data = $Modules{$mod_name}; + $data->{CPAN} = !!$data->{DISTRIBUTION}; + my (@files)= split /\s+/, $data->{FILES}; + if (@files and $files[0]=~s!^(cpan|dist)/!!) { + $DistName{$files[0]} = $mod_name; + $DistName{"$1/$files[0]"} = $mod_name; + } } # legacy UPSTREAM flag diff --git a/gnu/usr.bin/perl/Porting/README.pod b/gnu/usr.bin/perl/Porting/README.pod index 0f22b5e9906..05f10ad0299 100644 --- a/gnu/usr.bin/perl/Porting/README.pod +++ b/gnu/usr.bin/perl/Porting/README.pod @@ -37,12 +37,6 @@ number in various files within the perl source. Check source code for ANSI-C violations. -=head2 F - -Used by F to ensure the F list is up to -date. See also L<< /"F" >> for a way to automatically -fix issues found by this tool. - =head2 F Check where the symbols defined in the various F-clones @@ -146,6 +140,11 @@ The charter of the Perl Documentation Team List of Perl release epigraphs. +=head2 F + +List of base 64 encoded SHA256 digests of C<< "name " >> data +which should be ignored by F. + =head2 F This file contains a list of files that F will ensure get an @@ -360,6 +359,11 @@ and case are ignored, as explained in L. Script to help out with syncing cpan distros. +=head2 F + +Test modules in F against the perl in C. Used in the +github workflow to test against older perls. + =head2 F A little program to test the limits of your system's time functions. See @@ -381,10 +385,15 @@ any previous attempts. =head2 F This script will automatically update AUTHORS and create .mailmap entries -based on the git commit log history. If F complains +based on the git commit log history. If F complains during testing you should run this. It will automatically fix most if not all AUTHORS related test fails. +=head2 F + +The class used by F to do its business. Package name +C. + =head2 F A post-processor for C. F is a @@ -398,4 +407,3 @@ leaks. Guide for Vote Administrators for running Steering Council elections. =cut - diff --git a/gnu/usr.bin/perl/Porting/bench.pl b/gnu/usr.bin/perl/Porting/bench.pl index 1d730f6cd04..37738353e31 100755 --- a/gnu/usr.bin/perl/Porting/bench.pl +++ b/gnu/usr.bin/perl/Porting/bench.pl @@ -902,22 +902,22 @@ sub parse_cachegrind { die "Error: while executing $id:\n" . "unexpected code or cachegrind output:\n$_\n"; } - if (/I refs:\s+([\d,]+)/) { + if (/I\s+refs:\s+([\d,]+)/) { $res{Ir} = $1; } - elsif (/I1 misses:\s+([\d,]+)/) { + elsif (/I1\s+misses:\s+([\d,]+)/) { $res{Ir_m1} = $1; } - elsif (/LLi misses:\s+([\d,]+)/) { + elsif (/LLi\s+misses:\s+([\d,]+)/) { $res{Ir_mm} = $1; } - elsif (/D refs:\s+.*?([\d,]+) rd .*?([\d,]+) wr/) { + elsif (/D\s+refs:\s+.*?([\d,]+) rd .*?([\d,]+) wr/) { @res{qw(Dr Dw)} = ($1,$2); } - elsif (/D1 misses:\s+.*?([\d,]+) rd .*?([\d,]+) wr/) { + elsif (/D1\s+misses:\s+.*?([\d,]+) rd .*?([\d,]+) wr/) { @res{qw(Dr_m1 Dw_m1)} = ($1,$2); } - elsif (/LLd misses:\s+.*?([\d,]+) rd .*?([\d,]+) wr/) { + elsif (/LLd\s+misses:\s+.*?([\d,]+) rd .*?([\d,]+) wr/) { @res{qw(Dr_mm Dw_mm)} = ($1,$2); } elsif (/Branches:\s+.*?([\d,]+) cond .*?([\d,]+) ind/) { @@ -1185,7 +1185,7 @@ sub grind_run { $envstr .= "$_=$env->{$_} " for sort keys %$env; } my $cmd = "PERL_HASH_SEED=0 $envstr" - . "valgrind --tool=cachegrind --branch-sim=yes " + . "valgrind --tool=cachegrind --branch-sim=yes --cache-sim=yes " . "--cachegrind-out-file=/dev/null " . "$OPTS{grindargs} " . "$perl $OPTS{perlargs} $args - $counts->[$j] 2>&1"; diff --git a/gnu/usr.bin/perl/Porting/bisect-runner.pl b/gnu/usr.bin/perl/Porting/bisect-runner.pl index 1126c8db403..d62a905f6a5 100644 --- a/gnu/usr.bin/perl/Porting/bisect-runner.pl +++ b/gnu/usr.bin/perl/Porting/bisect-runner.pl @@ -54,39 +54,56 @@ my %defines = push @paths, qw(/usr/local/lib /lib /usr/lib) unless $linux64; -unless(GetOptions(\%options, - 'target=s', 'make=s', 'jobs|j=i', 'crash', 'expect-pass=i', - 'expect-fail' => sub { $options{'expect-pass'} = 0; }, - 'clean!', 'one-liner|e=s@', 'c', 'l', 'w', 'match=s', - 'no-match=s' => sub { - $options{match} = $_[1]; - $options{'expect-pass'} = 0; - }, - 'force-manifest', 'force-regen', 'setpgrp!', 'timeout=i', - 'test-build', 'validate', - 'all-fixups', 'early-fixup=s@', 'late-fixup=s@', 'valgrind', - 'check-args', 'check-shebang!', 'usage|help|?', 'gold=s', - 'module=s', 'with-module=s', 'cpan-config-dir=s', - 'test-module=s', 'no-module-tests', - 'A=s@', - 'D=s@' => sub { - my (undef, $val) = @_; - if ($val =~ /\A([^=]+)=(.*)/s) { - $defines{$1} = length $2 ? $2 : "\0"; - } else { - $defines{$val} = ''; - } - }, - 'U=s@' => sub { - $defines{$_[1]} = undef; - }, - )) { - pod2usage(exitval => 255, verbose => 1); -} +my $rv = GetOptions( + \%options, + 'target=s', 'make=s', 'jobs|j=i', 'crash', 'expect-pass=i', + 'expect-fail' => sub { $options{'expect-pass'} = 0; }, + 'clean!', 'one-liner|e=s@', 'c', 'l', 'w', 'match=s', + 'no-match=s' => sub { + $options{match} = $_[1]; + $options{'expect-pass'} = 0; + }, + 'force-manifest', 'force-regen', 'setpgrp!', 'timeout=i', + 'test-build', 'validate', + 'all-fixups', 'early-fixup=s@', 'late-fixup=s@', 'valgrind', + 'check-args', 'check-shebang!', 'usage|help|?', 'gold=s', + 'module=s', 'with-module=s', 'cpan-config-dir=s', + 'test-module=s', 'no-module-tests', + 'A=s@', + 'D=s@' => sub { + my (undef, $val) = @_; + if ($val =~ /\A([^=]+)=(.*)/s) { + $defines{$1} = length $2 ? $2 : "\0"; + } else { + $defines{$val} = ''; + } + }, + 'U=s@' => sub { + $defines{$_[1]} = undef; + }, +); +exit 255 unless $rv; my ($target, $match) = @options{qw(target match)}; -@ARGV = ('sh', '-c', 'cd t && ./perl TEST base/*.t') +# El Capitan (OS X 10.11) (and later) strip DYLD_LIBRARY_PATH +# from the environment of /bin/sh +# https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/RuntimeProtections/RuntimeProtections.html +# +# (They *could* have chosen instead to ignore it and pass it through. It would +# have the same direct effect, but maybe needing more coding. I suspect the +# choice to strip it was deliberate, as it will also eliminate a bunch more +# attack vectors, because it prevents you sneaking an override "into" something +# else you convince the user to run.) + +my $aggressive_apple_security = ""; +if ($^O eq 'darwin') { + require Cwd; + my $cwd = quotemeta Cwd::getcwd(); + $aggressive_apple_security = "DYLD_LIBRARY_PATH=$cwd "; +} + +@ARGV = ('sh', '-c', "cd t && $aggressive_apple_security./perl TEST base/*.t") if $options{validate} && !@ARGV; pod2usage(exitval => 0, verbose => 2) if $options{usage}; @@ -123,7 +140,7 @@ if (defined $target && $target =~ /\.t\z/) { unless ($target =~ s!\At/!!) { $target = "../$target"; } - @ARGV = ('sh', '-c', "cd t && ./perl TEST " . quotemeta $target); + @ARGV = ('sh', '-c', "cd t && $aggressive_apple_security./perl TEST " . quotemeta $target); $target = 'test_prep'; } @@ -844,6 +861,29 @@ Display the usage information and exit. =back +=head1 ABOUT BISECTION + +The process is all about identifying the commit that caused some change +in behaviour - maybe good, maybe bad. But it is built around C, +which is much more specifically aimed at finding "what broke the build". +C terminology embeds that assumption - commits earlier than the +target commit are "good" commits, those at or later than the target commit +are "bad" commits. + +The default behaviour of F mimics this - you supply some code +that I with a perl built B the target commit and +I with a perl built B the target commit, and F +will find the target commit. + +The F option C<--expect-fail> reverses those expectations +(and changes nothing else). So with C<--expect-fail>, you should supply +code that I only with a perl built B the target commit, +and I with a perl built B the target commit. + +By default, I is a piece of perl code that terminates with +a non-zero exit code, e.g. by calling C. Options that change what +is interpreted as failure include C<--crash>, C<--test-build> and C<--match>. + =head1 EXAMPLES =head2 Code has started to crash under C @@ -1062,6 +1102,90 @@ L =back +=head2 When did perl stop segfaulting on certain code? + +=over 4 + +=item * Problem + +It was reported that perl was segfaulting on this code in perl-5.36.0: + + @a = sort{eval"("}1,2 + +Bisection subsequently identified the commit at which the segfaulting first +appeared. But when we ran that code against what was then the HEAD of blead +(L), we got no +segfault. So the next question we faced was: At what commit did the +segfaulting cease? + +=item * Solution + +Because the code in question loaded no libraries, it was amenable to bisection +with C, thereby shortening bisection time considerably. + + perl Porting/bisect.pl \ + --start=v5.36.0 \ + --target=miniperl \ + --expect-fail -e '@a = sort{eval"("}1,2' + +=item * Reference + +L + +=back + +=head2 When did perl stop emitting warnings when running on certain code? + +=over 4 + +=item * Background + +Most of the time, we bisect in order to identify the first "bad" commit: the +first time code failed to compile; the first time the code emitted warnings; +and so forth. + +Some times, however, we want to identify the first "good" commit: the point +where the code began to compile; the point where the code no longer emitted +warnings; etc. + +We can use this program for that purpose, but we have to reverse our sense of +"good" and "bad" commits. We use the C<--expect-fail> option to do that +reversal. + +=item * Problem + +It was reported that in an older version of Perl, a warning was being emitted +when a program was using the F module and +C was called passing a non-integral number +(I a rational). + + $ perl -wE 'use Scalar::Util; use bigrat; + say "mercy" if Scalar::Util::looks_like_number(1/9);' + +In perl-5.32, this emitted: + + $ Argument "1/9" isn't numeric in addition (+) at + /usr/local/lib/perl5/5.32/Math/BigRat.pm line 1955. + mercy + +But it was observed that there was no warning in perl-5.36. + +=item * Solution + + $ perl Porting/bisect.pl \ + --start=5624cfff8f \ + --end=b80b9f7fc6 \ + --expect-fail \ + -we 'use Scalar::Util; use bigrat; my @w; + local $SIG{__WARN__} = sub { die }; + print "mercy\n" if Scalar::Util::looks_like_number(1/9)' + +=item * Reference + +L + +=back + =cut # Ensure we always exit with 255, to cause git bisect to abort. @@ -1226,9 +1350,11 @@ sub extract_from_file { sub edit_file { my ($file, $munger) = @_; - local $/; my $fh = open_or_die($file); - my $orig = <$fh>; + my $orig = do { + local $/; + <$fh>; + }; die_255("Can't read $file: $!") unless defined $orig && close $fh; my $new = $munger->($orig); return if $new eq $orig; @@ -1379,7 +1505,9 @@ sub apply_patch { my ($patch, $what, $files) = @_; $what = 'patch' unless defined $what; unless (defined $files) { - $patch =~ m!^--- [ab]/(\S+)\n\+\+\+ [ba]/\1!sm; + # Handle context diffs (*** ---) and unified diffs (+++ ---) + # and ignore trailing "garbage" after the filenames + $patch =~ m!^[-*]{3} [ab]/(\S+)[^\n]*\n[-+]{3} [ba]/\1!sm; $files = " $1"; } my $patch_to_use = placate_patch_prog($patch); @@ -1582,6 +1710,7 @@ if ($options{'all-fixups'}) { patch_SH(); patch_C(); patch_ext(); + patch_t(); } apply_fixups($options{'early-fixup'}); @@ -1623,8 +1752,11 @@ unless (extract_from_file('Configure', 'ignore_versioned_solibs')) { $defines{libs} = \@libs unless exists $defines{libs}; } +# a4f3eea9be6bcf3c added a test for GNU libc to Configure +# Prior to that we really don't get much choice but to force usenm off +# everywhere (and modern systems are fast enough that this doesn't matter) $defines{usenm} = undef - if $major < 2 && !exists $defines{usenm}; + if $major < 4 && !exists $defines{usenm}; my ($missing, $created_dirs); ($missing, $created_dirs) = force_manifest() @@ -1692,8 +1824,10 @@ if ($target =~ /config\.s?h/) { run_report_and_exit(@ARGV); } elsif (!-f 'config.sh') { - # Skip if something went wrong with Configure + report_and_exit(undef, 'PLEASE REPORT BUG', 'could not build', 'config.sh') + if $options{'test-build'}; + # Skip if something went wrong with Configure skip('could not build config.sh'); } @@ -1710,6 +1844,7 @@ if($options{'force-regen'} unless ($options{'all-fixups'}) { patch_C(); patch_ext(); + patch_t(); } # Parallel build for miniperl is safe @@ -2156,6 +2291,124 @@ index 53649d5..0635a6e 100755 EOPATCH } + if ($major < 4 && extract_from_file('Configure', + qr/: see which flavor of setpgrp is in use/)) { + edit_file('Configure', sub { + my $code = shift; + my $new = <<'EOT'; +if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then +EOT + chomp $new; + + # before commit ecfc54246c2a6f42: + # before commit 8e07c86ebc651fe9: + my @old = (<<'EOT', <<'EOT'); +if $cc $ccflags -o set $ldflags set.c $libs >/dev/null 2>&1; then +EOT +if $cc $ccflags -o set set.c $ldflags $libs >/dev/null 2>&1; then +EOT + for my $was (@old) { + # Yes, this modifies @old. No problem here: + chomp $was; + $was = quotemeta $was; + $code =~ s/$was/$new/; + } + + # also commit ecfc54246c2a6f42: + $code =~ s!\tif usg; then!\tif ./usg; then!; + + return $code; + }); + + # We need the new probe from 2afac517c48c20de, which has prototypes + # (but include the various C headers unconditionally) + apply_patch(<<'EOPATCH'); +diff --git a/Configure b/Configure +index 18f2172435..5a75ebd767 100755 +--- a/Configure ++++ b/Configure +@@ -4986,45 +5055,61 @@ eval $inlibc + set setpgrp d_setpgrp + eval $inlibc + +-: see which flavor of setpgrp is in use ++echo "Checking to see which flavor of setpgrp is in use . . . " + case "$d_setpgrp" in + "$define") + echo " " + $cat >set.c < ++#include ++#include + main() + { + if (getuid() == 0) { + printf("(I see you are running Configure as super-user...)\n"); + setuid(1); + } ++#ifdef TRY_BSD_PGRP + if (-1 == setpgrp(1, 1)) +- exit(1); +- exit(0); ++ exit(0); ++#else ++ if (setpgrp() != -1) ++ exit(0); ++#endif ++ exit(1); + } + EOP +- if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then +- ./set 2>/dev/null +- case $? in +- 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4 +- val="$undef";; +- *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4 +- val="$define";; +- esac ++ if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then ++ echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4 ++ val="$define" ++ elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then ++ echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4 ++ val="$undef" + else ++ echo "I can't seem to compile and run the test program." + if ./usg; then +- xxx="USG one, i.e. you use setpgrp()." +- val="$undef" ++ xxx="a USG one, i.e. you use setpgrp()." + else +- xxx="BSD one, i.e. you use setpgrp(pid, pgrp)." +- val="$define" ++ # SVR4 systems can appear rather BSD-ish. ++ case "$i_unistd" in ++ $undef) ++ xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)." ++ val="$define" ++ ;; ++ $define) ++ xxx="probably a USG one, i.e. you use setpgrp()." ++ val="$undef" ++ ;; ++ esac + fi +- echo "Assuming your setpgrp is a $xxx" >&4 ++ echo "Assuming your setpgrp is $xxx" >&4 + fi + ;; + *) val="$undef";; + esac +-set d_bsdpgrp ++set d_bsdsetpgrp + eval $setvar ++d_bsdpgrp=$d_bsdsetpgrp + $rm -f set set.c + + : see if bzero exists +EOPATCH + } + if ($major == 4 && extract_from_file('Configure', qr/^d_gethbynam=/)) { # Fixes a bug introduced in 4599a1dedd47b916 apply_commit('3cbc818d1d0ac470'); @@ -2227,6 +2480,76 @@ EOPATCH } } + if ($major < 5) { + my $what = extract_from_file('Configure', qr!(\s+)return __libc_main!); + if ($what) { + # To add to the fun commit commit dfe9444ca7881e71 in Feb 1988 + # changed several things: + if ($what !~ /\t/) { + apply_patch(<<'EOPATCH'); +--- a/Configure ++++ b/Configure +@@ -3854,11 +3911,12 @@ n) echo "OK, that should do.";; + int + main() + { +- return __libc_main(); ++ return __libc_main(); + } + EOM +-if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \ +- ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then ++set gnulibc ++if eval $compile && \ ++ ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then + val="$define" + echo "You are using the GNU C Library" + else +EOPATCH + } + + # And commit dc45a647708b6c54 tweaks 1 line in April 1998 + edit_file('Configure', sub { + my $code = shift; + $code =~ s{contains '\^GNU C Library' >/dev/null 2>&1; then} + {contains '^GNU C Library'; then}; + return $code; + }); + + # This is part of aebf16e7cdbc86ec from June 1998 + # but with compiles_ok inlined + apply_patch(<<'EOPATCH'); +diff --git a/Configure b/Configure +index 38072f0e5e..43735feacf 100755 +--- a/Configure ++++ b/Configure +@@ -4024,15 +4024,19 @@ $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;' + echo " " + echo "Checking for GNU C Library..." >&4 + cat >gnulibc.c < + int + main() + { +- return __libc_main(); ++#ifdef __GLIBC__ ++ exit(0); ++#else ++ exit(1); ++#endif + } + EOM + set gnulibc +-if eval $compile && \ +- ./gnulibc | $contains '^GNU C Library'; then ++if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs && ./gnulibc; then + val="$define" + echo "You are using the GNU C Library" + else +EOPATCH + } + } + if ($major < 6 && !extract_from_file('Configure', qr!^\t-A\)$!)) { # This adds the -A option to Configure, which is incredibly useful @@ -2325,6 +2648,18 @@ index 4b55fa6..60c3c64 100755 EOPATCH } + if ($major < 6) { + edit_file('Configure', sub { + my $code = shift; + # This will cause a build failure, but it will stop + # Configure looping endlessly trying to get a different + # answer: + $code =~ s{(dflt=)n(\n\s+rp="Function \$ans does not exist)} + {$1y$2}; + return $code; + }); + } + if ($major < 8 && $^O eq 'aix') { edit_file('Configure', sub { my $code = shift; @@ -2353,18 +2688,120 @@ EOPATCH }); } - if ($major == 8 || $major == 9) { + if ($major < 32) { + edit_file('Configure', sub { + my $code = shift; + + # A lot of the probes used to be written assuming no need + # for prototypes for exit(), printf() etc. + # Curiously also the code was written to call exit() + # rather than return from main - early portability? + # + # Commit 55954f198635e488 did most of the work in ensuring + # that there was always a prototype for exit, by adding + # #include in many probes. However the last + # missing prototype was only addressed by f16c94bc75aefb81 + # (for futimes), and the last missing prototypes a few + # commits later in f82f0f36c7188b6d + # + # As an aside, commit dc45a647708b6c54 fixes the signal + # name probe (etc) - the commit tagged as perl-5.004_01 + # *seems* to fix the signal name probe, but actually it + # fixes an error in the fallback awk code, not the C + # probe's missing prototype. + # + # With current C compilers there is no correctness risk + # from including a header more than once, so the easiest + # approach to making this all work is to add includes + # "to be sure to be sure" + # + # The trick is not to break *working* probes by + # accidentally including a header *within* a construction. + # So we need to have some confidence that it's the start + # of a file (or somewhere safe) + + my $headers = <<'EOFIX'; +#include +#include +#include +EOFIX + + # This handles $cat and plain cat: + $code =~ s{([\$\t\n ]cat > *[a-z0-9]+\.c <<[^\n]*\n)} + {$1$headers}g; + # Of course, there's always one that's backwards: + $code =~ s{([\$\t\n ]cat <<[^\n]* > *[a-z0-9]+\.c\n)} + {$1$headers}g; + + # and >> used to *create* a file. + # We have to be careful to distinguish those from >> used + # to append to a file. All the first lines have #include + # or #ifdef. Except the few that don't... + $code =~ s{ + ([\$\t\n ]cat\ >>\ *[a-z]+\.c\ <<[^\n]*\n) + ( + # #include/#ifdef ... + \# + | + # The non-blocking IO probe + (?:int\ )?main\(\) + | + # The alignment constraint probe + struct\ foobar + ) + } + {$1$headers$2}gx; + + # This is part of commit c727eafaa06ca49a: + $code =~ s{\(int\)exit\(0\);} + {\(void\)exit\(0\);}; + + return $code; + }); + } + + if ($major < 10) { # Fix symbol detection to that of commit 373dfab3839ca168 if it's any # intermediate version 5129fff43c4fe08c or later, as the intermediate # versions don't work correctly on (at least) Sparc Linux. # 5129fff43c4fe08c adds the first mention of mistrustnm. # 373dfab3839ca168 removes the last mention of lc="" + # + # Fix symbol detection prior to 5129fff43c4fe08c to use the same + # approach, where we don't call printf without a prototype + # We can't include to get its prototype, as the way this works + # is to create a (wrong) prototype for the probed functions, and those + # conflict if the function in question is in stdio.h. edit_file('Configure', sub { my $code = shift; return $code if $code !~ /\btc="";/; # 373dfab3839ca168 or later - return $code - if $code !~ /\bmistrustnm\b/; # before 5129fff43c4fe08c + if ($code !~ /\bmistrustnm\b/) { + # doing this as a '' heredoc seems to be the easiest + # way to avoid confusing levels of backslashes: + my $now = <<'EOT'; +void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); } +EOT + chomp $now; + + # before 5129fff43c4fe08c + # befure 16d20bd98cd29be7 + my @old = (<<'EOT', <<'EOT'); +main() { extern short $1$tdc; printf(\"%hd\", $1$tc); } +EOT +main() { extern int $1$tdc; printf(\"%d\", $1$tc); } +EOT + for my $was (@old) { + chomp $was; + $was = quotemeta $was; + + # Prior to commit d674cd6de52ff38b there was no + # 'int ' for 'int main' + $code =~ s/(?:int )?$was/$now/; + } + return $code; + } + my $fixed = <<'EOC'; : is a C symbol defined? @@ -2450,6 +2887,13 @@ index 3d2e8b9..6ce7766 100755 EOPATCH } + + if ($major < 38 && !extract_from_file('Configure', qr/Too many attempts asking the same question/)) { + # Without this, myread can loop infinitely trying to get a valid answer, + # and hence Configure gets stuck in a loop, outputting the same question + # repeatedly. This isn't what we need. + apply_commit('46bfb3c49f22629a'); + } } sub patch_hints { @@ -2508,6 +2952,66 @@ sub patch_hints { return $code; }); } + + if ($major < 8 || + ($major < 10 && !extract_from_file('ext/DynaLoader/Makefile.PL', + qr/sub MY::static /))) { + edit_file('hints/darwin.sh', sub { + my $code = shift; + # As above, the build fails if version of code in op.o + # is linked to, instead of opmini.o + # We don't need this after commit 908fcb8bef8cbab8, + # which moves DynaLoader.o into the shared perl + # library, as it *also* redoes the build so that + # miniperl is linked against all the object files + # (explicitly excluding op.o), instead of against the + # shared library (and reyling on "flat namespaces" + # - ie make Mach-O behave like ELF - to end up with + # objects in the library linking against opmini.o) + $code .= <<'EOHACK'; + +# Force a flat namespace everywhere: +echo $ldflags | grep flat_namespace || ldflags=`echo \$lddflags -flat_namespace` +echo $lddlflags | grep flat_namespace || lddlflags=`echo \$lddlflags -flat_namespace` +EOHACK + return $code; + }); + } + + if ($major < 16) { + edit_file('hints/darwin.sh', sub { + my $code = shift; + # This is commit 60a655a1ee05c577 + $code =~ s/usenm='true'/usenm='false'/; + + # With the Configure probes fixed (in patch_Configure) + # the "d_stdstdio" logic now concludes "define". + # Unfortunately that is not correct - attempting to + # build 5.8.0 without this override results in SEGVs + # or similar chaos. + # + # The problem is introduced by commit 5a3a8a022aa61cba + # which enables perlio by default. + # The problem is hidden after 15b61c98f82f3010, which + # adds "d_faststdio" and defaults it to "undef" from + # that commit onwards, but override that and the build + # would break, up until "turning off perlio" was + # disabled by commit dd35fa16610ef2fa + $code .= "\nd_stdstdio='undef'\n"; + + return $code; + }); + } + + if ($major < 34) { + edit_file('hints/darwin.sh', sub { + my $code = shift; + # This is commits aadc6422eaec39c2 and 54d41b60822734cf + # rolled into one: + $code =~ s/ 10\.\*(?: \| 11\.\*)?\)/ [1-9][0-9].*)/g; + return $code; + }); + } } elsif ($^O eq 'netbsd') { if ($major < 6) { # These are part of commit 099685bc64c7dbce @@ -2922,6 +3426,15 @@ $2!; } } + if ($major == 3) { + # This is part of commit f0efd8cf98c95b42: + edit_file('Makefile.SH', sub { + my $code = shift; + $code =~ s/<'); + print $fh <<"EOT"; +#!/bin/sh +${aggressive_apple_security}exec $cwd/miniperl "\$\@" +EOT + close_or_die($fh); + chmod 0755, $wrapper + or die "Couldn't chmod 0755 $wrapper: $!"; + + edit_file('ext/util/make_ext', sub { + my $code = shift; + # This is shell expansion syntax + $code =~ s{ (\.\./\$depth/miniperl) } + { $1.sh }; + # This is actually the same line as edited above. + # We need this because (yay), without this EU::MM will + # default to searching for a working perl binary + # (sensible plan) but due to macOS stripping + # DYLD_LIBRARY_PATH during system(...), .../miniperl + # (as found from $^X) *isn't* going to work. + $code =~ s{ (Makefile\.PL INSTALLDIRS=perl) } + { $1 PERL=\.\./\$depth/miniperl.sh }; + return $code; + }); + } + if ($^O eq 'aix' && $major >= 8 && $major < 28 && extract_from_file('Makefile.SH', qr!\Q./$(MINIPERLEXP) makedef.pl\E.*aix!)) { # This is a variant the AIX part of commit 72bbce3da5eeffde: @@ -2999,6 +3544,23 @@ sub patch_C { # This is ordered by $major, as it's likely that different platforms may # well want to share code. + if ($major == 0) { + apply_patch(<<'EOPATCH'); +diff --git a/proto.h b/proto.h +index 9ffc6bbabc..16da198342 100644 +--- a/proto.h ++++ b/proto.h +@@ -8,6 +8,7 @@ + #endif + #ifdef OVERLOAD + SV* amagic_call _((SV* left,SV* right,int method,int dir)); ++bool Gv_AMupdate _((HV* stash)); + #endif /* OVERLOAD */ + OP* append_elem _((I32 optype, OP* head, OP* tail)); + OP* append_list _((I32 optype, LISTOP* first, LISTOP* last)); +EOPATCH + } + if ($major == 2 && extract_from_file('perl.c', qr/^\tfclose\(e_fp\);$/)) { # need to patch perl.c to avoid calling fclose() twice on e_fp when # using -e @@ -3087,6 +3649,36 @@ index 4608a2a..f0c9d1d 100644 EOPATCH } + # _(( was the macro wrapper for hiding ANSI prototypes from K&R C compilers: + if ($major == 3 && !extract_from_file('proto.h', qr/\bsafemalloc\s+_\(\(/)) { + # This is part of commit bbce6d69784bf43b: + # [inseparable changes from patch from perl5.003_08 to perl5.003_09] + # This only affects a few versions, but without this safemalloc etc get + # an implicit return type (of int), and that is truncating addresses on + # 64 bit systems. (And these days, seems that x86_64 linux has a memory + # map which causes malloc to return addresses >= 2**32) + apply_patch(<<'EOPATCH'); +diff --git a/proto.h b/proto.h +index 851567b340..e650c8b07d 100644 +--- a/proto.h ++++ b/proto.h +@@ -479,6 +479,13 @@ Malloc_t realloc _((Malloc_t where, MEM_SIZE nbytes)); + Free_t free _((Malloc_t where)); + #endif + ++#ifndef MYMALLOC ++Malloc_t safemalloc _((MEM_SIZE nbytes)); ++Malloc_t safecalloc _((MEM_SIZE elements, MEM_SIZE size)); ++Malloc_t saferealloc _((Malloc_t where, MEM_SIZE nbytes)); ++Free_t safefree _((Malloc_t where)); ++#endif ++ + #ifdef LEAKTEST + Malloc_t safexmalloc _((I32 x, MEM_SIZE size)); + Malloc_t safexcalloc _((I32 x, MEM_SIZE elements, MEM_SIZE size)); +EOPATCH + } + if ($major < 4 && $^O eq 'openbsd') { my $bad; # Need changes from commit a6e633defa583ad5. @@ -3627,6 +4219,38 @@ index 2a6cbcd..eab2de1 100644 EOPATCH } + if ($major < 6 && extract_from_file('perl.h', qr/PL_uuemap\[\]/)) { + # That [] needs to be [65]: + apply_commit('7575fa06ca7baf15'); + } + + if ($major < 6 && $^O eq 'darwin' + && !extract_from_file('perl.h', qr/ifdef I_FCNTL/)) { + # This is part of commit 9a34ef1dede5fef4, but in a stable part of the + # file: + apply_patch(<<'EOPATCH') +diff --git a/perl.h b/perl.h +index 0d3f0b8333..19f6684894 100644 +--- a/perl.h ++++ b/perl.h +@@ -310,6 +310,14 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); + # define BYTEORDER 0x1234 + #endif + ++#ifdef I_FCNTL ++# include ++#endif ++ ++#ifdef I_SYS_FILE ++# include ++#endif ++ + /* Overall memory policy? */ + #ifndef CONSERVATIVE + # define LIBERAL 1 +EOPATCH + } + if ($major == 7 && $^O eq 'aix' && -f 'ext/List/Util/Util.xs' && extract_from_file('ext/List/Util/Util.xs', qr/PUSHBLOCK/) && !extract_from_file('makedef.pl', qr/^Perl_cxinc/)) { @@ -3693,8 +4317,26 @@ index 900b491..6251a0b 100644 EOPATCH } - if ($major < 8 && $^O eq 'openbsd' - && !extract_from_file('perl.h', qr/include /)) { + if ($major < 8 && !extract_from_file('perl.h', qr/\bshort htovs\b/)) { + # This is part of commit c623ac675720b314 + apply_patch(<<'EOPATCH'); +diff --git a/perl.h b/perl.h +index 023b90b7ea..59a21faecd 100644 +--- a/perl.h ++++ b/perl.h +@@ -2279,4 +2279,8 @@ struct ptr_tbl { + # endif + /* otherwise default to functions in util.c */ ++short htovs(short n); ++short vtohs(short n); ++long htovl(long n); ++long vtohl(long n); + #endif + +EOPATCH + } + + if ($major < 8 && !extract_from_file('perl.h', qr/include /)) { # This is part of commit 3f270f98f9305540, applied at a slightly # different location in perl.h, where the context is stable back to # 5.000 @@ -3716,6 +4358,50 @@ index 9418b52..b8b1a7c 100644 #if defined(STANDARD_C) && defined(I_STDLIB) EOPATCH } + + if ($major < 10) { + # This is commit 731e259481f36b35, but adapted to remove all the + # variations of guards around the inclusion of + # Whilst we only hit this as a problem on arm64 macOS (so far), because + # it insists on prototypes for everything, I'm assuming that doing this + # everywhere and unconditionally might solve similar problems on other + # platforms. Certainly, it *ought* to be safe to include a C89 header + # these days. + for my $file (qw(doop.c mg.c mpeix/mpeixish.h plan9/plan9ish.h unixish.h util.c)) { + next + unless -f $file; + edit_file($file, sub { + my $code = shift; + $code =~ s{ + \n + \#if \s+ [^\n]+ + \n + \# \s* include \s+ + \n + \#endif + \n + } + {\n#include \n}x; + return $code; + }); + } + } + + if ($major == 15) { + # This affects a small range of commits around July 2011, but build + # failures here get in the way of bisecting other problems: + + my $line = extract_from_file('embed.fnc', qr/^X?pR\t\|I32\t\|was_lvalue_sub$/); + if ($line) { + # Need to export Perl_was_lvalue_sub: + apply_commit('7b70e8177801df4e') + unless $line =~ /X/; + + # It needs to be 'ApR' not 'XpR', to be visible to List::Util + # (arm64 macOS treats the missing prototypes as errors) + apply_commit('c73b0699db4d0b8b'); + } + } } sub patch_ext { @@ -3744,7 +4430,7 @@ sub patch_ext { checkout_file('ext/DynaLoader/dl_dyld.xs', 'f556e5b971932902'); apply_patch(<<'EOPATCH'); diff -u a/ext/DynaLoader/dl_dyld.xs~ a/ext/DynaLoader/dl_dyld.xs ---- a/ext/DynaLoader/dl_dyld.xs~ 2011-10-11 21:41:27.000000000 +0100 +--- a/ext/DynaLoader/dl_dyld.xs 2011-10-11 21:41:27.000000000 +0100 +++ b/ext/DynaLoader/dl_dyld.xs 2011-10-11 21:42:20.000000000 +0100 @@ -41,6 +41,35 @@ #include "perl.h" @@ -3782,20 +4468,36 @@ diff -u a/ext/DynaLoader/dl_dyld.xs~ a/ext/DynaLoader/dl_dyld.xs #define DL_LOADONCEONLY #include "dlutils.c" /* SaveError() etc */ -@@ -185,7 +191,7 @@ +@@ -104,7 +145,7 @@ + dl_last_error = savepv(error); + } + +-static char *dlopen(char *path, int mode /* mode is ignored */) ++static char *dlopen(char *path) + { + int dyld_result; + NSObjectFileImage ofile; +@@ -161,13 +202,11 @@ + dl_load_file(filename, flags=0) + char * filename + int flags +- PREINIT: +- int mode = 1; CODE: DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); if (flags & 0x01) - Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); +- RETVAL = dlopen(filename, mode) ; + Perl_warn_nocontext("Can't make loaded symbols global on this platform while loading %s",filename); - RETVAL = dlopen(filename, mode) ; ++ RETVAL = dlopen(filename); DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL)); ST(0) = sv_newmortal() ; + if (RETVAL == NULL) EOPATCH if ($major < 4 && !extract_from_file('util.c', qr/^form/m)) { apply_patch(<<'EOPATCH'); diff -u a/ext/DynaLoader/dl_dyld.xs~ a/ext/DynaLoader/dl_dyld.xs ---- a/ext/DynaLoader/dl_dyld.xs~ 2011-10-11 21:56:25.000000000 +0100 +--- a/ext/DynaLoader/dl_dyld.xs 2011-10-11 21:56:25.000000000 +0100 +++ b/ext/DynaLoader/dl_dyld.xs 2011-10-11 22:00:00.000000000 +0100 @@ -60,6 +60,18 @@ # define get_av perl_get_av @@ -3823,12 +4525,13 @@ EOPATCH if ($major < 10) { if ($unfixable_db_file) { # Nothing we can do. - } elsif (!extract_from_file('ext/DB_File/DB_File.xs', - qr/^#ifdef AT_LEAST_DB_4_1$/)) { - # This line is changed by commit 3245f0580c13b3ab - my $line = extract_from_file('ext/DB_File/DB_File.xs', - qr/^( status = \(?RETVAL->dbp->open\)?\(RETVAL->dbp, name, NULL, RETVAL->type, $)/); - apply_patch(<<"EOPATCH"); + } else { + if (!extract_from_file('ext/DB_File/DB_File.xs', + qr/^#ifdef AT_LEAST_DB_4_1$/)) { + # This line is changed by commit 3245f0580c13b3ab + my $line = extract_from_file('ext/DB_File/DB_File.xs', + qr/^( status = \(?RETVAL->dbp->open\)?\(RETVAL->dbp, name, NULL, RETVAL->type, $)/); + apply_patch(<<"EOPATCH"); diff --git a/ext/DB_File/DB_File.xs b/ext/DB_File/DB_File.xs index 489ba96..fba8ded 100644 --- a/ext/DB_File/DB_File.xs @@ -3855,6 +4558,13 @@ index 489ba96..fba8ded 100644 /* printf("open returned %d %s\\n", status, db_strerror(status)) ; */ EOPATCH + } + + if (!extract_from_file('ext/DB_File/DB_File.xs', + qr/\bextern void __getBerkeleyDBInfo\b/)) { + # A prototype for __getBerkeleyDBInfo(); + apply_commit('b92372bcedd4cbc4'); + } } } @@ -3897,6 +4607,28 @@ EOFIX }); } + if ($major < 10 and -f 'ext/Digest/MD5/MD5.xs') { + require Digest::MD5; + my ($was, $now); + # The edit to the XS is commit 9ee8e69ab2318ba3, but the testcase fixup + # needs to work for several earlier commits. + edit_file('ext/Digest/MD5/MD5.xs', sub { + my $xs = shift; + $was = Digest::MD5::md5_hex($xs); + $xs =~ s{\Q#if PATCHLEVEL <= 4 && !defined(PL_dowarn)} + {#if PERL_VERSION <= 4 && !defined(PL_dowarn)}; + $now = Digest::MD5::md5_hex($xs); + return $xs; + }); + + edit_file('ext/Digest/MD5/t/files.t', sub { + my $testcase = shift; + $testcase =~ s/$was/$now/g; + return $testcase; + }) + if $was ne $now; + } + if ($major >= 10 && $major < 20 && !extract_from_file('ext/SDBM_File/Makefile.PL', qr/MY::subdir_x/)) { # Parallel make fix for SDBM_File @@ -3906,6 +4638,75 @@ EOFIX # So far, only AIX make has come acropper on this bug. apply_commit('4d106cc5d8fd328d', 'ext/SDBM_File/Makefile.PL'); } + + if (-f 'ext/Errno/Errno_pm.PL') { + if ($major < 22 && !extract_from_file('ext/Errno/Errno_pm.PL', + qr/RT#123784/)) { + my $gcc_major = extract_from_file('config.sh', + qr/^gccversion='([0-9]+)\./, + 0); + if ($gcc_major >= 5) { + # This is the fix of commit 816b056ffb99ae54, but implemented in + # a way that should work back to the earliest versions of Errno: + edit_file('ext/Errno/Errno_pm.PL', sub { + my $code = shift; + $code =~ s/( \$Config\{cppflags\})/$1 -P/g; + return $code; + }); + } + } + if ($major < 8 && !extract_from_file('ext/Errno/Errno_pm.PL', + qr/With the -dM option, gcc/)) { + # This is the fix of commit 9ae2e8df64ee1443 re-ordered slightly so + # that it should work back to the earliest versions of Errno: + apply_patch(<<'EOPATCH'); +diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL +index b669790314..c00d6c1a86 100644 +--- a/ext/Errno/Errno_pm.PL ++++ b/ext/Errno/Errno_pm.PL +@@ -30,6 +30,12 @@ sub process_file { + warn "Cannot open '$file'"; + return; + } ++ } elsif ($Config{gccversion} ne '') { ++ # With the -dM option, gcc outputs every #define it finds ++ unless(open(FH,"$Config{cc} -E -dM $file |")) { ++ warn "Cannot open '$file'"; ++ return; ++ } + } else { + unless(open(FH,"< $file")) { + warn "Cannot open '$file'"; +@@ -45,8 +51,12 @@ sub process_file { + + sub get_files { + my %file = (); +- # VMS keeps its include files in system libraries (well, except for Gcc) +- if ($^O eq 'VMS') { ++ if ($^O eq 'linux') { ++ # Some Linuxes have weird errno.hs which generate ++ # no #file or #line directives ++ $file{'/usr/include/errno.h'} = 1; ++ } elsif ($^O eq 'VMS') { ++ # VMS keeps its include files in system libraries (well, except for Gcc) + if ($Config{vms_cc_type} eq 'decc') { + $file{'Sys$Library:DECC$RTLDEF.TLB'} = 1; + } elsif ($Config{vms_cc_type} eq 'vaxc') { +EOPATCH + } + } +} + +sub patch_t { + if ($^O eq 'darwin') { + # This has # $x = `$^X -le "print 'hi there'"`; + # and it needs to pass for the automated validation self-test: + edit_file('t/base/term.t', sub { + my $code = shift; + $code =~ s/`(\$\^X )/`$aggressive_apple_security$1/; + return $code; + }); + } } sub apply_fixups { diff --git a/gnu/usr.bin/perl/Porting/checkAUTHORS.pl b/gnu/usr.bin/perl/Porting/checkAUTHORS.pl deleted file mode 100755 index bd70e07be3e..00000000000 --- a/gnu/usr.bin/perl/Porting/checkAUTHORS.pl +++ /dev/null @@ -1,1270 +0,0 @@ -#!/usr/bin/perl -w -package Porting::checkAUTHORS; -use strict; -use warnings; - -use v5.026; - -use utf8; -use Getopt::Long; -use Unicode::Collate; -use Text::Wrap; -$Text::Wrap::columns = 80; - -my ($committer, $patch, $author); -my ($rank, $ta, $ack, $who, $tap, $update) = (0) x 6; -my ($percentage, $cumulative, $reverse); -my (%authors, %untraced, %patchers, %committers, %real_names); -my ( $from_commit, $to_commit ); -my ( $map, $preferred_email_or_github ); -my $AUTHORS_header; -my $author_file= './AUTHORS'; - -sub main { - my $result = GetOptions ( - # modes - "who" => \$who, - "rank" => \$rank, - "thanks-applied" => \$ta, - "missing" => \$ack , - "tap" => \$tap, - "update" => \$update, - - # modifiers - "authors=s" => \$author_file, - "percentage" => \$percentage, # show as %age - "cumulative" => \$cumulative, - "reverse" => \$reverse, - "from=s" => \$from_commit, - "to=s" => \$to_commit, - - ); - - - my $has_from_commit = defined $from_commit ? 1 : 0; - - if ( !$result # GetOptions failed - or ( $rank + $ta + $who + $ack + $tap + $update != 1 ) # use one and one exactly 'mode' - or !( scalar @ARGV + $has_from_commit ) # gitlog provided from --from or stdin - ) { - usage(); - } - - die "Can't locate '$author_file'. Specify it with '--authors '." - unless -f $author_file; - - ( $map, $preferred_email_or_github ) = generate_known_author_map(); - - my $preserve_case = $update ? 1 : 0; - my $AUTHORS_header = read_authors_file($author_file, $preserve_case); - - if ($rank) { - parse_commits(); - display_ordered(\%patchers); - } elsif ($ta) { - parse_commits(); - display_ordered(\%committers); - } elsif ($tap) { - parse_commits_authors(); - display_test_output(\%patchers, \%authors, \%real_names); - } elsif ($ack) { - parse_commits(); - display_missing_authors(\%patchers, \%authors, \%real_names); - } elsif ($who) { - parse_commits(); - list_authors(\%patchers, \%authors); - } elsif ( $update ) { - update_authors_files( \%authors, $map, $preferred_email_or_github, $author_file ); - } else { - die "unknown mode"; - } - - exit(0); -} - -main() unless caller; - -sub usage { - - die <<"EOS"; -Usage: $0 [modes] [modifiers] - -Modes (use only one): - --who # show list of unique authors by full name - --rank # rank authors by patches - --thanks-applied # ranks committers of others' patches - --missing # display authors not in AUTHORS - --tap # show authors present/missing as TAP - --update # update the AUTHORS file with missing - -Modifiers: - --authors # path to authors file (default: ./AUTHORS) - --percentage # show rankings as percentages - --cumulative # show rankings cumulatively - --reverse # show rankings in reverse - --from # git commit ID used for 'git log' source (use file from STDIN when missing) - --to[=HEAD] # git commit ID used for 'git log' destination, default to HEAD. - -Sample Usages: - - \$ perl Porting/checkAUTHORS.pl --who --from=v5.31.6 --to=v5.31.7 - \$ perl Porting/checkAUTHORS.pl --rank --percentage --from=v5.31.6 - \$ perl Porting/checkAUTHORS.pl --thanks-applied --from=v5.31.6 - \$ perl Porting/checkAUTHORS.pl --missing --from=v5.31.6 - \$ perl Porting/checkAUTHORS.pl --tap --from=v5.31.6 - \$ perl Porting/checkAUTHORS.pl --update --from=v5.31.6 - -or the split int two and generate your own git log output - -Generate git-log-output-file with git log --pretty=fuller rev1..rev2 -(or pipe by specifying '-' for stdin). For example: - \$ git log --pretty=fuller v5.31.6..v5.31.7 > gitlog - \$ perl Porting/checkAUTHORS.pl --rank --percentage gitlog - - -EOS -} - -sub list_authors { - my ($patchers, $authors) = @_; - binmode(STDOUT, ":utf8"); - print wrap '', '', join(', ', Unicode::Collate->new(level => 1)->sort( - map { $authors->{$_} } - grep { length $_ > 1 } # skip the exception '!' and '?' - keys %$patchers)) . ".\n"; -} - -# use --from [and --to] if provided -# otherwise fallback to stdin for backward compatibility -sub _git_log { - if ( length $from_commit ) { - my ( $from, $to ) = ( $from_commit, $to_commit ); - $to //= 'HEAD'; - my $gitlog = [ qx{git log --pretty=fuller $from..$to} ]; - die "git log failed: $!" unless $? == 0; - return $gitlog; - } - - return [ <> ]; -} - -sub parse_commits { - my ( $process ) = @_; - - $process //= \&process; # default processor - - my $git_log = _git_log(); - - my @lines = split( /^commit\s*/sm, join( '', $git_log->@* ) ); - foreach (@lines) { - next if m/^$/; - next if m/^(\S*?)^Merge:/ism; # skip merge commits - if (m/^(.*?)^Author:\s*(.*?)^AuthorDate:\s*.*?^Commit:\s*(.*?)^(.*)$/gism) { - - # new patch - ( $patch, $author, $committer ) = ( $1, $2, $3 ); - chomp($author); - unless ($author) { die $_ } - chomp($committer); - unless ($committer) { die $_ } - - $process->( $committer, $patch, $author ); - } else { - die "XXX $_ did not match"; - } - } - - return; -} - -# just grab authors. Quicker than parse_commits - -sub parse_commits_authors { - - my $git_log = _git_log(); - - foreach ($git_log->@*) { - next unless /^Author:\s*(.*)$/; - my $author = $1; - $author = _raw_address($author); - $patchers{$author}++; - } - - return; -} - -sub generate_known_author_map { - my %map; - - my %preferred_email_or_github; - - my $previous_name = ""; - my $previous_preferred_contact = ""; - while () { - next if m{^\s*#}; - - chomp; - s/\\100/\@/g; - - $_ = lc; - if ( my ( $name, $contact ) = /^\s*([^#\s]\S*)\s+(.*\S)/ ) { - - $name =~ s/^\\043/#/; - # use the previous stored email if the line starts by a '+' - if ( $name eq '+' ) { - $name = $previous_name; - } - else { - $previous_name = $name; - $previous_preferred_contact = $contact; - if ( index($name, '@' ) > 0 ) { - # if name is an email, then this is our preferred email... legacy list - $previous_preferred_contact = $name; - } - } - - $map{$contact} = $name; - - if ( $contact ne $previous_preferred_contact ) { - $preferred_email_or_github{$contact} = $previous_preferred_contact; - } - if ( $name ne '+' ) { - $preferred_email_or_github{$name} = $previous_preferred_contact; - } - } - } - - # - # Email addresses for we do not have names. - # - $map{$_} = "?" - for - "bah\100longitude.com", - "bbucklan\100jpl-devvax.jpl.nasa.gov", - "bilbo\100ua.fm", - "bob\100starlabs.net", - "cygwin\100cygwin.com", - "david\100dhaller.de", "erik\100cs.uni-jena.de", "info\100lingo.kiev.ua", # Lingo Translation agency - "jms\100mathras.comcast.net", - "premchai21\100yahoo.com", - "pxm\100nubz.org", - "raf\100tradingpost.com.au", - "smoketst\100hp46t243.cup.hp.com", "root\100chronos.fi.muni.cz", # no clue - jrv 20090803 - "gomar\100md.media-web.de", # no clue - jrv 20090803 - "data-drift\100so.uio.no", # no data. originally private message from 199701282014.VAA12645@selters.uio.no - "arbor\100al37al08.telecel.pt" - , # reported perlbug ticket 5196 - no actual code contribution. no real name - jrv 20091006 - "oracle\100pcr8.pcr.com", # Reported perlbug ticket 1015 - no patch - Probably Ed Eddington ed@pcr.com - "snaury\100gmail.com", # Reported cpan ticket 35943, with patch for fix - ; - - # - # Email addresses for people that don't have an email address in AUTHORS - # Presumably deliberately? - # - - $map{$_} = '!' for - - # Nick Ing-Simmons has passed away (2006-09-25). - "nick\100ing-simmons.net", - "nik\100tiuk.ti.com", - "nick.ing-simmons\100elixent.com", - "nick\100ni-s.u-net.com", - "nick.ing-simmons\100tiuk.ti.com", - - # Iain Truskett has passed away (2003-12-29). - "perl\100dellah.anu.edu.au", "spoon\100dellah.org", "spoon\100cpan.org", - - # Ton Hospel - "me-02\100ton.iguana.be", "perl-5.8.0\100ton.iguana.be", "perl5-porters\100ton.iguana.be", - - # Beau Cox - "beau\100beaucox.com", - - # Randy W. Sims - "ml-perl\100thepierianspring.org", - - # Jason Hord - "pravus\100cpan.org", - - # perl internal addresses - "perl5-porters\100africa.nicoh.com", - "perlbug\100perl.org",, - "perl5-porters.nicoh.com", - "perlbug-followup\100perl.org", - "perlbug-comment\100perl.org", - "bug-module-corelist\100rt.cpan.org", - "bug-storable\100rt.cpan.org", - "bugs-perl5\100bugs6.perl.org", - "unknown", - "unknown\100unknown", - "unknown\100longtimeago", - "unknown\100perl.org", - "", - "(none)", - ; - - return ( \%map, \%preferred_email_or_github ); -} - -sub read_authors_file { - my ( $filename, $preserve_case ) = @_; - return unless defined $filename; - - my @headers; - - my (%count, %raw); - { - open my $fh, '<', $filename or die "Can't open $filename: $!"; - binmode $fh, ':encoding(UTF-8)'; - my $in_header = 1; - while (<$fh>) { - next if /^\#/; - do { $in_header = 0; next } if /^-- /; - if (/^([^<]+)<([^>]+)>/) { - # Easy line. - my ($name, $email) = ($1, $2); - $name =~ s/\s*\z//; - $raw{$email} = $name; - $count{$email}++; - } elsif ( /^([^@]+)\s+(\@\S+)\s*$/ ) { - my ($name, $github) = ($1, $2); - $name =~ s/\s*\z//; - $raw{$github} = $name; - $count{$github}++; - } elsif (/^([- .'\w]+)[\t\n]/) { - - # Name only - $untraced{$1}++; - } elsif ( length $_ ) { - chomp; - warn "Can't parse line '$_'"; - } else { - next; - } - } - continue { - push @headers, $_ if $in_header; - } - } - foreach my $contact ( sort keys %raw ) { - print "E-mail $contact occurs $count{$contact} times\n" if $count{$contact} > 1; - my $lc = lc $contact; - my $key = $preserve_case ? $contact : $lc; - $authors{ $map->{$lc} || $key } = $raw{$contact}; - } - $authors{$_} = $_ for qw(? !); - - push @headers, '-- ', "\n"; - - return join( '', @headers ); -} - -sub update_authors_files { - my ( $authors, $known_authors, $preferred_email_or_github, $author_file ) = @_; - - die qq[Cannot find AUTHORS file '$author_file'] unless -f $author_file; - binmode(STDOUT, ":utf8"); - - # add missing authors from the recent commits - _detect_new_authors_from_recent_commit( $authors, $known_authors ); - - my @author_names = sort { $a cmp $b } values %$authors; - my $maxlen = length [ sort { length $b <=> length $a } @author_names ]->[0]; - - my @list; - foreach my $github_or_email ( sort keys %authors ) { - - next if length $github_or_email == 1; - - my $name = $authors{$github_or_email}; - $name =~ s{\s+$}{}; - - #$github_or_email = $known_authors->{ $github_or_email } // $github_or_email; - $github_or_email = $preferred_email_or_github->{ $github_or_email } // $github_or_email; - - if ( index( $github_or_email, '@' ) != 0 ) { # preserve '<>' for unicode consortium - $github_or_email = '<' . $github_or_email . '>'; - } - - push @list, sprintf( "%-${maxlen}s %s\n", $name, $github_or_email); - } - - # preserve the untraced authors :-) [without email or GitHub account] - push @list, map { "$_\n" } keys %untraced; - - { - open my $fh, '>', $author_file or die "Can't open $author_file: $!"; - binmode $fh, ':raw:encoding(UTF-8)'; - - print {$fh} $AUTHORS_header; - - map { print {$fh} $_ } sort { lc $a cmp lc $b } @list; - - close $fh; - - } - - return; -} - -# read all recent commits and check if the author email is known -# if the email is unknown add the author's GitHub account if possible or his email -sub _detect_new_authors_from_recent_commit { - my ( $authors, $known_authors ) = @_; - - my $check_if_email_known = sub { - my ( $email ) = @_; - - my $preferred = $map->{$email} // $map->{lc $email} - // $preferred_email_or_github->{$email} - // $preferred_email_or_github->{lc $email} - // $email; - - return $authors{$preferred} || $authors{ lc $preferred } ? 1 : 0; - }; - - my $already_checked = {}; - my $process = sub { - my ( $committer, $patch, $author ) = @_; - - foreach my $person ( $author, $committer ) { - next unless length $person; - next if $already_checked->{$person}; - $already_checked->{$person} = 1; - - my $is_author = $person eq $author; - - if ( $person =~ m{^(.+)\s+<(.+)>$} ) { - my ( $name, $email ) = ( $1, $2 ); - - # skip unicode consortium and bad emails - if ( index( $email, '@' ) <= 0 ) { - warn "# Skipping new author: $person - bad email"; - next; - } - - next if $check_if_email_known->( $email ); - - # for new users we would prefer using the GitHub account - my $github_or_email = _commit_to_github_id( $patch, $is_author ) // $email; - - next if $check_if_email_known->( $github_or_email ); - - print "# Detected a new author: $name using email $email [ $github_or_email ]\n"; - $authors{$github_or_email} = $name; # add it to the list of authors - } else { - warn "Fail to parse author: $person"; - } - } - }; - - parse_commits( $process ); - - return; -} - -sub _commit_to_github_id { - my ( $commit, $is_author ) = @_; - - chomp $commit if defined $commit; - return unless length $commit; - - eval { require HTTP::Tiny; 1 } or do { - warn "HTTP::Tiny is missing, cannot detect GitHub account from commit id."; - no warnings; - *_commit_to_github_id = sub {}; - return; - }; - - my $github_url_for_commit = q[https://github.com/Perl/perl5/commit/] . $commit; - my $response = HTTP::Tiny->new->get( $github_url_for_commit ); - - if ( ! $response->{success} ) { - warn "HTTP Request Failed: '$github_url_for_commit'"; - return; - } - - my $content = $response->{content} // ''; - - # poor man scrapping - probably have to be improved over time - # try to parse something like: 2; - - return $github_ids[0] if $is_author; - if ( !$is_author && scalar @github_ids >= 2 ) { - return $github_ids[1]; # committer is the second entry - } - - return $github_ids[0]; -} - - -sub display_test_output { - my $patchers = shift; - my $authors = shift; - my $real_names = shift; - my $count = 0; - printf "1..%d\n", scalar keys %$patchers; - - foreach my $email ( sort keys %$patchers ) { - $count++; - if ($authors->{$email}) { - print "ok $count - ".$real_names->{$email} ." $email\n"; - } else { - print "not ok $count - Contributor not found in AUTHORS. ", - ($real_names->{$email} || '???' )." $email\n", - "# To fix run Porting/updateAUTHORS.pl and then review", - " and commit the result.\n"; - print STDERR "# ", ($real_names->{$email} || '???' ), " <$email>", - " not found in AUTHORS.\n", - "# To fix run Porting/updateAUTHORS.pl and then review", - " and commit the result.\n"; - } - } - - return; -} - -sub display_missing_authors { - my $patchers = shift; - my $authors = shift; - my $real_names = shift; - my %missing; - foreach ( sort keys %$patchers ) { - next if $authors->{$_}; - - # Sort by number of patches, then name. - $missing{ $patchers{$_} }->{$_}++; - } - foreach my $patches ( sort { $b <=> $a } keys %missing ) { - print "\n\n=head1 $patches patch(es)\n\n"; - foreach my $author ( sort keys %{ $missing{$patches} } ) { - my $xauthor = $author; - $xauthor =~ s/@/\\100/g; # xxx temp hack - print "" . ( $real_names->{$author} || $author ) . "\t\t\t<" . $xauthor . ">\n"; - } - } - - return; -} - -sub display_ordered { - my $what = shift; - my @sorted; - my $total; - - while ( my ( $name, $count ) = each %$what ) { - push @{ $sorted[$count] }, $name; - $total += $count; - } - - my $i = @sorted; - return unless @sorted; - my $sum = 0; - foreach my $i ( $reverse ? 0 .. $#sorted : reverse 0 .. $#sorted ) { - next unless $sorted[$i]; - my $prefix; - $sum += $i * @{ $sorted[$i] }; - - # Value to display is either this one, or the cumulative sum. - my $value = $cumulative ? $sum : $i; - if ($percentage) { - $prefix = sprintf "%6.2f:\t", 100 * $value / $total; - } else { - $prefix = "$value:\t"; - } - print wrap ( $prefix, "\t", join( " ", sort @{ $sorted[$i] } ), "\n" ); - } - - return; -} - -sub process { - my ( $committer, $patch, $author ) = @_; - return unless $author; - return unless $committer; - - $author = _raw_address($author); - $patchers{$author}++; - - $committer = _raw_address($committer); - if ( $committer ne $author ) { - - # separate commit credit only if committing someone else's patch - $committers{$committer}++; - } - - return; -} - -sub _raw_address { - my $addr = shift; - my $real_name; - if ($addr =~ /(?:\\?")?\s*\(via RT\) $/p) { - my $name = ${^PREMATCH}; - $addr = 'perlbug-followup@perl.org'; - # - # Try to find the author - # - if (exists $map->{$name}) { - $addr = $map->{$name}; - $real_name = $authors{$addr}; - } - else { - while (my ($email, $author_name) = each %authors) { - if ($name eq $author_name) { - $addr = $email; - $real_name = $name; - last; - } - } - } - } - elsif ( $addr =~ /<.*>/ ) { - $addr =~ s/^\s*(.*)\s*<\s*(.*?)\s*>.*$/$2/; - $real_name = $1; - } - $addr =~ s/\[mailto://; - $addr =~ s/\]//; - $addr = lc $addr; - $addr = $map->{$addr} || $addr; - $addr =~ s/\\100/@/g; # Sometimes, there are encoded @ signs in the git log. - - if ($real_name) { $real_names{$addr} = $real_name } - - return $addr; -} - -1; # make sure we return true in case we are required. -__DATA__ - -# -# List of mappings. First entry the "correct" email address or GitHub account, -# as appears in the AUTHORS file. Other lines are "alias" mapped to it. -# -# If the "correct" email address is a '+', the entry above it is reused; -# this for addresses with more than one alias. -# -# Note that all entries are in lowercase. Further, no '@' signs should -# appear; use \100 instead. -# -# -# Committers. -# -adamh \100BytesGuy -+ bytesguy\100users.noreply.github.com -+ git\100ahartley.com -adi enache\100rdslink.ro -alanbur alan.burlison\100sun.com -+ alan.burlison\100uk.sun.com -+ aburlison\100cix.compulink.co.uk -ams ams\100toroid.org -+ ams\100wiw.org -atoomic \100atoomic -+ atoomic\100cpan.org -+ cpan\100atoomic.org -+ nicolas\100atoomic.org -chip chip\100pobox.com -+ chip\100perl.com -+ salzench\100nielsenmedia.com -+ chip\100atlantic.net -+ chip\100rio.atlantic.net -+ salzench\100dun.nielsen.com -+ chip\100ci005.sv2.upperbeyond.com -craigb craigberry\100mac.com -+ craig.berry\100metamorgs.com -+ craig.berry\100signaltreesolutions.com -+ craig.berry\100psinetcs.com -+ craig.a.berry\100gmail.com -+ craig a. berry) -davem davem\100iabyn.nospamdeletethisbit.com -+ davem\100fdgroup.com -+ davem\100iabyn.com -+ davem\100fdgroup.co.uk -+ davem\100fdisolutions.com -+ davem\100iabyn.com -demerphq demerphq\100gmail.com -+ yves.orton\100de.mci.com -+ yves.orton\100mciworldcom.de -+ yves.orton\100booking.com -+ demerphq\100dromedary.booking.com -+ demerphq\100gemini.(none) -+ demerphq\100camel.booking.com -+ demerphq\100hotmail.com -doughera doughera\100lafayette.edu -+ doughera\100lafcol.lafayette.edu -+ doughera\100fractal.phys.lafayette.edu -+ doughera.lafayette.edu -+ doughera\100newton.phys.lafayette.edu - -gbarr gbarr\100pobox.com -+ bodg\100tiuk.ti.com -+ gbarr\100ti.com -+ graham.barr\100tiuk.ti.com -+ gbarr\100monty.mutatus.co.uk -gisle gisle\100aas.no -+ gisle\100activestate.com -+ aas\100aas.no -+ aas\100bergen.sn.no -gsar gsar\100cpan.org -+ gsar\100activestate.com -+ gsar\100engin.umich.edu -hv hv\100crypt.org -+ hv\100crypt.compulink.co.uk -+ hv\100iii.co.uk -jhi jhi\100iki.fi -+ jhietaniemi\100gmail.com -+ jhi\100kosh.hut.fi -+ jhi\100alpha.hut.fi -+ jhi\100cc.hut.fi -+ jhi\100hut.fi -+ jarkko.hietaniemi\100nokia.com -+ jarkko.hietaniemi\100cc.hut.fi -+ jarkko.hietaniemi\100booking.com -jesse jesse\100fsck.com -+ jesse\100bestpractical.com -+ jesse\100perl.org -merijn h.m.brand\100xs4all.nl -+ h.m.brand\100procura.nl -+ merijn.brand\100procura.nl -+ h.m.brand\100hccnet.nl -+ merijn\100l1.procura.nl -+ merijn\100a5.(none) -+ perl5\100tux.freedom.nl -mhx mhx-perl\100gmx.net -+ mhx\100r2d2.(none) -+ mhx\100cpan.org -mst mst\100shadowcat.co.uk -+ matthewt\100hercule.scsys.co.uk -nicholas nick\100ccl4.org -+ nick\100unfortu.net -+ nick\100talking.bollo.cx -+ nick\100plum.flirble.org -+ nick\100babyhippo.co.uk -+ nick\100bagpuss.unfortu.net -+ nick\100babyhippo.com -+ nicholas\100dromedary.ams6.corp.booking.com -+ Nicholas Clark (sans From field in mail header) -pudge pudge\100pobox.com -rgs rgs@consttype.org -+ rgarciasuarez\100free.fr -+ rgarciasuarez\100mandrakesoft.com -+ rgarciasuarez\100mandriva.com -+ rgarciasuarez\100gmail.com -+ raphel.garcia-suarez\100hexaflux.com -sky artur\100contiller.se -+ sky\100nanisky.com -+ arthur\100contiller.se -smueller smueller\100cpan.org -+ 7k8lrvf02\100sneakemail.com -+ kjx9zthh3001\100sneakemail.com -+ dtr8sin02\100sneakemail.com -+ rt8363b02\100sneakemail.com -+ o6hhmk002\100sneakemail.com -+ l2ot9pa02\100sneakemail.com -+ wyp3rlx02\100sneakemail.com -+ 0mgwtfbbq\100sneakemail.com -+ xyey9001\100sneakemail.com -steveh steve.m.hay\100googlemail.com -+ stevehay\100planit.com -+ steve.hay\100uk.radan.com -stevep steve\100fisharerojo.org -+ steve.peters\100gmail.com -+ root\100dixie.cscaper.com -timb Tim.Bunce\100pobox.com -+ tim.bunce\100ig.co.uk -tonyc tony\100develop-help.com -+ tony\100openbsd32.tony.develop-help.com -+ tony\100saturn.(none) - -# -# Mere mortals. -# -\043####\100juerd.nl juerd\100cpan.org -+ juerd\100c3.convolution.nl -+ juerd\100convolution.nl -a.r.ferreira\100gmail.com aferreira\100shopzilla.com -abe\100ztreet.demon.nl abeltje\100cpan.org -abela\100hsc.fr abela\100geneanet.org -abigail\100abigail.be abigail\100foad.org -+ abigail\100abigail.nl -+ abigail\100fnx.com -aburt\100isis.cs.du.edu isis!aburt -ach\100mpe.mpg.de ach\100rosat.mpe-garching.mpg.de -adavies\100ptc.com alex.davies\100talktalk.net -ajohnson\100nvidia.com ajohnson\100wischip.com -+ anders\100broadcom.com -alexm\100netli.com alexm\100w-m.ru -alex-p5p\100earth.li alex\100rcon.rog -alexmv\100mit.edu alex\100chmrr.net -alian\100cpan.org alian\100alianwebserver.com -allen\100grumman.com allen\100gateway.grumman.com -allen\100huarp.harvard.edu nort\100bottesini.harvard.edu -+ nort\100qnx.com -allens\100cpan.org easmith\100beatrice.rutgers.edu -+ root\100dogberry.rutgers.edu -ambs\100cpan.org hashashin\100gmail.com -andrea a.koenig@mind.de -+ andreas.koenig\100anima.de -+ andreas.koenig.gmwojprw\100franz.ak.mind.de -+ andreas.koenig.7os6vvqr\100franz.ak.mind.de -+ a.koenig\100mind.de -+ k\100anna.in-berlin.de -+ andk\100cpan.org -+ koenig\100anna.mind.de -+ k\100anna.mind.de -+ root\100ak-71.mind.de -+ root\100ak-75.mind.de -+ k\100sissy.in-berlin.de -+ a.koenig\100kulturbox.de -+ k\100sissy.in-berlin.de -+ root\100dubravka.in-berlin.de -anno4000\100lublin.zrz.tu-berlin.de anno4000\100mailbox.tu-berlin.de -+ siegel\100zrz.tu-berlin.de -apocal@cpan.org perl\1000ne.us -arnold\100gnu.ai.mit.edu arnold\100emoryu2.arpa -+ gatech!skeeve!arnold -arodland\100cpan.org andrew\100hbslabs.com -arussell\100cs.uml.edu adam\100adam-pc.(none) -ash\100cpan.org ash_cpan\100firemirror.com -avar avar\100cpan.org -+ avarab\100gmail.com -bailey\100newman.upenn.edu bailey\100hmivax.humgen.upenn.edu -+ bailey\100genetics.upenn.edu -+ bailey.charles\100gmail.com -bah\100ecnvantage.com bholzman\100longitude.com -barries\100slaysys.com root\100jester.slaysys.com -bkedryna\100home.com bart\100cg681574-a.adubn1.nj.home.com -bcarter\100gumdrop.flyinganvil.org q.eibcartereio.=~m-b.{6}-cgimosx\100gumdrop.flyinganvil.org -ben_tilly\100operamail.com btilly\100gmail.com -+ ben_tilly\100hotmail.com -ben\100morrow.me.uk mauzo\100csv.warwick.ac.uk -+ mauzo\100.(none) -bepi\100perl.it enrico.sorcinelli\100gmail.com -bert\100alum.mit.edu bert\100genscan.com -bigbang7\100gmail.com ddascalescu+github\100gmail.com -blgl\100stacken.kth.se blgl\100hagernas.com -+ 2bfjdsla52kztwejndzdstsxl9athp\100gmail.com -b@os13.org brad+github\10013os.net -khw\100cpan.org khw\100karl.(none) -brian.d.foy\100gmail.com bdfoy\100cpan.org -BQW10602\100nifty.com sadahiro\100cpan.org -bulk88\100hotmail.com bulk88 - -chad.granum\100dreamhost.com exodist7\100gmail.com -choroba\100cpan.org choroba\100weed.(none) -+ choroba\100matfyz.cz -chromatic\100wgz.org chromatic\100rmci.net -ckuskie\100cadence.com colink\100perldreamer.com -claes\100surfar.nu claes\100versed.se -clintp\100geeksalad.org cpierce1\100ford.com -clkao\100clkao.org clkao\100bestpractical.com -corion\100corion.net corion\100cpan.org -+ github@corion.net -cp\100onsitetech.com publiustemp-p5p\100yahoo.com -+ publiustemp-p5p3\100yahoo.com -+ ovid\100cpan.org -cpan\100audreyt.org autrijus\100egb.elixus.org -+ autrijus\100geb.elixus.org -+ autrijus\100gmail.com -+ autrijus\100ossf.iis.sinica.edu.tw -+ autrijus\100autrijus.org -+ audreyt\100audreyt.org -cpan\100ton.iguana.be me-01\100ton.iguana.be -crt\100kiski.net perl\100ctweten.amsite.com -cp\100onsitetech.com ovid\100cpan.org -dairiki\100dairiki.org dairiki at dairiki.org -dagolden\100cpan.org xdaveg\100gmail.com -+ xdg\100xdg.me -damian\100conway.org damian\100cs.monash.edu.au -dan\100sidhe.org sugalsd\100lbcc.cc.or.us -+ sugalskd\100osshe.edu -daniel\100bitpusher.com daniel\100biz.bitpusher.com -dave\100mag-sol.com dave\100dave.org.uk -+ dave\100perlhacks.com -david.dyck\100fluke.com dcd\100tc.fluke.com -david\100justatheory.com david\100wheeler.net -+ david\100kineticode.com -+ david\100wheeler.com -+ david\100wheeler.net -whatever\100davidnicol.com davidnicol\100gmail.com -dennis\100booking.com dennis\100camel.ams6.corp.booking.com -+ dennis.kaarsemaker\100booking.com -+ dennis\100kaarsemaker.net -dev-perl\100pimb.org knew-p5p\100pimb.org -+ lists-p5p\100pimb.org -djberg86\100attbi.com djberg96\100attbi.com -dk\100tetsuo.karasik.eu.org dmitry\100karasik.eu.org -dma+github@stripysock.com dominichamon@users.noreply.github.com -dom\100earth.li dom\100semmle.com -domo\100computer.org shouldbedomo\100mac.com -+ domo\100slipper.ip.lu -+ domo\100tcp.ip.lu -dougm\100covalent.net dougm\100opengroup.org -+ dougm\100osf.org -dougw\100cpan.org doug_wilson\100intuit.com -dwegscheid\100qtm.net wegscd\100whirlpool.com -edwardp\100excitehome.net epeschko\100den-mdev1 -+ epeschko\100elmer.tci.com -+ esp5\100pge.com -egf7\100columbia.edu efifer\100sanwaint.com -eggert\100twinsun.com eggert\100sea.sm.unisys.com -etj\100cpan.org mohawk2\100users.noreply.github.com - -fugazi\100zyx.net larrysh\100cpan.org -+ lshatzer\100islanddata.com - -gbacon\100itsc.uah.edu gbacon\100adtrn-srv4.adtran.com -gerberb\100zenez.com root\100devsys0.zenez.com -gfuji\100cpan.org g.psy.va\100gmail.com -genesullivan50\100yahoo.com gsullivan\100cpan.org -gerard\100ggoossen.net gerard\100tty.nl -gibreel\100pobox.com stephen.zander\100interlock.mckesson.com -+ srz\100loopback -gideon\100cpan.org gidisrael\100gmail.com -gnat\100frii.com gnat\100prometheus.frii.com -gp\100familiehaase.de gerrit\100familiehaase.de -grazz\100pobox.com grazz\100nyc.rr.com -gward\100ase.com greg\100bic.mni.mcgill.ca -haggai\100cpan.org alanhaggai\100alanhaggai.org -+ alanhaggai\100gmail.com -hansmu\100xs4all.nl hansm\100icgroup.nl -+ hansm\100icgned.nl -+ hans\100icgned.nl -+ hans\100icgroup.nl -+ hansm\100euronet.nl -+ hansm\100euro.net -hio\100ymir.co.jp hio\100hio.jp -hops\100sco.com hops\100scoot.pdev.sco.com - -ian.goodacre\100xtra.co.nz ian\100debian.lan -ingo_weinhold\100gmx.de bonefish\100cs.tu-berlin.de - -james\100mastros.biz theorb\100desert-island.me.uk -jan\100jandubois.com jand\100activestate.com -+ jan.dubois\100ibm.net -japhy\100pobox.com japhy\100pobox.org -+ japhy\100perlmonk.org -+ japhy\100cpan.org -+ jeffp\100crusoe.net -jari.aalto\100poboxes.com jari.aalto\100cante.net -jarausch\100numa1.igpm.rwth-aachen.de helmutjarausch\100unknown -jasons\100cs.unm.edu jasons\100sandy-home.arc.unm.edu -jbuehler\100hekimian.com jhpb\100hekimian.com -jcromie\100cpan.org jcromie\100100divsol.com -+ jim.cromie\100gmail.com -jd\100cpanel.net lightsey\100debian.org -+ john\10004755.net -+ john\100nixnuts.net -jdhedden\100cpan.org jerry\100hedden.us -+ jdhedden\1001979.usna.com -+ jdhedden\100gmail.com -+ jdhedden\100yahoo.com -+ jhedden\100pn100-02-2-356p.corp.bloomberg.com -+ jdhedden\100solydxk -jeremy\100zawodny.com jzawodn\100wcnet.org -jesse\100sig.bsh.com jesse\100ginger -jfriedl\100yahoo.com jfriedl\100yahoo-inc.com -jfs\100fluent.com jfs\100jfs.fluent.com -jhannah\100mutationgrid.com jay\100jays.net -+ jhannah\100omnihotels.com -jidanni\100jidanni.org jidanni\100hoffa.dreamhost.com -jjore\100cpan.org twists\100gmail.com -jkeenan\100cpan.org jkeen\100verizon.net -+ jkeenan\100dromedary-001.ams6.corp.booking.com -jns\100integration-house.com jns\100gellyfish.com -+ gellyfish\100gellyfish.com -john\100atlantech.com john\100titanic.atlantech.com -john\100johnwright.org john.wright\100hp.com -joseph\100cscaper.com joseph\1005sigma.com -joshua\100rodd.us jrodd\100pbs.org -jtobey\100john-edwin-tobey.org jtobey\100user1.channel1.com -jpeacock\100messagesystems.com john.peacock\100havurah-software.org -+ jpeacock\100havurah-software.org -+ jpeacock\100dsl092-147-156.wdc1.dsl.speakeasy.net -+ jpeacock\100jpeacock-hp.doesntexist.org -+ jpeacock\100cpan.org -+ jpeacock\100rowman.com -james.schneider\100db.com jschneid\100netilla.com -jpl.jpl\100gmail.com jpl\100research.att.com -jql\100accessone.com jql\100jql.accessone.com -jsm28\100hermes.cam.ac.uk jsm28\100cam.ac.uk - -kane\100dwim.org kane\100xs4all.net -+ kane\100cpan.org -+ kane\100xs4all.nl -+ jos\100dwim.org -+ jib\100ripe.net -keith.s.thompson\100gmail.com kst\100mib.org -ken\100mathforum.org kenahoo\100gmail.com -+ ken.williams\100thomsonreuters.com -kentfredric\100gmail.com kentnl\100cpan.org -kmx\100volny.cz kmx\100volny.cz -+ kmx\100cpan.org -kroepke\100dolphin-services.de kay\100dolphin-services.de -kst\100mib.org kst\100cts.com -+ kst\100SDSC.EDU -kstar\100wolfetech.com kstar\100cpan.org -+ kurt_starsinic\100ml.com -+ kstar\100www.chapin.edu -+ kstar\100chapin.edu -larry\100wall.org lwall\100jpl-devvax.jpl.nasa.gov -+ lwall\100netlabs.com -+ larry\100netlabs.com -+ lwall\100sems.com -+ lwall\100scalpel.netlabs.com -laszlo.molnar\100eth.ericsson.se molnarl\100cdata.tvnet.hu -+ ml1050\100freemail.hu -lewart\100uiuc.edu lewart\100vadds.cvm.uiuc.edu -+ d-lewart\100uiuc.edu -lindblad@gmx.com 52227507+apparluk\100users.noreply.github.com -lkundrak\100v3.sk lubo.rintel\100gooddata.com -lstein\100cshl.org lstein\100formaggio.cshl.org -+ lstein\100genome.wi.mit.edu -l.mai\100web.de plokinom\100gmail.com -lupe\100lupe-christoph.de lupe\100alanya.m.isar.de -lutherh\100stratcom.com lutherh\100infinet.com -mab\100wdl.loral.com markb\100rdcf.sm.unisys.com -marcel\100codewerk.com gr\100univie.ac.at -+ hanekomu\100gmail.com -marcgreen\100cpan.org marcgreen\100wpi.edu -markleightonfisher\100gmail.com fisherm\100tce.com -+ mark-fisher\100mindspring.com -mark.p.lutz\100boeing.com tecmpl1\100triton.ca.boeing.com -marnix\100gmail.com pttesac!marnix!vanam -marty+p5p\100kasei.com marty\100martian.org -mats\100sm6sxl.net mats\100sm5sxl.net -mbarbon\100dsi.unive.it mattia.barbon\100libero.it -+ mattia\100barbon.org -mcmahon\100ibiblio.org mcmahon\100metalab.unc.edu -me\100davidglasser.net glasser\100tang-eleven-seventy-nine.mit.edu -merijnb\100iloquent.nl merijnb\100ms.com -+ merijnb\100iloquent.com -merlyn\100stonehenge.com merlyn\100gadget.cscaper.com -mestre.smash\100gmail.com smash\100cpan.org -mgjv\100comdyn.com.au mgjv\100tradingpost.com.au -mlh\100swl.msd.ray.com webtools\100uewrhp03.msd.ray.com -michael.schroeder\100informatik.uni-erlangen.de mls\100suse.de -mike\100stok.co.uk mike\100exegenix.com -61100689+mikefultondev\100users.noreply.github.com mikefultonpersonal\100gmail.com -miyagawa\100bulknews.net miyagawa\100edge.co.jp -mjtg\100cam.ac.uk mjtg\100cus.cam.ac.uk -mikedlr\100tardis.ed.ac.uk mikedlr\100it.com.pl -moritz\100casella.verplant.org moritz\100faui2k3.org -+ moritz lenz - -neale\100VMA.TABNSW.COM.AU neale\100pucc.princeton.edu -neeracher\100mac.com neeri\100iis.ee.ethz.ch -neilb\100neilb.org neilb\100cre.canon.co.uk -+ neil\100bowers.com - -nospam-abuse\100bloodgate.com tels\100bloodgate.com -+ perl_dummy\100bloodgate.com - -ian.phillipps\100iname.com ian_phillipps\100yahoo.co.uk -+ ian\100dial.pipex.com -ignasi.roca\100fujitsu-siemens.com ignasi.roca\100fujitsu.siemens.es -ikegami\100adaelis.com eric\100fmdev10.(none) -ilmari\100ilmari.org ilmari\100vesla.ilmari.org -illpide\100telecel.pt arbor\100al37al08.telecel.pt -# see http://www.nntp.perl.org/group/perl.perl5.porters/2001/01/msg28925.html -# -ilya\100math.berkeley.edu ilya\100math.ohio-state.edu -+ nospam-abuse\100ilyaz.org -+ [9]ilya\100math.ohio-state.edu -ilya\100martynov.org ilya\100juil.nonet - -joshua\100paloalto.com joshua.pritikin\100db.com - -litt\100acm.org tlhackque\100yahoo.com - -meyering@asic.sc.ti.com jim\100meyering.net - -okamoto\100corp.hp.com okamoto\100hpcc123.corp.hp.com -orwant\100oreilly.com orwant\100media.mit.edu - -p5-authors\100crystalflame.net perl\100crystalflame.net -+ rs\100crystalflame.net -+ coral\100eekeek.org -+ coral\100moonlight.crystalflame.net -+ rs\100oregonnet.com -+ rs\100topsy.com -paul.green\100stratus.com paul_greenvos\100vos.stratus.com -+ pgreen\100seussnt.stratus.com -pmqs pmqs\100cpan.org -+ paul.marquess\100btinternet.com -+ paul_marquess\100yahoo.co.uk -+ paul.marquess\100ntlworld.com -+ paul.marquess\100openwave.com -+ pmarquess\100bfsec.bt.co.uk -+ pmqs\100cpan.org -+ paul\100paul-desktop.(none) -Pavel.Zakouril\100mff.cuni.cz root\100egg.karlov.mff.cuni.cz -pcg\100goof.com schmorp\100schmorp.de -perl\100cadop.com cdp\100hpescdp.fc.hp.com -perl\100greerga.m-l.org greerga\100m-l.org -perl\100profvince.com vince\100profvince.com -perl-rt\100wizbit.be p5p\100perl.wizbit.be -# Maybe we should special case this to get real names out? -Peter.Dintelmann\100Dresdner-Bank.com peter.dintelmann\100dresdner-bank.com -# NOTE: There is an intentional trailing space in the line above -pfeifer\100wait.de pfeifer\100charly.informatik.uni-dortmund.de -+ upf\100de.uu.net -pjacklam\100online.no pjacklam\100gmail.com -ribasushi@cpan.org rabbit\100rabbit.us -+ rabbit+bugs\100rabbit.us -arc\100cpan.org perl\100aaroncrane.co.uk -+ arc@users.noreply.github.com -phil\100perkpartners.com phil\100finchcomputer.com -pimlott\100idiomtech.com andrew\100pimlott.net -+ pimlott\100abel.math.harvard.edu -pixel\100mandriva.com pixel\100mandrakesoft.com -pne\100cpan.org philip.newton\100gmx.net -+ philip.newton\100datenrevision.de -+ pnewton\100gmx.de -pprymmer\100factset.com pvhp\100forte.com -khw\100cpan.org khw\100karl.(none) -+ public\100khwilliamson.com -+ khw\100khw-desktop.(none) - -radu\100netsoft.ro rgreab\100fx.ro -raiph \100raiph -+ raiph.mellor\100gmail.com -rajagopa\100pauline.schrodinger.com rajagopa\100schrodinger.com -raphael.manfredi\100pobox.com raphael_manfredi\100grenoble.hp.com -info\100perl-services.de renee.baecker\100smart-websolutions.de -+ reneeb\100reneeb-desktop.(none) -+ github\100renee-baecker.de -+ otrs\100ubuntu.(none) -+ perl\100renee-baecker.de -+ reb\100perl-services.de -+ module\100renee-baecker.de -rich+perl\100hyphen-dash-hyphen.info richardleach\100users.noreply.github.com -richard.foley\100rfi.net richard.foley\100t-online.de -+ richard.foley\100ubs.com -+ richard.foley\100ubsw.com -rick\100consumercontact.com rick\100bort.ca -+ rick.delaney\100rogers.com -+ rick\100bort.ca -+ rick.delaney\100home.com -rjbs\100cpan.org rjbs-perl-p5p\100lists.manxome.org -+ perl.p5p\100rjbs.manxome.org -+ rjbs\100semiotic.systems -+ rjbs\100users.noreply.github.com -rjk\100linguist.dartmouth.edu rjk\100linguist.thayer.dartmouth.edu -+ rjk-perl-p5p\100tamias.net -+ rjk\100tamias.net -rjray\100redhat.com rjray\100uswest.com -rmgiroux\100acm.org rmgiroux\100hotmail.com -+ mgiroux\100bear.com -rmbarker\100cpan.org rmb1\100cise.npl.co.uk -+ robin.barker\100npl.co.uk -+ rmb\100cise.npl.co.uk -+ robin\100spade-ubuntu.(none) -+ r.m.barker\100btinternet.com -+ rmbarker.cpan\100btinternet.com -robertmay\100cpan.org rob\100themayfamily.me.uk -roberto\100keltia.freenix.fr roberto\100eurocontrol.fr -robin\100cpan.org robin\100kitsite.com -roderick\100argon.org roderick\100gate.net -+ roderick\100ibcinc.com -argrath\100ub32.org root\100ub32.org -rootbeer\100teleport.com rootbeer\100redcat.com -+ tomphoenix\100unknown -rra\100stanford.edu rra\100cpan.org -rurban\100cpan.org rurban\100x-ray.at -+ rurban\100cpanel.net -rvtol+news\100isolution.nl rvtol\100isolution.nl -sartak\100gmail.com sartak\100bestpractical.com -+ code\100sartak.org -danny-cpan\100sadinoff.com sadinoff\100olf.com -schubiger\100cpan.org steven\100accognoscere.org -+ sts\100accognoscere.org -+ schubiger\100gmail.com -+ stsc\100refcnt.org -schwern\100pobox.com schwern\100gmail.com -+ schwern\100athens.arena-i.com -+ schwern\100blackrider.aocn.com -+ schwern\100ool-18b93024.dyn.optonline.net -scop\100cs132170.pp.htv.fi ville.skytta\100iki.fi -scotth\100sgi.com author scotth\100sgi.com 842220273 +0000 -+ schotth\100sgi.com -schwab\100suse.de schwab\100issan.informatik.uni-dortmund.de -+ schwab\100ls5.informatik.uni-dortmund.de -sebastien\100aperghis.net maddingue\100free.fr -+ saper\100cpan.org -shigeya\100wide.ad.jp shigeya\100foretune.co.jp -shlomif\100cpan.org shlomif\100vipe.technion.ac.il -+ shlomif\100iglu.org.il -+ shlomif+processed-by-perl\100gmail.com -+ shlomif\100shlomifish.org -simon\100netthink.co.uk simon\100simon-cozens.org -+ simon\100pembro4.pmb.ox.ac.uk -+ simon\100brecon.co.uk -+ simon\100othersideofthe.earth.li -+ simon\100cozens.net -+ -sisyphus\100cpan.org sisyphus1\100optusnet.com.au -+ sisyphus359\100gmail.com -lannings\100who.int lannings\100gmail.com -+ slanning\100cpan.org -slaven\100rezic.de slaven.rezic\100berlin.de -+ srezic\100iconmobile.com -+ srezic\100cpan.org -+ eserte\100cs.tu-berlin.de -+ eserte\100vran.herceg.de -smcc\100mit.edu smcc\100ocf.berkeley.edu -+ smcc\100csua.berkeley.edu -+ alias\100mcs.com -+ smccam\100uclink4.berkeley.edu -spider\100orb.nashua.nh.us spider\100web.zk3.dec.com -+ spider\100leggy.zk3.dec.com -+ spider-perl\100orb.nashua.nh.us -+ spider\100peano.zk3.dec.com -+ spider.boardman\100orb.nashua.nh.us> -+ spidb\100cpan.org -+ spider.boardman\100orb.nashua.nh.us -+ root\100peano.zk3.dec.com -s.denaxas\100gmail.com spiros\100lokku.com -spp\100ds.net spp\100psa.pencom.com -+ spp\100psasolar.colltech.com -+ spp\100spotter.yi.org -stef\100mongueurs.net stef\100payrard.net -+ s.payrard\100wanadoo.fr -+ properler\100freesurf.fr -+ stef\100francenet.fr -stevan\100cpan.org stevan.little\100gmail.com -+ stevan.little\100iinteractive.com -sthoenna\100efn.org ysth\100raven.shiftboard.com - -tassilo.parseval\100post.rwth-aachen.de tassilo.von.parseval\100rwth-aachen.de -tchrist\100perl.com tchrist\100mox.perl.com -+ tchrist\100jhereg.perl.com -thomas.dorner\100start.de tdorner\100amadeus.net -tjenness\100cpan.org t.jenness\100jach.hawaii.edu -+ timj\100jach.hawaii.edu -tobez\100tobez.org tobez\100plab.ku.dk -toddr\100cpan.org toddr\100cpanel.net -tom\100compton.nu thh\100cyberscience.com -tom.horsley\100mail.ccur.com tom.horsley\100ccur.com -+ tom\100amber.ssd.hcsc.com - -vkonovalov\100lucent.com vkonovalov\100peterstar.ru -+ konovalo\100mail.wplus.net -+ vadim\100vkonovalov.ru -+ vkonovalov\100spb.lucent.com -+ vkonovalov\100alcatel-lucent.com -+ vadim.konovalov\100alcatel-lucent.com - -whatever\100davidnicol.com davidnicol\100gmail.com -wolfgang.laun\100alcatel.at wolfgang.laun\100chello.at -+ wolfgang.laun\100thalesgroup.com -+ wolfgang.laun\100gmail.com -wolfsage\100gmail.com mhorsfall\100darmstadtium.(none) -yath\100yath.de yath-perlbug\100yath.de diff --git a/gnu/usr.bin/perl/Porting/checkcfgvar.pl b/gnu/usr.bin/perl/Porting/checkcfgvar.pl index fb80b6fb0c1..69004a72939 100755 --- a/gnu/usr.bin/perl/Porting/checkcfgvar.pl +++ b/gnu/usr.bin/perl/Porting/checkcfgvar.pl @@ -7,34 +7,29 @@ # # VMS is probably not handled properly here, due to their own # rather elaborate DCL scripting. -# use strict; use warnings; use autodie; -sub usage -{ +sub usage { my $err = shift and select STDERR; print "usage: $0 [--list] [--regen] [--default=value]\n"; exit $err; } # usage -use Getopt::Long; -my $opt_l = 0; -my $opt_r = 0; -my $default; -my $tap = 0; -my $test; +use Getopt::Long qw(:config bundling); GetOptions ( - "help|?" => sub { usage (0); }, - "l|list!" => \$opt_l, - "regen" => \$opt_r, - "default=s" => \$default, - "tap" => \$tap, + "help|?" => sub { usage (0); }, + "l|list!" => \(my $opt_l = 0), + "regen" => \(my $opt_r = 0), + "default=s" => \ my $default, + "tap" => \(my $tap = 0), + "v|verbose:1" => \(my $opt_v = 0), ) or usage (1); $default and $default =~ s/^'(.*)'$/$1/; # Will be quoted on generation +my $test; require './regen/regen_lib.pl' if $opt_r; @@ -61,6 +56,7 @@ my @CFG = ( my @MASTER_CFG; { my %seen; + $opt_v and warn "Reading $MASTER_CFG ...\n"; open my $fh, '<', $MASTER_CFG; while (<$fh>) { while (/[^\\]\$([a-z]\w+)/g) { @@ -76,6 +72,7 @@ my @MASTER_CFG; my %MANIFEST; { + $opt_v and warn "Reading MANIFEST ...\n"; open my $fh, '<', 'MANIFEST'; while (<$fh>) { $MANIFEST{$1}++ if /^(.+?)\t/; @@ -87,14 +84,15 @@ printf "1..%d\n", 2 * @CFG if $tap; for my $cfg (sort @CFG) { unless (exists $MANIFEST{$cfg}) { - print STDERR "[skipping not-expected '$cfg']\n"; + warn "[skipping not-expected '$cfg']\n"; next; } my %cfg; my $section = 0; my @lines; - open my $fh, '<', $cfg; + $opt_v and warn "Reading $cfg ...\n"; + open my $fh, '<', $cfg or die "$cfg: $!\n"; if ($cfg eq 'configure.com') { ++$cfg{startperl}; # Cheat. diff --git a/gnu/usr.bin/perl/Porting/cmpVERSION.pl b/gnu/usr.bin/perl/Porting/cmpVERSION.pl index be24e091def..187763b0d40 100644 --- a/gnu/usr.bin/perl/Porting/cmpVERSION.pl +++ b/gnu/usr.bin/perl/Porting/cmpVERSION.pl @@ -19,13 +19,14 @@ use 5.006; use ExtUtils::MakeMaker; use File::Spec::Functions qw(devnull); use Getopt::Long; +use Time::Local qw(timelocal_posix); my ($diffs, $exclude_upstream, $tag_to_compare, $tap); unless (GetOptions('diffs' => \$diffs, - 'exclude|x' => \$exclude_upstream, - 'tag=s' => \$tag_to_compare, - 'tap' => \$tap, - ) && @ARGV == 0) { + 'exclude|x' => \$exclude_upstream, + 'tag=s' => \$tag_to_compare, + 'tap' => \$tap, + ) && @ARGV == 0) { die "usage: $0 [ -d -x --tag TAG --tap]"; } @@ -39,12 +40,12 @@ if (-d ".git" || (exists $ENV{GIT_DIR} && -d $ENV{GIT_DIR})) { my $found; if (-f '.git') { # the hash of the initial commit in perl.git (perl-1.0) - my $commit = '8d063cd8450e59ea1c611a2f4f5a21059a2804f1'; - my $out = `git rev-parse --verify --quiet '$commit^{commit}'`; - chomp $out; - if($out eq $commit) { + my $commit = '8d063cd8450e59ea1c611a2f4f5a21059a2804f1'; + my $out = `git rev-parse --verify --quiet '$commit^{commit}'`; + chomp $out; + if($out eq $commit) { ++$found; - } + } } die "$0: This is a Perl directory but does not look like Git working directory\n" @@ -68,7 +69,7 @@ unless (defined $tag_to_compare) { unless (length $tag_to_compare) { die "$0: Git found, but no Git tags found\n" - unless $tap; + unless $tap; print "1..0 # SKIP: Git found, but no Git tags found\n"; exit 0; } @@ -82,15 +83,45 @@ unless ($tag_exists eq $tag_to_compare) { exit 0; } +my $commit_epoch = `git log -1 --format="%ct"`; +chomp($commit_epoch); +# old git versions dont support taggerdate:unix. so use :iso8601 and then +# use timelocal_posix() to convert to an epoch. +my $tag_date = `git for-each-ref --format="%(taggerdate:iso8601)" refs/tags/$tag_to_compare`; +chomp($tag_date); +my $tag_epoch= do { + my ($Y,$M,$D,$h,$m,$s) = split /[- :]/, $tag_date; # 2023-03-20 22:49:09 + timelocal_posix($s,$m,$h,$D,$M,$Y); +}; + +if ($commit_epoch - $tag_epoch > 60 * 24 * 60 * 60) { + my $months = sprintf "%.2f", ($commit_epoch - $tag_epoch) / (30 * 24 * 60 * 60); + my $message= + "Tag '$tag_to_compare' is very old compared to the most recent commit.\n" + . "We normally release a new version every month, and this one is $months months\n" + . "older than the current commit. You probably have not synchronized your tags.\n" + . "This is common with github clones. You can try the following:\n" + . "\n" + . " git remote add -f upstream git\@github.com:Perl/perl5.git\n" + . "\n" + . "to fix your checkout.\n"; + die "$0: $message" unless $tap; + $message= "$message"; + $message=~s/^/# /mg; + print STDERR "\n$message"; + print "1..0 # SKIP: Tag '$tag_to_compare' is $months months old. Update your tags!\n"; + exit 0; +} + my %upstream_files; if ($exclude_upstream) { unshift @INC, 'Porting'; require Maintainers; for my $m (grep {!defined $Maintainers::Modules{$_}{UPSTREAM} - or $Maintainers::Modules{$_}{UPSTREAM} ne 'blead'} - keys %Maintainers::Modules) { - $upstream_files{$_} = 1 for Maintainers::get_module_files($m); + or $Maintainers::Modules{$_}{UPSTREAM} ne 'blead'} + keys %Maintainers::Modules) { + $upstream_files{$_} = 1 for Maintainers::get_module_files($m); } } @@ -140,8 +171,8 @@ my %skip; # usually due to some # mix-up my %skip_versions = ( - # 'some/sample/file.pm' => [ '1.23', '1.24' ], - ); + # 'some/sample/file.pm' => [ '1.23', '1.24' ], +); my $skip_dirs = qr|^t/lib|; @@ -149,30 +180,30 @@ sub pm_file_from_xs { my $xs = shift; foreach my $try (sub { - # First try a .pm at the same level as the .xs file - # with the same basename - return shift =~ s/\.xs\z//r; - }, - sub { - # Try for a (different) .pm at the same level, based - # on the directory name: - my ($path) = shift =~ m!^(.*)/!; - my ($last) = $path =~ m!([^-/]+)\z!; - return "$path/$last"; - }, - sub { - # Try to work out the extension's full package, and - # look for a .pm in lib/ based on that: - my ($path) = shift =~ m!^(.*)/!; - my ($last) = $path =~ m!([^/]+)\z!; - $last = 'List-Util' if $last eq 'Scalar-List-Utils'; - $last =~ tr !-!/!; - return "$path/lib/$last"; - }) { - # For all cases, first look to see if the .pm file is generated. - my $base = $try->($xs); - return "${base}_pm.PL" if -f "${base}_pm.PL"; - return "${base}.pm" if -f "${base}.pm"; + # First try a .pm at the same level as the .xs file + # with the same basename + return shift =~ s/\.xs\z//r; + }, + sub { + # Try for a (different) .pm at the same level, based + # on the directory name: + my ($path) = shift =~ m!^(.*)/!; + my ($last) = $path =~ m!([^-/]+)\z!; + return "$path/$last"; + }, + sub { + # Try to work out the extension's full package, and + # look for a .pm in lib/ based on that: + my ($path) = shift =~ m!^(.*)/!; + my ($last) = $path =~ m!([^/]+)\z!; + $last = 'List-Util' if $last eq 'Scalar-List-Utils'; + $last =~ tr !-!/!; + return "$path/lib/$last"; + }) { + # For all cases, first look to see if the .pm file is generated. + my $base = $try->($xs); + return "${base}_pm.PL" if -f "${base}_pm.PL"; + return "${base}.pm" if -f "${base}.pm"; } die "No idea which .pm file corresponds to '$xs', so aborting"; @@ -185,6 +216,7 @@ sub pm_file_from_xs { # with XS modules with more than one XS file, and "interesting" layouts. my %module_diffs; +my %dist_diffs; foreach (`git --no-pager diff --name-only $tag_to_compare --diff-filter=ACMRTUXB`) { chomp; @@ -193,24 +225,27 @@ foreach (`git --no-pager diff --name-only $tag_to_compare --diff-filter=ACMRTUXB next if $this_dir =~ $skip_dirs || exists $skip{$_}; next if exists $upstream_files{$_}; if (/\.pm\z/ || m|^lib/.*\.pl\z| || /_pm\.PL\z/) { - push @{$module_diffs{$_}}, $_; + push @{$module_diffs{$_}}, $_; } elsif (/\.xs\z/ && !/\bt\b/) { - push @{$module_diffs{pm_file_from_xs($_)}}, $_; + push @{$module_diffs{pm_file_from_xs($_)}}, $_; + } elsif (!/\bt\b/ && /\.[ch]\z/ && m!^((?:dist|ext|cpan)/[^/]+)/!) { + push @{ $dist_diffs{$1} }, $_; } } -unless (%module_diffs) { +unless (%module_diffs || %dist_diffs) { print "1..1\nok 1 - No difference found\n" if $tap; exit; } -printf "1..%d\n" => scalar keys %module_diffs if $tap; +printf "1..%d\n" => (keys(%module_diffs) + keys (%dist_diffs)) if $tap; print "#\n# Comparing against $tag_to_compare ....\n#\n" if $tap; my $count; my $diff_cmd = "git --no-pager diff $tag_to_compare "; my $q = ($^O eq 'MSWin32' || $^O eq 'VMS') ? '"' : "'"; my (@diff); +my %dist_bumped; foreach my $pm_file (sort keys %module_diffs) { # git has already told us that the files differ, so no need to grab each as @@ -223,34 +258,59 @@ foreach my $pm_file (sort keys %module_diffs) { if (!defined $orig_pm_version || $orig_pm_version eq 'undef') { # sigh print "ok $count - SKIP Can't parse \$VERSION in $pm_file\n" if $tap; + + # Behave like a version bump if the orig version could not be parsed, + # but the current file could + if (defined $pm_version && $pm_version ne 'undef' && $pm_file =~ m!^((?:dist|ext|cpan)/[^/]+)/!) { + $dist_bumped{$1}++; + } } elsif (!defined $pm_version || $pm_version eq 'undef') { my $nok = "not ok $count - in $pm_file version was $orig_pm_version, now unparsable\n"; print $nok if $tap; print STDERR "# $nok\n"; } elsif ($pm_version ne $orig_pm_version) { # good print "ok $count - $pm_file\n" if $tap; + if ($pm_file =~ m!^((?:dist|ext|cpan)/[^/]+)/!) { + $dist_bumped{$1}++; + } } else { - if ($tap) { + if ($tap) { print "#\n# " . '-' x 75 . "\n" . "# Version number ($pm_version) unchanged since" . " $tag_to_compare, but contents have changed:\n#\n"; - foreach (sort @{$module_diffs{$pm_file}}) { - print "# $_" for `$diff_cmd $q$_$q`; - } + foreach (sort @{$module_diffs{$pm_file}}) { + print "# $_" for `$diff_cmd $q$_$q`; + } print "# " . '-' x 75 . "\n"; - if (exists $skip_versions{$pm_file} - and grep $pm_version eq $_, @{$skip_versions{$pm_file}}) { - print "ok $count - SKIP $pm_file version $pm_version\n"; - } else { - my $nok = "not ok $count - $pm_file version $pm_version\n"; - print $nok; - print STDERR "# $nok"; - } - } else { - push @diff, @{$module_diffs{$pm_file}}; - print "$pm_file version $pm_version\n"; - } + if (exists $skip_versions{$pm_file} + and grep $pm_version eq $_, @{$skip_versions{$pm_file}}) { + print "ok $count - SKIP $pm_file version $pm_version\n"; + } else { + my $nok = "not ok $count - $pm_file version $pm_version\n"; + print $nok; + print STDERR "# $nok"; + } + } else { + push @diff, @{$module_diffs{$pm_file}}; + print "$pm_file version $pm_version\n"; + } + } +} + +foreach my $dist (sort keys %dist_diffs) { + my $file_count = @{ $dist_diffs{$dist} }; + my $msg = $file_count == 1 ? "file was" : "files were"; + ++$count; + + if ($dist_bumped{$dist}) { + print "ok $count - in $dist $file_count $msg modified and a version was bumped\n"; + } else { + my $nok = "not ok $count - in $dist $file_count $msg modified but no versions were bumped\n"; + print "# No versions bumped in $dist but $file_count $msg modified\n"; + print "# $_\n" for (sort @{$dist_diffs{$dist}}); + print $nok if $tap; + print STDERR "# $nok\n"; } } @@ -264,7 +324,7 @@ sub get_file_from_git { if ($diffs) { for (sort @diff) { - print "\n"; - system "$diff_cmd $q$_$q"; + print "\n"; + system "$diff_cmd $q$_$q"; } } diff --git a/gnu/usr.bin/perl/Porting/config.sh b/gnu/usr.bin/perl/Porting/config.sh index dd772e80ce9..f914487947e 100644 --- a/gnu/usr.bin/perl/Porting/config.sh +++ b/gnu/usr.bin/perl/Porting/config.sh @@ -8,25 +8,20 @@ # Package name : perl5 # Source directory : . -# Configuration time: Sat Aug 22 16:03:38 CEST 2020 -# Configured by : yourname -# Target system : linux lx09 5.8.0-1-default #1 smp tue aug 4 07:30:59 utc 2020 (9bc0044) x86_64 x86_64 x86_64 gnulinux +# Configuration time: Fri Apr 28 15:57:25 CEST 2023 +# Configured by : merijn +# Target system : linux lx09 6.2.12-1-default #1 smp preempt_dynamic thu apr 20 11:01:10 utc 2023 (eb3255d) x86_64 x86_64 x86_64 gnulinux : Configure command line arguments. -config_arg0='Configure' -config_args='-Dprefix=/opt/perl -Dcf_by=yourname -Dcf_email=yourname@yourhost.yourplace.com -Dperladmin=yourname@yourhost.yourplace.com -Dmydomain=.yourplace.com -Dmyhostname=yourhost -Duse64bitint -Duselongdouble -Dusethreads -Dusedevel -des' -config_argc=11 -config_arg1='-Dprefix=/opt/perl' -config_arg2='-Dcf_by=yourname' -config_arg3='-Dcf_email=yourname@yourhost.yourplace.com' -config_arg4='-Dperladmin=yourname@yourhost.yourplace.com' -config_arg5='-Dmydomain=.yourplace.com' -config_arg6='-Dmyhostname=yourhost' -config_arg7='-Duse64bitint' -config_arg8='-Duselongdouble' -config_arg9='-Dusethreads' -config_arg10='-Dusedevel' -config_arg11='-des' +config_arg0='./Configure' +config_args='-Dusedevel -Duse64bitall -Dusequadmath -Dusethreads -Duseithreads -des' +config_argc=6 +config_arg1='-Dusedevel' +config_arg2='-Duse64bitall' +config_arg3='-Dusequadmath' +config_arg4='-Dusethreads' +config_arg5='-Duseithreads' +config_arg6='-des' Author='' Date='' @@ -44,24 +39,24 @@ _o='.o' afs='false' afsroot='/afs' alignbytes='16' -aphostname='' +aphostname='/usr/bin/hostname' api_revision='5' api_subversion='0' -api_version='36' -api_versionstring='5.36.0' +api_version='38' +api_versionstring='5.38.0' ar='ar' -archlib='/opt/perl/lib/5.36.3/x86_64-linux-thread-multi-ld' -archlibexp='/opt/perl/lib/5.36.3/x86_64-linux-thread-multi-ld' +archlib='/pro/lib/perl5/5.38.2/x86_64-linux-thread-multi-quadmath' +archlibexp='/pro/lib/perl5/5.38.2/x86_64-linux-thread-multi-quadmath' archname64='' -archname='x86_64-linux-thread-multi-ld' +archname='x86_64-linux-thread-multi-quadmath' archobjs='' asctime_r_proto='REENTRANT_PROTO_B_SB' awk='awk' baserev='5.0' bash='' -bin='/opt/perl/bin' +bin='/pro/bin' bin_ELF='define' -binexp='/opt/perl/bin' +binexp='/pro/bin' bison='bison' byacc='byacc' byteorder='12345678' @@ -71,14 +66,14 @@ cat='cat' cc='cc' cccdlflags='-fPIC' ccdlflags='-Wl,-E' -ccflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' +ccflags='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' ccsymbols='' ccversion='' -cf_by='yourname' -cf_email='yourname@yourhost.yourplace.com' -cf_time='Sat Aug 22 16:03:38 CEST 2020' +cf_by='merijn' +cf_email='hmbrand@cpan.org' +cf_time='Fri Apr 28 15:57:25 CEST 2023' charbits='8' charsize='1' chgrp='' @@ -94,18 +89,18 @@ cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='' -cppflags='-D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include' +cppflags='-D_REENTRANT -D_GNU_SOURCE -pie -fPIE -fPIC -DDEBUGGING -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/pro/local/include' cpplast='-' cppminus='-' cpprun='cc -E' cppstdin='cc -E' -cppsymbols='__amd64=1 __amd64__=1 __ATOMIC_ACQ_REL=4 __ATOMIC_ACQUIRE=2 __ATOMIC_CONSUME=1 __ATOMIC_HLE_ACQUIRE=65536 __ATOMIC_HLE_RELEASE=131072 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __code_model_small__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MAX_EXP__=1024 __DBL_MIN_10_EXP__=(-307) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DBL_MIN_EXP__=(-1021) __DBL_NORM_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DEC128_EPSILON__=1E-33DL __DEC128_MANT_DIG__=34 __DEC128_MAX__=9.999999999999999999999999999999999E6144DL __DEC128_MAX_EXP__=6145 __DEC128_MIN__=1E-6143DL __DEC128_MIN_EXP__=(-6142) __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 __DEC32_MAX__=9.999999E96DF __DEC32_MAX_EXP__=97 __DEC32_MIN__=1E-95DF __DEC32_MIN_EXP__=(-94) __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX__=9.999999999999999E384DD __DEC64_MAX_EXP__=385 __DEC64_MIN__=1E-383DD __DEC64_MIN_EXP__=(-382) __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DEC_EVAL_METHOD__=2 __DECIMAL_BID_FORMAT__=1 __DECIMAL_DIG__=21 __ELF__=1 _FILE_OFFSET_BITS=64 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MAX_EXP__=16384 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT128_MIN_EXP__=(-16381) __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MAX_EXP__=128 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT32_MIN_EXP__=(-125) __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MAX_EXP__=1024 __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32X_MIN_EXP__=(-1021) __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MAX_EXP__=1024 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT64_MIN_EXP__=(-1021) __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64X_DECIMAL_DIG__=21 __FLT64X_DENORM_MIN__=3.64519953188247460252840593361941982e-4951F64x __FLT64X_DIG__=18 __FLT64X_EPSILON__=1.08420217248550443400745280086994171e-19F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_MANT_DIG__=64 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX__=1.18973149535723176502126385303097021e+4932F64x __FLT64X_MAX_EXP__=16384 __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64X_MIN_EXP__=(-16381) __FLT64X_NORM_MAX__=1.18973149535723176502126385303097021e+4932F64x __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD__=0 __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MAX_EXP__=128 __FLT_MIN_10_EXP__=(-37) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_MIN_EXP__=(-125) __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F __FLT_RADIX__=2 __FXSR__=1 __GCC_ASM_FLAG_OUTPUTS__=1 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC__=2 __GLIBC_MINOR__=31 __GNUC__=10 __GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNU_LIBRARY__=6 __gnu_linux__=1 _GNU_SOURCE=1 __GXX_ABI_VERSION=1014 __HAVE_SPECULATION_SAFE_VALUE=1 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_WIDTH__=32 __k8=1 __k8__=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 __LDBL_DECIMAL_DIG__=21 __LDBL_DENORM_MIN__=3.64519953188247460252840593361941982e-4951L __LDBL_DIG__=18 __LDBL_EPSILON__=1.08420217248550443400745280086994171e-19L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=64 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX__=1.18973149535723176502126385303097021e+4932L __LDBL_MAX_EXP__=16384 __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LDBL_MIN_EXP__=(-16381) __LDBL_NORM_MAX__=1.18973149535723176502126385303097021e+4932L __linux=1 __linux__=1 linux=1 __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 _LP64=1 __MMX__=1 __MMX_WITH_SSE__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 _REENTRANT=1 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SEG_FS=1 __SEG_GS=1 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZE_MAX__=0xffffffffffffffffUL __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT128__=16 __SIZEOF_FLOAT__=4 __SIZEOF_FLOAT80__=16 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG__=8 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __SSE__=1 __SSE2__=1 __SSE2_MATH__=1 __SSE_MATH__=1 __STDC__=1 __STDC_HOSTED__=1 __STDC_IEC_559__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_ISO_10646__=201706L _STDC_PREDEF_H=1 __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __unix=1 __unix__=1 unix=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USER_LABEL_PREFIX__= __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="10.2.1\ 20200805\ [revision\ dda1e9d08434def88ed86557d08b23251332c5aa]" __WCHAR_MAX__=0x7fffffff __WCHAR_MIN__=(-0x7fffffff\ -\ 1) __WCHAR_TYPE__=int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __x86_64=1 __x86_64__=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1' +cppsymbols='__amd64=1 __amd64__=1 __ATOMIC_ACQ_REL=4 __ATOMIC_ACQUIRE=2 __ATOMIC_CONSUME=1 __ATOMIC_HLE_ACQUIRE=65536 __ATOMIC_HLE_RELEASE=131072 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BFLT16_DECIMAL_DIG__=4 __BFLT16_DENORM_MIN__=9.18354961579912115600575419704879436e-41BF16 __BFLT16_DIG__=2 __BFLT16_EPSILON__=7.81250000000000000000000000000000000e-3BF16 __BFLT16_HAS_DENORM__=1 __BFLT16_HAS_INFINITY__=1 __BFLT16_HAS_QUIET_NAN__=1 __BFLT16_IS_IEC_60559__=0 __BFLT16_MANT_DIG__=8 __BFLT16_MAX_10_EXP__=38 __BFLT16_MAX__=3.38953138925153547590470800371487867e+38BF16 __BFLT16_MAX_EXP__=128 __BFLT16_MIN_10_EXP__=(-37) __BFLT16_MIN__=1.17549435082228750796873653722224568e-38BF16 __BFLT16_MIN_EXP__=(-125) __BFLT16_NORM_MAX__=3.38953138925153547590470800371487867e+38BF16 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __code_model_small__=1 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544176568792868221372e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_IS_IEC_60559__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DBL_MAX_EXP__=1024 __DBL_MIN_10_EXP__=(-307) __DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L) __DBL_MIN_EXP__=(-1021) __DBL_NORM_MAX__=((double)1.79769313486231570814527423731704357e+308L) __DEC128_EPSILON__=1E-33DL __DEC128_MANT_DIG__=34 __DEC128_MAX__=9.999999999999999999999999999999999E6144DL __DEC128_MAX_EXP__=6145 __DEC128_MIN__=1E-6143DL __DEC128_MIN_EXP__=(-6142) __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 __DEC32_MAX__=9.999999E96DF __DEC32_MAX_EXP__=97 __DEC32_MIN__=1E-95DF __DEC32_MIN_EXP__=(-94) __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX__=9.999999999999999E384DD __DEC64_MAX_EXP__=385 __DEC64_MIN__=1E-383DD __DEC64_MIN_EXP__=(-382) __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DEC_EVAL_METHOD__=2 __DECIMAL_BID_FORMAT__=1 __DECIMAL_DIG__=21 __ELF__=1 _FILE_OFFSET_BITS=64 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT128_DECIMAL_DIG__=36 __FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128 __FLT128_DIG__=33 __FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128 __FLT128_HAS_DENORM__=1 __FLT128_HAS_INFINITY__=1 __FLT128_HAS_QUIET_NAN__=1 __FLT128_IS_IEC_60559__=1 __FLT128_MANT_DIG__=113 __FLT128_MAX_10_EXP__=4932 __FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT128_MAX_EXP__=16384 __FLT128_MIN_10_EXP__=(-4931) __FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128 __FLT128_MIN_EXP__=(-16381) __FLT128_NORM_MAX__=1.18973149535723176508575932662800702e+4932F128 __FLT16_DECIMAL_DIG__=5 __FLT16_DENORM_MIN__=5.96046447753906250000000000000000000e-8F16 __FLT16_DIG__=3 __FLT16_EPSILON__=9.76562500000000000000000000000000000e-4F16 __FLT16_HAS_DENORM__=1 __FLT16_HAS_INFINITY__=1 __FLT16_HAS_QUIET_NAN__=1 __FLT16_IS_IEC_60559__=1 __FLT16_MANT_DIG__=11 __FLT16_MAX_10_EXP__=4 __FLT16_MAX__=6.55040000000000000000000000000000000e+4F16 __FLT16_MAX_EXP__=16 __FLT16_MIN_10_EXP__=(-4) __FLT16_MIN__=6.10351562500000000000000000000000000e-5F16 __FLT16_MIN_EXP__=(-13) __FLT16_NORM_MAX__=6.55040000000000000000000000000000000e+4F16 __FLT32_DECIMAL_DIG__=9 __FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32 __FLT32_DIG__=6 __FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32 __FLT32_HAS_DENORM__=1 __FLT32_HAS_INFINITY__=1 __FLT32_HAS_QUIET_NAN__=1 __FLT32_IS_IEC_60559__=1 __FLT32_MANT_DIG__=24 __FLT32_MAX_10_EXP__=38 __FLT32_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32_MAX_EXP__=128 __FLT32_MIN_10_EXP__=(-37) __FLT32_MIN__=1.17549435082228750796873653722224568e-38F32 __FLT32_MIN_EXP__=(-125) __FLT32_NORM_MAX__=3.40282346638528859811704183484516925e+38F32 __FLT32X_DECIMAL_DIG__=17 __FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x __FLT32X_DIG__=15 __FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x __FLT32X_HAS_DENORM__=1 __FLT32X_HAS_INFINITY__=1 __FLT32X_HAS_QUIET_NAN__=1 __FLT32X_IS_IEC_60559__=1 __FLT32X_MANT_DIG__=53 __FLT32X_MAX_10_EXP__=308 __FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT32X_MAX_EXP__=1024 __FLT32X_MIN_10_EXP__=(-307) __FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x __FLT32X_MIN_EXP__=(-1021) __FLT32X_NORM_MAX__=1.79769313486231570814527423731704357e+308F32x __FLT64_DECIMAL_DIG__=17 __FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64 __FLT64_DIG__=15 __FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64 __FLT64_HAS_DENORM__=1 __FLT64_HAS_INFINITY__=1 __FLT64_HAS_QUIET_NAN__=1 __FLT64_IS_IEC_60559__=1 __FLT64_MANT_DIG__=53 __FLT64_MAX_10_EXP__=308 __FLT64_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64_MAX_EXP__=1024 __FLT64_MIN_10_EXP__=(-307) __FLT64_MIN__=2.22507385850720138309023271733240406e-308F64 __FLT64_MIN_EXP__=(-1021) __FLT64_NORM_MAX__=1.79769313486231570814527423731704357e+308F64 __FLT64X_DECIMAL_DIG__=21 __FLT64X_DENORM_MIN__=3.64519953188247460252840593361941982e-4951F64x __FLT64X_DIG__=18 __FLT64X_EPSILON__=1.08420217248550443400745280086994171e-19F64x __FLT64X_HAS_DENORM__=1 __FLT64X_HAS_INFINITY__=1 __FLT64X_HAS_QUIET_NAN__=1 __FLT64X_IS_IEC_60559__=1 __FLT64X_MANT_DIG__=64 __FLT64X_MAX_10_EXP__=4932 __FLT64X_MAX__=1.18973149535723176502126385303097021e+4932F64x __FLT64X_MAX_EXP__=16384 __FLT64X_MIN_10_EXP__=(-4931) __FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x __FLT64X_MIN_EXP__=(-16381) __FLT64X_NORM_MAX__=1.18973149535723176502126385303097021e+4932F64x __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000000000000000000e-7F __FLT_EVAL_METHOD__=0 __FLT_EVAL_METHOD_TS_18661_3__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_IS_IEC_60559__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX__=3.40282346638528859811704183484516925e+38F __FLT_MAX_EXP__=128 __FLT_MIN_10_EXP__=(-37) __FLT_MIN__=1.17549435082228750796873653722224568e-38F __FLT_MIN_EXP__=(-125) __FLT_NORM_MAX__=3.40282346638528859811704183484516925e+38F __FLT_RADIX__=2 __FXSR__=1 __GCC_ASM_FLAG_OUTPUTS__=1 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_CONSTRUCTIVE_SIZE=64 __GCC_DESTRUCTIVE_SIZE=64 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GCC_IEC_559=2 __GCC_IEC_559_COMPLEX=2 __GLIBC__=2 __GLIBC_MINOR__=37 __GNUC__=13 __GNUC_EXECUTION_CHARSET_NAME="UTF-8" __GNUC_MINOR__=0 __GNUC_PATCHLEVEL__=1 __GNUC_STDC_INLINE__=1 __GNUC_WIDE_EXECUTION_CHARSET_NAME="UTF-32LE" __GNU_LIBRARY__=6 __gnu_linux__=1 _GNU_SOURCE=1 __GXX_ABI_VERSION=1018 __HAVE_SPECULATION_SAFE_VALUE=1 __INT16_C=__INT16_C __INT16_MAX__=0x7fff __INT16_TYPE__=short\ int __INT32_C=__INT32_C __INT32_MAX__=0x7fffffff __INT32_TYPE__=int __INT64_C=__INT64_C __INT64_MAX__=0x7fffffffffffffffL __INT64_TYPE__=long\ int __INT8_C=__INT8_C __INT8_MAX__=0x7f __INT8_TYPE__=signed\ char __INT_FAST16_MAX__=0x7fffffffffffffffL __INT_FAST16_TYPE__=long\ int __INT_FAST16_WIDTH__=64 __INT_FAST32_MAX__=0x7fffffffffffffffL __INT_FAST32_TYPE__=long\ int __INT_FAST32_WIDTH__=64 __INT_FAST64_MAX__=0x7fffffffffffffffL __INT_FAST64_TYPE__=long\ int __INT_FAST64_WIDTH__=64 __INT_FAST8_MAX__=0x7f __INT_FAST8_TYPE__=signed\ char __INT_FAST8_WIDTH__=8 __INT_LEAST16_MAX__=0x7fff __INT_LEAST16_TYPE__=short\ int __INT_LEAST16_WIDTH__=16 __INT_LEAST32_MAX__=0x7fffffff __INT_LEAST32_TYPE__=int __INT_LEAST32_WIDTH__=32 __INT_LEAST64_MAX__=0x7fffffffffffffffL __INT_LEAST64_TYPE__=long\ int __INT_LEAST64_WIDTH__=64 __INT_LEAST8_MAX__=0x7f __INT_LEAST8_TYPE__=signed\ char __INT_LEAST8_WIDTH__=8 __INT_MAX__=0x7fffffff __INTMAX_C=__INTMAX_C __INTMAX_MAX__=0x7fffffffffffffffL __INTMAX_TYPE__=long\ int __INTMAX_WIDTH__=64 __INTPTR_MAX__=0x7fffffffffffffffL __INTPTR_TYPE__=long\ int __INTPTR_WIDTH__=64 __INT_WIDTH__=32 __k8=1 __k8__=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 __LDBL_DECIMAL_DIG__=21 __LDBL_DENORM_MIN__=3.64519953188247460252840593361941982e-4951L __LDBL_DIG__=18 __LDBL_EPSILON__=1.08420217248550443400745280086994171e-19L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_IS_IEC_60559__=1 __LDBL_MANT_DIG__=64 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX__=1.18973149535723176502126385303097021e+4932L __LDBL_MAX_EXP__=16384 __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN__=3.36210314311209350626267781732175260e-4932L __LDBL_MIN_EXP__=(-16381) __LDBL_NORM_MAX__=1.18973149535723176502126385303097021e+4932L __linux=1 __linux__=1 linux=1 __LONG_LONG_MAX__=0x7fffffffffffffffLL __LONG_LONG_WIDTH__=64 __LONG_MAX__=0x7fffffffffffffffL __LONG_WIDTH__=64 __LP64__=1 _LP64=1 __MMX__=1 __MMX_WITH_SSE__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __pic__=2 __PIC__=2 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=0x7fffffffffffffffL __PTRDIFF_TYPE__=long\ int __PTRDIFF_WIDTH__=64 _REENTRANT=1 __REGISTER_PREFIX__= __SCHAR_MAX__=0x7f __SCHAR_WIDTH__=8 __SEG_FS=1 __SEG_GS=1 __SHRT_MAX__=0x7fff __SHRT_WIDTH__=16 __SIG_ATOMIC_MAX__=0x7fffffff __SIG_ATOMIC_MIN__=(-0x7fffffff\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIG_ATOMIC_WIDTH__=32 __SIZE_MAX__=0xffffffffffffffffUL __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT128__=16 __SIZEOF_FLOAT__=4 __SIZEOF_FLOAT80__=16 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG__=8 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_TYPE__=long\ unsigned\ int __SIZE_WIDTH__=64 __SSE__=1 __SSE2__=1 __SSE2_MATH__=1 __SSE_MATH__=1 __STDC__=1 __STDC_HOSTED__=1 __STDC_IEC_559__=1 __STDC_IEC_559_COMPLEX__=1 __STDC_IEC_60559_BFP__=201404L __STDC_IEC_60559_COMPLEX__=201404L __STDC_ISO_10646__=201706L _STDC_PREDEF_H=1 __STDC_UTF_16__=1 __STDC_UTF_32__=1 __STDC_VERSION__=201710L __UINT16_C=__UINT16_C __UINT16_MAX__=0xffff __UINT16_TYPE__=short\ unsigned\ int __UINT32_C=__UINT32_C __UINT32_MAX__=0xffffffffU __UINT32_TYPE__=unsigned\ int __UINT64_C=__UINT64_C __UINT64_MAX__=0xffffffffffffffffUL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C=__UINT8_C __UINT8_MAX__=0xff __UINT8_TYPE__=unsigned\ char __UINT_FAST16_MAX__=0xffffffffffffffffUL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=0xffffffffffffffffUL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=0xffffffffffffffffUL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=0xff __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=0xffff __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=0xffffffffU __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=0xffffffffffffffffUL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=0xff __UINT_LEAST8_TYPE__=unsigned\ char __UINTMAX_C=__UINTMAX_C __UINTMAX_MAX__=0xffffffffffffffffUL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=0xffffffffffffffffUL __UINTPTR_TYPE__=long\ unsigned\ int __unix=1 __unix__=1 unix=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USER_LABEL_PREFIX__= __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="13.0.1\ 20230421\ (prerelease)\ [revision\ f980561c60b0446cc427595198d7f3f4f90e0924]" __WCHAR_MAX__=0x7fffffff __WCHAR_MIN__=(-0x7fffffff\ -\ 1) __WCHAR_TYPE__=int __WCHAR_WIDTH__=32 __WINT_MAX__=0xffffffffU __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __WINT_WIDTH__=32 __x86_64=1 __x86_64__=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1' crypt_r_proto='REENTRANT_PROTO_B_CCS' cryptlib='' -csh='csh' +csh='tcsh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' -d_Gconvert='qgcvt((x),(n),(b))' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' @@ -141,6 +136,7 @@ d_attribute_nonnull='define' d_attribute_noreturn='define' d_attribute_pure='define' d_attribute_unused='define' +d_attribute_visibility='define' d_attribute_warn_unused_result='define' d_backtrace='define' d_bsd='undef' @@ -229,8 +225,8 @@ d_fdclose='undef' d_fdim='define' d_fds_bits='define' d_fegetround='define' -d_ffs='undef' -d_ffsl='undef' +d_ffs='define' +d_ffsl='define' d_fgetpos='define' d_finite='define' d_finitel='define' @@ -438,10 +434,10 @@ d_nextafter='define' d_nexttoward='define' d_nice='define' d_nl_langinfo='define' -d_nl_langinfo_l='undef' +d_nl_langinfo_l='define' d_non_int_bitfields='define' d_nv_preserves_uv='define' -d_nv_zero_is_allbits_zero='undef' +d_nv_zero_is_allbits_zero='define' d_off64_t='define' d_old_pthread_create_joinable='undef' d_oldpthreads='undef' @@ -509,6 +505,7 @@ d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' +d_setenv='define' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' @@ -607,21 +604,21 @@ d_strtoul='define' d_strtoull='define' d_strtouq='define' d_strxfrm='define' -d_strxfrm_l='undef' +d_strxfrm_l='define' d_suidsafe='undef' d_symlink='define' d_syscall='define' d_syscallproto='define' d_sysconf='define' d_sysernlst='' -d_syserrlst='define' +d_syserrlst='undef' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_tgamma='define' -d_thread_local='undef' +d_thread_local='define' d_thread_safe_nl_langinfo_l='define' d_time='define' d_timegm='define' @@ -714,11 +711,11 @@ fpostype='fpos_t' freetype='void' from=':' full_ar='/usr/bin/ar' -full_csh='/usr/bin/csh' +full_csh='/usr/bin/tcsh' full_sed='/usr/bin/sed' gccansipedantic='' gccosandvers='' -gccversion='10.2.1 20200805 [revision dda1e9d08434def88ed86557d08b23251332c5aa]' +gccversion='13.0.1 20230421 (prerelease) [revision f980561c60b0446cc427595198d7f3f4f90e0924]' getgrent_r_proto='REENTRANT_PROTO_I_SBWR' getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' @@ -746,7 +743,7 @@ gidtype='gid_t' glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib /lib64 /usr/lib64 /usr/local/lib64 ' gmake='gmake' gmtime_r_proto='REENTRANT_PROTO_S_TS' -gnulibc_version='2.31' +gnulibc_version='2.37' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' @@ -764,6 +761,7 @@ html3dir=' ' html3direxp='' i16size='2' i16type='short' +i32dformat='"d"' i32size='4' i32type='int' i64size='8' @@ -834,6 +832,7 @@ i_syssockio='undef' i_sysstat='define' i_sysstatfs='define' i_sysstatvfs='define' +i_syssyscall='define' i_systime='define' i_systimek='undef' i_systimes='define' @@ -857,28 +856,28 @@ ignore_versioned_solibs='y' inc_version_list='' inc_version_list_init='0' incpath='' -incpth='/usr/lib64/gcc/x86_64-suse-linux/10/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/include /usr/include' +incpth='/usr/lib64/gcc/x86_64-suse-linux/13/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/13/include-fixed /usr/x86_64-suse-linux/include /usr/include' inews='' -initialinstalllocation='/opt/perl/bin' -installarchlib='/opt/perl/lib/5.36.3/x86_64-linux-thread-multi-ld' -installbin='/opt/perl/bin' +initialinstalllocation='/pro/bin' +installarchlib='/pro/lib/perl5/5.38.2/x86_64-linux-thread-multi-quadmath' +installbin='/pro/bin' installhtml1dir='' installhtml3dir='' -installman1dir='/opt/perl/man/man1' -installman3dir='/opt/perl/man/man3' -installprefix='/opt/perl' -installprefixexp='/opt/perl' -installprivlib='/opt/perl/lib/5.36.3' -installscript='/opt/perl/bin' -installsitearch='/opt/perl/lib/site_perl/5.36.3/x86_64-linux-thread-multi-ld' -installsitebin='/opt/perl/bin' +installman1dir='/pro/local/man/man1' +installman3dir='/pro/local/man/man3' +installprefix='/pro' +installprefixexp='/pro' +installprivlib='/pro/lib/perl5/5.38.2' +installscript='/pro/bin' +installsitearch='/pro/lib/perl5/site_perl/5.38.2/x86_64-linux-thread-multi-quadmath' +installsitebin='/pro/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/opt/perl/lib/site_perl/5.36.3' -installsiteman1dir='/opt/perl/man/man1' -installsiteman3dir='/opt/perl/man/man3' -installsitescript='/opt/perl/bin' -installstyle='lib' +installsitelib='/pro/lib/perl5/site_perl/5.38.2' +installsiteman1dir='/pro/local/man/man1' +installsiteman3dir='/pro/local/man/man3' +installsitescript='/pro/bin' +installstyle='lib/perl5' installusrbinperl='undef' installvendorarch='' installvendorbin='' @@ -897,21 +896,21 @@ known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers attribut ksh='' ld='cc' ld_can_script='define' -lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong' -ldflags=' -fstack-protector-strong -L/usr/local/lib' +lddlflags='-shared -O2 -L/pro/local/lib -fstack-protector-strong' +ldflags='-L/pro/local/lib -fstack-protector-strong' ldflags_uselargefiles='' ldlibpthname='LD_LIBRARY_PATH' less='less' lib_ext='.a' -libc='libc-2.31.so' +libc='/lib/../lib64/libc.so.6' libperl='libperl.a' -libpth='/usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/lib /usr/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64' -libs='-lpthread -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat' -libsdirs=' /usr/lib/../lib64' -libsfiles=' libpthread.so libnsl.so libgdbm.so libdb.so libdl.so libm.so libcrypt.so libutil.so libc.so libgdbm_compat.so' -libsfound=' /usr/lib/../lib64/libpthread.so /usr/lib/../lib64/libnsl.so /usr/lib/../lib64/libgdbm.so /usr/lib/../lib64/libdb.so /usr/lib/../lib64/libdl.so /usr/lib/../lib64/libm.so /usr/lib/../lib64/libcrypt.so /usr/lib/../lib64/libutil.so /usr/lib/../lib64/libc.so /usr/lib/../lib64/libgdbm_compat.so' -libspath=' /usr/local/lib /usr/lib64/gcc/x86_64-suse-linux/10/include-fixed /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/lib /usr/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 /usr/lib64 /usr/local/lib64' -libswanted='cl pthread cl pthread socket inet nsl gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat' +libpth='/usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /data/pro/local/lib /usr/lib64 /usr/local/lib64' +libs='-lpthread -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat -lquadmath' +libsdirs=' /usr/lib64' +libsfiles=' libpthread.a libgdbm.so libdb.so libdl.a libm.so libcrypt.so libutil.a libc.so libgdbm_compat.so' +libsfound=' /usr/lib64/libpthread.a /usr/lib64/libgdbm.so /usr/lib64/libdb.so /usr/lib64/libdl.a /usr/lib64/libm.so /usr/lib64/libcrypt.so /usr/lib64/libutil.a /usr/lib64/libc.so /usr/lib64/libgdbm_compat.so' +libspath=' /usr/local/lib /usr/x86_64-suse-linux/lib /usr/lib /data/pro/local/lib /usr/lib64 /usr/local/lib64 /usr/lib64/gcc/x86_64-suse-linux/13 /usr/lib64/gcc/x86_64-suse-linux/13/../../../../lib64 /usr/lib64/gcc/x86_64-suse-linux/13/../../..' +libswanted='cl pthread socket inet gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD gdbm_compat' libswanted_uselargefiles='' line='' lint='' @@ -919,8 +918,8 @@ lkflags='' ln='ln' lns='/usr/bin/ln -s' localtime_r_proto='REENTRANT_PROTO_S_TS' -locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' -loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' +locincpth='/pro/local/include' +loclibpth='/pro/local/lib' longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00' longdblkind='3' longdblmantbits='64' @@ -940,11 +939,11 @@ make_set_make='#' mallocobj='' mallocsrc='' malloctype='void *' -man1dir='/opt/perl/man/man1' -man1direxp='/opt/perl/man/man1' +man1dir='/pro/local/man/man1' +man1direxp='/pro/local/man/man1' man1ext='1' -man3dir='/opt/perl/man/man3' -man3direxp='/opt/perl/man/man3' +man3dir='/pro/local/man/man3' +man3direxp='/pro/local/man/man3' man3ext='3' mips_type='' mistrustnm='' @@ -955,9 +954,9 @@ more='more' multiarch='undef' mv='' myarchname='x86_64-linux' -mydomain='.yourplace.com' -myhostname='yourhost' -myuname='linux lx09 5.8.0-1-default #1 smp tue aug 4 07:30:59 utc 2020 (9bc0044) x86_64 x86_64 x86_64 gnulinux ' +mydomain='.procura.nl' +myhostname='lx09' +myuname='linux lx09 6.2.12-1-default #1 smp preempt_dynamic thu apr 20 11:01:10 utc 2023 (eb3255d) x86_64 x86_64 x86_64 gnulinux ' n='-n' need_va_copy='define' netdb_hlen_type='size_t' @@ -969,48 +968,48 @@ nm_opt='' nm_so_opt='--dynamic' nonxs_ext='Archive/Tar Attribute/Handlers autodie AutoLoader autouse base bignum Carp Config/Perl/V constant CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Devel/SelfStubber Digest Dumpvalue encoding/warnings Env Errno experimental Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS ExtUtils/PL2Bat FileCache File/Fetch File/Find File/Path File/Temp Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags if IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP lib libnet Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata Net/Ping NEXT Params/Check parent perlfaq PerlIO/via/QuotedPrint Perl/OSType Pod/Checker Pod/Escapes Pod/Functions Pod/Html podlators Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local version XSLoader' nroff='nroff' -nvEUformat='"LE"' -nvFUformat='"LF"' -nvGUformat='"LG"' -nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0*2.0' +nvEUformat='"QE"' +nvFUformat='"QF"' +nvGUformat='"QG"' +nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*256.0*256.0*256.0*256.0*256.0*256.0*256.0*256.0*2.0' nv_preserves_uv_bits='64' -nveformat='"Le"' -nvfformat='"Lf"' -nvgformat='"Lg"' -nvmantbits='64' +nveformat='"Qe"' +nvfformat='"Qf"' +nvgformat='"Qg"' +nvmantbits='112' nvsize='16' -nvtype='long double' +nvtype='__float128' o_nonblock='O_NONBLOCK' obj_ext='.o' old_pthread_create_joinable='' optimize='-O2' orderlib='false' osname='linux' -osvers='5.8.0-1-default' +osvers='6.2.12-1-default' otherlibdirs=' ' package='perl5' -pager='/usr/bin/less -R' +pager='/pro/bin/less -R' passcat='cat /etc/passwd' -patchlevel='33' +patchlevel='37' path_sep=':' -perl5='/usr/bin/perl' +perl5='/pro/bin/perl' perl='perl' perl_patchlevel='' perl_static_inline='static __inline__' -perl_thread_local='' -perladmin='yourname@yourhost.yourplace.com' -perllibs='-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc' -perlpath='/opt/perl/bin/perl5.36.3' +perl_thread_local='_Thread_local' +perladmin='hmbrand@cpan.org' +perllibs='-lpthread -ldl -lm -lcrypt -lutil -lc -lquadmath' +perlpath='/pro/bin/perl5.38.2' pg='pg' -phostname='' +phostname='hostname' pidtype='pid_t' -plibpth='/lib/x86_64-suse-linux/10 /lib/../lib64 /usr/lib/x86_64-suse-linux/10 /usr/lib/../lib64 /lib /usr/lib' +plibpth='/lib/x86_64-suse-linux/13 /lib/../lib64 /usr/lib/x86_64-suse-linux/13 /usr/lib/../lib64 /lib /usr/lib' pmake='' pr='' -prefix='/opt/perl' -prefixexp='/opt/perl' -privlib='/opt/perl/lib/5.36.3' -privlibexp='/opt/perl/lib/5.36.3' +prefix='/pro' +prefixexp='/pro' +privlib='/pro/lib/perl5/5.38.2' +privlibexp='/pro/lib/perl5/5.38.2' procselfexe='"/proc/self/exe"' ptrsize='8' quadkind='2' @@ -1032,7 +1031,7 @@ runnm='false' sGMTIME_max='67768036191676799' sGMTIME_min='-62167219200' sLOCALTIME_max='67768036191673199' -sLOCALTIME_min='-62167220372' +sLOCALTIME_min='-62167220250' sPRIEUldbl='"LE"' sPRIFUldbl='"LF"' sPRIGUldbl='"LG"' @@ -1047,8 +1046,8 @@ sPRIu64='"lu"' sPRIx64='"lx"' sSCNfldbl='"Lf"' sched_yield='sched_yield()' -scriptdir='/opt/perl/bin' -scriptdirexp='/opt/perl/bin' +scriptdir='/pro/bin' +scriptdirexp='/pro/bin' sed='sed' seedfunc='Perl_drand48_init' selectminbits='64' @@ -1075,25 +1074,25 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 0' sig_size='68' signal_t='void' -sitearch='/opt/perl/lib/site_perl/5.36.3/x86_64-linux-thread-multi-ld' -sitearchexp='/opt/perl/lib/site_perl/5.36.3/x86_64-linux-thread-multi-ld' -sitebin='/opt/perl/bin' -sitebinexp='/opt/perl/bin' +sitearch='/pro/lib/perl5/site_perl/5.38.2/x86_64-linux-thread-multi-quadmath' +sitearchexp='/pro/lib/perl5/site_perl/5.38.2/x86_64-linux-thread-multi-quadmath' +sitebin='/pro/bin' +sitebinexp='/pro/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/opt/perl/lib/site_perl/5.36.3' -sitelib_stem='/opt/perl/lib/site_perl' -sitelibexp='/opt/perl/lib/site_perl/5.36.3' -siteman1dir='/opt/perl/man/man1' -siteman1direxp='/opt/perl/man/man1' -siteman3dir='/opt/perl/man/man3' -siteman3direxp='/opt/perl/man/man3' -siteprefix='/opt/perl' -siteprefixexp='/opt/perl' -sitescript='/opt/perl/bin' -sitescriptexp='/opt/perl/bin' +sitelib='/pro/lib/perl5/site_perl/5.38.2' +sitelib_stem='/pro/lib/perl5/site_perl' +sitelibexp='/pro/lib/perl5/site_perl/5.38.2' +siteman1dir='/pro/local/man/man1' +siteman1direxp='/pro/local/man/man1' +siteman3dir='/pro/local/man/man3' +siteman3direxp='/pro/local/man/man3' +siteprefix='/pro' +siteprefixexp='/pro' +sitescript='/pro/bin' +sitescriptexp='/pro/bin' sizesize='8' sizetype='size_t' sleep='' @@ -1110,10 +1109,10 @@ srandom_r_proto='REENTRANT_PROTO_I_TS' src='.' ssizetype='ssize_t' st_dev_sign='1' -st_dev_size='4' +st_dev_size='8' st_ino_sign='1' st_ino_size='8' -startperl='#!/opt/perl/bin/perl5.36.3' +startperl='#!/pro/bin/perl5.38.2' startsh='#!/bin/sh' static_ext=' ' stdchar='char' @@ -1125,7 +1124,7 @@ stdio_ptr='((fp)->_ptr)' stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' submit='' -subversion='3' +subversion='2' sysman='/usr/share/man/man1' sysroot='' tail='' @@ -1151,8 +1150,12 @@ troff='' ttyname_r_proto='REENTRANT_PROTO_I_IBW' u16size='2' u16type='unsigned short' +u32XUformat='"X"' +u32oformat='"o"' u32size='4' u32type='unsigned int' +u32uformat='"u"' +u32xformat='"x"' u64size='8' u64type='unsigned long' u8size='1' @@ -1177,7 +1180,7 @@ useithreads='define' usekernprocpathname='undef' uselanginfo='true' uselargefiles='define' -uselongdouble='define' +uselongdouble='undef' usemallocwrap='define' usemorebits='undef' usemultiplicity='define' @@ -1187,7 +1190,7 @@ usensgetexecutablepath='undef' useopcode='true' useperlio='define' useposix='true' -usequadmath='undef' +usequadmath='define' usereentrant='undef' userelocatableinc='undef' useshrplib='false' @@ -1224,23 +1227,24 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.36.3' -version_patchlevel_string='version 36 subversion 3' +version='5.38.2' +version_patchlevel_string='version 38 subversion 2' versiononly='define' vi='' -xlibpth='/usr/lib/386 /lib/386' +xlibpth='/usr/lib/386 /lib/386 /usr/lib64/gcc/x86_64-suse-linux/13 /usr/lib64/gcc/x86_64-suse-linux/13/../../../../lib64 /usr/lib64/gcc/x86_64-suse-linux/13/../../..' xlocale_needed='undef' -yacc='yacc' +yacc='/pro/3gl/CPAN/bin/byacc' yaccflags='' zcat='' zip='zip' PERL_REVISION=5 -PERL_VERSION=36 -PERL_SUBVERSION=3 +PERL_VERSION=38 +PERL_SUBVERSION=2 PERL_API_REVISION=5 -PERL_API_VERSION=36 +PERL_API_VERSION=38 PERL_API_SUBVERSION=0 PERL_PATCHLEVEL='' PERL_CONFIG_SH=true : Variables propagated from previous config.sh file. libdb_needs_pthread='N' +libdirs=' /lib /pro/local/lib' diff --git a/gnu/usr.bin/perl/Porting/config_H b/gnu/usr.bin/perl/Porting/config_H index 8e68e6055a4..6f4e3422213 100644 --- a/gnu/usr.bin/perl/Porting/config_H +++ b/gnu/usr.bin/perl/Porting/config_H @@ -54,7 +54,7 @@ * This symbol, if defined, indicates that the chsize routine is available * to truncate files. You might need a -lx to get this routine. */ -/*#define HAS_CHSIZE / **/ +/*#define HAS_CHSIZE / **/ /* HAS_CRYPT: * This symbol, if defined, indicates that the crypt routine is available @@ -232,7 +232,7 @@ * This symbol, if defined, indicates that the mbstowcs routine is * available to convert a multibyte string into a wide character string. */ -#define HAS_MBSTOWCS /**/ +#define HAS_MBSTOWCS /**/ /* HAS_MBTOWC: * This symbol, if defined, indicates that the mbtowc routine is available @@ -606,7 +606,7 @@ * This symbol, if defined, indicates to the C program that it should * include to get inet_addr and friends declarations. */ -#define I_ARPA_INET /**/ +#define I_ARPA_INET /**/ /* I_DBM: * This symbol, if defined, indicates that exists and should @@ -640,7 +640,7 @@ * This symbol, if defined, indicates to the C program that it should * include . */ -#define I_LOCALE /**/ +#define I_LOCALE /**/ /* I_NETINET_IN: * This symbol, if defined, indicates to the C program that it should @@ -668,7 +668,7 @@ * This symbol, if defined, indicates the should be included * to get socket ioctl options, like SIOCATMARK. */ -#define I_SYS_IOCTL /**/ +#define I_SYS_IOCTL /**/ /*#define I_SYS_SOCKIO / **/ /* I_SYS_NDIR: @@ -706,19 +706,19 @@ * This symbol, if defined, indicates to the C program that it should * include . */ -#define I_SYS_STAT /**/ +#define I_SYS_STAT /**/ /* I_SYS_TIMES: * This symbol, if defined, indicates to the C program that it should * include . */ -#define I_SYS_TIMES /**/ +#define I_SYS_TIMES /**/ /* I_SYS_TYPES: * This symbol, if defined, indicates to the C program that it should * include . */ -#define I_SYS_TYPES /**/ +#define I_SYS_TYPES /**/ /* I_SYS_UN: * This symbol, if defined, indicates to the C program that it should @@ -872,7 +872,7 @@ * This symbol is defined if the C compiler can cast negative * or large floating point numbers to 32-bit ints. */ -/*#define CASTI32 / **/ +/*#define CASTI32 / **/ /* CASTNEGFLOAT: * This symbol is defined if the C compiler can cast negative @@ -886,7 +886,7 @@ * 2 = couldn't cast >= 0x80000000 * 4 = couldn't cast in argument expression list */ -#define CASTNEGFLOAT /**/ +#define CASTNEGFLOAT /**/ #define CASTFLAGS 0 /**/ /* VOID_CLOSEDIR: @@ -988,13 +988,13 @@ * This symbol, if defined, indicates that siginfo_t has the * si_value member */ -#define HAS_SIGINFO_SI_ERRNO /**/ -#define HAS_SIGINFO_SI_PID /**/ -#define HAS_SIGINFO_SI_UID /**/ -#define HAS_SIGINFO_SI_ADDR /**/ -#define HAS_SIGINFO_SI_STATUS /**/ -#define HAS_SIGINFO_SI_BAND /**/ -#define HAS_SIGINFO_SI_VALUE /**/ +#define HAS_SIGINFO_SI_ERRNO /**/ +#define HAS_SIGINFO_SI_PID /**/ +#define HAS_SIGINFO_SI_UID /**/ +#define HAS_SIGINFO_SI_ADDR /**/ +#define HAS_SIGINFO_SI_STATUS /**/ +#define HAS_SIGINFO_SI_BAND /**/ +#define HAS_SIGINFO_SI_VALUE /**/ /* HAS_SIGSETJMP: * This variable indicates to the C program that the sigsetjmp() @@ -1224,7 +1224,7 @@ * This symbol, if defined, indicates that this system uses * EBCDIC encoding. */ -/*#define EBCDIC / **/ +/*#define EBCDIC / **/ /* ARCHLIB: * This variable, if defined, holds the name of the directory in @@ -1239,8 +1239,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "/opt/perl/lib/5.36.3/x86_64-linux" /**/ -#define ARCHLIB_EXP "/opt/perl/lib/5.36.3/x86_64-linux" /**/ +#define ARCHLIB "/opt/perl/lib/5.38.2/x86_64-linux" /**/ +#define ARCHLIB_EXP "/opt/perl/lib/5.38.2/x86_64-linux" /**/ /* BIN: * This symbol holds the path of the bin directory where the package will @@ -1293,8 +1293,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "/opt/perl/lib/5.36.3" /**/ -#define PRIVLIB_EXP "/opt/perl/lib/5.36.3" /**/ +#define PRIVLIB "/opt/perl/lib/5.38.2" /**/ +#define PRIVLIB_EXP "/opt/perl/lib/5.38.2" /**/ /* SITEARCH: * This symbol contains the name of the private library for this package. @@ -1311,8 +1311,8 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "/opt/perl/lib/site_perl/5.36.3/x86_64-linux" /**/ -#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.36.3/x86_64-linux" /**/ +#define SITEARCH "/opt/perl/lib/site_perl/5.38.2/x86_64-linux" /**/ +#define SITEARCH_EXP "/opt/perl/lib/site_perl/5.38.2/x86_64-linux" /**/ /* SITELIB: * This symbol contains the name of the private library for this package. @@ -1334,8 +1334,8 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "/opt/perl/lib/site_perl/5.36.3" /**/ -#define SITELIB_EXP "/opt/perl/lib/site_perl/5.36.3" /**/ +#define SITELIB "/opt/perl/lib/site_perl/5.38.2" /**/ +#define SITELIB_EXP "/opt/perl/lib/site_perl/5.38.2" /**/ #define SITELIB_STEM "/opt/perl/lib/site_perl" /**/ /* PERL_VENDORARCH: @@ -1561,7 +1561,7 @@ * This symbol, if defined, indicates that the system supports filenames * longer than 14 characters. */ -#define FLEXFILENAMES /**/ +#define FLEXFILENAMES /**/ /* HAS_GETGRENT: * This symbol, if defined, indicates that the getgrent routine is @@ -1934,15 +1934,15 @@ * This symbol, if defined, indicates the availability of * struct ipv6_mreq_source; */ -#define HAS_SOCKET /**/ -#define HAS_SOCKETPAIR /**/ -/*#define HAS_SOCKADDR_SA_LEN / **/ -#define HAS_SOCKADDR_IN6 /**/ -#define HAS_SIN6_SCOPE_ID /**/ -#define HAS_IP_MREQ /**/ -#define HAS_IP_MREQ_SOURCE /**/ -#define HAS_IPV6_MREQ /**/ -/*#define HAS_IPV6_MREQ_SOURCE / **/ +#define HAS_SOCKET /**/ +#define HAS_SOCKETPAIR /**/ +/*#define HAS_SOCKADDR_SA_LEN / **/ +#define HAS_SOCKADDR_IN6 /**/ +#define HAS_SIN6_SCOPE_ID /**/ +#define HAS_IP_MREQ /**/ +#define HAS_IP_MREQ_SOURCE /**/ +#define HAS_IPV6_MREQ /**/ +/*#define HAS_IPV6_MREQ_SOURCE / **/ /* USE_STAT_BLOCKS: * This symbol is defined if this system has a stat structure declaring @@ -2144,7 +2144,7 @@ * This symbol, if defined, indicates that exists and * should be included. */ -#define I_SYSUIO /**/ +#define I_SYSUIO /**/ /* I_TERMIO: * This symbol, if defined, indicates that the program should include @@ -2243,8 +2243,8 @@ * Perl has been cross-compiled to. Undefined if not a cross-compile. */ #ifndef USE_CROSS_COMPILE -/*#define USE_CROSS_COMPILE / **/ -#define PERL_TARGETARCH "" /**/ +/*#define USE_CROSS_COMPILE / **/ +#define PERL_TARGETARCH "" /**/ #endif /* PERL_USE_DEVEL: @@ -2252,7 +2252,7 @@ * -Dusedevel, to enable development features. This should not be * done for production builds. */ -#define PERL_USE_DEVEL /**/ +#define PERL_USE_DEVEL /**/ /* HAS_ATOLF: * This symbol, if defined, indicates that the atolf routine is @@ -2331,7 +2331,7 @@ /* HAS_C99_VARIADIC_MACROS: * If defined, the compiler supports C99 variadic macros. */ -#define HAS_C99_VARIADIC_MACROS /**/ +#define HAS_C99_VARIADIC_MACROS /**/ /* HAS_CLASS: * This symbol, if defined, indicates that the class routine is @@ -2387,10 +2387,10 @@ * to the program to supply one. A good guess is * extern int dbminit(char *); */ -#define HAS_DBMINIT_PROTO /**/ +#define HAS_DBMINIT_PROTO /**/ /* HAS_DIR_DD_FD: - * This symbol, if defined, indicates that the the DIR* dirstream + * This symbol, if defined, indicates that the DIR* dirstream * structure contains a member variable named dd_fd. */ /*#define HAS_DIR_DD_FD / **/ @@ -2497,7 +2497,7 @@ * to the program to supply one. A good guess is * extern int flock(int, int); */ -#define HAS_FLOCK_PROTO /**/ +#define HAS_FLOCK_PROTO /**/ /* HAS_FMA: * This symbol, if defined, indicates that the fma routine is @@ -2583,8 +2583,8 @@ * FP_NAN NaN * */ -#define HAS_FPCLASSIFY /**/ -/*#define HAS_FP_CLASSIFY / **/ +#define HAS_FPCLASSIFY /**/ +/*#define HAS_FP_CLASSIFY / **/ /* HAS_FPCLASSL: * This symbol, if defined, indicates that the fpclassl routine is @@ -2613,7 +2613,7 @@ /* HAS_FPOS64_T: * This symbol will be defined if the C compiler supports fpos64_t. */ -/*#define HAS_FPOS64_T / **/ +/*#define HAS_FPOS64_T / **/ /* HAS_FREXPL: * This symbol, if defined, indicates that the frexpl routine is @@ -2643,11 +2643,11 @@ /* HAS_UNLINKAT: * This symbol is defined if the unlinkat() routine is available. */ -#define HAS_FCHMODAT /**/ -#define HAS_LINKAT /**/ -#define HAS_OPENAT /**/ -#define HAS_RENAMEAT /**/ -#define HAS_UNLINKAT /**/ +#define HAS_FCHMODAT /**/ +#define HAS_LINKAT /**/ +#define HAS_OPENAT /**/ +#define HAS_RENAMEAT /**/ +#define HAS_UNLINKAT /**/ /* HAS_FSEEKO: * This symbol, if defined, indicates that the fseeko routine is @@ -2855,8 +2855,8 @@ * j0l() function is available for Bessel functions of the first * kind of the order zero, for long doubles. */ -#define HAS_J0 /**/ -#define HAS_J0L /**/ +#define HAS_J0 /**/ +#define HAS_J0L /**/ /* HAS_LC_MONETARY_2008: * This symbol, if defined, indicates that the localeconv routine is @@ -3081,11 +3081,11 @@ * This symbol, if defined, indicates to the C program that it should * include to get uselocale() and its friends. */ -#define HAS_NEWLOCALE /**/ -#define HAS_FREELOCALE /**/ -#define HAS_USELOCALE /**/ -/*#define HAS_QUERYLOCALE / **/ -#define I_XLOCALE /**/ +#define HAS_NEWLOCALE /**/ +#define HAS_FREELOCALE /**/ +#define HAS_USELOCALE /**/ +/*#define HAS_QUERYLOCALE / **/ +#define I_XLOCALE /**/ /* HAS_NEXTAFTER: * This symbol, if defined, indicates that the nextafter routine is @@ -3111,7 +3111,7 @@ /* HAS_OFF64_T: * This symbol will be defined if the C compiler supports off64_t. */ -/*#define HAS_OFF64_T / **/ +/*#define HAS_OFF64_T / **/ /* HAS_PIPE2: * This symbol, if defined, indicates that the pipe2 @@ -3156,7 +3156,7 @@ /* HAS_PTRDIFF_T: * This symbol will be defined if the C compiler supports ptrdiff_t. */ -#define HAS_PTRDIFF_T /**/ +#define HAS_PTRDIFF_T /**/ /* HAS_READV: * This symbol, if defined, indicates that the readv routine is @@ -3203,7 +3203,7 @@ * extern void* sbrk(int); * extern void* sbrk(size_t); */ -#define HAS_SBRK_PROTO /**/ +#define HAS_SBRK_PROTO /**/ /* HAS_SCALBN: * This symbol, if defined, indicates that the scalbn routine is @@ -3258,7 +3258,7 @@ * be used. */ #ifndef USE_SITECUSTOMIZE -/*#define USE_SITECUSTOMIZE / **/ +/*#define USE_SITECUSTOMIZE / **/ #endif /* HAS_SNPRINTF: @@ -3284,7 +3284,7 @@ * to the program to supply one. A good guess is * extern int sockatmark(int); */ -#define HAS_SOCKATMARK_PROTO /**/ +#define HAS_SOCKATMARK_PROTO /**/ /* HAS_SOCKS5_INIT: * This symbol, if defined, indicates that the socks5_init routine is @@ -3304,7 +3304,7 @@ * to the program to supply one. Good guesses are * extern int setresgid(uid_t ruid, uid_t euid, uid_t suid); */ -/*#define HAS_SETRESGID_PROTO / **/ +/*#define HAS_SETRESGID_PROTO / **/ /* HAS_SETRESUID_PROTO: * This symbol, if defined, indicates that the system provides @@ -3312,7 +3312,7 @@ * to the program to supply one. Good guesses are * extern int setresuid(uid_t ruid, uid_t euid, uid_t suid); */ -/*#define HAS_SETRESUID_PROTO / **/ +/*#define HAS_SETRESUID_PROTO / **/ /* HAS_STRUCT_STATFS_F_FLAGS: * This symbol, if defined, indicates that the struct statfs @@ -3405,7 +3405,7 @@ * extern int syscall(int, ...); * extern int syscall(long, ...); */ -#define HAS_SYSCALL_PROTO /**/ +#define HAS_SYSCALL_PROTO /**/ /* HAS_TELLDIR_PROTO: * This symbol, if defined, indicates that the system provides @@ -3413,7 +3413,7 @@ * to the program to supply one. A good guess is * extern long telldir(DIR*); */ -#define HAS_TELLDIR_PROTO /**/ +#define HAS_TELLDIR_PROTO /**/ /* HAS_TGAMMA: * This symbol, if defined, indicates that the tgamma routine is @@ -3445,12 +3445,12 @@ * This symbol, if defined, indicates that the asctime64 () routine is * available to do the 64bit variant of asctime () */ -/*#define HAS_CTIME64 / **/ -/*#define HAS_LOCALTIME64 / **/ -/*#define HAS_GMTIME64 / **/ -/*#define HAS_MKTIME64 / **/ -/*#define HAS_DIFFTIME64 / **/ -/*#define HAS_ASCTIME64 / **/ +/*#define HAS_CTIME64 / **/ +/*#define HAS_LOCALTIME64 / **/ +/*#define HAS_GMTIME64 / **/ +/*#define HAS_MKTIME64 / **/ +/*#define HAS_DIFFTIME64 / **/ +/*#define HAS_ASCTIME64 / **/ /* HAS_TIMEGM: * This symbol, if defined, indicates that the timegm routine is @@ -3503,7 +3503,7 @@ * to the program to supply one. A good guess is * extern int usleep(useconds_t); */ -#define HAS_USLEEP_PROTO /**/ +#define HAS_USLEEP_PROTO /**/ /* HAS_USTAT: * This symbol, if defined, indicates that the ustat system call is @@ -3519,7 +3519,7 @@ /* HAS_WCSXFRM: * This symbol, if defined, indicates that the wcsxfrm routine is - * available to tranform a wide character string for wcscmp(). + * available to transform a wide character string for wcscmp(). */ #define HAS_WCSXFRM /**/ @@ -3554,20 +3554,20 @@ * Note that if fflushNULL is defined, fflushall will not * even be probed for and will be left undefined. */ -#define FFLUSH_NULL /**/ -/*#define FFLUSH_ALL / **/ +#define FFLUSH_NULL /**/ +/*#define FFLUSH_ALL / **/ /* I_BFD: * This symbol, if defined, indicates that exists and * can be included. */ -/*#define I_BFD / **/ +/*#define I_BFD / **/ /* I_CRYPT: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_CRYPT /**/ +#define I_CRYPT /**/ /* DB_Prefix_t: * This symbol contains the type of the prefix structure element @@ -3609,19 +3609,19 @@ * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_FP / **/ +/*#define I_FP / **/ /* I_FP_CLASS: * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_FP_CLASS / **/ +/*#define I_FP_CLASS / **/ /* I_IEEEFP: * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_IEEEFP / **/ +/*#define I_IEEEFP / **/ /* I_INTTYPES: * This symbol, if defined, indicates to the C program that it should @@ -3633,13 +3633,13 @@ * This symbol, if defined, indicates that exists and * should be included. */ -#define I_LANGINFO /**/ +#define I_LANGINFO /**/ /* I_LIBUTIL: * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_LIBUTIL / **/ +/*#define I_LIBUTIL / **/ /* I_MALLOCMALLOC: * This symbol, if defined, indicates to the C program that it should @@ -3651,7 +3651,7 @@ * This symbol, if defined, indicates that exists and * should be included. */ -#define I_MNTENT /**/ +#define I_MNTENT /**/ /* I_NETINET_TCP: * This symbol, if defined, indicates to the C program that it should @@ -3663,37 +3663,37 @@ * This symbol, if defined, indicates that exists and * should be included. (see also HAS_POLL) */ -#define I_POLL /**/ +#define I_POLL /**/ /* I_PROT: * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_PROT / **/ +/*#define I_PROT / **/ /* I_QUADMATH: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_QUADMATH /**/ +#define I_QUADMATH /**/ /* I_SHADOW: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_SHADOW /**/ +#define I_SHADOW /**/ /* I_SOCKS: * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_SOCKS / **/ +/*#define I_SOCKS / **/ /* I_STDBOOL: * This symbol, if defined, indicates that exists and * can be included. */ -#define I_STDBOOL /**/ +#define I_STDBOOL /**/ /* I_STDINT: * This symbol, if defined, indicates that exists and @@ -3705,54 +3705,54 @@ * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_SUNMATH / **/ +/*#define I_SUNMATH / **/ /* I_SYSLOG: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_SYSLOG /**/ +#define I_SYSLOG /**/ /* I_SYSMODE: * This symbol, if defined, indicates that exists and * should be included. */ -/*#define I_SYSMODE / **/ +/*#define I_SYSMODE / **/ /* I_SYS_MOUNT: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_SYS_MOUNT /**/ +#define I_SYS_MOUNT /**/ /* I_SYS_STATFS: * This symbol, if defined, indicates that exists. */ -#define I_SYS_STATFS /**/ +#define I_SYS_STATFS /**/ /* I_SYS_STATVFS: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_SYS_STATVFS /**/ +#define I_SYS_STATVFS /**/ /* I_SYSUTSNAME: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_SYSUTSNAME /**/ +#define I_SYSUTSNAME /**/ /* I_SYS_VFS: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_SYS_VFS /**/ +#define I_SYS_VFS /**/ /* I_USTAT: * This symbol, if defined, indicates that exists and * should be included. */ -#define I_USTAT /**/ +#define I_USTAT /**/ /* I_WCHAR: * This symbol, if defined, indicates to the C program that @@ -3909,7 +3909,7 @@ * of copying mechanisms, handy.h defines a platform- * independent macro, Perl_va_copy(src, dst), to do the job. */ -#define NEED_VA_COPY /**/ +#define NEED_VA_COPY /**/ /* IVTYPE: * This symbol defines the C type used for Perl's IV. @@ -4000,36 +4000,36 @@ * This symbol, if defined, indicates that a variable of type NVTYPE * stores 0.0 in memory as all bits zero. */ -#define IVTYPE long /**/ -#define UVTYPE unsigned long /**/ -#define I8TYPE signed char /**/ -#define U8TYPE unsigned char /**/ -#define I16TYPE short /**/ -#define U16TYPE unsigned short /**/ -#define I32TYPE int /**/ -#define U32TYPE unsigned int /**/ +#define IVTYPE long /**/ +#define UVTYPE unsigned long /**/ +#define I8TYPE signed char /**/ +#define U8TYPE unsigned char /**/ +#define I16TYPE short /**/ +#define U16TYPE unsigned short /**/ +#define I32TYPE int /**/ +#define U32TYPE unsigned int /**/ #ifdef HAS_QUAD -#define I64TYPE long /**/ -#define U64TYPE unsigned long /**/ +#define I64TYPE long /**/ +#define U64TYPE unsigned long /**/ #endif -#define NVTYPE double /**/ -#define IVSIZE 8 /**/ -#define UVSIZE 8 /**/ -#define I8SIZE 1 /**/ -#define U8SIZE 1 /**/ -#define I16SIZE 2 /**/ -#define U16SIZE 2 /**/ -#define I32SIZE 4 /**/ -#define U32SIZE 4 /**/ +#define NVTYPE double /**/ +#define IVSIZE 8 /**/ +#define UVSIZE 8 /**/ +#define I8SIZE 1 /**/ +#define U8SIZE 1 /**/ +#define I16SIZE 2 /**/ +#define U16SIZE 2 /**/ +#define I32SIZE 4 /**/ +#define U32SIZE 4 /**/ #ifdef HAS_QUAD -#define I64SIZE 8 /**/ -#define U64SIZE 8 /**/ +#define I64SIZE 8 /**/ +#define U64SIZE 8 /**/ #endif -#define NVSIZE 8 /**/ +#define NVSIZE 8 /**/ #undef NV_PRESERVES_UV -#define NV_PRESERVES_UV_BITS 53 -#define NV_OVERFLOWS_INTEGERS_AT (256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0) -#define NV_ZERO_IS_ALLBITS_ZERO +#define NV_PRESERVES_UV_BITS 53 +#define NV_OVERFLOWS_INTEGERS_AT (256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0) +#define NV_ZERO_IS_ALLBITS_ZERO #if UVSIZE == 8 # ifdef BYTEORDER # if BYTEORDER == 0x1234 @@ -4076,14 +4076,14 @@ * This symbol defines the format string used for printing a Perl NV * using %g-ish floating point format. */ -#define IVdf "ld" /**/ -#define UVuf "lu" /**/ -#define UVof "lo" /**/ -#define UVxf "lx" /**/ -#define UVXf "lX" /**/ -#define NVef "e" /**/ -#define NVff "f" /**/ -#define NVgf "g" /**/ +#define IVdf "ld" /**/ +#define UVuf "lu" /**/ +#define UVof "lo" /**/ +#define UVxf "lx" /**/ +#define UVXf "lX" /**/ +#define NVef "e" /**/ +#define NVff "f" /**/ +#define NVgf "g" /**/ /* SELECT_MIN_BITS: * This symbol holds the minimum number of bits operated by select. @@ -4109,7 +4109,7 @@ * script to make sure (one hopes) that it runs with perl and not * some shell. */ -#define STARTPERL "#!/opt/perl/bin/perl5.36.3" /**/ +#define STARTPERL "#!/opt/perl/bin/perl5.38.2" /**/ /* HAS_STDIO_STREAM_ARRAY: * This symbol, if defined, tells that there is an array @@ -4119,7 +4119,7 @@ * This symbol tells the name of the array holding the stdio streams. * Usual values include _iob, __iob, and __sF. */ -/*#define HAS_STDIO_STREAM_ARRAY / **/ +/*#define HAS_STDIO_STREAM_ARRAY / **/ #ifdef HAS_STDIO_STREAM_ARRAY #define STDIO_STREAM_ARRAY #endif @@ -4164,10 +4164,10 @@ * you may need at least to reboot your OS to 64-bit mode. */ #ifndef USE_64_BIT_INT -#define USE_64_BIT_INT /**/ +#define USE_64_BIT_INT /**/ #endif #ifndef USE_64_BIT_ALL -#define USE_64_BIT_ALL /**/ +#define USE_64_BIT_ALL /**/ #endif /* USE_C_BACKTRACE: @@ -4188,7 +4188,7 @@ * Defaults to define in Perls 5.8 and earlier, to undef later. */ #ifndef USE_FAST_STDIO -/*#define USE_FAST_STDIO / **/ +/*#define USE_FAST_STDIO / **/ #endif /* USE_KERN_PROC_PATHNAME: @@ -4203,7 +4203,7 @@ * should be used when available. */ #ifndef USE_LARGE_FILES -#define USE_LARGE_FILES /**/ +#define USE_LARGE_FILES /**/ #endif /* USE_LONG_DOUBLE: @@ -4211,7 +4211,7 @@ * be used when available. */ #ifndef USE_LONG_DOUBLE -/*#define USE_LONG_DOUBLE / **/ +/*#define USE_LONG_DOUBLE / **/ #endif /* USE_MORE_BITS: @@ -4219,7 +4219,7 @@ * long doubles should be used when available. */ #ifndef USE_MORE_BITS -/*#define USE_MORE_BITS / **/ +/*#define USE_MORE_BITS / **/ #endif /* MULTIPLICITY: @@ -4227,7 +4227,7 @@ * be built to use multiplicity. */ #ifndef MULTIPLICITY -/*#define MULTIPLICITY / **/ +/*#define MULTIPLICITY / **/ #endif /* USE_NSGETEXECUTABLEPATH: @@ -4243,7 +4243,7 @@ * used in a fully backward compatible manner. */ #ifndef USE_PERLIO -#define USE_PERLIO /**/ +#define USE_PERLIO /**/ #endif /* USE_QUADMATH: @@ -4251,7 +4251,7 @@ * be used when available. */ #ifndef USE_QUADMATH -/*#define USE_QUADMATH / **/ +/*#define USE_QUADMATH / **/ #endif /* USE_SOCKS: @@ -4259,7 +4259,7 @@ * be built to use socks. */ #ifndef USE_SOCKS -/*#define USE_SOCKS / **/ +/*#define USE_SOCKS / **/ #endif /* HAS_DRAND48_PROTO: @@ -4268,7 +4268,7 @@ * to the program to supply one. A good guess is * extern double drand48(void); */ -#define HAS_DRAND48_PROTO /**/ +#define HAS_DRAND48_PROTO /**/ /* HAS_GETHOST_PROTOS: * This symbol, if defined, indicates that includes @@ -4276,7 +4276,7 @@ * gethostbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#define HAS_GETHOST_PROTOS /**/ +#define HAS_GETHOST_PROTOS /**/ /* HAS_GETNET_PROTOS: * This symbol, if defined, indicates that includes @@ -4284,7 +4284,7 @@ * getnetbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#define HAS_GETNET_PROTOS /**/ +#define HAS_GETNET_PROTOS /**/ /* HAS_GETPROTO_PROTOS: * This symbol, if defined, indicates that includes @@ -4292,7 +4292,7 @@ * getprotobyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#define HAS_GETPROTO_PROTOS /**/ +#define HAS_GETPROTO_PROTOS /**/ /* HAS_GETSERV_PROTOS: * This symbol, if defined, indicates that includes @@ -4300,7 +4300,7 @@ * getservbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ -#define HAS_GETSERV_PROTOS /**/ +#define HAS_GETSERV_PROTOS /**/ /* HAS_LSEEK_PROTO: * This symbol, if defined, indicates that the system provides @@ -4308,7 +4308,7 @@ * to the program to supply one. A good guess is * extern off_t lseek(int, off_t, int); */ -#define HAS_LSEEK_PROTO /**/ +#define HAS_LSEEK_PROTO /**/ /* Netdb_host_t: * This symbol holds the type used for the 1st argument @@ -5080,10 +5080,10 @@ * try to use the various _r versions of library functions. * This is extremely experimental. */ -/*#define USE_ITHREADS / **/ -/*#define USE_THREADS / **/ -/*#define OLD_PTHREADS_API / **/ -/*#define USE_REENTRANT_API / **/ +/*#define USE_ITHREADS / **/ +/*#define USE_THREADS / **/ +/*#define OLD_PTHREADS_API / **/ +/*#define USE_REENTRANT_API / **/ /* HAS_TIME: * This symbol, if defined, indicates that the time() routine exists. @@ -5113,7 +5113,7 @@ /* Gid_t_f: * This symbol defines the format string used for printing a Gid_t. */ -#define Gid_t_f "u" /**/ +#define Gid_t_f "u" /**/ /* Gid_t_sign: * This symbol holds the signedness of a Gid_t. @@ -5181,7 +5181,7 @@ /* Uid_t_f: * This symbol defines the format string used for printing a Uid_t. */ -#define Uid_t_f "u" /**/ +#define Uid_t_f "u" /**/ /* Uid_t_sign: * This symbol holds the signedness of a Uid_t. diff --git a/gnu/usr.bin/perl/Porting/core-cpan-diff b/gnu/usr.bin/perl/Porting/core-cpan-diff index 7ccafcb4837..698f78ce582 100644 --- a/gnu/usr.bin/perl/Porting/core-cpan-diff +++ b/gnu/usr.bin/perl/Porting/core-cpan-diff @@ -53,7 +53,7 @@ Usage: $0 [opts] [ -d | -v | -x ] [ -a | module ... ] -d/--diff Display file differences using diff(1), rather than just listing which files have changed. ---diffopts Options to pass to the diff command. Defaults to '-u --binary' +--diffopts Options to pass to the diff command. Defaults to '-u --text' (except on *BSD, where it's just '-u'). -f|force Force download from CPAN of new 02packages.details.txt file @@ -126,9 +126,9 @@ sub run { if ( $reverse || $use_diff || $diff_opts ); } else { - #$diff_opts = '-u --binary' unless defined $diff_opts; + #$diff_opts = '-u --text' unless defined $diff_opts; if (! defined $diff_opts) { - $diff_opts = ($^O =~ m/bsd$/i) ? '-u' : '-u --binary'; + $diff_opts = ($^O =~ m/bsd$/i) ? '-u' : '-u --text'; }; usage("can't use -f without --crosscheck") if $force; } diff --git a/gnu/usr.bin/perl/Porting/deparse-skips.txt b/gnu/usr.bin/perl/Porting/deparse-skips.txt index 37573d7e3d1..120322fceb6 100644 --- a/gnu/usr.bin/perl/Porting/deparse-skips.txt +++ b/gnu/usr.bin/perl/Porting/deparse-skips.txt @@ -32,6 +32,16 @@ __DEPARSE_FAILURES__ base/lex.t # checks regexp stringification +# class/*.t generally failing because OP_METHSTART not recognised +class/class.t +class/construct.t +class/destruct.t +class/field.t +class/inherit.t +class/method.t +class/phasers.t +class/threads.t +# comp/final_line_num.t # tests syntax error after BEGIN block comp/fold.t # mutability of folded constants comp/parser.t # crazy #line directives ==> shell syntax errors @@ -44,7 +54,6 @@ op/attrhand.t # Custom attrs ignored; also AH provides none op/caller.t op/goto.t op/gv.t # glob copy constants -op/hexfp.t op/index.t op/join.t # mutability of folded constants op/length.t # utf8ness of deparsed strings @@ -63,14 +72,17 @@ op/sub.t op/switch.t op/symbolcache.t op/taint.t +op/undef.t # keys%{($h=undef)||{}} becomes keys%{{} unless .. } op/vec.t op/warn.t op/write.t +perf/opcount.t # keys%{($h=undef)||{}} becomes keys%{{} unless .. } porting/globvar.t re/overload.t # [perl #123385] %^H output re/pat_advanced.t # [perl #123417] re/pat_rt_report.t # malformed utf8 constant; also /\c@/ -> /\c\@/ re/pat.t # [perl #90590] +re/pat_re_eval.t # the new /(*{...})/ forms don't deparse re/regex_sets.t re/reg_fold.t # [perl #123385] %^H output re/rxcode.t # checks regexp stringification @@ -154,31 +166,46 @@ uni/variables.t # } ../cpan/bignum/t/bigexp.t +../cpan/bignum/t/bigfloat.t ../cpan/bignum/t/bigint.t ../cpan/bignum/t/bignum.t ../cpan/bignum/t/bigrat.t +../cpan/bignum/t/const-bigfloat.t ../cpan/bignum/t/const-bigint.t ../cpan/bignum/t/const-bignum.t ../cpan/bignum/t/const-bigrat.t +../cpan/bignum/t/down-mbi-up-mbf.t +../cpan/bignum/t/down-mbi-up-mbr.t +../cpan/bignum/t/down-mbi-up-undef.t +../cpan/bignum/t/down-undef-up-mbf.t +../cpan/bignum/t/e_pi-bigfloat.t ../cpan/bignum/t/e_pi-bigint.t ../cpan/bignum/t/e_pi-bignum.t ../cpan/bignum/t/e_pi-bigrat.t +../cpan/bignum/t/import-bigfloat.t ../cpan/bignum/t/import-bigint.t ../cpan/bignum/t/import-bignum.t ../cpan/bignum/t/import-bigrat.t ../cpan/bignum/t/in_effect.t +../cpan/bignum/t/infnan-bigfloat.t ../cpan/bignum/t/infnan-bigint.t -../cpan/bignum/t/infnan-bignum.t +../cpan/bignum/t/infnan-bignum-mbf.t +../cpan/bignum/t/infnan-bignum-mbr.t ../cpan/bignum/t/infnan-bigrat.t +../cpan/bignum/t/option_a-bignum.t ../cpan/bignum/t/option_a.t -../cpan/bignum/t/option_l.t +../cpan/bignum/t/option_l-bigfloat.t +../cpan/bignum/t/option_l-bigint.t +../cpan/bignum/t/option_l-bignum.t +../cpan/bignum/t/option_l-bigrat.t +../cpan/bignum/t/option_p-bignum.t ../cpan/bignum/t/option_p.t ../cpan/bignum/t/overrides.t ../cpan/bignum/t/ratopt_a.t +../cpan/bignum/t/scope-bigfloat.t ../cpan/bignum/t/scope-bigint.t ../cpan/bignum/t/scope-bignum.t ../cpan/bignum/t/scope-bigrat.t -../cpan/bignum/t/scope-nested-const.t # ------------- @@ -187,10 +214,6 @@ uni/variables.t # of the test file from being compiled ../cpan/ExtUtils-MakeMaker/t/MM_VMS.t -# see comment above about bignum failures -../cpan/Math-BigInt/t/const-mbf.t -../cpan/Math-BigInt/t/const-mbi.t - # see comment above about bignum failures ../cpan/Math-BigRat/t/const-mbr.t @@ -233,7 +256,6 @@ uni/variables.t ../ext/XS-APItest/t/call_checker.t ../ext/XS-APItest/t/cleanup.t ../ext/XS-APItest/t/fetch_pad_names.t -../ext/XS-APItest/t/svpeek.t ../ext/XS-APItest/t/synthetic_scope.t ../lib/Config.t # Config_heavy.pl fns getting output ../lib/charnames.t diff --git a/gnu/usr.bin/perl/Porting/exec-bit.txt b/gnu/usr.bin/perl/Porting/exec-bit.txt index 1b3712be839..fd31622804c 100644 --- a/gnu/usr.bin/perl/Porting/exec-bit.txt +++ b/gnu/usr.bin/perl/Porting/exec-bit.txt @@ -20,6 +20,8 @@ dist/Devel-PPPort/devel/regenerate dist/Devel-PPPort/devel/scanprov dist/Devel-PPPort/devel/update_release_date.pl dist/Devel-PPPort/soak +dist/Thread-Queue/examples/callback.pl +dist/Thread-Queue/examples/queue.pl installperl installman makedepend.SH @@ -42,7 +44,6 @@ Porting/bench.pl Porting/bisect.pl Porting/bisect-example.sh Porting/bisect-runner.pl -Porting/checkAUTHORS.pl Porting/checkURL.pl Porting/checkVERSION.pl Porting/checkansi.pl @@ -69,3 +70,4 @@ Porting/updateAUTHORS.pl Porting/valgrindpp.pl Cross/generate_config_sh Cross/warp +dist/Thread-Semaphore/examples/semaphore.pl diff --git a/gnu/usr.bin/perl/Porting/make-rmg-checklist b/gnu/usr.bin/perl/Porting/make-rmg-checklist index 2dbddfcfab7..86616079277 100644 --- a/gnu/usr.bin/perl/Porting/make-rmg-checklist +++ b/gnu/usr.bin/perl/Porting/make-rmg-checklist @@ -148,7 +148,7 @@ my $passthru_headers = qr/^= (?: over | item | back | cut )/xms; # version used when generating diffs (acknowledgements, Module::CoreList etc) # 5.36.0 -> 5.34.0 -# 5.36.3 -> 5.36.0 +# 5.36.1 -> 5.36.0 my ($major, $minor, $point) = split(/\./, $version); my $last_version = join('.', $major, ($point == 0 ? ($minor - 2, 0) : ($minor, $point-1))); @@ -188,7 +188,7 @@ foreach my $line (@pod_lines) { $line =~ s/\Q5.X.Y\E/$version/g; $line =~ s/\Q5.LAST\E/$last_version/g; - $line =~ s/\Q5.X\E-b/$major.$minor/g; + $line =~ s/\Q5.X\E\b/$major.$minor/g; $current_element->{'content'} .= "\n" . $line; } diff --git a/gnu/usr.bin/perl/Porting/makerel b/gnu/usr.bin/perl/Porting/makerel index 03652aaa93a..2d9ce10d68c 100644 --- a/gnu/usr.bin/perl/Porting/makerel +++ b/gnu/usr.bin/perl/Porting/makerel @@ -24,7 +24,7 @@ use warnings; # # Tim Bunce, June 1997 -use ExtUtils::Manifest qw(fullcheck); +use ExtUtils::Manifest qw(manicheck); $ExtUtils::Manifest::Quiet = 1; use Getopt::Std; use Digest::SHA; @@ -87,26 +87,12 @@ print "\nMaking a release for $perl in $relroot/$reldir\n\n"; cleanup($relroot, $reldir) if $opts{c}; print "Cross-checking the MANIFEST...\n"; -my ($missfile, $missentry) = fullcheck(); -@$missentry - = grep {$_ !~ m!^\.(?:git|github|mailmap)! and $_ !~ m!(?:/|^)\.gitignore!} @$missentry; -if (@$missfile ) { +my @missfile = manicheck(); +if (@missfile) { warn "Can't make a release with MANIFEST files missing:\n"; - warn "\t".$_."\n" for (@$missfile); + warn "\t".$_."\n" for (@missfile); } -if (@$missentry ) { - warn "Can't make a release with files not listed in MANIFEST\n"; - warn "\t".$_."\n" for (@$missentry); - -} -if ("@$missentry" =~ m/\.orig\b/) { - # Handy listing of find command and .orig files from patching work. - # I tend to run 'xargs rm' and copy and paste the file list. - my $cmd = "find . -name '*.orig' -print"; - print "$cmd\n"; - system($cmd); -} -die "Aborted.\n" if @$missentry or @$missfile; +die "Aborted.\n" if @missfile; print "\n"; # VMS no longer has hardcoded version numbers descrip.mms diff --git a/gnu/usr.bin/perl/Porting/perldelta_template.pod b/gnu/usr.bin/perl/Porting/perldelta_template.pod index dfe6b1f92b1..195b848317e 100644 --- a/gnu/usr.bin/perl/Porting/perldelta_template.pod +++ b/gnu/usr.bin/perl/Porting/perldelta_template.pod @@ -115,7 +115,7 @@ release manager will have to investigate the situation carefully.) =item * -XXX Remove this section if not applicable. +XXX Remove this section if Porting/corelist-perldelta.pl did not add any content here. =back @@ -127,7 +127,7 @@ XXX Remove this section if not applicable. L has been upgraded from version A.xx to B.yy. -If there was something important to note about this change, include that here. +XXX If there was something important to note about this change, include that here. =back @@ -137,7 +137,7 @@ If there was something important to note about this change, include that here. =item * -XXX +XXX Remove this section if Porting/corelist-perldelta.pl did not add any content here. =back @@ -357,6 +357,9 @@ XXX XXX Important bug fixes in the core language are summarized here. Bug fixes in files in F and F are best summarized in L. +Include references to GitHub issues and PRs as: [GH #12345] and the release +manager will later use a regex to expand these into links. + [ List each fix as an =item entry ] =over 4 @@ -403,7 +406,7 @@ died, add a short obituary here. XXX Generate this with: - perl Porting/acknowledgements.pl v5.36.3..HEAD + perl Porting/acknowledgements.pl v5.37.12..HEAD =head1 Reporting Bugs diff --git a/gnu/usr.bin/perl/Porting/pumpkin.pod b/gnu/usr.bin/perl/Porting/pumpkin.pod index 6ca9f1e853c..f11fa985240 100644 --- a/gnu/usr.bin/perl/Porting/pumpkin.pod +++ b/gnu/usr.bin/perl/Porting/pumpkin.pod @@ -542,9 +542,9 @@ Here's how I generate a new patch. I'll use the hypothetical 5.004_07 to 5.004_08 patch as an example. # unpack perl5.004_07/ - gzip -d -c perl5.004_07.tar.gz | tar -xf - + gzip -d -c perl5.004_07.tar.gz | tar -xof - # unpack perl5.004_08/ - gzip -d -c perl5.004_08.tar.gz | tar -xf - + gzip -d -c perl5.004_08.tar.gz | tar -xof - makepatch perl5.004_07 perl5.004_08 > perl5.004_08.pat Makepatch will automatically generate appropriate B commands to remove diff --git a/gnu/usr.bin/perl/Porting/release_announcement_template.txt b/gnu/usr.bin/perl/Porting/release_announcement_template.txt index 7ec83157047..d32473665b0 100644 --- a/gnu/usr.bin/perl/Porting/release_announcement_template.txt +++ b/gnu/usr.bin/perl/Porting/release_announcement_template.txt @@ -23,6 +23,6 @@ https://metacpan.org/pod/release/[AUTHOR]/perl-5.[VERSION.SUBVERSION]/pod/perlde [ACKNOWLEDGEMENTS SECTION FROM PERLDELTA] We expect to release version [NEXT BLEAD VERSION.SUBVERSION] on [FUTURE DATE]. -The next major stable release of Perl should appear in the first half of 2022. +The next major stable release of Perl should appear in the first half of 2023. [YOUR SALUTATION HERE] diff --git a/gnu/usr.bin/perl/Porting/release_managers_guide.pod b/gnu/usr.bin/perl/Porting/release_managers_guide.pod index 37fde782fef..50890b2c358 100644 --- a/gnu/usr.bin/perl/Porting/release_managers_guide.pod +++ b/gnu/usr.bin/perl/Porting/release_managers_guide.pod @@ -512,23 +512,10 @@ blead release, so you may find nothing to do here. =head3 update AUTHORS The AUTHORS file can be updated by running F. - -(The old method was C and -it's still used under the hood, but you should use the -F update.) - -In the old method, for MAINT and BLEAD-FINAL releases, C needs to -refer to the last release in the previous development cycle (so for -example, for a 5.14.x release, this would be 5.13.11). - -In the old method, for BLEAD-POINT releases, it needs to refer to the -previous BLEAD-POINT release (so for 5.15.3 this would be 5.15.2). - -Note: It should not be harmful to use a wider range. - -Note: If you have uncommitted changes this could cause some warnings, -and you might like to use the additional argument C<--to=upstream/blead> -to use the last known git commit by GitHub. +This shouldn't really be necessary anymore, and in theory nothing should +change as our CI should not pass if a commit would result in AUTHORS +needing to change, but do it anyway to be sure. Make sure all your changes +are committed first. Review the changes to the AUTHORS file, be sure you are not adding duplicate entries or removing any entries, then commit your changes. diff --git a/gnu/usr.bin/perl/Porting/sync-with-cpan b/gnu/usr.bin/perl/Porting/sync-with-cpan index 0fc5726eeda..de9b79b4430 100644 --- a/gnu/usr.bin/perl/Porting/sync-with-cpan +++ b/gnu/usr.bin/perl/Porting/sync-with-cpan @@ -97,7 +97,40 @@ from the filename -- but can be overwritten by the C<--version> option. =item C<--jobs> I -When running C, pass a C<< -jI >> option to it. +When running C, pass a C<< -jI >> option to it to enable +parallel building. + +Note that you can also set C<< TEST_JOBS=I >> in the environment +to enable parallel *testing* on top of parallel *building*. + +=item C<--yes> + +Just continue at all places where we would normally ask for the user +to hit enter or hit CTL-C, with the exception of cases related to +CUSTOMIZED distributions, where this option will cause the update to +exit immediately unless the C<--force> option has also been used. + +=item C<--force> + +Do things we normally would refuse to do. + +=item C<--tarball> + +Use a predownloaded tarball and not one from CPAN. + +=item C<--version> + +Sync with a specific version, not the latest on CPAN. + +=item C<--no-test> + +=item C<--nt> + +Do not run tests. This is helpful for bulk updates. + +=item C<--help> + +Show help. =back @@ -154,14 +187,17 @@ die "This does not look like a top level directory" die "Please run Configure before using $0\n" if !WIN32 && !-f "Makefile"; +#these are populated by Porting/Maintainers.pl our @IGNORABLE; our %Modules; +our %DistName; use autodie; require "./Porting/Maintainers.pl"; my $MAKE_LOG = 'make.log'; +unlink $MAKE_LOG if -e $MAKE_LOG; my %IGNORABLE = map {$_ => 1} @IGNORABLE; @@ -170,9 +206,10 @@ my $tmpdir = tmpdir(); my $package = "02packages.details.txt"; my $package_url = "http://www.cpan.org/modules/$package"; my $package_file = "$tmpdir/$package"; # this is a cache +my $type_dir = "cpan"; my @problematic = ( - 'podlators', # weird CUSTOMIZED section due to .PL files + # no current entries as of perl-5.38.2 (Jun 2023) ); @@ -186,11 +223,14 @@ sub usage GetOptions ('tarball=s' => \my $tarball, 'version=s' => \my $version, 'jobs=i' => \my $make_jobs, - force => \my $force, - help => sub { usage 0; }, - ) or die "Failed to parse arguments"; + 'yes' => \my $yes_to_all, + 'force' => \my $force, + 'no-test|nt' => \my $no_test, + 'help' => sub { usage 0; }, + 'type=s' => \$type_dir, + ) or die "Failed to parse arguments"; -usage 1 unless @ARGV == 1 || @ARGV == 2; +usage 1 unless @ARGV == 1; sub find_type_f { my @res; @@ -220,22 +260,74 @@ sub make_writable { } } -sub make { - my @args= @_; +my $SEP_LINE = ("-" x 79) . "\n"; + +sub cat_make_log { + my ($message) = @_; + print $message, $message=~/Starting/ + ? " and saving its output to '$MAKE_LOG' ...\n" + : "\n"; + + open my $ofh, ">>", $MAKE_LOG + or die "Failed to open '$MAKE_LOG' for append\n"; + print $ofh $SEP_LINE,"$message at ", + scalar(localtime),"\n",$SEP_LINE; + close $ofh; +} + +sub run_make { + my @args = @_; unshift @args, "-j$make_jobs" if defined $make_jobs; + cat_make_log("Starting `make @args`"); + my $errored; if (WIN32) { chdir "Win32"; - system "$Config{make} @args> ..\\$MAKE_LOG 2>&1" - and die "Running make failed, see $MAKE_LOG"; + $errored = system "$Config{make} @args >> ..\\$MAKE_LOG 2>&1"; chdir '..'; } else { - system "$Config{make} @args> $MAKE_LOG 2>&1" - and die "Running make failed, see $MAKE_LOG"; + $errored = system "$Config{make} @args >> $MAKE_LOG 2>&1"; }; -}; + cat_make_log("Finished `make @args`"); + if ($errored) { + if ($args[0] ne "test-prep") { + # see if we can extract the last Test Summary Report from + # the $MAKE_LOG file, + if (open my $ifh, "<", $MAKE_LOG) { + my @report; + my $in_summary; + while (<$ifh>) { + if (/^Test Summary Report/) { + @report = (); + $in_summary = 1; + } elsif ($_ eq $SEP_LINE) { + $in_summary = 0; + } + push @report, $_ if $in_summary; + } + print for @report; + } else { + warn "Failed to open $MAKE_LOG for reading: $!"; + } + } + die "Running `make` failed, see '$MAKE_LOG' for more details\n"; + } +} -my ($module) = shift; +sub pause_for_input { + my ($after_message) = @_; + print "Hit to continue; ^C to abort "; + if ($yes_to_all) { + print "\n--yes was used on command line, continuing.\n"; + } else { + my $noop = ; + } + print $after_message if $after_message; +} +my ($module) = shift @ARGV; +if (my $mod_name = $DistName{$module}) { + $module = $mod_name; +} my $info = $Modules{$module}; if (!$info) { # Maybe the user said "Test-Simple" instead of "Test::Simple", or @@ -266,8 +358,33 @@ for $module in Porting/Maintainers.pl (and you'll also need to regenerate t/porting/customized.dat in that case; see t/porting/customized.t). EOF - print "Hit return to continue; ^C to abort "; ; + if ($yes_to_all and !$force) { + die "This distribution is marked as CUSTOMIZED\n", + "You used --yes on the command line, but without --force.\n", + "Bailing out. Use --force to go ahead anyway.\n"; + } + pause_for_input("\n"); +} + +if (!$ENV{TEST_JOBS} and !WIN32) { + print "*** NOTE *** For speedups you can set TEST_JOBS=N in the env before running this script.\n"; +} +if (!$make_jobs and !WIN32) { + print "*** NOTE *** For speedups you can pass --jobs=N as an arg to this script.\n" } +print "About to clean the $type_dir/ directory, and ensure its contents is up to date.\n"; +print "Will also checkout -f on $type_dir/, MANIFEST and Porting/Maintainers.pl\n"; +print "*** WARNING *** - this may DELETE uncommitted changes. Hit ^C if you have ANY doubts!\n"; +pause_for_input("\n"); +# clean out the cpan directory, this cleans up any temporary files that might be +# in the way, or other issues that might come up if the user bails out of the sync +# script and then runs it again. +my $clean_out= `git clean -dfx $type_dir`; # use backticks to hide the output +system git => 'checkout -f', + $type_dir, + 'MANIFEST', + 'Porting/Maintainers.pl'; # let the user see the output +print "the $type_dir/ directory is now clean and up to date\n---\n"; my $distribution = $$info {DISTRIBUTION}; @@ -284,12 +401,18 @@ if (!-d $files [0] || grep { $_ eq $module } @problematic) { use Cwd 'cwd'; my $orig_pwd = cwd(); -chdir "cpan"; +chdir "$type_dir"; my $pkg_dir = $files[0]; $pkg_dir =~ s!.*/!!; -my ($old_version) = $distribution =~ /-([0-9.]+(?:-TRIAL[0-9]*)?)\.tar\.gz/; +my $tail_pat = qr/(?:\.tar\.gz|\.tgz|\.zip)\z/; + +my ($old_version) = $distribution =~ /-([0-9._]+(?:-TRIAL[0-9]*)?)$tail_pat/; + +if (!$old_version) { + die "WTF: failed to parse old version from '$distribution'\n"; +} sub wget { my ($url, $saveas) = @_; @@ -324,12 +447,13 @@ sub wget { # my $new_file; my $new_version; +my $re_update = ""; if (defined $tarball) { $tarball = rel2abs( $tarball, $orig_pwd ) ; die "Tarball $tarball does not exist\n" if !-e $tarball; die "Tarball $tarball is not a plain file\n" if !-f _; $new_file = $tarball; - $new_version = $version // ($new_file =~ /-([0-9._]+(?:-TRIAL[0-9]*)?)\.tar\.gz/) [0]; + $new_version = $version // ($new_file =~ /-([0-9._]+(?:-TRIAL[0-9]*)?)$tail_pat/) [0]; die "Blead and that tarball both have version $new_version of $module\n" if $new_version eq $old_version; } @@ -352,8 +476,13 @@ else { } $new_file = (split '/', $new_path) [-1]; - die "The latest version of $module is $new_version, but blead already has it\n" - if $new_version eq $old_version; + if ($old_version eq $new_version) { + $re_update = "Re-"; + print "The latest version of $module is $new_version, but blead already has it.\n"; + print "Continuing may update MANIFEST or other metadata so it may make sense to continue anyway.\n"; + print "Are you sure you want to continue?\n"; + pause_for_input(); + } my $url = "https://cpan.metacpan.org/authors/id/$new_path"; say "Fetching $url"; @@ -363,7 +492,7 @@ else { wget $url, $new_file; } -my $old_dir = "$pkg_dir-$old_version"; +my $old_dir = "$pkg_dir-$old_version-OLD"; say "Cleaning out old directory"; system git => 'clean', '-dfxq', $pkg_dir; @@ -371,7 +500,7 @@ system git => 'clean', '-dfxq', $pkg_dir; say "Unpacking $new_file"; Archive::Tar->extract_archive( $new_file ); -(my $new_dir = basename($new_file)) =~ s/\.tar\.gz//; +(my $new_dir = basename($new_file)) =~ s/$tail_pat//; # ensure 'make' will update all files my $t= time; for my $file (find_type_f($new_dir)) { @@ -415,8 +544,8 @@ FILE: for my $file ( find_type_f( $new_dir )) { $file = $files[0] . '/' . $file; } - if ( $file =~ m{^cpan/} ) { - $file =~ s{^cpan/}{}; + if ( $file =~ m{^$type_dir/} ) { + $file =~ s{^$type_dir/}{}; } else { $file = '../' . $file; @@ -453,10 +582,17 @@ my %old_files = map {$_ => 1} @old_files; my @delete; my @commit; my @gone; +my $changes_file; FILE: foreach my $file (@new_files) { next if -d "$pkg_dir/$file"; # Ignore directories. next if $old_files {$file}; # It's already there. + if ($file=~/Changes/i or $file=~/Changelog/) { + if ($changes_file) { + die "More than one changes file? $file and $changes_file both exist?"; + } + $changes_file = "$pkg_dir/$file"; + } if ($IGNORABLE {$file}) { push @delete => $file; next; @@ -469,6 +605,54 @@ foreach my $file (@old_files) { push @gone => $file; } +my @changes_info; +if (!$changes_file) { + print "Could not find a changes file!\n", + "If this is not correct and there is one, please consider updating this script!\n"; +} else { + open my $ifh, "<", $changes_file + or die "Failed to open '$changes_file':$!"; + chomp(my @lines = <$ifh>); + close $ifh; + my $seen_new_version; + my $is_update = $new_version ne $old_version; + + for(my $idx = 0; $idx < @lines; $idx++) { + if ($lines[$idx] =~ /$new_version/ || + ($pkg_dir eq "CPAN" and $lines[$idx] =~/^\d{4}-\d{2}-\d{2}/ + && $lines[$idx+2] + && $lines[$idx+2] =~ /release $new_version/) + ){ + $seen_new_version = 1; + push @changes_info, $lines[$idx]; + } elsif ($seen_new_version) { + if ($is_update && $pkg_dir eq "ExtUtils-MakeMaker") { + if ($lines[$idx] =~/$old_version/) { + last; + } + } + elsif (($lines[$idx]=~/\d\.\d/ and $lines[$idx]=~/20\d\d/) || + ($lines[$idx]=~/---------------------------------/) || + ($pkg_dir eq "CPAN" and $lines[$idx] =~/^\d{4}-\d{2}-\d{2}/) || + ($pkg_dir eq "version" and $lines[$idx] =~/^\d\.\d+/) || + ($pkg_dir eq "Getopt-Long" and $lines[$idx] =~/Changes in version/) || + ($pkg_dir eq "ExtUtils-Install" and $lines[$idx] =~/^\d+\.\d+/) || + 0 # less commit churn if we have to tweak the heuristics above + ){ + last; + } + push @changes_info, $lines[$idx]; + + } + } + if (!@changes_info) { + die "No changes?"; + } else { + print "Changes from $changes_file\n"; + print $_,"\n" for @changes_info; + } +} + # # Find all files with an exec bit # @@ -504,15 +688,18 @@ if (@de_exec && @delete) { if (@de_exec) { my %permitted = map { (my $x = $_) =~ tr/\n//d; $x => 1 } grep !/^#/, do { local @ARGV = '../Porting/exec-bit.txt'; <> }; - @de_exec = grep !$permitted{"cpan/$pkg_dir/$_"}, @de_exec; + @de_exec = grep !$permitted{"$type_dir/$pkg_dir/$_"}, @de_exec; } +@$_ = sort @$_ for \@delete, \@commit, \@gone, \@de_exec; say "unlink $pkg_dir/$_" for @delete; say "git add $pkg_dir/$_" for @commit; say "git rm -f $pkg_dir/$_" for @gone; say "chmod a-x $pkg_dir/$_" for @de_exec; -print "Hit return to continue; ^C to abort "; ; +print "--\nWill perform the above steps and then start testing.\n"; +print "You may want to `tail -F $MAKE_LOG` in another window\n"; +pause_for_input("\n"); unlink "$pkg_dir/$_" for @delete; system git => 'add', "$pkg_dir/$_" for @commit; @@ -532,8 +719,11 @@ if ($$info {CUSTOMIZED}) { } chdir ".."; -if (@commit || @gone) { - say "Fixing MANIFEST"; +{ + # we update the MANIFEST file always now, so that we can + # ensure each file from this sync is updated to say that we + # got it from the latest version. + say "Updating the MANIFEST file"; my $MANIFEST = "MANIFEST"; my $MANIFEST_NEW = "$MANIFEST.new"; @@ -541,14 +731,37 @@ if (@commit || @gone) { or die "Failed to open $MANIFEST for reading: $!\n"; open my $new, ">", $MANIFEST_NEW or die "Failed to open $MANIFEST_NEW for writing: $!\n"; - my %gone = map +("cpan/$pkg_dir/$_" => 1), @gone; + my %keep = map +("$type_dir/$pkg_dir/$_" => 1), keys %new_files; + my %gone = map +("$type_dir/$pkg_dir/$_" => 1), @gone; while (my $line = <$orig>) { - my ($file) = $line =~ /^(\S+)/ - or die "Can't parse MANIFEST line: $line"; - print $new $line if !$gone{$file}; + chomp $line; + my ($file, $descr) = split /\t+/, $line; + if (!$file) { + die "Can't parse MANIFEST line: '$line' at line $.\n"; + } + if ($keep{$file} and !$descr) { + # make sure we have at least one tab, old versions of + # this script would add lines to MANIFEST with no tab. + $line =~ s/^(\S+)\z/$1\t\t/; + + my $file_descr = ""; + if ( $file =~ /\.t/ ) { + $file_descr = "Test file"; + } + elsif ( $file =~ /\.pm/ ) { + $file_descr = "Module"; + } + elsif ( $file =~ /\.pl/ ) { + $file_descr = "Script"; + } + $file_descr .= " related to " if $file_descr; + # and update the line to show where the file came from. + $line =~ s/(\t+).*/$1$file_descr$module/; + } + say $new $line if !$gone{$file}; } - say $new "cpan/$pkg_dir/$_" for @commit; + say $new "$type_dir/$pkg_dir/$_\t\t$pkg_dir" for @commit; close $new or die "Can't close $MANIFEST: $!\n"; @@ -558,10 +771,11 @@ if (@commit || @gone) { } -print "Running a make and saving its output to $MAKE_LOG ... "; -# Prepare for running (selected) tests -make 'test-prep'; -print "done\n"; + +# Prepare for running (selected) tests - strictly speaking this isn't +# necessary, as we run the tests with "run_make" now, but this allows +# us to separate build issues from test issues. +run_make 'test-prep' unless $no_test; # The build system installs code from CPAN dists into the lib/ directory, # creating directories as needed. This means that the cleaning-related rules @@ -588,66 +802,51 @@ if (@commit || @gone) { # Must clean up, or else t/porting/FindExt.t will fail. # Note that we can always retrieve the original directory with a git checkout. # -print "About to clean up; hit return or abort (^C) "; ; - -remove_tree( "cpan/$old_dir" ); -unlink "cpan/$new_file" unless $tarball; - -# -# Run the tests. First the test belonging to the module, followed by the -# tests in t/porting -# -chdir "t"; -say "Running module tests"; -my @test_files = grep { /\.t$/ } find_type_f( "../cpan/$pkg_dir" ); -my $exe_dir = WIN32 ? "..\\" : './'; -my $output = `${exe_dir}perl$Config{_exe} TEST @test_files`; -unless ($output =~ /All tests successful/) { - say $output; - exit 1; -} - -print "Running tests in t/porting "; -my @tests = glob 'porting/*.t'; -chomp @tests; -my @failed; -foreach my $t (@tests) { - my @not = grep {!/# TODO/ } - grep { /^not/ } - `${exe_dir}perl -I../lib -I.. $t`; - print @not ? '!' : '.'; - push @failed => $t if @not; -} -print "\n"; -say "Failed tests: @failed" if @failed; +print "About to clean up the old version, update Maintainers.pl and start tests\n"; +pause_for_input("\n"); +remove_tree( "$type_dir/$old_dir" ); +unlink "$type_dir/$new_file" unless $tarball; -chdir '..'; open my $Maintainers_pl, '<', 'Porting/Maintainers.pl'; open my $new_Maintainers_pl, '>', 'Maintainers.pl'; -my $found; +my $found = 0; my $in_mod_section; while (<$Maintainers_pl>) { - if (!$found) { - if ($in_mod_section) { - if (/DISTRIBUTION/) { - if (s/\Q$old_version/$new_version/) { - $found = 1; - } + if ($in_mod_section) { + if ($found == 1) { + # Keep track of when and who did the sync. + # This must be before the DISTRIBUTION check. + # This ensures that *something* is updated when we re-update. + my $date = localtime; + my $user = $ENV{USER} ? "$ENV{USER} on " : ""; + my $key = "SYNCINFO"; + if ( /^'([A-Z_]+)'\s+=>/ and $1 eq $key) { + s/(=>\s+)'[^']+'/$1'$user$date'/; } - - if (/^ \}/) { - $in_mod_section = 0; + else { + print $new_Maintainers_pl + " '$key' => '$user$date',\n"; } + $found = 2; + $in_mod_section = 0; } - - if (/\Q$module/) { - $in_mod_section = 1; + if (/DISTRIBUTION/) { + if (s/\Q$old_version/$new_version/) { + $found = 1; + } + } + if (/^\s*\}/) { # sanity + $in_mod_section = 0; } } + if (/\Q$module\E/ and !$found) { + $in_mod_section = 1; + } + print $new_Maintainers_pl $_; } @@ -662,6 +861,28 @@ else { say "Make sure you update this by hand before committing."; } +# Run the tests. First the test belonging to the module, followed by the +# tests in t/porting + +my $shell_quote = WIN32 ? '"' : "'"; +if ($no_test) { + print "*** NOT RUNNING TESTS ***\n"; +} else { + run_make "test-harness TEST_ARGS=$shell_quote-re $pkg_dir$shell_quote"; + run_make "test-porting"; +} + +my $committed; +if (@changes_info) { + system git => 'commit', + join("\n", + "-m$type_dir/$pkg_dir - ${re_update}Update to version $new_version", + "",@changes_info), + "$type_dir/$pkg_dir", "MANIFEST", "Porting/Maintainers.pl" + or $committed = 1; # note system returns true for an error! +} + + print <<"EOF"; ======================================================================= @@ -676,11 +897,37 @@ has added an XS dependency - even if the full test suite passes just fine. Hopefully all will complete successfully, but if not, you can make any changes you need to get the tests to pass. Don't forget that you'll need a "CUSTOMIZED" entry in Porting/Maintainers.pl if you change any of the -files under cpan/$pkg_dir. +files under $type_dir/$pkg_dir. + +EOF + +if ($committed) { + print <<"EOF"; +The changes have already been committed. If the tests above fail you can +discard this patch with + + git reset --hard HEAD^. + +You may also want to review the commit message and alter it with + + git commit --amend + +Regardless you still need to push this commit upstream with something like + + git push origin HEAD:$ENV{USER}/update_${pkg_dir}_v_$new_version -Once all tests pass, you can "git add -u" and "git commit" the changes -with a message along the lines of "Update Foo::Bar to v1.234". +EOF +} else { + print <<"EOF"; +Once all tests pass, you can commit it with a command like: + + git commit -m${shell_quote}$type_dir/$pkg_dir - Update to version $new_version${shell_quote} $type_dir/$pkg_dir + +and then push it upstream with a command like + + git push origin HEAD:$ENV{USER}/update_${pkg_dir}_v_$new_version EOF +} __END__ diff --git a/gnu/usr.bin/perl/Porting/todo.pod b/gnu/usr.bin/perl/Porting/todo.pod index 7bbd6717a2b..800e9847896 100644 --- a/gnu/usr.bin/perl/Porting/todo.pod +++ b/gnu/usr.bin/perl/Porting/todo.pod @@ -137,7 +137,7 @@ for example POSIX passes Exporter some very memory hungry data structures. =head2 makedef.pl and conditional compilation -The script F that generates the list of exported symbols on +The script F generates the list of exported symbols on platforms which need this. Functions are declared in F, variables in F. Quite a few of the functions and variables are conditionally declared there, using C<#ifdef>. However, F doesn't understand the @@ -486,7 +486,7 @@ Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall. On these systems, it might be the default compilation mode, and there is currently no guarantee that passing no use64bitall option to the Configure process will build a 32bit perl. Implementing -Duse32bit* -options would be nice for perl 5.36.3. +options would be nice for a future version. =head2 Profile Perl - am I hot or not? @@ -1183,7 +1183,7 @@ L =head1 Big projects Tasks that will get your name mentioned in the description of the "Highlights -of 5.36.3" +of 5.40.0" =head2 make ithreads more robust diff --git a/gnu/usr.bin/perl/README b/gnu/usr.bin/perl/README index 7dd3a2db564..33d33c5df8f 100644 --- a/gnu/usr.bin/perl/README +++ b/gnu/usr.bin/perl/README @@ -2,10 +2,7 @@ Perl is Copyright (C) 1993 - 2023 by Larry Wall and others. All rights reserved. - - -ABOUT PERL -========== +# ABOUT PERL Perl is a general-purpose programming language originally developed for text manipulation and now used for a wide range of tasks including @@ -28,15 +25,14 @@ There are also many Perl books available, covering a wide variety of topics, from various publishers. See pod/perlbook.pod for more information. -INSTALLATION -============ +# INSTALLATION If you're using a relatively modern operating system and want to install this version of Perl locally, run the following commands: - ./Configure -des -Dprefix=$HOME/localperl - make test - make install + ./Configure -des -Dprefix=$HOME/localperl + make test + make install This will configure and compile perl for your platform, run the regression tests, and install perl in a subdirectory "localperl" of your home directory. @@ -50,11 +46,10 @@ variety of platforms, some more common than others. Once you have Perl installed, a wealth of documentation is available to you through the 'perldoc' tool. To get started, run this command: - perldoc perl + perldoc perl -IF YOU RUN INTO TROUBLE -======================= +# IF YOU RUN INTO TROUBLE Perl is a large and complex system that's used for everything from knitting to rocket science. If you run into trouble, it's quite @@ -76,20 +71,19 @@ Just a personal note: I want you to know that I create nice things like this because it pleases the Author of my story. If this bothers you, then your notion of Authorship needs some revision. But you can use perl anyway. :-) - The author. +The author. -LICENSING -========= +# LICENSING This program is free software; you can redistribute it and/or modify it under the terms of either: - a) the GNU General Public License as published by the Free - Software Foundation; either version 1, or (at your option) any - later version, or +a. the GNU General Public License as published by the Free + Software Foundation; either version 1, or (at your option) any + later version, or - b) the "Artistic License" which comes with this Kit. +b. the "Artistic License" which comes with this Kit. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -126,5 +120,3 @@ is, in this case, a form of mere aggregation.) This is my interpretation of the GPL. If you still have concerns or difficulties understanding my intent, feel free to contact me. Of course, the Artistic License spells all this out for your protection, so you may prefer to use that. - - diff --git a/gnu/usr.bin/perl/README.aix b/gnu/usr.bin/perl/README.aix index 5398150315e..5e2fc9ca98d 100644 --- a/gnu/usr.bin/perl/README.aix +++ b/gnu/usr.bin/perl/README.aix @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.amiga b/gnu/usr.bin/perl/README.amiga index 41345c1a0bf..68ef827c818 100644 --- a/gnu/usr.bin/perl/README.amiga +++ b/gnu/usr.bin/perl/README.amiga @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see perlpod manpage) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.android b/gnu/usr.bin/perl/README.android index c9be849cb32..4aca1f2cf37 100644 --- a/gnu/usr.bin/perl/README.android +++ b/gnu/usr.bin/perl/README.android @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.bs2000 b/gnu/usr.bin/perl/README.bs2000 index d34cc7ce038..2ea0d123420 100644 --- a/gnu/usr.bin/perl/README.bs2000 +++ b/gnu/usr.bin/perl/README.bs2000 @@ -1,3 +1,5 @@ +# vim: syntax=pod + This document is written in pod format hence there are punctuation characters in odd places. Do not worry, you've apparently got the ASCII->EBCDIC translation worked out correctly. You can read more diff --git a/gnu/usr.bin/perl/README.cygwin b/gnu/usr.bin/perl/README.cygwin index ab9814a7d3d..79dc74ab6f8 100644 --- a/gnu/usr.bin/perl/README.cygwin +++ b/gnu/usr.bin/perl/README.cygwin @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see F) which is specially designed to be readable as is. @@ -31,7 +33,7 @@ L A recent net or commercial release of Cygwin is required. -At the time this document was last updated, Cygwin 1.7.16 was current. +At the time this document was last updated, Cygwin 3.0.7 was current. =head2 Cygwin Configuration @@ -41,8 +43,8 @@ that Perl builds cleanly. These changes are B required for normal Perl usage. B The binaries that are built will run on all Win32 versions. -They do not depend on your host system (WinXP/Win2K/Win7) or your -Cygwin configuration (binary/text mounts, cvgserver). +They do not depend on your host system or your +Cygwin configuration (binary/text mounts, cygserver). The only dependencies come from hard-coded pathnames like F. However, your host system and Cygwin configuration will affect Perl's runtime behavior (see L). @@ -128,11 +130,10 @@ NOTE: The BerkeleyDB library only completely works on NTFS partitions. A port of SysV IPC is available for Cygwin. NOTE: This has B been extensively tested. In particular, -C is undefined because it fails a Configure test -and on Win9x the I functions seem to hang. It also creates -a compile time dependency because F includes F<> -and F<> (which will be required in the future when compiling -CPAN modules). CURRENTLY NOT SUPPORTED! +C is undefined because it fails a Configure test. It +also creates a compile time dependency because F includes +F<> and F<> (which will be required in the +future when compiling CPAN modules). CURRENTLY NOT SUPPORTED! =item * C<-lutil> @@ -201,47 +202,14 @@ build perl from sources. =back -=head2 Suspicious Warnings on Cygwin - -You may see some messages during Configure that seem suspicious. - -=over 4 - -=item * Win9x and C - -Win9x does not correctly report C with a non-blocking read on a -closed pipe. You will see the following messages: - - But it also returns -1 to signal EOF, so be careful! - WARNING: you can't distinguish between EOF and no data! - - *** WHOA THERE!!! *** - The recommended value for $d_eofnblk on this machine was - "define"! - Keep the recommended value? [y] - -At least for consistency with WinNT, you should keep the recommended -value. - -=item * Compiler/Preprocessor defines - -The following error occurs because of the Cygwin C<#define> of -C<_LONG_DOUBLE>: - - Guessing which symbols your C compiler and preprocessor define... - try.c:: missing binary operator - -This failure does not seem to cause any problems. With older gcc -versions, "parse error" is reported instead of "missing binary -operator". - -=back - =head1 MAKE ON CYGWIN Simply run I and wait: - make 2>&1 | tee log.make + make -jn 2>&1 | tee log.make + +where I is the maximum number of simultaneous compilations you want; +omitting this parameter is the same as specifying C<-j1>. =head1 TEST ON CYGWIN @@ -252,7 +220,12 @@ There are two steps to running the test suite: cd t; ./perl harness 2>&1 | tee ../log.harness The same tests are run both times, but more information is provided when -running as C<./perl harness>. +running as C<./perl harness>, and you can run the tests in parallel by +instead specifying + + cd t; TEST_JOBS=n ./perl harness 2>&1 | tee ../log.harness + +where I is the maximum number of tests to run simulataneously. Test results vary depending on your host system and your Cygwin configuration. If a test can pass in some Cygwin setup, it is always @@ -329,8 +302,8 @@ to portability, more information can be found in the Cygwin documentation. =item * Pathnames Cygwin pathnames are separated by forward (F) slashes, Universal -Naming Codes (F) are also supported Since cygwin-1.7 non-POSIX -pathnames are discouraged. Names may contain all printable +Naming Codes (F) are also supported. Since cygwin-1.7 non-POSIX +pathnames should not be used. Names may contain all printable characters. File names are case insensitive, but case preserving. A pathname that @@ -419,30 +392,24 @@ or: as parent(0x6FB30000) != 0x6FE60000 46 [main] perl 3488 fork: child 3588 - died waiting for dll loading, errno11 -See L +See L It helps if not too many DLLs are loaded in memory so the available address space is larger, e.g. stopping the MS Internet Explorer might help. -Use the perlrebase or rebase utilities to resolve the conflicting dll addresses. ++Use the rebase utilities to resolve the conflicting dll addresses. The rebase package is included in the Cygwin setup. Use F from L to install it. -1. kill all perl processes and run C or - -2. kill all cygwin processes and services, start dash from cmd.exe and run C. +1. kill all perl processes and run + C< -xdev -name \*.dll | /bin/rebase -OT ->> or -=item * C - -On WinNT C can change a file's user and group IDs. On Win9x C -is a no-op, although this is appropriate since there is no security model. +2. kill all cygwin processes and services, and run setup.exe. =item * Miscellaneous File locking using the C command to C is a stub that returns C. -Win9x can not C an open file (although WinNT can). - The Cygwin C implementation has holes (it can not restrict file access by native Win32 programs). @@ -566,7 +533,7 @@ be kept as clean as possible. pod/perl573delta.pod pod/perl58delta.pod pod/perl581delta.pod pod/perl590delta.pod pod/perlhist.pod pod/perlmodlib.pod pod/perltoc.pod Porting/Glossary pod/perlgit.pod - Porting/checkAUTHORS.pl + Porting/updateAUTHORS.pl dist/Cwd/Changes ext/Compress-Raw-Zlib/Changes dist/Time-HiRes/Changes ext/Compress-Raw-Zlib/README ext/Compress-Zlib/Changes @@ -774,4 +741,4 @@ Jerry D. Hedden . =head1 HISTORY -Last updated: 2012-02-08 +Last updated: 2019-11-14 diff --git a/gnu/usr.bin/perl/README.freebsd b/gnu/usr.bin/perl/README.freebsd index 7cadb6e6d39..af311125a49 100644 --- a/gnu/usr.bin/perl/README.freebsd +++ b/gnu/usr.bin/perl/README.freebsd @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specifically designed to be readable as is. @@ -17,7 +19,7 @@ When perl is configured to use ithreads, it will use re-entrant library calls in preference to non-re-entrant versions. There is a bug in FreeBSD's C function in versions 4.5 and earlier that can cause a SEGV when reading large directories. A patch for FreeBSD libc is available -(see L ) +(see L) which has been integrated into FreeBSD 4.6. =head2 C<$^X> doesn't always contain a full path in FreeBSD @@ -27,7 +29,7 @@ system. On FreeBSD the full path of the perl interpreter is found by using C with C if that is supported, else by reading the symlink F. FreeBSD 7 and earlier has a bug where either approach sometimes returns an incorrect value -(see L ). +(see L). In these cases perl will fall back to the old behaviour of using C's C value for C<$^X>. diff --git a/gnu/usr.bin/perl/README.haiku b/gnu/usr.bin/perl/README.haiku index 139bf93c72c..c7dc17a91ee 100644 --- a/gnu/usr.bin/perl/README.haiku +++ b/gnu/usr.bin/perl/README.haiku @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. @@ -22,9 +24,9 @@ The build procedure is completely standard: Make perl executable and create a symlink for libperl: chmod a+x /boot/common/bin/perl - cd /boot/common/lib; ln -s perl5/5.36.3/BePC-haiku/CORE/libperl.so . + cd /boot/common/lib; ln -s perl5/5.38.2/BePC-haiku/CORE/libperl.so . -Replace C<5.36.3> with your respective version of Perl. +Replace C<5.38.2> with your respective version of Perl. =head1 KNOWN PROBLEMS diff --git a/gnu/usr.bin/perl/README.hpux b/gnu/usr.bin/perl/README.hpux index e782fd4a178..2a0aae6bf1d 100644 --- a/gnu/usr.bin/perl/README.hpux +++ b/gnu/usr.bin/perl/README.hpux @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.hurd b/gnu/usr.bin/perl/README.hurd index 6ce3c2ee06f..c03acf2521f 100644 --- a/gnu/usr.bin/perl/README.hurd +++ b/gnu/usr.bin/perl/README.hurd @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.irix b/gnu/usr.bin/perl/README.irix index 09b655c8eee..5e9446af8f9 100644 --- a/gnu/usr.bin/perl/README.irix +++ b/gnu/usr.bin/perl/README.irix @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specifically designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.linux b/gnu/usr.bin/perl/README.linux index 4e8fd69f5a8..db2d113f2f0 100644 --- a/gnu/usr.bin/perl/README.linux +++ b/gnu/usr.bin/perl/README.linux @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specifically designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.macosx b/gnu/usr.bin/perl/README.macosx index 587f810ce36..472b776d679 100644 --- a/gnu/usr.bin/perl/README.macosx +++ b/gnu/usr.bin/perl/README.macosx @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. @@ -10,9 +12,9 @@ perlmacosx - Perl under Mac OS X This document briefly describes Perl under Mac OS X. - curl -O https://www.cpan.org/src/perl-5.36.3.tar.gz - tar -xzf perl-5.36.3.tar.gz - cd perl-5.36.3 + curl -O https://www.cpan.org/src/perl-5.38.2.tar.gz + tar -xzf perl-5.38.2.tar.gz + cd perl-5.38.2 ./Configure -des -Dprefix=/usr/local/ make make test @@ -20,7 +22,7 @@ This document briefly describes Perl under Mac OS X. =head1 DESCRIPTION -The latest Perl release (5.36.3 as of this writing) builds without changes +The latest Perl release (5.38.2 as of this writing) builds without changes under all versions of Mac OS X from 10.3 "Panther" onwards. In order to build your own version of Perl you will need 'make', diff --git a/gnu/usr.bin/perl/README.openbsd b/gnu/usr.bin/perl/README.openbsd index 2606208a30b..63c8ed388bf 100644 --- a/gnu/usr.bin/perl/README.openbsd +++ b/gnu/usr.bin/perl/README.openbsd @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specifically designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.os2 b/gnu/usr.bin/perl/README.os2 index efeb1560aff..45b831201d3 100644 --- a/gnu/usr.bin/perl/README.os2 +++ b/gnu/usr.bin/perl/README.os2 @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see perlpod manpage) which is specially designed to be readable as is. @@ -619,7 +621,7 @@ C in F, see L">. =item Additional Perl modules - unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.36.3/ + unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.38.2/ Same remark as above applies. Additionally, if this directory is not one of directories on @INC (and @INC is influenced by C), you diff --git a/gnu/usr.bin/perl/README.os390 b/gnu/usr.bin/perl/README.os390 index 8ec684608a4..3cadfe296a8 100644 --- a/gnu/usr.bin/perl/README.os390 +++ b/gnu/usr.bin/perl/README.os390 @@ -1,3 +1,5 @@ +# vim: syntax=pod + This document is written in pod format hence there are punctuation characters in odd places. You can read more about pod in pod/perlpod.pod or the short summary in the INSTALL file. diff --git a/gnu/usr.bin/perl/README.os400 b/gnu/usr.bin/perl/README.os400 index a5f22c59be5..fcb6100c113 100644 --- a/gnu/usr.bin/perl/README.os400 +++ b/gnu/usr.bin/perl/README.os400 @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.plan9 b/gnu/usr.bin/perl/README.plan9 index 5e53c05bdb9..57b6be79df3 100644 --- a/gnu/usr.bin/perl/README.plan9 +++ b/gnu/usr.bin/perl/README.plan9 @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.qnx b/gnu/usr.bin/perl/README.qnx index f677c203c6e..f109799fa52 100644 --- a/gnu/usr.bin/perl/README.qnx +++ b/gnu/usr.bin/perl/README.qnx @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.solaris b/gnu/usr.bin/perl/README.solaris index 7b1107982a5..bd9405a2e61 100644 --- a/gnu/usr.bin/perl/README.solaris +++ b/gnu/usr.bin/perl/README.solaris @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specifically designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.synology b/gnu/usr.bin/perl/README.synology index f2dd7571df1..8d6f41ab7d7 100644 --- a/gnu/usr.bin/perl/README.synology +++ b/gnu/usr.bin/perl/README.synology @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. But if you have been into Perl you @@ -23,20 +25,98 @@ L. +supported architectures are armv5, armv7, mipsel, wl500g, x86_32, and x86_64. +Check L for supported platforms. + +That github link also shows what environments should be supported. + +It was tested on DSM-7.1 by H.Merijn Brand on a DS218+ and a DS220+ (both +Intel x64). + +Entware comes with a precompiled 5.26.1 (Jan 2018) that allowes +building shared XS code. Note that this installation does B use +a site_perl folder. The available C works. If all required +development packages are installed too, also for XS. + +Installing perl from the Community package center: + +=over 4 + +=item * + +Using your favourite browser open the DSM management page and start +the Package Center. + +=item * + +In Settings, add the following Package Sources: + + Name: Community + Location: https://synopackage.com/repository/spk/All + +=item * + +Still in Settings, in Channel Update, select Beta Channel. + +=back + +To complete the development environment, install make and gcc + + ds220# opkg install make gcc + +Then, optionally, make sure you use the more recent bash and gawk. + + ds220# opkg install bash gawk + ds220# cd /usr/bin + ds220# mv bash bash.syno + ds220# ln -s /opt/bin/bash . + +In order to have Configure find the required libraries + + ds220# cd /opt/lib + ds220# ln -s libcrypt.so.? libcrypt.so + ds220# ln -s libdl.so.? libdl.so + ds220# ln -s libgdbm.so.? libgdbm.so + ds220# ln -s libgdbm_compat.so.? libgdbm_compat.so + ds220# ln -s libm.so.? libm.so + ds220# ln -s libpthread.so.? libpthread.so + ds220# ln -s libutil.so.? libutil.so + +=head3 DSM 6 + +Using iPkg has been deprecated on DSM 6, but an alternative is available +for DSM 6: entware/opkg. For instructions on how to use that, please read +L + +That sadly does not (yet) work on QorIQ. At the moment of writing, the +supported architectures are armv5, armv7, mipsel, wl500g, x86_32, and x86_64. +Check L for supported platforms. + +Entware-ng comes with a precompiled 5.24.1 (June 2017) that allowes +building shared XS code. Note that this installation does B use +a site_perl folder. The available C works. If all required +development packages are installed too, also for XS. + =head3 DSM 5 As DSM is a trimmed-down Linux system, it lacks many of the tools and @@ -62,6 +142,9 @@ In Settings, add the following Package Sources: https://www.cphub.net http://packages.quadrat4.de +As these two are both discontinued, it is unlikely you will be able +to set up a build environment on DSM 5. + =item * Still in Settings, in Channel Update, select Beta Channel. @@ -131,21 +214,6 @@ Execute the following commands: B When you perform a system software upgrade, these links will disappear and need to be re-established. -=head3 DSM 6 - -Using iPkg has been deprecated on DSM 6, but an alternative is available -for DSM 6: entware/opkg. For instructions on how to use that, please read -L - -That sadly does not (yet) work on QorIQ. At the moment of writing, the -supported architectures are armv5, armv7, mipsel, wl500g, x86_32, and x86_64. -Check L for supported platforms. - -Entware-ng comes with a precompiled 5.24.1 (June 2017) that allowes -building shared XS code. Note that this installation does B use -a site_perl folder. The available C works. If all required -development packages are installed too, also for XS. - =head2 Compiling Perl 5 When the build environment has been set up, building and testing Perl @@ -158,16 +226,18 @@ sources as usual, and add a file Policy.sh as follows: # Install Perl in a tree in /opt/perl instead of /opt/bin. prefix=/opt/perl - # Select the compiler. Note that there is no 'cc' alias or link. + # Select the compiler. Note that there is no 'cc' alias or link + # on older DSM versions cc=gcc + awk=/opt/bin/gawk - # Build flags. + # Build flags. Optional ccflags="-DDEBUGGING" # Library and include paths. - libpth="/lib" locincpth="/opt/include" - loclibpth="/lib" + loclibpth="/opt/lib /usr/local/lib /usr/lib" + libpth="/opt/lib /usr/local/lib /usr/lib" You may want to create the destination directory and give it the right permissions before installing, thus eliminating the need to build Perl @@ -176,16 +246,19 @@ as a super user. In the directory where you unpacked the sources, issue the familiar commands: - ./Configure -des - make - make test - make install + $ bash ./Configure -Dusedevel -Duseshrplib -Duse64bitall -des + $ make -j2 + $ env TEST_JOBS=2 make test_harness + $ make install =head2 Known problems =head3 Configure -No known problems yet +The GNU C-compiler might spit out unexpected stuff under -v, which +causes the analysis of cppsymbols to fail because of unmatched quotes. + +You'll note if config.sh fails with a syntax error. =head3 Build @@ -216,7 +289,7 @@ some system components will start to fail. =back -=head2 Smoke testing Perl 5 +=head2 Smoke testing Perl If building completes successfully, you can set up smoke testing as described in the Test::Smoke documentation. @@ -267,11 +340,11 @@ the programs are run. =head1 REVISION -June 2017, for Synology DSM 5.1.5022 and DSM 6.1-15101-4. +July 2022, for DSM 5.1.5022 and DSM 6.1-15101-4, and DSM-7.1-42661-3. =head1 AUTHOR Johan Vromans -H. Merijn Brand +H. Merijn Brand =cut diff --git a/gnu/usr.bin/perl/README.tru64 b/gnu/usr.bin/perl/README.tru64 index 7b596a9910b..c5162b399f5 100644 --- a/gnu/usr.bin/perl/README.tru64 +++ b/gnu/usr.bin/perl/README.tru64 @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. diff --git a/gnu/usr.bin/perl/README.vms b/gnu/usr.bin/perl/README.vms index 716fd860694..5d8bd9b8ef0 100644 --- a/gnu/usr.bin/perl/README.vms +++ b/gnu/usr.bin/perl/README.vms @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the equal signs on the left. This file is written in the POD format (see [.pod]perlpod.pod) which is specially designed to be readable as is. @@ -137,11 +139,11 @@ You may need to set up a foreign symbol for the unpacking utility of choice. Once you have done so, use a command like the following to unpack the archive: - vmstar -xvf perl-5^.36^.3.tar + vmstar -xvf perl-5^.38^.2.tar Then set default to the top-level source directory like so: - set default [.perl-5^.36^.3] + set default [.perl-5^.38^.2] and proceed with configuration as described in the next section. diff --git a/gnu/usr.bin/perl/README.win32 b/gnu/usr.bin/perl/README.win32 index bad9e5be750..5a7474aa83d 100644 --- a/gnu/usr.bin/perl/README.win32 +++ b/gnu/usr.bin/perl/README.win32 @@ -1,3 +1,5 @@ +# vim: syntax=pod + If you read this file _as_is_, just ignore the funny characters you see. It is written in the POD format (see pod/perlpod.pod) which is specially designed to be readable as is. @@ -53,7 +55,7 @@ delivering complete gcc toolchain for MS Windows: Delivers gcc toolchain building 32-bit executables (which can be used both 32 and 64 bit Windows platforms) -=item L +=item L Delivers gcc toolchain targeting both 64-bit Windows and 32-bit Windows platforms (despite the project name "mingw-w64" they are not only 64-bit @@ -72,10 +74,10 @@ https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2013-compatibility-v and https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2013-sysrequirements-vs -The MinGW64 compiler is available at L. +The MinGW64 compiler is available at L. The latter is actually a cross-compiler targeting Win64. There's also a trimmed down compiler (no java, or gfortran) suitable for building perl available at: -L +L NOTE: If you're using a 32-bit compiler to build perl on a 64-bit Windows operating system, then you should set the WIN64 environment variable to "undef". @@ -133,20 +135,25 @@ These free versions of Visual C++ 2013-2022 Professional contain the same compilers and linkers that ship with the full versions, and also contain everything necessary to build Perl. -These packages can be downloaded by searching in the Download Center at -L. (Providing exact -links to these packages has proven a pointless task because the links keep on -changing so often.) +These packages can be downloaded from L. Install Visual C++ 2013-2022 Community, then setup your environment using, e.g. - C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat +F (assuming the default installation location was chosen). -Perl should now build using the win32/Makefile. You will need to edit that -file to set CCTYPE to one of MSVC120-MSVC142 first. +Perl should now build using the F. You will need to edit that +file to set C to one of C-C first. + +=item Microsoft C++ Build Tools + +There's also a standalone (IDE-less) version of the build tools mentioned +above containing the MSVC compiler available for download from +L. + +This is also referred to as I. =item GCC @@ -154,7 +161,7 @@ Perl can be compiled with gcc from MinGW (version 3.4.5 or later) or from MinGW64 (version 4.4.3 or later). It can be downloaded here: L -L +L You also need gmake. Usually it comes with MinGW but its executable may have a different name, such as mingw32-make.exe. @@ -167,11 +174,11 @@ or later, and with MinGW64 64-bit 6.3.0 or later. =item Intel C++ Compiler Experimental support for using Intel C++ Compiler has been added. Edit -win32/Makefile and pick the correct CCTYPE for the Visual C that Intel C was -installed into. Also uncomment __ICC to enable Intel C on Visual C support. +F and pick the correct C for the Visual C that Intel C +was installed into. Also uncomment C<__ICC> to enable Intel C on Visual C support. To set up the build environment, from the Start Menu run IA-32 Visual Studio 20__ mode or Intel 64 Visual Studio 20__ mode as -appropriate. Then run nmake as usually in that prompt box. +appropriate. Then run C as usual in that prompt box. Only Intel C++ Compiler v12.1 has been tested. Other versions probably will work. Using Intel C++ Compiler instead of Visual C has the benefit of C99 @@ -187,65 +194,65 @@ unlike GCC. =item * -Make sure you are in the "win32" subdirectory under the perl toplevel. -This directory contains a "Makefile" that will work with -versions of nmake that come with Visual C++, and -a GNU make "GNUmakefile" that will work for all supported compilers. -The defaults in the gmake makefile are setup to build using MinGW/gcc. +Make sure you are in the F subdirectory under the perl toplevel. +This directory contains a F that will work with +versions of C that come with Visual C++, and +a GNU make F that will work for all supported compilers. +The defaults in the C makefile are set up to build with MinGW/gcc. =item * -Edit the GNUmakefile (or Makefile, if you're using nmake) and change the values -of INST_DRV and INST_TOP. You can also enable various build flags. These are -explained in the makefiles. +Edit the F (or F, if you're using F) and change +the values of I and C. You can also enable various build +flags. These are explained in the makefiles. -Note that it is generally not a good idea to try to build a perl with -INST_DRV and INST_TOP set to a path that already exists from a previous +Note that it is generally not a good idea to try to build a C with +C and C set to a path that already exists from a previous build. In particular, this may cause problems with the -lib/ExtUtils/t/Embed.t test, which attempts to build a test program and -may end up building against the installed perl's lib/CORE directory rather -than the one being tested. +F test, which attempts to build a test program and +may end up building against the installed C's F directory +rather than the one being tested. -You will have to make sure that CCTYPE is set correctly and that -CCHOME points to wherever you installed your compiler. For GCC this +You will have to make sure that C is set correctly and that +C points to wherever you installed your compiler. For GCC this should be the directory that contains the F, F and F directories. If building with the cross-compiler provided by mingw-w64.org you'll need to uncomment the line that sets -GCCCROSS in the GNUmakefile. Do this only if it's the cross-compiler - ie -only if the bin folder doesn't contain a gcc.exe. (The cross-compiler -does not provide a gcc.exe, g++.exe, ar.exe, etc. Instead, all of these -executables are prefixed with 'x86_64-w64-mingw32-'.) +C in the F. Do this only if it's the cross-compiler, +ie. only if the F folder doesn't contain a F. (The cross-compiler +does not provide a F, F, F, etc. Instead, all of these +executables are prefixed with C.) -The default value for CCHOME in the makefiles for Visual C++ +The default value for C in the makefiles for Visual C++ may not be correct for some versions. Make sure the default exists and is valid. -If you want build some core extensions statically into perl's dll, specify -them in the STATIC_EXT macro. +If you want build some core extensions statically into C's DLL, +specify them in the C macro. Be sure to read the instructions near the top of the makefiles carefully. =item * -Type "gmake" (or "nmake" if you are using that make). +Type C (or C if you are using that version of C). -This should build everything. Specifically, it will create perl.exe, -perl536.dll at the perl toplevel, and various other extension dll's -under the lib\auto directory. If the build fails for any reason, make +This should build everything. Specifically, it will create F, +F at the perl toplevel, and various other extension DLL's +under the F directory. If the build fails for any reason, make sure you have done the previous steps correctly. -To try gmake's parallel mode, type "gmake -j2", where 2, is the maximum number +To try C's parallel mode, type C where C<2> is the maximum number of parallel jobs you want to run. A number of things in the build process will run in parallel, but there are serialization points where you will see just 1 CPU maxed out. This is normal. If you are advanced enough with building C code, here is a suggestion to speed -up building perl, and the later C. Try to keep your PATH environmental +up building C, and the later C. Try to keep your C environment variable with the least number of folders possible (remember to keep your C -compiler's folders there). C or C -depending on your OS version should be first folder in PATH, since "cmd.exe" +compiler's folders there). F or F +depending on your OS version should be first folder in C, since C is the most commonly launched program during the build and later testing. =back diff --git a/gnu/usr.bin/perl/XSUB.h b/gnu/usr.bin/perl/XSUB.h index 6cd6d2e4aa2..82cd0dc7777 100644 --- a/gnu/usr.bin/perl/XSUB.h +++ b/gnu/usr.bin/perl/XSUB.h @@ -74,28 +74,28 @@ Macro to declare an XSUB and its C parameter list explicitly exporting the symbo Macro used by C> and C> to declare a function prototype. You probably shouldn't be using this directly yourself. -=for apidoc Amns||dAX +=for apidoc Amn;||dAX Sets up the C variable. This is usually handled automatically by C by calling C. -=for apidoc Amns||dAXMARK +=for apidoc Amn;||dAXMARK Sets up the C variable and stack marker variable C. This is usually handled automatically by C by calling C. -=for apidoc Amns||dITEMS +=for apidoc Amn;||dITEMS Sets up the C variable. This is usually handled automatically by C by calling C. -=for apidoc Amns||dXSARGS +=for apidoc Amn;||dXSARGS Sets up stack and mark pointers for an XSUB, calling C and C. Sets up the C and C variables by calling C and C. This is usually handled automatically by C. -=for apidoc Amns||dXSI32 +=for apidoc Amn;||dXSI32 Sets up the C variable for an XSUB which has aliases. This is usually handled automatically by C. -=for apidoc Amns||dUNDERBAR +=for apidoc Amn;||dUNDERBAR Sets up any variable needed by the C macro. It used to define C, but it is currently a noop. However, it is strongly advised to still use it for ensuring past and future compatibility. @@ -261,16 +261,16 @@ Return a double from an XSUB immediately. Uses C. =for apidoc Am|void|XSRETURN_PV|char* str Return a copy of a string from an XSUB immediately. Uses C. -=for apidoc Amns||XSRETURN_NO +=for apidoc Amn;||XSRETURN_NO Return C<&PL_sv_no> from an XSUB immediately. Uses C. -=for apidoc Amns||XSRETURN_YES +=for apidoc Amn;||XSRETURN_YES Return C<&PL_sv_yes> from an XSUB immediately. Uses C. -=for apidoc Amns||XSRETURN_UNDEF +=for apidoc Amn;||XSRETURN_UNDEF Return C<&PL_sv_undef> from an XSUB immediately. Uses C. -=for apidoc Amns||XSRETURN_EMPTY +=for apidoc Amn;||XSRETURN_EMPTY Return an empty list from an XSUB immediately. =for apidoc AmU||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto @@ -282,18 +282,18 @@ The version identifier for an XS module. This is usually handled automatically by C. See C>. -=for apidoc Amns||XS_VERSION_BOOTCHECK +=for apidoc Amn;||XS_VERSION_BOOTCHECK Macro to verify that a PM module's C<$VERSION> variable matches the XS module's C variable. This is usually handled automatically by C. See L. -=for apidoc Amns||XS_APIVERSION_BOOTCHECK +=for apidoc Amn;||XS_APIVERSION_BOOTCHECK Macro to verify that the perl api version an XS module has been compiled against matches the api version of the perl interpreter it's being loaded into. =for apidoc_section $exceptions -=for apidoc Amns||dXCPT +=for apidoc Amn;||dXCPT Set up necessary local variables for exception handling. See L. @@ -306,7 +306,7 @@ Ends a try block. See L. =for apidoc AmnU||XCPT_CATCH Introduces a catch block. See L. -=for apidoc Amns||XCPT_RETHROW +=for apidoc Amn;||XCPT_RETHROW Rethrows a previously caught exception. See L. =cut @@ -329,15 +329,15 @@ Rethrows a previously caught exception. See L. return; \ } STMT_END -#define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END -#define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END -#define XSRETURN_NV(v) STMT_START { XST_mNV(0,v); XSRETURN(1); } STMT_END -#define XSRETURN_PV(v) STMT_START { XST_mPV(0,v); XSRETURN(1); } STMT_END -#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END -#define XSRETURN_NO STMT_START { XST_mNO(0); XSRETURN(1); } STMT_END -#define XSRETURN_YES STMT_START { XST_mYES(0); XSRETURN(1); } STMT_END -#define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END -#define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END +#define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END +#define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END +#define XSRETURN_NV(v) STMT_START { XST_mNV(0,v); XSRETURN(1); } STMT_END +#define XSRETURN_PV(v) STMT_START { XST_mPV(0,v); XSRETURN(1); } STMT_END +#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END +#define XSRETURN_NO STMT_START { XST_mNO(0); XSRETURN(1); } STMT_END +#define XSRETURN_YES STMT_START { XST_mYES(0); XSRETURN(1); } STMT_END +#define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END +#define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END #define newXSproto(a,b,c,d) newXS_flags(a,b,c,d,0) @@ -426,7 +426,7 @@ Rethrows a previously caught exception. See L. } STMT_END #define DBM_ckFilter(arg,type,name) \ - STMT_START { \ + STMT_START { \ if (db->type) { \ if (db->filtering) { \ croak("recursion detected in %s", name) ; \ @@ -450,7 +450,8 @@ Rethrows a previously caught exception. See L. if (name[7] == 's'){ \ arg = sv_2mortal(arg); \ } \ - } } STMT_END + } \ + } STMT_END #if 1 /* for compatibility */ # define VTBL_sv &PL_vtbl_sv diff --git a/gnu/usr.bin/perl/amigaos4/amigaio.c b/gnu/usr.bin/perl/amigaos4/amigaio.c index e51186c9584..698165fe6b0 100644 --- a/gnu/usr.bin/perl/amigaos4/amigaio.c +++ b/gnu/usr.bin/perl/amigaos4/amigaio.c @@ -249,7 +249,7 @@ PerlIO *Perl_my_popen(pTHX_ const char *cmd, const char *mode) } /* Our new process is running and will close it streams etc - * once its done. All we need to is open the pipe via stdio + * once it's done. All we need to is open the pipe via stdio */ return result; diff --git a/gnu/usr.bin/perl/autodoc.pl b/gnu/usr.bin/perl/autodoc.pl index 8dea08cd109..8b05a170ab9 100644 --- a/gnu/usr.bin/perl/autodoc.pl +++ b/gnu/usr.bin/perl/autodoc.pl @@ -33,7 +33,7 @@ my %extra_input_pods = ( 'dist/ExtUtils-ParseXS/lib/perlxs.pod' => 1 ); # the legal section names, or an error is thrown. $section_name_variable must # be one of the legal section name variables defined below; these expand to # legal section names. This form is used so that minor wording changes in -# these titles can be confied to this file. All the names of the variables +# these titles can be confined to this file. All the names of the variables # end in '_scn'; this suffix is optional in the apidoc_section lines. # # All API elements defined between this line and the next 'apidoc_section' @@ -369,7 +369,7 @@ my $apidoc_re = qr/ ^ (\s*) # $1 (.*?) # $7 \s* \n /x; # Only certain flags, dealing with display, are acceptable for apidoc_item -my $display_flags = "fFnDopsTx"; +my $display_flags = "fFnDopTx;"; sub check_api_doc_line ($$) { my ($file, $in) = @_; @@ -529,13 +529,19 @@ sub autodoc ($$) { # parse a file and extract documentation info } die "flag '$1' is not legal (for function $element_name (from $file))" - if $flags =~ / ( [^AabCDdEeFfGhiIMmNnTOoPpRrSsUuWXxy] ) /x; + if $flags =~ / ( [^AabCDdEeFfGhiIMmNnTOoPpRrSsUuWXxy;#] ) /x; die "'u' flag must also have 'm' or 'y' flags' for $element_name" if $flags =~ /u/ && $flags !~ /[my]/; warn ("'$element_name' not \\w+ in '$proto_in_file' in $file") if $flags !~ /N/ && $element_name !~ / ^ [_[:alpha:]] \w* $ /x; + if ($flags =~ /#/) { + die "Return type must be empty for '$element_name'" + if $ret_type; + $ret_type = '#ifdef'; + } + if (exists $seen{$element_name} && $flags !~ /h/) { die ("'$element_name' in $file was already documented in $seen{$element_name}"); } @@ -633,21 +639,23 @@ sub autodoc ($$) { # parse a file and extract documentation info if ($element_name) { # Here, we have accumulated into $text, the pod for $element_name - my $where = $flags =~ /A/ ? 'api' : 'guts'; + my $where = $flags =~ /A/ ? 'api' : 'intern'; die "No =for apidoc_section nor =head1 in $file for '$element_name'\n" unless defined $section; - if (exists $docs{$where}{$section}{$element_name}) { + my $is_link_only = ($flags =~ /h/); + if (! $is_link_only && exists $docs{$where}{$section}{$element_name}) { warn "$0: duplicate API entry for '$element_name' in" . " $where/$section\n"; next; } # Override the text with just a link if the flags call for that - my $is_link_only = ($flags =~ /h/); if ($is_link_only) { if ($file_is_C) { - die "Can't currently handle link with items to it:\n$in" if @items; + die "Can't currently handle link with items to it:\n$in" + if @items; + $docs{$where}{$section}{X_tags}{$element_name} = $file; redo; # Don't put anything if C source } @@ -664,7 +672,7 @@ sub autodoc ($$) { # parse a file and extract documentation info # Don't output a usage example for linked to documentation if # it is trivial (has no arguments) and we aren't to add a # semicolon - $flags .= 'U' if $flags =~ /n/ && $flags !~ /[Us]/; + $flags .= 'U' if $flags =~ /n/ && $flags !~ /[U;]/; # Keep track of all the pod files that we refer to. push $described_elsewhere{$podname}->@*, $podname; @@ -1313,7 +1321,9 @@ sub docout ($$$) { # output the docs for one function group if ( ($item_flags =~ /p/ && $item_flags =~ /o/ && $item_flags !~ /M/) # Can't handle threaded varargs - || ($item_flags =~ /f/ && $item_flags !~ /T/)) + || ( $item_flags =~ /f/ + && $item_flags !~ /T/ + && $item_name !~ /strftime/)) { $item->{name} = "Perl_$item_name"; print $fh <<~"EOT"; @@ -1328,8 +1338,8 @@ sub docout ($$$) { # output the docs for one function group if ($flags =~ /[Uy]/) { # no usage; typedefs are considered simple enough # to never warrant a usage line - warn("U and s flags are incompatible") - if $flags =~ /U/ && $flags =~ /s/; + warn("U and ; flags are incompatible") + if $flags =~ /U/ && $flags =~ /;/; # nothing } else { @@ -1361,11 +1371,12 @@ sub docout ($$$) { # output the docs for one function group my @base_args = $items[0]->{args}->@*; my $base_thread_context = $items[0]->{flags} =~ /T/; for (my $i = 1; $i < @items; $i++) { - no warnings 'experimental::smartmatch'; my $item = $items[$i]; + my $args_are_equal = $item->{args}->@* == @base_args + && !grep $item->{args}[$_] ne $base_args[$_], keys @base_args; $need_individual_usage = 1 if $item->{ret_type} ne $base_ret_type - || ! ($item->{args}->@* ~~ @base_args) + || ! $args_are_equal || ( $item->{flags} =~ /T/ != $base_thread_context); my $ret_length = length $item->{ret_type}; @@ -1492,7 +1503,7 @@ sub docout ($$$) { # output the docs for one function group print $fh ")"; } - print $fh ";" if $item_flags =~ /s/; # semicolon: "dTHR;" + print $fh ";" if $item_flags =~ /;/; # semicolon: "dTHR;" print $fh "\n"; # Only the first entry is normally displayed @@ -1508,44 +1519,14 @@ sub docout ($$$) { # output the docs for one function group } sub construct_missings_section { - my ($pod_name, $missings_ref) = @_; + my ($missings_hdr, $missings_ref) = @_; my $text = ""; - return $text unless $missings_ref->@*; - - $text .= <<~EOT; - - =head1 $undocumented_scn - - EOT - if ($pod_name eq 'perlapi') { - $text .= <<~'EOT'; - The following functions have been flagged as part of the public - API, but are currently undocumented. Use them at your own risk, - as the interfaces are subject to change. Functions that are not - listed in this document are not intended for public use, and - should NOT be used under any circumstances. - - If you feel you need to use one of these functions, first send - email to L. - It may be that there is a good reason for the function not being - documented, and it should be removed from this list; or it may - just be that no one has gotten around to documenting it. In the - latter case, you will be asked to submit a patch to document the - function. Once your patch is accepted, it will indicate that the - interface is stable (unless it is explicitly marked otherwise) and - usable by you. - EOT - } - else { - $text .= <<~'EOT'; - The following functions are currently undocumented. If you use - one of them, you may wish to consider creating and submitting - documentation for it. - EOT - } + $text .= "$missings_hdr\n" . format_pod_indexes($missings_ref); - $text .= "\n" . format_pod_indexes($missings_ref); + if ($missings_ref->@* == 0) { + return $text . "\nThere are currently no items of this type\n"; + } # Sort the elements. my @missings = sort dictionary_order $missings_ref->@*; @@ -1654,19 +1635,74 @@ sub construct_missings_section { } sub dictionary_order { - # Do a case-insensitive dictionary sort, with only alphabetics - # significant, falling back to using everything for determinancy - return (uc($a =~ s/[[:^alpha:]]//r) cmp uc($b =~ s/[[:^alpha:]]//r)) - || uc($a) cmp uc($b) - || $a cmp $b; + # Do a case-insensitive dictionary sort, falling back in stages to using + # everything for determinancy. The initial comparison ignores + # all non-word characters and non-trailing underscores and digits, with + # trailing ones collating to after any other characters. This collation + # order continues in case tie breakers are needed; sequences of digits + # that do get looked at always compare numerically. The first tie + # breaker takes all digits and underscores into account. The next tie + # breaker uses a caseless character-by-character comparison of everything + # (including non-word characters). Finally is a cased comparison. + # + # This gives intuitive results, but obviously could be tweaked. + + no warnings 'non_unicode'; + + local $a = $a; + local $b = $b; + + # Convert all digit sequences to same length with leading zeros, so for + # example, 8 will compare less than 16 (using a fill length value that + # should be longer than any sequence in the input). + $a =~ s/(\d+)/sprintf "%06d", $1/ge; + $b =~ s/(\d+)/sprintf "%06d", $1/ge; + + # Translate any underscores and digits so they compare after all Unicode + # characters + $a =~ tr[_0-9]/\x{110000}-\x{11000A}/; + $b =~ tr[_0-9]/\x{110000}-\x{11000A}/; + + use feature 'state'; + # Modify \w, \W to reflect the changes. + state $ud = '\x{110000}-\x{11000A}'; # xlated underscore, digits + state $w = "\\w$ud"; # new \w string + state $mod_w = qr/[$w]/; + state $mod_W = qr/[^$w]/; + + # Only \w for initial comparison + my $a_only_word = uc($a =~ s/$mod_W//gr); + my $b_only_word = uc($b =~ s/$mod_W//gr); + + # And not initial nor interior underscores nor digits (by squeezing them + # out) + my $a_stripped = $a_only_word =~ s/ (*atomic:[$ud]+) (*pla: $mod_w ) //grxx; + my $b_stripped = $b_only_word =~ s/ (*atomic:[$ud]+) (*pla: $mod_w ) //grxx; + + # If the stripped versions differ, use that as the comparison. + my $cmp = $a_stripped cmp $b_stripped; + return $cmp if $cmp; + + # For the first tie breaker, repeat, but consider initial and interior + # underscores and digits, again having those compare after all Unicode + # characters + $cmp = $a_only_word cmp $b_only_word; + return $cmp if $cmp; + + # Next tie breaker is just a caseless comparison + $cmp = uc($a) cmp uc($b); + return $cmp if $cmp; + + # Finally a straight comparison + return $a cmp $b; } sub output { - my ($podname, $header, $dochash, $missings_ref, $footer) = @_; + my ($podname, $header, $dochash, $footer, @missings_refs) = @_; # # strip leading '|' from each line which had been used to hide # pod from pod checkers. - s/^\|//gm for $header, $footer; + s/^\|//gm for $header, $footer, @missings_refs; my $fh = open_new("pod/$podname.pod", undef, {by => "$0 extracting documentation", @@ -1685,6 +1721,12 @@ sub output { print $fh "\n=head1 $section_name\n"; + if ($section_info->{X_tags}) { + print $fh "X<$_>" for sort keys $section_info->{X_tags}->%*; + print $fh "\n"; + delete $section_info->{X_tags}; + } + if ($podname eq 'perlapi') { print $fh "\n", $valid_sections{$section_name}{header}, "\n" if defined $valid_sections{$section_name}{header}; @@ -1703,7 +1745,9 @@ sub output { } } else { - print $fh "\nThere are only public API items currently in $section_name\n"; + my $pod_type = ($podname eq 'api') ? "public" : "internal"; + print $fh "\nThere are currently no $pod_type API items in ", + $section_name, "\n"; } print $fh "\n", $valid_sections{$section_name}{footer}, "\n" @@ -1711,7 +1755,23 @@ sub output { && defined $valid_sections{$section_name}{footer}; } - print $fh construct_missings_section($podname, $missings_ref); + + my $first_time = 1; + while (1) { + my $missings_hdr = shift @missings_refs or last; + my $missings_ref = shift @missings_refs or die "Foo"; + + if ($first_time) { + $first_time = 0; + print $fh <<~EOT; + + =head1 $undocumented_scn + + EOT + } + + print $fh construct_missings_section($missings_hdr, $missings_ref); + } print $fh "\n$footer\n=cut\n"; @@ -1719,14 +1779,16 @@ sub output { } foreach (@{(setup_embed())[0]}) { - next if @$_ < 2; - my ($flags, $ret_type, $func, @args) = @$_; - s/\b(?:NN|NULLOK)\b\s+//g for @args; + my $embed= $_->{embed} + or next; + my ($flags, $ret_type, $func, $args) = @{$embed}{qw(flags return_type name args)}; + my @munged_args= @$args; + s/\b(?:NN|NULLOK)\b\s+//g for @munged_args; $funcflags{$func} = { flags => $flags, ret_type => $ret_type, - args => \@args, + args => \@munged_args, }; } @@ -1761,11 +1823,27 @@ foreach (sort keys %missing) { # List of funcs in the public API that aren't also marked as core-only, # experimental nor deprecated. -my @missing_api = grep $funcflags{$_}{flags} =~ /A/ - && $funcflags{$_}{flags} !~ /[xD]/ - && !$docs{api}{$_}, keys %funcflags; + +my @undocumented_api = grep { $funcflags{$_}{flags} =~ /A/ + && ! $docs{api}{$_} + } keys %funcflags; +my @undocumented_intern = grep { $funcflags{$_}{flags} !~ /[AS]/ + && ! $docs{intern}{$_} + } keys %funcflags; +my @undocumented_deprecated_api = grep { $funcflags{$_}{flags} =~ /D/ } + @undocumented_api; +my @undocumented_deprecated_intern = grep { $funcflags{$_}{flags} =~ /D/ } + @undocumented_intern; +my @undocumented_experimental_api = grep { $funcflags{$_}{flags} =~ /x/ } + @undocumented_api; +my @undocumented_experimental_intern = grep { $funcflags{$_}{flags} =~ /x/ } + @undocumented_intern; +my @missing_api = grep { $funcflags{$_}{flags} !~ /[xD]/ } @undocumented_api; push @missing_api, keys %missing_macros; +my @missing_intern = grep { $funcflags{$_}{flags} !~ /[xD]/ } + @undocumented_intern; + my @other_places = ( qw(perlclib ), keys %described_elsewhere ); my $places_other_than_intern = join ", ", map { "L<$_>" } sort dictionary_order 'perlapi', @other_places; @@ -1785,7 +1863,9 @@ my $section_list = join "\n\n", map { "=item L" } sort(dictionary_order keys %valid_sections), $undocumented_scn; # Keep last -output('perlapi', <<"_EOB_", $docs{api}, \@missing_api, <<"_EOE_"); +# Leading '|' is to hide these lines from pod checkers. khw is unsure if this +# is still needed. +my $api_hdr = <<"_EOB_"; |=encoding UTF-8 | |=head1 NAME @@ -1826,7 +1906,7 @@ output('perlapi', <<"_EOB_", $docs{api}, \@missing_api, <<"_EOE_"); | |Note that all Perl API global variables must be referenced with the C |prefix. Again, those not listed here are not to be used by extension writers, -|and can be changed or removed without notice; same with macros. +|and may be changed or removed without notice; same with macros. |Some macros are provided for compatibility with the older, |unadorned names, but this support may be disabled in a future release. | @@ -1870,6 +1950,8 @@ output('perlapi', <<"_EOB_", $docs{api}, \@missing_api, <<"_EOE_"); | |The listing below is alphabetical, case insensitive. _EOB_ + +my $api_footer = <<"_EOE_"; |=head1 AUTHORS | |Until May 1997, this document was maintained by Jeff Okamoto @@ -1889,11 +1971,45 @@ _EOB_ |F, $places_other_than_api _EOE_ -# List of non-static internal functions -my @missing_guts = - grep $funcflags{$_}{flags} !~ /[AS]/ && !$docs{guts}{$_}, keys %funcflags; +my $api_missings_hdr = <<'_EOT_'; +|The following functions have been flagged as part of the public +|API, but are currently undocumented. Use them at your own risk, +|as the interfaces are subject to change. Functions that are not +|listed in this document are not intended for public use, and +|should NOT be used under any circumstances. +| +|If you feel you need to use one of these functions, first send +|email to L. +|It may be that there is a good reason for the function not being +|documented, and it should be removed from this list; or it may +|just be that no one has gotten around to documenting it. In the +|latter case, you will be asked to submit a patch to document the +|function. Once your patch is accepted, it will indicate that the +|interface is stable (unless it is explicitly marked otherwise) and +|usable by you. +_EOT_ + +my $api_experimental_hdr = <<"_EOT_"; +| +|Next are the API-flagged elements that are considered experimental. Using one +|of these is even more risky than plain undocumented ones. They are listed +|here because they should be listed somewhere (so their existence doesn't get +|lost) and this is the best place for them. +_EOT_ + +my $api_deprecated_hdr = <<"_EOT_"; +| +|Finally are deprecated undocumented API elements. +|Do not use any for new code; remove all occurrences of all of these from +|existing code. +_EOT_ + +output('perlapi', $api_hdr, $docs{api}, $api_footer, + $api_missings_hdr, \@missing_api, + $api_experimental_hdr, \@undocumented_experimental_api, + $api_deprecated_hdr, \@undocumented_deprecated_api); -output('perlintern', <<'_EOB_', $docs{guts}, \@missing_guts, <<"_EOE_"); +my $intern_hdr = <<"_EOB_"; |=head1 NAME | |perlintern - autogenerated documentation of purely B @@ -1910,6 +2026,8 @@ output('perlintern', <<'_EOB_', $docs{guts}, \@missing_guts, <<"_EOE_"); |It has the same sections as L, though some may be empty. | _EOB_ + +my $intern_footer = <<"_EOE_"; | |=head1 AUTHORS | @@ -1921,3 +2039,33 @@ _EOB_ | |F, $places_other_than_intern _EOE_ + +my $intern_missings_hdr = <<"_EOT_"; +| +|This section lists the elements that are otherwise undocumented. If you use +|any of them, please consider creating and submitting documentation for it. +| +|Experimental and deprecated undocumented elements are listed separately at the +|end. +| +_EOT_ + +my $intern_experimental_hdr = <<"_EOT_"; +| +|Next are the experimental undocumented elements +| +_EOT_ + +my $intern_deprecated_hdr = <<"_EOT_"; +| +|Finally are the deprecated undocumented elements. +|Do not use any for new code; remove all occurrences of all of these from +|existing code. +| +_EOT_ + +output('perlintern', $intern_hdr, $docs{intern}, $intern_footer, + $intern_missings_hdr, \@missing_intern, + $intern_experimental_hdr, \@undocumented_experimental_intern, + $intern_deprecated_hdr, \@undocumented_deprecated_intern + ); diff --git a/gnu/usr.bin/perl/av.c b/gnu/usr.bin/perl/av.c index c5713458842..d9868f44078 100644 --- a/gnu/usr.bin/perl/av.c +++ b/gnu/usr.bin/perl/av.c @@ -103,19 +103,12 @@ Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, "panic: av_extend_guts() negative count (%" IVdf ")", (IV)key); if (key > *maxp) { - SSize_t ary_offset = *maxp + 1; /* Start NULL initialization - * from this element */ - SSize_t to_null = 0; /* How many elements to Zero */ + SSize_t ary_offset = *maxp + 1; + SSize_t to_null = 0; SSize_t newmax = 0; if (av && *allocp != *arrayp) { /* a shifted SV* array exists */ - - /* to_null will contain the number of elements currently - * shifted and about to be unshifted. If the array has not - * been shifted to the maximum possible extent, this will be - * a smaller number than (*maxp - AvFILLp(av)). */ to_null = *arrayp - *allocp; - *maxp += to_null; ary_offset = AvFILLp(av) + 1; @@ -123,13 +116,6 @@ Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, if (key > *maxp - 10) { newmax = key + *maxp; - - /* Zero everything above AvFILLp(av), which could be more - * elements than have actually been shifted. If we don't - * do this, trailing elements at the end of the resized - * array may not be correctly initialized. */ - to_null = *maxp - AvFILLp(av); - goto resize; } } else if (*allocp) { /* a full SV* array exists */ @@ -181,9 +167,7 @@ Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, #ifdef Perl_safesysmalloc_size resized: #endif - to_null += newmax - *maxp; /* Initialize all new elements - * (newmax - *maxp) in addition to - * any previously specified */ + to_null += newmax - *maxp; *maxp = newmax; /* See GH#18014 for discussion of when this might be needed: */ @@ -193,7 +177,8 @@ Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, PL_stack_max = PL_stack_base + newmax; } } else { /* there is no SV* array yet */ - *maxp = key < 3 ? 3 : key; + *maxp = key < PERL_ARRAY_NEW_MIN_KEY ? + PERL_ARRAY_NEW_MIN_KEY : key; { /* see comment above about newmax+1*/ MEM_WRAP_CHECK_s(*maxp, SV*, @@ -209,7 +194,7 @@ Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, * don't get any special treatment here. * See https://github.com/Perl/perl5/pull/18690 for more detail */ ary_offset = 0; - to_null = *maxp+1; /* Initialize all new array elements */ + to_null = *maxp+1; goto zero; } @@ -302,11 +287,11 @@ Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval) if ((Size_t)key >= (Size_t)size) { if (UNLIKELY(neg)) return NULL; - goto emptyness; + goto emptiness; } if (!AvARRAY(av)[key]) { - emptyness: + emptiness: return lval ? av_store(av,key,newSV_type(SVt_NULL)) : NULL; } @@ -388,10 +373,47 @@ Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val) } else if (AvREAL(av)) SvREFCNT_dec(ary[key]); + + /* store the val into the AV before we call magic so that the magic can + * "see" the new value. Especially set magic on the AV itself. */ ary[key] = val; + if (SvSMAGICAL(av)) { const MAGIC *mg = SvMAGIC(av); bool set = TRUE; + /* We have to increment the refcount on val before we call any magic, + * as it is now stored in the AV (just before this block), we will + * then call the magic handlers which might die/Perl_croak, and + * longjmp up the stack to the most recent exception trap. Which means + * the caller code that would be expected to handle the refcount + * increment likely would never be executed, leading to a double free. + * This can happen in a case like + * + * @ary = (1); + * + * or this: + * + * if (av_store(av,n,sv)) SvREFCNT_inc(sv); + * + * where @ary/av has set magic applied to it which can die. In the + * first case the sv representing 1 would be mortalized, so when the + * set magic threw an exception it would be freed as part of the + * normal stack unwind. However this leaves the av structure still + * holding a valid visible pointer to the now freed value. In practice + * the next SV created will reuse the same reference, but without the + * refcount to account for the previous ownership and we end up with + * warnings about a totally different variable being double freed in + * the form of "attempt to free unreferenced variable" + * warnings/errors. + * + * https://github.com/Perl/perl5/issues/20675 + * + * Arguably the API for av_store is broken in the face of magic. Instead + * av_store should be responsible for the refcount increment, and only + * not do it when specifically told to do so (eg, when storing an + * otherwise unreferenced scalar into an AV). + */ + SvREFCNT_inc(val); /* see comment above */ for (; mg; mg = mg->mg_moremagic) { if (!isUPPER(mg->mg_type)) continue; if (val) { @@ -404,52 +426,14 @@ Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val) } if (set) mg_set(MUTABLE_SV(av)); + /* And now we are done the magic, we have to decrement it back as the av_store() api + * says the caller is responsible for the refcount increment, assuming + * av_store returns true. */ + SvREFCNT_dec(val); } return &ary[key]; } -/* -=for apidoc av_new_alloc - -This implements L> -and L>, which are the public API for this -functionality. - -Creates a new AV and allocates its SV* array. - -This is similar to, but more efficient than doing: - - AV *av = newAV(); - av_extend(av, key); - -The size parameter is used to pre-allocate a SV* array large enough to -hold at least elements C<0..(size-1)>. C must be at least 1. - -The C parameter controls whether or not the array is NULL -initialized. - -=cut -*/ - -AV * -Perl_av_new_alloc(pTHX_ SSize_t size, bool zeroflag) -{ - AV * const av = newAV(); - SV** ary; - PERL_ARGS_ASSERT_AV_NEW_ALLOC; - assert(size > 0); - - Newx(ary, size, SV*); /* Newx performs the memwrap check */ - AvALLOC(av) = ary; - AvARRAY(av) = ary; - AvMAX(av) = size - 1; - - if (zeroflag) - Zero(ary, size, SV*); - - return av; -} - /* =for apidoc av_make @@ -507,6 +491,113 @@ Perl_av_make(pTHX_ SSize_t size, SV **strp) return av; } +/* +=for apidoc newAVav + +Creates a new AV and populates it with values copied from an existing AV. The +new AV will have a reference count of 1, and will contain newly created SVs +copied from the original SV. The original source will remain unchanged. + +Perl equivalent: C + +=cut +*/ + +AV * +Perl_newAVav(pTHX_ AV *oav) +{ + PERL_ARGS_ASSERT_NEWAVAV; + + Size_t count = av_count(oav); + + if(UNLIKELY(!oav) || count == 0) + return newAV(); + + AV *ret = newAV_alloc_x(count); + + /* avoid ret being leaked if croak when calling magic below */ + EXTEND_MORTAL(1); + PL_tmps_stack[++PL_tmps_ix] = (SV *)ret; + SSize_t ret_at_tmps_ix = PL_tmps_ix; + + Size_t i; + if(LIKELY(!SvRMAGICAL(oav) && AvREAL(oav) && (SvTYPE(oav) == SVt_PVAV))) { + for(i = 0; i < count; i++) { + SV **svp = av_fetch_simple(oav, i, 0); + av_push_simple(ret, svp ? newSVsv(*svp) : &PL_sv_undef); + } + } else { + for(i = 0; i < count; i++) { + SV **svp = av_fetch(oav, i, 0); + av_push_simple(ret, svp ? newSVsv(*svp) : &PL_sv_undef); + } + } + + /* disarm leak guard */ + if(LIKELY(PL_tmps_ix == ret_at_tmps_ix)) + PL_tmps_ix--; + else + PL_tmps_stack[ret_at_tmps_ix] = &PL_sv_undef; + + return ret; +} + +/* +=for apidoc newAVhv + +Creates a new AV and populates it with keys and values copied from an existing +HV. The new AV will have a reference count of 1, and will contain newly +created SVs copied from the original HV. The original source will remain +unchanged. + +Perl equivalent: C + +=cut +*/ + +AV * +Perl_newAVhv(pTHX_ HV *ohv) +{ + PERL_ARGS_ASSERT_NEWAVHV; + + if(UNLIKELY(!ohv)) + return newAV(); + + bool tied = SvRMAGICAL(ohv) && mg_find(MUTABLE_SV(ohv), PERL_MAGIC_tied); + + Size_t nkeys = hv_iterinit(ohv); + /* This number isn't perfect but it doesn't matter; it only has to be + * close to make the initial allocation about the right size + */ + AV *ret = newAV_alloc_xz(nkeys ? nkeys * 2 : 2); + + /* avoid ret being leaked if croak when calling magic below */ + EXTEND_MORTAL(1); + PL_tmps_stack[++PL_tmps_ix] = (SV *)ret; + SSize_t ret_at_tmps_ix = PL_tmps_ix; + + + HE *he; + while((he = hv_iternext(ohv))) { + if(tied) { + av_push_simple(ret, newSVsv(hv_iterkeysv(he))); + av_push_simple(ret, newSVsv(hv_iterval(ohv, he))); + } + else { + av_push_simple(ret, newSVhek(HeKEY_hek(he))); + av_push_simple(ret, HeVAL(he) ? newSVsv(HeVAL(he)) : &PL_sv_undef); + } + } + + /* disarm leak guard */ + if(LIKELY(PL_tmps_ix == ret_at_tmps_ix)) + PL_tmps_ix--; + else + PL_tmps_stack[ret_at_tmps_ix] = &PL_sv_undef; + + return ret; +} + /* =for apidoc av_clear @@ -605,7 +696,7 @@ void Perl_av_undef(pTHX_ AV *av) { bool real; - SSize_t orig_ix = PL_tmps_ix; /* silence bogus warning about possible unitialized use */ + SSize_t orig_ix = PL_tmps_ix; /* silence bogus warning about possible uninitialized use */ PERL_ARGS_ASSERT_AV_UNDEF; assert(SvTYPE(av) == SVt_PVAV); diff --git a/gnu/usr.bin/perl/caretx.c b/gnu/usr.bin/perl/caretx.c index 3d118770376..6dc7d9c144c 100644 --- a/gnu/usr.bin/perl/caretx.c +++ b/gnu/usr.bin/perl/caretx.c @@ -121,7 +121,7 @@ Perl_set_caret_X(pTHX) { returning the text "unknown" from the readlink rather than the path to the executable (or returning an error from the readlink). Any valid path has a '/' in it somewhere, so use that to validate the - result. See http://www.freebsd.org/cgi/query-pr.cgi?pr=35703 + result. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=35703 */ if (len > 0 && memchr(buf, '/', len)) { sv_setpvn(caret_x, buf, len); diff --git a/gnu/usr.bin/perl/cflags.SH b/gnu/usr.bin/perl/cflags.SH index 443f5fcc969..d38e0a009b3 100644 --- a/gnu/usr.bin/perl/cflags.SH +++ b/gnu/usr.bin/perl/cflags.SH @@ -379,6 +379,19 @@ esac ;; esac +# gcc version 12 and 13 are overly aggressive with use-after-free warnings +# and have false positives on code that shouldn't warn, and they haven't +# sorted it out yet. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108115 +case "$gccversion" in +"1"[23]*) + for f in -Wno-use-after-free + do + echo "cflags.SH: Adding $f because of false positives in gccversion '$gccversion'" + warn="$warn $f" + done +;; +esac + echo "cflags.SH: cc = $cc" echo "cflags.SH: ccflags = $ccflags" echo "cflags.SH: stdflags = $stdflags" diff --git a/gnu/usr.bin/perl/charclass_invlists.h b/gnu/usr.bin/perl/charclass_invlists.h index 2aa27f3b79f..209681ac1aa 100644 --- a/gnu/usr.bin/perl/charclass_invlists.h +++ b/gnu/usr.bin/perl/charclass_invlists.h @@ -1,4 +1,4 @@ -/* -*- buffer-read-only: t -*- +/* -*- mode: C; buffer-read-only: t -*- * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by regen/mk_invlists.pl from Unicode::UCD. * Any changes made here will be lost! @@ -15,10 +15,10 @@ * encompassing all of the Unicode BMP, and thus including all the economically * important world scripts. At 12 most of them are: including Arabic, * Cyrillic, Greek, Hebrew, Indian subcontinent, Latin, and Thai; but not Han, - * Japanese, nor Korean. (The regarglen structure in regnodes.h is a U8, and - * the trie types TRIEC and AHOCORASICKC are larger than U8 for shift values - * above 12.) Be sure to benchmark before changing, as larger sizes do - * significantly slow down the test suite */ + * Japanese, nor Korean. The regnode sizing data structure in regnodes.h currently + * uses a U8, and the trie types TRIEC and AHOCORASICKC are larger than U8 for + * shift values above 12.) Be sure to benchmark before changing, as larger sizes + * do significantly slow down the test suite. */ #define NUM_ANYOF_CODE_POINTS (1 << 8) @@ -18460,7 +18460,7 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 037 */ #if (defined(PERL_IN_REGCOMP_C) && ! defined(PERL_IN_XSUB_RE)) static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */ - 373, /* Number of elements */ + 379, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -18749,6 +18749,8 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */ 0x10A40, 0x10AE6, 0x10AE7, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F48, 0x10F4B, @@ -18819,6 +18821,8 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */ 0x11D46, 0x11D97, 0x11D98, + 0x11F41, + 0x11F43, 0x16AF0, 0x16AF5, 0x16FF0, @@ -18833,6 +18837,8 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */ 0x1D183, 0x1D18A, 0x1D18C, + 0x1E4EC, + 0x1E4EF, 0x1E8D0, 0x1E8D7, 0x1E94A, @@ -18842,7 +18848,7 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ - 1826, /* Number of elements */ + 1851, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -19063,6 +19069,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD02, 0xD04, @@ -19111,7 +19119,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -20314,6 +20322,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -20375,6 +20385,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -20538,8 +20550,23 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x11EF3, 0x11EF5, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F36, + 0x11F3B, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -20599,12 +20626,16 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -20923,6 +20954,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Other, GCB_Extend, GCB_SpacingMark, GCB_Other, @@ -22178,6 +22211,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, GCB_SpacingMark, GCB_Extend, GCB_SpacingMark, @@ -22236,6 +22271,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_Other, @@ -22398,7 +22435,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Extend, GCB_SpacingMark, GCB_Other, + GCB_Extend, + GCB_Prepend, + GCB_SpacingMark, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Control, + GCB_Extend, + GCB_Other, + GCB_Extend, GCB_Other, GCB_Extend, GCB_Other, @@ -22469,6 +22521,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, GCB_ExtPict_XX, GCB_Other, GCB_ExtPict_XX, @@ -22546,7 +22602,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ - 1827, /* Number of elements */ + 1852, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -22768,6 +22824,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD02, 0xD04, @@ -22816,7 +22874,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -24019,6 +24077,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -24080,6 +24140,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -24243,8 +24305,23 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x11EF3, 0x11EF5, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F36, + 0x11F3B, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -24304,12 +24381,16 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -24632,6 +24713,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Other, GCB_Extend, GCB_SpacingMark, GCB_Other, @@ -25887,6 +25970,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, GCB_SpacingMark, GCB_Extend, GCB_SpacingMark, @@ -25945,6 +26030,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_Other, @@ -26107,7 +26194,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Extend, GCB_SpacingMark, GCB_Other, + GCB_Extend, + GCB_Prepend, + GCB_SpacingMark, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Control, + GCB_Extend, + GCB_Other, + GCB_Extend, GCB_Other, GCB_Extend, GCB_Other, @@ -26178,6 +26280,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, GCB_ExtPict_XX, GCB_Other, GCB_ExtPict_XX, @@ -26255,7 +26361,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ - 1827, /* Number of elements */ + 1852, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -26477,6 +26583,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD02, 0xD04, @@ -26525,7 +26633,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -27728,6 +27836,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -27789,6 +27899,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -27952,8 +28064,23 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x11EF3, 0x11EF5, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F36, + 0x11F3B, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -28013,12 +28140,16 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -28341,6 +28472,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Other, GCB_Extend, GCB_SpacingMark, GCB_Other, @@ -29596,6 +29729,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, GCB_SpacingMark, GCB_Extend, GCB_SpacingMark, @@ -29654,6 +29789,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_Other, @@ -29816,7 +29953,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Extend, GCB_SpacingMark, GCB_Other, + GCB_Extend, + GCB_Prepend, + GCB_SpacingMark, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Control, + GCB_Extend, + GCB_Other, + GCB_Extend, GCB_Other, GCB_Extend, GCB_Other, @@ -29887,6 +30039,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, GCB_ExtPict_XX, GCB_Other, GCB_ExtPict_XX, @@ -38855,7 +39011,7 @@ static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ - 2501, /* Number of elements */ + 2539, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -39143,6 +39299,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0xCE4, 0xCE6, 0xCF0, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -39191,7 +39349,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF01, @@ -39380,6 +39538,10 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1CF7, 0x1CFA, 0x1DC0, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x1E00, 0x1FFD, 0x1FFE, @@ -40820,6 +40982,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x10EAB, 0x10EAD, 0x10EAE, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -40879,6 +41043,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1123D, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112A9, 0x112AA, 0x112DF, @@ -40989,6 +41155,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x11A9E, 0x11AA1, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C2F, 0x11C37, 0x11C38, @@ -41026,6 +41194,17 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FDD, 0x11FE1, 0x11FFF, @@ -41049,6 +41228,14 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x13437, 0x13438, 0x13439, + 0x1343C, + 0x1343D, + 0x1343E, + 0x1343F, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x145CE, 0x145CF, 0x145D0, @@ -41089,8 +41276,12 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x18D09, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -41139,6 +41330,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E140, @@ -41150,6 +41343,9 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -41272,15 +41468,17 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1F6CC, 0x1F6CD, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, 0x1F774, + 0x1F777, + 0x1F77B, 0x1F780, 0x1F7D5, - 0x1F7D9, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -41327,24 +41525,20 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC3, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FBF0, 0x1FBFA, @@ -41714,6 +41908,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Postfix_Numeric, @@ -41937,6 +42133,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Glue, + LB_Combining_Mark, + LB_Glue, + LB_Combining_Mark, LB_Alphabetic, LB_Break_Before, LB_Alphabetic, @@ -41975,7 +42175,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Nonstarter, LB_Alphabetic, LB_Break_After, - LB_Alphabetic, + LB_Postfix_Numeric, LB_Break_After, LB_Alphabetic, LB_Break_After, @@ -43384,6 +43584,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Break_After, LB_Alphabetic, LB_Numeric, @@ -43436,6 +43638,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Combining_Mark, @@ -43546,6 +43750,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Break_Before, LB_Break_After, LB_Alphabetic, + LB_Break_Before, + LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, @@ -43583,6 +43789,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Break_After, + LB_Ideographic, + LB_Numeric, + LB_Alphabetic, LB_Postfix_Numeric, LB_Alphabetic, LB_Break_After, @@ -43605,6 +43822,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Glue, LB_Open_Punctuation, LB_Close_Punctuation, + LB_Glue, + LB_Open_Punctuation, + LB_Close_Punctuation, + LB_Open_Punctuation, + LB_Close_Punctuation, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Alphabetic, LB_Open_Punctuation, LB_Close_Punctuation, @@ -43650,6 +43875,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Nonstarter, LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Combining_Mark, @@ -43698,6 +43927,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Combining_Mark, @@ -43708,6 +43939,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Prefix_Numeric, LB_Alphabetic, LB_Combining_Mark, + LB_Numeric, + LB_Alphabetic, + LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, @@ -43834,7 +44068,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Alphabetic, + LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, @@ -43890,10 +44126,6 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Ideographic, - LB_Unassigned_Extended_Pictographic_Ideographic, - LB_Ideographic, - LB_Unassigned_Extended_Pictographic_Ideographic, - LB_Ideographic, LB_E_Base, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Ideographic, @@ -43931,7 +44163,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ - 2513, /* Number of elements */ + 2551, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -44231,6 +44463,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0xCE4, 0xCE6, 0xCF0, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -44279,7 +44513,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF01, @@ -44468,6 +44702,10 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1CF7, 0x1CFA, 0x1DC0, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x1E00, 0x1FFD, 0x1FFE, @@ -45908,6 +46146,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x10EAB, 0x10EAD, 0x10EAE, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -45967,6 +46207,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1123D, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112A9, 0x112AA, 0x112DF, @@ -46077,6 +46319,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x11A9E, 0x11AA1, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C2F, 0x11C37, 0x11C38, @@ -46114,6 +46358,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FDD, 0x11FE1, 0x11FFF, @@ -46137,6 +46392,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x13437, 0x13438, 0x13439, + 0x1343C, + 0x1343D, + 0x1343E, + 0x1343F, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x145CE, 0x145CF, 0x145D0, @@ -46177,8 +46440,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x18D09, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -46227,6 +46494,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E140, @@ -46238,6 +46507,9 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -46360,15 +46632,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1F6CC, 0x1F6CD, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, 0x1F774, + 0x1F777, + 0x1F77B, 0x1F780, 0x1F7D5, - 0x1F7D9, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -46415,24 +46689,20 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC3, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FBF0, 0x1FBFA, @@ -46817,6 +47087,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Postfix_Numeric, @@ -47040,6 +47312,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Glue, + LB_Combining_Mark, + LB_Glue, + LB_Combining_Mark, LB_Alphabetic, LB_Break_Before, LB_Alphabetic, @@ -47078,7 +47354,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Nonstarter, LB_Alphabetic, LB_Break_After, - LB_Alphabetic, + LB_Postfix_Numeric, LB_Break_After, LB_Alphabetic, LB_Break_After, @@ -48487,6 +48763,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Break_After, LB_Alphabetic, LB_Numeric, @@ -48539,6 +48817,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Combining_Mark, @@ -48649,6 +48929,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Break_Before, LB_Break_After, LB_Alphabetic, + LB_Break_Before, + LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, @@ -48686,6 +48968,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Break_After, + LB_Ideographic, + LB_Numeric, + LB_Alphabetic, LB_Postfix_Numeric, LB_Alphabetic, LB_Break_After, @@ -48708,6 +49001,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Glue, LB_Open_Punctuation, LB_Close_Punctuation, + LB_Glue, + LB_Open_Punctuation, + LB_Close_Punctuation, + LB_Open_Punctuation, + LB_Close_Punctuation, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Alphabetic, LB_Open_Punctuation, LB_Close_Punctuation, @@ -48753,6 +49054,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Nonstarter, LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Combining_Mark, @@ -48801,6 +49106,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Combining_Mark, @@ -48811,6 +49118,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Prefix_Numeric, LB_Alphabetic, LB_Combining_Mark, + LB_Numeric, + LB_Alphabetic, + LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, @@ -48937,7 +49247,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Alphabetic, + LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, @@ -48993,10 +49305,6 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Ideographic, - LB_Unassigned_Extended_Pictographic_Ideographic, - LB_Ideographic, - LB_Unassigned_Extended_Pictographic_Ideographic, - LB_Ideographic, LB_E_Base, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Ideographic, @@ -49034,7 +49342,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ - 2513, /* Number of elements */ + 2551, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -49334,6 +49642,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0xCE4, 0xCE6, 0xCF0, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -49382,7 +49692,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF01, @@ -49571,6 +49881,10 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1CF7, 0x1CFA, 0x1DC0, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x1E00, 0x1FFD, 0x1FFE, @@ -51011,6 +51325,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x10EAB, 0x10EAD, 0x10EAE, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -51070,6 +51386,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1123D, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112A9, 0x112AA, 0x112DF, @@ -51180,6 +51498,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x11A9E, 0x11AA1, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C2F, 0x11C37, 0x11C38, @@ -51217,6 +51537,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FDD, 0x11FE1, 0x11FFF, @@ -51240,6 +51571,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x13437, 0x13438, 0x13439, + 0x1343C, + 0x1343D, + 0x1343E, + 0x1343F, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x145CE, 0x145CF, 0x145D0, @@ -51280,8 +51619,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x18D09, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -51330,6 +51673,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E140, @@ -51341,6 +51686,9 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -51463,15 +51811,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1F6CC, 0x1F6CD, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, 0x1F774, + 0x1F777, + 0x1F77B, 0x1F780, 0x1F7D5, - 0x1F7D9, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -51518,24 +51868,20 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC3, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FBF0, 0x1FBFA, @@ -51920,6 +52266,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Postfix_Numeric, @@ -52143,6 +52491,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Glue, + LB_Combining_Mark, + LB_Glue, + LB_Combining_Mark, LB_Alphabetic, LB_Break_Before, LB_Alphabetic, @@ -52181,7 +52533,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Nonstarter, LB_Alphabetic, LB_Break_After, - LB_Alphabetic, + LB_Postfix_Numeric, LB_Break_After, LB_Alphabetic, LB_Break_After, @@ -53590,6 +53942,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Break_After, LB_Alphabetic, LB_Numeric, @@ -53642,6 +53996,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Combining_Mark, @@ -53752,6 +54108,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Break_Before, LB_Break_After, LB_Alphabetic, + LB_Break_Before, + LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, @@ -53789,6 +54147,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Break_After, + LB_Ideographic, + LB_Numeric, + LB_Alphabetic, LB_Postfix_Numeric, LB_Alphabetic, LB_Break_After, @@ -53811,6 +54180,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Glue, LB_Open_Punctuation, LB_Close_Punctuation, + LB_Glue, + LB_Open_Punctuation, + LB_Close_Punctuation, + LB_Open_Punctuation, + LB_Close_Punctuation, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Alphabetic, LB_Open_Punctuation, LB_Close_Punctuation, @@ -53856,6 +54233,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Nonstarter, LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Combining_Mark, @@ -53904,6 +54285,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Combining_Mark, @@ -53914,6 +54297,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Prefix_Numeric, LB_Alphabetic, LB_Combining_Mark, + LB_Numeric, + LB_Alphabetic, + LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, @@ -54040,7 +54426,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Alphabetic, + LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, @@ -54096,10 +54484,6 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Ideographic, - LB_Unassigned_Extended_Pictographic_Ideographic, - LB_Ideographic, - LB_Unassigned_Extended_Pictographic_Ideographic, - LB_Ideographic, LB_E_Base, LB_Unassigned_Extended_Pictographic_Ideographic, LB_Ideographic, @@ -54134,7 +54518,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ - 3227, /* Number of elements */ + 3262, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -55100,6 +55484,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0xCF0, 0xCF1, 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD0D, @@ -55180,7 +55565,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -55244,6 +55629,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x10D0, 0x10FB, 0x10FC, + 0x10FD, 0x1249, 0x124A, 0x124E, @@ -56416,7 +56802,6 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, 0xAB6A, 0xAB70, 0xABC0, @@ -56700,6 +57085,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F1D, 0x10F27, @@ -56784,6 +57170,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1123D, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -57001,6 +57389,19 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x11EF3, 0x11EF7, 0x11EF9, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -57012,9 +57413,11 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -57081,8 +57484,12 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -57224,6 +57631,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -57234,6 +57643,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -57250,6 +57663,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -57348,7 +57765,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -57359,6 +57776,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -58356,6 +58775,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Numeric, SB_Other, SB_OLetter, + SB_Extend, SB_Other, SB_Extend, SB_OLetter, @@ -58500,6 +58920,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_OLetter, SB_Other, + SB_Lower, SB_OLetter, SB_Other, SB_OLetter, @@ -59566,7 +59987,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Upper, SB_Lower, SB_Other, - SB_OLetter, + SB_Lower, SB_Upper, SB_Lower, SB_OLetter, @@ -59673,7 +60094,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Lower, SB_Other, SB_Lower, - SB_OLetter, SB_Other, SB_Lower, SB_OLetter, @@ -59957,6 +60377,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_OLetter, SB_Other, + SB_Extend, SB_OLetter, SB_Other, SB_OLetter, @@ -60040,6 +60461,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_STerm, SB_Other, SB_Extend, + SB_OLetter, + SB_Extend, SB_Other, SB_OLetter, SB_Other, @@ -60258,9 +60681,20 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Extend, SB_STerm, SB_Other, + SB_Extend, + SB_OLetter, + SB_Extend, SB_OLetter, SB_Other, SB_OLetter, + SB_Extend, + SB_Other, + SB_Extend, + SB_STerm, + SB_Other, + SB_Numeric, + SB_Other, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -60270,7 +60704,11 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, SB_Format, + SB_Extend, + SB_OLetter, + SB_Extend, SB_Other, SB_OLetter, SB_Other, @@ -60352,6 +60790,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, SB_Extend, SB_STerm, SB_Format, @@ -60481,6 +60923,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_OLetter, SB_Lower, SB_Other, + SB_Lower, + SB_Other, + SB_Extend, + SB_Other, SB_Extend, SB_Other, SB_Extend, @@ -60489,6 +60935,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_Extend, SB_Other, + SB_Lower, + SB_Other, SB_Extend, SB_Other, SB_OLetter, @@ -60508,6 +60956,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Numeric, SB_Other, SB_OLetter, + SB_Extend, + SB_Numeric, + SB_Other, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -60616,6 +61068,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, SB_Format, SB_Other, SB_Extend, @@ -60636,7 +61090,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ - 3251, /* Number of elements */ + 3286, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -61626,6 +62080,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0xCF0, 0xCF1, 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD0D, @@ -61706,7 +62161,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -61770,6 +62225,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x10D0, 0x10FB, 0x10FC, + 0x10FD, 0x1249, 0x124A, 0x124E, @@ -62942,7 +63398,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, 0xAB6A, 0xAB70, 0xABC0, @@ -63226,6 +63681,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F1D, 0x10F27, @@ -63310,6 +63766,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1123D, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -63527,6 +63985,19 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x11EF3, 0x11EF7, 0x11EF9, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -63538,9 +64009,11 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -63607,8 +64080,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -63750,6 +64227,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -63760,6 +64239,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -63776,6 +64259,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -63874,7 +64361,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -63885,6 +64372,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -64909,6 +65398,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Numeric, SB_Other, SB_OLetter, + SB_Extend, SB_Other, SB_Extend, SB_OLetter, @@ -65053,6 +65543,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_OLetter, SB_Other, + SB_Lower, SB_OLetter, SB_Other, SB_OLetter, @@ -66119,7 +66610,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Upper, SB_Lower, SB_Other, - SB_OLetter, + SB_Lower, SB_Upper, SB_Lower, SB_OLetter, @@ -66226,7 +66717,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Lower, SB_Other, SB_Lower, - SB_OLetter, SB_Other, SB_Lower, SB_OLetter, @@ -66510,6 +67000,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_OLetter, SB_Other, + SB_Extend, SB_OLetter, SB_Other, SB_OLetter, @@ -66593,6 +67084,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_STerm, SB_Other, SB_Extend, + SB_OLetter, + SB_Extend, SB_Other, SB_OLetter, SB_Other, @@ -66811,7 +67304,18 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Extend, SB_STerm, SB_Other, + SB_Extend, + SB_OLetter, + SB_Extend, + SB_OLetter, + SB_Other, SB_OLetter, + SB_Extend, + SB_Other, + SB_Extend, + SB_STerm, + SB_Other, + SB_Numeric, SB_Other, SB_OLetter, SB_Other, @@ -66823,7 +67327,11 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, SB_Format, + SB_Extend, + SB_OLetter, + SB_Extend, SB_Other, SB_OLetter, SB_Other, @@ -66905,6 +67413,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, SB_Extend, SB_STerm, SB_Format, @@ -67034,6 +67546,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_OLetter, SB_Lower, SB_Other, + SB_Lower, + SB_Other, SB_Extend, SB_Other, SB_Extend, @@ -67044,6 +67558,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_Extend, SB_Other, + SB_Lower, + SB_Other, + SB_Extend, + SB_Other, SB_OLetter, SB_Other, SB_Extend, @@ -67061,6 +67579,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Numeric, SB_Other, SB_OLetter, + SB_Extend, + SB_Numeric, + SB_Other, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -67169,6 +67691,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, SB_Format, SB_Other, SB_Extend, @@ -67189,7 +67713,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ - 3247, /* Number of elements */ + 3282, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -68175,6 +68699,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0xCF0, 0xCF1, 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD0D, @@ -68255,7 +68780,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -68319,6 +68844,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x10D0, 0x10FB, 0x10FC, + 0x10FD, 0x1249, 0x124A, 0x124E, @@ -69491,7 +70017,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, 0xAB6A, 0xAB70, 0xABC0, @@ -69775,6 +70300,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F1D, 0x10F27, @@ -69859,6 +70385,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1123D, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -70076,6 +70604,19 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x11EF3, 0x11EF7, 0x11EF9, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -70087,9 +70628,11 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -70156,8 +70699,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -70299,6 +70846,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -70309,6 +70858,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -70325,6 +70878,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -70423,7 +70980,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -70434,6 +70991,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -71454,6 +72013,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Numeric, SB_Other, SB_OLetter, + SB_Extend, SB_Other, SB_Extend, SB_OLetter, @@ -71598,6 +72158,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_OLetter, SB_Other, + SB_Lower, SB_OLetter, SB_Other, SB_OLetter, @@ -72664,7 +73225,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Upper, SB_Lower, SB_Other, - SB_OLetter, + SB_Lower, SB_Upper, SB_Lower, SB_OLetter, @@ -72771,7 +73332,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Lower, SB_Other, SB_Lower, - SB_OLetter, SB_Other, SB_Lower, SB_OLetter, @@ -73055,6 +73615,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_OLetter, SB_Other, + SB_Extend, SB_OLetter, SB_Other, SB_OLetter, @@ -73138,6 +73699,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_STerm, SB_Other, SB_Extend, + SB_OLetter, + SB_Extend, SB_Other, SB_OLetter, SB_Other, @@ -73356,7 +73919,18 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Extend, SB_STerm, SB_Other, + SB_Extend, + SB_OLetter, + SB_Extend, + SB_OLetter, + SB_Other, SB_OLetter, + SB_Extend, + SB_Other, + SB_Extend, + SB_STerm, + SB_Other, + SB_Numeric, SB_Other, SB_OLetter, SB_Other, @@ -73368,7 +73942,11 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, SB_Format, + SB_Extend, + SB_OLetter, + SB_Extend, SB_Other, SB_OLetter, SB_Other, @@ -73450,6 +74028,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, SB_Extend, SB_STerm, SB_Format, @@ -73579,6 +74161,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_OLetter, SB_Lower, SB_Other, + SB_Lower, + SB_Other, + SB_Extend, + SB_Other, SB_Extend, SB_Other, SB_Extend, @@ -73587,6 +74173,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_Extend, SB_Other, + SB_Lower, + SB_Other, SB_Extend, SB_Other, SB_OLetter, @@ -73606,6 +74194,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Numeric, SB_Other, SB_OLetter, + SB_Extend, + SB_Numeric, + SB_Other, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -73714,6 +74306,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, SB_Format, SB_Other, SB_Extend, @@ -73731,7 +74325,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ - 1731, /* Number of elements */ + 1750, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -74061,7 +74655,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -74122,7 +74716,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -74887,6 +75481,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x10EAE, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F28, 0x10F30, @@ -74923,7 +75518,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -75034,6 +75629,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x11AB0, 0x11AC0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -75076,6 +75673,12 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -75096,9 +75699,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -75158,8 +75759,12 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -75196,6 +75801,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -75252,6 +75859,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -75262,6 +75871,10 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -75276,6 +75889,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -75394,14 +76009,14 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -75423,23 +76038,19 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -75449,7 +76060,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -75460,6 +76071,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -75545,106 +76158,108 @@ typedef enum { SCX_Kaithi = 63, SCX_Kannada = 64, SCX_Katakana = 65, - SCX_Kayah_Li = 66, - SCX_Kharoshthi = 67, - SCX_Khitan_Small_Script = 68, - SCX_Khmer = 69, - SCX_Khojki = 70, - SCX_Khudawadi = 71, - SCX_Kore = 72, - SCX_Lao = 73, - SCX_Latin = 74, - SCX_Lepcha = 75, - SCX_Limbu = 76, - SCX_Linear_A = 77, - SCX_Linear_B = 78, - SCX_Lisu = 79, - SCX_Lycian = 80, - SCX_Lydian = 81, - SCX_Mahajani = 82, - SCX_Makasar = 83, - SCX_Malayalam = 84, - SCX_Mandaic = 85, - SCX_Manichaean = 86, - SCX_Marchen = 87, - SCX_Masaram_Gondi = 88, - SCX_Medefaidrin = 89, - SCX_Meetei_Mayek = 90, - SCX_Mende_Kikakui = 91, - SCX_Meroitic_Cursive = 92, - SCX_Meroitic_Hieroglyphs = 93, - SCX_Miao = 94, - SCX_Modi = 95, - SCX_Mongolian = 96, - SCX_Mro = 97, - SCX_Multani = 98, - SCX_Myanmar = 99, - SCX_Nabataean = 100, - SCX_Nandinagari = 101, - SCX_New_Tai_Lue = 102, - SCX_Newa = 103, - SCX_Nko = 104, - SCX_Nushu = 105, - SCX_Nyiakeng_Puachue_Hmong = 106, - SCX_Ogham = 107, - SCX_Ol_Chiki = 108, - SCX_Old_Hungarian = 109, - SCX_Old_Italic = 110, - SCX_Old_North_Arabian = 111, - SCX_Old_Permic = 112, - SCX_Old_Persian = 113, - SCX_Old_Sogdian = 114, - SCX_Old_South_Arabian = 115, - SCX_Old_Turkic = 116, - SCX_Old_Uyghur = 117, - SCX_Oriya = 118, - SCX_Osage = 119, - SCX_Osmanya = 120, - SCX_Pahawh_Hmong = 121, - SCX_Palmyrene = 122, - SCX_Pau_Cin_Hau = 123, - SCX_Phags_Pa = 124, - SCX_Phoenician = 125, - SCX_Psalter_Pahlavi = 126, - SCX_Rejang = 127, - SCX_Runic = 128, - SCX_Samaritan = 129, - SCX_Saurashtra = 130, - SCX_Sharada = 131, - SCX_Shavian = 132, - SCX_Siddham = 133, - SCX_SignWriting = 134, - SCX_Sinhala = 135, - SCX_Sogdian = 136, - SCX_Sora_Sompeng = 137, - SCX_Soyombo = 138, - SCX_Sundanese = 139, - SCX_Syloti_Nagri = 140, - SCX_Syriac = 141, - SCX_Tagalog = 142, - SCX_Tagbanwa = 143, - SCX_Tai_Le = 144, - SCX_Tai_Tham = 145, - SCX_Tai_Viet = 146, - SCX_Takri = 147, - SCX_Tamil = 148, - SCX_Tangsa = 149, - SCX_Tangut = 150, - SCX_Telugu = 151, - SCX_Thaana = 152, - SCX_Thai = 153, - SCX_Tibetan = 154, - SCX_Tifinagh = 155, - SCX_Tirhuta = 156, - SCX_Toto = 157, - SCX_Ugaritic = 158, - SCX_Vai = 159, - SCX_Vithkuqi = 160, - SCX_Wancho = 161, - SCX_Warang_Citi = 162, - SCX_Yezidi = 163, - SCX_Yi = 164, - SCX_Zanabazar_Square = 165, + SCX_Kawi = 66, + SCX_Kayah_Li = 67, + SCX_Kharoshthi = 68, + SCX_Khitan_Small_Script = 69, + SCX_Khmer = 70, + SCX_Khojki = 71, + SCX_Khudawadi = 72, + SCX_Kore = 73, + SCX_Lao = 74, + SCX_Latin = 75, + SCX_Lepcha = 76, + SCX_Limbu = 77, + SCX_Linear_A = 78, + SCX_Linear_B = 79, + SCX_Lisu = 80, + SCX_Lycian = 81, + SCX_Lydian = 82, + SCX_Mahajani = 83, + SCX_Makasar = 84, + SCX_Malayalam = 85, + SCX_Mandaic = 86, + SCX_Manichaean = 87, + SCX_Marchen = 88, + SCX_Masaram_Gondi = 89, + SCX_Medefaidrin = 90, + SCX_Meetei_Mayek = 91, + SCX_Mende_Kikakui = 92, + SCX_Meroitic_Cursive = 93, + SCX_Meroitic_Hieroglyphs = 94, + SCX_Miao = 95, + SCX_Modi = 96, + SCX_Mongolian = 97, + SCX_Mro = 98, + SCX_Multani = 99, + SCX_Myanmar = 100, + SCX_Nabataean = 101, + SCX_Nag_Mundari = 102, + SCX_Nandinagari = 103, + SCX_New_Tai_Lue = 104, + SCX_Newa = 105, + SCX_Nko = 106, + SCX_Nushu = 107, + SCX_Nyiakeng_Puachue_Hmong = 108, + SCX_Ogham = 109, + SCX_Ol_Chiki = 110, + SCX_Old_Hungarian = 111, + SCX_Old_Italic = 112, + SCX_Old_North_Arabian = 113, + SCX_Old_Permic = 114, + SCX_Old_Persian = 115, + SCX_Old_Sogdian = 116, + SCX_Old_South_Arabian = 117, + SCX_Old_Turkic = 118, + SCX_Old_Uyghur = 119, + SCX_Oriya = 120, + SCX_Osage = 121, + SCX_Osmanya = 122, + SCX_Pahawh_Hmong = 123, + SCX_Palmyrene = 124, + SCX_Pau_Cin_Hau = 125, + SCX_Phags_Pa = 126, + SCX_Phoenician = 127, + SCX_Psalter_Pahlavi = 128, + SCX_Rejang = 129, + SCX_Runic = 130, + SCX_Samaritan = 131, + SCX_Saurashtra = 132, + SCX_Sharada = 133, + SCX_Shavian = 134, + SCX_Siddham = 135, + SCX_SignWriting = 136, + SCX_Sinhala = 137, + SCX_Sogdian = 138, + SCX_Sora_Sompeng = 139, + SCX_Soyombo = 140, + SCX_Sundanese = 141, + SCX_Syloti_Nagri = 142, + SCX_Syriac = 143, + SCX_Tagalog = 144, + SCX_Tagbanwa = 145, + SCX_Tai_Le = 146, + SCX_Tai_Tham = 147, + SCX_Tai_Viet = 148, + SCX_Takri = 149, + SCX_Tamil = 150, + SCX_Tangsa = 151, + SCX_Tangut = 152, + SCX_Telugu = 153, + SCX_Thaana = 154, + SCX_Thai = 155, + SCX_Tibetan = 156, + SCX_Tifinagh = 157, + SCX_Tirhuta = 158, + SCX_Toto = 159, + SCX_Ugaritic = 160, + SCX_Vai = 161, + SCX_Vithkuqi = 162, + SCX_Wancho = 163, + SCX_Warang_Citi = 164, + SCX_Yezidi = 165, + SCX_Yi = 166, + SCX_Zanabazar_Square = 167, SCX_use_AUX_TABLE_1 = -1, SCX_use_AUX_TABLE_2 = -2, SCX_use_AUX_TABLE_3 = -3, @@ -76366,6 +76981,7 @@ static const UV script_zeros[] = { 0x966, /* Kaithi */ 0xce6, /* Kannada */ '0', /* Katakana */ + 0x11f50, /* Kawi */ 0xa900, /* Kayah_Li */ '0', /* Kharoshthi */ '0', /* Khitan_Small_Script */ @@ -76401,6 +77017,7 @@ static const UV script_zeros[] = { 0xa66, /* Multani */ 0, /* Myanmar */ '0', /* Nabataean */ + 0x1e4f0, /* Nag_Mundari */ 0xce6, /* Nandinagari */ 0x19d0, /* New_Tai_Lue */ 0x11450, /* Newa */ @@ -77619,6 +78236,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Yezidi, SCX_Unknown, + SCX_Arabic, SCX_Old_Sogdian, SCX_Unknown, SCX_Sogdian, @@ -77766,6 +78384,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Canadian_Aboriginal, SCX_Pau_Cin_Hau, SCX_Unknown, + SCX_Devanagari, + SCX_Unknown, SCX_Bhaiksuki, SCX_Unknown, SCX_Bhaiksuki, @@ -77808,6 +78428,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Makasar, SCX_Unknown, + SCX_Kawi, + SCX_Unknown, + SCX_Kawi, + SCX_Unknown, + SCX_Kawi, + SCX_Unknown, SCX_Lisu, SCX_Unknown, SCX_Tamil, @@ -77829,8 +78455,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Egyptian_Hieroglyphs, SCX_Unknown, - SCX_Egyptian_Hieroglyphs, - SCX_Unknown, SCX_Anatolian_Hieroglyphs, SCX_Unknown, SCX_Bamum, @@ -77892,6 +78516,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_use_AUX_TABLE_44, SCX_Unknown, + SCX_use_AUX_TABLE_44, + SCX_Unknown, + SCX_use_AUX_TABLE_45, + SCX_Unknown, SCX_use_AUX_TABLE_45, SCX_Unknown, SCX_Nushu, @@ -77932,6 +78560,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Common, SCX_Unknown, + SCX_Common, + SCX_Unknown, SCX_use_AUX_TABLE_38, SCX_Common, SCX_Unknown, @@ -77984,6 +78614,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Latin, SCX_Unknown, + SCX_Latin, + SCX_Unknown, SCX_Glagolitic, SCX_Unknown, SCX_Glagolitic, @@ -77994,6 +78626,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Glagolitic, SCX_Unknown, + SCX_Cyrillic, + SCX_Unknown, + SCX_Cyrillic, + SCX_Unknown, SCX_Nyiakeng_Puachue_Hmong, SCX_Unknown, SCX_Nyiakeng_Puachue_Hmong, @@ -78008,6 +78644,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Wancho, SCX_Unknown, + SCX_Nag_Mundari, + SCX_Unknown, SCX_Ethiopic, SCX_Unknown, SCX_Ethiopic, @@ -78174,9 +78812,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ SCX_Unknown, SCX_Common, SCX_Unknown, - SCX_Common, - SCX_Unknown, - SCX_Common, + SCX_use_AUX_TABLE_38, SCX_Unknown, SCX_use_AUX_TABLE_38, SCX_Unknown, @@ -78212,7 +78848,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ - 1757, /* Number of elements */ + 1776, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -78568,7 +79204,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -78629,7 +79265,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -79394,6 +80030,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x10EAE, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F28, 0x10F30, @@ -79430,7 +80067,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -79541,6 +80178,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x11AB0, 0x11AC0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -79583,6 +80222,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -79603,9 +80248,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -79665,8 +80308,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -79703,6 +80350,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -79759,6 +80408,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -79769,6 +80420,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -79783,6 +80438,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -79901,14 +80558,14 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -79930,23 +80587,19 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -79956,7 +80609,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -79967,6 +80620,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -80055,106 +80710,108 @@ typedef enum { SCX_Kaithi = 63, SCX_Kannada = 64, SCX_Katakana = 65, - SCX_Kayah_Li = 66, - SCX_Kharoshthi = 67, - SCX_Khitan_Small_Script = 68, - SCX_Khmer = 69, - SCX_Khojki = 70, - SCX_Khudawadi = 71, - SCX_Kore = 72, - SCX_Lao = 73, - SCX_Latin = 74, - SCX_Lepcha = 75, - SCX_Limbu = 76, - SCX_Linear_A = 77, - SCX_Linear_B = 78, - SCX_Lisu = 79, - SCX_Lycian = 80, - SCX_Lydian = 81, - SCX_Mahajani = 82, - SCX_Makasar = 83, - SCX_Malayalam = 84, - SCX_Mandaic = 85, - SCX_Manichaean = 86, - SCX_Marchen = 87, - SCX_Masaram_Gondi = 88, - SCX_Medefaidrin = 89, - SCX_Meetei_Mayek = 90, - SCX_Mende_Kikakui = 91, - SCX_Meroitic_Cursive = 92, - SCX_Meroitic_Hieroglyphs = 93, - SCX_Miao = 94, - SCX_Modi = 95, - SCX_Mongolian = 96, - SCX_Mro = 97, - SCX_Multani = 98, - SCX_Myanmar = 99, - SCX_Nabataean = 100, - SCX_Nandinagari = 101, - SCX_New_Tai_Lue = 102, - SCX_Newa = 103, - SCX_Nko = 104, - SCX_Nushu = 105, - SCX_Nyiakeng_Puachue_Hmong = 106, - SCX_Ogham = 107, - SCX_Ol_Chiki = 108, - SCX_Old_Hungarian = 109, - SCX_Old_Italic = 110, - SCX_Old_North_Arabian = 111, - SCX_Old_Permic = 112, - SCX_Old_Persian = 113, - SCX_Old_Sogdian = 114, - SCX_Old_South_Arabian = 115, - SCX_Old_Turkic = 116, - SCX_Old_Uyghur = 117, - SCX_Oriya = 118, - SCX_Osage = 119, - SCX_Osmanya = 120, - SCX_Pahawh_Hmong = 121, - SCX_Palmyrene = 122, - SCX_Pau_Cin_Hau = 123, - SCX_Phags_Pa = 124, - SCX_Phoenician = 125, - SCX_Psalter_Pahlavi = 126, - SCX_Rejang = 127, - SCX_Runic = 128, - SCX_Samaritan = 129, - SCX_Saurashtra = 130, - SCX_Sharada = 131, - SCX_Shavian = 132, - SCX_Siddham = 133, - SCX_SignWriting = 134, - SCX_Sinhala = 135, - SCX_Sogdian = 136, - SCX_Sora_Sompeng = 137, - SCX_Soyombo = 138, - SCX_Sundanese = 139, - SCX_Syloti_Nagri = 140, - SCX_Syriac = 141, - SCX_Tagalog = 142, - SCX_Tagbanwa = 143, - SCX_Tai_Le = 144, - SCX_Tai_Tham = 145, - SCX_Tai_Viet = 146, - SCX_Takri = 147, - SCX_Tamil = 148, - SCX_Tangsa = 149, - SCX_Tangut = 150, - SCX_Telugu = 151, - SCX_Thaana = 152, - SCX_Thai = 153, - SCX_Tibetan = 154, - SCX_Tifinagh = 155, - SCX_Tirhuta = 156, - SCX_Toto = 157, - SCX_Ugaritic = 158, - SCX_Vai = 159, - SCX_Vithkuqi = 160, - SCX_Wancho = 161, - SCX_Warang_Citi = 162, - SCX_Yezidi = 163, - SCX_Yi = 164, - SCX_Zanabazar_Square = 165, + SCX_Kawi = 66, + SCX_Kayah_Li = 67, + SCX_Kharoshthi = 68, + SCX_Khitan_Small_Script = 69, + SCX_Khmer = 70, + SCX_Khojki = 71, + SCX_Khudawadi = 72, + SCX_Kore = 73, + SCX_Lao = 74, + SCX_Latin = 75, + SCX_Lepcha = 76, + SCX_Limbu = 77, + SCX_Linear_A = 78, + SCX_Linear_B = 79, + SCX_Lisu = 80, + SCX_Lycian = 81, + SCX_Lydian = 82, + SCX_Mahajani = 83, + SCX_Makasar = 84, + SCX_Malayalam = 85, + SCX_Mandaic = 86, + SCX_Manichaean = 87, + SCX_Marchen = 88, + SCX_Masaram_Gondi = 89, + SCX_Medefaidrin = 90, + SCX_Meetei_Mayek = 91, + SCX_Mende_Kikakui = 92, + SCX_Meroitic_Cursive = 93, + SCX_Meroitic_Hieroglyphs = 94, + SCX_Miao = 95, + SCX_Modi = 96, + SCX_Mongolian = 97, + SCX_Mro = 98, + SCX_Multani = 99, + SCX_Myanmar = 100, + SCX_Nabataean = 101, + SCX_Nag_Mundari = 102, + SCX_Nandinagari = 103, + SCX_New_Tai_Lue = 104, + SCX_Newa = 105, + SCX_Nko = 106, + SCX_Nushu = 107, + SCX_Nyiakeng_Puachue_Hmong = 108, + SCX_Ogham = 109, + SCX_Ol_Chiki = 110, + SCX_Old_Hungarian = 111, + SCX_Old_Italic = 112, + SCX_Old_North_Arabian = 113, + SCX_Old_Permic = 114, + SCX_Old_Persian = 115, + SCX_Old_Sogdian = 116, + SCX_Old_South_Arabian = 117, + SCX_Old_Turkic = 118, + SCX_Old_Uyghur = 119, + SCX_Oriya = 120, + SCX_Osage = 121, + SCX_Osmanya = 122, + SCX_Pahawh_Hmong = 123, + SCX_Palmyrene = 124, + SCX_Pau_Cin_Hau = 125, + SCX_Phags_Pa = 126, + SCX_Phoenician = 127, + SCX_Psalter_Pahlavi = 128, + SCX_Rejang = 129, + SCX_Runic = 130, + SCX_Samaritan = 131, + SCX_Saurashtra = 132, + SCX_Sharada = 133, + SCX_Shavian = 134, + SCX_Siddham = 135, + SCX_SignWriting = 136, + SCX_Sinhala = 137, + SCX_Sogdian = 138, + SCX_Sora_Sompeng = 139, + SCX_Soyombo = 140, + SCX_Sundanese = 141, + SCX_Syloti_Nagri = 142, + SCX_Syriac = 143, + SCX_Tagalog = 144, + SCX_Tagbanwa = 145, + SCX_Tai_Le = 146, + SCX_Tai_Tham = 147, + SCX_Tai_Viet = 148, + SCX_Takri = 149, + SCX_Tamil = 150, + SCX_Tangsa = 151, + SCX_Tangut = 152, + SCX_Telugu = 153, + SCX_Thaana = 154, + SCX_Thai = 155, + SCX_Tibetan = 156, + SCX_Tifinagh = 157, + SCX_Tirhuta = 158, + SCX_Toto = 159, + SCX_Ugaritic = 160, + SCX_Vai = 161, + SCX_Vithkuqi = 162, + SCX_Wancho = 163, + SCX_Warang_Citi = 164, + SCX_Yezidi = 165, + SCX_Yi = 166, + SCX_Zanabazar_Square = 167, SCX_use_AUX_TABLE_1 = -1, SCX_use_AUX_TABLE_2 = -2, SCX_use_AUX_TABLE_3 = -3, @@ -80879,6 +81536,7 @@ static const UV script_zeros[] = { 0x966, /* Kaithi */ 0xce6, /* Kannada */ '0', /* Katakana */ + 0x11f50, /* Kawi */ 0xa900, /* Kayah_Li */ '0', /* Kharoshthi */ '0', /* Khitan_Small_Script */ @@ -80914,6 +81572,7 @@ static const UV script_zeros[] = { 0xa66, /* Multani */ 0, /* Myanmar */ '0', /* Nabataean */ + 0x1e4f0, /* Nag_Mundari */ 0xce6, /* Nandinagari */ 0x19d0, /* New_Tai_Lue */ 0x11450, /* Newa */ @@ -82158,6 +82817,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Yezidi, SCX_Unknown, + SCX_Arabic, SCX_Old_Sogdian, SCX_Unknown, SCX_Sogdian, @@ -82305,6 +82965,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Canadian_Aboriginal, SCX_Pau_Cin_Hau, SCX_Unknown, + SCX_Devanagari, + SCX_Unknown, SCX_Bhaiksuki, SCX_Unknown, SCX_Bhaiksuki, @@ -82347,6 +83009,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Makasar, SCX_Unknown, + SCX_Kawi, + SCX_Unknown, + SCX_Kawi, + SCX_Unknown, + SCX_Kawi, + SCX_Unknown, SCX_Lisu, SCX_Unknown, SCX_Tamil, @@ -82368,8 +83036,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Egyptian_Hieroglyphs, SCX_Unknown, - SCX_Egyptian_Hieroglyphs, - SCX_Unknown, SCX_Anatolian_Hieroglyphs, SCX_Unknown, SCX_Bamum, @@ -82431,6 +83097,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_use_AUX_TABLE_44, SCX_Unknown, + SCX_use_AUX_TABLE_44, + SCX_Unknown, + SCX_use_AUX_TABLE_45, + SCX_Unknown, SCX_use_AUX_TABLE_45, SCX_Unknown, SCX_Nushu, @@ -82471,6 +83141,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Common, SCX_Unknown, + SCX_Common, + SCX_Unknown, SCX_use_AUX_TABLE_38, SCX_Common, SCX_Unknown, @@ -82523,6 +83195,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Latin, SCX_Unknown, + SCX_Latin, + SCX_Unknown, SCX_Glagolitic, SCX_Unknown, SCX_Glagolitic, @@ -82533,6 +83207,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Glagolitic, SCX_Unknown, + SCX_Cyrillic, + SCX_Unknown, + SCX_Cyrillic, + SCX_Unknown, SCX_Nyiakeng_Puachue_Hmong, SCX_Unknown, SCX_Nyiakeng_Puachue_Hmong, @@ -82547,6 +83225,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Wancho, SCX_Unknown, + SCX_Nag_Mundari, + SCX_Unknown, SCX_Ethiopic, SCX_Unknown, SCX_Ethiopic, @@ -82713,9 +83393,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ SCX_Unknown, SCX_Common, SCX_Unknown, - SCX_Common, - SCX_Unknown, - SCX_Common, + SCX_use_AUX_TABLE_38, SCX_Unknown, SCX_use_AUX_TABLE_38, SCX_Unknown, @@ -82751,7 +83429,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ - 1753, /* Number of elements */ + 1772, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -83103,7 +83781,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -83164,7 +83842,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -83929,6 +84607,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x10EAE, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F28, 0x10F30, @@ -83965,7 +84644,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -84076,6 +84755,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x11AB0, 0x11AC0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -84118,6 +84799,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -84138,9 +84825,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -84200,8 +84885,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -84238,6 +84927,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -84294,6 +84985,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -84304,6 +84997,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -84318,6 +85015,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -84436,14 +85135,14 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -84465,23 +85164,19 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -84491,7 +85186,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -84502,6 +85197,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -84590,106 +85287,108 @@ typedef enum { SCX_Kaithi = 63, SCX_Kannada = 64, SCX_Katakana = 65, - SCX_Kayah_Li = 66, - SCX_Kharoshthi = 67, - SCX_Khitan_Small_Script = 68, - SCX_Khmer = 69, - SCX_Khojki = 70, - SCX_Khudawadi = 71, - SCX_Kore = 72, - SCX_Lao = 73, - SCX_Latin = 74, - SCX_Lepcha = 75, - SCX_Limbu = 76, - SCX_Linear_A = 77, - SCX_Linear_B = 78, - SCX_Lisu = 79, - SCX_Lycian = 80, - SCX_Lydian = 81, - SCX_Mahajani = 82, - SCX_Makasar = 83, - SCX_Malayalam = 84, - SCX_Mandaic = 85, - SCX_Manichaean = 86, - SCX_Marchen = 87, - SCX_Masaram_Gondi = 88, - SCX_Medefaidrin = 89, - SCX_Meetei_Mayek = 90, - SCX_Mende_Kikakui = 91, - SCX_Meroitic_Cursive = 92, - SCX_Meroitic_Hieroglyphs = 93, - SCX_Miao = 94, - SCX_Modi = 95, - SCX_Mongolian = 96, - SCX_Mro = 97, - SCX_Multani = 98, - SCX_Myanmar = 99, - SCX_Nabataean = 100, - SCX_Nandinagari = 101, - SCX_New_Tai_Lue = 102, - SCX_Newa = 103, - SCX_Nko = 104, - SCX_Nushu = 105, - SCX_Nyiakeng_Puachue_Hmong = 106, - SCX_Ogham = 107, - SCX_Ol_Chiki = 108, - SCX_Old_Hungarian = 109, - SCX_Old_Italic = 110, - SCX_Old_North_Arabian = 111, - SCX_Old_Permic = 112, - SCX_Old_Persian = 113, - SCX_Old_Sogdian = 114, - SCX_Old_South_Arabian = 115, - SCX_Old_Turkic = 116, - SCX_Old_Uyghur = 117, - SCX_Oriya = 118, - SCX_Osage = 119, - SCX_Osmanya = 120, - SCX_Pahawh_Hmong = 121, - SCX_Palmyrene = 122, - SCX_Pau_Cin_Hau = 123, - SCX_Phags_Pa = 124, - SCX_Phoenician = 125, - SCX_Psalter_Pahlavi = 126, - SCX_Rejang = 127, - SCX_Runic = 128, - SCX_Samaritan = 129, - SCX_Saurashtra = 130, - SCX_Sharada = 131, - SCX_Shavian = 132, - SCX_Siddham = 133, - SCX_SignWriting = 134, - SCX_Sinhala = 135, - SCX_Sogdian = 136, - SCX_Sora_Sompeng = 137, - SCX_Soyombo = 138, - SCX_Sundanese = 139, - SCX_Syloti_Nagri = 140, - SCX_Syriac = 141, - SCX_Tagalog = 142, - SCX_Tagbanwa = 143, - SCX_Tai_Le = 144, - SCX_Tai_Tham = 145, - SCX_Tai_Viet = 146, - SCX_Takri = 147, - SCX_Tamil = 148, - SCX_Tangsa = 149, - SCX_Tangut = 150, - SCX_Telugu = 151, - SCX_Thaana = 152, - SCX_Thai = 153, - SCX_Tibetan = 154, - SCX_Tifinagh = 155, - SCX_Tirhuta = 156, - SCX_Toto = 157, - SCX_Ugaritic = 158, - SCX_Vai = 159, - SCX_Vithkuqi = 160, - SCX_Wancho = 161, - SCX_Warang_Citi = 162, - SCX_Yezidi = 163, - SCX_Yi = 164, - SCX_Zanabazar_Square = 165, + SCX_Kawi = 66, + SCX_Kayah_Li = 67, + SCX_Kharoshthi = 68, + SCX_Khitan_Small_Script = 69, + SCX_Khmer = 70, + SCX_Khojki = 71, + SCX_Khudawadi = 72, + SCX_Kore = 73, + SCX_Lao = 74, + SCX_Latin = 75, + SCX_Lepcha = 76, + SCX_Limbu = 77, + SCX_Linear_A = 78, + SCX_Linear_B = 79, + SCX_Lisu = 80, + SCX_Lycian = 81, + SCX_Lydian = 82, + SCX_Mahajani = 83, + SCX_Makasar = 84, + SCX_Malayalam = 85, + SCX_Mandaic = 86, + SCX_Manichaean = 87, + SCX_Marchen = 88, + SCX_Masaram_Gondi = 89, + SCX_Medefaidrin = 90, + SCX_Meetei_Mayek = 91, + SCX_Mende_Kikakui = 92, + SCX_Meroitic_Cursive = 93, + SCX_Meroitic_Hieroglyphs = 94, + SCX_Miao = 95, + SCX_Modi = 96, + SCX_Mongolian = 97, + SCX_Mro = 98, + SCX_Multani = 99, + SCX_Myanmar = 100, + SCX_Nabataean = 101, + SCX_Nag_Mundari = 102, + SCX_Nandinagari = 103, + SCX_New_Tai_Lue = 104, + SCX_Newa = 105, + SCX_Nko = 106, + SCX_Nushu = 107, + SCX_Nyiakeng_Puachue_Hmong = 108, + SCX_Ogham = 109, + SCX_Ol_Chiki = 110, + SCX_Old_Hungarian = 111, + SCX_Old_Italic = 112, + SCX_Old_North_Arabian = 113, + SCX_Old_Permic = 114, + SCX_Old_Persian = 115, + SCX_Old_Sogdian = 116, + SCX_Old_South_Arabian = 117, + SCX_Old_Turkic = 118, + SCX_Old_Uyghur = 119, + SCX_Oriya = 120, + SCX_Osage = 121, + SCX_Osmanya = 122, + SCX_Pahawh_Hmong = 123, + SCX_Palmyrene = 124, + SCX_Pau_Cin_Hau = 125, + SCX_Phags_Pa = 126, + SCX_Phoenician = 127, + SCX_Psalter_Pahlavi = 128, + SCX_Rejang = 129, + SCX_Runic = 130, + SCX_Samaritan = 131, + SCX_Saurashtra = 132, + SCX_Sharada = 133, + SCX_Shavian = 134, + SCX_Siddham = 135, + SCX_SignWriting = 136, + SCX_Sinhala = 137, + SCX_Sogdian = 138, + SCX_Sora_Sompeng = 139, + SCX_Soyombo = 140, + SCX_Sundanese = 141, + SCX_Syloti_Nagri = 142, + SCX_Syriac = 143, + SCX_Tagalog = 144, + SCX_Tagbanwa = 145, + SCX_Tai_Le = 146, + SCX_Tai_Tham = 147, + SCX_Tai_Viet = 148, + SCX_Takri = 149, + SCX_Tamil = 150, + SCX_Tangsa = 151, + SCX_Tangut = 152, + SCX_Telugu = 153, + SCX_Thaana = 154, + SCX_Thai = 155, + SCX_Tibetan = 156, + SCX_Tifinagh = 157, + SCX_Tirhuta = 158, + SCX_Toto = 159, + SCX_Ugaritic = 160, + SCX_Vai = 161, + SCX_Vithkuqi = 162, + SCX_Wancho = 163, + SCX_Warang_Citi = 164, + SCX_Yezidi = 165, + SCX_Yi = 166, + SCX_Zanabazar_Square = 167, SCX_use_AUX_TABLE_1 = -1, SCX_use_AUX_TABLE_2 = -2, SCX_use_AUX_TABLE_3 = -3, @@ -85414,6 +86113,7 @@ static const UV script_zeros[] = { 0x966, /* Kaithi */ 0xce6, /* Kannada */ '0', /* Katakana */ + 0x11f50, /* Kawi */ 0xa900, /* Kayah_Li */ '0', /* Kharoshthi */ '0', /* Khitan_Small_Script */ @@ -85449,6 +86149,7 @@ static const UV script_zeros[] = { 0xa66, /* Multani */ 0, /* Myanmar */ '0', /* Nabataean */ + 0x1e4f0, /* Nag_Mundari */ 0xce6, /* Nandinagari */ 0x19d0, /* New_Tai_Lue */ 0x11450, /* Newa */ @@ -86689,6 +87390,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Yezidi, SCX_Unknown, + SCX_Arabic, SCX_Old_Sogdian, SCX_Unknown, SCX_Sogdian, @@ -86836,6 +87538,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Canadian_Aboriginal, SCX_Pau_Cin_Hau, SCX_Unknown, + SCX_Devanagari, + SCX_Unknown, SCX_Bhaiksuki, SCX_Unknown, SCX_Bhaiksuki, @@ -86878,6 +87582,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Makasar, SCX_Unknown, + SCX_Kawi, + SCX_Unknown, + SCX_Kawi, + SCX_Unknown, + SCX_Kawi, + SCX_Unknown, SCX_Lisu, SCX_Unknown, SCX_Tamil, @@ -86899,8 +87609,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Egyptian_Hieroglyphs, SCX_Unknown, - SCX_Egyptian_Hieroglyphs, - SCX_Unknown, SCX_Anatolian_Hieroglyphs, SCX_Unknown, SCX_Bamum, @@ -86962,6 +87670,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_use_AUX_TABLE_44, SCX_Unknown, + SCX_use_AUX_TABLE_44, + SCX_Unknown, + SCX_use_AUX_TABLE_45, + SCX_Unknown, SCX_use_AUX_TABLE_45, SCX_Unknown, SCX_Nushu, @@ -87002,6 +87714,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Common, SCX_Unknown, + SCX_Common, + SCX_Unknown, SCX_use_AUX_TABLE_38, SCX_Common, SCX_Unknown, @@ -87054,6 +87768,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Latin, SCX_Unknown, + SCX_Latin, + SCX_Unknown, SCX_Glagolitic, SCX_Unknown, SCX_Glagolitic, @@ -87064,6 +87780,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Glagolitic, SCX_Unknown, + SCX_Cyrillic, + SCX_Unknown, + SCX_Cyrillic, + SCX_Unknown, SCX_Nyiakeng_Puachue_Hmong, SCX_Unknown, SCX_Nyiakeng_Puachue_Hmong, @@ -87078,6 +87798,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Wancho, SCX_Unknown, + SCX_Nag_Mundari, + SCX_Unknown, SCX_Ethiopic, SCX_Unknown, SCX_Ethiopic, @@ -87244,9 +87966,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ SCX_Unknown, SCX_Common, SCX_Unknown, - SCX_Common, - SCX_Unknown, - SCX_Common, + SCX_use_AUX_TABLE_38, SCX_Unknown, SCX_use_AUX_TABLE_38, SCX_Unknown, @@ -87279,7 +87999,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ - 1949, /* Number of elements */ + 1979, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -87704,6 +88424,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0xCF0, 0xCF1, 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD0D, @@ -87766,7 +88487,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF00, @@ -88608,6 +89329,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F1D, 0x10F27, @@ -88681,6 +89403,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -88877,6 +89601,18 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x11EE0, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -88888,9 +89624,11 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -88946,6 +89684,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1BC00, @@ -89052,6 +89792,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -89062,6 +89804,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -89078,6 +89824,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -89693,6 +90443,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Numeric, WB_Other, WB_ALetter, + WB_Extend, WB_Other, WB_Extend, WB_ALetter, @@ -90598,6 +91349,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_ALetter, WB_Other, + WB_Extend, WB_ALetter, WB_Other, WB_ALetter, @@ -90670,6 +91422,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Extend, WB_Other, WB_Extend, + WB_ALetter, + WB_Extend, WB_Other, WB_ALetter, WB_Other, @@ -90867,7 +91621,17 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_ALetter, WB_Extend, WB_Other, + WB_Extend, + WB_ALetter, + WB_Extend, + WB_ALetter, + WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Numeric, WB_Other, WB_ALetter, WB_Other, @@ -90879,7 +91643,11 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, WB_Format, + WB_Extend, + WB_ALetter, + WB_Extend, WB_Other, WB_ALetter, WB_Other, @@ -90938,6 +91706,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_Katakana, WB_Other, + WB_Katakana, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -91042,6 +91812,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Extend, WB_Other, WB_Extend, @@ -91055,6 +91827,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_ALetter, WB_Other, WB_Extend, + WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, WB_ALetter, WB_Other, WB_Numeric, @@ -91069,6 +91845,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Numeric, WB_Other, WB_ALetter, + WB_Extend, + WB_Numeric, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -91236,7 +92016,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ - 1972, /* Number of elements */ + 2002, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -91684,6 +92464,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0xCF0, 0xCF1, 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD0D, @@ -91746,7 +92527,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF00, @@ -92588,6 +93369,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F1D, 0x10F27, @@ -92661,6 +93443,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -92857,6 +93641,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x11EE0, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -92868,9 +93664,11 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -92926,6 +93724,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1BC00, @@ -93032,6 +93832,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -93042,6 +93844,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -93058,6 +93864,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -93699,6 +94509,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Numeric, WB_Other, WB_ALetter, + WB_Extend, WB_Other, WB_Extend, WB_ALetter, @@ -94604,6 +95415,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_ALetter, WB_Other, + WB_Extend, WB_ALetter, WB_Other, WB_ALetter, @@ -94676,6 +95488,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Extend, WB_Other, WB_Extend, + WB_ALetter, + WB_Extend, WB_Other, WB_ALetter, WB_Other, @@ -94873,7 +95687,17 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_ALetter, WB_Extend, WB_Other, + WB_Extend, + WB_ALetter, + WB_Extend, + WB_ALetter, + WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Numeric, WB_Other, WB_ALetter, WB_Other, @@ -94885,7 +95709,11 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, WB_Format, + WB_Extend, + WB_ALetter, + WB_Extend, WB_Other, WB_ALetter, WB_Other, @@ -94944,6 +95772,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_Katakana, WB_Other, + WB_Katakana, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -95048,6 +95878,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Extend, WB_Other, WB_Extend, @@ -95061,6 +95893,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_ALetter, WB_Other, WB_Extend, + WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, WB_ALetter, WB_Other, WB_Numeric, @@ -95075,6 +95911,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Numeric, WB_Other, WB_ALetter, + WB_Extend, + WB_Numeric, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -95242,7 +96082,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ - 1968, /* Number of elements */ + 1998, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -95686,6 +96526,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0xCF0, 0xCF1, 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD0D, @@ -95748,7 +96589,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF00, @@ -96590,6 +97431,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, + 0x10EFD, 0x10F00, 0x10F1D, 0x10F27, @@ -96663,6 +97505,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -96859,6 +97703,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x11EE0, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -96870,9 +97726,11 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, 0x13430, - 0x13439, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -96928,6 +97786,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1BC00, @@ -97034,6 +97894,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -97044,6 +97906,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -97060,6 +97926,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -97697,6 +98567,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Numeric, WB_Other, WB_ALetter, + WB_Extend, WB_Other, WB_Extend, WB_ALetter, @@ -98602,6 +99473,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_ALetter, WB_Other, + WB_Extend, WB_ALetter, WB_Other, WB_ALetter, @@ -98674,6 +99546,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Extend, WB_Other, WB_Extend, + WB_ALetter, + WB_Extend, WB_Other, WB_ALetter, WB_Other, @@ -98871,7 +99745,17 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_ALetter, WB_Extend, WB_Other, + WB_Extend, + WB_ALetter, + WB_Extend, + WB_ALetter, + WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Numeric, WB_Other, WB_ALetter, WB_Other, @@ -98883,7 +99767,11 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, WB_Format, + WB_Extend, + WB_ALetter, + WB_Extend, WB_Other, WB_ALetter, WB_Other, @@ -98942,6 +99830,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_Katakana, WB_Other, + WB_Katakana, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -99046,6 +99936,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Extend, WB_Other, WB_Extend, @@ -99059,6 +99951,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_ALetter, WB_Other, WB_Extend, + WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, WB_ALetter, WB_Other, WB_Numeric, @@ -99073,6 +99969,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Numeric, WB_Other, WB_ALetter, + WB_Extend, + WB_Numeric, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -127432,7 +128332,7 @@ static const UV UNI_ASCII_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ - 1396, /* Number of elements */ + 1414, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -127679,7 +128579,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -127739,7 +128639,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -128280,7 +129180,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -128315,7 +129215,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -128420,6 +129320,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -128462,6 +129364,12 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -128477,9 +129385,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -128532,8 +129438,12 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -128562,6 +129472,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -128616,6 +129528,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -128626,6 +129540,10 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -128640,6 +129558,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -128756,14 +129676,14 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -128785,23 +129705,19 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -128811,7 +129727,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -128822,6 +129738,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -128837,7 +129755,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */ - 311, /* Number of elements */ + 315, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -128904,7 +129822,7 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */ 0x10CE, 0x10D0, 0x10FB, - 0x10FD, + 0x10FC, 0x1100, 0x13A0, 0x13F6, @@ -129024,14 +129942,14 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */ 0xA7D4, 0xA7D5, 0xA7DA, - 0xA7F5, + 0xA7F2, 0xA7F7, 0xA7F8, 0xA7FB, 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -129144,6 +130062,10 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E900, 0x1E944, 0x1F130, @@ -129162,7 +130084,7 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */ - 337, /* Number of elements */ + 341, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -129255,7 +130177,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */ 0x10CE, 0x10D0, 0x10FB, - 0x10FD, + 0x10FC, 0x1100, 0x13A0, 0x13F6, @@ -129375,14 +130297,14 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */ 0xA7D4, 0xA7D5, 0xA7DA, - 0xA7F5, + 0xA7F2, 0xA7F7, 0xA7F8, 0xA7FB, 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -129495,6 +130417,10 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E900, 0x1E944, 0x1F130, @@ -129513,7 +130439,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */ - 333, /* Number of elements */ + 337, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -129602,7 +130528,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */ 0x10CE, 0x10D0, 0x10FB, - 0x10FD, + 0x10FC, 0x1100, 0x13A0, 0x13F6, @@ -129722,14 +130648,14 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */ 0xA7D4, 0xA7D5, 0xA7DA, - 0xA7F5, + 0xA7F2, 0xA7F7, 0xA7F8, 0xA7FB, 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -129842,6 +130768,10 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E900, 0x1E944, 0x1F130, @@ -129857,7 +130787,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */ - 285, /* Number of elements */ + 287, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -130144,6 +131074,8 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E900, 0x1E944 }; @@ -130156,7 +131088,7 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */ - 317, /* Number of elements */ + 319, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -130475,6 +131407,8 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E900, 0x1E944 }; @@ -130487,7 +131421,7 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */ - 313, /* Number of elements */ + 315, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -130802,6 +131736,8 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E900, 0x1E944 }; @@ -130811,7 +131747,7 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */ - 1315, /* Number of elements */ + 1317, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -132128,6 +133064,8 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E922, 0x1E944 }; @@ -132140,7 +133078,7 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */ - 1329, /* Number of elements */ + 1331, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -133471,6 +134409,8 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E922, 0x1E944 }; @@ -133483,7 +134423,7 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 037 */ - 1329, /* Number of elements */ + 1331, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -134814,6 +135754,8 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 037 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E922, 0x1E944 }; @@ -139824,7 +140766,7 @@ static const UV UNI_VERTSPACE_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ - 1521, /* Number of elements */ + 1545, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -140106,8 +141048,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0xBE6, 0xBF0, 0xC00, - 0xC04, - 0xC05, 0xC0D, 0xC0E, 0xC11, @@ -140158,7 +141098,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -140244,7 +141184,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0xF49, 0xF6D, 0xF71, - 0xF82, + 0xF84, 0xF88, 0xF98, 0xF99, @@ -140863,7 +141803,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x11070, 0x11071, 0x11076, - 0x11082, + 0x11080, 0x110B9, 0x110C2, 0x110C3, @@ -140896,7 +141836,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x11237, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -141075,6 +142015,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F41, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -141086,7 +142034,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -141139,8 +142089,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -141219,6 +142173,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x1D800, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -141229,6 +142185,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E137, @@ -141243,6 +142203,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -141338,7 +142302,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -141348,7 +142312,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -141359,7 +142325,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ - 1545, /* Number of elements */ + 1569, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -141665,8 +142631,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0xBE6, 0xBF0, 0xC00, - 0xC04, - 0xC05, 0xC0D, 0xC0E, 0xC11, @@ -141717,7 +142681,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -141803,7 +142767,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0xF49, 0xF6D, 0xF71, - 0xF82, + 0xF84, 0xF88, 0xF98, 0xF99, @@ -142422,7 +143386,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x11070, 0x11071, 0x11076, - 0x11082, + 0x11080, 0x110B9, 0x110C2, 0x110C3, @@ -142455,7 +143419,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x11237, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -142634,6 +143598,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F41, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -142645,7 +143617,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -142698,8 +143672,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -142778,6 +143756,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x1D800, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -142788,6 +143768,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E137, @@ -142802,6 +143786,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -142897,7 +143885,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -142907,7 +143895,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -142918,7 +143908,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ - 1541, /* Number of elements */ + 1565, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -143220,8 +144210,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0xBE6, 0xBF0, 0xC00, - 0xC04, - 0xC05, 0xC0D, 0xC0E, 0xC11, @@ -143272,7 +144260,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -143358,7 +144346,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0xF49, 0xF6D, 0xF71, - 0xF82, + 0xF84, 0xF88, 0xF98, 0xF99, @@ -143977,7 +144965,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x11070, 0x11071, 0x11076, - 0x11082, + 0x11080, 0x110B9, 0x110C2, 0x110C3, @@ -144010,7 +144998,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x11237, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -144189,6 +145177,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F41, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -144200,7 +145196,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -144253,8 +145251,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -144333,6 +145335,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x1D800, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -144343,6 +145347,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E137, @@ -144357,6 +145365,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x1E2EC, 0x1E2F0, 0x1E2FA, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -144452,7 +145464,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -144462,7 +145474,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -144470,7 +145484,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ - 1445, /* Number of elements */ + 1465, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -144744,8 +145758,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0xBD7, 0xBD8, 0xC00, - 0xC04, - 0xC05, 0xC0D, 0xC0E, 0xC11, @@ -144792,7 +145804,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0xCE0, 0xCE4, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -144868,7 +145880,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0xF49, 0xF6D, 0xF71, - 0xF82, + 0xF84, 0xF88, 0xF98, 0xF99, @@ -145471,7 +146483,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x11046, 0x11071, 0x11076, - 0x11082, + 0x11080, 0x110B9, 0x110C2, 0x110C3, @@ -145502,7 +146514,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x11237, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -145661,6 +146673,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F41, 0x11FB0, 0x11FB1, 0x12000, @@ -145672,7 +146690,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -145719,8 +146739,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -145797,6 +146821,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -145807,6 +146833,10 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E137, @@ -145817,6 +146847,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -145908,7 +146940,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -145918,7 +146950,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -145929,7 +146963,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ - 1471, /* Number of elements */ + 1491, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -146229,8 +147263,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0xBD7, 0xBD8, 0xC00, - 0xC04, - 0xC05, 0xC0D, 0xC0E, 0xC11, @@ -146277,7 +147309,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0xCE0, 0xCE4, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -146353,7 +147385,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0xF49, 0xF6D, 0xF71, - 0xF82, + 0xF84, 0xF88, 0xF98, 0xF99, @@ -146956,7 +147988,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x11046, 0x11071, 0x11076, - 0x11082, + 0x11080, 0x110B9, 0x110C2, 0x110C3, @@ -146987,7 +148019,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x11237, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -147146,6 +148178,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F41, 0x11FB0, 0x11FB1, 0x12000, @@ -147157,7 +148195,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -147204,8 +148244,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -147282,6 +148326,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -147292,6 +148338,10 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E137, @@ -147302,6 +148352,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -147393,7 +148445,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -147403,7 +148455,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -147414,7 +148468,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ - 1467, /* Number of elements */ + 1487, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -147710,8 +148764,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0xBD7, 0xBD8, 0xC00, - 0xC04, - 0xC05, 0xC0D, 0xC0E, 0xC11, @@ -147758,7 +148810,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0xCE0, 0xCE4, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -147834,7 +148886,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0xF49, 0xF6D, 0xF71, - 0xF82, + 0xF84, 0xF88, 0xF98, 0xF99, @@ -148437,7 +149489,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x11046, 0x11071, 0x11076, - 0x11082, + 0x11080, 0x110B9, 0x110C2, 0x110C3, @@ -148468,7 +149520,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x11237, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -148627,6 +149679,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F41, 0x11FB0, 0x11FB1, 0x12000, @@ -148638,7 +149696,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -148685,8 +149745,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -148763,6 +149827,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -148773,6 +149839,10 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E137, @@ -148783,6 +149853,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -148874,7 +149946,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -148884,7 +149956,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -149029,7 +150103,7 @@ static const UV UNI_XPOSIXCNTRL_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */ - 125, /* Number of elements */ + 129, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -149142,6 +150216,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -149154,6 +150230,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -149168,7 +150246,7 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */ - 125, /* Number of elements */ + 129, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -149281,6 +150359,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -149293,6 +150373,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -149307,7 +150389,7 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */ - 125, /* Number of elements */ + 129, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -149420,6 +150502,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -149432,6 +150516,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -149443,7 +150529,7 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ - 1407, /* Number of elements */ + 1425, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -149693,7 +150779,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -149753,7 +150839,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -150302,7 +151388,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -150337,7 +151423,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -150442,6 +151528,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -150484,6 +151572,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -150499,9 +151593,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -150554,8 +151646,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -150584,6 +151680,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -150638,6 +151736,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -150648,6 +151748,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -150662,6 +151766,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -150778,14 +151884,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -150807,23 +151913,19 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -150833,7 +151935,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -150844,6 +151946,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -150864,7 +151968,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ - 1407, /* Number of elements */ + 1425, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -151114,7 +152218,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -151174,7 +152278,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -151723,7 +152827,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -151758,7 +152862,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -151863,6 +152967,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -151905,6 +153011,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -151920,9 +153032,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -151975,8 +153085,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -152005,6 +153119,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -152059,6 +153175,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -152069,6 +153187,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -152083,6 +153205,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -152199,14 +153323,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -152228,23 +153352,19 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -152254,7 +153374,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -152265,6 +153385,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -152285,7 +153407,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ - 1407, /* Number of elements */ + 1425, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -152535,7 +153657,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -152595,7 +153717,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -153144,7 +154266,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -153179,7 +154301,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -153284,6 +154406,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -153326,6 +154450,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -153341,9 +154471,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -153396,8 +154524,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -153426,6 +154558,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -153480,6 +154614,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -153490,6 +154626,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -153504,6 +154644,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -153620,14 +154762,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -153649,23 +154791,19 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -153675,7 +154813,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -153686,6 +154824,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -153703,7 +154843,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */ - 1337, /* Number of elements */ + 1343, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -154260,7 +155400,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */ 0x589, 0x10D0, 0x10FB, - 0x10FD, + 0x10FC, 0x1100, 0x13F8, 0x13FE, @@ -154940,6 +156080,8 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */ 0xA7D8, 0xA7D9, 0xA7DA, + 0xA7F2, + 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, @@ -154947,7 +156089,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -155042,6 +156184,10 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E922, 0x1E944 }; @@ -155054,7 +156200,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */ - 1345, /* Number of elements */ + 1351, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -155619,7 +156765,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */ 0x589, 0x10D0, 0x10FB, - 0x10FD, + 0x10FC, 0x1100, 0x13F8, 0x13FE, @@ -156299,6 +157445,8 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */ 0xA7D8, 0xA7D9, 0xA7DA, + 0xA7F2, + 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, @@ -156306,7 +157454,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -156401,6 +157549,10 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E922, 0x1E944 }; @@ -156413,7 +157565,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */ - 1345, /* Number of elements */ + 1351, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -156978,7 +158130,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */ 0x589, 0x10D0, 0x10FB, - 0x10FD, + 0x10FC, 0x1100, 0x13F8, 0x13FE, @@ -157658,6 +158810,8 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */ 0xA7D8, 0xA7D9, 0xA7DA, + 0xA7F2, + 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, @@ -157665,7 +158819,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -157760,6 +158914,10 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E922, 0x1E944 }; @@ -157769,7 +158927,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ - 1401, /* Number of elements */ + 1419, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -158019,7 +159177,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -158079,7 +159237,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -158622,7 +159780,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -158657,7 +159815,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -158762,6 +159920,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -158804,6 +159964,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -158819,9 +159985,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -158874,8 +160038,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -158904,6 +160072,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -158958,6 +160128,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -158968,6 +160140,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -158982,6 +160158,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -159098,14 +160276,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -159127,23 +160305,19 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -159153,7 +160327,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -159164,6 +160338,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -159184,7 +160360,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ - 1401, /* Number of elements */ + 1419, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -159434,7 +160610,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -159494,7 +160670,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -160037,7 +161213,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -160072,7 +161248,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -160177,6 +161353,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -160219,6 +161397,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -160234,9 +161418,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -160289,8 +161471,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -160319,6 +161505,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -160373,6 +161561,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -160383,6 +161573,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -160397,6 +161591,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -160513,14 +161709,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -160542,23 +161738,19 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -160568,7 +161760,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -160579,6 +161771,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -160599,7 +161793,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ - 1401, /* Number of elements */ + 1419, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -160849,7 +162043,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -160909,7 +162103,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -161452,7 +162646,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -161487,7 +162681,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -161592,6 +162786,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -161634,6 +162830,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -161649,9 +162851,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -161704,8 +162904,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -161734,6 +162938,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -161788,6 +162994,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -161798,6 +163006,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -161812,6 +163024,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -161928,14 +163142,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -161957,23 +163171,19 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -161983,7 +163193,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -161994,6 +163204,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -162011,7 +163223,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */ - 369, /* Number of elements */ + 373, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -162354,12 +163566,16 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -162394,7 +163610,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */ - 377, /* Number of elements */ + 381, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -162745,12 +163961,16 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -162785,7 +164005,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */ - 379, /* Number of elements */ + 383, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -163138,12 +164358,16 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -167261,7 +168485,7 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ - 1519, /* Number of elements */ + 1543, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -167581,7 +168805,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -167647,7 +168871,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -168274,7 +169498,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -168321,7 +169545,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -168482,6 +169706,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -168493,7 +169725,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -168548,8 +169782,12 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -168656,6 +169894,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -168666,6 +169906,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -168678,6 +169922,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -168771,7 +170017,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -168782,6 +170028,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -168794,7 +170042,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ - 1543, /* Number of elements */ + 1567, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -169138,7 +170386,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -169204,7 +170452,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -169831,7 +171079,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -169878,7 +171126,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -170039,6 +171287,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -170050,7 +171306,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -170105,8 +171363,12 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -170213,6 +171475,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -170223,6 +171487,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -170235,6 +171503,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -170328,7 +171598,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -170339,6 +171609,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -170351,7 +171623,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ - 1539, /* Number of elements */ + 1563, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -170691,7 +171963,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -170757,7 +172029,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -171384,7 +172656,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -171431,7 +172703,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -171592,6 +172864,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -171603,7 +172883,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -171658,8 +172940,12 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -171766,6 +173052,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -171776,6 +173064,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -171788,6 +173080,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -171881,7 +173175,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -171892,6 +173186,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -172927,7 +174223,7 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ - 1309, /* Number of elements */ + 1331, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -173882,6 +175178,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -174006,6 +175304,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -174015,7 +175319,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -174060,8 +175366,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -174136,6 +175446,10 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -174146,6 +175460,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -174229,7 +175545,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -174239,7 +175555,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -174250,7 +175568,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ - 1335, /* Number of elements */ + 1357, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -175231,6 +176549,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -175355,6 +176675,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -175364,7 +176690,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -175409,8 +176737,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -175485,6 +176817,10 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -175495,6 +176831,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -175578,7 +176916,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -175588,7 +176926,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -175599,7 +176939,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ - 1331, /* Number of elements */ + 1353, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -176576,6 +177916,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -176700,6 +178042,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -176709,7 +178057,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -176754,8 +178104,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -176830,6 +178184,10 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -176840,6 +178198,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -176923,7 +178283,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -176933,7 +178293,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -176941,7 +178303,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 */ - 1533, /* Number of elements */ + 1557, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -177269,7 +178631,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -177335,7 +178697,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -177974,7 +179336,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -178021,7 +179383,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -178182,6 +179544,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -178193,7 +179563,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -178248,8 +179620,12 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -178356,6 +179732,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -178366,6 +179744,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -178378,6 +179760,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -178465,7 +179849,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -178476,6 +179860,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -178488,7 +179874,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 * && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ - 1559, /* Number of elements */ + 1583, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -178842,7 +180228,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -178908,7 +180294,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -179547,7 +180933,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -179594,7 +180980,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -179755,6 +181141,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -179766,7 +181160,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -179821,8 +181217,12 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -179929,6 +181329,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -179939,6 +181341,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -179951,6 +181357,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -180038,7 +181446,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -180049,6 +181457,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -180061,7 +181471,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ - 1555, /* Number of elements */ + 1579, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -180411,7 +181821,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -180477,7 +181887,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -181116,7 +182526,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -181163,7 +182573,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -181324,6 +182734,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -181335,7 +182753,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -181390,8 +182810,12 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -181498,6 +182922,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -181508,6 +182934,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -181520,6 +182950,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -181607,7 +183039,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -181618,6 +183050,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -181843,7 +183277,7 @@ static const UV UNI__PERL_FOLDS_TO_MULTI_CHAR_invlist[] = { /* for EBCDIC 037 * # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ - 1527, /* Number of elements */ + 1551, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -182165,7 +183599,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -182231,7 +183665,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -182870,7 +184304,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -182917,7 +184351,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -183078,6 +184512,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -183089,7 +184531,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -183144,8 +184588,12 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -183252,6 +184700,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -183262,6 +184712,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -183274,6 +184728,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -183361,7 +184817,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -183372,6 +184828,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -183384,7 +184842,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ - 1551, /* Number of elements */ + 1575, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -183730,7 +185188,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -183796,7 +185254,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -184435,7 +185893,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -184482,7 +185940,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -184643,6 +186101,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -184654,7 +186120,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -184709,8 +186177,12 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -184817,6 +186289,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -184827,6 +186301,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -184839,6 +186317,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -184926,7 +186406,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -184937,6 +186417,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -184949,7 +186431,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ - 1547, /* Number of elements */ + 1571, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -185291,7 +186773,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -185357,7 +186839,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -185996,7 +187478,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -186043,7 +187525,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -186204,6 +187686,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -186215,7 +187705,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -186270,8 +187762,12 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -186378,6 +187874,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -186388,6 +187886,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -186400,6 +187902,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -186487,7 +187991,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -186498,6 +188002,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -186507,7 +188013,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ - 1315, /* Number of elements */ + 1337, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -187466,6 +188972,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -187590,6 +189098,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -187601,7 +189115,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -187646,8 +189162,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -187722,6 +189242,10 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -187732,6 +189256,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -187815,7 +189341,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -187825,7 +189351,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -187836,7 +189364,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ - 1341, /* Number of elements */ + 1363, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -188821,6 +190349,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -188945,6 +190475,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -188956,7 +190492,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -189001,8 +190539,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -189077,6 +190619,10 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -189087,6 +190633,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -189170,7 +190718,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -189180,7 +190728,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -189191,7 +190741,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ - 1337, /* Number of elements */ + 1359, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -190172,6 +191722,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -190296,6 +191848,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -190307,7 +191865,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -190352,8 +191912,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -190428,6 +191992,10 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -190438,6 +192006,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -190521,7 +192091,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -190531,7 +192101,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -191851,6 +193423,78 @@ static const UV UNI_AGE__14_invlist[] = { /* for all charsets */ 0x2B739 }; +static const UV UNI_AGE__15_invlist[] = { /* for all charsets */ + 65, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0xCF3, + 0xCF4, + 0xECE, + 0xECF, + 0x10EFD, + 0x10F00, + 0x1123F, + 0x11242, + 0x11B00, + 0x11B0A, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, + 0x1342F, + 0x13430, + 0x13439, + 0x13456, + 0x1B132, + 0x1B133, + 0x1B155, + 0x1B156, + 0x1D2C0, + 0x1D2D4, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, + 0x1E4D0, + 0x1E4FA, + 0x1F6DC, + 0x1F6DD, + 0x1F774, + 0x1F777, + 0x1F77B, + 0x1F780, + 0x1F7D9, + 0x1F7DA, + 0x1FA75, + 0x1FA78, + 0x1FA87, + 0x1FA89, + 0x1FAAD, + 0x1FAB0, + 0x1FABB, + 0x1FABE, + 0x1FABF, + 0x1FAC0, + 0x1FACE, + 0x1FAD0, + 0x1FADA, + 0x1FADC, + 0x1FAE8, + 0x1FAE9, + 0x1FAF7, + 0x1FAF9, + 0x2B739, + 0x2B73A, + 0x31350, + 0x323B0 +}; + static const UV UNI_AGE__2_invlist[] = { /* for all charsets */ 59, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -194229,7 +195873,7 @@ static const UV UNI_ANY_invlist[] = { /* for all charsets */ }; static const UV UNI_ARAB_invlist[] = { /* for all charsets */ - 103, /* Number of elements */ + 105, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -194268,6 +195912,8 @@ static const UV UNI_ARAB_invlist[] = { /* for all charsets */ 0x102FC, 0x10E60, 0x10E7F, + 0x10EFD, + 0x10F00, 0x1EE00, 0x1EE04, 0x1EE05, @@ -194358,6 +196004,16 @@ static const UV UNI_ARABICEXTB_invlist[] = { /* for all charsets */ 0x8A0 }; +static const UV UNI_ARABICEXTC_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x10EC0, + 0x10F00 +}; + static const UV UNI_ARABICMATH_invlist[] = { /* for all charsets */ 3, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -194507,7 +196163,7 @@ static const UV UNI_BATK_invlist[] = { /* for all charsets */ }; static const UV UNI_BC__AL_invlist[] = { /* for all charsets */ - 57, /* Number of elements */ + 59, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -194556,6 +196212,8 @@ static const UV UNI_BC__AL_invlist[] = { /* for all charsets */ 0x10D30, 0x10D3A, 0x10D40, + 0x10EC0, + 0x10EFD, 0x10F30, 0x10F46, 0x10F51, @@ -195464,7 +197122,7 @@ static const UV UNI_BC__FSI_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ - 942, /* Number of elements */ + 956, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -195649,7 +197307,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -196100,6 +197758,8 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -196224,8 +197884,20 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x11FD5, 0x11FF2, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -196294,6 +197966,8 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, @@ -196302,6 +197976,8 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ 0x1E2F0, 0x1E2FF, 0x1E300, + 0x1E4EC, + 0x1E4F0, 0x1E800, 0x1F02C, 0x1F030, @@ -196326,14 +198002,14 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -196355,23 +198031,19 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -196420,7 +198092,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ - 968, /* Number of elements */ + 982, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -196631,7 +198303,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -197082,6 +198754,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -197206,8 +198880,20 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x11FD5, 0x11FF2, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -197276,6 +198962,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, @@ -197284,6 +198972,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ 0x1E2F0, 0x1E2FF, 0x1E300, + 0x1E4EC, + 0x1E4F0, 0x1E800, 0x1F02C, 0x1F030, @@ -197308,14 +198998,14 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -197337,23 +199027,19 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -197402,7 +199088,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ - 964, /* Number of elements */ + 978, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -197609,7 +199295,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -198060,6 +199746,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -198184,8 +199872,20 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x11FD5, 0x11FF2, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -198254,6 +199954,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, @@ -198262,6 +199964,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ 0x1E2F0, 0x1E2FF, 0x1E300, + 0x1E4EC, + 0x1E4F0, 0x1E800, 0x1F02C, 0x1F030, @@ -198286,14 +199990,14 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -198315,23 +200019,19 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -198405,7 +200105,7 @@ static const UV UNI_BC__LRO_invlist[] = { /* for all charsets */ }; static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */ - 663, /* Number of elements */ + 683, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -198591,7 +200291,7 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -198846,6 +200546,8 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -198890,6 +200592,8 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -199012,6 +200716,18 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -199060,12 +200776,16 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -199077,7 +200797,7 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */ - 383, /* Number of elements */ + 379, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -199414,14 +201134,14 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -199443,23 +201163,19 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -199474,7 +201190,7 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */ - 391, /* Number of elements */ + 387, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -199819,14 +201535,14 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -199848,23 +201564,19 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -199879,7 +201591,7 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */ - 387, /* Number of elements */ + 383, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -200220,14 +201932,14 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -200249,23 +201961,19 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -200295,7 +202003,7 @@ static const UV UNI_BC__PDI_invlist[] = { /* for all charsets */ }; static const UV UNI_BC__R_invlist[] = { /* for all charsets */ - 79, /* Number of elements */ + 81, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -200361,6 +202069,8 @@ static const UV UNI_BC__R_invlist[] = { /* for all charsets */ 0x10E7F, 0x10EAB, 0x10EAD, + 0x10EC0, + 0x10F00, 0x10F30, 0x10F70, 0x10F82, @@ -202567,7 +204277,7 @@ static const UV UNI_BYZANTINEMUSIC_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ - 1401, /* Number of elements */ + 1423, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -202823,7 +204533,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -202883,7 +204593,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -203428,7 +205138,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -203463,7 +205173,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -203568,6 +205278,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -203610,6 +205322,12 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -203625,7 +205343,9 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -203678,8 +205398,12 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -203710,6 +205434,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -203764,6 +205490,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -203774,6 +205502,10 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -203788,6 +205520,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -203904,14 +205638,14 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -203933,23 +205667,19 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -203959,7 +205689,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -203970,6 +205700,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -203982,7 +205714,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ - 1401, /* Number of elements */ + 1423, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -204238,7 +205970,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -204298,7 +206030,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -204843,7 +206575,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -204878,7 +206610,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -204983,6 +206715,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -205025,6 +206759,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -205040,7 +206780,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -205093,8 +206835,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -205125,6 +206871,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -205179,6 +206927,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -205189,6 +206939,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -205203,6 +206957,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -205319,14 +207075,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -205348,23 +207104,19 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -205374,7 +207126,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -205385,6 +207137,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -205397,7 +207151,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ - 1401, /* Number of elements */ + 1423, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -205653,7 +207407,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -205713,7 +207467,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -206258,7 +208012,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -206293,7 +208047,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -206398,6 +208152,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -206440,6 +208196,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -206455,7 +208217,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -206508,8 +208272,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -206540,6 +208308,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -206594,6 +208364,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -206604,6 +208376,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -206618,6 +208394,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -206734,14 +208512,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -206763,23 +208541,19 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -206789,7 +208563,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -206800,6 +208574,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -206847,7 +208623,7 @@ static const UV UNI_CARI_invlist[] = { /* for all charsets */ }; static const UV UNI_CCC__0_invlist[] = { /* for all charsets */ - 377, /* Number of elements */ + 385, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -207116,6 +208892,8 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -207188,6 +208966,8 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */ 0x11D46, 0x11D97, 0x11D98, + 0x11F41, + 0x11F43, 0x16AF0, 0x16AF5, 0x16B30, @@ -207218,12 +208998,16 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -207749,7 +209533,7 @@ static const UV UNI_CCC__84_invlist[] = { /* for all charsets */ }; static const UV UNI_CCC__9_invlist[] = { /* for all charsets */ - 111, /* Number of elements */ + 113, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -207863,7 +209647,9 @@ static const UV UNI_CCC__9_invlist[] = { /* for all charsets */ 0x11D44, 0x11D46, 0x11D97, - 0x11D98 + 0x11D98, + 0x11F41, + 0x11F43 }; static const UV UNI_CCC__91_invlist[] = { /* for all charsets */ @@ -207877,7 +209663,7 @@ static const UV UNI_CCC__91_invlist[] = { /* for all charsets */ }; static const UV UNI_CCC__A_invlist[] = { /* for all charsets */ - 255, /* Number of elements */ + 259, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -208128,12 +209914,16 @@ static const UV UNI_CCC__A_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EF, + 0x1E4F0, 0x1E944, 0x1E94A }; @@ -208155,7 +209945,7 @@ static const UV UNI_CCC__AL_invlist[] = { /* for all charsets */ }; static const UV UNI_CCC__AR_invlist[] = { /* for all charsets */ - 11, /* Number of elements */ + 13, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -208169,11 +209959,13 @@ static const UV UNI_CCC__AR_invlist[] = { /* for all charsets */ 0x1DF6, 0x1DF7, 0x302C, - 0x302D + 0x302D, + 0x1E4EC, + 0x1E4EE }; static const UV UNI_CCC__B_invlist[] = { /* for all charsets */ - 167, /* Number of elements */ + 171, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -208328,6 +210120,8 @@ static const UV UNI_CCC__B_invlist[] = { /* for all charsets */ 0x10A3B, 0x10AE6, 0x10AE7, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F48, 0x10F4B, @@ -208342,6 +210136,8 @@ static const UV UNI_CCC__B_invlist[] = { /* for all charsets */ 0x1D183, 0x1D18A, 0x1D18C, + 0x1E4EE, + 0x1E4EF, 0x1E8D0, 0x1E8D7 }; @@ -208549,7 +210345,7 @@ static const UV UNI_CF_invlist[] = { /* for ASCII/Latin1 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -208606,7 +210402,7 @@ static const UV UNI_CF_invlist[] = { /* for EBCDIC 1047 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -208663,7 +210459,7 @@ static const UV UNI_CF_invlist[] = { /* for EBCDIC 037 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -208739,7 +210535,7 @@ static const UV UNI_CHRS_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */ - 855, /* Number of elements */ + 875, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -208971,7 +210767,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -209348,6 +211144,8 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -209396,6 +211194,8 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -209518,8 +211318,18 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -209580,12 +211390,18 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E13E, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EB, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -209608,7 +211424,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */ - 853, /* Number of elements */ + 873, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -209838,7 +211654,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -210215,6 +212031,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -210263,6 +212081,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -210385,8 +212205,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -210447,12 +212277,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E13E, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EB, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -210475,7 +212311,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */ - 851, /* Number of elements */ + 871, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -210703,7 +212539,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -211080,6 +212916,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -211128,6 +212966,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -211250,8 +213090,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -211312,12 +213162,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E13E, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EB, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -211454,6 +213310,16 @@ static const UV UNI_CJKEXTG_invlist[] = { /* for all charsets */ 0x31350 }; +static const UV UNI_CJKEXTH_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x31350, + 0x323B0 +}; + static const UV UNI_CJKRADICALSSUP_invlist[] = { /* for all charsets */ 3, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -211485,7 +213351,7 @@ static const UV UNI_CJKSYMBOLS_invlist[] = { /* for all charsets */ }; static const UV UNI_CN_invlist[] = { /* for all charsets */ - 1396, /* Number of elements */ + 1414, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -211732,7 +213598,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -211792,7 +213658,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -212333,7 +214199,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -212368,7 +214234,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -212473,6 +214339,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -212515,6 +214383,12 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -212530,9 +214404,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -212585,8 +214457,12 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -212615,6 +214491,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -212669,6 +214547,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -212679,6 +214559,10 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -212693,6 +214577,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -212809,14 +214695,14 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -212838,23 +214724,19 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -212864,7 +214746,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -212875,6 +214757,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -217870,7 +219754,7 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */ - 1677, /* Number of elements */ + 1679, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -219459,6 +221343,8 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1E900, 0x1E922, 0x1EE00, @@ -219561,7 +221447,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */ - 1687, /* Number of elements */ + 1689, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -221160,6 +223046,8 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1E900, 0x1E922, 0x1EE00, @@ -221262,7 +223150,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */ - 1685, /* Number of elements */ + 1687, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -222859,6 +224747,8 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1E900, 0x1E922, 0x1EE00, @@ -234381,6 +236271,16 @@ static const UV UNI_CYRILLICEXTC_invlist[] = { /* for all charsets */ 0x1C90 }; +static const UV UNI_CYRILLICEXTD_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x1E030, + 0x1E090 +}; + static const UV UNI_CYRILLICSUP_invlist[] = { /* for all charsets */ 3, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -234392,7 +236292,7 @@ static const UV UNI_CYRILLICSUP_invlist[] = { /* for all charsets */ }; static const UV UNI_CYRL_invlist[] = { /* for all charsets */ - 19, /* Number of elements */ + 23, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -234414,7 +236314,11 @@ static const UV UNI_CYRL_invlist[] = { /* for all charsets */ 0xA640, 0xA6A0, 0xFE2E, - 0xFE30 + 0xFE30, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090 }; # if 'A' == 65 /* ASCII/Latin1 */ @@ -234622,7 +236526,7 @@ static const UV UNI_DEP_invlist[] = { /* for all charsets */ }; static const UV UNI_DEVA_invlist[] = { /* for all charsets */ - 15, /* Number of elements */ + 17, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -234640,7 +236544,9 @@ static const UV UNI_DEVA_invlist[] = { /* for all charsets */ 0xA830, 0xA83A, 0xA8E0, - 0xA900 + 0xA900, + 0x11B00, + 0x11B0A }; static const UV UNI_DEVANAGARIEXT_invlist[] = { /* for all charsets */ @@ -234653,6 +236559,16 @@ static const UV UNI_DEVANAGARIEXT_invlist[] = { /* for all charsets */ 0xA900 }; +static const UV UNI_DEVANAGARIEXTA_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x11B00, + 0x11B60 +}; + # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_DI_invlist[] = { /* for ASCII/Latin1 */ @@ -234800,7 +236716,7 @@ static const UV UNI_DI_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */ - 385, /* Number of elements */ + 391, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -235083,6 +236999,8 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */ 0x10AE7, 0x10D22, 0x10D28, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -235149,6 +237067,8 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */ 0x11D46, 0x11D97, 0x11D98, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -235177,6 +237097,8 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */ 0x1D18C, 0x1D1AA, 0x1D1AE, + 0x1E030, + 0x1E06E, 0x1E130, 0x1E137, 0x1E2AE, @@ -235199,7 +237121,7 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */ - 385, /* Number of elements */ + 391, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -235482,6 +237404,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */ 0x10AE7, 0x10D22, 0x10D28, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -235548,6 +237472,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */ 0x11D46, 0x11D97, 0x11D98, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -235576,6 +237502,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */ 0x1D18C, 0x1D1AA, 0x1D1AE, + 0x1E030, + 0x1E06E, 0x1E130, 0x1E137, 0x1E2AE, @@ -235598,7 +237526,7 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */ - 383, /* Number of elements */ + 389, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -235879,6 +237807,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */ 0x10AE7, 0x10D22, 0x10D28, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -235945,6 +237875,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */ 0x11D46, 0x11D97, 0x11D98, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -235973,6 +237905,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */ 0x1D18C, 0x1D1AA, 0x1D1AE, + 0x1E030, + 0x1E06E, 0x1E130, 0x1E137, 0x1E2AE, @@ -239058,7 +240992,7 @@ static const UV UNI_DT__NB_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */ - 383, /* Number of elements */ + 385, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -239359,6 +241293,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -239455,7 +241391,7 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */ - 389, /* Number of elements */ + 391, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -239762,6 +241698,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -239858,7 +241796,7 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */ - 387, /* Number of elements */ + 389, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -240163,6 +242101,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -240256,7 +242196,7 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */ - 793, /* Number of elements */ + 795, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -240965,6 +242905,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -241063,7 +243005,7 @@ static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */ - 791, /* Number of elements */ + 793, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -241770,6 +243712,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -241868,7 +243812,7 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 037 */ - 793, /* Number of elements */ + 795, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -242577,6 +244521,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -242710,7 +244656,7 @@ static const UV UNI_DT__SQR_invlist[] = { /* for all charsets */ }; static const UV UNI_DT__SUB_invlist[] = { /* for all charsets */ - 9, /* Number of elements */ + 11, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -242722,13 +244668,15 @@ static const UV UNI_DT__SUB_invlist[] = { /* for all charsets */ 0x2090, 0x209D, 0x2C7C, - 0x2C7D + 0x2C7D, + 0x1E051, + 0x1E06B }; # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_DT__SUP_invlist[] = { /* for ASCII/Latin1 */ - 59, /* Number of elements */ + 63, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -242789,6 +244737,10 @@ static const UV UNI_DT__SUP_invlist[] = { /* for ASCII/Latin1 */ 0x107B1, 0x107B2, 0x107BB, + 0x1E030, + 0x1E051, + 0x1E06B, + 0x1E06E, 0x1F16A, 0x1F16D }; @@ -242801,7 +244753,7 @@ static const UV UNI_DT__SUP_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 1047 */ - 61, /* Number of elements */ + 65, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -242864,6 +244816,10 @@ static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 1047 */ 0x107B1, 0x107B2, 0x107BB, + 0x1E030, + 0x1E051, + 0x1E06B, + 0x1E06E, 0x1F16A, 0x1F16D }; @@ -242876,7 +244832,7 @@ static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 037 */ - 61, /* Number of elements */ + 65, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -242939,6 +244895,10 @@ static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 037 */ 0x107B1, 0x107B2, 0x107BB, + 0x1E030, + 0x1E051, + 0x1E06B, + 0x1E06E, 0x1F16A, 0x1F16D }; @@ -244593,8 +246553,12 @@ static const UV UNI_EA__N_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -244665,7 +246629,7 @@ static const UV UNI_EA__N_invlist[] = { /* for ASCII/Latin1 */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E0, 0x1F6EB, 0x1F6ED, @@ -244682,23 +246646,19 @@ static const UV UNI_EA__N_invlist[] = { /* for ASCII/Latin1 */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x20000, 0x2FFFE, 0x30000, @@ -245168,8 +247128,12 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -245240,7 +247204,7 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 1047 */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E0, 0x1F6EB, 0x1F6ED, @@ -245257,23 +247221,19 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 1047 */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x20000, 0x2FFFE, 0x30000, @@ -245743,8 +247703,12 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -245815,7 +247779,7 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 037 */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E0, 0x1F6EB, 0x1F6ED, @@ -245832,23 +247796,19 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 037 */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x20000, 0x2FFFE, 0x30000, @@ -246127,8 +248087,12 @@ static const UV UNI_EA__W_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -246195,7 +248159,7 @@ static const UV UNI_EA__W_invlist[] = { /* for all charsets */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E0, 0x1F6EB, 0x1F6ED, @@ -246212,23 +248176,19 @@ static const UV UNI_EA__W_invlist[] = { /* for all charsets */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x20000, 0x2FFFE, 0x30000, @@ -246330,7 +248290,7 @@ static const UV UNI_EBASE_invlist[] = { /* for all charsets */ 0x1FAC3, 0x1FAC6, 0x1FAF0, - 0x1FAF7 + 0x1FAF9 }; # if 'A' == 65 /* ASCII/Latin1 */ @@ -246436,15 +248396,13 @@ static const UV UNI_ECOMP_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_EGYP_invlist[] = { /* for all charsets */ - 5, /* Number of elements */ + 3, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ 0x0, 0x13000, - 0x1342F, - 0x13430, - 0x13439 + 0x13456 }; static const UV UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS_invlist[] = { /* for all charsets */ @@ -246454,7 +248412,7 @@ static const UV UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS_invlist[] = { /* for all c 1 if it starts at the element beyond 0 */ 0x0, 0x13430, - 0x13440 + 0x13460 }; static const UV UNI_ELBA_invlist[] = { /* for all charsets */ @@ -246490,7 +248448,7 @@ static const UV UNI_EMOD_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */ - 307, /* Number of elements */ + 303, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -246763,7 +248721,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E6, 0x1F6E9, 0x1F6EA, @@ -246784,23 +248742,19 @@ static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7 + 0x1FAF9 }; # endif /* ASCII/Latin1 */ @@ -246811,7 +248765,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */ - 307, /* Number of elements */ + 303, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -247084,7 +249038,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E6, 0x1F6E9, 0x1F6EA, @@ -247105,23 +249059,19 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7 + 0x1FAF9 }; # endif /* EBCDIC 1047 */ @@ -247132,7 +249082,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 037 */ - 307, /* Number of elements */ + 303, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -247405,7 +249355,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 037 */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E6, 0x1F6E9, 0x1F6EA, @@ -247426,23 +249376,19 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 037 */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7 + 0x1FAF9 }; # endif /* EBCDIC 037 */ @@ -247498,7 +249444,7 @@ static const UV UNI_ENCLOSEDIDEOGRAPHICSUP_invlist[] = { /* for all charsets */ }; static const UV UNI_EPRES_invlist[] = { /* for all charsets */ - 167, /* Number of elements */ + 163, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -247635,7 +249581,7 @@ static const UV UNI_EPRES_invlist[] = { /* for all charsets */ 0x1F6D3, 0x1F6D5, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6E0, 0x1F6EB, 0x1F6ED, @@ -247652,23 +249598,19 @@ static const UV UNI_EPRES_invlist[] = { /* for all charsets */ 0x1F947, 0x1FA00, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7 + 0x1FAF9 }; static const UV UNI_ETHI_invlist[] = { /* for all charsets */ @@ -248575,7 +250517,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for ASCII/Latin1 */ 0xFFF0, 0xFFFC, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -248627,7 +250569,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for EBCDIC 1047 */ 0xFFF0, 0xFFFC, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -248679,7 +250621,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for EBCDIC 037 */ 0xFFF0, 0xFFFC, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -248695,7 +250637,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */ - 709, /* Number of elements */ + 729, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -248905,7 +250847,7 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -249162,6 +251104,8 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -249206,6 +251150,8 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -249340,6 +251286,18 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -249392,12 +251350,16 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -249423,7 +251385,7 @@ static const UV UNI_GCB__L_invlist[] = { /* for all charsets */ }; static const UV UNI_GCB__PP_invlist[] = { /* for all charsets */ - 29, /* Number of elements */ + 31, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -249455,11 +251417,13 @@ static const UV UNI_GCB__PP_invlist[] = { /* for all charsets */ 0x11A84, 0x11A8A, 0x11D46, - 0x11D47 + 0x11D47, + 0x11F02, + 0x11F03 }; static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */ - 321, /* Number of elements */ + 331, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -249526,6 +251490,8 @@ static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */ 0xCC9, 0xCCA, 0xCCC, + 0xCF3, + 0xCF4, 0xD02, 0xD04, 0xD3F, @@ -249776,6 +251742,14 @@ static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */ 0x11D97, 0x11EF5, 0x11EF7, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F36, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, 0x16F51, 0x16F88, 0x16FF0, @@ -249813,7 +251787,7 @@ static const UV UNI_GCB__V_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ - 640, /* Number of elements */ + 658, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -249989,6 +251963,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -250026,7 +252002,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ 0xEB3, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -250253,6 +252229,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -250297,6 +252275,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -250385,8 +252365,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -250441,12 +252429,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -250467,7 +252459,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ - 640, /* Number of elements */ + 658, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -250643,6 +252635,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -250680,7 +252674,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ 0xEB3, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -250907,6 +252901,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -250951,6 +252947,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -251039,8 +253037,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -251095,12 +253101,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -251121,7 +253131,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */ - 640, /* Number of elements */ + 658, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -251297,6 +253307,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -251334,7 +253346,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */ 0xEB3, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -251561,6 +253573,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -251605,6 +253619,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -251693,8 +253709,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -251749,12 +253773,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -251990,7 +254018,7 @@ static const UV UNI_GRAN_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ - 1723, /* Number of elements */ + 1751, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -252294,7 +254322,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD02, 0xD0D, 0xD0E, @@ -253131,6 +255159,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x11236, 0x11238, 0x1123E, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -253303,6 +255333,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -253349,6 +255381,16 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x11EF3, 0x11EF5, 0x11EF9, + 0x11F02, + 0x11F11, + 0x11F12, + 0x11F36, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -253364,7 +255406,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -253419,8 +255463,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -253459,6 +255507,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -253517,6 +255567,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x1DA8C, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -253533,6 +255587,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -253651,14 +255709,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -253680,23 +255738,19 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -253706,7 +255760,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -253716,7 +255770,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -253727,7 +255783,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ - 1723, /* Number of elements */ + 1751, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -254031,7 +256087,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD02, 0xD0D, 0xD0E, @@ -254868,6 +256924,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x11236, 0x11238, 0x1123E, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -255040,6 +257098,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -255086,6 +257146,16 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x11EF3, 0x11EF5, 0x11EF9, + 0x11F02, + 0x11F11, + 0x11F12, + 0x11F36, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -255101,7 +257171,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -255156,8 +257228,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -255196,6 +257272,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -255254,6 +257332,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x1DA8C, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -255270,6 +257352,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -255388,14 +257474,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -255417,23 +257503,19 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -255443,7 +257525,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -255453,7 +257535,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -255464,7 +257548,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ - 1723, /* Number of elements */ + 1751, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -255768,7 +257852,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD02, 0xD0D, 0xD0E, @@ -256605,6 +258689,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x11236, 0x11238, 0x1123E, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -256777,6 +258863,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -256823,6 +258911,16 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x11EF3, 0x11EF5, 0x11EF9, + 0x11F02, + 0x11F11, + 0x11F12, + 0x11F36, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -256838,7 +258936,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -256893,8 +258993,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -256933,6 +259037,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -256991,6 +259097,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x1DA8C, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -257007,6 +259117,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4EC, + 0x1E4F0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -257125,14 +259239,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -257154,23 +259268,19 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -257180,7 +259290,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -257190,7 +259300,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -257290,7 +259402,7 @@ static const UV UNI_GREK_invlist[] = { /* for all charsets */ }; static const UV UNI_GREXT_invlist[] = { /* for all charsets */ - 707, /* Number of elements */ + 727, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -257500,7 +259612,7 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -257757,6 +259869,8 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -257801,6 +259915,8 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -257935,6 +260051,18 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -257987,12 +260115,16 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -258112,7 +260244,7 @@ static const UV UNI_HALFMARKS_invlist[] = { /* for all charsets */ }; static const UV UNI_HAN_invlist[] = { /* for all charsets */ - 75, /* Number of elements */ + 77, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -258180,7 +260312,7 @@ static const UV UNI_HAN_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -258190,7 +260322,9 @@ static const UV UNI_HAN_invlist[] = { /* for all charsets */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; static const UV UNI_HANG_invlist[] = { /* for all charsets */ @@ -258314,7 +260448,7 @@ static const UV UNI_HIGHSURROGATES_invlist[] = { /* for all charsets */ }; static const UV UNI_HIRA_invlist[] = { /* for all charsets */ - 33, /* Number of elements */ + 35, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -258347,6 +260481,8 @@ static const UV UNI_HIRA_invlist[] = { /* for all charsets */ 0xFFA0, 0x1B001, 0x1B120, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, 0x1F200, @@ -258534,7 +260670,7 @@ static const UV UNI_HYPHEN_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ - 1513, /* Number of elements */ + 1537, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -258856,7 +260992,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -258922,7 +261058,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -259547,7 +261683,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -259594,7 +261730,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -259755,6 +261891,14 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -259766,7 +261910,9 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -259821,8 +261967,12 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -259929,6 +262079,8 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -259939,6 +262091,10 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -259951,6 +262107,8 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -260038,7 +262196,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -260049,6 +262207,8 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -260061,7 +262221,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ - 1537, /* Number of elements */ + 1561, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -260407,7 +262567,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -260473,7 +262633,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -261098,7 +263258,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -261145,7 +263305,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -261306,6 +263466,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -261317,7 +263485,9 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -261372,8 +263542,12 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -261480,6 +263654,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -261490,6 +263666,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -261502,6 +263682,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -261589,7 +263771,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -261600,6 +263782,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -261612,7 +263796,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ - 1533, /* Number of elements */ + 1557, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -261954,7 +264138,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -262020,7 +264204,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -262645,7 +264829,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -262692,7 +264876,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -262853,6 +265037,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -262864,7 +265056,9 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -262919,8 +265113,12 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -263027,6 +265225,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -263037,6 +265237,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -263049,6 +265253,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -263136,7 +265342,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -263147,6 +265353,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -263156,7 +265364,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 */ - 777, /* Number of elements */ + 785, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -263518,7 +265726,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -263596,7 +265804,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -263793,8 +266001,6 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 0x1FFB, 0x1FFC, 0x1FFD, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -263911,12 +266117,20 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -263928,7 +266142,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -263936,7 +266150,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -263947,7 +266163,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 */ - 811, /* Number of elements */ + 819, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -264343,7 +266559,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -264421,7 +266637,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -264618,8 +266834,6 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 0x1FFB, 0x1FFC, 0x1FFD, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -264736,12 +266950,20 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -264753,7 +266975,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -264761,7 +266983,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -264772,7 +266996,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 */ - 807, /* Number of elements */ + 815, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -265164,7 +267388,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 * 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -265242,7 +267466,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 * 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -265439,8 +267663,6 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 * 0x1FFB, 0x1FFC, 0x1FFD, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -265557,12 +267779,20 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 * 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -265574,7 +267804,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 * 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -265582,7 +267812,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 * 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -265590,7 +267822,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 * # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Latin1 */ - 777, /* Number of elements */ + 785, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -265952,7 +268184,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -266030,7 +268262,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -266227,8 +268459,6 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat 0x1FFB, 0x1FFC, 0x1FFD, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -266345,12 +268575,20 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -266362,7 +268600,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -266370,7 +268608,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -266381,7 +268621,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 1047 */ - 811, /* Number of elements */ + 819, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -266777,7 +269017,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -266855,7 +269095,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -267052,8 +269292,6 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10 0x1FFB, 0x1FFC, 0x1FFD, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -267170,12 +269408,20 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -267187,7 +269433,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -267195,7 +269441,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -267206,7 +269454,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10 && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 037 */ - 807, /* Number of elements */ + 815, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -267598,7 +269846,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -267676,7 +269924,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -267873,8 +270121,6 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03 0x1FFB, 0x1FFC, 0x1FFD, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -267991,12 +270237,20 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -268008,7 +270262,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -268016,7 +270270,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -268024,7 +270280,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03 # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for ASCII/Latin1 */ - 39, /* Number of elements */ + 37, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -268042,8 +270298,6 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for ASCII 0x180B, 0x1810, 0x200B, - 0x200C, - 0x200E, 0x2010, 0x202A, 0x202F, @@ -268077,7 +270331,7 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for ASCII && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDIC 1047 */ - 39, /* Number of elements */ + 37, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -268095,8 +270349,6 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI 0x180B, 0x1810, 0x200B, - 0x200C, - 0x200E, 0x2010, 0x202A, 0x202F, @@ -268130,7 +270382,7 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDIC 037 */ - 39, /* Number of elements */ + 37, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -268148,8 +270400,6 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI 0x180B, 0x1810, 0x200B, - 0x200C, - 0x200E, 0x2010, 0x202A, 0x202F, @@ -268178,7 +270428,7 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI # endif /* EBCDIC 037 */ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets */ - 443, /* Number of elements */ + 449, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -268408,7 +270658,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -268541,6 +270791,12 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets 0x11D5A, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x12000, 0x1239A, 0x12400, @@ -268552,9 +270808,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16A40, @@ -268621,6 +270875,8 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets 0x1E02B, 0x1E290, 0x1E2AF, + 0x1E4D0, + 0x1E4FA, 0x1E800, 0x1E8C5, 0x1E8C7, @@ -268630,7 +270886,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for ASCII/Latin1 */ - 31, /* Number of elements */ + 29, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -268653,8 +270909,6 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for ASCII/Latin1 0x6FF, 0xF0B, 0xF0C, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -268675,7 +270929,7 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for ASCII/Latin1 && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 1047 */ - 33, /* Number of elements */ + 31, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -268700,8 +270954,6 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 1047 0x6FF, 0xF0B, 0xF0C, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -268722,7 +270974,7 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 1047 && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 037 */ - 33, /* Number of elements */ + 31, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -268747,8 +270999,6 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 037 * 0x6FF, 0xF0B, 0xF0C, - 0x200C, - 0x200E, 0x2010, 0x2011, 0x2019, @@ -268948,7 +271198,7 @@ static const UV UNI_IDENTIFIERTYPE__LIMITEDUSE_invlist[] = { /* for all charset # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Latin1 */ - 1399, /* Number of elements */ + 1417, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -269202,7 +271452,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -269262,7 +271512,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -269803,7 +272053,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -269838,7 +272088,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -269943,6 +272193,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -269985,6 +272237,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -270000,9 +272258,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -270055,8 +272311,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -270085,6 +272345,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -270139,6 +272401,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -270149,6 +272413,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -270163,6 +272431,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -270279,14 +272549,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -270308,23 +272578,19 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -270334,7 +272600,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -270345,6 +272611,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -270361,7 +272629,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 1047 */ - 1403, /* Number of elements */ + 1421, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -270619,7 +272887,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -270679,7 +272947,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -271220,7 +273488,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -271255,7 +273523,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -271360,6 +273628,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -271402,6 +273672,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -271417,9 +273693,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -271472,8 +273746,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -271502,6 +273780,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -271556,6 +273836,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -271566,6 +273848,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -271580,6 +273866,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -271696,14 +273984,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -271725,23 +274013,19 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -271751,7 +274035,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -271762,6 +274046,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -271778,7 +274064,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10 && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 037 */ - 1403, /* Number of elements */ + 1421, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -272036,7 +274322,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -272096,7 +274382,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -272637,7 +274923,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -272672,7 +274958,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -272777,6 +275063,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -272819,6 +275107,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -272834,9 +275128,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -272889,8 +275181,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -272919,6 +275215,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -272973,6 +275271,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -272983,6 +275283,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -272997,6 +275301,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -273113,14 +275419,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -273142,23 +275448,19 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -273168,7 +275470,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -273179,6 +275481,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -273192,7 +275496,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03 # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 */ - 511, /* Number of elements */ + 513, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -273619,6 +275923,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 * 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -273717,7 +276023,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 * && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */ - 517, /* Number of elements */ + 519, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -274150,6 +276456,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -274248,7 +276556,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */ - 515, /* Number of elements */ + 517, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -274679,6 +276987,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -274774,7 +277084,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ - 707, /* Number of elements */ + 709, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -275319,6 +277629,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C5A, @@ -275327,6 +277639,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FC0, 0x11FF2, 0x11FFF, @@ -275336,7 +277650,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ 0x12FF1, 0x12FF3, 0x13430, - 0x13439, + 0x13440, 0x16A6E, 0x16A70, 0x16AF5, @@ -275377,6 +277691,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -275435,14 +277751,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -275464,23 +277780,19 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -275495,7 +277807,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ - 721, /* Number of elements */ + 723, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -276054,6 +278366,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C5A, @@ -276062,6 +278376,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FC0, 0x11FF2, 0x11FFF, @@ -276071,7 +278387,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ 0x12FF1, 0x12FF3, 0x13430, - 0x13439, + 0x13440, 0x16A6E, 0x16A70, 0x16AF5, @@ -276112,6 +278428,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -276170,14 +278488,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -276199,23 +278517,19 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -276230,7 +278544,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */ - 719, /* Number of elements */ + 721, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -276787,6 +279101,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C5A, @@ -276795,6 +279111,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */ 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FC0, 0x11FF2, 0x11FFF, @@ -276804,7 +279122,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */ 0x12FF1, 0x12FF3, 0x13430, - 0x13439, + 0x13440, 0x16A6E, 0x16A70, 0x16AF5, @@ -276845,6 +279163,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -276903,14 +279223,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -276932,23 +279252,19 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -277176,7 +279492,7 @@ static const UV UNI_IDENTIFIERTYPE__OBSOLETE_invlist[] = { /* for all charsets # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Latin1 */ - 761, /* Number of elements */ + 771, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -277530,7 +279846,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -277608,7 +279924,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -277915,12 +280231,20 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -277932,7 +280256,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -277940,7 +280264,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -277951,7 +280277,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 1047 */ - 791, /* Number of elements */ + 801, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -278335,7 +280661,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -278413,7 +280739,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -278720,12 +281046,20 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -278737,7 +281071,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -278745,7 +281079,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -278756,7 +281092,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104 && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037 */ - 787, /* Number of elements */ + 797, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -279136,7 +281472,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD01, 0xD02, @@ -279214,7 +281550,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDE, @@ -279521,12 +281857,20 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037 0x16FF2, 0x1B11F, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E08F, + 0x1E090, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -279538,7 +281882,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -279546,7 +281890,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -279758,7 +282104,7 @@ static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets }; static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charsets */ - 165, /* Number of elements */ + 167, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -279913,6 +282259,8 @@ static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charse 0xFE30, 0x10780, 0x10781, + 0x10EFD, + 0x10F00, 0x16A40, 0x16A5F, 0x16A60, @@ -279930,7 +282278,7 @@ static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charse }; static const UV UNI_IDEO_invlist[] = { /* for all charsets */ - 39, /* Number of elements */ + 41, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -279962,7 +282310,7 @@ static const UV UNI_IDEO_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -279972,7 +282320,9 @@ static const UV UNI_IDEO_invlist[] = { /* for all charsets */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; static const UV UNI_IDEOGRAPHICSYMBOLS_invlist[] = { /* for all charsets */ @@ -279988,7 +282338,7 @@ static const UV UNI_IDEOGRAPHICSYMBOLS_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ - 1297, /* Number of elements */ + 1319, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -280929,6 +283279,8 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -281053,6 +283405,12 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -281064,7 +283422,9 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -281109,8 +283469,12 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -281185,6 +283549,10 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -281195,6 +283563,8 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -281278,7 +283648,7 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -281288,7 +283658,9 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -281299,7 +283671,7 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ - 1323, /* Number of elements */ + 1345, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -282266,6 +284638,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -282390,6 +284764,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -282401,7 +284781,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -282446,8 +284828,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -282522,6 +284908,10 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -282532,6 +284922,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -282615,7 +285007,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -282625,7 +285017,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -282636,7 +285030,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ - 1319, /* Number of elements */ + 1341, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -283599,6 +285993,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -283723,6 +286119,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -283734,7 +286136,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -283779,8 +286183,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -283855,6 +286263,10 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -283865,6 +286277,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -283948,7 +286362,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -283958,7 +286372,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -287137,7 +289553,1362 @@ static const UV UNI_IN__11_invlist[] = { /* for all charsets */ 0x1F100, 0x1F10D, 0x1F110, - 0x1F16C, + 0x1F16C, + 0x1F170, + 0x1F1AD, + 0x1F1E6, + 0x1F203, + 0x1F210, + 0x1F23C, + 0x1F240, + 0x1F249, + 0x1F250, + 0x1F252, + 0x1F260, + 0x1F266, + 0x1F300, + 0x1F6D5, + 0x1F6E0, + 0x1F6ED, + 0x1F6F0, + 0x1F6FA, + 0x1F700, + 0x1F774, + 0x1F780, + 0x1F7D9, + 0x1F800, + 0x1F80C, + 0x1F810, + 0x1F848, + 0x1F850, + 0x1F85A, + 0x1F860, + 0x1F888, + 0x1F890, + 0x1F8AE, + 0x1F900, + 0x1F90C, + 0x1F910, + 0x1F93F, + 0x1F940, + 0x1F971, + 0x1F973, + 0x1F977, + 0x1F97A, + 0x1F97B, + 0x1F97C, + 0x1F9A3, + 0x1F9B0, + 0x1F9BA, + 0x1F9C0, + 0x1F9C3, + 0x1F9D0, + 0x1FA00, + 0x1FA60, + 0x1FA6E, + 0x1FFFE, + 0x2A6D7, + 0x2A700, + 0x2B735, + 0x2B740, + 0x2B81E, + 0x2B820, + 0x2CEA2, + 0x2CEB0, + 0x2EBE1, + 0x2F800, + 0x2FA1E, + 0x2FFFE, + 0x30000, + 0x3FFFE, + 0x40000, + 0x4FFFE, + 0x50000, + 0x5FFFE, + 0x60000, + 0x6FFFE, + 0x70000, + 0x7FFFE, + 0x80000, + 0x8FFFE, + 0x90000, + 0x9FFFE, + 0xA0000, + 0xAFFFE, + 0xB0000, + 0xBFFFE, + 0xC0000, + 0xCFFFE, + 0xD0000, + 0xDFFFE, + 0xE0000, + 0xE0001, + 0xE0002, + 0xE0020, + 0xE0080, + 0xE0100, + 0xE01F0, + 0xEFFFE, + 0x110000 +}; + +static const UV UNI_IN__12_invlist[] = { /* for all charsets */ + 1354, /* Number of elements */ + 148565664, /* Version and data structure type */ + 0, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x378, + 0x37A, + 0x380, + 0x384, + 0x38B, + 0x38C, + 0x38D, + 0x38E, + 0x3A2, + 0x3A3, + 0x530, + 0x531, + 0x557, + 0x559, + 0x58B, + 0x58D, + 0x590, + 0x591, + 0x5C8, + 0x5D0, + 0x5EB, + 0x5EF, + 0x5F5, + 0x600, + 0x61D, + 0x61E, + 0x70E, + 0x70F, + 0x74B, + 0x74D, + 0x7B2, + 0x7C0, + 0x7FB, + 0x7FD, + 0x82E, + 0x830, + 0x83F, + 0x840, + 0x85C, + 0x85E, + 0x85F, + 0x860, + 0x86B, + 0x8A0, + 0x8B5, + 0x8B6, + 0x8BE, + 0x8D3, + 0x984, + 0x985, + 0x98D, + 0x98F, + 0x991, + 0x993, + 0x9A9, + 0x9AA, + 0x9B1, + 0x9B2, + 0x9B3, + 0x9B6, + 0x9BA, + 0x9BC, + 0x9C5, + 0x9C7, + 0x9C9, + 0x9CB, + 0x9CF, + 0x9D7, + 0x9D8, + 0x9DC, + 0x9DE, + 0x9DF, + 0x9E4, + 0x9E6, + 0x9FF, + 0xA01, + 0xA04, + 0xA05, + 0xA0B, + 0xA0F, + 0xA11, + 0xA13, + 0xA29, + 0xA2A, + 0xA31, + 0xA32, + 0xA34, + 0xA35, + 0xA37, + 0xA38, + 0xA3A, + 0xA3C, + 0xA3D, + 0xA3E, + 0xA43, + 0xA47, + 0xA49, + 0xA4B, + 0xA4E, + 0xA51, + 0xA52, + 0xA59, + 0xA5D, + 0xA5E, + 0xA5F, + 0xA66, + 0xA77, + 0xA81, + 0xA84, + 0xA85, + 0xA8E, + 0xA8F, + 0xA92, + 0xA93, + 0xAA9, + 0xAAA, + 0xAB1, + 0xAB2, + 0xAB4, + 0xAB5, + 0xABA, + 0xABC, + 0xAC6, + 0xAC7, + 0xACA, + 0xACB, + 0xACE, + 0xAD0, + 0xAD1, + 0xAE0, + 0xAE4, + 0xAE6, + 0xAF2, + 0xAF9, + 0xB00, + 0xB01, + 0xB04, + 0xB05, + 0xB0D, + 0xB0F, + 0xB11, + 0xB13, + 0xB29, + 0xB2A, + 0xB31, + 0xB32, + 0xB34, + 0xB35, + 0xB3A, + 0xB3C, + 0xB45, + 0xB47, + 0xB49, + 0xB4B, + 0xB4E, + 0xB56, + 0xB58, + 0xB5C, + 0xB5E, + 0xB5F, + 0xB64, + 0xB66, + 0xB78, + 0xB82, + 0xB84, + 0xB85, + 0xB8B, + 0xB8E, + 0xB91, + 0xB92, + 0xB96, + 0xB99, + 0xB9B, + 0xB9C, + 0xB9D, + 0xB9E, + 0xBA0, + 0xBA3, + 0xBA5, + 0xBA8, + 0xBAB, + 0xBAE, + 0xBBA, + 0xBBE, + 0xBC3, + 0xBC6, + 0xBC9, + 0xBCA, + 0xBCE, + 0xBD0, + 0xBD1, + 0xBD7, + 0xBD8, + 0xBE6, + 0xBFB, + 0xC00, + 0xC0D, + 0xC0E, + 0xC11, + 0xC12, + 0xC29, + 0xC2A, + 0xC3A, + 0xC3D, + 0xC45, + 0xC46, + 0xC49, + 0xC4A, + 0xC4E, + 0xC55, + 0xC57, + 0xC58, + 0xC5B, + 0xC60, + 0xC64, + 0xC66, + 0xC70, + 0xC77, + 0xC8D, + 0xC8E, + 0xC91, + 0xC92, + 0xCA9, + 0xCAA, + 0xCB4, + 0xCB5, + 0xCBA, + 0xCBC, + 0xCC5, + 0xCC6, + 0xCC9, + 0xCCA, + 0xCCE, + 0xCD5, + 0xCD7, + 0xCDE, + 0xCDF, + 0xCE0, + 0xCE4, + 0xCE6, + 0xCF0, + 0xCF1, + 0xCF3, + 0xD00, + 0xD04, + 0xD05, + 0xD0D, + 0xD0E, + 0xD11, + 0xD12, + 0xD45, + 0xD46, + 0xD49, + 0xD4A, + 0xD50, + 0xD54, + 0xD64, + 0xD66, + 0xD80, + 0xD82, + 0xD84, + 0xD85, + 0xD97, + 0xD9A, + 0xDB2, + 0xDB3, + 0xDBC, + 0xDBD, + 0xDBE, + 0xDC0, + 0xDC7, + 0xDCA, + 0xDCB, + 0xDCF, + 0xDD5, + 0xDD6, + 0xDD7, + 0xDD8, + 0xDE0, + 0xDE6, + 0xDF0, + 0xDF2, + 0xDF5, + 0xE01, + 0xE3B, + 0xE3F, + 0xE5C, + 0xE81, + 0xE83, + 0xE84, + 0xE85, + 0xE86, + 0xE8B, + 0xE8C, + 0xEA4, + 0xEA5, + 0xEA6, + 0xEA7, + 0xEBE, + 0xEC0, + 0xEC5, + 0xEC6, + 0xEC7, + 0xEC8, + 0xECE, + 0xED0, + 0xEDA, + 0xEDC, + 0xEE0, + 0xF00, + 0xF48, + 0xF49, + 0xF6D, + 0xF71, + 0xF98, + 0xF99, + 0xFBD, + 0xFBE, + 0xFCD, + 0xFCE, + 0xFDB, + 0x1000, + 0x10C6, + 0x10C7, + 0x10C8, + 0x10CD, + 0x10CE, + 0x10D0, + 0x1249, + 0x124A, + 0x124E, + 0x1250, + 0x1257, + 0x1258, + 0x1259, + 0x125A, + 0x125E, + 0x1260, + 0x1289, + 0x128A, + 0x128E, + 0x1290, + 0x12B1, + 0x12B2, + 0x12B6, + 0x12B8, + 0x12BF, + 0x12C0, + 0x12C1, + 0x12C2, + 0x12C6, + 0x12C8, + 0x12D7, + 0x12D8, + 0x1311, + 0x1312, + 0x1316, + 0x1318, + 0x135B, + 0x135D, + 0x137D, + 0x1380, + 0x139A, + 0x13A0, + 0x13F6, + 0x13F8, + 0x13FE, + 0x1400, + 0x169D, + 0x16A0, + 0x16F9, + 0x1700, + 0x170D, + 0x170E, + 0x1715, + 0x1720, + 0x1737, + 0x1740, + 0x1754, + 0x1760, + 0x176D, + 0x176E, + 0x1771, + 0x1772, + 0x1774, + 0x1780, + 0x17DE, + 0x17E0, + 0x17EA, + 0x17F0, + 0x17FA, + 0x1800, + 0x180F, + 0x1810, + 0x181A, + 0x1820, + 0x1879, + 0x1880, + 0x18AB, + 0x18B0, + 0x18F6, + 0x1900, + 0x191F, + 0x1920, + 0x192C, + 0x1930, + 0x193C, + 0x1940, + 0x1941, + 0x1944, + 0x196E, + 0x1970, + 0x1975, + 0x1980, + 0x19AC, + 0x19B0, + 0x19CA, + 0x19D0, + 0x19DB, + 0x19DE, + 0x1A1C, + 0x1A1E, + 0x1A5F, + 0x1A60, + 0x1A7D, + 0x1A7F, + 0x1A8A, + 0x1A90, + 0x1A9A, + 0x1AA0, + 0x1AAE, + 0x1AB0, + 0x1ABF, + 0x1B00, + 0x1B4C, + 0x1B50, + 0x1B7D, + 0x1B80, + 0x1BF4, + 0x1BFC, + 0x1C38, + 0x1C3B, + 0x1C4A, + 0x1C4D, + 0x1C89, + 0x1C90, + 0x1CBB, + 0x1CBD, + 0x1CC8, + 0x1CD0, + 0x1CFB, + 0x1D00, + 0x1DFA, + 0x1DFB, + 0x1F16, + 0x1F18, + 0x1F1E, + 0x1F20, + 0x1F46, + 0x1F48, + 0x1F4E, + 0x1F50, + 0x1F58, + 0x1F59, + 0x1F5A, + 0x1F5B, + 0x1F5C, + 0x1F5D, + 0x1F5E, + 0x1F5F, + 0x1F7E, + 0x1F80, + 0x1FB5, + 0x1FB6, + 0x1FC5, + 0x1FC6, + 0x1FD4, + 0x1FD6, + 0x1FDC, + 0x1FDD, + 0x1FF0, + 0x1FF2, + 0x1FF5, + 0x1FF6, + 0x1FFF, + 0x2000, + 0x2065, + 0x2066, + 0x2072, + 0x2074, + 0x208F, + 0x2090, + 0x209D, + 0x20A0, + 0x20C0, + 0x20D0, + 0x20F1, + 0x2100, + 0x218C, + 0x2190, + 0x2427, + 0x2440, + 0x244B, + 0x2460, + 0x2B74, + 0x2B76, + 0x2B96, + 0x2B98, + 0x2C2F, + 0x2C30, + 0x2C5F, + 0x2C60, + 0x2CF4, + 0x2CF9, + 0x2D26, + 0x2D27, + 0x2D28, + 0x2D2D, + 0x2D2E, + 0x2D30, + 0x2D68, + 0x2D6F, + 0x2D71, + 0x2D7F, + 0x2D97, + 0x2DA0, + 0x2DA7, + 0x2DA8, + 0x2DAF, + 0x2DB0, + 0x2DB7, + 0x2DB8, + 0x2DBF, + 0x2DC0, + 0x2DC7, + 0x2DC8, + 0x2DCF, + 0x2DD0, + 0x2DD7, + 0x2DD8, + 0x2DDF, + 0x2DE0, + 0x2E50, + 0x2E80, + 0x2E9A, + 0x2E9B, + 0x2EF4, + 0x2F00, + 0x2FD6, + 0x2FF0, + 0x2FFC, + 0x3000, + 0x3040, + 0x3041, + 0x3097, + 0x3099, + 0x3100, + 0x3105, + 0x3130, + 0x3131, + 0x318F, + 0x3190, + 0x31BB, + 0x31C0, + 0x31E4, + 0x31F0, + 0x321F, + 0x3220, + 0x32FF, + 0x3300, + 0x4DB6, + 0x4DC0, + 0x9FF0, + 0xA000, + 0xA48D, + 0xA490, + 0xA4C7, + 0xA4D0, + 0xA62C, + 0xA640, + 0xA6F8, + 0xA700, + 0xA7C0, + 0xA7C2, + 0xA7C7, + 0xA7F7, + 0xA82C, + 0xA830, + 0xA83A, + 0xA840, + 0xA878, + 0xA880, + 0xA8C6, + 0xA8CE, + 0xA8DA, + 0xA8E0, + 0xA954, + 0xA95F, + 0xA97D, + 0xA980, + 0xA9CE, + 0xA9CF, + 0xA9DA, + 0xA9DE, + 0xA9FF, + 0xAA00, + 0xAA37, + 0xAA40, + 0xAA4E, + 0xAA50, + 0xAA5A, + 0xAA5C, + 0xAAC3, + 0xAADB, + 0xAAF7, + 0xAB01, + 0xAB07, + 0xAB09, + 0xAB0F, + 0xAB11, + 0xAB17, + 0xAB20, + 0xAB27, + 0xAB28, + 0xAB2F, + 0xAB30, + 0xAB68, + 0xAB70, + 0xABEE, + 0xABF0, + 0xABFA, + 0xAC00, + 0xD7A4, + 0xD7B0, + 0xD7C7, + 0xD7CB, + 0xD7FC, + 0xD800, + 0xFA6E, + 0xFA70, + 0xFADA, + 0xFB00, + 0xFB07, + 0xFB13, + 0xFB18, + 0xFB1D, + 0xFB37, + 0xFB38, + 0xFB3D, + 0xFB3E, + 0xFB3F, + 0xFB40, + 0xFB42, + 0xFB43, + 0xFB45, + 0xFB46, + 0xFBC2, + 0xFBD3, + 0xFD40, + 0xFD50, + 0xFD90, + 0xFD92, + 0xFDC8, + 0xFDD0, + 0xFDFE, + 0xFE00, + 0xFE1A, + 0xFE20, + 0xFE53, + 0xFE54, + 0xFE67, + 0xFE68, + 0xFE6C, + 0xFE70, + 0xFE75, + 0xFE76, + 0xFEFD, + 0xFEFF, + 0xFF00, + 0xFF01, + 0xFFBF, + 0xFFC2, + 0xFFC8, + 0xFFCA, + 0xFFD0, + 0xFFD2, + 0xFFD8, + 0xFFDA, + 0xFFDD, + 0xFFE0, + 0xFFE7, + 0xFFE8, + 0xFFEF, + 0xFFF9, + 0x1000C, + 0x1000D, + 0x10027, + 0x10028, + 0x1003B, + 0x1003C, + 0x1003E, + 0x1003F, + 0x1004E, + 0x10050, + 0x1005E, + 0x10080, + 0x100FB, + 0x10100, + 0x10103, + 0x10107, + 0x10134, + 0x10137, + 0x1018F, + 0x10190, + 0x1019C, + 0x101A0, + 0x101A1, + 0x101D0, + 0x101FE, + 0x10280, + 0x1029D, + 0x102A0, + 0x102D1, + 0x102E0, + 0x102FC, + 0x10300, + 0x10324, + 0x1032D, + 0x1034B, + 0x10350, + 0x1037B, + 0x10380, + 0x1039E, + 0x1039F, + 0x103C4, + 0x103C8, + 0x103D6, + 0x10400, + 0x1049E, + 0x104A0, + 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, + 0x10500, + 0x10528, + 0x10530, + 0x10564, + 0x1056F, + 0x10570, + 0x10600, + 0x10737, + 0x10740, + 0x10756, + 0x10760, + 0x10768, + 0x10800, + 0x10806, + 0x10808, + 0x10809, + 0x1080A, + 0x10836, + 0x10837, + 0x10839, + 0x1083C, + 0x1083D, + 0x1083F, + 0x10856, + 0x10857, + 0x1089F, + 0x108A7, + 0x108B0, + 0x108E0, + 0x108F3, + 0x108F4, + 0x108F6, + 0x108FB, + 0x1091C, + 0x1091F, + 0x1093A, + 0x1093F, + 0x10940, + 0x10980, + 0x109B8, + 0x109BC, + 0x109D0, + 0x109D2, + 0x10A04, + 0x10A05, + 0x10A07, + 0x10A0C, + 0x10A14, + 0x10A15, + 0x10A18, + 0x10A19, + 0x10A36, + 0x10A38, + 0x10A3B, + 0x10A3F, + 0x10A49, + 0x10A50, + 0x10A59, + 0x10A60, + 0x10AA0, + 0x10AC0, + 0x10AE7, + 0x10AEB, + 0x10AF7, + 0x10B00, + 0x10B36, + 0x10B39, + 0x10B56, + 0x10B58, + 0x10B73, + 0x10B78, + 0x10B92, + 0x10B99, + 0x10B9D, + 0x10BA9, + 0x10BB0, + 0x10C00, + 0x10C49, + 0x10C80, + 0x10CB3, + 0x10CC0, + 0x10CF3, + 0x10CFA, + 0x10D28, + 0x10D30, + 0x10D3A, + 0x10E60, + 0x10E7F, + 0x10F00, + 0x10F28, + 0x10F30, + 0x10F5A, + 0x10FE0, + 0x10FF7, + 0x11000, + 0x1104E, + 0x11052, + 0x11070, + 0x1107F, + 0x110C2, + 0x110CD, + 0x110CE, + 0x110D0, + 0x110E9, + 0x110F0, + 0x110FA, + 0x11100, + 0x11135, + 0x11136, + 0x11147, + 0x11150, + 0x11177, + 0x11180, + 0x111CE, + 0x111D0, + 0x111E0, + 0x111E1, + 0x111F5, + 0x11200, + 0x11212, + 0x11213, + 0x1123F, + 0x11280, + 0x11287, + 0x11288, + 0x11289, + 0x1128A, + 0x1128E, + 0x1128F, + 0x1129E, + 0x1129F, + 0x112AA, + 0x112B0, + 0x112EB, + 0x112F0, + 0x112FA, + 0x11300, + 0x11304, + 0x11305, + 0x1130D, + 0x1130F, + 0x11311, + 0x11313, + 0x11329, + 0x1132A, + 0x11331, + 0x11332, + 0x11334, + 0x11335, + 0x1133A, + 0x1133B, + 0x11345, + 0x11347, + 0x11349, + 0x1134B, + 0x1134E, + 0x11350, + 0x11351, + 0x11357, + 0x11358, + 0x1135D, + 0x11364, + 0x11366, + 0x1136D, + 0x11370, + 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x11460, + 0x11480, + 0x114C8, + 0x114D0, + 0x114DA, + 0x11580, + 0x115B6, + 0x115B8, + 0x115DE, + 0x11600, + 0x11645, + 0x11650, + 0x1165A, + 0x11660, + 0x1166D, + 0x11680, + 0x116B9, + 0x116C0, + 0x116CA, + 0x11700, + 0x1171B, + 0x1171D, + 0x1172C, + 0x11730, + 0x11740, + 0x11800, + 0x1183C, + 0x118A0, + 0x118F3, + 0x118FF, + 0x11900, + 0x119A0, + 0x119A8, + 0x119AA, + 0x119D8, + 0x119DA, + 0x119E5, + 0x11A00, + 0x11A48, + 0x11A50, + 0x11AA3, + 0x11AC0, + 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, + 0x11D00, + 0x11D07, + 0x11D08, + 0x11D0A, + 0x11D0B, + 0x11D37, + 0x11D3A, + 0x11D3B, + 0x11D3C, + 0x11D3E, + 0x11D3F, + 0x11D48, + 0x11D50, + 0x11D5A, + 0x11D60, + 0x11D66, + 0x11D67, + 0x11D69, + 0x11D6A, + 0x11D8F, + 0x11D90, + 0x11D92, + 0x11D93, + 0x11D99, + 0x11DA0, + 0x11DAA, + 0x11EE0, + 0x11EF9, + 0x11FC0, + 0x11FF2, + 0x11FFF, + 0x1239A, + 0x12400, + 0x1246F, + 0x12470, + 0x12475, + 0x12480, + 0x12544, + 0x13000, + 0x1342F, + 0x13430, + 0x13439, + 0x14400, + 0x14647, + 0x16800, + 0x16A39, + 0x16A40, + 0x16A5F, + 0x16A60, + 0x16A6A, + 0x16A6E, + 0x16A70, + 0x16AD0, + 0x16AEE, + 0x16AF0, + 0x16AF6, + 0x16B00, + 0x16B46, + 0x16B50, + 0x16B5A, + 0x16B5B, + 0x16B62, + 0x16B63, + 0x16B78, + 0x16B7D, + 0x16B90, + 0x16E40, + 0x16E9B, + 0x16F00, + 0x16F4B, + 0x16F4F, + 0x16F88, + 0x16F8F, + 0x16FA0, + 0x16FE0, + 0x16FE4, + 0x17000, + 0x187F8, + 0x18800, + 0x18AF3, + 0x1B000, + 0x1B11F, + 0x1B150, + 0x1B153, + 0x1B164, + 0x1B168, + 0x1B170, + 0x1B2FC, + 0x1BC00, + 0x1BC6B, + 0x1BC70, + 0x1BC7D, + 0x1BC80, + 0x1BC89, + 0x1BC90, + 0x1BC9A, + 0x1BC9C, + 0x1BCA4, + 0x1D000, + 0x1D0F6, + 0x1D100, + 0x1D127, + 0x1D129, + 0x1D1E9, + 0x1D200, + 0x1D246, + 0x1D2E0, + 0x1D2F4, + 0x1D300, + 0x1D357, + 0x1D360, + 0x1D379, + 0x1D400, + 0x1D455, + 0x1D456, + 0x1D49D, + 0x1D49E, + 0x1D4A0, + 0x1D4A2, + 0x1D4A3, + 0x1D4A5, + 0x1D4A7, + 0x1D4A9, + 0x1D4AD, + 0x1D4AE, + 0x1D4BA, + 0x1D4BB, + 0x1D4BC, + 0x1D4BD, + 0x1D4C4, + 0x1D4C5, + 0x1D506, + 0x1D507, + 0x1D50B, + 0x1D50D, + 0x1D515, + 0x1D516, + 0x1D51D, + 0x1D51E, + 0x1D53A, + 0x1D53B, + 0x1D53F, + 0x1D540, + 0x1D545, + 0x1D546, + 0x1D547, + 0x1D54A, + 0x1D551, + 0x1D552, + 0x1D6A6, + 0x1D6A8, + 0x1D7CC, + 0x1D7CE, + 0x1DA8C, + 0x1DA9B, + 0x1DAA0, + 0x1DAA1, + 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, + 0x1E100, + 0x1E12D, + 0x1E130, + 0x1E13E, + 0x1E140, + 0x1E14A, + 0x1E14E, + 0x1E150, + 0x1E2C0, + 0x1E2FA, + 0x1E2FF, + 0x1E300, + 0x1E800, + 0x1E8C5, + 0x1E8C7, + 0x1E8D7, + 0x1E900, + 0x1E94C, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, + 0x1EC71, + 0x1ECB5, + 0x1ED01, + 0x1ED3E, + 0x1EE00, + 0x1EE04, + 0x1EE05, + 0x1EE20, + 0x1EE21, + 0x1EE23, + 0x1EE24, + 0x1EE25, + 0x1EE27, + 0x1EE28, + 0x1EE29, + 0x1EE33, + 0x1EE34, + 0x1EE38, + 0x1EE39, + 0x1EE3A, + 0x1EE3B, + 0x1EE3C, + 0x1EE42, + 0x1EE43, + 0x1EE47, + 0x1EE48, + 0x1EE49, + 0x1EE4A, + 0x1EE4B, + 0x1EE4C, + 0x1EE4D, + 0x1EE50, + 0x1EE51, + 0x1EE53, + 0x1EE54, + 0x1EE55, + 0x1EE57, + 0x1EE58, + 0x1EE59, + 0x1EE5A, + 0x1EE5B, + 0x1EE5C, + 0x1EE5D, + 0x1EE5E, + 0x1EE5F, + 0x1EE60, + 0x1EE61, + 0x1EE63, + 0x1EE64, + 0x1EE65, + 0x1EE67, + 0x1EE6B, + 0x1EE6C, + 0x1EE73, + 0x1EE74, + 0x1EE78, + 0x1EE79, + 0x1EE7D, + 0x1EE7E, + 0x1EE7F, + 0x1EE80, + 0x1EE8A, + 0x1EE8B, + 0x1EE9C, + 0x1EEA1, + 0x1EEA4, + 0x1EEA5, + 0x1EEAA, + 0x1EEAB, + 0x1EEBC, + 0x1EEF0, + 0x1EEF2, + 0x1F000, + 0x1F02C, + 0x1F030, + 0x1F094, + 0x1F0A0, + 0x1F0AF, + 0x1F0B1, + 0x1F0C0, + 0x1F0C1, + 0x1F0D0, + 0x1F0D1, + 0x1F0F6, + 0x1F100, + 0x1F10D, + 0x1F110, + 0x1F16D, 0x1F170, 0x1F1AD, 0x1F1E6, @@ -287151,15 +290922,17 @@ static const UV UNI_IN__11_invlist[] = { /* for all charsets */ 0x1F260, 0x1F266, 0x1F300, - 0x1F6D5, + 0x1F6D6, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6FA, + 0x1F6FB, 0x1F700, 0x1F774, 0x1F780, 0x1F7D9, + 0x1F7E0, + 0x1F7EC, 0x1F800, 0x1F80C, 0x1F810, @@ -287172,24 +290945,28 @@ static const UV UNI_IN__11_invlist[] = { /* for all charsets */ 0x1F8AE, 0x1F900, 0x1F90C, - 0x1F910, - 0x1F93F, - 0x1F940, - 0x1F971, + 0x1F90D, + 0x1F972, 0x1F973, 0x1F977, 0x1F97A, - 0x1F97B, - 0x1F97C, 0x1F9A3, - 0x1F9B0, - 0x1F9BA, - 0x1F9C0, - 0x1F9C3, - 0x1F9D0, - 0x1FA00, + 0x1F9A5, + 0x1F9AB, + 0x1F9AE, + 0x1F9CB, + 0x1F9CD, + 0x1FA54, 0x1FA60, 0x1FA6E, + 0x1FA70, + 0x1FA74, + 0x1FA78, + 0x1FA7B, + 0x1FA80, + 0x1FA83, + 0x1FA90, + 0x1FA96, 0x1FFFE, 0x2A6D7, 0x2A700, @@ -287236,8 +291013,8 @@ static const UV UNI_IN__11_invlist[] = { /* for all charsets */ 0x110000 }; -static const UV UNI_IN__12_invlist[] = { /* for all charsets */ - 1354, /* Number of elements */ +static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ + 1352, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -287810,8 +291587,6 @@ static const UV UNI_IN__12_invlist[] = { /* for all charsets */ 0x31F0, 0x321F, 0x3220, - 0x32FF, - 0x3300, 0x4DB6, 0x4DC0, 0x9FF0, @@ -288597,8 +292372,8 @@ static const UV UNI_IN__12_invlist[] = { /* for all charsets */ 0x110000 }; -static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ - 1352, /* Number of elements */ +static const UV UNI_IN__13_invlist[] = { /* for all charsets */ + 1372, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -288649,7 +292424,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x8A0, 0x8B5, 0x8B6, - 0x8BE, + 0x8C8, 0x8D3, 0x984, 0x985, @@ -288758,7 +292533,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0xB49, 0xB4B, 0xB4E, - 0xB56, + 0xB55, 0xB58, 0xB5C, 0xB5E, @@ -288847,8 +292622,6 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0xCF1, 0xCF3, 0xD00, - 0xD04, - 0xD05, 0xD0D, 0xD0E, 0xD11, @@ -288862,7 +292635,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0xD64, 0xD66, 0xD80, - 0xD82, + 0xD81, 0xD84, 0xD85, 0xD97, @@ -289035,7 +292808,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x1AA0, 0x1AAE, 0x1AB0, - 0x1ABF, + 0x1AC1, 0x1B00, 0x1B4C, 0x1B50, @@ -289110,7 +292883,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x2B74, 0x2B76, 0x2B96, - 0x2B98, + 0x2B97, 0x2C2F, 0x2C30, 0x2C5F, @@ -289145,7 +292918,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E50, + 0x2E53, 0x2E80, 0x2E9A, 0x2E9B, @@ -289165,15 +292938,11 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x3131, 0x318F, 0x3190, - 0x31BB, - 0x31C0, 0x31E4, 0x31F0, 0x321F, 0x3220, - 0x4DB6, - 0x4DC0, - 0x9FF0, + 0x9FFD, 0xA000, 0xA48D, 0xA490, @@ -289185,9 +292954,9 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0xA700, 0xA7C0, 0xA7C2, - 0xA7C7, - 0xA7F7, - 0xA82C, + 0xA7CB, + 0xA7F5, + 0xA82D, 0xA830, 0xA83A, 0xA840, @@ -289227,7 +292996,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0xAB28, 0xAB2F, 0xAB30, - 0xAB68, + 0xAB6C, 0xAB70, 0xABEE, 0xABF0, @@ -289315,7 +293084,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x10137, 0x1018F, 0x10190, - 0x1019C, + 0x1019D, 0x101A0, 0x101A1, 0x101D0, @@ -289434,10 +293203,18 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x10D3A, 0x10E60, 0x10E7F, + 0x10E80, + 0x10EAA, + 0x10EAB, + 0x10EAE, + 0x10EB0, + 0x10EB2, 0x10F00, 0x10F28, 0x10F30, 0x10F5A, + 0x10FB0, + 0x10FCC, 0x10FE0, 0x10FF7, 0x11000, @@ -289455,12 +293232,10 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x11100, 0x11135, 0x11136, - 0x11147, + 0x11148, 0x11150, 0x11177, 0x11180, - 0x111CE, - 0x111D0, 0x111E0, 0x111E1, 0x111F5, @@ -289513,11 +293288,9 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x11370, 0x11375, 0x11400, - 0x1145A, - 0x1145B, 0x1145C, 0x1145D, - 0x11460, + 0x11462, 0x11480, 0x114C8, 0x114D0, @@ -289547,7 +293320,21 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x118A0, 0x118F3, 0x118FF, - 0x11900, + 0x11907, + 0x11909, + 0x1190A, + 0x1190C, + 0x11914, + 0x11915, + 0x11917, + 0x11918, + 0x11936, + 0x11937, + 0x11939, + 0x1193B, + 0x11947, + 0x11950, + 0x1195A, 0x119A0, 0x119A8, 0x119AA, @@ -289602,6 +293389,8 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11FB0, + 0x11FB1, 0x11FC0, 0x11FF2, 0x11FFF, @@ -289649,11 +293438,15 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x16F8F, 0x16FA0, 0x16FE0, - 0x16FE4, + 0x16FE5, + 0x16FF0, + 0x16FF2, 0x17000, 0x187F8, 0x18800, - 0x18AF3, + 0x18CD6, + 0x18D00, + 0x18D09, 0x1B000, 0x1B11F, 0x1B150, @@ -289849,11 +293642,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x1F0D1, 0x1F0F6, 0x1F100, - 0x1F10D, - 0x1F110, - 0x1F16D, - 0x1F170, - 0x1F1AD, + 0x1F1AE, 0x1F1E6, 0x1F203, 0x1F210, @@ -289865,11 +293654,11 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x1F260, 0x1F266, 0x1F300, - 0x1F6D6, + 0x1F6D8, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6FB, + 0x1F6FD, 0x1F700, 0x1F774, 0x1F780, @@ -289886,32 +293675,38 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x1F888, 0x1F890, 0x1F8AE, + 0x1F8B0, + 0x1F8B2, 0x1F900, - 0x1F90C, - 0x1F90D, - 0x1F972, - 0x1F973, - 0x1F977, + 0x1F979, 0x1F97A, - 0x1F9A3, - 0x1F9A5, - 0x1F9AB, - 0x1F9AE, - 0x1F9CB, + 0x1F9CC, 0x1F9CD, 0x1FA54, 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA74, + 0x1FA75, 0x1FA78, 0x1FA7B, 0x1FA80, - 0x1FA83, + 0x1FA87, 0x1FA90, - 0x1FA96, + 0x1FAA9, + 0x1FAB0, + 0x1FAB7, + 0x1FAC0, + 0x1FAC3, + 0x1FAD0, + 0x1FAD7, + 0x1FB00, + 0x1FB93, + 0x1FB94, + 0x1FBCB, + 0x1FBF0, + 0x1FBFA, 0x1FFFE, - 0x2A6D7, + 0x2A6DE, 0x2A700, 0x2B735, 0x2B740, @@ -289923,7 +293718,7 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x2F800, 0x2FA1E, 0x2FFFE, - 0x30000, + 0x3134B, 0x3FFFE, 0x40000, 0x4FFFE, @@ -289956,8 +293751,8 @@ static const UV UNI_IN__12_DOT_1_invlist[] = { /* for all charsets */ 0x110000 }; -static const UV UNI_IN__13_invlist[] = { /* for all charsets */ - 1372, /* Number of elements */ +static const UV UNI_IN__14_invlist[] = { /* for all charsets */ + 1412, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -289986,8 +293781,6 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x5EF, 0x5F5, 0x600, - 0x61D, - 0x61E, 0x70E, 0x70F, 0x74B, @@ -290005,11 +293798,11 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x85F, 0x860, 0x86B, - 0x8A0, - 0x8B5, - 0x8B6, - 0x8C8, - 0x8D3, + 0x870, + 0x88F, + 0x890, + 0x892, + 0x898, 0x984, 0x985, 0x98D, @@ -290165,7 +293958,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0xC29, 0xC2A, 0xC3A, - 0xC3D, + 0xC3C, 0xC45, 0xC46, 0xC49, @@ -290175,6 +293968,8 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0xC57, 0xC58, 0xC5B, + 0xC5D, + 0xC5E, 0xC60, 0xC64, 0xC66, @@ -290197,7 +293992,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0xCCE, 0xCD5, 0xCD7, - 0xCDE, + 0xCDD, 0xCDF, 0xCE0, 0xCE4, @@ -290332,10 +294127,8 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x16A0, 0x16F9, 0x1700, - 0x170D, - 0x170E, - 0x1715, - 0x1720, + 0x1716, + 0x171F, 0x1737, 0x1740, 0x1754, @@ -290352,8 +294145,6 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x17F0, 0x17FA, 0x1800, - 0x180F, - 0x1810, 0x181A, 0x1820, 0x1879, @@ -290392,11 +294183,11 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1AA0, 0x1AAE, 0x1AB0, - 0x1AC1, + 0x1ACF, 0x1B00, - 0x1B4C, + 0x1B4D, 0x1B50, - 0x1B7D, + 0x1B7F, 0x1B80, 0x1BF4, 0x1BFC, @@ -290412,8 +294203,6 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1CD0, 0x1CFB, 0x1D00, - 0x1DFA, - 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -290454,7 +294243,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x2090, 0x209D, 0x20A0, - 0x20C0, + 0x20C1, 0x20D0, 0x20F1, 0x2100, @@ -290468,10 +294257,6 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x2B76, 0x2B96, 0x2B97, - 0x2C2F, - 0x2C30, - 0x2C5F, - 0x2C60, 0x2CF4, 0x2CF9, 0x2D26, @@ -290502,7 +294287,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E53, + 0x2E5E, 0x2E80, 0x2E9A, 0x2E9B, @@ -290526,8 +294311,6 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x31F0, 0x321F, 0x3220, - 0x9FFD, - 0xA000, 0xA48D, 0xA490, 0xA4C7, @@ -290536,10 +294319,14 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0xA640, 0xA6F8, 0xA700, - 0xA7C0, - 0xA7C2, 0xA7CB, - 0xA7F5, + 0xA7D0, + 0xA7D2, + 0xA7D3, + 0xA7D4, + 0xA7D5, + 0xA7DA, + 0xA7F2, 0xA82D, 0xA830, 0xA83A, @@ -290610,16 +294397,12 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0xFB43, 0xFB45, 0xFB46, - 0xFBC2, + 0xFBC3, 0xFBD3, - 0xFD40, - 0xFD50, 0xFD90, 0xFD92, 0xFDC8, - 0xFDD0, - 0xFDFE, - 0xFE00, + 0xFDCF, 0xFE1A, 0xFE20, 0xFE53, @@ -290704,13 +294487,33 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x10530, 0x10564, 0x1056F, - 0x10570, + 0x1057B, + 0x1057C, + 0x1058B, + 0x1058C, + 0x10593, + 0x10594, + 0x10596, + 0x10597, + 0x105A2, + 0x105A3, + 0x105B2, + 0x105B3, + 0x105BA, + 0x105BB, + 0x105BD, 0x10600, 0x10737, 0x10740, 0x10756, 0x10760, 0x10768, + 0x10780, + 0x10786, + 0x10787, + 0x107B1, + 0x107B2, + 0x107BB, 0x10800, 0x10806, 0x10808, @@ -290797,6 +294600,8 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x10F28, 0x10F30, 0x10F5A, + 0x10F70, + 0x10F8A, 0x10FB0, 0x10FCC, 0x10FE0, @@ -290804,9 +294609,9 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x11000, 0x1104E, 0x11052, - 0x11070, + 0x11076, 0x1107F, - 0x110C2, + 0x110C3, 0x110CD, 0x110CE, 0x110D0, @@ -290890,7 +294695,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x11660, 0x1166D, 0x11680, - 0x116B9, + 0x116BA, 0x116C0, 0x116CA, 0x11700, @@ -290898,7 +294703,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1171D, 0x1172C, 0x11730, - 0x11740, + 0x11747, 0x11800, 0x1183C, 0x118A0, @@ -290929,7 +294734,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x11A48, 0x11A50, 0x11AA3, - 0x11AC0, + 0x11AB0, 0x11AF9, 0x11C00, 0x11C09, @@ -290985,6 +294790,8 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x12475, 0x12480, 0x12544, + 0x12F90, + 0x12FF3, 0x13000, 0x1342F, 0x13430, @@ -290998,7 +294805,9 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x16A60, 0x16A6A, 0x16A6E, - 0x16A70, + 0x16ABF, + 0x16AC0, + 0x16ACA, 0x16AD0, 0x16AEE, 0x16AF0, @@ -291031,8 +294840,14 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x18CD6, 0x18D00, 0x18D09, + 0x1AFF0, + 0x1AFF4, + 0x1AFF5, + 0x1AFFC, + 0x1AFFD, + 0x1AFFF, 0x1B000, - 0x1B11F, + 0x1B123, 0x1B150, 0x1B153, 0x1B164, @@ -291049,12 +294864,18 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1BC9A, 0x1BC9C, 0x1BCA4, + 0x1CF00, + 0x1CF2E, + 0x1CF30, + 0x1CF47, + 0x1CF50, + 0x1CFC4, 0x1D000, 0x1D0F6, 0x1D100, 0x1D127, 0x1D129, - 0x1D1E9, + 0x1D1EB, 0x1D200, 0x1D246, 0x1D2E0, @@ -291109,6 +294930,8 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1DF00, + 0x1DF1F, 0x1E000, 0x1E007, 0x1E008, @@ -291127,10 +294950,20 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1E14A, 0x1E14E, 0x1E150, + 0x1E290, + 0x1E2AF, 0x1E2C0, 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E7E0, + 0x1E7E7, + 0x1E7E8, + 0x1E7EC, + 0x1E7ED, + 0x1E7EF, + 0x1E7F0, + 0x1E7FF, 0x1E800, 0x1E8C5, 0x1E8C7, @@ -291239,7 +295072,7 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6E0, + 0x1F6DD, 0x1F6ED, 0x1F6F0, 0x1F6FD, @@ -291249,6 +295082,8 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1F7D9, 0x1F7E0, 0x1F7EC, + 0x1F7F0, + 0x1F7F1, 0x1F800, 0x1F80C, 0x1F810, @@ -291262,27 +295097,27 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1F8B0, 0x1F8B2, 0x1F900, - 0x1F979, - 0x1F97A, - 0x1F9CC, - 0x1F9CD, 0x1FA54, 0x1FA60, 0x1FA6E, 0x1FA70, 0x1FA75, 0x1FA78, - 0x1FA7B, + 0x1FA7D, 0x1FA80, 0x1FA87, 0x1FA90, - 0x1FAA9, + 0x1FAAD, 0x1FAB0, - 0x1FAB7, + 0x1FABB, 0x1FAC0, - 0x1FAC3, + 0x1FAC6, 0x1FAD0, - 0x1FAD7, + 0x1FADA, + 0x1FAE0, + 0x1FAE8, + 0x1FAF0, + 0x1FAF7, 0x1FB00, 0x1FB93, 0x1FB94, @@ -291290,9 +295125,9 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x1FBF0, 0x1FBFA, 0x1FFFE, - 0x2A6DE, + 0x2A6E0, 0x2A700, - 0x2B735, + 0x2B739, 0x2B740, 0x2B81E, 0x2B820, @@ -291335,8 +295170,8 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */ 0x110000 }; -static const UV UNI_IN__14_invlist[] = { /* for all charsets */ - 1412, /* Number of elements */ +static const UV UNI_IN__15_invlist[] = { /* for all charsets */ + 1430, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -291583,7 +295418,7 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -291643,7 +295478,7 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -292180,7 +296015,7 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -292215,7 +296050,7 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -292320,6 +296155,8 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -292362,6 +296199,12 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -292377,9 +296220,7 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -292432,8 +296273,12 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -292462,6 +296307,8 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -292516,6 +296363,8 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -292526,6 +296375,10 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -292540,6 +296393,8 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -292656,14 +296511,14 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -292685,23 +296540,19 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -292711,7 +296562,7 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x1FFFE, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -292722,6 +296573,8 @@ static const UV UNI_IN__14_invlist[] = { /* for all charsets */ 0x2FA1E, 0x2FFFE, 0x3134B, + 0x31350, + 0x323B0, 0x3FFFE, 0x40000, 0x4FFFE, @@ -309000,7 +312853,7 @@ static const UV UNI_IN__9_invlist[] = { /* for all charsets */ }; static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ - 1412, /* Number of elements */ + 1430, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -309247,7 +313100,7 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -309307,7 +313160,7 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -309844,7 +313697,7 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -309879,7 +313732,7 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -309984,6 +313837,8 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -310026,6 +313881,12 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -310041,9 +313902,7 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -310096,8 +313955,12 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -310126,6 +313989,8 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -310180,6 +314045,8 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -310190,6 +314057,10 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -310204,6 +314075,8 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -310320,14 +314193,14 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -310349,23 +314222,19 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -310375,7 +314244,7 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x1FFFE, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -310386,6 +314255,8 @@ static const UV UNI_IN__NA_invlist[] = { /* for all charsets */ 0x2FA1E, 0x2FFFE, 0x3134B, + 0x31350, + 0x323B0, 0x3FFFE, 0x40000, 0x4FFFE, @@ -310998,6 +314869,16 @@ static const UV UNI_INKATAKANA_invlist[] = { /* for all charsets */ 0x3100 }; +static const UV UNI_INKAWI_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x11F00, + 0x11F60 +}; + static const UV UNI_INKHAROSHTHI_invlist[] = { /* for all charsets */ 3, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -311298,6 +315179,16 @@ static const UV UNI_INNABATAEAN_invlist[] = { /* for all charsets */ 0x108B0 }; +static const UV UNI_INNAGMUNDARI_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x1E4D0, + 0x1E500 +}; + static const UV UNI_INNANDINAGARI_invlist[] = { /* for all charsets */ 3, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -311489,7 +315380,7 @@ static const UV UNI_INPAUCINHAU_invlist[] = { /* for all charsets */ }; static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */ - 291, /* Number of elements */ + 295, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -311704,6 +315595,8 @@ static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */ 0x111CD, 0x1122F, 0x11230, + 0x11241, + 0x11242, 0x112E3, 0x112E5, 0x112E9, @@ -311783,7 +315676,9 @@ static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */ 0x11D47, 0x11D48, 0x11EF4, - 0x11EF5 + 0x11EF5, + 0x11F38, + 0x11F3B }; static const UV UNI_INPC__BOTTOMANDLEFT_invlist[] = { /* for all charsets */ @@ -311813,7 +315708,7 @@ static const UV UNI_INPC__BOTTOMANDRIGHT_invlist[] = { /* for all charsets */ }; static const UV UNI_INPC__LEFT_invlist[] = { /* for all charsets */ - 95, /* Number of elements */ + 97, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -311911,7 +315806,9 @@ static const UV UNI_INPC__LEFT_invlist[] = { /* for all charsets */ 0x11CB1, 0x11CB2, 0x11EF5, - 0x11EF6 + 0x11EF6, + 0x11F3E, + 0x11F40 }; static const UV UNI_INPC__LEFTANDRIGHT_invlist[] = { /* for all charsets */ @@ -311951,7 +315848,7 @@ static const UV UNI_INPC__LEFTANDRIGHT_invlist[] = { /* for all charsets */ }; static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */ - 429, /* Number of elements */ + 441, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -311963,6 +315860,8 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */ 0x93E, 0x950, 0x951, + 0x953, + 0x955, 0x958, 0x962, 0x964, @@ -312064,6 +315963,8 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -312101,7 +316002,7 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */ 0xEC0, 0xEC5, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -312220,7 +316121,7 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */ 0xA8F2, 0xA8FF, 0xA900, - 0xA92B, + 0xA926, 0xA92E, 0xA947, 0xA954, @@ -312296,6 +316197,8 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -312383,7 +316286,13 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */ 0x11D93, 0x11D97, 0x11EF3, - 0x11EF7 + 0x11EF7, + 0x11F00, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F42 }; static const UV UNI_INPC__OVERSTRUCK_invlist[] = { /* for all charsets */ @@ -312403,7 +316312,7 @@ static const UV UNI_INPC__OVERSTRUCK_invlist[] = { /* for all charsets */ }; static const UV UNI_INPC__RIGHT_invlist[] = { /* for all charsets */ - 333, /* Number of elements */ + 341, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -312466,6 +316375,8 @@ static const UV UNI_INPC__RIGHT_invlist[] = { /* for all charsets */ 0xCC5, 0xCD5, 0xCD7, + 0xCF3, + 0xCF4, 0xD02, 0xD04, 0xD3E, @@ -312739,11 +316650,17 @@ static const UV UNI_INPC__RIGHT_invlist[] = { /* for all charsets */ 0x11D96, 0x11D97, 0x11EF6, - 0x11EF7 + 0x11EF7, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F36, + 0x11F41, + 0x11F42 }; static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */ - 391, /* Number of elements */ + 399, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -312756,7 +316673,7 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */ 0x949, 0x951, 0x952, - 0x953, + 0x955, 0x956, 0x981, 0x982, @@ -312835,7 +316752,7 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */ 0xEBB, 0xEBC, 0xEC8, - 0xECE, + 0xECF, 0xF39, 0xF3A, 0xF72, @@ -312954,6 +316871,8 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */ 0xA8F2, 0xA8FF, 0xA900, + 0xA926, + 0xA92B, 0xA94A, 0xA94B, 0xA94F, @@ -313137,7 +317056,13 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */ 0x11D95, 0x11D96, 0x11EF3, - 0x11EF4 + 0x11EF4, + 0x11F00, + 0x11F03, + 0x11F36, + 0x11F38, + 0x11F40, + 0x11F41 }; static const UV UNI_INPC__TOPANDBOTTOM_invlist[] = { /* for all charsets */ @@ -313367,7 +317292,7 @@ static const UV UNI_INSC__AVAGRAHA_invlist[] = { /* for all charsets */ }; static const UV UNI_INSC__BINDU_invlist[] = { /* for all charsets */ - 113, /* Number of elements */ + 117, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -313394,6 +317319,8 @@ static const UV UNI_INSC__BINDU_invlist[] = { /* for all charsets */ 0xC05, 0xC80, 0xC83, + 0xCF3, + 0xCF4, 0xD00, 0xD03, 0xD04, @@ -313483,7 +317410,9 @@ static const UV UNI_INSC__BINDU_invlist[] = { /* for all charsets */ 0x11D40, 0x11D41, 0x11D95, - 0x11D96 + 0x11D96, + 0x11F00, + 0x11F02 }; static const UV UNI_INSC__BRAHMIJOININGNUMBER_invlist[] = { /* for all charsets */ @@ -313497,7 +317426,7 @@ static const UV UNI_INSC__BRAHMIJOININGNUMBER_invlist[] = { /* for all charsets }; static const UV UNI_INSC__CANTILLATIONMARK_invlist[] = { /* for all charsets */ - 25, /* Number of elements */ + 27, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -313507,6 +317436,8 @@ static const UV UNI_INSC__CANTILLATIONMARK_invlist[] = { /* for all charsets */ 0xA51, 0xA52, 0xAFA, + 0xAFB, + 0xAFC, 0xAFD, 0x1CD0, 0x1CD3, @@ -313529,7 +317460,7 @@ static const UV UNI_INSC__CANTILLATIONMARK_invlist[] = { /* for all charsets */ }; static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */ - 311, /* Number of elements */ + 315, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -313784,6 +317715,8 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11240, 0x11284, 0x11287, 0x11288, @@ -313843,7 +317776,9 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */ 0x11D6C, 0x11D8A, 0x11EE0, - 0x11EF2 + 0x11EF2, + 0x11F12, + 0x11F34 }; static const UV UNI_INSC__CONSONANTDEAD_invlist[] = { /* for all charsets */ @@ -314103,7 +318038,7 @@ static const UV UNI_INSC__CONSONANTPLACEHOLDER_invlist[] = { /* for EBCDIC 037 # endif /* EBCDIC 037 */ static const UV UNI_INSC__CONSONANTPRECEDINGREPHA_invlist[] = { /* for all charsets */ - 7, /* Number of elements */ + 9, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -314113,7 +318048,9 @@ static const UV UNI_INSC__CONSONANTPRECEDINGREPHA_invlist[] = { /* for all char 0x11941, 0x11942, 0x11D46, - 0x11D47 + 0x11D47, + 0x11F02, + 0x11F03 }; static const UV UNI_INSC__CONSONANTPREFIXED_invlist[] = { /* for all charsets */ @@ -314191,13 +318128,15 @@ static const UV UNI_INSC__CONSONANTWITHSTACKER_invlist[] = { /* for all charset }; static const UV UNI_INSC__GEMINATIONMARK_invlist[] = { /* for all charsets */ - 7, /* Number of elements */ + 9, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ 0x0, 0xA71, 0xA72, + 0xAFB, + 0xAFC, 0x11237, 0x11238, 0x11A98, @@ -314205,7 +318144,7 @@ static const UV UNI_INSC__GEMINATIONMARK_invlist[] = { /* for all charsets */ }; static const UV UNI_INSC__INVISIBLESTACKER_invlist[] = { /* for all charsets */ - 25, /* Number of elements */ + 27, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -314233,7 +318172,9 @@ static const UV UNI_INSC__INVISIBLESTACKER_invlist[] = { /* for all charsets */ 0x11D45, 0x11D46, 0x11D97, - 0x11D98 + 0x11D98, + 0x11F42, + 0x11F43 }; static const UV UNI_INSC__MODIFYINGLETTER_invlist[] = { /* for all charsets */ @@ -314321,7 +318262,7 @@ static const UV UNI_INSC__NUKTA_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_INSC__NUMBER_invlist[] = { /* for ASCII/Latin1 */ - 91, /* Number of elements */ + 93, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -314415,7 +318356,9 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for ASCII/Latin1 */ 0x11D50, 0x11D5A, 0x11DA0, - 0x11DAA + 0x11DAA, + 0x11F50, + 0x11F5A }; # endif /* ASCII/Latin1 */ @@ -314426,7 +318369,7 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 1047 */ - 91, /* Number of elements */ + 93, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -314520,7 +318463,9 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 1047 */ 0x11D50, 0x11D5A, 0x11DA0, - 0x11DAA + 0x11DAA, + 0x11F50, + 0x11F5A }; # endif /* EBCDIC 1047 */ @@ -314531,7 +318476,7 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 037 */ - 91, /* Number of elements */ + 93, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -314625,7 +318570,9 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 037 */ 0x11D50, 0x11D5A, 0x11DA0, - 0x11DAA + 0x11DAA, + 0x11F50, + 0x11F5A }; # endif /* EBCDIC 037 */ @@ -314643,7 +318590,7 @@ static const UV UNI_INSC__NUMBERJOINER_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */ - 647, /* Number of elements */ + 655, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -314869,7 +318816,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -314941,7 +318888,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */ 0xEC8, 0xECC, 0xECD, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -315141,7 +319088,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -315293,7 +319240,15 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */ 0x11DA0, 0x11DAA, 0x11EE0, - 0x11EF7 + 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A }; # endif /* ASCII/Latin1 */ @@ -315304,7 +319259,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */ - 647, /* Number of elements */ + 655, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -315530,7 +319485,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -315602,7 +319557,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */ 0xEC8, 0xECC, 0xECD, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -315802,7 +319757,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -315954,7 +319909,15 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */ 0x11DA0, 0x11DAA, 0x11EE0, - 0x11EF7 + 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A }; # endif /* EBCDIC 1047 */ @@ -315965,7 +319928,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */ - 647, /* Number of elements */ + 655, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -316191,7 +320154,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -316263,7 +320226,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */ 0xEC8, 0xECC, 0xECD, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -316463,7 +320426,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -316615,13 +320578,21 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */ 0x11DA0, 0x11DAA, 0x11EE0, - 0x11EF7 + 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A }; # endif /* EBCDIC 037 */ static const UV UNI_INSC__PUREKILLER_invlist[] = { /* for all charsets */ - 45, /* Number of elements */ + 47, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -316669,7 +320640,9 @@ static const UV UNI_INSC__PUREKILLER_invlist[] = { /* for all charsets */ 0x11A34, 0x11A35, 0x11D44, - 0x11D45 + 0x11D45, + 0x11F41, + 0x11F42 }; static const UV UNI_INSC__REGISTERSHIFTER_invlist[] = { /* for all charsets */ @@ -316685,7 +320658,7 @@ static const UV UNI_INSC__REGISTERSHIFTER_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for ASCII/Latin1 */ - 39, /* Number of elements */ + 41, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -316694,6 +320667,8 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for ASCII/Latin1 */ 0xB4, 0x9FE, 0x9FF, + 0xECE, + 0xECF, 0xF35, 0xF36, 0xF37, @@ -316738,7 +320713,7 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 1047 */ - 41, /* Number of elements */ + 43, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -316749,6 +320724,8 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 1047 */ 0xFB, 0x9FE, 0x9FF, + 0xECE, + 0xECF, 0xF35, 0xF36, 0xF37, @@ -316793,7 +320770,7 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 037 */ - 41, /* Number of elements */ + 43, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -316804,6 +320781,8 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 037 */ 0xFB, 0x9FE, 0x9FF, + 0xECE, + 0xECF, 0xF35, 0xF36, 0xF37, @@ -316957,7 +320936,7 @@ static const UV UNI_INSC__VIRAMA_invlist[] = { /* for all charsets */ }; static const UV UNI_INSC__VISARGA_invlist[] = { /* for all charsets */ - 71, /* Number of elements */ + 73, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -317031,7 +321010,9 @@ static const UV UNI_INSC__VISARGA_invlist[] = { /* for all charsets */ 0x11D41, 0x11D42, 0x11D96, - 0x11D97 + 0x11D97, + 0x11F03, + 0x11F04 }; static const UV UNI_INSC__VOWEL_invlist[] = { /* for all charsets */ @@ -317053,7 +321034,7 @@ static const UV UNI_INSC__VOWEL_invlist[] = { /* for all charsets */ }; static const UV UNI_INSC__VOWELDEPENDENT_invlist[] = { /* for all charsets */ - 269, /* Number of elements */ + 275, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -317256,6 +321237,8 @@ static const UV UNI_INSC__VOWELDEPENDENT_invlist[] = { /* for all charsets */ 0x111CF, 0x1122C, 0x11234, + 0x11241, + 0x11242, 0x112E0, 0x112E9, 0x1133E, @@ -317325,11 +321308,15 @@ static const UV UNI_INSC__VOWELDEPENDENT_invlist[] = { /* for all charsets */ 0x11D93, 0x11D95, 0x11EF3, - 0x11EF7 + 0x11EF7, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F41 }; static const UV UNI_INSC__VOWELINDEPENDENT_invlist[] = { /* for all charsets */ - 177, /* Number of elements */ + 181, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -317456,6 +321443,8 @@ static const UV UNI_INSC__VOWELINDEPENDENT_invlist[] = { /* for all charsets */ 0x11191, 0x11200, 0x11208, + 0x11240, + 0x11241, 0x11280, 0x11284, 0x112B0, @@ -317509,7 +321498,9 @@ static const UV UNI_INSC__VOWELINDEPENDENT_invlist[] = { /* for all charsets */ 0x11D67, 0x11D69, 0x11D6A, - 0x11D6C + 0x11D6C, + 0x11F04, + 0x11F11 }; static const UV UNI_INSIDDHAM_invlist[] = { /* for all charsets */ @@ -319561,7 +323552,7 @@ static const UV UNI_JT__R_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */ - 695, /* Number of elements */ + 713, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -319757,7 +323748,7 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -320026,6 +324017,8 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -320070,6 +324063,8 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -320192,8 +324187,18 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -320244,12 +324249,16 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -320270,7 +324279,7 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */ - 695, /* Number of elements */ + 713, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -320466,7 +324475,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -320735,6 +324744,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -320779,6 +324790,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -320901,8 +324914,18 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -320953,12 +324976,16 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -320979,7 +325006,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */ - 695, /* Number of elements */ + 713, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -321175,7 +325202,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -321444,6 +325471,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -321488,6 +325517,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -321610,8 +325641,18 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -321662,12 +325703,16 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -321685,7 +325730,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */ - 745, /* Number of elements */ + 763, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -321901,7 +325946,7 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -322188,6 +326233,8 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F30, 0x10F45, 0x10F46, @@ -322244,6 +326291,8 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -322366,8 +326415,18 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -322418,12 +326477,16 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E900, @@ -322444,7 +326507,7 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */ - 745, /* Number of elements */ + 763, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -322660,7 +326723,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -322947,6 +327010,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F30, 0x10F45, 0x10F46, @@ -323003,6 +327068,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -323125,8 +327192,18 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -323177,12 +327254,16 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E900, @@ -323203,7 +327284,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */ - 745, /* Number of elements */ + 763, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -323419,7 +327500,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -323706,6 +327787,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F30, 0x10F45, 0x10F46, @@ -323762,6 +327845,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -323884,8 +327969,18 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, 0x13430, - 0x13439, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -323936,12 +328031,16 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E900, @@ -323956,6 +328055,16 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ +static const UV UNI_KAKTOVIKNUMERALS_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x1D2C0, + 0x1D2E0 +}; + static const UV UNI_KALI_invlist[] = { /* for all charsets */ 3, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -323967,7 +328076,7 @@ static const UV UNI_KALI_invlist[] = { /* for all charsets */ }; static const UV UNI_KANA_invlist[] = { /* for all charsets */ - 39, /* Number of elements */ + 41, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -324008,6 +328117,8 @@ static const UV UNI_KANA_invlist[] = { /* for all charsets */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168 }; @@ -324072,6 +328183,20 @@ static const UV UNI_KATAKANAEXT_invlist[] = { /* for all charsets */ 0x3200 }; +static const UV UNI_KAWI_invlist[] = { /* for all charsets */ + 7, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A +}; + static const UV UNI_KHAR_invlist[] = { /* for all charsets */ 17, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -324135,7 +328260,7 @@ static const UV UNI_KHOJ_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F + 0x11242 }; static const UV UNI_KITS_invlist[] = { /* for all charsets */ @@ -324185,7 +328310,7 @@ static const UV UNI_KNDA_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0x1CD0, 0x1CD1, 0x1CD2, @@ -324219,7 +328344,7 @@ static const UV UNI_KTHI_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ - 1297, /* Number of elements */ + 1319, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -325162,6 +329287,8 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -325286,6 +329413,12 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -325295,7 +329428,9 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -325340,8 +329475,12 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -325416,6 +329555,10 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -325426,6 +329569,8 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -325509,7 +329654,7 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -325519,7 +329664,9 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -325530,7 +329677,7 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ - 1323, /* Number of elements */ + 1345, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -326499,6 +330646,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -326623,6 +330772,12 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -326632,7 +330787,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -326677,8 +330834,12 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -326753,6 +330914,10 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -326763,6 +330928,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -326846,7 +331013,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -326856,7 +331023,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -326867,7 +331036,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ - 1319, /* Number of elements */ + 1341, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -327832,6 +332001,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -327956,6 +332127,12 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -327965,7 +332142,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -328010,8 +332189,12 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -328086,6 +332269,10 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -328096,6 +332283,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -328179,7 +332368,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -328189,7 +332378,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -328235,7 +332426,7 @@ static const UV UNI_LAO_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -328479,7 +332670,7 @@ static const UV UNI_LATINEXTG_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LATN_invlist[] = { /* for ASCII/Latin1 */ - 93, /* Number of elements */ + 95, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -328575,7 +332766,9 @@ static const UV UNI_LATN_invlist[] = { /* for ASCII/Latin1 */ 0x107B2, 0x107BB, 0x1DF00, - 0x1DF1F + 0x1DF1F, + 0x1DF25, + 0x1DF2B }; # endif /* ASCII/Latin1 */ @@ -328586,7 +332779,7 @@ static const UV UNI_LATN_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LATN_invlist[] = { /* for EBCDIC 1047 */ - 119, /* Number of elements */ + 121, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -328708,7 +332901,9 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 1047 */ 0x107B2, 0x107BB, 0x1DF00, - 0x1DF1F + 0x1DF1F, + 0x1DF25, + 0x1DF2B }; # endif /* EBCDIC 1047 */ @@ -328719,7 +332914,7 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LATN_invlist[] = { /* for EBCDIC 037 */ - 115, /* Number of elements */ + 117, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -328837,7 +333032,9 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 037 */ 0x107B2, 0x107BB, 0x1DF00, - 0x1DF1F + 0x1DF1F, + 0x1DF25, + 0x1DF2B }; # endif /* EBCDIC 037 */ @@ -329553,7 +333750,7 @@ static const UV UNI_LB__AI_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ - 1597, /* Number of elements */ + 1613, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -330094,8 +334291,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ 0x2044, 0x204A, 0x2056, - 0x2057, - 0x2058, 0x205C, 0x205D, 0x2061, @@ -330704,6 +334899,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ 0x1123B, 0x1123D, 0x1123E, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -330840,6 +335037,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ 0x11EF3, 0x11EF7, 0x11EF9, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x11FC0, @@ -330863,7 +335066,9 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ 0x1328A, 0x13379, 0x1337C, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x145CE, 0x145D0, @@ -330936,6 +335141,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -330996,6 +335203,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ 0x1DA8C, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -331006,6 +335217,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -331164,7 +335377,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ - 1625, /* Number of elements */ + 1641, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -331733,8 +335946,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ 0x2044, 0x204A, 0x2056, - 0x2057, - 0x2058, 0x205C, 0x205D, 0x2061, @@ -332343,6 +336554,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ 0x1123B, 0x1123D, 0x1123E, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -332479,6 +336692,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ 0x11EF3, 0x11EF7, 0x11EF9, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x11FC0, @@ -332502,7 +336721,9 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ 0x1328A, 0x13379, 0x1337C, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x145CE, 0x145D0, @@ -332575,6 +336796,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -332635,6 +336858,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ 0x1DA8C, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -332645,6 +336872,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -332803,7 +337032,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ - 1621, /* Number of elements */ + 1637, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -333368,8 +337597,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ 0x2044, 0x204A, 0x2056, - 0x2057, - 0x2058, 0x205C, 0x205D, 0x2061, @@ -333978,6 +338205,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ 0x1123B, 0x1123D, 0x1123E, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -334114,6 +338343,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ 0x11EF3, 0x11EF7, 0x11EF9, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x11FC0, @@ -334137,7 +338372,9 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ 0x1328A, 0x13379, 0x1337C, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x145CE, 0x145D0, @@ -334210,6 +338447,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ 0x1D242, 0x1D245, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -334270,6 +338509,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ 0x1DA8C, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -334280,6 +338523,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -334447,7 +338692,7 @@ static const UV UNI_LB__B2_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */ - 201, /* Number of elements */ + 203, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -334634,6 +338879,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */ 0x11AA3, 0x11C41, 0x11C46, + 0x11F43, + 0x11F45, 0x11FFF, 0x12000, 0x12470, @@ -334662,7 +338909,7 @@ static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */ - 201, /* Number of elements */ + 203, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -334849,6 +339096,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */ 0x11AA3, 0x11C41, 0x11C46, + 0x11F43, + 0x11F45, 0x11FFF, 0x12000, 0x12470, @@ -334877,7 +339126,7 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */ - 201, /* Number of elements */ + 203, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335064,6 +339313,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */ 0x11AA3, 0x11C41, 0x11C46, + 0x11F43, + 0x11F45, 0x11FFF, 0x12000, 0x12470, @@ -335089,7 +339340,7 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__BB_invlist[] = { /* for ASCII/Latin1 */ - 49, /* Number of elements */ + 51, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335140,6 +339391,8 @@ static const UV UNI_LB__BB_invlist[] = { /* for ASCII/Latin1 */ 0x11A46, 0x11A9E, 0x11AA1, + 0x11B00, + 0x11B0A, 0x11C70, 0x11C71 }; @@ -335152,7 +339405,7 @@ static const UV UNI_LB__BB_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 1047 */ - 49, /* Number of elements */ + 51, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335203,6 +339456,8 @@ static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 1047 */ 0x11A46, 0x11A9E, 0x11AA1, + 0x11B00, + 0x11B0A, 0x11C70, 0x11C71 }; @@ -335215,7 +339470,7 @@ static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 037 */ - 49, /* Number of elements */ + 51, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335266,6 +339521,8 @@ static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 037 */ 0x11A46, 0x11A9E, 0x11AA1, + 0x11B00, + 0x11B0A, 0x11C70, 0x11C71 }; @@ -335337,7 +339594,7 @@ static const UV UNI_LB__CB_invlist[] = { /* for all charsets */ }; static const UV UNI_LB__CJ_invlist[] = { /* for all charsets */ - 55, /* Number of elements */ + 59, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335392,8 +339649,12 @@ static const UV UNI_LB__CJ_invlist[] = { /* for all charsets */ 0x3200, 0xFF67, 0xFF71, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168 }; @@ -335401,7 +339662,7 @@ static const UV UNI_LB__CJ_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__CL_invlist[] = { /* for ASCII/Latin1 */ - 175, /* Number of elements */ + 179, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335578,6 +339839,10 @@ static const UV UNI_LB__CL_invlist[] = { /* for ASCII/Latin1 */ 0x1337C, 0x13438, 0x13439, + 0x1343D, + 0x1343E, + 0x1343F, + 0x13440, 0x145CF, 0x145D0 }; @@ -335590,7 +339855,7 @@ static const UV UNI_LB__CL_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 1047 */ - 175, /* Number of elements */ + 179, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335767,6 +340032,10 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 1047 */ 0x1337C, 0x13438, 0x13439, + 0x1343D, + 0x1343E, + 0x1343F, + 0x13440, 0x145CF, 0x145D0 }; @@ -335779,7 +340048,7 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 037 */ - 175, /* Number of elements */ + 179, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -335956,6 +340225,10 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 037 */ 0x1337C, 0x13438, 0x13439, + 0x1343D, + 0x1343E, + 0x1343F, + 0x13440, 0x145CF, 0x145D0 }; @@ -335965,7 +340238,7 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ - 574, /* Number of elements */ + 600, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -336143,6 +340416,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -336244,6 +340519,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ 0x1CF7, 0x1CFA, 0x1DC0, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x1E00, 0x200C, 0x200D, @@ -336345,6 +340624,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -336383,6 +340664,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -336475,6 +340758,18 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -336527,12 +340822,16 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -336553,7 +340852,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ - 578, /* Number of elements */ + 604, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -336735,6 +341034,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -336836,6 +341137,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ 0x1CF7, 0x1CFA, 0x1DC0, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x1E00, 0x200C, 0x200D, @@ -336937,6 +341242,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -336975,6 +341282,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -337067,6 +341376,18 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -337119,12 +341440,16 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -337145,7 +341470,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */ - 578, /* Number of elements */ + 604, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -337327,6 +341652,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -337428,6 +341755,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */ 0x1CF7, 0x1CFA, 0x1DC0, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x1E00, 0x200C, 0x200D, @@ -337529,6 +341860,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -337567,6 +341900,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -337659,6 +341994,18 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -337711,12 +342058,16 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -338028,7 +342379,7 @@ static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */ - 27, /* Number of elements */ + 33, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -338049,6 +342400,10 @@ static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */ 0xFDB, 0x180E, 0x180F, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x2007, 0x2008, 0x2011, @@ -338057,6 +342412,8 @@ static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */ 0x2030, 0x13430, 0x13437, + 0x13439, + 0x1343C, 0x16FE4, 0x16FE5 }; @@ -338069,7 +342426,7 @@ static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */ - 27, /* Number of elements */ + 33, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -338090,6 +342447,10 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */ 0xFDB, 0x180E, 0x180F, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x2007, 0x2008, 0x2011, @@ -338098,6 +342459,8 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */ 0x2030, 0x13430, 0x13437, + 0x13439, + 0x1343C, 0x16FE4, 0x16FE5 }; @@ -338110,7 +342473,7 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 037 */ - 27, /* Number of elements */ + 33, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -338131,6 +342494,10 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 037 */ 0xFDB, 0x180E, 0x180F, + 0x1DCD, + 0x1DCE, + 0x1DFC, + 0x1DFD, 0x2007, 0x2008, 0x2011, @@ -338139,6 +342506,8 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 037 */ 0x2030, 0x13430, 0x13437, + 0x13439, + 0x1343C, 0x16FE4, 0x16FE5 }; @@ -339834,7 +344203,7 @@ static const UV UNI_LB__HY_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_LB__ID_invlist[] = { /* for all charsets */ - 335, /* Number of elements */ + 337, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -340029,6 +344398,8 @@ static const UV UNI_LB__ID_invlist[] = { /* for all charsets */ 0xFFDD, 0xFFE2, 0xFFE5, + 0x11F45, + 0x11F50, 0x17000, 0x187F8, 0x18800, @@ -340165,7 +344536,7 @@ static const UV UNI_LB__ID_invlist[] = { /* for all charsets */ 0x1FAC3, 0x1FAC6, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FC00, 0x1FFFE, @@ -340438,7 +344809,7 @@ static const UV UNI_LB__NS_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */ - 125, /* Number of elements */ + 129, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -340551,6 +344922,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -340563,6 +344936,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -340577,7 +344952,7 @@ static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */ - 125, /* Number of elements */ + 129, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -340690,6 +345065,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -340702,6 +345079,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -340716,7 +345095,7 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */ - 125, /* Number of elements */ + 129, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -340829,6 +345208,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -340841,6 +345222,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -340852,7 +345235,7 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__OP_invlist[] = { /* for ASCII/Latin1 */ - 179, /* Number of elements */ + 183, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -341031,6 +345414,10 @@ static const UV UNI_LB__OP_invlist[] = { /* for ASCII/Latin1 */ 0x1337A, 0x13437, 0x13438, + 0x1343C, + 0x1343D, + 0x1343E, + 0x1343F, 0x145CE, 0x145CF, 0x1E95E, @@ -341045,7 +345432,7 @@ static const UV UNI_LB__OP_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 1047 */ - 177, /* Number of elements */ + 181, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -341222,6 +345609,10 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 1047 */ 0x1337A, 0x13437, 0x13438, + 0x1343C, + 0x1343D, + 0x1343E, + 0x1343F, 0x145CE, 0x145CF, 0x1E95E, @@ -341236,7 +345627,7 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 037 */ - 177, /* Number of elements */ + 181, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -341413,6 +345804,10 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 037 */ 0x1337A, 0x13437, 0x13438, + 0x1343C, + 0x1343D, + 0x1343E, + 0x1343F, 0x145CE, 0x145CF, 0x1E95E, @@ -341424,7 +345819,7 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LB__PO_invlist[] = { /* for ASCII/Latin1 */ - 49, /* Number of elements */ + 51, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -341447,6 +345842,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for ASCII/Latin1 */ 0xD7A, 0x2030, 0x2038, + 0x2057, + 0x2058, 0x20A7, 0x20A8, 0x20B6, @@ -341487,7 +345884,7 @@ static const UV UNI_LB__PO_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 1047 */ - 49, /* Number of elements */ + 51, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -341510,6 +345907,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 1047 */ 0xD7A, 0x2030, 0x2038, + 0x2057, + 0x2058, 0x20A7, 0x20A8, 0x20B6, @@ -341550,7 +345949,7 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 037 */ - 49, /* Number of elements */ + 51, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -341573,6 +345972,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 037 */ 0xD7A, 0x2030, 0x2038, + 0x2057, + 0x2058, 0x20A7, 0x20A8, 0x20B6, @@ -341946,7 +346347,7 @@ static const UV UNI_LB__SA_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xEDC, 0xEE0, 0x1000, @@ -342116,7 +346517,7 @@ static const UV UNI_LB__WJ_invlist[] = { /* for all charsets */ }; static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ - 1308, /* Number of elements */ + 1328, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -342363,7 +346764,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -342423,7 +346824,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -342960,7 +347361,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -342995,7 +347396,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -343100,6 +347501,8 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -343142,6 +347545,12 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -343157,9 +347566,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -343212,8 +347619,12 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -343242,6 +347653,8 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -343296,6 +347709,8 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -343306,6 +347721,10 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -343320,6 +347739,8 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -343581,7 +348002,7 @@ static const UV UNI_LISUSUP_invlist[] = { /* for all charsets */ }; static const UV UNI_LM_invlist[] = { /* for all charsets */ - 139, /* Number of elements */ + 143, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -343720,8 +348141,12 @@ static const UV UNI_LM_invlist[] = { /* for all charsets */ 0x1AFFC, 0x1AFFD, 0x1AFFF, + 0x1E030, + 0x1E06E, 0x1E137, 0x1E13E, + 0x1E4EB, + 0x1E4EC, 0x1E94B, 0x1E94C }; @@ -343729,7 +348154,7 @@ static const UV UNI_LM_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ - 1003, /* Number of elements */ + 1021, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -344462,6 +348887,8 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -344584,6 +349011,12 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -344593,7 +349026,9 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -344622,8 +349057,12 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ 0x18D09, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -344646,6 +349085,8 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EB, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -344725,7 +349166,7 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -344735,7 +349176,9 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -344746,7 +349189,7 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ - 1001, /* Number of elements */ + 1019, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -345477,6 +349920,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -345599,6 +350044,12 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -345608,7 +350059,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -345637,8 +350090,12 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ 0x18D09, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -345661,6 +350118,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EB, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -345740,7 +350199,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -345750,7 +350209,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -345761,7 +350222,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ - 1001, /* Number of elements */ + 1019, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -346492,6 +350953,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -346614,6 +351077,12 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -346623,7 +351092,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -346652,8 +351123,12 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ 0x18D09, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -346676,6 +351151,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EB, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -346755,7 +351232,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -346765,7 +351242,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -346825,7 +351304,7 @@ static const UV UNI_LYDI_invlist[] = { /* for all charsets */ }; static const UV UNI_M_invlist[] = { /* for all charsets */ - 599, /* Number of elements */ + 621, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -346990,6 +351469,8 @@ static const UV UNI_M_invlist[] = { /* for all charsets */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -347027,7 +351508,7 @@ static const UV UNI_M_invlist[] = { /* for all charsets */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -347230,6 +351711,8 @@ static const UV UNI_M_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -347268,6 +351751,8 @@ static const UV UNI_M_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -347362,6 +351847,18 @@ static const UV UNI_M_invlist[] = { /* for all charsets */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -347416,12 +351913,16 @@ static const UV UNI_M_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -348411,7 +352912,7 @@ static const UV UNI_MAYANNUMERALS_invlist[] = { /* for all charsets */ }; static const UV UNI_MC_invlist[] = { /* for all charsets */ - 355, /* Number of elements */ + 365, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -348486,6 +352987,8 @@ static const UV UNI_MC_invlist[] = { /* for all charsets */ 0xCCC, 0xCD5, 0xCD7, + 0xCF3, + 0xCF4, 0xD02, 0xD04, 0xD3E, @@ -348762,6 +353265,14 @@ static const UV UNI_MC_invlist[] = { /* for all charsets */ 0x11D97, 0x11EF5, 0x11EF7, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F36, + 0x11F3E, + 0x11F40, + 0x11F41, + 0x11F42, 0x16F51, 0x16F88, 0x16FF0, @@ -348951,7 +353462,7 @@ static const UV UNI_MLYM_invlist[] = { /* for all charsets */ }; static const UV UNI_MN_invlist[] = { /* for all charsets */ - 673, /* Number of elements */ + 693, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -349141,7 +353652,7 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -349402,6 +353913,8 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -349446,6 +353959,8 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112E0, 0x112E3, @@ -349568,6 +354083,18 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */ 0x11D98, 0x11EF3, 0x11EF5, + 0x11F00, + 0x11F02, + 0x11F36, + 0x11F3B, + 0x11F40, + 0x11F41, + 0x11F42, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -349616,12 +354143,16 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -349789,7 +354320,7 @@ static const UV UNI_MYMR_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */ - 269, /* Number of elements */ + 275, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -350020,6 +354551,8 @@ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x11FC0, 0x11FD5, 0x12400, @@ -350034,6 +354567,8 @@ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -350044,6 +354579,8 @@ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E8C7, 0x1E8D0, 0x1E950, @@ -350072,7 +354609,7 @@ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */ - 269, /* Number of elements */ + 275, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -350303,6 +354840,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x11FC0, 0x11FD5, 0x12400, @@ -350317,6 +354856,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -350327,6 +354868,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E8C7, 0x1E8D0, 0x1E950, @@ -350355,7 +354898,7 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */ - 269, /* Number of elements */ + 275, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -350586,6 +355129,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x11FC0, 0x11FD5, 0x12400, @@ -350600,6 +355145,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -350610,6 +355157,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E8C7, 0x1E8D0, 0x1E950, @@ -350632,6 +355181,16 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ +static const UV UNI_NAGM_invlist[] = { /* for all charsets */ + 3, /* Number of elements */ + 148565664, /* Version and data structure type */ + 1, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x1E4D0, + 0x1E4FA +}; + static const UV UNI_NAND_invlist[] = { /* for all charsets */ 19, /* Number of elements */ 148565664, /* Version and data structure type */ @@ -350696,8 +355255,6 @@ static const UV UNI_NB_invlist[] = { /* for all charsets */ 0x10C80, 0x10D40, 0x10E60, - 0x10EC0, - 0x10F00, 0x11250, 0x11280, 0x11380, @@ -350712,17 +355269,17 @@ static const UV UNI_NB_invlist[] = { /* for all charsets */ 0x118A0, 0x11960, 0x119A0, - 0x11B00, + 0x11B60, 0x11C00, 0x11CC0, 0x11D00, 0x11DB0, 0x11EE0, - 0x11F00, + 0x11F60, 0x11FB0, 0x12550, 0x12F90, - 0x13440, + 0x13460, 0x14400, 0x14680, 0x16800, @@ -350741,16 +355298,18 @@ static const UV UNI_NB_invlist[] = { /* for all charsets */ 0x1CFD0, 0x1D000, 0x1D250, - 0x1D2E0, + 0x1D2C0, 0x1D380, 0x1D400, 0x1DAB0, 0x1DF00, - 0x1E030, + 0x1E090, 0x1E100, 0x1E150, 0x1E290, 0x1E300, + 0x1E4D0, + 0x1E500, 0x1E7E0, 0x1E8E0, 0x1E900, @@ -350770,7 +355329,7 @@ static const UV UNI_NB_invlist[] = { /* for all charsets */ 0x2F800, 0x2FA20, 0x30000, - 0x31350, + 0x323B0, 0xE0000, 0xE0080, 0xE0100, @@ -352572,7 +357131,7 @@ static const UV UNI_NFDQC__Y_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */ - 509, /* Number of elements */ + 511, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -352997,6 +357556,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -353095,7 +357656,7 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */ - 515, /* Number of elements */ + 517, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -353526,6 +358087,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -353624,7 +358187,7 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */ - 513, /* Number of elements */ + 515, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -354053,6 +358616,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -354148,7 +358713,7 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */ - 585, /* Number of elements */ + 587, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -354649,6 +359214,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -354747,7 +359314,7 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */ - 591, /* Number of elements */ + 593, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -355254,6 +359821,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -355352,7 +359921,7 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */ - 589, /* Number of elements */ + 591, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -355857,6 +360426,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -355952,7 +360523,7 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */ - 793, /* Number of elements */ + 795, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -356661,6 +361232,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -356759,7 +361332,7 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */ - 791, /* Number of elements */ + 793, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -357466,6 +362039,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -357564,7 +362139,7 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 037 */ - 793, /* Number of elements */ + 795, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -358273,6 +362848,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E030, + 0x1E06E, 0x1EE00, 0x1EE04, 0x1EE05, @@ -358420,7 +362997,7 @@ static const UV UNI_NL_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NO_invlist[] = { /* for ASCII/Latin1 */ - 143, /* Number of elements */ + 145, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -358549,6 +363126,8 @@ static const UV UNI_NO_invlist[] = { /* for ASCII/Latin1 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -358577,7 +363156,7 @@ static const UV UNI_NO_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NO_invlist[] = { /* for EBCDIC 1047 */ - 145, /* Number of elements */ + 147, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -358708,6 +363287,8 @@ static const UV UNI_NO_invlist[] = { /* for EBCDIC 1047 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -358736,7 +363317,7 @@ static const UV UNI_NO_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NO_invlist[] = { /* for EBCDIC 037 */ - 145, /* Number of elements */ + 147, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -358867,6 +363448,8 @@ static const UV UNI_NO_invlist[] = { /* for EBCDIC 037 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -359070,7 +363653,7 @@ static const UV UNI_NT__DI_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NT__NU_invlist[] = { /* for ASCII/Latin1 */ - 303, /* Number of elements */ + 305, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -359327,6 +363910,8 @@ static const UV UNI_NT__NU_invlist[] = { /* for ASCII/Latin1 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -359387,7 +363972,7 @@ static const UV UNI_NT__NU_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 1047 */ - 303, /* Number of elements */ + 305, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -359644,6 +364229,8 @@ static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 1047 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -359704,7 +364291,7 @@ static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 037 */ - 303, /* Number of elements */ + 305, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -359961,6 +364548,8 @@ static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 037 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -360038,7 +364627,7 @@ static const UV UNI_NV___MINUS_1_SLASH_2_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */ - 165, /* Number of elements */ + 171, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -360175,6 +364764,8 @@ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */ 0x11D51, 0x11DA0, 0x11DA1, + 0x11F50, + 0x11F51, 0x16A60, 0x16A61, 0x16AC0, @@ -360183,6 +364774,8 @@ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */ 0x16B51, 0x16E80, 0x16E81, + 0x1D2C0, + 0x1D2C1, 0x1D2E0, 0x1D2E1, 0x1D7CE, @@ -360199,6 +364792,8 @@ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */ 0x1E141, 0x1E2F0, 0x1E2F1, + 0x1E4F0, + 0x1E4F1, 0x1E950, 0x1E951, 0x1F100, @@ -360217,7 +364812,7 @@ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */ - 165, /* Number of elements */ + 171, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -360354,6 +364949,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */ 0x11D51, 0x11DA0, 0x11DA1, + 0x11F50, + 0x11F51, 0x16A60, 0x16A61, 0x16AC0, @@ -360362,6 +364959,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */ 0x16B51, 0x16E80, 0x16E81, + 0x1D2C0, + 0x1D2C1, 0x1D2E0, 0x1D2E1, 0x1D7CE, @@ -360378,6 +364977,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */ 0x1E141, 0x1E2F0, 0x1E2F1, + 0x1E4F0, + 0x1E4F1, 0x1E950, 0x1E951, 0x1F100, @@ -360396,7 +364997,7 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */ - 165, /* Number of elements */ + 171, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -360533,6 +365134,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */ 0x11D51, 0x11DA0, 0x11DA1, + 0x11F50, + 0x11F51, 0x16A60, 0x16A61, 0x16AC0, @@ -360541,6 +365144,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */ 0x16B51, 0x16E80, 0x16E81, + 0x1D2C0, + 0x1D2C1, 0x1D2E0, 0x1D2E1, 0x1D7CE, @@ -360557,6 +365162,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */ 0x1E141, 0x1E2F0, 0x1E2F1, + 0x1E4F0, + 0x1E4F1, 0x1E950, 0x1E951, 0x1F100, @@ -360572,7 +365179,7 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */ - 277, /* Number of elements */ + 283, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -360791,6 +365398,8 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */ 0x11D52, 0x11DA1, 0x11DA2, + 0x11F51, + 0x11F52, 0x12415, 0x12416, 0x1241E, @@ -360813,6 +365422,8 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */ 0x16E82, 0x16E94, 0x16E95, + 0x1D2C1, + 0x1D2C2, 0x1D2E1, 0x1D2E2, 0x1D360, @@ -360835,6 +365446,8 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */ 0x1E142, 0x1E2F1, 0x1E2F2, + 0x1E4F1, + 0x1E4F2, 0x1E8C7, 0x1E8C8, 0x1E951, @@ -360863,7 +365476,7 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */ - 277, /* Number of elements */ + 283, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -361082,6 +365695,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */ 0x11D52, 0x11DA1, 0x11DA2, + 0x11F51, + 0x11F52, 0x12415, 0x12416, 0x1241E, @@ -361104,6 +365719,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */ 0x16E82, 0x16E94, 0x16E95, + 0x1D2C1, + 0x1D2C2, 0x1D2E1, 0x1D2E2, 0x1D360, @@ -361126,6 +365743,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */ 0x1E142, 0x1E2F1, 0x1E2F2, + 0x1E4F1, + 0x1E4F2, 0x1E8C7, 0x1E8C8, 0x1E951, @@ -361154,7 +365773,7 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */ - 277, /* Number of elements */ + 283, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -361373,6 +365992,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */ 0x11D52, 0x11DA1, 0x11DA2, + 0x11F51, + 0x11F52, 0x12415, 0x12416, 0x1241E, @@ -361395,6 +366016,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */ 0x16E82, 0x16E94, 0x16E95, + 0x1D2C1, + 0x1D2C2, 0x1D2E1, 0x1D2E2, 0x1D360, @@ -361417,6 +366040,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */ 0x1E142, 0x1E2F1, 0x1E2F2, + 0x1E4F1, + 0x1E4F2, 0x1E8C7, 0x1E8C8, 0x1E951, @@ -361916,7 +366541,7 @@ static const UV UNI_NV__1_SLASH_9_invlist[] = { /* for all charsets */ }; static const UV UNI_NV__10_invlist[] = { /* for all charsets */ - 117, /* Number of elements */ + 119, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362027,6 +366652,8 @@ static const UV UNI_NV__10_invlist[] = { /* for all charsets */ 0x16B5C, 0x16E8A, 0x16E8B, + 0x1D2CA, + 0x1D2CB, 0x1D2EA, 0x1D2EB, 0x1D369, @@ -362276,7 +366903,7 @@ static const UV UNI_NV__1000000000000_invlist[] = { /* for all charsets */ }; static const UV UNI_NV__11_invlist[] = { /* for all charsets */ - 17, /* Number of elements */ + 19, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362295,6 +366922,8 @@ static const UV UNI_NV__11_invlist[] = { /* for all charsets */ 0x24EC, 0x16E8B, 0x16E8C, + 0x1D2CB, + 0x1D2CC, 0x1D2EB, 0x1D2EC }; @@ -362320,7 +366949,7 @@ static const UV UNI_NV__11_SLASH_2_invlist[] = { /* for all charsets */ }; static const UV UNI_NV__12_invlist[] = { /* for all charsets */ - 17, /* Number of elements */ + 19, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362339,12 +366968,14 @@ static const UV UNI_NV__12_invlist[] = { /* for all charsets */ 0x24ED, 0x16E8C, 0x16E8D, + 0x1D2CC, + 0x1D2CD, 0x1D2EC, 0x1D2ED }; static const UV UNI_NV__13_invlist[] = { /* for all charsets */ - 13, /* Number of elements */ + 15, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362359,6 +366990,8 @@ static const UV UNI_NV__13_invlist[] = { /* for all charsets */ 0x24EE, 0x16E8D, 0x16E8E, + 0x1D2CD, + 0x1D2CE, 0x1D2ED, 0x1D2EE }; @@ -362374,7 +367007,7 @@ static const UV UNI_NV__13_SLASH_2_invlist[] = { /* for all charsets */ }; static const UV UNI_NV__14_invlist[] = { /* for all charsets */ - 13, /* Number of elements */ + 15, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362389,12 +367022,14 @@ static const UV UNI_NV__14_invlist[] = { /* for all charsets */ 0x24EF, 0x16E8E, 0x16E8F, + 0x1D2CE, + 0x1D2CF, 0x1D2EE, 0x1D2EF }; static const UV UNI_NV__15_invlist[] = { /* for all charsets */ - 13, /* Number of elements */ + 15, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362409,6 +367044,8 @@ static const UV UNI_NV__15_invlist[] = { /* for all charsets */ 0x24F0, 0x16E8F, 0x16E90, + 0x1D2CF, + 0x1D2D0, 0x1D2EF, 0x1D2F0 }; @@ -362424,7 +367061,7 @@ static const UV UNI_NV__15_SLASH_2_invlist[] = { /* for all charsets */ }; static const UV UNI_NV__16_invlist[] = { /* for all charsets */ - 15, /* Number of elements */ + 17, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362441,12 +367078,14 @@ static const UV UNI_NV__16_invlist[] = { /* for all charsets */ 0x24F1, 0x16E90, 0x16E91, + 0x1D2D0, + 0x1D2D1, 0x1D2F0, 0x1D2F1 }; static const UV UNI_NV__17_invlist[] = { /* for all charsets */ - 15, /* Number of elements */ + 17, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362463,6 +367102,8 @@ static const UV UNI_NV__17_invlist[] = { /* for all charsets */ 0x24F2, 0x16E91, 0x16E92, + 0x1D2D1, + 0x1D2D2, 0x1D2F1, 0x1D2F2 }; @@ -362478,7 +367119,7 @@ static const UV UNI_NV__17_SLASH_2_invlist[] = { /* for all charsets */ }; static const UV UNI_NV__18_invlist[] = { /* for all charsets */ - 15, /* Number of elements */ + 17, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362495,12 +367136,14 @@ static const UV UNI_NV__18_invlist[] = { /* for all charsets */ 0x24F3, 0x16E92, 0x16E93, + 0x1D2D2, + 0x1D2D3, 0x1D2F2, 0x1D2F3 }; static const UV UNI_NV__19_invlist[] = { /* for all charsets */ - 15, /* Number of elements */ + 17, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362517,6 +367160,8 @@ static const UV UNI_NV__19_invlist[] = { /* for all charsets */ 0x24F4, 0x16E93, 0x16E94, + 0x1D2D3, + 0x1D2D4, 0x1D2F3, 0x1D2F4 }; @@ -362524,7 +367169,7 @@ static const UV UNI_NV__19_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */ - 275, /* Number of elements */ + 281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -362733,6 +367378,8 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */ 0x11D53, 0x11DA2, 0x11DA3, + 0x11F52, + 0x11F53, 0x12400, 0x12401, 0x12416, @@ -362763,6 +367410,8 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */ 0x16E83, 0x16E95, 0x16E96, + 0x1D2C2, + 0x1D2C3, 0x1D2E2, 0x1D2E3, 0x1D361, @@ -362783,6 +367432,8 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */ 0x1E143, 0x1E2F2, 0x1E2F3, + 0x1E4F2, + 0x1E4F3, 0x1E8C8, 0x1E8C9, 0x1E952, @@ -362813,7 +367464,7 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */ - 275, /* Number of elements */ + 281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -363022,6 +367673,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */ 0x11D53, 0x11DA2, 0x11DA3, + 0x11F52, + 0x11F53, 0x12400, 0x12401, 0x12416, @@ -363052,6 +367705,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */ 0x16E83, 0x16E95, 0x16E96, + 0x1D2C2, + 0x1D2C3, 0x1D2E2, 0x1D2E3, 0x1D361, @@ -363072,6 +367727,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */ 0x1E143, 0x1E2F2, 0x1E2F3, + 0x1E4F2, + 0x1E4F3, 0x1E8C8, 0x1E8C9, 0x1E952, @@ -363102,7 +367759,7 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */ - 275, /* Number of elements */ + 281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -363311,6 +367968,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */ 0x11D53, 0x11DA2, 0x11DA3, + 0x11F52, + 0x11F53, 0x12400, 0x12401, 0x12416, @@ -363341,6 +368000,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */ 0x16E83, 0x16E95, 0x16E96, + 0x1D2C2, + 0x1D2C3, 0x1D2E2, 0x1D2E3, 0x1D361, @@ -363361,6 +368022,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */ 0x1E143, 0x1E2F2, 0x1E2F3, + 0x1E4F2, + 0x1E4F3, 0x1E8C8, 0x1E8C9, 0x1E952, @@ -363676,7 +368339,7 @@ static const UV UNI_NV__29_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */ - 269, /* Number of elements */ + 275, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -363873,6 +368536,8 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */ 0x11D54, 0x11DA3, 0x11DA4, + 0x11F53, + 0x11F54, 0x12401, 0x12402, 0x12408, @@ -363905,6 +368570,8 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */ 0x16E84, 0x16E96, 0x16E97, + 0x1D2C3, + 0x1D2C4, 0x1D2E3, 0x1D2E4, 0x1D362, @@ -363925,6 +368592,8 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */ 0x1E144, 0x1E2F3, 0x1E2F4, + 0x1E4F3, + 0x1E4F4, 0x1E8C9, 0x1E8CA, 0x1E953, @@ -363959,7 +368628,7 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */ - 269, /* Number of elements */ + 275, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -364156,6 +368825,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */ 0x11D54, 0x11DA3, 0x11DA4, + 0x11F53, + 0x11F54, 0x12401, 0x12402, 0x12408, @@ -364188,6 +368859,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */ 0x16E84, 0x16E96, 0x16E97, + 0x1D2C3, + 0x1D2C4, 0x1D2E3, 0x1D2E4, 0x1D362, @@ -364208,6 +368881,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */ 0x1E144, 0x1E2F3, 0x1E2F4, + 0x1E4F3, + 0x1E4F4, 0x1E8C9, 0x1E8CA, 0x1E953, @@ -364242,7 +368917,7 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */ - 269, /* Number of elements */ + 275, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -364439,6 +369114,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */ 0x11D54, 0x11DA3, 0x11DA4, + 0x11F53, + 0x11F54, 0x12401, 0x12402, 0x12408, @@ -364471,6 +369148,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */ 0x16E84, 0x16E96, 0x16E97, + 0x1D2C3, + 0x1D2C4, 0x1D2E3, 0x1D2E4, 0x1D362, @@ -364491,6 +369170,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */ 0x1E144, 0x1E2F3, 0x1E2F4, + 0x1E4F3, + 0x1E4F4, 0x1E8C9, 0x1E8CA, 0x1E953, @@ -364900,7 +369581,7 @@ static const UV UNI_NV__39_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */ - 255, /* Number of elements */ + 261, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -365085,6 +369766,8 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */ 0x11D55, 0x11DA4, 0x11DA5, + 0x11F54, + 0x11F55, 0x12402, 0x12403, 0x12409, @@ -365117,6 +369800,8 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */ 0x16B55, 0x16E84, 0x16E85, + 0x1D2C4, + 0x1D2C5, 0x1D2E4, 0x1D2E5, 0x1D363, @@ -365137,6 +369822,8 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */ 0x1E145, 0x1E2F4, 0x1E2F5, + 0x1E4F4, + 0x1E4F5, 0x1E8CA, 0x1E8CB, 0x1E954, @@ -365169,7 +369856,7 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */ - 255, /* Number of elements */ + 261, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -365354,6 +370041,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */ 0x11D55, 0x11DA4, 0x11DA5, + 0x11F54, + 0x11F55, 0x12402, 0x12403, 0x12409, @@ -365386,6 +370075,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */ 0x16B55, 0x16E84, 0x16E85, + 0x1D2C4, + 0x1D2C5, 0x1D2E4, 0x1D2E5, 0x1D363, @@ -365406,6 +370097,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */ 0x1E145, 0x1E2F4, 0x1E2F5, + 0x1E4F4, + 0x1E4F5, 0x1E8CA, 0x1E8CB, 0x1E954, @@ -365438,7 +370131,7 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */ - 255, /* Number of elements */ + 261, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -365623,6 +370316,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */ 0x11D55, 0x11DA4, 0x11DA5, + 0x11F54, + 0x11F55, 0x12402, 0x12403, 0x12409, @@ -365655,6 +370350,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */ 0x16B55, 0x16E84, 0x16E85, + 0x1D2C4, + 0x1D2C5, 0x1D2E4, 0x1D2E5, 0x1D363, @@ -365675,6 +370372,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */ 0x1E145, 0x1E2F4, 0x1E2F5, + 0x1E4F4, + 0x1E4F5, 0x1E8CA, 0x1E8CB, 0x1E954, @@ -365922,7 +370621,7 @@ static const UV UNI_NV__49_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */ - 259, /* Number of elements */ + 265, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -366115,6 +370814,8 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */ 0x11D56, 0x11DA5, 0x11DA6, + 0x11F55, + 0x11F56, 0x12403, 0x12404, 0x1240A, @@ -366145,6 +370846,8 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */ 0x16B56, 0x16E85, 0x16E86, + 0x1D2C5, + 0x1D2C6, 0x1D2E5, 0x1D2E6, 0x1D364, @@ -366167,6 +370870,8 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */ 0x1E146, 0x1E2F5, 0x1E2F6, + 0x1E4F5, + 0x1E4F6, 0x1E8CB, 0x1E8CC, 0x1E955, @@ -366195,7 +370900,7 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */ - 259, /* Number of elements */ + 265, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -366388,6 +371093,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */ 0x11D56, 0x11DA5, 0x11DA6, + 0x11F55, + 0x11F56, 0x12403, 0x12404, 0x1240A, @@ -366418,6 +371125,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */ 0x16B56, 0x16E85, 0x16E86, + 0x1D2C5, + 0x1D2C6, 0x1D2E5, 0x1D2E6, 0x1D364, @@ -366440,6 +371149,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */ 0x1E146, 0x1E2F5, 0x1E2F6, + 0x1E4F5, + 0x1E4F6, 0x1E8CB, 0x1E8CC, 0x1E955, @@ -366468,7 +371179,7 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */ - 259, /* Number of elements */ + 265, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -366661,6 +371372,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */ 0x11D56, 0x11DA5, 0x11DA6, + 0x11F55, + 0x11F56, 0x12403, 0x12404, 0x1240A, @@ -366691,6 +371404,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */ 0x16B56, 0x16E85, 0x16E86, + 0x1D2C5, + 0x1D2C6, 0x1D2E5, 0x1D2E6, 0x1D364, @@ -366713,6 +371428,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */ 0x1E146, 0x1E2F5, 0x1E2F6, + 0x1E4F5, + 0x1E4F6, 0x1E8CB, 0x1E8CC, 0x1E955, @@ -366930,7 +371647,7 @@ static const UV UNI_NV__500000_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */ - 229, /* Number of elements */ + 235, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -367103,6 +371820,8 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */ 0x11D57, 0x11DA6, 0x11DA7, + 0x11F56, + 0x11F57, 0x12404, 0x12405, 0x1240B, @@ -367127,6 +371846,8 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */ 0x16B57, 0x16E86, 0x16E87, + 0x1D2C6, + 0x1D2C7, 0x1D2E6, 0x1D2E7, 0x1D365, @@ -367145,6 +371866,8 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */ 0x1E147, 0x1E2F6, 0x1E2F7, + 0x1E4F6, + 0x1E4F7, 0x1E8CC, 0x1E8CD, 0x1E956, @@ -367173,7 +371896,7 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */ - 229, /* Number of elements */ + 235, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -367346,6 +372069,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */ 0x11D57, 0x11DA6, 0x11DA7, + 0x11F56, + 0x11F57, 0x12404, 0x12405, 0x1240B, @@ -367370,6 +372095,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */ 0x16B57, 0x16E86, 0x16E87, + 0x1D2C6, + 0x1D2C7, 0x1D2E6, 0x1D2E7, 0x1D365, @@ -367388,6 +372115,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */ 0x1E147, 0x1E2F6, 0x1E2F7, + 0x1E4F6, + 0x1E4F7, 0x1E8CC, 0x1E8CD, 0x1E956, @@ -367416,7 +372145,7 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */ - 229, /* Number of elements */ + 235, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -367589,6 +372318,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */ 0x11D57, 0x11DA6, 0x11DA7, + 0x11F56, + 0x11F57, 0x12404, 0x12405, 0x1240B, @@ -367613,6 +372344,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */ 0x16B57, 0x16E86, 0x16E87, + 0x1D2C6, + 0x1D2C7, 0x1D2E6, 0x1D2E7, 0x1D365, @@ -367631,6 +372364,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */ 0x1E147, 0x1E2F6, 0x1E2F7, + 0x1E4F6, + 0x1E4F7, 0x1E8CC, 0x1E8CD, 0x1E956, @@ -367754,7 +372489,7 @@ static const UV UNI_NV__600000_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */ - 223, /* Number of elements */ + 229, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -367923,6 +372658,8 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */ 0x11D58, 0x11DA7, 0x11DA8, + 0x11F57, + 0x11F58, 0x12405, 0x12406, 0x1240C, @@ -367945,6 +372682,8 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */ 0x16B58, 0x16E87, 0x16E88, + 0x1D2C7, + 0x1D2C8, 0x1D2E7, 0x1D2E8, 0x1D366, @@ -367963,6 +372702,8 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */ 0x1E148, 0x1E2F7, 0x1E2F8, + 0x1E4F7, + 0x1E4F8, 0x1E8CD, 0x1E8CE, 0x1E957, @@ -367991,7 +372732,7 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */ - 223, /* Number of elements */ + 229, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -368160,6 +372901,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */ 0x11D58, 0x11DA7, 0x11DA8, + 0x11F57, + 0x11F58, 0x12405, 0x12406, 0x1240C, @@ -368182,6 +372925,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */ 0x16B58, 0x16E87, 0x16E88, + 0x1D2C7, + 0x1D2C8, 0x1D2E7, 0x1D2E8, 0x1D366, @@ -368200,6 +372945,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */ 0x1E148, 0x1E2F7, 0x1E2F8, + 0x1E4F7, + 0x1E4F8, 0x1E8CD, 0x1E8CE, 0x1E957, @@ -368228,7 +372975,7 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */ - 223, /* Number of elements */ + 229, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -368397,6 +373144,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */ 0x11D58, 0x11DA7, 0x11DA8, + 0x11F57, + 0x11F58, 0x12405, 0x12406, 0x1240C, @@ -368419,6 +373168,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */ 0x16B58, 0x16E87, 0x16E88, + 0x1D2C7, + 0x1D2C8, 0x1D2E7, 0x1D2E8, 0x1D366, @@ -368437,6 +373188,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */ 0x1E148, 0x1E2F7, 0x1E2F8, + 0x1E4F7, + 0x1E4F8, 0x1E8CD, 0x1E8CE, 0x1E957, @@ -368588,7 +373341,7 @@ static const UV UNI_NV__700000_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */ - 217, /* Number of elements */ + 223, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -368753,6 +373506,8 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */ 0x11D59, 0x11DA8, 0x11DA9, + 0x11F58, + 0x11F59, 0x12406, 0x12407, 0x1240D, @@ -368775,6 +373530,8 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */ 0x16B59, 0x16E88, 0x16E89, + 0x1D2C8, + 0x1D2C9, 0x1D2E8, 0x1D2E9, 0x1D367, @@ -368793,6 +373550,8 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */ 0x1E149, 0x1E2F8, 0x1E2F9, + 0x1E4F8, + 0x1E4F9, 0x1E8CE, 0x1E8CF, 0x1E958, @@ -368819,7 +373578,7 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */ - 217, /* Number of elements */ + 223, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -368984,6 +373743,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */ 0x11D59, 0x11DA8, 0x11DA9, + 0x11F58, + 0x11F59, 0x12406, 0x12407, 0x1240D, @@ -369006,6 +373767,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */ 0x16B59, 0x16E88, 0x16E89, + 0x1D2C8, + 0x1D2C9, 0x1D2E8, 0x1D2E9, 0x1D367, @@ -369024,6 +373787,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */ 0x1E149, 0x1E2F8, 0x1E2F9, + 0x1E4F8, + 0x1E4F9, 0x1E8CE, 0x1E8CF, 0x1E958, @@ -369050,7 +373815,7 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */ - 217, /* Number of elements */ + 223, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -369215,6 +373980,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */ 0x11D59, 0x11DA8, 0x11DA9, + 0x11F58, + 0x11F59, 0x12406, 0x12407, 0x1240D, @@ -369237,6 +374004,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */ 0x16B59, 0x16E88, 0x16E89, + 0x1D2C8, + 0x1D2C9, 0x1D2E8, 0x1D2E9, 0x1D367, @@ -369255,6 +374024,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */ 0x1E149, 0x1E2F8, 0x1E2F9, + 0x1E4F8, + 0x1E4F9, 0x1E8CE, 0x1E8CF, 0x1E958, @@ -369372,7 +374143,7 @@ static const UV UNI_NV__800000_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */ - 221, /* Number of elements */ + 227, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -369539,6 +374310,8 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */ 0x11D5A, 0x11DA9, 0x11DAA, + 0x11F59, + 0x11F5A, 0x12407, 0x12408, 0x1240E, @@ -369561,6 +374334,8 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */ 0x16B5A, 0x16E89, 0x16E8A, + 0x1D2C9, + 0x1D2CA, 0x1D2E9, 0x1D2EA, 0x1D368, @@ -369579,6 +374354,8 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */ 0x1E14A, 0x1E2F9, 0x1E2FA, + 0x1E4F9, + 0x1E4FA, 0x1E8CF, 0x1E8D0, 0x1E959, @@ -369607,7 +374384,7 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */ - 221, /* Number of elements */ + 227, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -369774,6 +374551,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */ 0x11D5A, 0x11DA9, 0x11DAA, + 0x11F59, + 0x11F5A, 0x12407, 0x12408, 0x1240E, @@ -369796,6 +374575,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */ 0x16B5A, 0x16E89, 0x16E8A, + 0x1D2C9, + 0x1D2CA, 0x1D2E9, 0x1D2EA, 0x1D368, @@ -369814,6 +374595,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */ 0x1E14A, 0x1E2F9, 0x1E2FA, + 0x1E4F9, + 0x1E4FA, 0x1E8CF, 0x1E8D0, 0x1E959, @@ -369842,7 +374625,7 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */ - 221, /* Number of elements */ + 227, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -370009,6 +374792,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */ 0x11D5A, 0x11DA9, 0x11DAA, + 0x11F59, + 0x11F5A, 0x12407, 0x12408, 0x1240E, @@ -370031,6 +374816,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */ 0x16B5A, 0x16E89, 0x16E8A, + 0x1D2C9, + 0x1D2CA, 0x1D2E9, 0x1D2EA, 0x1D368, @@ -370049,6 +374836,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */ 0x1E14A, 0x1E2F9, 0x1E2FA, + 0x1E4F9, + 0x1E4FA, 0x1E8CF, 0x1E8D0, 0x1E959, @@ -370180,7 +374969,7 @@ static const UV UNI_NV__900000_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */ - 413, /* Number of elements */ + 419, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -370523,6 +375312,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x11FC0, 0x11FD5, 0x12400, @@ -370537,6 +375328,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -370547,6 +375340,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E8C7, 0x1E8D0, 0x1E950, @@ -370607,7 +375402,7 @@ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */ - 413, /* Number of elements */ + 419, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -370950,6 +375745,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x11FC0, 0x11FD5, 0x12400, @@ -370964,6 +375761,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -370974,6 +375773,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E8C7, 0x1E8D0, 0x1E950, @@ -371034,7 +375835,7 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 037 */ - 413, /* Number of elements */ + 419, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -371377,6 +376178,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 037 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x11FC0, 0x11FD5, 0x12400, @@ -371391,6 +376194,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 037 */ 0x16B62, 0x16E80, 0x16E97, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D360, @@ -371401,6 +376206,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 037 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E8C7, 0x1E8D0, 0x1E950, @@ -371600,7 +376407,7 @@ static const UV UNI_OUGR_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */ - 379, /* Number of elements */ + 383, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -371953,12 +376760,16 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -371993,7 +376804,7 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */ - 387, /* Number of elements */ + 391, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -372354,12 +377165,16 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -372394,7 +377209,7 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */ - 385, /* Number of elements */ + 389, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -372753,12 +377568,16 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -374096,7 +378915,7 @@ static const UV UNI_PLAYINGCARDS_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */ - 371, /* Number of elements */ + 375, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -374441,12 +379260,16 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -374481,7 +379304,7 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */ - 375, /* Number of elements */ + 379, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -374830,12 +379653,16 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -374870,7 +379697,7 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */ - 375, /* Number of elements */ + 379, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -375219,12 +380046,16 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */ 0x11A9D, 0x11A9E, 0x11AA3, + 0x11B00, + 0x11B0A, 0x11C41, 0x11C46, 0x11C70, 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F50, 0x11FFF, 0x12000, 0x12470, @@ -376038,7 +380869,7 @@ static const UV UNI_RUNR_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */ - 469, /* Number of elements */ + 465, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -376461,14 +381292,14 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -376490,23 +381321,19 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -376521,7 +381348,7 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */ - 475, /* Number of elements */ + 471, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -376950,14 +381777,14 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -376979,23 +381806,19 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -377010,7 +381833,7 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */ - 473, /* Number of elements */ + 469, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -377437,14 +382260,14 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -377466,23 +382289,19 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -377906,7 +382725,7 @@ static const UV UNI_SB__CL_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */ - 605, /* Number of elements */ + 627, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -378071,6 +382890,8 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -378108,7 +382929,7 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -378315,6 +383136,8 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -378353,6 +383176,8 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -378447,6 +383272,18 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -378501,12 +383338,16 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -378560,7 +383401,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for ASCII/Latin1 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -378617,7 +383458,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 1047 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -378674,7 +383515,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 037 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -378686,7 +383527,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ - 1073, /* Number of elements */ + 1087, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -378995,7 +383836,7 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x108F, 0x10D0, 0x10FB, - 0x10FC, + 0x10FD, 0x1249, 0x124A, 0x124E, @@ -379187,8 +384028,6 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0xA789, 0xA78F, 0xA790, - 0xA7F2, - 0xA7F5, 0xA7F7, 0xA7F8, 0xA7FB, @@ -379263,8 +384102,6 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0xAB27, 0xAB28, 0xAB2F, - 0xAB69, - 0xAB6A, 0xABC0, 0xABE3, 0xAC00, @@ -379469,6 +384306,8 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -379591,6 +384430,12 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -379602,7 +384447,9 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -379645,8 +384492,12 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -379671,6 +384522,8 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -379752,7 +384605,7 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -379762,13 +384615,15 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */ - 1331, /* Number of elements */ + 1339, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -380321,6 +385176,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */ 0x530, 0x560, 0x589, + 0x10FC, + 0x10FD, 0x13F8, 0x13FE, 0x1C80, @@ -380999,6 +385856,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */ 0xA7D8, 0xA7D9, 0xA7DA, + 0xA7F2, + 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, @@ -381006,7 +385865,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -381101,6 +385960,10 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E922, 0x1E944 }; @@ -381113,7 +385976,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */ - 1339, /* Number of elements */ + 1347, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -381674,6 +386537,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */ 0x530, 0x560, 0x589, + 0x10FC, + 0x10FD, 0x13F8, 0x13FE, 0x1C80, @@ -382352,6 +387217,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */ 0xA7D8, 0xA7D9, 0xA7DA, + 0xA7F2, + 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, @@ -382359,7 +387226,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -382454,6 +387321,10 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E922, 0x1E944 }; @@ -382466,7 +387337,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */ - 1339, /* Number of elements */ + 1347, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -383027,6 +387898,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */ 0x530, 0x560, 0x589, + 0x10FC, + 0x10FD, 0x13F8, 0x13FE, 0x1C80, @@ -383705,6 +388578,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */ 0xA7D8, 0xA7D9, 0xA7DA, + 0xA7F2, + 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, @@ -383712,7 +388587,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */ 0xAB30, 0xAB5B, 0xAB5C, - 0xAB69, + 0xAB6A, 0xAB70, 0xABC0, 0xFB00, @@ -383807,6 +388682,10 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */ 0x1DF0A, 0x1DF0B, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E922, 0x1E944 }; @@ -383816,7 +388695,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */ - 127, /* Number of elements */ + 131, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -383931,6 +388810,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -383943,6 +388824,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -383957,7 +388840,7 @@ static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */ - 127, /* Number of elements */ + 131, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -384072,6 +388955,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -384084,6 +388969,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -384098,7 +388985,7 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 037 */ - 127, /* Number of elements */ + 131, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -384213,6 +389100,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 037 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -384225,6 +389114,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 037 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -384542,7 +389433,7 @@ static const UV UNI_SB__SP_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */ - 153, /* Number of elements */ + 155, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -384685,6 +389576,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */ 0x11C43, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x16A6E, 0x16A70, 0x16AF5, @@ -384709,7 +389602,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */ - 153, /* Number of elements */ + 155, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -384852,6 +389745,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */ 0x11C43, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x16A6E, 0x16A70, 0x16AF5, @@ -384876,7 +389771,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */ - 153, /* Number of elements */ + 155, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -385019,6 +389914,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */ 0x11C43, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x16A6E, 0x16A70, 0x16AF5, @@ -389026,7 +393923,7 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ - 1661, /* Number of elements */ + 1681, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -389374,7 +394271,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -389440,7 +394337,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -390157,7 +395054,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -390210,7 +395107,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1123B, 0x1123D, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -390379,6 +395276,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -390390,9 +395295,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -390449,8 +395352,12 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -390557,6 +395464,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -390567,6 +395476,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -390579,6 +395492,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -390674,7 +395589,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -390685,6 +395600,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -390701,7 +395618,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ - 1681, /* Number of elements */ + 1701, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -391069,7 +395986,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -391135,7 +396052,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -391852,7 +396769,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -391905,7 +396822,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1123B, 0x1123D, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -392074,6 +396991,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -392085,9 +397010,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -392144,8 +397067,12 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -392252,6 +397179,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -392262,6 +397191,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -392274,6 +397207,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -392369,7 +397304,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -392380,6 +397315,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -392396,7 +397333,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ - 1679, /* Number of elements */ + 1699, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -392762,7 +397699,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -392828,7 +397765,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -393545,7 +398482,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -393598,7 +398535,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1123B, 0x1123D, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -393767,6 +398704,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F45, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -393778,9 +398723,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -393837,8 +398780,12 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -393945,6 +398892,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -393955,6 +398904,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -393967,6 +398920,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -394062,7 +399017,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -394073,6 +399028,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -394274,7 +399231,7 @@ static const UV UNI_SC__ADLM_invlist[] = { /* for all charsets */ }; static const UV UNI_SC__ARAB_invlist[] = { /* for all charsets */ - 115, /* Number of elements */ + 117, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -394325,6 +399282,8 @@ static const UV UNI_SC__ARAB_invlist[] = { /* for all charsets */ 0xFEFD, 0x10E60, 0x10E7F, + 0x10EFD, + 0x10F00, 0x1EE00, 0x1EE04, 0x1EE05, @@ -394524,7 +399483,7 @@ static const UV UNI_SC__CPRT_invlist[] = { /* for all charsets */ }; static const UV UNI_SC__CYRL_invlist[] = { /* for all charsets */ - 17, /* Number of elements */ + 21, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -394544,11 +399503,15 @@ static const UV UNI_SC__CYRL_invlist[] = { /* for all charsets */ 0xA640, 0xA6A0, 0xFE2E, - 0xFE30 + 0xFE30, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090 }; static const UV UNI_SC__DEVA_invlist[] = { /* for all charsets */ - 9, /* Number of elements */ + 11, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -394560,7 +399523,9 @@ static const UV UNI_SC__DEVA_invlist[] = { /* for all charsets */ 0x966, 0x980, 0xA8E0, - 0xA900 + 0xA900, + 0x11B00, + 0x11B0A }; static const UV UNI_SC__DOGR_invlist[] = { /* for all charsets */ @@ -394876,7 +399841,7 @@ static const UV UNI_SC__GURU_invlist[] = { /* for all charsets */ }; static const UV UNI_SC__HAN_invlist[] = { /* for all charsets */ - 41, /* Number of elements */ + 43, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -394910,7 +399875,7 @@ static const UV UNI_SC__HAN_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -394920,7 +399885,9 @@ static const UV UNI_SC__HAN_invlist[] = { /* for all charsets */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; static const UV UNI_SC__HANG_invlist[] = { /* for all charsets */ @@ -394970,7 +399937,7 @@ static const UV UNI_SC__HANO_invlist[] = { /* for all charsets */ }; static const UV UNI_SC__HIRA_invlist[] = { /* for all charsets */ - 11, /* Number of elements */ + 13, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -394981,6 +399948,8 @@ static const UV UNI_SC__HIRA_invlist[] = { /* for all charsets */ 0x30A0, 0x1B001, 0x1B120, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, 0x1F200, @@ -395014,7 +399983,7 @@ static const UV UNI_SC__KALI_invlist[] = { /* for all charsets */ }; static const UV UNI_SC__KANA_invlist[] = { /* for all charsets */ - 27, /* Number of elements */ + 29, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -395043,6 +400012,8 @@ static const UV UNI_SC__KANA_invlist[] = { /* for all charsets */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168 }; @@ -395056,7 +400027,7 @@ static const UV UNI_SC__KHOJ_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F + 0x11242 }; static const UV UNI_SC__KNDA_invlist[] = { /* for all charsets */ @@ -395090,7 +400061,7 @@ static const UV UNI_SC__KNDA_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3 + 0xCF4 }; static const UV UNI_SC__KTHI_invlist[] = { /* for all charsets */ @@ -395108,7 +400079,7 @@ static const UV UNI_SC__KTHI_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SC__LATN_invlist[] = { /* for ASCII/Latin1 */ - 77, /* Number of elements */ + 79, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -395188,7 +400159,9 @@ static const UV UNI_SC__LATN_invlist[] = { /* for ASCII/Latin1 */ 0x107B2, 0x107BB, 0x1DF00, - 0x1DF1F + 0x1DF1F, + 0x1DF25, + 0x1DF2B }; # endif /* ASCII/Latin1 */ @@ -395199,7 +400172,7 @@ static const UV UNI_SC__LATN_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 1047 */ - 103, /* Number of elements */ + 105, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -395305,7 +400278,9 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 1047 */ 0x107B2, 0x107BB, 0x1DF00, - 0x1DF1F + 0x1DF1F, + 0x1DF25, + 0x1DF2B }; # endif /* EBCDIC 1047 */ @@ -395316,7 +400291,7 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 037 */ - 99, /* Number of elements */ + 101, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -395418,7 +400393,9 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 037 */ 0x107B2, 0x107BB, 0x1DF00, - 0x1DF1F + 0x1DF1F, + 0x1DF25, + 0x1DF2B }; # endif /* EBCDIC 037 */ @@ -396052,7 +401029,7 @@ static const UV UNI_SC__YI_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */ - 348, /* Number of elements */ + 346, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -396268,6 +401245,8 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */ 0x1D1AA, 0x1D1AE, 0x1D1EB, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -396348,14 +401327,14 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -396377,23 +401356,19 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -396414,7 +401389,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */ - 374, /* Number of elements */ + 372, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -396656,6 +401631,8 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */ 0x1D1AA, 0x1D1AE, 0x1D1EB, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -396736,14 +401713,14 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -396765,23 +401742,19 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -396802,7 +401775,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */ - 370, /* Number of elements */ + 368, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -397040,6 +402013,8 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */ 0x1D1AA, 0x1D1AE, 0x1D1EB, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -397120,14 +402095,14 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -397149,23 +402124,19 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -397183,7 +402154,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SD_invlist[] = { /* for ASCII/Latin1 */ - 65, /* Number of elements */ + 69, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -397251,7 +402222,11 @@ static const UV UNI_SD_invlist[] = { /* for ASCII/Latin1 */ 0x1D692, 0x1D694, 0x1DF1A, - 0x1DF1B + 0x1DF1B, + 0x1E04C, + 0x1E04E, + 0x1E068, + 0x1E069 }; # endif /* ASCII/Latin1 */ @@ -397262,7 +402237,7 @@ static const UV UNI_SD_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SD_invlist[] = { /* for EBCDIC 1047 */ - 67, /* Number of elements */ + 71, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -397332,7 +402307,11 @@ static const UV UNI_SD_invlist[] = { /* for EBCDIC 1047 */ 0x1D692, 0x1D694, 0x1DF1A, - 0x1DF1B + 0x1DF1B, + 0x1E04C, + 0x1E04E, + 0x1E068, + 0x1E069 }; # endif /* EBCDIC 1047 */ @@ -397343,7 +402322,7 @@ static const UV UNI_SD_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SD_invlist[] = { /* for EBCDIC 037 */ - 67, /* Number of elements */ + 71, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -397413,7 +402392,11 @@ static const UV UNI_SD_invlist[] = { /* for EBCDIC 037 */ 0x1D692, 0x1D694, 0x1DF1A, - 0x1DF1B + 0x1DF1B, + 0x1E04C, + 0x1E04E, + 0x1E068, + 0x1E069 }; # endif /* EBCDIC 037 */ @@ -398221,7 +403204,7 @@ static const UV UNI_SMALLKANAEXT_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */ - 373, /* Number of elements */ + 369, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -398548,14 +403531,14 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */ 0x1F3FB, 0x1F400, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -398577,23 +403560,19 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -398608,7 +403587,7 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */ - 373, /* Number of elements */ + 369, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -398935,14 +403914,14 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */ 0x1F3FB, 0x1F400, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -398964,23 +403943,19 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -398995,7 +403970,7 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */ - 373, /* Number of elements */ + 369, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -399322,14 +404297,14 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */ 0x1F3FB, 0x1F400, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -399351,23 +404326,19 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -399433,7 +404404,7 @@ static const UV UNI_SPECIALS_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */ - 159, /* Number of elements */ + 161, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -399582,6 +404553,8 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */ 0x11C43, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x16A6E, 0x16A70, 0x16AF5, @@ -399606,7 +404579,7 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */ - 159, /* Number of elements */ + 161, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -399755,6 +404728,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */ 0x11C43, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x16A6E, 0x16A70, 0x16AF5, @@ -399779,7 +404754,7 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */ - 159, /* Number of elements */ + 161, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -399928,6 +404903,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */ 0x11C43, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x16A6E, 0x16A70, 0x16AF5, @@ -400387,7 +405364,7 @@ static const UV UNI_TELU_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */ - 215, /* Number of elements */ + 217, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -400590,6 +405567,8 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */ 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x12470, 0x12475, 0x16A6E, @@ -400616,7 +405595,7 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */ - 217, /* Number of elements */ + 219, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -400821,6 +405800,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */ 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x12470, 0x12475, 0x16A6E, @@ -400847,7 +405828,7 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */ - 217, /* Number of elements */ + 219, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -401052,6 +406033,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */ 0x11C72, 0x11EF7, 0x11EF9, + 0x11F43, + 0x11F45, 0x12470, 0x12475, 0x16A6E, @@ -401251,7 +406234,7 @@ static const UV UNI_UGAR_invlist[] = { /* for all charsets */ }; static const UV UNI_UIDEO_invlist[] = { /* for all charsets */ - 31, /* Number of elements */ + 33, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -401277,7 +406260,7 @@ static const UV UNI_UIDEO_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -401285,7 +406268,9 @@ static const UV UNI_UIDEO_invlist[] = { /* for all charsets */ 0x2CEB0, 0x2EBE1, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; static const UV UNI_VAI_invlist[] = { /* for all charsets */ @@ -401501,7 +406486,7 @@ static const UV UNI_VO__R_invlist[] = { /* for ASCII/Latin1 */ 0x11A00, 0x11AC0, 0x13000, - 0x13440, + 0x13460, 0x14400, 0x14680, 0x16FE0, @@ -401692,7 +406677,7 @@ static const UV UNI_VO__R_invlist[] = { /* for EBCDIC 1047 */ 0x11A00, 0x11AC0, 0x13000, - 0x13440, + 0x13460, 0x14400, 0x14680, 0x16FE0, @@ -401883,7 +406868,7 @@ static const UV UNI_VO__R_invlist[] = { /* for EBCDIC 037 */ 0x11A00, 0x11AC0, 0x13000, - 0x13440, + 0x13460, 0x14400, 0x14680, 0x16FE0, @@ -402261,7 +407246,7 @@ static const UV UNI_VO__U_invlist[] = { /* for ASCII/Latin1 */ 0x11A00, 0x11AC0, 0x13000, - 0x13440, + 0x13460, 0x14400, 0x14680, 0x16FE0, @@ -402530,7 +407515,7 @@ static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 1047 */ 0x11A00, 0x11AC0, 0x13000, - 0x13440, + 0x13460, 0x14400, 0x14680, 0x16FE0, @@ -402799,7 +407784,7 @@ static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 037 */ 0x11A00, 0x11AC0, 0x13000, - 0x13440, + 0x13460, 0x14400, 0x14680, 0x16FE0, @@ -403010,7 +407995,7 @@ static const UV UNI_WB__EX_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */ - 607, /* Number of elements */ + 629, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -403175,6 +408160,8 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */ 0xCD7, 0xCE2, 0xCE4, + 0xCF3, + 0xCF4, 0xD00, 0xD04, 0xD3B, @@ -403212,7 +408199,7 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xF18, 0xF1A, 0xF35, @@ -403419,6 +408406,8 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */ 0x10D28, 0x10EAB, 0x10EAD, + 0x10EFD, + 0x10F00, 0x10F46, 0x10F51, 0x10F82, @@ -403457,6 +408446,8 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */ 0x11238, 0x1123E, 0x1123F, + 0x11241, + 0x11242, 0x112DF, 0x112EB, 0x11300, @@ -403551,6 +408542,18 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */ 0x11D98, 0x11EF3, 0x11EF7, + 0x11F00, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F34, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x13440, + 0x13441, + 0x13447, + 0x13456, 0x16AF0, 0x16AF5, 0x16B30, @@ -403605,12 +408608,16 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E08F, + 0x1E090, 0x1E130, 0x1E137, 0x1E2AE, 0x1E2AF, 0x1E2EC, 0x1E2F0, + 0x1E4EC, + 0x1E4F0, 0x1E8D0, 0x1E8D7, 0x1E944, @@ -403664,7 +408671,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for ASCII/Latin1 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -403719,7 +408726,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 1047 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -403774,7 +408781,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 037 */ 0x110CD, 0x110CE, 0x13430, - 0x13439, + 0x13440, 0x1BCA0, 0x1BCA4, 0x1D173, @@ -403786,7 +408793,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_WB__KA_invlist[] = { /* for all charsets */ - 29, /* Number of elements */ + 31, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -403817,6 +408824,8 @@ static const UV UNI_WB__KA_invlist[] = { /* for all charsets */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168 }; @@ -403824,7 +408833,7 @@ static const UV UNI_WB__KA_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */ - 1141, /* Number of elements */ + 1157, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -404641,6 +409650,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -404761,6 +409772,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -404772,7 +409789,9 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -404873,6 +409892,10 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -404883,6 +409906,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -404979,7 +410004,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */ - 1167, /* Number of elements */ + 1183, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -405822,6 +410847,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -405942,6 +410969,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -405953,7 +410986,9 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -406054,6 +411089,10 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -406064,6 +411103,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -406160,7 +411201,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */ - 1163, /* Number of elements */ + 1179, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -406999,6 +412040,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -407119,6 +412162,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -407130,7 +412179,9 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -407231,6 +412282,10 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -407241,6 +412296,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -407694,7 +412751,7 @@ static const UV UNI_WB__NL_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */ - 127, /* Number of elements */ + 131, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -407809,6 +412866,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -407821,6 +412880,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -407835,7 +412896,7 @@ static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */ - 127, /* Number of elements */ + 131, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -407950,6 +413011,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -407962,6 +413025,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -407976,7 +413041,7 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 037 */ - 127, /* Number of elements */ + 131, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -408091,6 +413156,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 037 */ 0x11D5A, 0x11DA0, 0x11DAA, + 0x11F50, + 0x11F5A, 0x16A60, 0x16A6A, 0x16AC0, @@ -408103,6 +413170,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 037 */ 0x1E14A, 0x1E2F0, 0x1E2FA, + 0x1E4F0, + 0x1E4FA, 0x1E950, 0x1E95A, 0x1FBF0, @@ -408240,7 +413309,7 @@ static const UV UNI_WB__WSEGSPACE_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ - 1541, /* Number of elements */ + 1557, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -408576,7 +413645,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -408632,7 +413701,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF00, @@ -409287,7 +414356,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -409338,7 +414407,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -409495,6 +414564,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -409506,9 +414583,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -409559,6 +414634,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1BC00, @@ -409663,6 +414740,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -409673,6 +414752,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -409685,6 +414768,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -409795,7 +414880,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ - 1565, /* Number of elements */ + 1581, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -410155,7 +415240,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -410211,7 +415296,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF00, @@ -410866,7 +415951,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -410917,7 +416002,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -411074,6 +416159,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -411085,9 +416178,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -411138,6 +416229,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1BC00, @@ -411242,6 +416335,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -411252,6 +416347,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -411264,6 +416363,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -411374,7 +416475,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ - 1561, /* Number of elements */ + 1577, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -411730,7 +416831,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -411786,7 +416887,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0xEB4, 0xEBD, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xF00, @@ -412441,7 +417542,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -412492,7 +417593,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -412649,6 +417750,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -412660,9 +417769,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -412713,6 +417820,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1B001, 0x1B120, 0x1B123, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1BC00, @@ -412817,6 +417926,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -412827,6 +417938,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -412839,6 +417954,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -412958,7 +418075,7 @@ static const UV UNI_WCHO_invlist[] = { /* for all charsets */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ - 1527, /* Number of elements */ + 1551, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -413280,7 +418397,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -413346,7 +418463,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -413985,7 +419102,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -414032,7 +419149,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -414193,6 +419310,14 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -414204,7 +419329,9 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -414259,8 +419386,12 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -414367,6 +419498,8 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -414377,6 +419510,10 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -414389,6 +419526,8 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -414476,7 +419615,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -414487,6 +419626,8 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -414499,7 +419640,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ - 1551, /* Number of elements */ + 1575, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -414845,7 +419986,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -414911,7 +420052,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -415550,7 +420691,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -415597,7 +420738,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -415758,6 +420899,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -415769,7 +420918,9 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -415824,8 +420975,12 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -415932,6 +421087,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -415942,6 +421099,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -415954,6 +421115,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -416041,7 +421204,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -416052,6 +421215,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -416064,7 +421229,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ - 1547, /* Number of elements */ + 1571, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -416406,7 +421571,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -416472,7 +421637,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -417111,7 +422276,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x10EAD, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F1D, 0x10F27, 0x10F28, @@ -417158,7 +422323,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x11238, 0x1123E, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -417319,6 +422484,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x11DAA, 0x11EE0, 0x11EF7, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F43, + 0x11F50, + 0x11F5A, 0x11FB0, 0x11FB1, 0x12000, @@ -417330,7 +422503,9 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13440, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -417385,8 +422560,12 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -417493,6 +422672,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -417503,6 +422684,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -417515,6 +422700,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x1E2AF, 0x1E2C0, 0x1E2FA, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -417602,7 +422789,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -417613,6 +422800,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0100, 0xE01F0 }; @@ -417622,7 +422811,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ - 1311, /* Number of elements */ + 1333, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -418577,6 +423766,8 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -418701,6 +423892,12 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -418712,7 +423909,9 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -418757,8 +423956,12 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -418833,6 +424036,10 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -418843,6 +424050,8 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -418926,7 +424135,7 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -418936,7 +424145,9 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* ASCII/Latin1 */ @@ -418947,7 +424158,7 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ - 1337, /* Number of elements */ + 1359, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -419928,6 +425139,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -420052,6 +425265,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -420063,7 +425282,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -420108,8 +425329,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -420184,6 +425409,10 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -420194,6 +425423,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -420277,7 +425508,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -420287,7 +425518,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 1047 */ @@ -420298,7 +425531,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ - 1333, /* Number of elements */ + 1355, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -421275,6 +426508,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x1122C, + 0x1123F, + 0x11241, 0x11280, 0x11287, 0x11288, @@ -421399,6 +426634,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x11D99, 0x11EE0, 0x11EF3, + 0x11F02, + 0x11F03, + 0x11F04, + 0x11F11, + 0x11F12, + 0x11F34, 0x11FB0, 0x11FB1, 0x12000, @@ -421410,7 +426651,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x12F90, 0x12FF1, 0x13000, - 0x1342F, + 0x13430, + 0x13441, + 0x13447, 0x14400, 0x14647, 0x16800, @@ -421455,8 +426698,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -421531,6 +426778,10 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, + 0x1E030, + 0x1E06E, 0x1E100, 0x1E12D, 0x1E137, @@ -421541,6 +426792,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x1E2AE, 0x1E2C0, 0x1E2EC, + 0x1E4D0, + 0x1E4EC, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -421624,7 +426877,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -421634,7 +426887,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */ 0x2F800, 0x2FA1E, 0x30000, - 0x3134B + 0x3134B, + 0x31350, + 0x323B0 }; # endif /* EBCDIC 037 */ @@ -421950,7 +427205,7 @@ static const UV UNI_ZS_invlist[] = { /* for EBCDIC 037 */ # if 'A' == 65 /* ASCII/Latin1 */ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */ - 296, /* Number of elements */ + 294, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -422116,6 +427371,8 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */ 0x1D1AA, 0x1D1AE, 0x1D1EB, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -422194,14 +427451,14 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -422223,23 +427480,19 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -422260,7 +427513,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21 static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */ - 322, /* Number of elements */ + 320, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -422452,6 +427705,8 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */ 0x1D1AA, 0x1D1AE, 0x1D1EB, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -422530,14 +427785,14 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -422559,23 +427814,19 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -422596,7 +427847,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */ && '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37 static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */ - 318, /* Number of elements */ + 316, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -422784,6 +428035,8 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */ 0x1D1AA, 0x1D1AE, 0x1D1EB, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -422862,14 +428115,14 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -422891,23 +428144,19 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -422923,7 +428172,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */ # endif /* EBCDIC 037 */ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ - 1392, /* Number of elements */ + 1410, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -423170,7 +428419,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0xCE6, 0xCF0, 0xCF1, - 0xCF3, + 0xCF4, 0xD00, 0xD0D, 0xD0E, @@ -423230,7 +428479,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0xEC6, 0xEC7, 0xEC8, - 0xECE, + 0xECF, 0xED0, 0xEDA, 0xEDC, @@ -423771,7 +429020,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x10EAE, 0x10EB0, 0x10EB2, - 0x10F00, + 0x10EFD, 0x10F28, 0x10F30, 0x10F5A, @@ -423806,7 +429055,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x11200, 0x11212, 0x11213, - 0x1123F, + 0x11242, 0x11280, 0x11287, 0x11288, @@ -423911,6 +429160,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x11AA3, 0x11AB0, 0x11AF9, + 0x11B00, + 0x11B0A, 0x11C00, 0x11C09, 0x11C0A, @@ -423953,6 +429204,12 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x11DAA, 0x11EE0, 0x11EF9, + 0x11F00, + 0x11F11, + 0x11F12, + 0x11F3B, + 0x11F3E, + 0x11F5A, 0x11FB0, 0x11FB1, 0x11FC0, @@ -423968,9 +429225,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x12F90, 0x12FF3, 0x13000, - 0x1342F, - 0x13430, - 0x13439, + 0x13456, 0x14400, 0x14647, 0x16800, @@ -424023,8 +429278,12 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x1AFFF, 0x1B000, 0x1B123, + 0x1B132, + 0x1B133, 0x1B150, 0x1B153, + 0x1B155, + 0x1B156, 0x1B164, 0x1B168, 0x1B170, @@ -424053,6 +429312,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x1D1EB, 0x1D200, 0x1D246, + 0x1D2C0, + 0x1D2D4, 0x1D2E0, 0x1D2F4, 0x1D300, @@ -424107,6 +429368,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x1DAB0, 0x1DF00, 0x1DF1F, + 0x1DF25, + 0x1DF2B, 0x1E000, 0x1E007, 0x1E008, @@ -424117,6 +429380,10 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x1E025, 0x1E026, 0x1E02B, + 0x1E030, + 0x1E06E, + 0x1E08F, + 0x1E090, 0x1E100, 0x1E12D, 0x1E130, @@ -424131,6 +429398,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x1E2FA, 0x1E2FF, 0x1E300, + 0x1E4D0, + 0x1E4FA, 0x1E7E0, 0x1E7E7, 0x1E7E8, @@ -424247,14 +429516,14 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x1F266, 0x1F300, 0x1F6D8, - 0x1F6DD, + 0x1F6DC, 0x1F6ED, 0x1F6F0, 0x1F6FD, 0x1F700, - 0x1F774, - 0x1F780, - 0x1F7D9, + 0x1F777, + 0x1F77B, + 0x1F7DA, 0x1F7E0, 0x1F7EC, 0x1F7F0, @@ -424276,23 +429545,19 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x1FA60, 0x1FA6E, 0x1FA70, - 0x1FA75, - 0x1FA78, 0x1FA7D, 0x1FA80, - 0x1FA87, + 0x1FA89, 0x1FA90, - 0x1FAAD, - 0x1FAB0, - 0x1FABB, - 0x1FAC0, + 0x1FABE, + 0x1FABF, 0x1FAC6, - 0x1FAD0, - 0x1FADA, + 0x1FACE, + 0x1FADC, 0x1FAE0, - 0x1FAE8, + 0x1FAE9, 0x1FAF0, - 0x1FAF7, + 0x1FAF9, 0x1FB00, 0x1FB93, 0x1FB94, @@ -424302,7 +429567,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x20000, 0x2A6E0, 0x2A700, - 0x2B739, + 0x2B73A, 0x2B740, 0x2B81E, 0x2B820, @@ -424313,6 +429578,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */ 0x2FA1E, 0x30000, 0x3134B, + 0x31350, + 0x323B0, 0xE0001, 0xE0002, 0xE0020, @@ -424478,6 +429745,7 @@ typedef enum { UNI_AGE__12_DOT_1, UNI_AGE__13, UNI_AGE__14, + UNI_AGE__15, UNI_AGE__2, UNI_AGE__2_DOT_1, UNI_AGE__3, @@ -424507,6 +429775,7 @@ typedef enum { UNI_ARAB, UNI_ARABICEXTA, UNI_ARABICEXTB, + UNI_ARABICEXTC, UNI_ARABICMATH, UNI_ARABICPFA, UNI_ARABICPFB, @@ -424643,6 +429912,7 @@ typedef enum { UNI_CJKEXTE, UNI_CJKEXTF, UNI_CJKEXTG, + UNI_CJKEXTH, UNI_CJKRADICALSSUP, UNI_CJKSTROKES, UNI_CJKSYMBOLS, @@ -424668,12 +429938,14 @@ typedef enum { UNI_CYRILLICEXTA, UNI_CYRILLICEXTB, UNI_CYRILLICEXTC, + UNI_CYRILLICEXTD, UNI_CYRILLICSUP, UNI_CYRL, UNI_DASH, UNI_DEP, UNI_DEVA, UNI_DEVANAGARIEXT, + UNI_DEVANAGARIEXTA, UNI_DI, UNI_DIA, UNI_DIACRITICALS, @@ -424850,6 +430122,7 @@ typedef enum { UNI_INKAITHI, UNI_INKANNADA, UNI_INKATAKANA, + UNI_INKAWI, UNI_INKHAROSHTHI, UNI_INKHITANSMALLSCRIPT, UNI_INKHMER, @@ -424880,6 +430153,7 @@ typedef enum { UNI_INMULTANI, UNI_INMYANMAR, UNI_INNABATAEAN, + UNI_INNAGMUNDARI, UNI_INNANDINAGARI, UNI_INNEWA, UNI_INNEWTAILUE, @@ -424995,6 +430269,7 @@ typedef enum { UNI_IN__12_DOT_1, UNI_IN__13, UNI_IN__14, + UNI_IN__15, UNI_IN__1_DOT_1, UNI_IN__2, UNI_IN__2_DOT_1, @@ -425131,6 +430406,7 @@ typedef enum { UNI_JT__R, UNI_JT__T, UNI_JT__U, + UNI_KAKTOVIKNUMERALS, UNI_KALI, UNI_KANA, UNI_KANAEXTA, @@ -425139,6 +430415,7 @@ typedef enum { UNI_KANBUN, UNI_KANGXI, UNI_KATAKANAEXT, + UNI_KAWI, UNI_KHAR, UNI_KHMERSYMBOLS, UNI_KHMR, @@ -425252,6 +430529,7 @@ typedef enum { UNI_MYANMAREXTB, UNI_MYMR, UNI_N, + UNI_NAGM, UNI_NAND, UNI_NARB, UNI_NB, @@ -425711,6 +430989,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_AGE__12_DOT_1_invlist, UNI_AGE__13_invlist, UNI_AGE__14_invlist, + UNI_AGE__15_invlist, UNI_AGE__2_invlist, UNI_AGE__2_DOT_1_invlist, UNI_AGE__3_invlist, @@ -425740,6 +431019,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_ARAB_invlist, UNI_ARABICEXTA_invlist, UNI_ARABICEXTB_invlist, + UNI_ARABICEXTC_invlist, UNI_ARABICMATH_invlist, UNI_ARABICPFA_invlist, UNI_ARABICPFB_invlist, @@ -425876,6 +431156,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_CJKEXTE_invlist, UNI_CJKEXTF_invlist, UNI_CJKEXTG_invlist, + UNI_CJKEXTH_invlist, UNI_CJKRADICALSSUP_invlist, UNI_CJKSTROKES_invlist, UNI_CJKSYMBOLS_invlist, @@ -425901,12 +431182,14 @@ static const UV * const uni_prop_ptrs[] = { UNI_CYRILLICEXTA_invlist, UNI_CYRILLICEXTB_invlist, UNI_CYRILLICEXTC_invlist, + UNI_CYRILLICEXTD_invlist, UNI_CYRILLICSUP_invlist, UNI_CYRL_invlist, UNI_DASH_invlist, UNI_DEP_invlist, UNI_DEVA_invlist, UNI_DEVANAGARIEXT_invlist, + UNI_DEVANAGARIEXTA_invlist, UNI_DI_invlist, UNI_DIA_invlist, UNI_DIACRITICALS_invlist, @@ -426083,6 +431366,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_INKAITHI_invlist, UNI_INKANNADA_invlist, UNI_INKATAKANA_invlist, + UNI_INKAWI_invlist, UNI_INKHAROSHTHI_invlist, UNI_INKHITANSMALLSCRIPT_invlist, UNI_INKHMER_invlist, @@ -426113,6 +431397,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_INMULTANI_invlist, UNI_INMYANMAR_invlist, UNI_INNABATAEAN_invlist, + UNI_INNAGMUNDARI_invlist, UNI_INNANDINAGARI_invlist, UNI_INNEWA_invlist, UNI_INNEWTAILUE_invlist, @@ -426228,6 +431513,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_IN__12_DOT_1_invlist, UNI_IN__13_invlist, UNI_IN__14_invlist, + UNI_IN__15_invlist, UNI_IN__1_DOT_1_invlist, UNI_IN__2_invlist, UNI_IN__2_DOT_1_invlist, @@ -426364,6 +431650,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_JT__R_invlist, UNI_JT__T_invlist, UNI_JT__U_invlist, + UNI_KAKTOVIKNUMERALS_invlist, UNI_KALI_invlist, UNI_KANA_invlist, UNI_KANAEXTA_invlist, @@ -426372,6 +431659,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_KANBUN_invlist, UNI_KANGXI_invlist, UNI_KATAKANAEXT_invlist, + UNI_KAWI_invlist, UNI_KHAR_invlist, UNI_KHMERSYMBOLS_invlist, UNI_KHMR_invlist, @@ -426485,6 +431773,7 @@ static const UV * const uni_prop_ptrs[] = { UNI_MYANMAREXTB_invlist, UNI_MYMR_invlist, UNI_N_invlist, + UNI_NAGM_invlist, UNI_NAND_invlist, UNI_NARB_invlist, UNI_NB_invlist, @@ -427004,6 +432293,7 @@ static const char * const UNI_age_values[] = { "12.1", "13.0", "14.0", + "15.0", "NA", "na", "Unassigned", @@ -427014,6 +432304,7 @@ static const char * const UNI_age_values[] = { "V12_1", "V13_0", "V14_0", + "V15_0", "V1_1", "V2_0", "V2_1", @@ -427039,6 +432330,7 @@ static const char * const UNI_age_values[] = { "v121", "v130", "v140", + "v150", "v20", "v21", "v30", @@ -427213,12 +432505,17 @@ static const char * const UNI_blk_values[] = { "arabicexta", "Arabic_Ext_B", "arabicextb", + "Arabic_Ext_C", + "arabicextc", "Arabic Extended-A", "Arabic_Extended_A", "arabicextendeda", "Arabic Extended-B", "Arabic_Extended_B", "arabicextendedb", + "Arabic Extended-C", + "Arabic_Extended_C", + "arabicextendedc", "Arabic_Math", "arabicmath", "Arabic Mathematical Alphabetic Symbols", @@ -427356,6 +432653,8 @@ static const char * const UNI_blk_values[] = { "cjkextf", "CJK_Ext_G", "cjkextg", + "CJK_Ext_H", + "cjkexth", "CJK_Radicals_Sup", "cjkradicalssup", "CJK Radicals Supplement", @@ -427393,6 +432692,9 @@ static const char * const UNI_blk_values[] = { "CJK Unified Ideographs Extension G", "CJK_Unified_Ideographs_Extension_G", "cjkunifiedideographsextensiong", + "CJK Unified Ideographs Extension H", + "CJK_Unified_Ideographs_Extension_H", + "cjkunifiedideographsextensionh", "Combining Diacritical Marks", "Combining_Diacritical_Marks", "combiningdiacriticalmarks", @@ -427452,6 +432754,8 @@ static const char * const UNI_blk_values[] = { "cyrillicextb", "Cyrillic_Ext_C", "cyrillicextc", + "Cyrillic_Ext_D", + "cyrillicextd", "Cyrillic Extended-A", "Cyrillic_Extended_A", "cyrillicextendeda", @@ -427461,6 +432765,9 @@ static const char * const UNI_blk_values[] = { "Cyrillic Extended-C", "Cyrillic_Extended_C", "cyrillicextendedc", + "Cyrillic Extended-D", + "Cyrillic_Extended_D", + "cyrillicextendedd", "Cyrillic_Sup", "cyrillicsup", "Cyrillic Supplement", @@ -427474,9 +432781,14 @@ static const char * const UNI_blk_values[] = { "devanagari", "Devanagari_Ext", "devanagariext", + "Devanagari_Ext_A", + "devanagariexta", "Devanagari Extended", "Devanagari_Extended", "devanagariextended", + "Devanagari Extended-A", + "Devanagari_Extended_A", + "devanagariextendeda", "Diacriticals", "diacriticals", "Diacriticals_Ext", @@ -427689,6 +433001,9 @@ static const char * const UNI_blk_values[] = { "javanese", "Kaithi", "kaithi", + "Kaktovik Numerals", + "Kaktovik_Numerals", + "kaktoviknumerals", "Kana_Ext_A", "kanaexta", "Kana_Ext_B", @@ -427720,6 +433035,8 @@ static const char * const UNI_blk_values[] = { "Katakana Phonetic Extensions", "Katakana_Phonetic_Extensions", "katakanaphoneticextensions", + "Kawi", + "kawi", "Kayah Li", "Kayah_Li", "kayahli", @@ -427937,6 +433254,9 @@ static const char * const UNI_blk_values[] = { "myanmarextendedb", "Nabataean", "nabataean", + "Nag Mundari", + "Nag_Mundari", + "nagmundari", "Nandinagari", "nandinagari", "NB", @@ -429935,6 +435255,8 @@ static const char * const UNI_sc_values[] = { "kannada", "Katakana", "katakana", + "Kawi", + "kawi", "Kayah_Li", "kayahli", "Khar", @@ -430063,6 +435385,10 @@ static const char * const UNI_sc_values[] = { "mymr", "Nabataean", "nabataean", + "Nagm", + "nagm", + "Nag_Mundari", + "nagmundari", "Nand", "nand", "Nandinagari", @@ -430704,56 +436030,57 @@ static const U8 WB_table[23][23] = { /* Generated from: * 688d673ec947f7ccf898b4eae9848139d4d33676b688dee54f449f8bf9d3bbd2 lib/Unicode/UCD.pm - * c7698811e9adb6cc98fb996a7de4be2b6532f2ac67e76055cc8afdbf6ee18af3 lib/unicore/ArabicShaping.txt - * 24a74555f918bbe99f5b3f1b83cf36fc0e205bb8a600a6a3aa539c710a3dcf27 lib/unicore/BidiBrackets.txt - * 7a5c74cedc1616a9af0a9d22e108ae592d86fe93649c144ae6ba49f193a44122 lib/unicore/BidiMirroring.txt - * 598870dddef7b34b5a972916528c456aff2765b79cd4f9647fb58ceb767e7f17 lib/unicore/Blocks.txt - * a566cd48687b2cd897e02501118b2413c14ae86d318f9abbbba97feb84189f0f lib/unicore/CaseFolding.txt - * 3360762fc3295cea54ab251c31df621d05ba4b94d46c60eaac29aa16d70ad1e0 lib/unicore/CompositionExclusions.txt - * 7e058dec02147098bc9c28d86209f0f251bba0538f3b5a705ad02ea3bb709fe0 lib/unicore/DAge.txt - * e3eddd7d469cd1b0feed7528defad1a1cc7c6a9ceb0ae4446a6d10921ed2e7bc lib/unicore/DCoreProperties.txt - * b2c444c20730b097787fdf50bd7d6dd3fc5256ab8084f5b35b11c8776eca674c lib/unicore/DNormalizationProps.txt - * f901ac011aa32a09224d6555da71e2532c59c1d3381322829de0e3b880507250 lib/unicore/EastAsianWidth.txt - * 5995522f01633073911dad1edb74d13aa832f42862c0392a79627b85d52f2391 lib/unicore/EquivalentUnifiedIdeograph.txt - * cd1c9367cba438afa965fcb5edc6ed3ec6e685fd5dd21c0cc20c026f04beb0e5 lib/unicore/HangulSyllableType.txt - * 3f3f368fccdb37f350ecedc20b37fa71ab31c04e847884c77780d34283539f73 lib/unicore/IdStatus.txt - * 45a150c23961b58d7784704af6c4daccd6517d97b6489e53d13bbdbf9e4f065f lib/unicore/IdType.txt - * d8704c8725568813a947ff2ef38bcf1f05e2a6fbea6876ba384890f187a8bf61 lib/unicore/IndicPositionalCategory.txt - * c7b969b653dc278fb66ab4136223d320e30ad19367eb791ae60dcc6d92071b16 lib/unicore/IndicSyllabicCategory.txt - * 39ff89e0a329e1ccce6d54fad8cf82e90926901928c0ca9b9a2ad5681f330dd9 lib/unicore/Jamo.txt - * 9e06e9f35c6959fb91dcc7993f90d58523c3079bc62c6b25f828b4cdebc5d70c lib/unicore/LineBreak.txt - * 14b3b677d33f95c51423dce6eef4a6a28b4b160451ecedee4b91edb6745cf4a3 lib/unicore/NameAliases.txt - * db5745688affcdc0c3927a1ee0667018a96a7b24513f866d5235e98fef6c2436 lib/unicore/NamedSequences.txt - * 6bddfdb850417a5bee6deff19290fd1b138589909afb50f5a049f343bf2c6722 lib/unicore/PropList.txt - * eb755757e20b72b330b2948df3cf2ff7adb0e31bb060140dc09dafb132ace2cd lib/unicore/PropValueAliases.txt - * 859d7225f2d2a460b3ccb1d61a7945f8cc219acdf5aa53b66b7a1e4bf6ebfc87 lib/unicore/PropertyAliases.txt - * d37eedf63ff9c48bac863d5f76862373d6cf5269fd21253d499e2430d638c01d lib/unicore/ScriptExtensions.txt - * 52db475c4ec445e73b0b16915448c357614946ad7062843c563e00d7535c6510 lib/unicore/Scripts.txt - * c667b45908fd269af25fd55d2fc5bbc157fb1b77675936e25c513ce32e080334 lib/unicore/SpecialCasing.txt - * 36018e68657fdcb3485f636630ffe8c8532e01c977703d2803f5b89d6c5feafb lib/unicore/UnicodeData.txt - * 869ff43dd012f924d03c89fc268c88f0e7eea72f0228b91ca30455afdb84f8fd lib/unicore/VerticalOrientation.txt - * ddc7d4d1f3838573b94fc5d83ff7217e63c47b22ae1cd40c5fe1a54efc15589b lib/unicore/auxiliary/GCBTest.txt - * 97e79f1f8d9cd76d120f2420381a01abc00a7c78a2aa583fa3f9627264a99742 lib/unicore/auxiliary/GraphemeBreakProperty.txt - * 488dbb6a7e1d0070d4aa7c175352c818ff6425172850d1b40c6177726658cb05 lib/unicore/auxiliary/LBTest.txt - * 7e42dd749dbb94aa44b13faf9df6319d9a16ce2ea09a3a094fcfbb5962168040 lib/unicore/auxiliary/SBTest.txt - * 7092ca4117cec891c25c7724132efc519e1dece01ae9fd6068035a9db04d526e lib/unicore/auxiliary/SentenceBreakProperty.txt - * 8094b544ec1580c7e41ac0187805cc1aeb330a90301ec7505563e1a59318284e lib/unicore/auxiliary/WBTest.txt - * 7716752aad296d4ab23ff4ed0a2746fc5328750ff84e9e7d6f3828ee9eaef742 lib/unicore/auxiliary/WordBreakProperty.txt - * b597836124298b8f7fa076273802840cfc3271a25f5c397a082e120954b82c3c lib/unicore/emoji/emoji.txt - * e5fe51acc74e3e83b4fb4c7b25f3c34491d6eb8095c9955d0712dafbca7b3c2b lib/unicore/extracted/DBidiClass.txt - * cd0a14176d93bf440b77a582a0d678190fc0688b15442d4cfb250bf2e27956af lib/unicore/extracted/DBinaryProperties.txt - * 12b0c3af9b600b49488d66545a3e7844ea980809627201bf9afeebe1c9f16f4e lib/unicore/extracted/DCombiningClass.txt - * f76064b298cfbd715ba542e7894f7a507d32da2f011070d1d01df95cad9817d6 lib/unicore/extracted/DDecompositionType.txt - * f9bef074cc916db57fece99d54a4505f8e7c7b17481619e3f0005211f7717d4b lib/unicore/extracted/DEastAsianWidth.txt - * cde679c8461976ed40d7edf61ae98cbb947540831f06f5bc7da7decbf91a1420 lib/unicore/extracted/DGeneralCategory.txt - * 9bb891831328713603a486a4a03df7f7987c3e1e8144a6d1ac71fd061ef3f732 lib/unicore/extracted/DJoinGroup.txt - * e97c65bbea0a69d2fae6ec4182b09e519e13232e20bd804b3004edc0f36bb0d4 lib/unicore/extracted/DJoinType.txt - * 43f6df50e4878f501b417e366b0ee097ae5ccb2d4ce942026bed3d62d78e7887 lib/unicore/extracted/DLineBreak.txt - * a04502ebb36a45d83cbe48a7d8132ea8143edb7b3d34d0aa6afe4a9685049741 lib/unicore/extracted/DNumType.txt - * 11075771b112e8e7ccf6ffa637c4c91eadc3ef3db0517b24e605df8fd3624239 lib/unicore/extracted/DNumValues.txt - * 1e514199c3fa46f5df6148d272db7bddbfd5e89c9710e39773ef9d734f344a2f lib/unicore/mktables - * c72bbdeda99714db1c8024d3311da4aef3c0db3b9b9f11455a7cfe10d5e9aba3 lib/unicore/version + * eb840f36e0a7446293578c684a54c6d83d249abde7bdd4dfa89794af1d7fe9e9 lib/unicore/ArabicShaping.txt + * 333ae1e99db0504ca8a046a07dc45b5e7aa91869c685e6bf955ebe674804827a lib/unicore/BidiBrackets.txt + * b4b9e1d87d8ea273613880de9d2b2f0b0b696244b42152bfa0a3106e7d983a20 lib/unicore/BidiMirroring.txt + * 529dc5d0f6386d52f2f56e004bbfab48ce2d587eea9d38ba546c4052491bd820 lib/unicore/Blocks.txt + * cdd49e55eae3bbf1f0a3f6580c974a0263cb86a6a08daa10fbf705b4808a56f7 lib/unicore/CaseFolding.txt + * 3b019c0a33c3140cbc920c078f4f9af2680ba4f71869c8d4de5190667c70b6a3 lib/unicore/CompositionExclusions.txt + * 7570877e0fa197c45338f7c41a02636da4e14c8dba6a3611a01cd30bf329d5ca lib/unicore/DAge.txt + * d367290bc0867e6b484c68370530bdd1a08b6b32404601b8c7accaf83e05628d lib/unicore/DCoreProperties.txt + * d5687a48c95c7d6e1ec59cb29c0f2e8b052018eb069a4371b7368d0561e12a29 lib/unicore/DNormalizationProps.txt + * 743e7bc435c04ab1a8459710b1c3cad56eedced5b806b4659b6e69b85d0adf2a lib/unicore/EastAsianWidth.txt + * f2e04bae8c856fad3a16353a99d4cc2de6c72770260379f5e4974a97548aad2a lib/unicore/EquivalentUnifiedIdeograph.txt + * 9a3ab36d36a22bdb84de7a17b17e9b9c242134f0080f0a8b4b28d209465a8fc8 lib/unicore/HangulSyllableType.txt + * 790bc9595795c0e0a3860a21a7f97157a134b61a4fc4ab03c7d315d07c9a6eb7 lib/unicore/IdStatus.txt + * 71d3ed8f15cd5d8cd00cdebe62015ff26356462774b261b4a2b83d3bf46b1639 lib/unicore/IdType.txt + * 0ce56c1294da405c0a0a0071582ac839fd229bbf97bdd260462ee571309d4ec4 lib/unicore/IndicPositionalCategory.txt + * ffae561a51b47ddbbe267fdd8505ac3776b85b2932268809127acee84200b573 lib/unicore/IndicSyllabicCategory.txt + * 14733bcb6731ae0c07485bf59a41cb3db08785a50bd2b46b836b4341eab7ee46 lib/unicore/Jamo.txt + * 012bca868e2c4e59a5a10a7546baf0c6fb1b2ef458c277f054915c8a49d292bf lib/unicore/LineBreak.txt + * 3e39509e8fae3e5d50ba73759d0b97194501d14a9c63107a6372a46b38be18e8 lib/unicore/NameAliases.txt + * 1d5202155f14841973aa540b1625f4befbde185ac77ce5aceaaaa0501a68bd66 lib/unicore/NamedSequences.txt + * fb9ac8cc154a80cad6caac9897af55a4e75176af6f4e2bb6edc2bf8b1d57f326 lib/unicore/NormTest.txt + * e05c0a2811d113dae4abd832884199a3ea8d187ee1b872d8240a788a96540bfd lib/unicore/PropList.txt + * 13a7666843abea5c6b7eb8c057c57ab9bb2ba96cfc936e204224dd67d71cafad lib/unicore/PropValueAliases.txt + * e4935149af407fa455901832b710bccb63d2453e46d09190e234d019bcfbba45 lib/unicore/PropertyAliases.txt + * 7e07313d9d0bee42220c476b64485995130ae30917bbcf7780b602d677d7e33f lib/unicore/ScriptExtensions.txt + * cca85d830f46aece2e7c1459ef1249993dca8f2e46d51e869255be140d7ea4b0 lib/unicore/Scripts.txt + * 78b29c64b5840d25c11a9f31b665ee551b8a499eca6c70d770fcad7dd710f494 lib/unicore/SpecialCasing.txt + * 806e9aed65037197f1ec85e12be6e8cd870fc5608b4de0fffd990f689f376a73 lib/unicore/UnicodeData.txt + * ca6d332f485a6f5f452b29b4a74146af0f2c17b7577aa4c821d597210f70611a lib/unicore/VerticalOrientation.txt + * 0d2080d0def294a4b7660801cc03ddfe5866ff300c789c2cc1b50fd7802b2d97 lib/unicore/auxiliary/GCBTest.txt + * 5a0f8748575432f8ff95e1dd5bfaa27bda1a844809e17d6939ee912bba6568a1 lib/unicore/auxiliary/GraphemeBreakProperty.txt + * 371bde4052aa593b108684ae292d8ea2dbb93c19990e0cdf416fa7239557aac3 lib/unicore/auxiliary/LBTest.txt + * f62279d8fd10935ba0cf0d8417a1dcbe7ab0d4e62f59c17e02cbe40f580c4162 lib/unicore/auxiliary/SBTest.txt + * 61e4ba975b0a5bc1a76ee931b94914395d7289ef624e3c0d4d6b9460ee387bea lib/unicore/auxiliary/SentenceBreakProperty.txt + * 2a676130c71194245e7c74a837e58330f202600d8ddcf4518129dd476f26e18e lib/unicore/auxiliary/WBTest.txt + * 5188a56e91593467c2e912601ebc78750e6adc9b04541b8c5becb5441e388ce2 lib/unicore/auxiliary/WordBreakProperty.txt + * 29071dba22c72c27783a73016afb8ffaeb025866740791f9c2d0b55cc45a3470 lib/unicore/emoji/emoji.txt + * 4841f2090c2dbc592d3ce43bb74c2191b3da50fb9a0d00274f1448c202851b02 lib/unicore/extracted/DBidiClass.txt + * f10a35451429137f7348825f22d624b6390c526ead3d8e756d2af9e5ed5b2b67 lib/unicore/extracted/DBinaryProperties.txt + * ca54f6360cd288ad92113415bf1f77749015abe11cbd6798d21f7fa81f04205d lib/unicore/extracted/DCombiningClass.txt + * db059ce45e3cec49bfda56e262fa658b3a5561b1648de266c818d2a08a85b78a lib/unicore/extracted/DDecompositionType.txt + * d62e6950f086e53f47c593a38342621f8838f48c49a1de070cf83d3959bd1688 lib/unicore/extracted/DEastAsianWidth.txt + * fe29a45c0882500e591140aaa5c4f5067e6a5d746806148af34400c48b9c06f9 lib/unicore/extracted/DGeneralCategory.txt + * e13ca1344b16023aa38c6ada39f9658536fc6bb7c3c24d579f0bc316a4f4f1e0 lib/unicore/extracted/DJoinGroup.txt + * c4870b11e2b8b7d0eb70b99ce85608e5c28a399efa316cca97238a58ae160e5e lib/unicore/extracted/DJoinType.txt + * 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt + * 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt + * 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt + * f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables + * 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version * 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl - * 5f8520d3a17ade6317fc0c423f5091470924b1ef425bca0c41ce8e4a9f8460fe regen/mk_PL_charclass.pl - * 1c73795f9150bd556573e7ae982789377289e22b6a7f3db0a05c36852e8d749f regen/mk_invlists.pl - * ex: set ro: */ + * c7ff8e0d207d3538c7feb4a1a152b159e5e902d20293b303569ea8323e84633e regen/mk_PL_charclass.pl + * cdbafee25193032242e77f2a6332b731d8392ce342fa616dbabc2c14c7b44eb6 regen/mk_invlists.pl + * ex: set ro ft=c: */ diff --git a/gnu/usr.bin/perl/config_h.SH b/gnu/usr.bin/perl/config_h.SH index b8174833154..5880dc532de 100644 --- a/gnu/usr.bin/perl/config_h.SH +++ b/gnu/usr.bin/perl/config_h.SH @@ -32,7 +32,7 @@ case "$CONFIG_H" in already-done) echo "Not re-extracting config.h" ;; *) echo "Extracting $CONFIG_H (with variable substitutions)" -sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-def!#undef!' +sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-def!#undef!' -e's!define\t!define !' /* This file was produced by running the config_h.SH script, which * gets its values from $CONFIG_SH, which is generally produced by * running Configure. @@ -1495,6 +1495,10 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * Can we handle GCC attribute for functions that should always be * inlined. */ +/* HASATTRIBUTE_VISIBILITY: + * Can we handle GCC attribute for functions that should have a + * different visibility. + */ #$d_attribute_deprecated HASATTRIBUTE_DEPRECATED /**/ #$d_attribute_format HASATTRIBUTE_FORMAT /**/ #$d_printf_format_null PRINTF_FORMAT_NULL_OK /**/ @@ -1505,6 +1509,7 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un #$d_attribute_unused HASATTRIBUTE_UNUSED /**/ #$d_attribute_warn_unused_result HASATTRIBUTE_WARN_UNUSED_RESULT /**/ #$d_attribute_always_inline HASATTRIBUTE_ALWAYS_INLINE /**/ +#$d_attribute_visibility HASATTRIBUTE_VISIBILITY /**/ /* HAS_BACKTRACE: * This symbol, if defined, indicates that the backtrace() routine is @@ -2281,7 +2286,7 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un */ #ifndef USE_CROSS_COMPILE #$usecrosscompile USE_CROSS_COMPILE /**/ -#define PERL_TARGETARCH "$targetarch" /**/ +#define PERL_TARGETARCH "$targetarch" /**/ #endif /* PERL_USE_DEVEL: @@ -2434,7 +2439,7 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un #$d_dbminitproto HAS_DBMINIT_PROTO /**/ /* HAS_DIR_DD_FD: - * This symbol, if defined, indicates that the the DIR* dirstream + * This symbol, if defined, indicates that the DIR* dirstream * structure contains a member variable named dd_fd. */ #$d_dir_dd_fd HAS_DIR_DD_FD /**/ @@ -3294,6 +3299,12 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un */ #$d_sendmsg HAS_SENDMSG /**/ +/* HAS_SETENV: + * This symbol, if defined, indicates that the setenv routine is + * available for use. + */ +#$d_setenv HAS_SETENV /**/ + /* HAS_SETITIMER: * This symbol, if defined, indicates that the setitimer routine is * available to set interval timers. @@ -3618,7 +3629,7 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* HAS_WCSXFRM: * This symbol, if defined, indicates that the wcsxfrm routine is - * available to tranform a wide character string for wcscmp(). + * available to transform a wide character string for wcscmp(). */ #$d_wcsxfrm HAS_WCSXFRM /**/ @@ -3835,6 +3846,11 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un */ #$i_sysstatvfs I_SYS_STATVFS /**/ +/* I_SYS_SYSCALL: + * This symbol, if defined, indicates that exists. + */ +#$i_syssyscall I_SYS_SYSCALL /**/ + /* I_SYSUTSNAME: * This symbol, if defined, indicates that exists and * should be included. @@ -4015,6 +4031,32 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un */ #$need_va_copy NEED_VA_COPY /**/ +/* I32df: + * This symbol defines the format string used for printing a Perl I32 + * as a signed decimal integer. + */ +/* U32uf: + * This symbol defines the format string used for printing a Perl U32 + * as an unsigned decimal integer. + */ +/* U32of: + * This symbol defines the format string used for printing a Perl U32 + * as an unsigned octal integer. + */ +/* U32xf: + * This symbol defines the format string used for printing a Perl U32 + * as an unsigned hexadecimal integer in lowercase abcdef. + */ +/* U32Xf: + * This symbol defines the format string used for printing a Perl U32 + * as an unsigned hexadecimal integer in uppercase ABCDEF. + */ +#define I32df $i32dformat /**/ +#define U32of $u32oformat /**/ +#define U32uf $u32uformat /**/ +#define U32xf $u32xformat /**/ +#define U32Xf $u32XUformat /**/ + /* IVTYPE: * This symbol defines the C type used for Perl's IV. */ @@ -4104,35 +4146,35 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol, if defined, indicates that a variable of type NVTYPE * stores 0.0 in memory as all bits zero. */ -#define IVTYPE $ivtype /**/ -#define UVTYPE $uvtype /**/ -#define I8TYPE $i8type /**/ -#define U8TYPE $u8type /**/ -#define I16TYPE $i16type /**/ -#define U16TYPE $u16type /**/ -#define I32TYPE $i32type /**/ -#define U32TYPE $u32type /**/ +#define IVTYPE $ivtype /**/ +#define UVTYPE $uvtype /**/ +#define I8TYPE $i8type /**/ +#define U8TYPE $u8type /**/ +#define I16TYPE $i16type /**/ +#define U16TYPE $u16type /**/ +#define I32TYPE $i32type /**/ +#define U32TYPE $u32type /**/ #ifdef HAS_QUAD -#define I64TYPE $i64type /**/ -#define U64TYPE $u64type /**/ +#define I64TYPE $i64type /**/ +#define U64TYPE $u64type /**/ #endif -#define NVTYPE $nvtype /**/ -#define IVSIZE $ivsize /**/ -#define UVSIZE $uvsize /**/ -#define I8SIZE $i8size /**/ -#define U8SIZE $u8size /**/ -#define I16SIZE $i16size /**/ -#define U16SIZE $u16size /**/ -#define I32SIZE $i32size /**/ -#define U32SIZE $u32size /**/ +#define NVTYPE $nvtype /**/ +#define IVSIZE $ivsize /**/ +#define UVSIZE $uvsize /**/ +#define I8SIZE $i8size /**/ +#define U8SIZE $u8size /**/ +#define I16SIZE $i16size /**/ +#define U16SIZE $u16size /**/ +#define I32SIZE $i32size /**/ +#define U32SIZE $u32size /**/ #ifdef HAS_QUAD -#define I64SIZE $i64size /**/ -#define U64SIZE $u64size /**/ +#define I64SIZE $i64size /**/ +#define U64SIZE $u64size /**/ #endif -#define NVSIZE $nvsize /**/ +#define NVSIZE $nvsize /**/ #$d_nv_preserves_uv NV_PRESERVES_UV -#define NV_PRESERVES_UV_BITS $nv_preserves_uv_bits -#define NV_OVERFLOWS_INTEGERS_AT ($nv_overflows_integers_at) +#define NV_PRESERVES_UV_BITS $nv_preserves_uv_bits +#define NV_OVERFLOWS_INTEGERS_AT ($nv_overflows_integers_at) #$d_nv_zero_is_allbits_zero NV_ZERO_IS_ALLBITS_ZERO #if UVSIZE == 8 # ifdef BYTEORDER @@ -4180,14 +4222,14 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un * This symbol defines the format string used for printing a Perl NV * using %g-ish floating point format. */ -#define IVdf $ivdformat /**/ -#define UVuf $uvuformat /**/ -#define UVof $uvoformat /**/ -#define UVxf $uvxformat /**/ -#define UVXf $uvXUformat /**/ -#define NVef $nveformat /**/ -#define NVff $nvfformat /**/ -#define NVgf $nvgformat /**/ +#define IVdf $ivdformat /**/ +#define UVuf $uvuformat /**/ +#define UVof $uvoformat /**/ +#define UVxf $uvxformat /**/ +#define UVXf $uvXUformat /**/ +#define NVef $nveformat /**/ +#define NVff $nvfformat /**/ +#define NVgf $nvgformat /**/ /* SELECT_MIN_BITS: * This symbol holds the minimum number of bits operated by select. @@ -5284,7 +5326,7 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* Gid_t_f: * This symbol defines the format string used for printing a Gid_t. */ -#define Gid_t_f $gidformat /**/ +#define Gid_t_f $gidformat /**/ /* Gid_t_sign: * This symbol holds the signedness of a Gid_t. @@ -5352,7 +5394,7 @@ sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* Uid_t_f: * This symbol defines the format string used for printing a Uid_t. */ -#define Uid_t_f $uidformat /**/ +#define Uid_t_f $uidformat /**/ /* Uid_t_sign: * This symbol holds the signedness of a Uid_t. diff --git a/gnu/usr.bin/perl/configpm b/gnu/usr.bin/perl/configpm index 34bf1856c51..07219d8e075 100644 --- a/gnu/usr.bin/perl/configpm +++ b/gnu/usr.bin/perl/configpm @@ -1,4 +1,5 @@ #!./miniperl -w +# vim: syntax=perl # # configpm # @@ -28,10 +29,14 @@ # this case, since for example an extension makefile that has a dependency # on Config.pm should trigger even if only Config_heavy.pl has changed. -sub usage { die < 1, config_sh => 1, config_vars => 1, - config_re => 1, compile_date => 1, local_patches => 1, - bincompat_options => 1, non_bincompat_options => 1, - header_files => 1); +my $export_funcs = uncomment <<'EOT'; +# my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1, +# config_re => 1, compile_date => 1, local_patches => 1, +# bincompat_options => 1, non_bincompat_options => 1, +# header_files => 1); EOT my %export_ok = eval $export_funcs or die; -$config_txt .= sprintf << 'EOT', $], $export_funcs; -# This file was created by configpm when Perl was built. Any changes -# made to this file will be lost the next time perl is built. - -# for a description of the variables, please have a look at the -# Glossary file, as written in the Porting folder, or use the url: -# https://github.com/Perl/perl5/blob/blead/Porting/Glossary - -package Config; -use strict; -use warnings; -our ( %%Config, $VERSION ); - -$VERSION = "%s"; - -# Skip @Config::EXPORT because it only contains %%Config, which we special -# case below as it's not a function. @Config::EXPORT won't change in the -# lifetime of Perl 5. -%s -@Config::EXPORT = qw(%%Config); -@Config::EXPORT_OK = keys %%Export_Cache; - -# Need to stub all the functions to make code such as print Config::config_sh -# keep working - +$config_txt .= sprintf uncomment << 'EOT', $], $export_funcs; +# # This file was created by configpm when Perl was built. Any changes +# # made to this file will be lost the next time perl is built. +# +# # for a description of the variables, please have a look at the +# # Glossary file, as written in the Porting folder, or use the url: +# # https://github.com/Perl/perl5/blob/blead/Porting/Glossary +# +# package Config; +# use strict; +# use warnings; +# our ( %%Config, $VERSION ); +# +# $VERSION = "%s"; +# +# # Skip @Config::EXPORT because it only contains %%Config, which we special +# # case below as it's not a function. @Config::EXPORT won't change in the +# # lifetime of Perl 5. +# %s +# @Config::EXPORT = qw(%%Config); +# @Config::EXPORT_OK = keys %%Export_Cache; +# +# # Need to stub all the functions to make code such as print Config::config_sh +# # keep working +# EOT $config_txt .= "sub $_;\n" foreach sort keys %export_ok; my $myver = sprintf "%vd", $^V; -$config_txt .= sprintf <<'ENDOFBEG', ($myver) x 3; - -# Define our own import method to avoid pulling in the full Exporter: -sub import { - shift; - @_ = @Config::EXPORT unless @_; - - my @funcs = grep $_ ne '%%Config', @_; - my $export_Config = @funcs < @_ ? 1 : 0; - - no strict 'refs'; - my $callpkg = caller(0); - foreach my $func (@funcs) { - die qq{"$func" is not exported by the Config module\n} - unless $Export_Cache{$func}; - *{$callpkg.'::'.$func} = \&{$func}; - } - - *{"$callpkg\::Config"} = \%%Config if $export_Config; - return; -} - -die "$0: Perl lib version (%s) doesn't match executable '$^X' version ($])" - unless $^V; - -$^V eq %s - or die sprintf "%%s: Perl lib version (%s) doesn't match executable '$^X' version (%%vd)", $0, $^V; - +$config_txt .= sprintf uncomment <<'ENDOFBEG', ($myver) x 3; +# +# # Define our own import method to avoid pulling in the full Exporter: +# sub import { +# shift; +# @_ = @Config::EXPORT unless @_; +# +# my @funcs = grep $_ ne '%%Config', @_; +# my $export_Config = @funcs < @_ ? 1 : 0; +# +# no strict 'refs'; +# my $callpkg = caller(0); +# foreach my $func (@funcs) { +# die qq{"$func" is not exported by the Config module\n} +# unless $Export_Cache{$func}; +# *{$callpkg.'::'.$func} = \&{$func}; +# } +# +# *{"$callpkg\::Config"} = \%%Config if $export_Config; +# return; +# } +# +# die "$0: Perl lib version (%s) doesn't match executable '$^X' version ($])" +# unless $^V; +# +# $^V eq %s +# or die sprintf "%%s: Perl lib version (%s) doesn't match executable '$^X' version (%%vd)", $0, $^V; +# ENDOFBEG @@ -217,12 +222,12 @@ my $quote; # (at least up to version 804.034) fails to build without them. We force them # to be emitted to Config_heavy.pl for backcompat with such modules (and we may # find that this set needs to be extended in future). See RT#132347. -my @v_forced = map "$_\n", split /\n+/, <<'EOT'; -i_limits='define' -i_stdlib='define' -i_string='define' -i_time='define' -prototype='define' +my @v_forced = map "$_\n", split /\n+/, uncomment <<'EOT'; +# i_limits='define' +# i_stdlib='define' +# i_string='define' +# i_time='define' +# prototype='define' EOT @@ -282,47 +287,47 @@ my %seen_quotes; # This is somewhat grim, but I want the code for parsing config.sh here and # now so that I can expand $Config{ivsize} and $Config{ivtype} -my $fetch_string = <<'EOT'; - -# Search for it in the big string -sub fetch_string { - my($self, $key) = @_; - +my $fetch_string = uncomment <<'EOT'; +# +# # Search for it in the big string +# sub fetch_string { +# my($self, $key) = @_; +# EOT if ($seen_quotes{'"'}) { # We need the full ' and " code -$fetch_string .= <<'EOT'; - return undef unless my ($quote_type, $value) = $Config_SH_expanded =~ /\n$key=(['"])(.*?)\1\n/s; - - # If we had a double-quote, we'd better eval it so escape - # sequences and such can be interpolated. Since the incoming - # value is supposed to follow shell rules and not perl rules, - # we escape any perl variable markers - - # Historically, since " 'support' was added in change 1409, the - # interpolation was done before the undef. Stick to this arguably buggy - # behaviour as we're refactoring. - if ($quote_type eq '"') { - $value =~ s/\$/\\\$/g; - $value =~ s/\@/\\\@/g; - eval "\$value = \"$value\""; - } - - # So we can say "if $Config{'foo'}". - $self->{$key} = $value eq 'undef' ? undef : $value; # cache it -} +$fetch_string .= uncomment <<'EOT'; +# return undef unless my ($quote_type, $value) = $Config_SH_expanded =~ /\n$key=(['"])(.*?)\1\n/s; +# +# # If we had a double-quote, we'd better eval it so escape +# # sequences and such can be interpolated. Since the incoming +# # value is supposed to follow shell rules and not perl rules, +# # we escape any perl variable markers +# +# # Historically, since " 'support' was added in change 1409, the +# # interpolation was done before the undef. Stick to this arguably buggy +# # behaviour as we're refactoring. +# if ($quote_type eq '"') { +# $value =~ s/\$/\\\$/g; +# $value =~ s/\@/\\\@/g; +# eval "\$value = \"$value\""; +# } +# +# # So we can say "if $Config{'foo'}". +# $self->{$key} = $value eq 'undef' ? undef : $value; # cache it +# } EOT } else { # We only have ' delimited. -$fetch_string .= <<'EOT'; - return undef unless $Config_SH_expanded =~ /\n$key=\'(.*?)\'\n/s; - # So we can say "if $Config{'foo'}". - $self->{$key} = $1 eq 'undef' ? undef : $1; -} +$fetch_string .= uncomment <<'EOT'; +# return undef unless $Config_SH_expanded =~ /\n$key=\'(.*?)\'\n/s; +# # So we can say "if $Config{'foo'}". +# $self->{$key} = $1 eq 'undef' ? undef : $1; +# } EOT } @@ -429,32 +434,32 @@ if (fetch_string({}, 'otherlibdirs') =~ m!\.\.\./!) { $need_relocation{otherlibdirs} = 'otherlibdirs'; } -my $relocation_code = <<'EOT'; - -sub relocate_inc { - my $libdir = shift; - return $libdir unless $libdir =~ s!^\.\.\./!!; - my $prefix = $^X; - if ($prefix =~ s!/[^/]*$!!) { - while ($libdir =~ m!^\.\./!) { - # Loop while $libdir starts "../" and $prefix still has a trailing - # directory - last unless $prefix =~ s!/([^/]+)$!!; - # but bail out if the directory we picked off the end of $prefix is . - # or .. - if ($1 eq '.' or $1 eq '..') { - # Undo! This should be rare, hence code it this way rather than a - # check each time before the s!!! above. - $prefix = "$prefix/$1"; - last; - } - # Remove that leading ../ and loop again - substr ($libdir, 0, 3, ''); - } - $libdir = "$prefix/$libdir"; - } - $libdir; -} +my $relocation_code = uncomment <<'EOT'; +# +# sub relocate_inc { +# my $libdir = shift; +# return $libdir unless $libdir =~ s!^\.\.\./!!; +# my $prefix = $^X; +# if ($prefix =~ s!/[^/]*$!!) { +# while ($libdir =~ m!^\.\./!) { +# # Loop while $libdir starts "../" and $prefix still has a trailing +# # directory +# last unless $prefix =~ s!/([^/]+)$!!; +# # but bail out if the directory we picked off the end of $prefix is . +# # or .. +# if ($1 eq '.' or $1 eq '..') { +# # Undo! This should be rare, hence code it this way rather than a +# # check each time before the s!!! above. +# $prefix = "$prefix/$1"; +# last; +# } +# # Remove that leading ../ and loop again +# substr ($libdir, 0, 3, ''); +# } +# $libdir = "$prefix/$libdir"; +# } +# $libdir; +# } EOT my $osname = fetch_string({}, 'osname'); @@ -462,66 +467,66 @@ my $from = $osname eq 'VMS' ? 'PERLSHR image' : 'binary (from libperl)'; my $env_cygwin = $osname eq 'cygwin' ? 'push @env, "CYGWIN=\"$ENV{CYGWIN}\"" if $ENV{CYGWIN};' . "\n" : ""; -$heavy_txt .= sprintf <<'ENDOFBEG', $osname, $osname, $from, $osname, $env_cygwin; -# This file was created by configpm when Perl was built. Any changes -# made to this file will be lost the next time perl is built. - -package Config; -use strict; -use warnings; -our %%Config; - -sub bincompat_options { - return split ' ', (Internals::V())[0]; -} - -sub non_bincompat_options { - return split ' ', (Internals::V())[1]; -} - -sub compile_date { - return (Internals::V())[2] -} - -sub local_patches { - my (undef, undef, undef, @patches) = Internals::V(); - return @patches; -} - -sub _V { - die "Perl lib was built for '%s' but is being run on '$^O'" - unless "%s" eq $^O; - - my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); - - my @opts = sort split ' ', "$bincompat $non_bincompat"; - - print Config::myconfig(); - print "\nCharacteristics of this %s: \n"; - - print " Compile-time options:\n"; - print " $_\n" for @opts; - - if (@patches) { - print " Locally applied patches:\n"; - print " $_\n" foreach @patches; - } - - print " Built under %s\n"; - - print " $date\n" if defined $date; - - my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %%ENV; -%s - if (@env) { - print " \%%ENV:\n"; - print " $_\n" foreach @env; - } - print " \@INC:\n"; - print " $_\n" foreach @INC; -} - -sub header_files { +$heavy_txt .= sprintf uncomment <<'ENDOFBEG', $osname, $osname, $from, $osname, $env_cygwin; +# # This file was created by configpm when Perl was built. Any changes +# # made to this file will be lost the next time perl is built. +# +# package Config; +# use strict; +# use warnings; +# our %%Config; +# +# sub bincompat_options { +# return split ' ', (Internals::V())[0]; +# } +# +# sub non_bincompat_options { +# return split ' ', (Internals::V())[1]; +# } +# +# sub compile_date { +# return (Internals::V())[2] +# } +# +# sub local_patches { +# my (undef, undef, undef, @patches) = Internals::V(); +# return @patches; +# } +# +# sub _V { +# die "Perl lib was built for '%s' but is being run on '$^O'" +# unless "%s" eq $^O; +# +# my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); +# +# my @opts = sort split ' ', "$bincompat $non_bincompat"; +# +# print Config::myconfig(); +# print "\nCharacteristics of this %s: \n"; +# +# print " Compile-time options:\n"; +# print " $_\n" for @opts; +# +# if (@patches) { +# print " Locally applied patches:\n"; +# print " $_\n" foreach @patches; +# } +# +# print " Built under %s\n"; +# +# print " $date\n" if defined $date; +# +# my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %%ENV; +# %s +# if (@env) { +# print " \%%ENV:\n"; +# print " $_\n" foreach @env; +# } +# print " \@INC:\n"; +# print " $_\n" foreach @INC; +# } +# +# sub header_files { ENDOFBEG $heavy_txt .= $header_files . "\n}\n\n"; @@ -548,33 +553,35 @@ open(MYCONFIG,'<','myconfig.SH') || die "open myconfig.SH failed: $!"; do { $heavy_txt .= $_ } until !defined($_ = ) || /^\s*$/; close(MYCONFIG); -$heavy_txt .= "\n!END!\n" . <<'EOT'; -my $summary_expanded; - -sub myconfig { - return $summary_expanded if $summary_expanded; - ($summary_expanded = $summary) =~ s{\$(\w+)} - { - my $c; - if ($1 eq 'git_ancestor_line') { - if ($Config::Config{git_ancestor}) { - $c= "\n Ancestor: $Config::Config{git_ancestor}"; - } else { - $c= ""; - } - } else { - $c = $Config::Config{$1}; - } - defined($c) ? $c : 'undef' - }ge; - $summary_expanded; -} - -local *_ = \my $a; -$_ = <<'!END!'; +$heavy_txt .= "\n!END!\n" . uncomment <<'EOT'; +# my $summary_expanded; +# +# sub myconfig { +# return $summary_expanded if $summary_expanded; +# ($summary_expanded = $summary) =~ s{\$(\w+)} +# { +# my $c; +# if ($1 eq 'git_ancestor_line') { +# if ($Config::Config{git_ancestor}) { +# $c= "\n Ancestor: $Config::Config{git_ancestor}"; +# } else { +# $c= ""; +# } +# } else { +# $c = $Config::Config{$1}; +# } +# defined($c) ? $c : 'undef' +# }ge; +# $summary_expanded; +# } +# +# local *_ = \my $a; +# $_ = <<'!END!'; EOT #proper lexicographical order of the keys my %seen_var; +my @v_define = ( "taint_support=''\n", + "taint_disabled=''\n" ); $heavy_txt .= join('', map { $_->[-1] } sort {$a->[0] cmp $b->[0] } @@ -582,7 +589,7 @@ $heavy_txt .= join('', map { /^([^=]+)/ ? [ $1, $_ ] : [ $_, $_ ] # shouldnt happen - } @v_others, @v_forced + } (@v_others, @v_forced, @v_define) ) . "!END!\n"; # Only need the dynamic byteorder code in Config.pm if 'byteorder' is one of @@ -593,29 +600,53 @@ if ($Common{byteorder}) { $heavy_txt .= $byteorder_code; } +$heavy_txt .= uncomment <<'EOT'; +# s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; +# +EOT + +$heavy_txt .= uncomment <<'EOF_TAINT_INIT'; +# { +# # We have to set this up late as Win32 does not build miniperl +# # with the same defines and CC flags as it builds perl itself. +# my $defines = join " ", (Internals::V)[0,1]; +# if ( +# $defines =~ /\b(SILENT_NO_TAINT_SUPPORT)\b/ || +# $defines =~ /\b(NO_TAINT_SUPPORT)\b/ +# ){ +# my $which = $1; +# my $taint_disabled = ($which eq "SILENT_NO_TAINT_SUPPORT") +# ? "silent" : "define"; +# s/^(taint_disabled=['"])(["'])/$1$taint_disabled$2/m; +# } +# else { +# my $taint_support = 'define'; +# s/^(taint_support=['"])(["'])/$1$taint_support$2/m; +# } +# } +EOF_TAINT_INIT + if (@need_relocation) { $heavy_txt .= 'foreach my $what (qw(' . join (' ', @need_relocation) . - ")) {\n" . <<'EOT'; - s/^($what=)(['"])(.*?)\2/$1 . $2 . relocate_inc($3) . $2/me; -} + ")) {\n" . uncomment <<'EOT'; +# s/^($what=)(['"])(.*?)\2/$1 . $2 . relocate_inc($3) . $2/me; +# } EOT # Currently it only makes sense to do the ... relocation on Unix, so there's # no need to emulate the "which separator for this platform" logic in perl.c - # ':' will always be applicable if ($need_relocation{otherlibdirs}) { -$heavy_txt .= << 'EOT'; -s{^(otherlibdirs=)(['"])(.*?)\2} - {$1 . $2 . join ':', map {relocate_inc($_)} split ':', $3 . $2}me; +$heavy_txt .= uncomment << 'EOT'; +# s{^(otherlibdirs=)(['"])(.*?)\2} +# {$1 . $2 . join ':', map {relocate_inc($_)} split ':', $3 . $2}me; EOT } } -$heavy_txt .= <<'EOT'; -s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; - -my $config_sh_len = length $_; - -our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; +$heavy_txt .= uncomment <<'EOT'; +# my $config_sh_len = length $_; +# +# our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; EOT foreach my $prefix (qw(ccflags ldflags)) { @@ -670,129 +701,129 @@ if (open(my $fh, '<', 'cflags')) { $heavy_txt .= "EOVIRTUAL\n"; -$heavy_txt .= <<'ENDOFGIT'; -eval { - # do not have hairy conniptions if this isnt available - require 'Config_git.pl'; - $Config_SH_expanded .= $Config::Git_Data; - 1; -} or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n"; +$heavy_txt .= uncomment <<'ENDOFGIT'; +# eval { +# # do not have hairy conniptions if this isnt available +# require 'Config_git.pl'; +# $Config_SH_expanded .= $Config::Git_Data; +# 1; +# } or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n"; ENDOFGIT $heavy_txt .= $fetch_string; -$config_txt .= <<'ENDOFEND'; - -sub FETCH { - my($self, $key) = @_; - - # check for cached value (which may be undef so we use exists not defined) - return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key); -} - +$config_txt .= uncomment <<'ENDOFEND'; +# +# sub FETCH { +# my($self, $key) = @_; +# +# # check for cached value (which may be undef so we use exists not defined) +# return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key); +# } +# ENDOFEND -$heavy_txt .= <<'ENDOFEND'; - -my $prevpos = 0; - -sub FIRSTKEY { - $prevpos = 0; - substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); -} - -sub NEXTKEY { +$heavy_txt .= uncomment <<'ENDOFEND'; +# +# my $prevpos = 0; +# +# sub FIRSTKEY { +# $prevpos = 0; +# substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); +# } +# +# sub NEXTKEY { ENDOFEND if ($seen_quotes{'"'}) { -$heavy_txt .= <<'ENDOFEND'; - # Find out how the current key's quoted so we can skip to its end. - my $quote = substr($Config_SH_expanded, - index($Config_SH_expanded, "=", $prevpos)+1, 1); - my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2; +$heavy_txt .= uncomment <<'ENDOFEND'; +# # Find out how the current key's quoted so we can skip to its end. +# my $quote = substr($Config_SH_expanded, +# index($Config_SH_expanded, "=", $prevpos)+1, 1); +# my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2; ENDOFEND } else { # Just ' quotes, so it's much easier. -$heavy_txt .= <<'ENDOFEND'; - my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; +$heavy_txt .= uncomment <<'ENDOFEND'; +# my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; ENDOFEND } -$heavy_txt .= <<'ENDOFEND'; - my $len = index($Config_SH_expanded, "=", $pos) - $pos; - $prevpos = $pos; - $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; -} - -sub EXISTS { - return 1 if exists($_[0]->{$_[1]}); - - return(index($Config_SH_expanded, "\n$_[1]='") != -1 +$heavy_txt .= uncomment <<'ENDOFEND'; +# my $len = index($Config_SH_expanded, "=", $pos) - $pos; +# $prevpos = $pos; +# $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; +# } +# +# sub EXISTS { +# return 1 if exists($_[0]->{$_[1]}); +# +# return(index($Config_SH_expanded, "\n$_[1]='") != -1 ENDOFEND if ($seen_quotes{'"'}) { -$heavy_txt .= <<'ENDOFEND'; - or index($Config_SH_expanded, "\n$_[1]=\"") != -1 +$heavy_txt .= uncomment <<'ENDOFEND'; +# or index($Config_SH_expanded, "\n$_[1]=\"") != -1 ENDOFEND } -$heavy_txt .= <<'ENDOFEND'; - ); -} - -sub STORE { die "\%Config::Config is read-only\n" } -*DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space - -sub config_sh { - substr $Config_SH_expanded, 1, $config_sh_len; -} - -sub config_re { - my $re = shift; - return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, - $Config_SH_expanded; -} - -sub config_vars { - # implements -V:cfgvar option (see perlrun -V:) - foreach (@_) { - # find optional leading, trailing colons; and query-spec - my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, - # map colon-flags to print decorations - my $prfx = $notag ? '': "$qry="; # tag-prefix for print - my $lnend = $lncont ? ' ' : ";\n"; # line ending for print - - # all config-vars are by definition \w only, any \W means regex - if ($qry =~ /\W/) { - my @matches = config_re($qry); - print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; - print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; - } else { - my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} - : 'UNKNOWN'; - $v = 'undef' unless defined $v; - print "${prfx}'${v}'$lnend"; - } - } -} - -# Called by the real AUTOLOAD -sub launcher { - undef &AUTOLOAD; - goto \&$Config::AUTOLOAD; -} - -1; +$heavy_txt .= uncomment <<'ENDOFEND'; +# ); +# } +# +# sub STORE { die "\%Config::Config is read-only\n" } +# *DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space +# +# sub config_sh { +# substr $Config_SH_expanded, 1, $config_sh_len; +# } +# +# sub config_re { +# my $re = shift; +# return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, +# $Config_SH_expanded; +# } +# +# sub config_vars { +# # implements -V:cfgvar option (see perlrun -V:) +# foreach (@_) { +# # find optional leading, trailing colons; and query-spec +# my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, +# # map colon-flags to print decorations +# my $prfx = $notag ? '': "$qry="; # tag-prefix for print +# my $lnend = $lncont ? ' ' : ";\n"; # line ending for print +# +# # all config-vars are by definition \w only, any \W means regex +# if ($qry =~ /\W/) { +# my @matches = config_re($qry); +# print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; +# print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; +# } else { +# my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} +# : 'UNKNOWN'; +# $v = 'undef' unless defined $v; +# print "${prfx}'${v}'$lnend"; +# } +# } +# } +# +# # Called by the real AUTOLOAD +# sub launcher { +# undef &AUTOLOAD; +# goto \&$Config::AUTOLOAD; +# } +# +# 1; ENDOFEND if ($^O eq 'os2') { - $config_txt .= <<'ENDOFSET'; -my %preconfig; -if ($OS2::is_aout) { - my ($value, $v) = $Config_SH_expanded =~ m/^used_aout='(.*)'\s*$/m; - for (split ' ', $value) { - ($v) = $Config_SH_expanded =~ m/^aout_$_='(.*)'\s*$/m; - $preconfig{$_} = $v eq 'undef' ? undef : $v; - } -} -$preconfig{d_fork} = undef unless $OS2::can_fork; # Some funny cases can't -sub TIEHASH { bless {%preconfig} } + $config_txt .= uncomment <<'ENDOFSET'; +# my %preconfig; +# if ($OS2::is_aout) { +# my ($value, $v) = $Config_SH_expanded =~ m/^used_aout='(.*)'\s*$/m; +# for (split ' ', $value) { +# ($v) = $Config_SH_expanded =~ m/^aout_$_='(.*)'\s*$/m; +# $preconfig{$_} = $v eq 'undef' ? undef : $v; +# } +# } +# $preconfig{d_fork} = undef unless $OS2::can_fork; # Some funny cases can't +# sub TIEHASH { bless {%preconfig} } ENDOFSET # Extract the name of the DLL from the makefile to avoid duplication my ($f) = grep -r, qw(GNUMakefile Makefile); @@ -802,14 +833,14 @@ ENDOFSET $dll = $1, last if /^PERL_DLL_BASE\s*=\s*(\S*)\s*$/; } } - $config_txt .= <:raw', $Config_POD) or die "Can't open $Config_POD: $!"; -print CONFIG_POD <<'ENDOFTAIL'; -=head1 NAME - -=for comment Generated by configpm. Any changes made here will be lost! - -Config - access Perl configuration information - -=head1 SYNOPSIS - - use Config; - if ($Config{usethreads}) { - print "has thread support\n" - } - - use Config qw(myconfig config_sh config_vars config_re); - - print myconfig(); - - print config_sh(); - - print config_re(); - - config_vars(qw(osname archname)); - - -=head1 DESCRIPTION - -The Config module contains all the information that was available to -the C program at Perl build time (over 900 values). - -Shell variables from the F file (written by Configure) are -stored in the readonly-variable C<%Config>, indexed by their names. - -Values stored in config.sh as 'undef' are returned as undefined -values. The perl C function can be used to check if a -named variable exists. - -For a description of the variables, please have a look at the -Glossary file, as written in the Porting folder, or use the url: -https://github.com/Perl/perl5/blob/blead/Porting/Glossary - -=over 4 - -=item myconfig() - -Returns a textual summary of the major perl configuration values. -See also C<-V> in L. - -=item config_sh() - -Returns the entire perl configuration information in the form of the -original config.sh shell variable assignment script. - -=item config_re($regex) - -Like config_sh() but returns, as a list, only the config entries who's -names match the $regex. - -=item config_vars(@names) - -Prints to STDOUT the values of the named configuration variable. Each is -printed on a separate line in the form: - - name='value'; - -Names which are unknown are output as C. -See also C<-V:name> in L. - -=item bincompat_options() - -Returns a list of C pre-processor options used when compiling this F -binary, which affect its binary compatibility with extensions. -C and C are shown together in -the output of C as I. - -=item non_bincompat_options() - -Returns a list of C pre-processor options used when compiling this F -binary, which do not affect binary compatibility with extensions. - -=item compile_date() - -Returns the compile date (as a string), equivalent to what is shown by -C - -=item local_patches() - -Returns a list of the names of locally applied patches, equivalent to what -is shown by C. - -=item header_files() - -Returns a list of the header files that should be used as dependencies for -XS code, for this version of Perl on this platform. - -=back - -=head1 EXAMPLE - -Here's a more sophisticated example of using %Config: - - use Config; - use strict; - - my %sig_num; - my @sig_name; - unless($Config{sig_name} && $Config{sig_num}) { - die "No sigs?"; - } else { - my @names = split ' ', $Config{sig_name}; - @sig_num{@names} = split ' ', $Config{sig_num}; - foreach (@names) { - $sig_name[$sig_num{$_}] ||= $_; - } - } - - print "signal #17 = $sig_name[17]\n"; - if ($sig_num{ALRM}) { - print "SIGALRM is $sig_num{ALRM}\n"; - } - -=head1 WARNING - -Because this information is not stored within the perl executable -itself it is possible (but unlikely) that the information does not -relate to the actual perl binary which is being used to access it. - -The Config module is installed into the architecture and version -specific library directory ($Config{installarchlib}) and it checks the -perl version number when loaded. - -The values stored in config.sh may be either single-quoted or -double-quoted. Double-quoted strings are handy for those cases where you -need to include escape sequences in the strings. To avoid runtime variable -interpolation, any C<$> and C<@> characters are replaced by C<\$> and -C<\@>, respectively. This isn't foolproof, of course, so don't embed C<\$> -or C<\@> in double-quoted strings unless you're willing to deal with the -consequences. (The slashes will end up escaped and the C<$> or C<@> will -trigger variable interpolation) - -=head1 GLOSSARY - -Most C variables are determined by the C script -on platforms supported by it (which is most UNIX platforms). Some -platforms have custom-made C variables, and may thus not have -some of the variables described below, or may have extraneous variables -specific to that particular port. See the port specific documentation -in such cases. - -=cut - +print CONFIG_POD uncomment <<'ENDOFTAIL'; +# =head1 NAME +# +# =for comment Generated by configpm. Any changes made here will be lost! +# +# Config - access Perl configuration information +# +# =head1 SYNOPSIS +# +# use Config; +# if ($Config{usethreads}) { +# print "has thread support\n" +# } +# +# use Config qw(myconfig config_sh config_vars config_re); +# +# print myconfig(); +# +# print config_sh(); +# +# print config_re(); +# +# config_vars(qw(osname archname)); +# +# +# =head1 DESCRIPTION +# +# The Config module contains all the information that was available to +# the F program at Perl build time (over 900 values). +# +# Shell variables from the F file (written by Configure) are +# stored in the readonly-variable C<%Config>, indexed by their names. +# +# Values stored in config.sh as 'undef' are returned as undefined +# values. The perl C function can be used to check if a +# named variable exists. +# +# For a description of the variables, please have a look at the +# Glossary file, as written in the Porting folder, or use the url: +# https://github.com/Perl/perl5/blob/blead/Porting/Glossary +# +# =over 4 +# +# =item myconfig() +# +# Returns a textual summary of the major perl configuration values. +# See also C<-V> in L. +# +# =item config_sh() +# +# Returns the entire perl configuration information in the form of the +# original config.sh shell variable assignment script. +# +# =item config_re($regex) +# +# Like config_sh() but returns, as a list, only the config entries who's +# names match the $regex. +# +# =item config_vars(@names) +# +# Prints to STDOUT the values of the named configuration variable. Each is +# printed on a separate line in the form: +# +# name='value'; +# +# Names which are unknown are output as C. +# See also C<-V:name> in L. +# +# =item bincompat_options() +# +# Returns a list of C pre-processor options used when compiling this F +# binary, which affect its binary compatibility with extensions. +# C and C are shown together in +# the output of C as I. +# +# =item non_bincompat_options() +# +# Returns a list of C pre-processor options used when compiling this F +# binary, which do not affect binary compatibility with extensions. +# +# =item compile_date() +# +# Returns the compile date (as a string), equivalent to what is shown by +# C +# +# =item local_patches() +# +# Returns a list of the names of locally applied patches, equivalent to what +# is shown by C. +# +# =item header_files() +# +# Returns a list of the header files that should be used as dependencies for +# XS code, for this version of Perl on this platform. +# +# =back +# +# =head1 EXAMPLE +# +# Here's a more sophisticated example of using %Config: +# +# use Config; +# use strict; +# +# my %sig_num; +# my @sig_name; +# unless($Config{sig_name} && $Config{sig_num}) { +# die "No sigs?"; +# } else { +# my @names = split ' ', $Config{sig_name}; +# @sig_num{@names} = split ' ', $Config{sig_num}; +# foreach (@names) { +# $sig_name[$sig_num{$_}] ||= $_; +# } +# } +# +# print "signal #17 = $sig_name[17]\n"; +# if ($sig_num{ALRM}) { +# print "SIGALRM is $sig_num{ALRM}\n"; +# } +# +# =head1 WARNING +# +# Because this information is not stored within the perl executable +# itself it is possible (but unlikely) that the information does not +# relate to the actual perl binary which is being used to access it. +# +# The Config module is installed into the architecture and version +# specific library directory ($Config{installarchlib}) and it checks the +# perl version number when loaded. +# +# The values stored in config.sh may be either single-quoted or +# double-quoted. Double-quoted strings are handy for those cases where you +# need to include escape sequences in the strings. To avoid runtime variable +# interpolation, any C<$> and C<@> characters are replaced by C<\$> and +# C<\@>, respectively. This isn't foolproof, of course, so don't embed C<\$> +# or C<\@> in double-quoted strings unless you're willing to deal with the +# consequences. (The slashes will end up escaped and the C<$> or C<@> will +# trigger variable interpolation) +# +# =head1 GLOSSARY +# +# Most C variables are determined by the C script +# on platforms supported by it (which is most UNIX platforms). Some +# platforms have custom-made C variables, and may thus not have +# some of the variables described below, or may have extraneous variables +# specific to that particular port. See the port specific documentation +# in such cases. +# +# =cut +# ENDOFTAIL if ($Opts{glossary}) { open(GLOS, '<', $Glossary) or die "Can't open $Glossary: $!"; } -my %seen = (); my $text = 0; $/ = ''; my $errors= 0; -sub process { - if (s/\A(\w*)\s+\(([\w.]+)\):\s*\n(\t?)/=item C<$1>\n\nFrom F<$2>:\n\n/m) { - my $c = substr $1, 0, 1; - unless ($seen{$c}++) { - print CONFIG_POD <\n\nFrom F<$2>:\n\n/m) { + $item = $1; + $fc = substr $item, 0, 1; } - elsif (!$text || !/\A\t/) { + elsif (!$item || !/\A\t/) { warn "Expected a Configure variable header", ($text ? " or another paragraph of description" : () ), ", instead we got:\n$_"; @@ -1067,6 +1090,7 @@ EOF s/(?/g; # UNISTD s/(? macro/g; # FILE_cnt macro s/n[\0]t/n't/g; # undo can't, won't damage + $glossary{$fc}{$item} .= $_; } if ($Opts{glossary}) { @@ -1074,7 +1098,6 @@ if ($Opts{glossary}) { ; # Skip the preamble while () { process; - print CONFIG_POD; } if ($errors) { die "Errors encountered while processing $Glossary. ", @@ -1085,33 +1108,67 @@ if ($Opts{glossary}) { } } -print CONFIG_POD <<'ENDOFTAIL'; - -=back - -=head1 GIT DATA - -Information on the git commit from which the current perl binary was compiled -can be found in the variable C<$Config::Git_Data>. The variable is a -structured string that looks something like this: - - git_commit_id='ea0c2dbd5f5ac6845ecc7ec6696415bf8e27bd52' - git_describe='GitLive-blead-1076-gea0c2db' - git_branch='smartmatch' - git_uncommitted_changes='' - git_commit_id_title='Commit id:' - git_commit_date='2009-05-09 17:47:31 +0200' - -Its format is not guaranteed not to change over time. - -=head1 NOTE +$glossary{t}{taint_support} //= uncomment < +# +# From define: C or C +# +# If this perl is compiled with support for taint mode this variable will +# be set to 'define', if it is not it will be set to the empty string. +# Either of the above defines will result in it being empty. This property +# was added in version 5.37.11. See also L. +# +EOF_TEXT -This module contains a good example of how to use tie to implement a -cache and an example of how to make a tied variable readonly to those -outside of it. +$glossary{t}{taint_disabled} //= uncomment < +# +# From define: C or C +# +# If this perl is compiled with support for taint mode this variable will +# be set to the empty string, if it was compiled with +# C defined then it will be set to be "silent", +# and if it was compiled with C defined it will be +# 'define'. Either of the above defines will results in it being a true +# value. This property was added in 5.37.11. See also L. +# +EOF_TEXT -=cut +if ($Opts{glossary}) { + foreach my $fc (sort keys %glossary) { + print CONFIG_POD "=head2 $fc\n\n=over 4\n\n"; + foreach my $item (sort keys %{$glossary{$fc}}) { + print CONFIG_POD $glossary{$fc}{$item}; + } + print CONFIG_POD "=back\n\n"; + } +} +print CONFIG_POD uncomment <<'ENDOFTAIL'; +# +# =head1 GIT DATA +# +# Information on the git commit from which the current perl binary was compiled +# can be found in the variable C<$Config::Git_Data>. The variable is a +# structured string that looks something like this: +# +# git_commit_id='ea0c2dbd5f5ac6845ecc7ec6696415bf8e27bd52' +# git_describe='GitLive-blead-1076-gea0c2db' +# git_branch='smartmatch' +# git_uncommitted_changes='' +# git_commit_id_title='Commit id:' +# git_commit_date='2009-05-09 17:47:31 +0200' +# +# Its format is not guaranteed not to change over time. +# +# =head1 NOTE +# +# This module contains a good example of how to use tie to implement a +# cache and an example of how to make a tied variable readonly to those +# outside of it. +# +# =cut +# ENDOFTAIL close(GLOS) if $Opts{glossary}; @@ -1128,18 +1185,6 @@ my $orig_heavy_txt = ""; } if ($orig_config_txt ne $config_txt or $orig_heavy_txt ne $heavy_txt) { - # During the build don't look in /usr/local for libs or includes - # but after, we want to let modules look there. - my $install_heavy_txt = $heavy_txt; - $install_heavy_txt =~ s,^(ccflags|cppflags)[^=]*='[^']+,$& -I/usr/local/include,gm; - $install_heavy_txt =~ s,^(ldflags|lddlflags)[^=]*='[^']+,$& -L/usr/local/lib,gm; - - open INSTALL_CONFIG_HEAVY, ">", "$Config_heavy.install" - or die "Can't open install $Config_heavy: $!\n"; - print INSTALL_CONFIG_HEAVY $install_heavy_txt; - close INSTALL_CONFIG_HEAVY; - print "updated install $Config_heavy\n"; - open CONFIG, ">", $Config_PM or die "Can't open $Config_PM: $!\n"; open CONFIG_HEAVY, ">", $Config_heavy or die "Can't open $Config_heavy: $!\n"; print CONFIG $config_txt; diff --git a/gnu/usr.bin/perl/configure.com b/gnu/usr.bin/perl/configure.com index e9001adaeee..9b43ca65a0e 100644 --- a/gnu/usr.bin/perl/configure.com +++ b/gnu/usr.bin/perl/configure.com @@ -36,7 +36,6 @@ $! VMS-isms we will need: $ echo = "write sys$output " $ cat = "type" $ delete := delete ! local symbol overrides globals with qualifiers -$ gcc_symbol = "gcc" $ ld = "Link/nodebug" $ ans = "" $ macros = "" @@ -1288,7 +1287,6 @@ $! $ version = revision + "_" + patchlevel + "_" + subversion $! $!: see if we need a special compiler -$! cc_list = "cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands $! $ nocc = "f" $ vms_cc_dflt = "" @@ -1302,8 +1300,6 @@ $ WRITE CONFIG "#include " $ WRITE CONFIG "int main() {" $ WRITE CONFIG "#ifdef __DECC" $ WRITE CONFIG " printf(""/DECC\n"");" -$ WRITE CONFIG "#else" -$ WRITE CONFIG " printf(""/VAXC\n"");" $ WRITE CONFIG "#endif" $ WRITE CONFIG " exit(0);" $ WRITE CONFIG "}" @@ -1318,11 +1314,7 @@ $ SET ON $ IF (silent) THEN GOSUB Shut_up $ IF tmp.NE.%X10B90001 $ THEN -$ IF tmp.NE.%X10000001 -$ THEN -$ nocc = "t" !%X10000001 is return from gcc -$ GOTO Gcc_initial_check -$ ENDIF +$ GOTO Cxx_initial_check $ ENDIF $! $ GOSUB List_Parse @@ -1336,33 +1328,6 @@ $ vms_cc_dflt = "/decc" $ vms_cc_available = vms_cc_available + "cc/decc " $ ENDIF $! -$Gcc_initial_check: -$ echo "Checking for gcc" -$ OPEN/WRITE CONFIG gccvers.lis -$ SET NOON -$ DEFINE/USER_MODE SYS$ERROR CONFIG -$ DEFINE/USER_MODE SYS$OUTPUT CONFIG -$ 'gcc_symbol'/noobj/version _nla0: -$ tmp = $status -$ SET ON -$ IF (silent) THEN GOSUB Shut_up -$ CLOSE CONFIG -$ IF (tmp.NE.%X10000001).and.(tmp.ne.%X00030001) -$ THEN -$ echo "Symbol ""''gcc_symbol'"" is not defined. I guess you do not have it." -$ DELETE/NOLOG/NOCONFIRM gccvers.lis; -$ GOTO Cxx_initial_check -$ ENDIF -$ OPEN/READ CONFIG gccvers.lis -$GCC_List_Read: -$ READ/END_OF_FILE=GCC_List_End CONFIG line -$ GOTO GCC_List_Read -$GCC_List_End: -$ CLOSE CONFIG -$ echo line -$ vms_cc_available = vms_cc_available + "''gcc_symbol' " -$ DELETE/NOLOG/NOCONFIRM gccvers.lis; -$! $Cxx_initial_check: $! $! In order to build with the HP C++ compiler, invoke configure.com with "-Dusecxx" on @@ -1456,8 +1421,6 @@ $ dflt = "cxx" $ ELSE $ dflt = "cc''vms_cc_dflt'" !-> "cc" in case first compile went OK $ ENDIF -$ ELSE -$ dflt = gcc_symbol $ ENDIF $ rp = "Use which C compiler? [''dflt'] " $ GOSUB myread @@ -1506,11 +1469,6 @@ $ THEN $ ccname := DEC $ C_COMPILER_Replace = "CC=cc=''Mcc'" $ ENDIF -$ IF Mcc .EQS. "gcc" -$ THEN -$ ccname := GCC -$ C_COMPILER_Replace = "CC=cc=''Mcc'" -$ ENDIF $ ENDIF $Decc_Version_check: $ ccversion="" @@ -1562,121 +1520,7 @@ $ echo4 "adding /NOANSI_ALIAS qualifier to ccflags." $ ccflags = ccflags + "/NOANSI_ALIAS" $ DELETE/NOLOG/NOCONFIRM deccvers.*; $ ENDIF -$Gcc_check: -$ gccversion = "" -$ IF ccname .EQS. "GCC" -$ THEN -$ vaxcrtl_olb = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB") -$ vaxcrtl_exe = F$SEARCH("SYS$SHARE:VAXCRTL.EXE") -$ gcclib_olb = F$SEARCH("GNU_CC:[000000]GCCLIB.OLB") -$ IF gcclib_olb .EQS. "" -$ THEN -$! These objects/libs come w/ gcc 2.7.2 for AXP: -$ tmp = F$SEARCH("GNU_CC:[000000]libgcc2.olb") -$ IF tmp .NES. "" then gcclib_olb = tmp -$ tmp = F$SEARCH("GNU_CC:[000000]libgcclib.olb") -$ IF tmp .NES. "" -$ THEN -$ IF gcclib_olb .EQS. "" -$ THEN gcclib_olb = tmp -$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp -$ ENDIF -$ ENDIF -$ tmp = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB") -$ IF tmp .NES. "" -$ THEN -$ IF gcclib_olb .EQS. "" -$ THEN gcclib_olb = tmp -$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp -$ ENDIF -$ ENDIF -$ tmp = F$SEARCH("GNU_CC:[000000]crt0.obj") -$ IF tmp .NES. "" -$ THEN -$ IF gcclib_olb .EQS. "" -$ THEN gcclib_olb = tmp -$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp -$ ENDIF -$ ENDIF -$ IF gcclib_olb .EQS. vaxcrtl_olb THEN gcclib_olb = "" !goofy order of axplibs -$ ELSE -$ gcclib_olb = gcclib_olb + "/lib" -$ ENDIF -$ IF gcclib_olb .NES. "" .AND. - - (vaxcrtl_olb .NES. "" .OR. - - vaxcrtl_exe .NES. "" ) -$ THEN -$ echo "" -$ echo4 "Checking for GNU cc in disguise and/or its version number..." !>&4 -$ OPEN/WRITE CONFIG gccvers.c -$ WRITE CONFIG "#include " -$ WRITE CONFIG "int main() {" -$ WRITE CONFIG "#ifdef __GNUC__" -$ WRITE CONFIG "#ifdef __VERSION__" -$ WRITE CONFIG " printf(""%s\n"", __VERSION__);" -$ WRITE CONFIG "#else" -$ WRITE CONFIG " printf(""%s\n"", ""1"");" -$ WRITE CONFIG "#endif" -$ WRITE CONFIG "#endif" -$ WRITE CONFIG " exit(0);" -$ WRITE CONFIG "}" -$ CLOSE CONFIG -$ DEFINE SYS$ERROR _NLA0: -$ DEFINE SYS$OUTPUT _NLA0: -$ 'Mcc' gccvers.c -$ tmp = $status -$ DEASSIGN SYS$ERROR _NLA0: -$ DEASSIGN SYS$OUTPUT _NLA0: -$ IF (silent) THEN GOSUB Shut_up -$ DEFINE SYS$ERROR _NLA0: -$ DEFINE SYS$OUTPUT _NLA0: -$ IF vaxcrtl_exe .EQS. "" -$ THEN -$ IF F$LOCATE("VAXCRTL",gcclib_olb).NE.F$LENGTH(gcclib_olb) -$ THEN -$ link/nodebug gccvers.obj,'gcclib_olb',SYS$LIBRARY:VAXCRTL/Library -$ tmp = $status -$ ELSE -$ link/nodebug gccvers.obj,'gcclib_olb' -$ tmp = $status -$ ENDIF -$ ELSE -$ OPEN/WRITE CONFIG GCCVERS.OPT -$ WRITE CONFIG "SYS$SHARE:VAXCRTL/SHARE" -$ CLOSE CONFIG -$ link/nodebug gccvers.obj,GCCVERS.OPT/OPT,'gcclib_olb' -$ tmp = $status -$ ENDIF -$ DEASSIGN SYS$ERROR -$ DEASSIGN SYS$OUTPUT -$ IF (silent) THEN GOSUB Shut_up -$ OPEN/WRITE CONFIG gccvers.out -$ DEFINE SYS$ERROR CONFIG -$ DEFINE SYS$OUTPUT CONFIG -$ mcr []gccvers.exe -$ tmp = $status -$ CLOSE CONFIG -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ IF (silent) THEN GOSUB Shut_up -$ OPEN/READ CONFIG gccvers.out -$ READ/END_OF_FILE=Gcc_cleanup CONFIG line -$Gcc_cleanup: -$ CLOSE CONFIG -$ DELETE/NOLOG/NOCONFIRM gccvers.*; -$ IF F$LOCATE("GNU C version ",line).NE.F$LENGTH(line) -$ THEN -$ echo "You are not using GNU cc." -$ GOTO Host_name -$ ELSE -$ echo "You are using GNU cc ''line'" -$ gccversion = line -$ ccname := "GCC" -$ C_COMPILER_Replace = "CC=cc=''Mcc'" -$ GOTO Include_dirs -$ ENDIF -$ ENDIF -$ ENDIF +$! $Cxx_Version_check: $ IF ccname .EQS. "CXX" $ THEN @@ -1769,17 +1613,6 @@ $ line = F$EDIT(line,"TRIM") !bit redundant but we're in no big hurry $ DELETE/NOLOG/NOCONFIRM ccvms.lis; $ RETURN $! -$Include_dirs: -$!: What should the include directory be ? (.TLB text libraries) -$ dflt = gcclib_olb -$ rp = "Where are the include files you want to use? " -$ IF f$length( rp + "[''dflt'] " ) .GT. 76 -$ THEN rp = F$FAO("!AS!/!AS",rp,"[''dflt'] ") -$ ELSE rp = rp + "[''dflt'] " -$ ENDIF -$ GOSUB myread -$ usrinc = ans -$! $!: see if we have to deal with yellow pages, now NIS. $!: now get the host name $Host_name: @@ -2369,22 +2202,6 @@ $! $ bool_dflt = "n" $ vms_prefix = "perl_root" $ vms_prefixup = F$EDIT(vms_prefix,"UPCASE") -$ rp = "Will you be sharing your ''vms_prefixup' with ''otherarch'? [''bool_dflt'] " -$ GOSUB myread -$ IF .NOT. ans -$ THEN -$ sharedperl = "N" -$ ELSE -$ sharedperl = "Y" -$ IF (F$ELEMENT(0, "-", archname).EQS."VMS_AXP") -$ THEN -$ macros = macros + """AXE=1""," -$ ENDIF -$ IF (F$ELEMENT(0, "-", archname).EQS."VMS_IA64") -$ THEN -$ macros = macros + """IXE=1""," -$ ENDIF -$ ENDIF $! $!: is AFS running? !sfn $!: decide how portable to be. Allow command line overrides. !sfn @@ -3239,34 +3056,22 @@ $ ELSE $ uselargefiles = "undef" $ ENDIF $! +$ i32dformat="""d""" +$ u32uformat="""u""" +$ u32oformat="""o""" +$ u32xformat="""x""" +$ u32XUformat="""X""" +$! $ usemymalloc = "undef" $ if mymalloc then usemymalloc = "define" $! $ perl_cc=Mcc $! -$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_AXP") -$ THEN -$ obj_ext=".abj" -$ so="axe" -$ dlext="axe" -$ exe_ext=".axe" -$ lib_ext=".alb" -$ ELSE -$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_IA64") -$ THEN -$ obj_ext=".ibj" -$ so="ixe" -$ dlext="ixe" -$ exe_ext=".ixe" -$ lib_ext=".ilb" -$ ELSE -$ obj_ext=".obj" -$ so="exe" -$ dlext="exe" -$ exe_ext=".exe" -$ lib_ext=".olb" -$ ENDIF -$ ENDIF +$ obj_ext=".obj" +$ so="exe" +$ dlext="exe" +$ exe_ext=".exe" +$ lib_ext=".olb" $ dlobj="dl_vms''obj_ext'" $! $ cppstdin="''perl_cc'/noobj/comments=as_is/preprocess=sys$output sys$input" @@ -3434,24 +3239,13 @@ $ ENDIF $! $! Some that we need to invoke the compiler for $! -$! $! handy construction aliases/symbols $! $ OS := "open/write CONFIG []try.c" $ WS := "write CONFIG" $ CS := "close CONFIG" $ DS := "delete/nolog/noconfirm []try.*;*" -$ Needs_Opt := N $ good_compile = %X10B90001 -$ IF ccname .EQS. "GCC" -$ THEN -$ open/write OPTCHAN []try.opt -$ write OPTCHAN "Gnu_CC:[000000]gcclib.olb/library" -$ write OPTCHAN "Sys$Share:VAXCRTL/Share" -$ Close OPTCHAN -$ Needs_Opt := Y -$ good_compile = %X10000001 -$ ENDIF $ IF ccname .EQS. "CXX" $ THEN $ good_compile = %X15F60001 @@ -3550,14 +3344,8 @@ $ GOSUB compile_ok $ DEFINE/USER_MODE SYS$ERROR _NLA0: $ DEFINE/USER_MODE SYS$OUTPUT _NLA0: $ SET NOON -$ IF Needs_Opt -$ THEN -$ 'ld' try.obj,try.opt/opt -$ link_status = $status -$ ELSE -$ 'ld' try.obj -$ link_status = $status -$ ENDIF +$ 'ld' try.obj +$ link_status = $status $ SET ON $ IF F$SEARCH("try.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM try.obj; $ RETURN @@ -4569,6 +4357,23 @@ $ tmp = "acess" $ GOSUB inlibc $ d_access = tmp $! +$! Check for mkostemp +$! +$ OS +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" +$ WS "{" +$ WS "mkostemp(""foo"", 0);" +$ WS "exit(0);" +$ WS "}" +$ CS +$ tmp = "mkostemp" +$ GOSUB inlibc +$ d_mkostemp = tmp +$! $! Check for mkstemp $! $ OS @@ -5489,21 +5294,14 @@ $ ENDIF $! $! Some that are compiler or VMS version sensitive $! -$! Gnu C stuff -$ IF ccname .EQS. "GCC" +$ IF ccname .EQS. "CXX" $ THEN -$ d_attribut="define" -$ vms_cc_type="gcc" +$ vms_cc_type="cxx" $ ELSE -$ IF ccname .EQS. "CXX" -$ THEN -$ vms_cc_type="cxx" -$ ELSE -$ vms_cc_type="cc" -$ ENDIF -$ d_attribut="undef" +$ vms_cc_type="cc" $ ENDIF $! +$ d_attribut="undef" $ d_getitimer="define" $ d_gettimeod="define" $ d_mmap="define" @@ -6122,6 +5920,7 @@ $ WC "d_attribute_nonnull='undef'" $ WC "d_attribute_noreturn='undef'" $ WC "d_attribute_pure='undef'" $ WC "d_attribute_unused='undef'" +$ WC "d_attribute_visibility='undef'" $ WC "d_attribute_warn_unused_result='undef'" $ WC "d_prctl='undef'" $ WC "d_prctl_set_name='undef'" @@ -6369,6 +6168,7 @@ $ WC "d_mkdtemp='" + d_mkdtemp + "'" $ WC "d_mkfifo='undef'" $ WC "d_mknod='undef'" $ WC "d_mkostemp='undef'" +$ WC "d_mkostemp='" + d_mkostemp + "'" $ WC "d_mkstemp='" + d_mkstemp + "'" $ WC "d_mkstemps='" + d_mkstemps + "'" $ WC "d_mktime='" + d_mktime + "'" @@ -6680,7 +6480,6 @@ $ WC "freetype='void'" $ WC "full_ar='" + "'" $ WC "full_csh='" + " '" $ WC "full_sed='_NLA0:'" -$ WC "gccversion='" + gccversion + "'" $ WC "gidformat='lu'" $ WC "gidsign='1'" $ WC "gidsize='4'" @@ -6692,6 +6491,7 @@ $ WC "hint='none'" $ WC "hintfile='" + "'" $ WC "i16size='" + i16size + "'" $ WC "i16type='" + i16type + "'" +$ WC "i32dformat='" + i32dformat + "'" $ WC "i32size='" + i32size + "'" $ WC "i32type='" + i32type + "'" $ WC "i64size='" + i64size + "'" @@ -6768,6 +6568,7 @@ $ WC "i_syssockio='undef'" $ WC "i_sysstat='define'" $ WC "i_sysstatfs='undef'" $ WC "i_sysstatvfs='" + i_sysstatvfs + "'" +$ WC "i_syssyscall='undef'" $ WC "i_systime='undef'" $ WC "i_systimek='undef'" $ WC "i_systimes='undef'" @@ -6985,8 +6786,12 @@ $ WC "targetsh='MCR'" $ WC "timetype='" + timetype + "'" $ WC "u16size='" + u16size + "'" $ WC "u16type='" + u16type + "'" +$ WC "u32oformat='" + u32oformat + "'" +$ WC "u32uformat='" + u32uformat + "'" $ WC "u32size='" + u32size + "'" $ WC "u32type='" + u32type + "'" +$ WC "u32xformat='" + u32xformat + "'" +$ WC "u32XUformat='" + u32XUformat + "'" $ WC "u64size='" + u64size + "'" $ WC "u64type='" + u64type + "'" $ WC "u8size='" + u8size + "'" @@ -7188,20 +6993,7 @@ $! Okay, we've gotten here. Build munchconfig.exe $ COPY/NOLOG [-.vms]munchconfig.c [] $ COPY/NOLOG [-.vms]'Makefile_SH' [] $ 'Perl_CC' 'ccflags' munchconfig.c -$ IF Needs_Opt -$ THEN -$ OPEN/WRITE CONFIG []munchconfig.opt -$ IF ccname .EQS. "GCC" -$ THEN -$ WRITE CONFIG "Gnu_CC:[000000]gcclib.olb/library" -$ ENDIF -$ WRITE CONFIG "Sys$Share:VAXCRTL/Share" -$ CLOSE CONFIG -$ 'ld'/EXE='exe_ext' munchconfig'obj_ext',munchconfig.opt/opt -$ DELETE/NOLOG/NOCONFIRM munchconfig.opt; -$ ELSE -$ 'ld'/EXE='exe_ext' munchconfig'obj_ext' -$ ENDIF +$ 'ld'/EXE='exe_ext' munchconfig'obj_ext' $ IF F$SEARCH("munchconfig''obj_ext'") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig'obj_ext'; $ IF F$SEARCH("munchconfig.c") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.c; $ IF ccname .EQS. "CXX" @@ -7253,7 +7045,6 @@ $ IF use_two_pot_malloc THEN WC "#define TWO_POT_OPTIMIZE" $ IF mymalloc THEN WC "#define EMBEDMYMALLOC" $ IF use_pack_malloc THEN WC "#define PACK_MALLOC" $ IF use_debugmalloc THEN WC "#define DEBUGGING_MSTATS" -$ IF ccname .EQS. "GCC" THEN WC "#define GNUC_ATTRIBUTE_CHECK" $ IF (Has_Dec_C_Sockets) $ THEN $ WC "#define VMS_DO_SOCKETS" @@ -7313,12 +7104,6 @@ $ DECCXX_REPLACE = "DECCXX=DECCXX=1" $ ELSE $ DECCXX_REPLACE = "DECCXX=" $ ENDIF -$ IF ccname .EQS. "GCC" -$ THEN -$ GNUC_REPLACE = "GNUC=gnuc=1" -$ ELSE -$ GNUC_REPLACE = "GNUC=" -$ ENDIF $ IF Has_Dec_C_Sockets $ THEN $ SOCKET_REPLACE = "SOCKET=DECC_SOCKETS=1" @@ -7365,7 +7150,6 @@ $ WC := write CONFIG $ WC "''DECC_REPLACE'" $ WC "''DECCXX_REPLACE'" $ WC "''ARCH_TYPE'" -$ WC "''GNUC_REPLACE'" $ WC "''SOCKET_REPLACE'" $ WC "''THREAD_REPLACE'" $ WC "''C_Compiler_Replace'" @@ -7504,8 +7288,6 @@ $ echo "" $ echo4 "The perl.cld file is now being written..." $ OPEN/WRITE CONFIG 'file_2_find' $ ext = ".exe" -$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_AXP") THEN ext := .AXE -$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_IA64") THEN ext := .IXE $ IF (use_vmsdebug_perl) $ THEN $ WRITE CONFIG "define verb dbgperl" @@ -7561,11 +7343,6 @@ $ WRITE CONFIG "$ root_spec = P1" $ WRITE CONFIG "$ endif" $ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' 'root_spec'" $ WRITE CONFIG "$ ext = "".exe""" -$ IF sharedperl -$ THEN -$ WRITE CONFIG "$ if f$getsyi(""ARCH_TYPE"") .eq. 2 then ext = "".AXE""" -$ WRITE CONFIG "$ if f$getsyi(""ARCH_TYPE"") .eq. 3 then ext = "".IXE""" -$ ENDIF $ IF (perl_symbol) $ THEN $ perl_setup_perl = "'" + "'perl'" ! triple quoted foreign command symbol diff --git a/gnu/usr.bin/perl/cop.h b/gnu/usr.bin/perl/cop.h index d93e0f02a45..1b2b7947e1c 100644 --- a/gnu/usr.bin/perl/cop.h +++ b/gnu/usr.bin/perl/cop.h @@ -33,7 +33,7 @@ struct jmpenv { struct jmpenv * je_prev; Sigjmp_buf je_buf; /* uninit if je_prev is NULL */ int je_ret; /* last exception thrown */ - bool je_mustcatch; /* need to call longjmp()? */ + bool je_mustcatch; /* longjmp()s must be caught locally */ U16 je_old_delaymagic; /* saved PL_delaymagic */ SSize_t je_old_stack_hwm; }; @@ -110,30 +110,47 @@ typedef struct jmpenv JMPENV; #define dJMPENV JMPENV cur_env -#define JMPENV_PUSH(v) \ +#define JMPENV_PUSH(v) \ STMT_START { \ - DEBUG_l({ \ - int i = 0; JMPENV *p = PL_top_env; \ + DEBUG_l({ \ + int i = 0; \ + JMPENV *p = PL_top_env; \ while (p) { i++; p = p->je_prev; } \ - Perl_deb(aTHX_ "JUMPENV_PUSH level=%d at %s:%d\n", \ - i, __FILE__, __LINE__);}) \ + Perl_deb(aTHX_ "JMPENV_PUSH pre level=%d in %s at %s:%d\n", \ + i, SAFE_FUNCTION__, __FILE__, __LINE__); \ + }); \ cur_env.je_prev = PL_top_env; \ JE_OLD_STACK_HWM_save(cur_env); \ - cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK); \ + /* setjmp() is callable in limited contexts which does not */ \ + /* include assignment, so switch() instead */ \ + switch (PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK)) { \ + case 0: cur_env.je_ret = 0; break; \ + case 1: cur_env.je_ret = 1; break; \ + case 2: cur_env.je_ret = 2; break; \ + case 3: cur_env.je_ret = 3; break; \ + default: Perl_croak(aTHX_ "panic: unexpected setjmp() result\n"); \ + } \ JE_OLD_STACK_HWM_restore(cur_env); \ PL_top_env = &cur_env; \ cur_env.je_mustcatch = FALSE; \ cur_env.je_old_delaymagic = PL_delaymagic; \ + DEBUG_l({ \ + int i = 0; \ + JMPENV *p = PL_top_env; \ + while (p) { i++; p = p->je_prev; } \ + Perl_deb(aTHX_ "JMPENV_PUSH level=%d ret=%d in %s at %s:%d\n", \ + i, cur_env.je_ret, SAFE_FUNCTION__, __FILE__, __LINE__); \ + }); \ (v) = cur_env.je_ret; \ } STMT_END #define JMPENV_POP \ STMT_START { \ - DEBUG_l({ \ + DEBUG_l({ \ int i = -1; JMPENV *p = PL_top_env; \ while (p) { i++; p = p->je_prev; } \ - Perl_deb(aTHX_ "JUMPENV_POP level=%d at %s:%d\n", \ - i, __FILE__, __LINE__);}) \ + Perl_deb(aTHX_ "JMPENV_POP level=%d in %s at %s:%d\n", \ + i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ assert(PL_top_env == &cur_env); \ PL_delaymagic = cur_env.je_old_delaymagic; \ PL_top_env = cur_env.je_prev; \ @@ -141,27 +158,29 @@ typedef struct jmpenv JMPENV; #define JMPENV_JUMP(v) \ STMT_START { \ - DEBUG_l({ \ + DEBUG_l({ \ int i = -1; JMPENV *p = PL_top_env; \ while (p) { i++; p = p->je_prev; } \ - Perl_deb(aTHX_ "JUMPENV_JUMP(%d) level=%d at %s:%d\n", \ - (int)v, i, __FILE__, __LINE__);}) \ - if (PL_top_env->je_prev) \ + Perl_deb(aTHX_ "JMPENV_JUMP(%d) level=%d in %s at %s:%d\n", \ + (int)(v), i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ + if (PL_top_env->je_prev) { \ + assert((v) >= 0 && (v) <= 3); \ PerlProc_longjmp(PL_top_env->je_buf, (v)); \ + } \ if ((v) == 2) \ PerlProc_exit(STATUS_EXIT); \ - PerlIO_printf(PerlIO_stderr(), "panic: top_env, v=%d\n", (int)v); \ + PerlIO_printf(PerlIO_stderr(), "panic: top_env, v=%d\n", (int)(v)); \ PerlProc_exit(1); \ } STMT_END #define CATCH_GET (PL_top_env->je_mustcatch) #define CATCH_SET(v) \ STMT_START { \ - DEBUG_l( \ + DEBUG_l( \ Perl_deb(aTHX_ \ - "JUMPLEVEL set catch %d => %d (for %p) at %s:%d\n", \ - PL_top_env->je_mustcatch, v, (void*)PL_top_env, \ - __FILE__, __LINE__);) \ + "JUMPLEVEL set catch %d => %d (for %p) in %s at %s:%d\n", \ + PL_top_env->je_mustcatch, (v), (void*)PL_top_env, \ + SAFE_FUNCTION__, __FILE__, __LINE__);) \ PL_top_env->je_mustcatch = (v); \ } STMT_END @@ -175,8 +194,8 @@ typedef struct refcounted_he COPHH; #define COPHH_EXISTS REFCOUNTED_HE_EXISTS /* -=for apidoc Amx|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags -=for apidoc_item|SV *|cophh_fetch_pv |const COPHH *cophh|const char *key |U32 hash|U32 flags +=for apidoc Amx|SV *|cophh_fetch_pv |const COPHH *cophh|const char *key |U32 hash|U32 flags +=for apidoc_item|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags =for apidoc_item|SV *|cophh_fetch_pvs|const COPHH *cophh| "key" |U32 flags =for apidoc_item|SV *|cophh_fetch_sv |const COPHH *cophh| SV *key |U32 hash|U32 flags @@ -206,19 +225,24 @@ the octets. =for apidoc Amnh||COPHH_KEY_UTF8 =cut + */ -#define cophh_fetch_pvn(cophh, key, keylen, hash, flags) \ - Perl_refcounted_he_fetch_pvn(aTHX_ cophh, key, keylen, hash, flags) +#define cophh_fetch_pvn(cophh, key, keylen, hash, flags) \ + Perl_refcounted_he_fetch_pvn(aTHX_ cophh, key, keylen, hash, \ + (flags & COPHH_KEY_UTF8)) -#define cophh_fetch_pvs(cophh, key, flags) \ - Perl_refcounted_he_fetch_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, flags) +#define cophh_fetch_pvs(cophh, key, flags) \ + Perl_refcounted_he_fetch_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, \ + (flags & COPHH_KEY_UTF8)) -#define cophh_fetch_pv(cophh, key, hash, flags) \ - Perl_refcounted_he_fetch_pv(aTHX_ cophh, key, hash, flags) +#define cophh_fetch_pv(cophh, key, hash, flags) \ + Perl_refcounted_he_fetch_pv(aTHX_ cophh, key, hash, \ + (flags & COPHH_KEY_UTF8)) -#define cophh_fetch_sv(cophh, key, hash, flags) \ - Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, flags) +#define cophh_fetch_sv(cophh, key, hash, flags) \ + Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, \ + (flags & COPHH_KEY_UTF8)) /* =for apidoc Amx|bool|cophh_exists_pvn|const COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags @@ -305,8 +329,8 @@ Generate and return a fresh cop hints hash containing no entries. #define cophh_new_empty() ((COPHH *)NULL) /* -=for apidoc Amx|COPHH *|cophh_store_pvn|COPHH *cophh|const char *key|STRLEN keylen|U32 hash|SV *value|U32 flags -=for apidoc_item|COPHH *|cophh_store_pv |COPHH *cophh|const char *key |U32 hash|SV *value|U32 flags +=for apidoc Amx|COPHH *|cophh_store_pv |COPHH *cophh|const char *key |U32 hash|SV *value|U32 flags +=for apidoc_item|COPHH *|cophh_store_pvn|COPHH *cophh|const char *key|STRLEN keylen|U32 hash|SV *value|U32 flags =for apidoc_item|COPHH *|cophh_store_pvs|COPHH *cophh| "key" |SV *value|U32 flags =for apidoc_item|COPHH *|cophh_store_sv |COPHH *cophh| SV *key |U32 hash|SV *value|U32 flags @@ -357,8 +381,8 @@ the octets. Perl_refcounted_he_new_sv(aTHX_ cophh, key, hash, value, flags) /* -=for apidoc Amx|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags -=for apidoc_item|COPHH *|cophh_delete_pv |COPHH *cophh|const char *key |U32 hash|U32 flags +=for apidoc Amx|COPHH *|cophh_delete_pv |COPHH *cophh|const char *key |U32 hash|U32 flags +=for apidoc_item|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags =for apidoc_item|COPHH *|cophh_delete_pvs|COPHH *cophh| "key" |U32 flags =for apidoc_item|COPHH *|cophh_delete_sv |COPHH *cophh| SV *key |U32 hash|U32 flags @@ -415,15 +439,20 @@ struct cop { #ifdef USE_ITHREADS PADOFFSET cop_stashoff; /* offset into PL_stashpad, for the package the line was compiled in */ - char * cop_file; /* name of file this command is from */ + char * cop_file; /* rcpv containing name of file this command is from */ #else HV * cop_stash; /* package line was compiled in */ GV * cop_filegv; /* name of GV file this command is from */ #endif U32 cop_hints; /* hints bits from pragmata */ U32 cop_seq; /* parse sequence number */ - /* Beware. mg.c and warnings.pl assume the type of this is STRLEN *: */ - STRLEN * cop_warnings; /* lexical warnings bitmask */ + char * cop_warnings; /* Lexical warnings bitmask vector. + Refcounted shared copy of ${^WARNING_BITS}. + This pointer either points at one of the + magic values for warnings, or it points + at a buffer constructed with rcpv_new(). + Use the RCPV_LEN() macro to get its length. + */ /* compile time state of %^H. See the comment in op.c for how this is used to recreate a hash to return from caller. */ COPHH * cop_hints_hash; @@ -439,7 +468,10 @@ struct cop { =for apidoc Am|const char *|CopFILE|const COP * c Returns the name of the file associated with the C C -=for apidoc Am|STRLEN|CopLINE|const COP * c +=for apidoc Am|const char *|CopFILE_LEN|const COP * c +Returns the length of the file associated with the C C + +=for apidoc Am|line_t|CopLINE|const COP * c Returns the line number in the source code associated with the C C =for apidoc Am|AV *|CopFILEAV|const COP * c @@ -455,6 +487,17 @@ Returns the SV associated with the C C =for apidoc Am|void|CopFILE_set|COP * c|const char * pv Makes C the name of the file associated with the C C +=for apidoc Am|void|CopFILE_setn|COP * c|const char * pv|STRLEN len +Makes C the name of the file associated with the C C + +=for apidoc Am|void|CopFILE_copy|COP * dst|COP * src +Efficiently copies the cop file name from one COP to another. Wraps +the required logic to do a refcounted copy under threads or not. + +=for apidoc Am|void|CopFILE_free|COP * c +Frees the file data in a cop. Under the hood this is a refcounting +operation. + =for apidoc Am|GV *|CopFILEGV|const COP * c Returns the GV associated with the C C @@ -482,14 +525,113 @@ string C

, creating the package if necessary. =cut */ +/* +=for apidoc Am|RCPV *|RCPVx|char *pv +Returns the RCPV structure (struct rcpv) for a refcounted +string pv created with C. +No checks are performed to ensure that C was actually allocated +with C, it is the callers responsibility to ensure that +this is the case. + +=for apidoc Am|RCPV *|RCPV_REFCOUNT|char *pv +Returns the refcount for a pv created with C. +No checks are performed to ensure that C was actually allocated +with C, it is the callers responsibility to ensure that +this is the case. + +=for apidoc Am|RCPV *|RCPV_REFCNT_inc|char *pv +Increments the refcount for a C pointer which was created +with a call to C. Same as calling rcpv_copy(). +No checks are performed to ensure that C was actually allocated +with C, it is the callers responsibility to ensure that +this is the case. + +=for apidoc Am|RCPV *|RCPV_REFCNT_dec|char *pv +Decrements the refcount for a C pointer which was created +with a call to C. Same as calling rcpv_free(). +No checks are performed to ensure that C was actually allocated +with C, it is the callers responsibility to ensure that +this is the case. + +=for apidoc Am|RCPV *|RCPV_LEN|char *pv +Returns the length of a pv created with C. +Note that this reflects the length of the string from the callers +point of view, it does not include the mandatory null which is +always injected at the end of the string by rcpv_new(). +No checks are performed to ensure that C was actually allocated +with C, it is the callers responsibility to ensure that +this is the case. + +=cut +*/ + +struct rcpv { + STRLEN refcount; /* UV would mean a 64 refcnt on + 32 bit builds with -Duse64bitint */ + STRLEN len; /* length of string including mandatory + null byte at end */ + char pv[1]; +}; +typedef struct rcpv RCPV; + +#define RCPVf_USE_STRLEN (1 << 0) +#define RCPVf_NO_COPY (1 << 1) +#define RCPVf_ALLOW_EMPTY (1 << 2) + +#define RCPVx(pv_arg) ((RCPV *)((pv_arg) - STRUCT_OFFSET(struct rcpv, pv))) +#define RCPV_REFCOUNT(pv) (RCPVx(pv)->refcount) +#define RCPV_LEN(pv) (RCPVx(pv)->len-1) /* len always includes space for a null */ +#define RCPV_REFCNT_inc(pv) rcpv_copy(pv) +#define RCPV_REFCNT_dec(pv) rcpv_free(pv) + #ifdef USE_ITHREADS -# define CopFILE(c) ((c)->cop_file) +# define CopFILE(c) ((c)->cop_file) +# define CopFILE_LEN(c) (CopFILE(c) ? RCPV_LEN(CopFILE(c)) : 0) # define CopFILEGV(c) (CopFILE(c) \ ? gv_fetchfile(CopFILE(c)) : NULL) -# define CopFILE_set(c,pv) ((c)->cop_file = savesharedpv(pv)) -# define CopFILE_setn(c,pv,l) ((c)->cop_file = savesharedpvn((pv),(l))) +# define CopFILE_set_x(c,pv) ((c)->cop_file = rcpv_new((pv),0,RCPVf_USE_STRLEN)) +# define CopFILE_setn_x(c,pv,l) ((c)->cop_file = rcpv_new((pv),(l),0)) +# define CopFILE_free_x(c) ((c)->cop_file = rcpv_free((c)->cop_file)) +# define CopFILE_copy_x(dst,src) ((dst)->cop_file = rcpv_copy((src)->cop_file)) + +/* change condition to 1 && to enable this debugging */ +# define CopFILE_debug(c,t,rk) \ + if (0 && (c)->cop_file) \ + PerlIO_printf(Perl_debug_log, \ + "%-14s THX:%p OP:%p PV:%p rc: " \ + "%6zu fn: '%.*s' at %s line %d\n", \ + (t), aTHX, (c), (c)->cop_file, \ + RCPV_REFCOUNT((c)->cop_file)-rk, \ + (int)RCPV_LEN((c)->cop_file), \ + (c)->cop_file,__FILE__,__LINE__) \ + + +# define CopFILE_set(c,pv) \ + STMT_START { \ + CopFILE_set_x(c,pv); \ + CopFILE_debug(c,"CopFILE_set", 0); \ + } STMT_END + +# define CopFILE_setn(c,pv,l) \ + STMT_START { \ + CopFILE_setn_x(c,pv,l); \ + CopFILE_debug(c,"CopFILE_setn", 0); \ + } STMT_END + +# define CopFILE_copy(dst,src) \ + STMT_START { \ + CopFILE_copy_x((dst),(src)); \ + CopFILE_debug((dst),"CopFILE_copy", 0); \ + } STMT_END + +# define CopFILE_free(c) \ + STMT_START { \ + CopFILE_debug((c),"CopFILE_free", 1); \ + CopFILE_free_x(c); \ + } STMT_END + # define CopFILESV(c) (CopFILE(c) \ ? GvSV(gv_fetchfile(CopFILE(c))) : NULL) @@ -502,13 +644,13 @@ string C

, creating the package if necessary. # define CopSTASH_set(c,hv) ((c)->cop_stashoff = (hv) \ ? alloccopstash(hv) \ : 0) -# define CopFILE_free(c) (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = NULL)) #else /* Above: yes threads; Below no threads */ # define CopFILEGV(c) ((c)->cop_filegv) # define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) # define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) +# define CopFILE_copy(dst,src) CopFILEGV_set((dst),CopFILEGV(src)) # define CopFILE_setn(c,pv,l) CopFILEGV_set((c), gv_fetchfile_flags((pv),(l),0)) # define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : NULL) # define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : NULL) @@ -520,6 +662,8 @@ string C

, creating the package if necessary. # define CopFILEAVn(c) (CopFILEGV(c) ? GvAVn(CopFILEGV(c)) : NULL) # define CopFILE(c) (CopFILEGV(c) /* +2 for '_<' */ \ ? GvNAME(CopFILEGV(c))+2 : NULL) +# define CopFILE_LEN(c) (CopFILEGV(c) /* -2 for '_<' */ \ + ? GvNAMELEN(CopFILEGV(c))-2 : 0) # define CopSTASH(c) ((c)->cop_stash) # define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) # define CopFILE_free(c) (SvREFCNT_dec(CopFILEGV(c)),(CopFILEGV(c) = NULL)) @@ -534,10 +678,12 @@ string C

, creating the package if necessary. #define CopHINTHASH_get(c) ((COPHH*)((c)->cop_hints_hash)) #define CopHINTHASH_set(c,h) ((c)->cop_hints_hash = (h)) +#define CopFEATURES_setfrom(dst, src) ((dst)->cop_features = (src)->cop_features) + /* -=for apidoc Am|SV *|cop_hints_fetch_pvn|const COP *cop|const char *key|STRLEN keylen|U32 hash|U32 flags -=for apidoc_item|SV *|cop_hints_fetch_pv |const COP *cop|const char *key |U32 hash|U32 flags -=for apidoc_item|SV *|cop_hints_fetch_pvs|const COP *cop| "key" |U32 flags +=for apidoc Am|SV *|cop_hints_fetch_pv |const COP *cop|const char *key |U32 hash|U32 flags +=for apidoc_item|SV *|cop_hints_fetch_pvn|const COP *cop|const char *key|STRLEN keylen|U32 hash|U32 flags +=for apidoc_item|SV *|cop_hints_fetch_pvs|const COP *cop| "key" |U32 flags =for apidoc_item|SV *|cop_hints_fetch_sv |const COP *cop| SV *key |U32 hash|U32 flags These look up the hint entry in the cop C with the key specified by @@ -579,8 +725,8 @@ the octets. cophh_fetch_sv(CopHINTHASH_get(cop), key, hash, flags) /* -=for apidoc Am|bool|cop_hints_exists_pvn|const COP *cop|const char *key|STRLEN keylen|U32 hash|U32 flags -=for apidoc_item|bool|cop_hints_exists_pv |const COP *cop|const char *key |U32 hash|U32 flags +=for apidoc Am|bool|cop_hints_exists_pv |const COP *cop|const char *key|U32 hash |U32 flags +=for apidoc_item|bool|cop_hints_exists_pvn|const COP *cop|const char *key|STRLEN keylen|U32 hash|U32 flags =for apidoc_item|bool|cop_hints_exists_pvs|const COP *cop| "key" |U32 flags =for apidoc_item|bool|cop_hints_exists_sv |const COP *cop| SV *key |U32 hash|U32 flags @@ -766,7 +912,7 @@ struct block_eval { /* blk_u16 bit usage for eval contexts: */ -#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x3F) /* saved PL in_eval */ +#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x3F) /* saved PL_in_eval */ #define CxEVAL_TXT_REFCNTED(cx) (((cx)->blk_u16) & 0x40) /* cur_text rc++ */ #define CxOLD_OP_TYPE(cx) (((cx)->blk_u16) >> 7) /* type of eval op */ @@ -793,7 +939,7 @@ struct block_loop { } lazyiv; struct { /* CXt_LOOP_LAZYSV C */ SV * cur; - SV * end; /* maxiumum value (or minimum in reverse) */ + SV * end; /* maximum value (or minimum in reverse) */ } lazysv; } state_u; #ifdef USE_ITHREADS @@ -808,9 +954,9 @@ struct block_loop { ? &GvSV((c)->blk_loop.itervar_u.gv) \ : (SV **)&(c)->blk_loop.itervar_u.gv) -#define CxLABEL(c) (0 + CopLABEL((c)->blk_oldcop)) -#define CxLABEL_len(c,len) (0 + CopLABEL_len((c)->blk_oldcop, len)) -#define CxLABEL_len_flags(c,len,flags) (0 + CopLABEL_len_flags((c)->blk_oldcop, len, flags)) +#define CxLABEL(c) (CopLABEL((c)->blk_oldcop)) +#define CxLABEL_len(c,len) (CopLABEL_len((c)->blk_oldcop, len)) +#define CxLABEL_len_flags(c,len,flags) ((const char *)CopLABEL_len_flags((c)->blk_oldcop, len, flags)) #define CxHASARGS(c) (((c)->cx_type & CXp_HASARGS) == CXp_HASARGS) /* CxLVAL(): the lval flags of the call site: the relevant flag bits from @@ -875,7 +1021,7 @@ struct block { #define CX_DEBUG(cx, action) \ DEBUG_l( \ - Perl_deb(aTHX_ "CX %ld %s %s (scope %ld,%ld) (save %ld,%ld) at %s:%d\n",\ + Perl_deb(aTHX_ "CX %ld %s %s (scope %ld,%ld) (save %ld,%ld) in %s at %s:%d\n",\ (long)cxstack_ix, \ action, \ PL_block_type[CxTYPE(cx)], \ @@ -883,7 +1029,7 @@ struct block { (long)(cx->blk_oldscopesp), \ (long)PL_savestack_ix, \ (long)(cx->blk_oldsaveix), \ - __FILE__, __LINE__)); + SAFE_FUNCTION__, __FILE__, __LINE__)); @@ -1130,10 +1276,10 @@ typedef struct stackinfo PERL_SI; #define cxstack_max (PL_curstackinfo->si_cxmax) #ifdef DEBUGGING -# define SET_MARK_OFFSET \ +# define SET_MARK_OFFSET \ PL_curstackinfo->si_markoff = PL_markstack_ptr - PL_markstack #else -# define SET_MARK_OFFSET NOOP +# define SET_MARK_OFFSET NOOP #endif #if defined DEBUGGING && !defined DEBUGGING_RE_ONLY @@ -1148,8 +1294,8 @@ typedef struct stackinfo PERL_SI; DEBUG_l({ \ int i = 0; PERL_SI *p = PL_curstackinfo; \ while (p) { i++; p = p->si_prev; } \ - Perl_deb(aTHX_ "push STACKINFO %d at %s:%d\n", \ - i, __FILE__, __LINE__);}) \ + Perl_deb(aTHX_ "push STACKINFO %d in %s at %s:%d\n", \ + i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ if (!next) { \ next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \ next->si_prev = PL_curstackinfo; \ @@ -1176,8 +1322,8 @@ typedef struct stackinfo PERL_SI; DEBUG_l({ \ int i = -1; PERL_SI *p = PL_curstackinfo; \ while (p) { i++; p = p->si_prev; } \ - Perl_deb(aTHX_ "pop STACKINFO %d at %s:%d\n", \ - i, __FILE__, __LINE__);}) \ + Perl_deb(aTHX_ "pop STACKINFO %d in %s at %s:%d\n", \ + i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \ if (!prev) { \ Perl_croak_popstack(); \ } \ @@ -1212,17 +1358,17 @@ program; otherwise 0; /* =for apidoc_section $multicall -=for apidoc Amns||dMULTICALL +=for apidoc Amn;||dMULTICALL Declare local variables for a multicall. See L. -=for apidoc Ams||PUSH_MULTICALL|CV* the_cv +=for apidoc Am;||PUSH_MULTICALL|CV* the_cv Opening bracket for a lightweight callback. See L. -=for apidoc Amns||MULTICALL +=for apidoc Amn;||MULTICALL Make a lightweight callback. See L. -=for apidoc Amns||POP_MULTICALL +=for apidoc Amn;||POP_MULTICALL Closing bracket for a lightweight callback. See L. diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm index 19dcad24423..1e257b5c21f 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN.pm @@ -2,7 +2,7 @@ # vim: ts=4 sts=4 sw=4: use strict; package CPAN; -$CPAN::VERSION = '2.33'; +$CPAN::VERSION = '2.36'; $CPAN::VERSION =~ s/_//; # we need to run chdir all over and we would get at wrong libraries diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm index d346a6bf299..6ce0572ef7f 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/Distribution.pm @@ -9,7 +9,7 @@ use File::Path (); use POSIX ":sys_wait_h"; @CPAN::Distribution::ISA = qw(CPAN::InfoObj); use vars qw($VERSION); -$VERSION = "2.33"; +$VERSION = "2.34"; my $run_allow_installing_within_test = 1; # boolean; either in test or in install, there is no third option @@ -2950,7 +2950,7 @@ sub prereqs_for_slot { } if (-f "Build.PL" && ! -f File::Spec->catfile($self->{build_dir},"Makefile.PL") - && ! $merged->requirements_for_module("Module::Build") + && ! @{[ $merged->required_modules ]} && ! $CPAN::META->has_inst("Module::Build") ) { $CPAN::Frontend->mywarn( diff --git a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm index 4fc792c26a4..b2c86d0bd18 100644 --- a/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm +++ b/gnu/usr.bin/perl/cpan/CPAN/lib/CPAN/HTTP/Client.pm @@ -6,7 +6,7 @@ use vars qw(@ISA); use CPAN::HTTP::Credentials; use HTTP::Tiny 0.005; -$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9601"; +$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9602"; # CPAN::HTTP::Client is adapted from parts of cpanm by Tatsuhiko Miyagawa # and parts of LWP by Gisle Aas @@ -32,6 +32,7 @@ sub mirror { my $want_proxy = $self->_want_proxy($uri); my $http = HTTP::Tiny->new( + verify_SSL => 1, $want_proxy ? (proxy => $self->{proxy}) : () ); diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs index fd56767a8ea..83a261f0dc2 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/Bzip2.xs @@ -391,7 +391,7 @@ new(className, appendOut=1, blockSize100k=1, workfactor=0, verbosity=0) SV* obj = sv_2mortal(newSViv(PTR2IV(s))) ; XPUSHs(obj); } - if (GIMME == G_ARRAY) { + if (GIMME_V == G_ARRAY) { SV * sv = sv_2mortal(newSViv(err)) ; setDUALstatus(sv, err); XPUSHs(sv) ; @@ -447,7 +447,7 @@ new(className, appendOut=1 , consume=1, small=0, verbosity=0, limitOutput=0) SV* obj = sv_2mortal(newSViv(PTR2IV(s))) ; XPUSHs(obj); } - if (GIMME == G_ARRAY) { + if (GIMME_V == G_ARRAY) { SV * sv = sv_2mortal(newSViv(err)) ; setDUALstatus(sv, err); XPUSHs(sv) ; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/blocksort.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/blocksort.c index 92d81fe287e..04d3abcc7a9 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/blocksort.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/blocksort.c @@ -11,7 +11,7 @@ bzip2/libbzip2 version 1.0.8 of 13 July 2019 Copyright (C) 1996-2019 Julian Seward - Please read the WARNING, DISCLAIMER and PATENTS sections in the + Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. This program is released under the terms of the license contained @@ -27,11 +27,11 @@ /*---------------------------------------------*/ /*---------------------------------------------*/ -static +static __inline__ -void fallbackSimpleSort ( UInt32* fmap, - UInt32* eclass, - Int32 lo, +void fallbackSimpleSort ( UInt32* fmap, + UInt32* eclass, + Int32 lo, Int32 hi ) { Int32 i, j, tmp; @@ -90,9 +90,9 @@ void fallbackSimpleSort ( UInt32* fmap, static -void fallbackQSort3 ( UInt32* fmap, +void fallbackQSort3 ( UInt32* fmap, UInt32* eclass, - Int32 loSt, + Int32 loSt, Int32 hiSt ) { Int32 unLo, unHi, ltLo, gtHi, n, m; @@ -117,9 +117,9 @@ void fallbackQSort3 ( UInt32* fmap, } /* Random partitioning. Median of 3 sometimes fails to - avoid bad cases. Median of 9 seems to help but + avoid bad cases. Median of 9 seems to help but looks rather expensive. This too seems to work but - is cheaper. Guidance for the magic constants + is cheaper. Guidance for the magic constants 7621 and 32768 is taken from Sedgewick's algorithms book, chapter 35. */ @@ -136,10 +136,10 @@ void fallbackQSort3 ( UInt32* fmap, while (1) { if (unLo > unHi) break; n = (Int32)eclass[fmap[unLo]] - (Int32)med; - if (n == 0) { - fswap(fmap[unLo], fmap[ltLo]); - ltLo++; unLo++; - continue; + if (n == 0) { + fswap(fmap[unLo], fmap[ltLo]); + ltLo++; unLo++; + continue; }; if (n > 0) break; unLo++; @@ -147,10 +147,10 @@ void fallbackQSort3 ( UInt32* fmap, while (1) { if (unLo > unHi) break; n = (Int32)eclass[fmap[unHi]] - (Int32)med; - if (n == 0) { - fswap(fmap[unHi], fmap[gtHi]); - gtHi--; unHi--; - continue; + if (n == 0) { + fswap(fmap[unHi], fmap[gtHi]); + gtHi--; unHi--; + continue; }; if (n < 0) break; unHi--; @@ -209,8 +209,8 @@ void fallbackQSort3 ( UInt32* fmap, #define UNALIGNED_BH(zz) ((zz) & 0x01f) static -void fallbackSort ( UInt32* fmap, - UInt32* eclass, +void fallbackSort ( UInt32* fmap, + UInt32* eclass, UInt32* bhtab, Int32 nblock, Int32 verb ) @@ -251,7 +251,7 @@ void fallbackSort ( UInt32* fmap, --*/ /*-- set sentinel bits for block-end detection --*/ - for (i = 0; i < 32; i++) { + for (i = 0; i < 32; i++) { SET_BH(nblock + 2*i); CLEAR_BH(nblock + 2*i + 1); } @@ -260,7 +260,7 @@ void fallbackSort ( UInt32* fmap, H = 1; while (1) { - if (verb >= 4) + if (verb >= 4) VPrintf1 ( " depth %6d has ", H ); j = 0; @@ -305,14 +305,14 @@ void fallbackSort ( UInt32* fmap, } } - if (verb >= 4) + if (verb >= 4) VPrintf1 ( "%6d unresolved strings\n", nNotDone ); H *= 2; if (H > nblock || nNotDone == 0) break; } - /*-- + /*-- Reconstruct the original block in eclass8 [0 .. nblock-1], since the previous phase destroyed it. @@ -344,9 +344,9 @@ void fallbackSort ( UInt32* fmap, /*---------------------------------------------*/ static __inline__ -Bool mainGtU ( UInt32 i1, +Bool mainGtU ( UInt32 i1, UInt32 i2, - UChar* block, + UChar* block, UInt16* quadrant, UInt32 nblock, Int32* budget ) @@ -486,8 +486,8 @@ void mainSimpleSort ( UInt32* ptr, UChar* block, UInt16* quadrant, Int32 nblock, - Int32 lo, - Int32 hi, + Int32 lo, + Int32 hi, Int32 d, Int32* budget ) { @@ -511,8 +511,8 @@ void mainSimpleSort ( UInt32* ptr, if (i > hi) break; v = ptr[i]; j = i; - while ( mainGtU ( - ptr[j-h]+d, v+d, block, quadrant, nblock, budget + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget ) ) { ptr[j] = ptr[j-h]; j = j - h; @@ -525,8 +525,8 @@ void mainSimpleSort ( UInt32* ptr, if (i > hi) break; v = ptr[i]; j = i; - while ( mainGtU ( - ptr[j-h]+d, v+d, block, quadrant, nblock, budget + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget ) ) { ptr[j] = ptr[j-h]; j = j - h; @@ -539,8 +539,8 @@ void mainSimpleSort ( UInt32* ptr, if (i > hi) break; v = ptr[i]; j = i; - while ( mainGtU ( - ptr[j-h]+d, v+d, block, quadrant, nblock, budget + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget ) ) { ptr[j] = ptr[j-h]; j = j - h; @@ -578,13 +578,13 @@ void mainSimpleSort ( UInt32* ptr, } \ } -static +static __inline__ UChar mmed3 ( UChar a, UChar b, UChar c ) { UChar t; if (a > b) { t = a; a = b; b = t; }; - if (b > c) { + if (b > c) { b = c; if (a > b) b = a; } @@ -622,8 +622,8 @@ void mainQSort3 ( UInt32* ptr, UChar* block, UInt16* quadrant, Int32 nblock, - Int32 loSt, - Int32 hiSt, + Int32 loSt, + Int32 hiSt, Int32 dSt, Int32* budget ) { @@ -646,14 +646,14 @@ void mainQSort3 ( UInt32* ptr, AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 ); mpop ( lo, hi, d ); - if (hi - lo < MAIN_QSORT_SMALL_THRESH || + if (hi - lo < MAIN_QSORT_SMALL_THRESH || d > MAIN_QSORT_DEPTH_THRESH) { mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget ); if (*budget < 0) return; continue; } - med = (Int32) + med = (Int32) mmed3 ( block[ptr[ lo ]+d], block[ptr[ hi ]+d], block[ptr[ (lo+hi)>>1 ]+d] ); @@ -665,9 +665,9 @@ void mainQSort3 ( UInt32* ptr, while (True) { if (unLo > unHi) break; n = ((Int32)block[ptr[unLo]+d]) - med; - if (n == 0) { - mswap(ptr[unLo], ptr[ltLo]); - ltLo++; unLo++; continue; + if (n == 0) { + mswap(ptr[unLo], ptr[ltLo]); + ltLo++; unLo++; continue; }; if (n > 0) break; unLo++; @@ -675,9 +675,9 @@ void mainQSort3 ( UInt32* ptr, while (True) { if (unLo > unHi) break; n = ((Int32)block[ptr[unHi]+d]) - med; - if (n == 0) { - mswap(ptr[unHi], ptr[gtHi]); - gtHi--; unHi--; continue; + if (n == 0) { + mswap(ptr[unHi], ptr[gtHi]); + gtHi--; unHi--; continue; }; if (n < 0) break; unHi--; @@ -748,9 +748,9 @@ void mainQSort3 ( UInt32* ptr, #define CLEARMASK (~(SETMASK)) static -void mainSort ( UInt32* ptr, +void mainSort ( UInt32* ptr, UChar* block, - UInt16* quadrant, + UInt16* quadrant, UInt32* ftab, Int32 nblock, Int32 verb, @@ -878,7 +878,7 @@ void mainSort ( UInt32* ptr, /*-- Step 1: Complete the big bucket [ss] by quicksorting - any unsorted small buckets [ss, j], for j != ss. + any unsorted small buckets [ss, j], for j != ss. Hopefully previous pointer-scanning phases have already completed many of the small buckets [ss, j], so we don't have to sort them at all. @@ -894,10 +894,10 @@ void mainSort ( UInt32* ptr, VPrintf4 ( " qsort [0x%x, 0x%x] " "done %d this %d\n", ss, j, numQSorted, hi - lo + 1 ); - mainQSort3 ( - ptr, block, quadrant, nblock, - lo, hi, BZ_N_RADIX, budget - ); + mainQSort3 ( + ptr, block, quadrant, nblock, + lo, hi, BZ_N_RADIX, budget + ); numQSorted += (hi - lo + 1); if (*budget < 0) return; } @@ -929,16 +929,16 @@ void mainSort ( UInt32* ptr, for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) { k = ptr[j]-1; if (k < 0) k += nblock; c1 = block[k]; - if (!bigDone[c1]) + if (!bigDone[c1]) ptr[ copyEnd[c1]-- ] = k; } } AssertH ( (copyStart[ss]-1 == copyEnd[ss]) - || + || /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1. - Necessity for this case is demonstrated by compressing - a sequence of approximately 48.5 million of character + Necessity for this case is demonstrated by compressing + a sequence of approximately 48.5 million of character 251; 1.0.0/1.0.1 will then die here. */ (copyStart[ss] == 0 && copyEnd[ss] == nblock-1), 1007 ) @@ -955,7 +955,7 @@ void mainSort ( UInt32* ptr, updating for the last bucket is pointless. The quadrant array provides a way to incrementally - cache sort orderings, as they appear, so as to + cache sort orderings, as they appear, so as to make subsequent comparisons in fullGtU() complete faster. For repetitive blocks this makes a big difference (but not big enough to be able to avoid @@ -965,9 +965,9 @@ void mainSort ( UInt32* ptr, for 0 <= i < nblock and 0 <= j <= nblock - if block[i] != block[j], + if block[i] != block[j], - then the relative values of quadrant[i] and + then the relative values of quadrant[i] and quadrant[j] are meaningless. else { @@ -1030,7 +1030,7 @@ void mainSort ( UInt32* ptr, */ void BZ2_blockSort ( EState* s ) { - UInt32* ptr = s->ptr; + UInt32* ptr = s->ptr; UChar* block = s->block; UInt32* ftab = s->ftab; Int32 nblock = s->nblock; @@ -1054,8 +1054,8 @@ void BZ2_blockSort ( EState* s ) quadrant = (UInt16*)(&(block[i])); /* (wfact-1) / 3 puts the default-factor-30 - transition point at very roughly the same place as - with v0.1 and v0.9.0. + transition point at very roughly the same place as + with v0.1 and v0.9.0. Not that it particularly matters any more, since the resulting compressed stream is now the same regardless of whether or not we use the main sort or fallback sort. @@ -1066,14 +1066,14 @@ void BZ2_blockSort ( EState* s ) budget = budgetInit; mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget ); - if (verb >= 3) + if (verb >= 3) VPrintf3 ( " %d work, %d block, ratio %5.2f\n", budgetInit - budget, - nblock, + nblock, (float)(budgetInit - budget) / - (float)(nblock==0 ? 1 : nblock) ); + (float)(nblock==0 ? 1 : nblock) ); if (budget < 0) { - if (verb >= 2) + if (verb >= 2) VPrintf0 ( " too repetitive; using fallback" " sorting algorithm\n" ); fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.c index 612175dc36b..88118bf9a5f 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.c @@ -1415,7 +1415,7 @@ BZFILE * bzopen_or_bzdopen case 's': smallMode = 1; break; default: - if (isdigit((int)(*mode))) { + if (isdigit((unsigned char)(*mode))) { blockSize100k = *mode-BZ_HDR_0; } } diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/compress.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/compress.c index 1666cf0703a..d9774535cd8 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/compress.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/compress.c @@ -11,7 +11,7 @@ bzip2/libbzip2 version 1.0.8 of 13 July 2019 Copyright (C) 1996-2019 Julian Seward - Please read the WARNING, DISCLAIMER and PATENTS sections in the + Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. This program is released under the terms of the license contained @@ -22,7 +22,7 @@ /* CHANGES 0.9.0 -- original version. 0.9.0a/b -- no changes in this file. - 0.9.0c -- changed setting of nGroups in sendMTFValues() + 0.9.0c -- changed setting of nGroups in sendMTFValues() so as to do a bit better on small files */ @@ -125,11 +125,11 @@ void generateMTFValues ( EState* s ) Int32 wr; Int32 EOB; - /* + /* After sorting (eg, here), s->arr1 [ 0 .. s->nblock-1 ] holds sorted order, and - ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] + ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] holds the original block data. The first thing to do is generate the MTF values, @@ -144,7 +144,7 @@ void generateMTFValues ( EState* s ) (UChar*) (&((UChar*)s->arr2)[s->nblock]) These storage aliases are set up in bzCompressInit(), - except for the last one, which is arranged in + except for the last one, which is arranged in compressBlock(). */ UInt32* ptr = s->ptr; @@ -167,7 +167,7 @@ void generateMTFValues ( EState* s ) ll_i = s->unseqToSeq[block[j]]; AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" ); - if (yy[0] == ll_i) { + if (yy[0] == ll_i) { zPend++; } else { @@ -175,11 +175,11 @@ void generateMTFValues ( EState* s ) zPend--; while (True) { if (zPend & 1) { - mtfv[wr] = BZ_RUNB; wr++; - s->mtfFreq[BZ_RUNB]++; + mtfv[wr] = BZ_RUNB; wr++; + s->mtfFreq[BZ_RUNB]++; } else { - mtfv[wr] = BZ_RUNA; wr++; - s->mtfFreq[BZ_RUNA]++; + mtfv[wr] = BZ_RUNA; wr++; + s->mtfFreq[BZ_RUNA]++; } if (zPend < 2) break; zPend = (zPend - 2) / 2; @@ -187,15 +187,15 @@ void generateMTFValues ( EState* s ) zPend = 0; } { - register UChar rtmp; - register UChar* ryy_j; - register UChar rll_i; + UChar rtmp; + UChar* ryy_j; + UChar rll_i; rtmp = yy[1]; yy[1] = yy[0]; ryy_j = &(yy[1]); rll_i = ll_i; while ( rll_i != rtmp ) { - register UChar rtmp2; + UChar rtmp2; ryy_j++; rtmp2 = rtmp; rtmp = *ryy_j; @@ -213,11 +213,11 @@ void generateMTFValues ( EState* s ) zPend--; while (True) { if (zPend & 1) { - mtfv[wr] = BZ_RUNB; wr++; - s->mtfFreq[BZ_RUNB]++; + mtfv[wr] = BZ_RUNB; wr++; + s->mtfFreq[BZ_RUNB]++; } else { - mtfv[wr] = BZ_RUNA; wr++; - s->mtfFreq[BZ_RUNA]++; + mtfv[wr] = BZ_RUNA; wr++; + s->mtfFreq[BZ_RUNA]++; } if (zPend < 2) break; zPend = (zPend - 2) / 2; @@ -261,7 +261,7 @@ void sendMTFValues ( EState* s ) ((void)nBytes); /* Silence variable ‘nBytes’ set but not used warning */ if (s->verbosity >= 3) VPrintf3( " %d in block, %d after MTF & 1-2 coding, " - "%d+2 syms in use\n", + "%d+2 syms in use\n", s->nblock, s->nMTF, s->nInUse ); alphaSize = s->nInUse+2; @@ -278,7 +278,7 @@ void sendMTFValues ( EState* s ) nGroups = 6; /*--- Generate an initial set of coding tables ---*/ - { + { Int32 nPart, remF, tFreq, aFreq; nPart = nGroups; @@ -293,8 +293,8 @@ void sendMTFValues ( EState* s ) aFreq += s->mtfFreq[ge]; } - if (ge > gs - && nPart != nGroups && nPart != 1 + if (ge > gs + && nPart != nGroups && nPart != 1 && ((nGroups-nPart) % 2 == 1)) { aFreq -= s->mtfFreq[ge]; ge--; @@ -303,21 +303,21 @@ void sendMTFValues ( EState* s ) if (s->verbosity >= 3) VPrintf5( " initial group %d, [%d .. %d], " "has %d syms (%4.1f%%)\n", - nPart, gs, ge, aFreq, + nPart, gs, ge, aFreq, (100.0 * (float)aFreq) / (float)(s->nMTF) ); - + for (v = 0; v < alphaSize; v++) - if (v >= gs && v <= ge) + if (v >= gs && v <= ge) s->len[nPart-1][v] = BZ_LESSER_ICOST; else s->len[nPart-1][v] = BZ_GREATER_ICOST; - + nPart--; gs = ge+1; remF -= aFreq; } } - /*--- + /*--- Iterate up to BZ_N_ITERS times to improve the tables. ---*/ for (iter = 0; iter < BZ_N_ITERS; iter++) { @@ -330,7 +330,7 @@ void sendMTFValues ( EState* s ) /*--- Set up an auxiliary length table which is used to fast-track - the common case (nGroups == 6). + the common case (nGroups == 6). ---*/ if (nGroups == 6) { for (v = 0; v < alphaSize; v++) { @@ -347,10 +347,10 @@ void sendMTFValues ( EState* s ) /*--- Set group start & end marks. --*/ if (gs >= s->nMTF) break; - ge = gs + BZ_G_SIZE - 1; + ge = gs + BZ_G_SIZE - 1; if (ge >= s->nMTF) ge = s->nMTF-1; - /*-- + /*-- Calculate the cost of this group as coded by each of the coding tables. --*/ @@ -358,8 +358,8 @@ void sendMTFValues ( EState* s ) if (nGroups == 6 && 50 == ge-gs+1) { /*--- fast track the common case ---*/ - register UInt32 cost01, cost23, cost45; - register UInt16 icv; + UInt32 cost01, cost23, cost45; + UInt16 icv; cost01 = cost23 = cost45 = 0; # define BZ_ITER(nn) \ @@ -387,13 +387,13 @@ void sendMTFValues ( EState* s ) } else { /*--- slow version which correctly handles all situations ---*/ - for (i = gs; i <= ge; i++) { + for (i = gs; i <= ge; i++) { UInt16 icv = mtfv[i]; for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv]; } } - - /*-- + + /*-- Find the coding table which is best for this group, and record its identity in the selector table. --*/ @@ -405,7 +405,7 @@ void sendMTFValues ( EState* s ) s->selector[nSelectors] = bt; nSelectors++; - /*-- + /*-- Increment the symbol frequencies for the selected table. --*/ if (nGroups == 6 && 50 == ge-gs+1) { @@ -435,7 +435,7 @@ void sendMTFValues ( EState* s ) gs = ge+1; } if (s->verbosity >= 3) { - VPrintf2 ( " pass %d: size is %d, grp uses are ", + VPrintf2 ( " pass %d: size is %d, grp uses are ", iter+1, totc/8 ); for (t = 0; t < nGroups; t++) VPrintf1 ( "%d ", fave[t] ); @@ -445,10 +445,10 @@ void sendMTFValues ( EState* s ) /*-- Recompute the tables based on the accumulated frequencies. --*/ - /* maxLen was changed from 20 to 17 in bzip2-1.0.3. See + /* maxLen was changed from 20 to 17 in bzip2-1.0.3. See comment in huffman.c for details. */ for (t = 0; t < nGroups; t++) - BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), + BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), alphaSize, 17 /*20*/ ); } @@ -488,19 +488,19 @@ void sendMTFValues ( EState* s ) } AssertH ( !(maxLen > 17 /*20*/ ), 3004 ); AssertH ( !(minLen < 1), 3005 ); - BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), + BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), minLen, maxLen, alphaSize ); } /*--- Transmit the mapping table. ---*/ - { + { Bool inUse16[16]; for (i = 0; i < 16; i++) { inUse16[i] = False; for (j = 0; j < 16; j++) if (s->inUse[i * 16 + j]) inUse16[i] = True; } - + nBytes = s->numZ; for (i = 0; i < 16; i++) if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0); @@ -511,7 +511,7 @@ void sendMTFValues ( EState* s ) if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0); } - if (s->verbosity >= 3) + if (s->verbosity >= 3) VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes ); } @@ -519,7 +519,7 @@ void sendMTFValues ( EState* s ) nBytes = s->numZ; bsW ( s, 3, nGroups ); bsW ( s, 15, nSelectors ); - for (i = 0; i < nSelectors; i++) { + for (i = 0; i < nSelectors; i++) { for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1); bsW(s,1,0); } @@ -548,14 +548,14 @@ void sendMTFValues ( EState* s ) gs = 0; while (True) { if (gs >= s->nMTF) break; - ge = gs + BZ_G_SIZE - 1; + ge = gs + BZ_G_SIZE - 1; if (ge >= s->nMTF) ge = s->nMTF-1; AssertH ( s->selector[selCtr] < nGroups, 3006 ); if (nGroups == 6 && 50 == ge-gs+1) { /*--- fast track the common case ---*/ UInt16 mtfv_i; - UChar* s_len_sel_selCtr + UChar* s_len_sel_selCtr = &(s->len[s->selector[selCtr]][0]); Int32* s_code_sel_selCtr = &(s->code[s->selector[selCtr]][0]); @@ -582,7 +582,7 @@ void sendMTFValues ( EState* s ) } else { /*--- slow version which correctly handles all situations ---*/ for (i = gs; i <= ge; i++) { - bsW ( s, + bsW ( s, s->len [s->selector[selCtr]] [mtfv[i]], s->code [s->selector[selCtr]] [mtfv[i]] ); } @@ -637,8 +637,8 @@ void BZ2_compressBlock ( EState* s, Bool is_last_block ) /*-- Now the block's CRC, so it is in a known place. --*/ bsPutUInt32 ( s, s->blockCRC ); - /*-- - Now a single bit indicating (non-)randomisation. + /*-- + Now a single bit indicating (non-)randomisation. As of version 0.9.5, we use a better sorting algorithm which makes randomisation unnecessary. So always set the randomised bit to 'no'. Of course, the decoder diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/crctable.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/crctable.c index a9212dbf2c3..2095e000310 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/crctable.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/crctable.c @@ -11,7 +11,7 @@ bzip2/libbzip2 version 1.0.8 of 13 July 2019 Copyright (C) 1996-2019 Julian Seward - Please read the WARNING, DISCLAIMER and PATENTS sections in the + Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. This program is released under the terms of the license contained diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/decompress.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/decompress.c index 1a01f1d9f2f..cc338c54cc0 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/decompress.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/decompress.c @@ -11,7 +11,7 @@ bzip2/libbzip2 version 1.0.8 of 13 July 2019 Copyright (C) 1996-2019 Julian Seward - Please read the WARNING, DISCLAIMER and PATENTS sections in the + Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. This program is released under the terms of the license contained @@ -128,7 +128,7 @@ Int32 BZ2_decompress ( DState* s ) Int32 N; Int32 curr; Int32 zt; - Int32 zn; + Int32 zn; Int32 zvec; Int32 zj; Int32 gSel; @@ -182,7 +182,7 @@ Int32 BZ2_decompress ( DState* s ) N = s->save_N; curr = s->save_curr; zt = s->save_zt; - zn = s->save_zn; + zn = s->save_zn; zvec = s->save_zvec; zj = s->save_zj; gSel = s->save_gSel; @@ -205,14 +205,14 @@ Int32 BZ2_decompress ( DState* s ) if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC); GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8) - if (s->blockSize100k < (BZ_HDR_0 + 1) || + if (s->blockSize100k < (BZ_HDR_0 + 1) || s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC); s->blockSize100k -= BZ_HDR_0; if (s->smallDecompress) { s->ll16 = (UInt16*) BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); - s->ll4 = (UChar*) BZALLOC( - ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) + s->ll4 = (UChar*) BZALLOC( + ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) ); if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR); } else { @@ -238,7 +238,7 @@ Int32 BZ2_decompress ( DState* s ) s->currBlockNo++; if (s->verbosity >= 2) VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo ); - + s->storedBlockCRC = 0; GET_UCHAR(BZ_X_BCRC_1, uc); s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); @@ -261,14 +261,14 @@ Int32 BZ2_decompress ( DState* s ) if (s->origPtr < 0) RETURN(BZ_DATA_ERROR); - if (s->origPtr > 10 + 100000*s->blockSize100k) + if (s->origPtr > 10 + 100000*s->blockSize100k) RETURN(BZ_DATA_ERROR); /*--- Receive the mapping table ---*/ for (i = 0; i < 16; i++) { GET_BIT(BZ_X_MAPPING_1, uc); - if (uc == 1) - s->inUse16[i] = True; else + if (uc == 1) + s->inUse16[i] = True; else s->inUse16[i] = False; } @@ -310,7 +310,7 @@ Int32 BZ2_decompress ( DState* s ) { UChar pos[BZ_N_GROUPS], tmp, v; for (v = 0; v < nGroups; v++) pos[v] = v; - + for (i = 0; i < nSelectors; i++) { v = s->selectorMtf[i]; tmp = pos[v]; @@ -343,10 +343,10 @@ Int32 BZ2_decompress ( DState* s ) if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; if (s->len[t][i] < minLen) minLen = s->len[t][i]; } - BZ2_hbCreateDecodeTables ( - &(s->limit[t][0]), - &(s->base[t][0]), - &(s->perm[t][0]), + BZ2_hbCreateDecodeTables ( + &(s->limit[t][0]), + &(s->base[t][0]), + &(s->perm[t][0]), &(s->len[t][0]), minLen, maxLen, alphaSize ); @@ -445,23 +445,23 @@ Int32 BZ2_decompress ( DState* s ) s->mtfa[(z)-3] = s->mtfa[(z)-4]; nn -= 4; } - while (nn > 0) { - s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; + while (nn > 0) { + s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; }; s->mtfa[pp] = uc; - } else { + } else { /* general case */ lno = nn / MTFL_SIZE; off = nn % MTFL_SIZE; pp = s->mtfbase[lno] + off; uc = s->mtfa[pp]; - while (pp > s->mtfbase[lno]) { - s->mtfa[pp] = s->mtfa[pp-1]; pp--; + while (pp > s->mtfbase[lno]) { + s->mtfa[pp] = s->mtfa[pp-1]; pp--; }; s->mtfbase[lno]++; while (lno > 0) { s->mtfbase[lno]--; - s->mtfa[s->mtfbase[lno]] + s->mtfa[s->mtfbase[lno]] = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1]; lno--; } @@ -556,7 +556,7 @@ Int32 BZ2_decompress ( DState* s ) if (s->blockRandomised) { BZ_RAND_INIT_MASK; BZ_GET_SMALL(s->k0); s->nblock_used++; - BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; + BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; } else { BZ_GET_SMALL(s->k0); s->nblock_used++; } @@ -575,7 +575,7 @@ Int32 BZ2_decompress ( DState* s ) if (s->blockRandomised) { BZ_RAND_INIT_MASK; BZ_GET_FAST(s->k0); s->nblock_used++; - BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; + BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; } else { BZ_GET_FAST(s->k0); s->nblock_used++; } @@ -644,7 +644,7 @@ Int32 BZ2_decompress ( DState* s ) s->save_gBase = gBase; s->save_gPerm = gPerm; - return retVal; + return retVal; } diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/huffman.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/huffman.c index 43a1899e468..de94b96a6c2 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/huffman.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/huffman.c @@ -11,7 +11,7 @@ bzip2/libbzip2 version 1.0.8 of 13 July 2019 Copyright (C) 1996-2019 Julian Seward - Please read the WARNING, DISCLAIMER and PATENTS sections in the + Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. This program is released under the terms of the license contained @@ -60,7 +60,7 @@ /*---------------------------------------------------*/ -void BZ2_hbMakeCodeLengths ( UChar *len, +void BZ2_hbMakeCodeLengths ( UChar *len, Int32 *freq, Int32 alphaSize, Int32 maxLen ) @@ -74,7 +74,7 @@ void BZ2_hbMakeCodeLengths ( UChar *len, Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ]; Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ]; - Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; + Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; for (i = 0; i < alphaSize; i++) weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8; @@ -96,7 +96,7 @@ void BZ2_hbMakeCodeLengths ( UChar *len, } AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 ); - + while (nHeap > 1) { n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); @@ -119,7 +119,7 @@ void BZ2_hbMakeCodeLengths ( UChar *len, len[i-1] = j; if (j > maxLen) tooLong = True; } - + if (! tooLong) break; /* 17 Oct 04: keep-going condition for the following loop used diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/randtable.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/randtable.c index 70666a1249b..56f59b98d3c 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/randtable.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/bzip2-src/randtable.c @@ -11,7 +11,7 @@ bzip2/libbzip2 version 1.0.8 of 13 July 2019 Copyright (C) 1996-2019 Julian Seward - Please read the WARNING, DISCLAIMER and PATENTS sections in the + Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. This program is released under the terms of the license contained @@ -23,58 +23,58 @@ /*---------------------------------------------*/ -const Int32 BZ2_rNums[512] = { - 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, - 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, - 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, - 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, - 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, - 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, - 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, - 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, - 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, - 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, - 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, - 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, - 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, - 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, - 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, - 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, - 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, - 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, - 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, - 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, - 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, - 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, - 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, - 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, - 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, - 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, - 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, - 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, - 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, - 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, - 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, - 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, - 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, - 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, - 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, - 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, - 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, - 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, - 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, - 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, - 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, - 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, - 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, - 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, - 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, - 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, - 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, - 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, - 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, - 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, - 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, +const Int32 BZ2_rNums[512] = { + 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, + 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, + 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, + 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, + 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, + 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, + 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, + 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, + 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, + 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, + 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, + 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, + 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, + 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, + 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, + 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, + 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, + 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, + 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, + 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, + 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, + 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, + 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, + 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, + 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, + 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, + 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, + 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, + 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, + 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, + 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, + 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, + 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, + 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, + 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, + 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, + 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, + 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, + 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, + 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, + 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, + 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, + 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, + 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, + 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, + 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, + 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, + 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, + 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, + 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, + 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, 936, 638 }; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm index 99d7670cf4d..94c04278da5 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm @@ -11,7 +11,7 @@ use Carp ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD); -$VERSION = '2.103'; +$VERSION = '2.204_001'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -384,7 +384,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. 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 e763cbacce6..aa540c68fda 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/private/MakeUtil.pm @@ -35,8 +35,7 @@ sub MY::libscan my $path = shift; return undef - if $path =~ /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/ || - $path =~ /(~|\.bak|_bak)$/ || + if $path =~ /(~|\.bak|_bak)$/ || $path =~ /\..*\.sw(o|p)$/ || $path =~ /\B\.svn\b/; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/000prereq.t b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/000prereq.t index 5ab2f35b514..871fe18b388 100755 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/000prereq.t +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Bzip2/t/000prereq.t @@ -19,7 +19,7 @@ BEGIN if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; - my $VERSION = '2.103'; + my $VERSION = '2.204'; my @NAMES = qw( ); diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes deleted file mode 100644 index 0a813cae847..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Changes +++ /dev/null @@ -1,677 +0,0 @@ -CHANGES -------- - - 2.202 27 June 2022 - - * Z_NULL should be 'UV' rather than 'PV' - https://github.com/pmqs/Compress-Raw-Zlib/issues/17 - Sun Jun 26 22:02:04 2022 +0100 - de28f0335d3d605d696b19d43fc48de42272455c - - 2.201 25 June 2022 - - * 2.021 - Sat Jun 25 08:42:46 2022 +0100 - 85416cab509c18c5fa3f923de7b45b6c7c0f7a6f - - * 2.201 - Sat Jun 25 08:39:26 2022 +0100 - b3d63862b2ff4ac9d28e23be500c0d32ad69dd11 - - * More zlib-ng updates - Thu Jun 23 22:42:13 2022 +0100 - 313f626425181702b5fc80af2b6ea7eed41d5a9d - - * Fix test count regression in t/07bufsize.t (#16) - Wed Jun 22 09:45:11 2022 +0100 - 98dc5b4a2b30c26752b6f686462b06b8db72a5e4 - - 2.200 21 June 2022 - - * Added zlib-ng support - https://github.com/pmqs/Compress-Raw-Zlib/issues/9 - - * Only set Z_SOLO when building zlib sources https://github.com/pmqs/Compress-Raw-Zlib/issues/12 - Tue Jun 7 10:13:00 2022 +0100 - c44e0b732e214b7f77d42a3af6ae64ef944cee90 - - 2.105 14 April 2022 - - * Add Compress::Raw::Zlib::VERSION to output - Sat May 14 15:16:57 2022 +0100 - 3e22c93169a67986017f64d9a2e5085c417d8624 - - * Dump version info when running test harness - Sat May 14 15:10:17 2022 +0100 - ca9f33ba0323d0abc91a83800636f180b2b44162 - - * Fix use of ZLIB_INCLUDE/LIB - Sat May 14 09:01:38 2022 +0100 - 8a7d4a97d7441b61a8a888342766419044fa5a33 - - * More fixes for BUILD_ZLIB off - Sat May 14 08:54:04 2022 +0100 - 2d9650094dab90858ef58bfbda62f3bc60e159e4 - - * Add BUILD_ZLIB to the matrix - Sat May 14 08:31:54 2022 +0100 - b61b92fc9d06bf04f1adec337357ffbd39535901 - - * Merge branch 'master' of https://github.com/pmqs/Compress-Raw-Zlib - Sat May 14 08:27:14 2022 +0100 - 3ac7d0d3d45ae263402fab1ebb3835e2ae16c5a6 - - * Fix for BUILD_ZLIB disabled - Sat May 14 08:25:34 2022 +0100 - b0f04e37fb58a34ef01767ad16a8f63ca868eec6 - - * Add BUILD_ZLIB to the matrix - Sat May 14 08:22:56 2022 +0100 - aa8f5ff981c7305c995d4e2f798ae0d7d45866a5 - - 2.104 13 April 2022 - - * Merge pull request #11 from monkburger/symbol_fix_2 - Fri May 13 07:17:19 2022 +0100 - 64aea2d3f78946d7df4096eadfa0d7267f4439a5 - - * perl_crz -> Perl_crz - Tue May 3 18:19:24 2022 +0000 - 20502e6c2eba8ddcad80b20574e840457c0cb369 - - * This is a slightly different way to fix https://github.com/pmqs/Compress-Raw-Zlib/issues/8 - Tue May 3 18:06:48 2022 +0000 - d9cd27fb212da7455b6ba44729ca11bb441f3950 - - * add tests for crc32/adler32_combine - Mon May 2 16:18:13 2022 +0100 - dcfe9ef439790f1a4fae81cf3eac38cfeb848294 - - 2.103 3 April 2022 - - * Sync upstream fix for CVE-2018-25032 - https://github.com/advisories/GHSA-jc36-42cf-vqwj - - Update to Zlib 1.2.12 - d507f527768f6cbab5831ed3ec17fe741163785c - - Fix for inflateSync return code change - f47ea5f36c40fe19efe404dd75fd790b115de596 - - Fix for incorrect CRC from zlib 1.2.12.1 - https://github.com/madler/zlib/commit/ec3df00224d4b396e2ac6586ab5d25f673caa4c2 - 60104e3a162a116548303861ae0811fb850e65fd - - * AUTHOR doesn't contain the stated information - bf5a03c1b440c8d9e41cffb344bf889794cc532b - - - 2.101 20 February 2021 - - * fix version numbers in meta files - - 2.100 7 January 2021 - - * trim whitespace - 5de62cd3987c736c14d1aa804936808fbc1fe9cb - - 2.096 31 July 2020 - - * No changes - - 2.095 19 July 2020 - - * No changes - - 2.094 13 July 2020 - - * Issue with Append mode & SvOOK - https://github.com/pmqs/Compress-Raw-Zlib/issues/3 - 80ee0524012f46c5984c2d57649af0b07f82c750 - - 2.093 7 December 2019 - - * No Changes - - 2.092 4 December 2019 - - * No Changes - - 2.091 23 November 2019 - - * Silence "macro expands to multiple statements" warning - Change sourced upstream from https://github.com/Perl/perl5/issues/17013 - https://github.com/pmqs/Compress-Raw-Zlib/issues/2 - da2bd1fc765b80d01ed10a79b6c4a035e5095ed8 - - 2.090 9 November 2019 - - * No Changes - - 2.089 3 November 2019 - - * No Changes - - 2.088 31 October 2019 - - * Add SUPPORT section - d348ad76c2073a2973d094891fbd0c2e24bf397d - - * 000prereq.t: dump Perl version - e1afe502818cb1ccf5bad917b14b029b408f47f1 - - 2.087 10 August 2019 - - * clang warning in ppport.h - update to latest ppport.h - https://github.com/pmqs/Compress-Raw-Zlib/issues/1 - 664a5fbacf778acdd4cfbcc571997f3df5ee43d3 - - 2.086 31 March 2019 - - * Moved source to github https://github.com/pmqs/Compress-Raw-Zlib - - * Add META_MERGE to Makefile.PL - - * Added meta-json.t & meta-yaml.t - - 2.084 5 January 2019 - - * No Changes - - 2.083 30 December 2018 - - * No Changes - - 2.081 4 April 2018 - - * previous release used $^W instead of use warnings. Fixed. - - 2.080 2 April 2018 - - * No Changes - - 2.076 21 Nov 2017 - - * Zlib.xs - Silence gcc compiler warnings when -Wsign-compare is enabled - #123688: Compilation warnings with clang - - * zlib-src/inflate.c and zlib-src/infback.c - Silence gcc compiler warnings when -Wimplicit-fallthrough is enabled - #123358: Compilation warnings with gcc-7.* - - * Makefile.PL - Windows uses -lzlib. Linux uses -lz - #123699: wrong external zlib name used on Windows - - 2.075 14 Nov 2017 - - * Update zlib-src directory to use zlib 1.2.11 - #123245: perl 5.26.1 is vulnerable to CVE-2016-9843, CVE-2016-9841, CVE-2016-9840, CVE-2016-9842 - - * Zlib.xs - Don't allow offset to be greater than length of buffer in crc32. - - * Zlib.xs - Change my_zcalloc to use safecalloc. - The link, https://github.com/madler/zlib/issues/253, is the upstream report for the remaining - valgrind errors not already dealt with by 1.2.11. Using calloc in Zlib.xs for now as a workaround. - #121074: valgrind errors in the test suite - - 2.074 19 Feb 2017 - - * Fix bad 2.073 release - - 2.073 18 Feb 2017 - - * Zlib.xs - Comment out unused variables & remove C++-ism - #120272: [PATCH] Unbreak compilation - - 2.072 12 Feb 2017 - - * Makefile.PL - #120084: Need Fix for Makefile.PL depending on . in @INC - - * zlib-src - #120207: inflateUndermine: subvert arg conditionally used/unused - - * zlib-src - #112829: two gcc6-found problems - - * fix deflateParams for zlib > 1.2.8 - #119762: Tests broken with zlib-1.2.10 - - 2.071 30 Dec 2016 - - * #119580 (inflate.c: One (last?) compilation warning) - Identical issue reeported in upstream zlib - https://github.com/madler/zlib/issues/111 - - Fix checked into zlib dev codeline via - https://github.com/madler/zlib/commit/2edb94a3025d288dc251bc6cbb2c02e60fbd7438 - - 2.070 28 Dec 2016 - - * #107642: compilation warning from inflate.c - - * #119007: [PATCH] Wrong FLAG_APPEND logic analog to Bzip2 - - 2.069 26 Sept 2015 - - * reduce compiler warnings and stderr noise - [#101341] - - * amigaos4: cpan/Compress-Raw-Zlib: also __amigaos4__ - [#106799] - - * const all global data - https://github.com/madler/zlib/commit/82e9dc60932bf2ce5422a5e76e66e5a05abd26e3 - [#101298] - - * Coverity finding: Unused value - https://github.com/madler/zlib/commit/9859a94c1002484ee5f824c05683a5b2484cbf49 - [105414] - - * Coverity findings - [102399] - - * Coverity finding: Overlapping buffer in memory copy - [105413] - - 2.068 10 Dec 2014 - - * Silence more compiler warnings - - * Disable running of 07bufsize.y by default. - COMPRESS_ZLIB_RUN_MOST needs set to run them. Makes life more - bearable on legacy platforms - - - 2.067 8 Dec 2014 - - * Silence compiler warnings - - 2.066 21 Sept 2014 - - * Another COW violation - [#98069] - - * misleading nesting/indentation (found by Coverity) - [#95405] - - 2.065 3 February 2014 - - * [PATCH] resolve c++ build failure in core - [#92657] - - * gcc -g3: final link failed: Memory exhausted - [#88936] - - 2.064 1 February 2014 - - * [PATCH] Handle non-PVs better - [#91558] - - * Z_OK instead of Z_BUF_ERROR - [#92521] - - 2.063 23 October 2013 - - * gcc -g3: final link failed: Memory exhausted - [#88936] - - * Compress::Raw::Zlib uses AutoLoader for no reason - [#88260] - - * Typo in Compress::Zlib _combine function documentation - [#89305] - - 2.062 11 August 2013 - - * typo fix - [#86417] - - 2.061 19 May 2013 - - * Include zlib 1.2.8 source. - - * typo fix - [#85431] - - * silence compiler warning by making 2nd parameter to - DispStream a const char* - - * Mishandling of BUILD_ZLIB=0 option - [#85492] - - 2.060 7 January 2013 - - * Mention SimpleZip in POD - - 2.059 24 November 2012 - - * Copy-on-write support - [#81353] - - 2.058 12 November 2012 - - * No Changes - - 2.057 10 November 2012 - - * Compress::Raw::Zlib needs to use PERL_NO_GET_CONTEXT - [#80319] - - * Install to 'site' instead of 'perl' when perl version is 5.11+ - [#79812] - - * update to ppport.h that includes SvPV_nomg_nolen - [#78079] - - 2.056 10 August 2012 - - * Fix C++ build issue - Thanks to Karl Williamson for supplying the patch. - - 2.055 4 August 2012 - - * Fix misuse of magic in API - [#78079] - - 2.054 8 May 2012 - - * Build issue on Win32 - [#77030] - - 2.053 6 May 2012 - - * Include zlib 1.2.7 source. - - 2.052 29 April 2012 - - * Fixed build issue when Perl is built with C++ - - 2.051 20 February 2012 - - * Bug in Compress::Raw::Zlib on Windows - [#75222] - - 2.050 20 February 2012 - - * Build failure on Irix & Solaris. - [RT #69985] - - 2.049 18 February 2012 - - * Include zlib 1.2.6 source. - - 2.048 29 January 2012 - - * Set minimum zlib version to 1.2.0 - - 2.047 28 January 2012 - - * Allow flush to be called multiple times without any intermediate - call to deflate and still return Z_OK. - In the code below $status was Z_BUF_ERROR before this change. - - $def->flush(...); - $status = $def->flush(...); - - * Added support for zlibCompileFlags - - * Set minimum Perl version to 5.6 - - 2.045 3 December 2011 - - * Moved FAQ.pod into Zlib.pm - - 2.044 2 December 2011 - - * Moved FAQ.pod under the lib directory so it can get installed - - 2.043 20 November 2011 - - * No Changes - - 2.042 17 November 2011 - - * No Changes - - 2.040 28 October 2011 - - * No Changes - - 2.039 28 October 2011 - - * croak if attempt to freeze/thaw compression object - [RT #69985] - - 2.037 22 June 2011 - - * No Changes - - 2.036 6 May 2011 - - * Added offset patramter to CRC32 - - 2.035 6 May 2011 - - * No Changes - - 2.033 11 Jan 2011 - * Fixed typos & spelling errors. - [perl# 81782] - - 2.032 4 Jan 2011 - - * Document inflateReset - [RT #61082] - - 2.030 22 July 2010 - - * Ran the zlib2ansi script against the files in zlib-src. - Thanks to Nicholas Clark for the reminder. - - * Added "-DNO_VIZ" to DEFINE in Makefile.PL - [RT #65293] - - 2.027 24 April 2010 - - * Updated to include zlib 1.2.5 - - 2.026 7 April 2010 - - * Fixed definition of Z_TREES in Makefile.PL - [RT #65293] - - * Fixed build issue with definition of off64_t not found on Solaris - by modifying the zlib source - changed the symbol - _LARGEFILE64_SOURCE to _LARGEFILE64_SOURCE_dummy in zconf.h, - zlib.h and zutil.h - [RT #56108] - - 2.025 27 March 2010 - - * Updated to include zlib 1.2.4 - - * Allow zlib version check to be disabled by setting - TEST_SKIP_VERSION_CHECK environment variable. - [RT #54510] - - 2.023 9 November 2009 - - * fixed instance where $[ should have been $] in t/02zlib.t - Thanks to Robin Barker and zefram [RT #50765] for independently - spotting the issue. - - 2.021 30 August 2009 - - * Changed test harness so that it can cope with PERL5OPT=-MCarp=verbose - [RT# 47225] - - 2.020 3 June 2009 - - * Minor documentation update. - - 2.019 4 May 2009 - - * No Changes - - 2.018 3 May 2009 - - * No Changes - - 2.017 28 March 2009 - - * Added 'LimitOutput' option - - * Removed MAN3PODS from Makefile.PL - - * Fixed coring issue when LimitOutput was used. - - * Documented Compress::Raw::Zlib::zlib_version() - - * Documented Compress::Raw::Zlib::deflateReset() - [RT #40566] - - 2.015 3 September 2008 - - * Makefile.PL - Backout changes made in 2.014 - - 2.014 2 September 2008 - - * Makefile.PL - Updated to check for indirect dependencies. - - 2.012 15 July 2008 - - * Document the gzip flags that WindowBits can take. - - * Allow a dictionary to be used with a raw inflate. - Needs zlib 1.2.2.1 or better. - [RT #36046] - - 2.011 5 May 2008 - - * A C++-style comment sneaked in with the last update. Fixed. - [core patch #33828] - - 2.010 5 May 2008 - - * No Changes - - 2.009 20 April 2008 - - * No Changes - - 2.008 2 November 2007 - - * Minor documentation changes in README - - 2.006 1 September 2007 - - * Makefile.PL - Added INSTALLDIRS directive to install as a core module when built - on a perl >= 5.9. - - 2.005 18 June 2007 - - * Only include ppport.h when not being built with perl. - [core patch #30655] - - 2.004 3 March 2007 - - * Fixed lvalue substr issue - - * Remove redundant code from Zlib.xs - - 2.003 2 January 2007 - - * Added explicit version checking - - 2.002 29 December 2006 - - * Documentation updates. - - 2.001 1 November 2006 - - * Remove beta status. - - 2.000_14 26 October 2006 - - * Fixed memory leak on realloc. - - * Ticket #18986 says that ExtUtils::Install 1.39 fixes the in-use - issue on win32/cygwin, so make the code that checks whether trying - to install via the cpan shell conditional on the version of - ExtUtils::Install. - http://rt.cpan.org/Ticket/Display.html?id=18986 - - 2.000_10 13 March 2006 - - * Fixed a potential NULL pointer dereference problem in - Compress::Raw::Zlib::resetLastBlockByte. - Issue highlighted by David Dyck and reproduced by Marcus Holland-Moritz. - - 2.000_09 3 March 2006 - - * Released onto CPAN - - * Documentation updates. - - 2.000_08 2 March 2006 - - * Moved the IO::* modules out into their own distributions. - - * Breakout zlib specific code into separate modules. - - * Limited support for reading/writing zip files added. - - 2.000_06 5 October 2005 - - * Added eof parameter to Compress::Zlib::inflate method. - - * Fixed issue with 64-bit - - 2.000_05 4 October 2005 - - * Renamed IO::* to IO::Compress::* & IO::Uncompress::* - - 2.000_04 23 September 2005 - - * Fixed some more non-portable test that were failing on VMS. - - * fixed problem where error messages in the oneshot interface were - getting lost. - - 2.000_03 12 September 2005 - - * Fixed some non-portable test that were failing on VMS. - - * Fixed export of zlib constants from the IO::* classes - - 2.000_02 6 September 2005 - - * Split Append mode into Append and Merge - - * Fixed typos in the documentation. - - * Added pod/FAQ.pod - - * Added libscan to Makefile.PL - - * Added InputLength for IO::Gunzip et al - - 2.000_01 22 August 2005 - - * Fixed VERSION in Compress::Gzip::Constants - - * Removed Compress::Gzip::Info from the distribution. - - 2.000_00 21 August 2005 - - * First Beta relase of Compress::zlib rewrite. diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/MANIFEST b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/MANIFEST deleted file mode 100644 index 80bb59cdc66..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/MANIFEST +++ /dev/null @@ -1,51 +0,0 @@ -README -Changes -t/000prereq.t -t/01version.t -t/02zlib.t -t/07bufsize.t -t/09limitoutput.t -t/18lvalue.t -t/19nonpv.t -t/99pod.t -t/Test/Builder.pm -t/Test/More.pm -t/Test/Simple.pm -t/compress/CompTestUtils.pm -t/meta-json.t -t/meta-yaml.t -Zlib.xs -typemap -Makefile.PL -private/MakeUtil.pm -MANIFEST -ppport.h -config.in -zlib-src/adler32.c -zlib-src/compress.c -zlib-src/crc32.c -zlib-src/crc32.h -zlib-src/deflate.c -zlib-src/deflate.h -zlib-src/infback.c -zlib-src/inffast.c -zlib-src/inffast.h -zlib-src/inffixed.h -zlib-src/inflate.c -zlib-src/inflate.h -zlib-src/inftrees.c -zlib-src/inftrees.h -zlib-src/trees.c -zlib-src/trees.h -zlib-src/uncompr.c -zlib-src/zconf.h -zlib-src/zlib.h -zlib-src/zutil.c -zlib-src/zutil.h -fallback/constants.h -fallback/constants.xs -lib/Compress/Raw/Zlib.pm -examples/filtdef Perl -examples/filtinf Perl -META.yml Module meta-data (added by MakeMaker) -META.json Module JSON meta-data (added by MakeMaker) diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/META.json b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/META.json deleted file mode 100644 index b9e6c9d64ef..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/META.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "abstract" : "unknown", - "author" : [ - "unknown" - ], - "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.150005", - "license" : [ - "perl_5" - ], - "meta-spec" : { - "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", - "version" : "2" - }, - "name" : "Compress-Raw-Zlib", - "no_index" : { - "directory" : [ - "t", - "inc", - "t", - "private" - ] - }, - "prereqs" : { - "build" : { - "requires" : { - "ExtUtils::MakeMaker" : "0" - } - }, - "configure" : { - "requires" : { - "ExtUtils::MakeMaker" : "0" - } - } - }, - "release_status" : "stable", - "resources" : { - "bugtracker" : { - "web" : "https://github.com/pmqs/Compress-Raw-Zlib/issues" - }, - "homepage" : "https://github.com/pmqs/Compress-Raw-Zlib", - "repository" : { - "type" : "git", - "url" : "git://github.com/pmqs/Compress-Raw-Zlib.git", - "web" : "https://github.com/pmqs/Compress-Raw-Zlib" - } - }, - "version" : "2.202", - "x_serialization_backend" : "JSON::PP version 2.27300" -} diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README deleted file mode 100644 index 310f1c0f733..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/README +++ /dev/null @@ -1,381 +0,0 @@ - - Compress-Raw-Zlib - - Version 2.202 - - 27 June 2022 - - Copyright (c) 2005-2022 Paul Marquess. All rights reserved. - This program is free software; you can redistribute it - and/or modify it under the same terms as Perl itself. - - The directory zlib-src contains a subset of the - source files copied directly from zlib version 1.2.13. - These files are Copyright(C) 1995-2022 - Jean-loup Gailly and Mark Adler. - Full source for the zlib library is available at - http://www.zlib.org - -DESCRIPTION ------------ - -This module provides a Perl interface to the zlib compression library. - -PREREQUISITES -------------- - -Before you can build Compress-Raw-Zlib you need to have the following -installed on your system: - - * A C compiler - - * Perl 5.006 or better. - -By default, Compress-Raw-Zlib will build its own private copy of the -zlib library. If you want to use a different version of -zlib, follow the instructions in the section called -"Controlling the version of zlib used by Compress-Raw-Zlib" -later in this document. - -BUILDING THE MODULE -------------------- - -Assuming you have met all the prerequisites, the module can now be built -using this sequence of commands: - - perl Makefile.PL - make - make test - -INSTALLATION ------------- - -To install Compress-Raw-Zlib, run the command below: - - make install - -Controlling the version of zlib used by Compress-Raw-Zlib ----------------------------------------------------------- - -Compress-Raw-Zlib interfaces to the zlib compression library. There -are three options available to control which version/instance of the -zlib library is used: - - 1. Build a private copy of the zlib library using the - zlib library source that is included with this module. - This is the default and recommended option. - - 2. Build a private copy of the zlib library using a standard - zlib source distribution. - - 3. Use a pre-built zlib library. - -Note that if you intend to use either Option 2 or 3, you need to have -zlib version 1.2.0 or better. - -The contents of the file config.in are used to control which of the -three options is actually used. This file is read during the - - perl Makefile.PL - -step of the build, so remember to make any required changes to config.in -before building this module. - - Option 1 - -------- - - For option 1, edit the file config.in and set the variables in it - as follows: - - BUILD_ZLIB = True - INCLUDE = ./zlib-src - LIB = ./zlib-src - OLD_ZLIB = False - GZIP_OS_CODE = AUTO_DETECT - - Option 2 - -------- - - For option 2, fetch a copy of the zlib source distribution from - http://www.zlib.org and unpack it into the Compress-Raw-Zlib source - directory. Assuming you have fetched zlib 1.2.13, - it will create a directory called zlib-1.2.13. - - Now set the variables in the file config.in as follows (if the version - you have fetched isn't 1.2.13, change the INCLUDE and LIB - variables appropriately): - - BUILD_ZLIB = True - INCLUDE = ./zlib-1.2.13 - LIB = ./zlib-1.2.13 - OLD_ZLIB = False - GZIP_OS_CODE = AUTO_DETECT - - Option 3 - -------- - - For option 3, you need to find out where zlib is stored on your - system. There are two parts to this. - - First, find the directory where the zlib library is stored (some - common names for the library are libz.a and libz.so). Set the LIB variable - in the config.in file to that directory. - - Secondly, find the directory where the file zlib.h is stored. Now set - the INCLUDE variable in the config.in file to that directory. - - Next set BUILD_ZLIB to False. - - Finally, if you are running zlib 1.0.5 or older, set the OLD_ZLIB - variable to True. Otherwise set it to False. - - As an example, if the zlib library on your system is in - /usr/local/lib, zlib.h is in /usr/local/include and zlib is more - recent than version 1.0.5, the variables in config.in should be set as - follows: - - BUILD_ZLIB = False - INCLUDE = /usr/local/include - LIB = /usr/local/lib - OLD_ZLIB = False - GZIP_OS_CODE = AUTO_DETECT - -Setting the Gzip OS Code ------------------------- - -Every gzip stream stores a byte in its header to identify the Operating -System that was used to create the gzip stream. When you build Compress-Raw-Zlib it will attempt to determine the value that is correct for -your Operating System. This will then be used by IO::Compress::Gzip as the -default value for the OS byte in all gzip headers it creates. - -The variable GZIP_OS_CODE in the config.in file controls the setting of -this value when building Compress-Raw-Zlib. If GZIP_OS_CODE is set to -AUTO_DETECT, Compress-Raw-Zlib will attempt to determine the correct value for -your Operating System. - -Alternatively, you can override auto-detection of the default OS code and -explicitly set it yourself. Set the GZIP_OS_CODE variable in the config.in -file to be a number between 0 and 255. For example - - GZIP_OS_CODE = 3 - -See RFC 1952 for valid OS codes that can be used. - -If you are running one of the less popular Operating Systems, it is -possible that the default value picked by this module is incorrect or the -default value (3) is used when there is a better value available. When -Compress-Raw-Zlib cannot determine what operating system you are running, it -will use the default value 3 for the OS code. - -If you find you have to change this value, because you think the value auto -detected is incorrect, please take a few moments to contact the author of -this module. - -TROUBLESHOOTING ---------------- - -Undefined Symbol gzsetparams ----------------------------- - -If you get the error shown below when you run the Compress-Raw-Zlib test -harness it probably means you are running a copy of zlib that is -version 1.0.5 or older. - -t/01version.........Can't load 'blib/arch/auto/Compress/Zlib/Zlib.so' for - module Compress::Raw::Zlib: blib/arch/auto/Compress/Raw/Zlib/Zlib.so: - undefined symbol: gzsetparams at ... - -There are two ways to fix this problem: - - 1. Upgrade to the latest version of zlib. - - 2. Edit config.in and set the OLD_ZLIB variable to True. - -Test Harness 01version fails ----------------------------- -If the 01version test harness fails, and the problem isn't covered by the -scenario above, it probably means that you have two versions of -zlib installed on your system. - -Run the command below to see if this is indeed the case - - make test TEST_VERBOSE=1 TEST_FILES=t/01version.t - -Try removing the one you don't want to use and rebuild. - -Solaris build fails with "language optional software package not installed" ---------------------------------------------------------------------------- - -If you are trying to build this module under Solaris and you get an -error message like this - - /usr/ucb/cc: language optional software package not installed - -it means that Perl cannot find the C compiler on your system. The cryptic -message is just Sun's way of telling you that you haven't bought their -C compiler. - -When you build a Perl module that needs a C compiler, the Perl build -system tries to use the same C compiler that was used to build perl -itself. In this case your Perl binary was built with a C compiler that -lived in /usr/ucb. - -To continue with building this module, you need to get a C compiler, -or tell Perl where your C compiler is, if you already have one. - -Assuming you have now got a C compiler, what you do next will be dependent -on what C compiler you have installed. If you have just installed Sun's -C compiler, you shouldn't have to do anything. Just try rebuilding -this module. - -If you have installed another C compiler, say gcc, you have to tell perl -how to use it instead of /usr/ucb/cc. - -This set of options seems to work if you want to use gcc. Your mileage -may vary. - - perl Makefile.PL CC=gcc CCCDLFLAGS=-fPIC OPTIMIZE=" " - make test - -If that doesn't work for you, it's time to make changes to the Makefile -by hand. Good luck! - -Solaris build fails with "gcc: unrecognized option `-KPIC'" ------------------------------------------------------------ - -You are running Solaris and you get an error like this when you try to -build this Perl module - - gcc: unrecognized option `-KPIC' - -This symptom usually means that you are using a Perl binary that has been -built with the Sun C compiler, but you are using gcc to build this module. - -When Perl builds modules that need a C compiler, it will attempt to use -the same C compiler and command line options that was used to build perl -itself. In this case "-KPIC" is a valid option for the Sun C compiler, -but not for gcc. The equivalent option for gcc is "-fPIC". - -The solution is either: - - 1. Build both Perl and this module with the same C compiler, either - by using the Sun C compiler for both or gcc for both. - - 2. Try generating the Makefile for this module like this perl - - perl Makefile.PL CC=gcc CCCDLFLAGS=-fPIC OPTIMIZE=" " LD=gcc - make test - - This second option seems to work when mixing a Perl binary built - with the Sun C compiler and this module built with gcc. Your - mileage may vary. - -HP-UX Notes ------------ - -I've had a report that when building Compress-Raw-Zlib under HP-UX that it -is necessary to have first built the zlib library with the -fpic -option. - -Linux Notes ------------ - -Although most Linux distributions already come with zlib, some -people report getting this error when they try to build this module: - -$ make -cp Zlib.pm blib/lib/Compress/Zlib.pm -AutoSplitting blib/lib/Compress/Zlib.pm (blib/lib/auto/Compress/Zlib) -/usr/bin/perl -I/usr/lib/perl5/5.6.1/i386-linux -I/usr/lib/perl5/5.6.1 /usr/lib/perl5/5.6.1/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.6.1/ExtUtils/typemap -typemap typemap Zlib.xs > Zlib.xsc && mv Zlib.xsc Zlib.c -gcc -c -I/usr/local/include -fno-strict-aliasing -I/usr/local/include -O2 -march=i386 -mcpu=i686 -DVERSION=\"1.16\" -DXS_VERSION=\"1.16\" -fPIC -I/usr/lib/perl5/5.6.1/i386-linux/CORE Zlib.c -Zlib.xs:25:19: zlib.h: No such file or directory -make: *** [Zlib.o] Error 1 - -This usually means that you have not installed the development RPM -for zlib. Check for an RPM that start with "zlib-devel" in your Linux -distribution. - -Win32 Notes ------------ - -If you are running Activestate Perl (from http://www.activestate.com), -it ships with a pre-compiled version of Compress-Raw-Zlib. To check if a -newer version of Compress-Raw-Zlib is available run this from the command -prompt - - C:\> ppm verify -upgrade Compress-Raw-Zlib - -If you are not running Activestate Perl and you don't have access -to a C compiler, you will not be able to build and install this module. - -Win32 & Cygwin Notes --------------------- - -It is not possible to install Compress-Raw-Zlib using the CPAN shell. -This is because the Compress-Raw-Zlib DLL is itself used by the CPAN shell -and it is impossible to remove a DLL while it is already loaded under -Windows. - -The workaround is to install Compress-Raw-Zlib manually using the -instructions given at the start of this file. - -SUPPORT -------- - -General feedback/questions/bug reports should be sent to -https://github.com/pmqs/Compress-Raw-Zlib/issues (preferred) or -https://rt.cpan.org/Public/Dist/Display.html?Name=Compress-Raw-Zlib. - -FEEDBACK --------- - -How to report a problem with Compress-Raw-Zlib. - -To help me help you, I need all of the following information: - - 1. The Versions of everything relevant. - This includes: - - a. The *complete* output from running this - - perl -V - - Do not edit the output in any way. - Note, I want you to run "perl -V" and NOT "perl -v". - - If your perl does not understand the "-V" option it is too - old. This module needs Perl version 5.004 or better. - - b. The version of Compress-Raw-Zlib you have. - If you have successfully installed Compress-Raw-Zlib, this one-liner - will tell you: - - perl -MCompress::Raw::Zlib -e 'print qq[ver $Compress::Raw::Zlib::VERSION\n]' - - If you are running windows use this - - perl -MCompress::Raw::Zlib -e "print qq[ver $Compress::Raw::Zlib::VERSION\n]" - - If you haven't installed Compress-Raw-Zlib then search Compress::Raw::Zlib.pm - for a line like this: - - $VERSION = "2.202" ; - - c. The version of zlib you have used. - If you have successfully installed Compress-Raw-Zlib, this one-liner - will tell you: - - perl -MCompress::Raw::Zlib -e "print q[zlib ver ]. Compress::Raw::Zlib::ZLIB_VERSION.qq[\n]" - - If not, look at the beginning of the file zlib.h. - - 2. If you are having problems building Compress-Raw-Zlib, send me a - complete log of what happened. Start by unpacking the Compress-Raw-Zlib - module into a fresh directory and keep a log of all the steps - - [edit config.in, if necessary] - perl Makefile.PL - make - make test TEST_VERBOSE=1 - -Paul Marquess diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs index f9bb891d47f..c47c66d4beb 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/Zlib.xs @@ -1103,7 +1103,7 @@ _deflateInit(flags,level, method, windowBits, memLevel, strategy, bufsize, dicti "Compress::Raw::Zlib::deflateStream", (void*)s); XPUSHs(obj); } - if (GIMME == G_ARRAY) { + if (GIMME_V == G_ARRAY) { SV * sv = sv_2mortal(newSViv(err)) ; setDUALstatus(sv, err); XPUSHs(sv) ; @@ -1176,7 +1176,7 @@ _inflateInit(flags, windowBits, bufsize, dictionary) (void*)s); XPUSHs(obj); } - if (GIMME == G_ARRAY) { + if (GIMME_V == G_ARRAY) { SV * sv = sv_2mortal(newSViv(err)) ; setDUALstatus(sv, err); XPUSHs(sv) ; @@ -2294,7 +2294,7 @@ _createDeflateStream(inf_s, flags,level, method, windowBits, memLevel, strategy, XPUSHs(sv_setref_pv(sv_newmortal(), "Compress::Raw::Zlib::deflateStream", (void*)s)); - if (GIMME == G_ARRAY) { + if (GIMME_V == G_ARRAY) { SV * sv = sv_2mortal(newSViv(err)) ; setDUALstatus(sv, err); XPUSHs(sv) ; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/config.in b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/config.in index f6dd04cc3a5..b82e0b53ff3 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/config.in +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/config.in @@ -16,9 +16,9 @@ # Setting the Gzip OS Code # -BUILD_ZLIB = False -INCLUDE = /usr/include -LIB = /usr/lib +BUILD_ZLIB = True +INCLUDE = ./zlib-src +LIB = ./zlib-src OLD_ZLIB = False GZIP_OS_CODE = AUTO_DETECT USE_ZLIB_NG = False diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/examples/filtdef b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/examples/filtdef deleted file mode 100644 index 6046498692c..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/examples/filtdef +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/local/bin/perl - -use Compress::Raw::Zlib ; - -use strict ; -use warnings ; - -binmode STDIN; -binmode STDOUT; - -my $x = new Compress::Raw::Zlib::Deflate() - or die "Cannot create a deflation stream\n" ; - -my $output = '' ; - -while (<>) -{ - $x->deflate($_, $output) == Z_OK - or die "deflate failed\n" ; - - print $output ; -} - -$x->flush($output) == Z_OK - or die "flush failed\n" ; - -print $output ; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/examples/filtinf b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/examples/filtinf deleted file mode 100644 index 0662c142bcf..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/examples/filtinf +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/local/bin/perl - -use Compress::Raw::Zlib ; - -use strict ; -use warnings ; - -binmode STDIN; -binmode STDOUT; - -my $x = new Compress::Raw::Zlib::Inflate - or die "Cannot create a inflation stream\n" ; - -my $input = '' ; -my $output = '' ; -my $status ; - -while (read(STDIN, $input, 4096)) -{ - $status = $x->inflate($input, $output) ; - - print $output - if $status == Z_OK or $status == Z_STREAM_END ; - - last if $status != Z_OK ; -} - -die "inflation failed\n" - unless $status == Z_STREAM_END ; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm index 7e403ba1e3b..7250f382a65 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/lib/Compress/Raw/Zlib.pm @@ -10,7 +10,7 @@ use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS); -$VERSION = '2.202'; +$VERSION = '2.204_001'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -1637,7 +1637,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/ppport.h b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/ppport.h deleted file mode 100644 index 9d8fe0905cc..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/ppport.h +++ /dev/null @@ -1,8641 +0,0 @@ -#if 0 -<<'SKIP'; -#endif -/* ----------------------------------------------------------------------- - - ppport.h -- Perl/Pollution/Portability Version 3.52 - - Automatically created by Devel::PPPort running under perl 5.024000. - - Do NOT edit this file directly! -- Edit PPPort_pm.PL and the - includes in parts/inc/ instead. - - Use 'perldoc ppport.h' to view the documentation below. - ----------------------------------------------------------------------- - -SKIP - -=pod - -=head1 NAME - -ppport.h - Perl/Pollution/Portability version 3.52 - -=head1 SYNOPSIS - - perl ppport.h [options] [source files] - - Searches current directory for files if no [source files] are given - - --help show short help - - --version show version - - --patch=file write one patch file with changes - --copy=suffix write changed copies with suffix - --diff=program use diff program and options - - --compat-version=version provide compatibility with Perl version - --cplusplus accept C++ comments - - --quiet don't output anything except fatal errors - --nodiag don't show diagnostics - --nohints don't show hints - --nochanges don't suggest changes - --nofilter don't filter input files - - --strip strip all script and doc functionality - from ppport.h - - --list-provided list provided API - --list-unsupported list unsupported API - --api-info=name show Perl API portability information - -=head1 COMPATIBILITY - -This version of F is designed to support operation with Perl -installations back to 5.003, and has been tested up to 5.30. - -=head1 OPTIONS - -=head2 --help - -Display a brief usage summary. - -=head2 --version - -Display the version of F. - -=head2 --patch=I - -If this option is given, a single patch file will be created if -any changes are suggested. This requires a working diff program -to be installed on your system. - -=head2 --copy=I - -If this option is given, a copy of each file will be saved with -the given suffix that contains the suggested changes. This does -not require any external programs. Note that this does not -automagically add a dot between the original filename and the -suffix. If you want the dot, you have to include it in the option -argument. - -If neither C<--patch> or C<--copy> are given, the default is to -simply print the diffs for each file. This requires either -C or a C program to be installed. - -=head2 --diff=I - -Manually set the diff program and options to use. The default -is to use C, when installed, and output unified -context diffs. - -=head2 --compat-version=I - -Tell F to check for compatibility with the given -Perl version. The default is to check for compatibility with Perl -version 5.003. You can use this option to reduce the output -of F if you intend to be backward compatible only -down to a certain Perl version. - -=head2 --cplusplus - -Usually, F will detect C++ style comments and -replace them with C style comments for portability reasons. -Using this option instructs F to leave C++ -comments untouched. - -=head2 --quiet - -Be quiet. Don't print anything except fatal errors. - -=head2 --nodiag - -Don't output any diagnostic messages. Only portability -alerts will be printed. - -=head2 --nohints - -Don't output any hints. Hints often contain useful portability -notes. Warnings will still be displayed. - -=head2 --nochanges - -Don't suggest any changes. Only give diagnostic output and hints -unless these are also deactivated. - -=head2 --nofilter - -Don't filter the list of input files. By default, files not looking -like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. - -=head2 --strip - -Strip all script and documentation functionality from F. -This reduces the size of F dramatically and may be useful -if you want to include F in smaller modules without -increasing their distribution size too much. - -The stripped F will have a C<--unstrip> option that allows -you to undo the stripping, but only if an appropriate C -module is installed. - -=head2 --list-provided - -Lists the API elements for which compatibility is provided by -F. Also lists if it must be explicitly requested, -if it has dependencies, and if there are hints or warnings for it. - -=head2 --list-unsupported - -Lists the API elements that are known not to be supported by -F and below which version of Perl they probably -won't be available or work. - -=head2 --api-info=I - -Show portability information for API elements matching I. -If I is surrounded by slashes, it is interpreted as a regular -expression. - -=head1 DESCRIPTION - -In order for a Perl extension (XS) module to be as portable as possible -across differing versions of Perl itself, certain steps need to be taken. - -=over 4 - -=item * - -Including this header is the first major one. This alone will give you -access to a large part of the Perl API that hasn't been available in -earlier Perl releases. Use - - perl ppport.h --list-provided - -to see which API elements are provided by ppport.h. - -=item * - -You should avoid using deprecated parts of the API. For example, using -global Perl variables without the C prefix is deprecated. Also, -some API functions used to have a C prefix. Using this form is -also deprecated. You can safely use the supported API, as F -will provide wrappers for older Perl versions. - -=item * - -If you use one of a few functions or variables that were not present in -earlier versions of Perl, and that can't be provided using a macro, you -have to explicitly request support for these functions by adding one or -more C<#define>s in your source code before the inclusion of F. - -These functions or variables will be marked C in the list shown -by C<--list-provided>. - -Depending on whether you module has a single or multiple files that -use such functions or variables, you want either C or global -variants. - -For a C function or variable (used only in a single source -file), use: - - #define NEED_function - #define NEED_variable - -For a global function or variable (used in multiple source files), -use: - - #define NEED_function_GLOBAL - #define NEED_variable_GLOBAL - -Note that you mustn't have more than one global request for the -same function or variable in your project. - - Function / Variable Static Request Global Request - ----------------------------------------------------------------------------------------- - PL_parser NEED_PL_parser NEED_PL_parser_GLOBAL - PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL - SvRX() NEED_SvRX NEED_SvRX_GLOBAL - caller_cx() NEED_caller_cx NEED_caller_cx_GLOBAL - croak_xs_usage() NEED_croak_xs_usage NEED_croak_xs_usage_GLOBAL - die_sv() NEED_die_sv NEED_die_sv_GLOBAL - eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL - grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL - grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL - grok_number() NEED_grok_number NEED_grok_number_GLOBAL - grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL - grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL - gv_fetchpvn_flags() NEED_gv_fetchpvn_flags NEED_gv_fetchpvn_flags_GLOBAL - load_module() NEED_load_module NEED_load_module_GLOBAL - mess() NEED_mess NEED_mess_GLOBAL - mess_nocontext() NEED_mess_nocontext NEED_mess_nocontext_GLOBAL - mess_sv() NEED_mess_sv NEED_mess_sv_GLOBAL - mg_findext() NEED_mg_findext NEED_mg_findext_GLOBAL - my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL - my_sprintf() NEED_my_sprintf NEED_my_sprintf_GLOBAL - my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL - my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL - my_strnlen() NEED_my_strnlen NEED_my_strnlen_GLOBAL - newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL - newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL - newSV_type() NEED_newSV_type NEED_newSV_type_GLOBAL - newSVpvn_flags() NEED_newSVpvn_flags NEED_newSVpvn_flags_GLOBAL - newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL - pv_display() NEED_pv_display NEED_pv_display_GLOBAL - pv_escape() NEED_pv_escape NEED_pv_escape_GLOBAL - pv_pretty() NEED_pv_pretty NEED_pv_pretty_GLOBAL - sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL - sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL - sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL - sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL - sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL - sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL - sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL - sv_unmagicext() NEED_sv_unmagicext NEED_sv_unmagicext_GLOBAL - utf8_to_uvchr_buf() NEED_utf8_to_uvchr_buf NEED_utf8_to_uvchr_buf_GLOBAL - vload_module() NEED_vload_module NEED_vload_module_GLOBAL - vmess() NEED_vmess NEED_vmess_GLOBAL - vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL - warner() NEED_warner NEED_warner_GLOBAL - -To avoid namespace conflicts, you can change the namespace of the -explicitly exported functions / variables using the C -macro. Just C<#define> the macro before including C: - - #define DPPP_NAMESPACE MyOwnNamespace_ - #include "ppport.h" - -The default namespace is C. - -=back - -The good thing is that most of the above can be checked by running -F on your source code. See the next section for -details. - -=head1 EXAMPLES - -To verify whether F is needed for your module, whether you -should make any changes to your code, and whether any special defines -should be used, F can be run as a Perl script to check your -source code. Simply say: - - perl ppport.h - -The result will usually be a list of patches suggesting changes -that should at least be acceptable, if not necessarily the most -efficient solution, or a fix for all possible problems. - -If you know that your XS module uses features only available in -newer Perl releases, if you're aware that it uses C++ comments, -and if you want all suggestions as a single patch file, you could -use something like this: - - perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff - -If you only want your code to be scanned without any suggestions -for changes, use: - - perl ppport.h --nochanges - -You can specify a different C program or options, using -the C<--diff> option: - - perl ppport.h --diff='diff -C 10' - -This would output context diffs with 10 lines of context. - -If you want to create patched copies of your files instead, use: - - perl ppport.h --copy=.new - -To display portability information for the C function, -use: - - perl ppport.h --api-info=newSVpvn - -Since the argument to C<--api-info> can be a regular expression, -you can use - - perl ppport.h --api-info=/_nomg$/ - -to display portability information for all C<_nomg> functions or - - perl ppport.h --api-info=/./ - -to display information for all known API elements. - -=head1 BUGS - -If this version of F is causing failure during -the compilation of this module, please check if newer versions -of either this module or C are available on CPAN -before sending a bug report. - -If F was generated using the latest version of -C and is causing failure of this module, please -send a bug report to L. - -Please include the following information: - -=over 4 - -=item 1. - -The complete output from running "perl -V" - -=item 2. - -This file. - -=item 3. - -The name and version of the module you were trying to build. - -=item 4. - -A full log of the build that failed. - -=item 5. - -Any other information that you think could be relevant. - -=back - -For the latest version of this code, please get the C -module from CPAN. - -=head1 COPYRIGHT - -Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz. - -Version 2.x, Copyright (C) 2001, Paul Marquess. - -Version 1.x, Copyright (C) 1999, Kenneth Albanowski. - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=head1 SEE ALSO - -See L. - -=cut - -use strict; - -# Disable broken TRIE-optimization -BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= 5.009004 && "$]" <= 5.009005 } - -my $VERSION = 3.52; - -my %opt = ( - quiet => 0, - diag => 1, - hints => 1, - changes => 1, - cplusplus => 0, - filter => 1, - strip => 0, - version => 0, -); - -my($ppport) = $0 =~ /([\w.]+)$/; -my $LF = '(?:\r\n|[\r\n])'; # line feed -my $HS = "[ \t]"; # horizontal whitespace - -# Never use C comments in this file! -my $ccs = '/'.'*'; -my $cce = '*'.'/'; -my $rccs = quotemeta $ccs; -my $rcce = quotemeta $cce; - -eval { - require Getopt::Long; - Getopt::Long::GetOptions(\%opt, qw( - help quiet diag! filter! hints! changes! cplusplus strip version - patch=s copy=s diff=s compat-version=s - list-provided list-unsupported api-info=s - )) or usage(); -}; - -if ($@ and grep /^-/, @ARGV) { - usage() if "@ARGV" =~ /^--?h(?:elp)?$/; - die "Getopt::Long not found. Please don't use any options.\n"; -} - -if ($opt{version}) { - print "This is $0 $VERSION.\n"; - exit 0; -} - -usage() if $opt{help}; -strip() if $opt{strip}; - -if (exists $opt{'compat-version'}) { - my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; - if ($@) { - die "Invalid version number format: '$opt{'compat-version'}'\n"; - } - die "Only Perl 5 is supported\n" if $r != 5; - die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; - $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; -} -else { - $opt{'compat-version'} = 5; -} - -my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ - ? ( $1 => { - ($2 ? ( base => $2 ) : ()), - ($3 ? ( todo => $3 ) : ()), - (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), - (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), - (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), - } ) - : die "invalid spec: $_" } qw( -AvFILLp|5.004050||p -AvFILL||| -BOM_UTF8||| -BhkDISABLE||5.024000| -BhkENABLE||5.024000| -BhkENTRY_set||5.024000| -BhkENTRY||| -BhkFLAGS||| -CALL_BLOCK_HOOKS||| -CLASS|||n -CPERLscope|5.005000||p -CX_CURPAD_SAVE||| -CX_CURPAD_SV||| -C_ARRAY_END|5.013002||p -C_ARRAY_LENGTH|5.008001||p -CopFILEAV|5.006000||p -CopFILEGV_set|5.006000||p -CopFILEGV|5.006000||p -CopFILESV|5.006000||p -CopFILE_set|5.006000||p -CopFILE|5.006000||p -CopSTASHPV_set|5.006000||p -CopSTASHPV|5.006000||p -CopSTASH_eq|5.006000||p -CopSTASH_set|5.006000||p -CopSTASH|5.006000||p -CopyD|5.009002|5.004050|p -Copy||| -CvPADLIST||5.008001| -CvSTASH||| -CvWEAKOUTSIDE||| -DECLARATION_FOR_LC_NUMERIC_MANIPULATION||5.021010|n -DEFSV_set|5.010001||p -DEFSV|5.004050||p -DO_UTF8||5.006000| -END_EXTERN_C|5.005000||p -ENTER||| -ERRSV|5.004050||p -EXTEND||| -EXTERN_C|5.005000||p -F0convert|||n -FREETMPS||| -GIMME_V||5.004000|n -GIMME|||n -GROK_NUMERIC_RADIX|5.007002||p -G_ARRAY||| -G_DISCARD||| -G_EVAL||| -G_METHOD|5.006001||p -G_NOARGS||| -G_SCALAR||| -G_VOID||5.004000| -GetVars||| -GvAV||| -GvCV||| -GvHV||| -GvSV||| -Gv_AMupdate||5.011000| -HEf_SVKEY|5.003070||p -HeHASH||5.003070| -HeKEY||5.003070| -HeKLEN||5.003070| -HePV||5.004000| -HeSVKEY_force||5.003070| -HeSVKEY_set||5.004000| -HeSVKEY||5.003070| -HeUTF8|5.010001|5.008000|p -HeVAL||5.003070| -HvENAMELEN||5.015004| -HvENAMEUTF8||5.015004| -HvENAME||5.013007| -HvNAMELEN_get|5.009003||p -HvNAMELEN||5.015004| -HvNAMEUTF8||5.015004| -HvNAME_get|5.009003||p -HvNAME||| -INT2PTR|5.006000||p -IN_LOCALE_COMPILETIME|5.007002||p -IN_LOCALE_RUNTIME|5.007002||p -IN_LOCALE|5.007002||p -IN_PERL_COMPILETIME|5.008001||p -IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p -IS_NUMBER_INFINITY|5.007002||p -IS_NUMBER_IN_UV|5.007002||p -IS_NUMBER_NAN|5.007003||p -IS_NUMBER_NEG|5.007002||p -IS_NUMBER_NOT_INT|5.007002||p -IVSIZE|5.006000||p -IVTYPE|5.006000||p -IVdf|5.006000||p -LEAVE||| -LIKELY|||p -LINKLIST||5.013006| -LVRET||| -MARK||| -MULTICALL||5.024000| -MUTABLE_PTR|5.010001||p -MUTABLE_SV|5.010001||p -MY_CXT_CLONE|5.009002||p -MY_CXT_INIT|5.007003||p -MY_CXT|5.007003||p -MoveD|5.009002|5.004050|p -Move||| -NOOP|5.005000||p -NUM2PTR|5.006000||p -NVTYPE|5.006000||p -NVef|5.006001||p -NVff|5.006001||p -NVgf|5.006001||p -Newxc|5.009003||p -Newxz|5.009003||p -Newx|5.009003||p -Nullav||| -Nullch||| -Nullcv||| -Nullhv||| -Nullsv||| -OP_CLASS||5.013007| -OP_DESC||5.007003| -OP_NAME||5.007003| -OP_TYPE_IS_OR_WAS||5.019010| -OP_TYPE_IS||5.019007| -ORIGMARK||| -OpHAS_SIBLING|5.021007||p -OpLASTSIB_set|5.021011||p -OpMAYBESIB_set|5.021011||p -OpMORESIB_set|5.021011||p -OpSIBLING|5.021007||p -PAD_BASE_SV||| -PAD_CLONE_VARS||| -PAD_COMPNAME_FLAGS||| -PAD_COMPNAME_GEN_set||| -PAD_COMPNAME_GEN||| -PAD_COMPNAME_OURSTASH||| -PAD_COMPNAME_PV||| -PAD_COMPNAME_TYPE||| -PAD_RESTORE_LOCAL||| -PAD_SAVE_LOCAL||| -PAD_SAVE_SETNULLPAD||| -PAD_SETSV||| -PAD_SET_CUR_NOSAVE||| -PAD_SET_CUR||| -PAD_SVl||| -PAD_SV||| -PERLIO_FUNCS_CAST|5.009003||p -PERLIO_FUNCS_DECL|5.009003||p -PERL_ABS|5.008001||p -PERL_ARGS_ASSERT_CROAK_XS_USAGE|||p -PERL_BCDVERSION|5.024000||p -PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p -PERL_HASH|5.003070||p -PERL_INT_MAX|5.003070||p -PERL_INT_MIN|5.003070||p -PERL_LONG_MAX|5.003070||p -PERL_LONG_MIN|5.003070||p -PERL_MAGIC_arylen|5.007002||p -PERL_MAGIC_backref|5.007002||p -PERL_MAGIC_bm|5.007002||p -PERL_MAGIC_collxfrm|5.007002||p -PERL_MAGIC_dbfile|5.007002||p -PERL_MAGIC_dbline|5.007002||p -PERL_MAGIC_defelem|5.007002||p -PERL_MAGIC_envelem|5.007002||p -PERL_MAGIC_env|5.007002||p -PERL_MAGIC_ext|5.007002||p -PERL_MAGIC_fm|5.007002||p -PERL_MAGIC_glob|5.024000||p -PERL_MAGIC_isaelem|5.007002||p -PERL_MAGIC_isa|5.007002||p -PERL_MAGIC_mutex|5.024000||p -PERL_MAGIC_nkeys|5.007002||p -PERL_MAGIC_overload_elem|5.024000||p -PERL_MAGIC_overload_table|5.007002||p -PERL_MAGIC_overload|5.024000||p -PERL_MAGIC_pos|5.007002||p -PERL_MAGIC_qr|5.007002||p -PERL_MAGIC_regdata|5.007002||p -PERL_MAGIC_regdatum|5.007002||p -PERL_MAGIC_regex_global|5.007002||p -PERL_MAGIC_shared_scalar|5.007003||p -PERL_MAGIC_shared|5.007003||p -PERL_MAGIC_sigelem|5.007002||p -PERL_MAGIC_sig|5.007002||p -PERL_MAGIC_substr|5.007002||p -PERL_MAGIC_sv|5.007002||p -PERL_MAGIC_taint|5.007002||p -PERL_MAGIC_tiedelem|5.007002||p -PERL_MAGIC_tiedscalar|5.007002||p -PERL_MAGIC_tied|5.007002||p -PERL_MAGIC_utf8|5.008001||p -PERL_MAGIC_uvar_elem|5.007003||p -PERL_MAGIC_uvar|5.007002||p -PERL_MAGIC_vec|5.007002||p -PERL_MAGIC_vstring|5.008001||p -PERL_PV_ESCAPE_ALL|5.009004||p -PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p -PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p -PERL_PV_ESCAPE_NOCLEAR|5.009004||p -PERL_PV_ESCAPE_QUOTE|5.009004||p -PERL_PV_ESCAPE_RE|5.009005||p -PERL_PV_ESCAPE_UNI_DETECT|5.009004||p -PERL_PV_ESCAPE_UNI|5.009004||p -PERL_PV_PRETTY_DUMP|5.009004||p -PERL_PV_PRETTY_ELLIPSES|5.010000||p -PERL_PV_PRETTY_LTGT|5.009004||p -PERL_PV_PRETTY_NOCLEAR|5.010000||p -PERL_PV_PRETTY_QUOTE|5.009004||p -PERL_PV_PRETTY_REGPROP|5.009004||p -PERL_QUAD_MAX|5.003070||p -PERL_QUAD_MIN|5.003070||p -PERL_REVISION|5.006000||p -PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p -PERL_SCAN_DISALLOW_PREFIX|5.007003||p -PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p -PERL_SCAN_SILENT_ILLDIGIT|5.008001||p -PERL_SHORT_MAX|5.003070||p -PERL_SHORT_MIN|5.003070||p -PERL_SIGNALS_UNSAFE_FLAG|5.008001||p -PERL_SUBVERSION|5.006000||p -PERL_SYS_INIT3||5.006000| -PERL_SYS_INIT||| -PERL_SYS_TERM||5.024000| -PERL_UCHAR_MAX|5.003070||p -PERL_UCHAR_MIN|5.003070||p -PERL_UINT_MAX|5.003070||p -PERL_UINT_MIN|5.003070||p -PERL_ULONG_MAX|5.003070||p -PERL_ULONG_MIN|5.003070||p -PERL_UNUSED_ARG|5.009003||p -PERL_UNUSED_CONTEXT|5.009004||p -PERL_UNUSED_DECL|5.007002||p -PERL_UNUSED_RESULT|5.021001||p -PERL_UNUSED_VAR|5.007002||p -PERL_UQUAD_MAX|5.003070||p -PERL_UQUAD_MIN|5.003070||p -PERL_USE_GCC_BRACE_GROUPS|5.009004||p -PERL_USHORT_MAX|5.003070||p -PERL_USHORT_MIN|5.003070||p -PERL_VERSION|5.006000||p -PL_DBsignal|5.005000||p -PL_DBsingle|||pn -PL_DBsub|||pn -PL_DBtrace|||pn -PL_Sv|5.005000||p -PL_bufend|5.024000||p -PL_bufptr|5.024000||p -PL_check||5.006000| -PL_compiling|5.004050||p -PL_comppad_name||5.017004| -PL_comppad||5.008001| -PL_copline|5.024000||p -PL_curcop|5.004050||p -PL_curpad||5.005000| -PL_curstash|5.004050||p -PL_debstash|5.004050||p -PL_defgv|5.004050||p -PL_diehook|5.004050||p -PL_dirty|5.004050||p -PL_dowarn|||pn -PL_errgv|5.004050||p -PL_error_count|5.024000||p -PL_expect|5.024000||p -PL_hexdigit|5.005000||p -PL_hints|5.005000||p -PL_in_my_stash|5.024000||p -PL_in_my|5.024000||p -PL_keyword_plugin||5.011002| -PL_last_in_gv|||n -PL_laststatval|5.005000||p -PL_lex_state|5.024000||p -PL_lex_stuff|5.024000||p -PL_linestr|5.024000||p -PL_modglobal||5.005000|n -PL_na|5.004050||pn -PL_no_modify|5.006000||p -PL_ofsgv|||n -PL_opfreehook||5.011000|n -PL_parser|5.009005||p -PL_peepp||5.007003|n -PL_perl_destruct_level|5.004050||p -PL_perldb|5.004050||p -PL_ppaddr|5.006000||p -PL_rpeepp||5.013005|n -PL_rsfp_filters|5.024000||p -PL_rsfp|5.024000||p -PL_rs|||n -PL_signals|5.008001||p -PL_stack_base|5.004050||p -PL_stack_sp|5.004050||p -PL_statcache|5.005000||p -PL_stdingv|5.004050||p -PL_sv_arenaroot|5.004050||p -PL_sv_no|5.004050||pn -PL_sv_undef|5.004050||pn -PL_sv_yes|5.004050||pn -PL_sv_zero|||n -PL_tainted|5.004050||p -PL_tainting|5.004050||p -PL_tokenbuf|5.024000||p -POP_MULTICALL||5.024000| -POPi|||n -POPl|||n -POPn|||n -POPpbytex||5.007001|n -POPpx||5.005030|n -POPp|||n -POPs|||n -POPul||5.006000|n -POPu||5.004000|n -PTR2IV|5.006000||p -PTR2NV|5.006000||p -PTR2UV|5.006000||p -PTR2nat|5.009003||p -PTR2ul|5.007001||p -PTRV|5.006000||p -PUSHMARK||| -PUSH_MULTICALL||5.024000| -PUSHi||| -PUSHmortal|5.009002||p -PUSHn||| -PUSHp||| -PUSHs||| -PUSHu|5.004000||p -PUTBACK||| -PadARRAY||5.024000| -PadMAX||5.024000| -PadlistARRAY||5.024000| -PadlistMAX||5.024000| -PadlistNAMESARRAY||5.024000| -PadlistNAMESMAX||5.024000| -PadlistNAMES||5.024000| -PadlistREFCNT||5.017004| -PadnameIsOUR||| -PadnameIsSTATE||| -PadnameLEN||5.024000| -PadnameOURSTASH||| -PadnameOUTER||| -PadnamePV||5.024000| -PadnameREFCNT_dec||5.024000| -PadnameREFCNT||5.024000| -PadnameSV||5.024000| -PadnameTYPE||| -PadnameUTF8||5.021007| -PadnamelistARRAY||5.024000| -PadnamelistMAX||5.024000| -PadnamelistREFCNT_dec||5.024000| -PadnamelistREFCNT||5.024000| -PerlIO_clearerr||5.007003| -PerlIO_close||5.007003| -PerlIO_context_layers||5.009004| -PerlIO_eof||5.007003| -PerlIO_error||5.007003| -PerlIO_fileno||5.007003| -PerlIO_fill||5.007003| -PerlIO_flush||5.007003| -PerlIO_get_base||5.007003| -PerlIO_get_bufsiz||5.007003| -PerlIO_get_cnt||5.007003| -PerlIO_get_ptr||5.007003| -PerlIO_read||5.007003| -PerlIO_restore_errno||| -PerlIO_save_errno||| -PerlIO_seek||5.007003| -PerlIO_set_cnt||5.007003| -PerlIO_set_ptrcnt||5.007003| -PerlIO_setlinebuf||5.007003| -PerlIO_stderr||5.007003| -PerlIO_stdin||5.007003| -PerlIO_stdout||5.007003| -PerlIO_tell||5.007003| -PerlIO_unread||5.007003| -PerlIO_write||5.007003| -PerlLIO_dup2_cloexec||| -PerlLIO_dup_cloexec||| -PerlLIO_open3_cloexec||| -PerlLIO_open_cloexec||| -PerlProc_pipe_cloexec||| -PerlSock_accept_cloexec||| -PerlSock_socket_cloexec||| -PerlSock_socketpair_cloexec||| -Perl_langinfo|||n -Perl_setlocale|||n -PoisonFree|5.009004||p -PoisonNew|5.009004||p -PoisonWith|5.009004||p -Poison|5.008000||p -READ_XDIGIT||5.017006| -REPLACEMENT_CHARACTER_UTF8||| -RESTORE_LC_NUMERIC||5.024000| -RETVAL|||n -Renewc||| -Renew||| -SAVECLEARSV||| -SAVECOMPPAD||| -SAVEPADSV||| -SAVETMPS||| -SAVE_DEFSV|5.004050||p -SPAGAIN||| -SP||| -START_EXTERN_C|5.005000||p -START_MY_CXT|5.007003||p -STMT_END|||p -STMT_START|||p -STORE_LC_NUMERIC_FORCE_TO_UNDERLYING||5.024000| -STORE_LC_NUMERIC_SET_TO_NEEDED||5.024000| -STR_WITH_LEN|5.009003||p -ST||| -SV_CONST_RETURN|5.009003||p -SV_COW_DROP_PV|5.008001||p -SV_COW_SHARED_HASH_KEYS|5.009005||p -SV_GMAGIC|5.007002||p -SV_HAS_TRAILING_NUL|5.009004||p -SV_IMMEDIATE_UNREF|5.007001||p -SV_MUTABLE_RETURN|5.009003||p -SV_NOSTEAL|5.009002||p -SV_SMAGIC|5.009003||p -SV_UTF8_NO_ENCODING|5.008001||p -SVfARG|5.009005||p -SVf_UTF8|5.006000||p -SVf|5.006000||p -SVt_INVLIST||5.019002| -SVt_IV||| -SVt_NULL||| -SVt_NV||| -SVt_PVAV||| -SVt_PVCV||| -SVt_PVFM||| -SVt_PVGV||| -SVt_PVHV||| -SVt_PVIO||| -SVt_PVIV||| -SVt_PVLV||| -SVt_PVMG||| -SVt_PVNV||| -SVt_PV||| -SVt_REGEXP||5.011000| -Safefree||| -Slab_Alloc||| -Slab_Free||| -Slab_to_ro||| -Slab_to_rw||| -StructCopy||| -SvCUR_set||| -SvCUR||| -SvEND||| -SvGAMAGIC||5.006001| -SvGETMAGIC|5.004050||p -SvGROW||| -SvIOK_UV||5.006000| -SvIOK_notUV||5.006000| -SvIOK_off||| -SvIOK_only_UV||5.006000| -SvIOK_only||| -SvIOK_on||| -SvIOKp||| -SvIOK||| -SvIVX||| -SvIV_nomg|5.009001||p -SvIV_set||| -SvIVx||| -SvIV||| -SvIsCOW_shared_hash||5.008003| -SvIsCOW||5.008003| -SvLEN_set||| -SvLEN||| -SvLOCK||5.007003| -SvMAGIC_set|5.009003||p -SvNIOK_off||| -SvNIOKp||| -SvNIOK||| -SvNOK_off||| -SvNOK_only||| -SvNOK_on||| -SvNOKp||| -SvNOK||| -SvNVX||| -SvNV_nomg||5.013002| -SvNV_set||| -SvNVx||| -SvNV||| -SvOK||| -SvOOK_offset||5.011000| -SvOOK||| -SvPOK_off||| -SvPOK_only_UTF8||5.006000| -SvPOK_only||| -SvPOK_on||| -SvPOKp||| -SvPOK||| -SvPVCLEAR||| -SvPVX_const|5.009003||p -SvPVX_mutable|5.009003||p -SvPVX||| -SvPV_const|5.009003||p -SvPV_flags_const_nolen|5.009003||p -SvPV_flags_const|5.009003||p -SvPV_flags_mutable|5.009003||p -SvPV_flags|5.007002||p -SvPV_force_flags_mutable|5.009003||p -SvPV_force_flags_nolen|5.009003||p -SvPV_force_flags|5.007002||p -SvPV_force_mutable|5.009003||p -SvPV_force_nolen|5.009003||p -SvPV_force_nomg_nolen|5.009003||p -SvPV_force_nomg|5.007002||p -SvPV_force|||p -SvPV_mutable|5.009003||p -SvPV_nolen_const|5.009003||p -SvPV_nolen|5.006000||p -SvPV_nomg_const_nolen|5.009003||p -SvPV_nomg_const|5.009003||p -SvPV_nomg_nolen|5.013007||p -SvPV_nomg|5.007002||p -SvPV_renew|5.009003||p -SvPV_set||| -SvPVbyte_force||5.009002| -SvPVbyte_nolen||5.006000| -SvPVbytex_force||5.006000| -SvPVbytex||5.006000| -SvPVbyte|5.006000||p -SvPVutf8_force||5.006000| -SvPVutf8_nolen||5.006000| -SvPVutf8x_force||5.006000| -SvPVutf8x||5.006000| -SvPVutf8||5.006000| -SvPVx||| -SvPV||| -SvREADONLY_off||| -SvREADONLY_on||| -SvREADONLY||| -SvREFCNT_dec_NN||5.017007| -SvREFCNT_dec||| -SvREFCNT_inc_NN|5.009004||p -SvREFCNT_inc_simple_NN|5.009004||p -SvREFCNT_inc_simple_void_NN|5.009004||p -SvREFCNT_inc_simple_void|5.009004||p -SvREFCNT_inc_simple|5.009004||p -SvREFCNT_inc_void_NN|5.009004||p -SvREFCNT_inc_void|5.009004||p -SvREFCNT_inc|||p -SvREFCNT||| -SvROK_off||| -SvROK_on||| -SvROK||| -SvRV_set|5.009003||p -SvRV||| -SvRXOK|5.009005||p -SvRX|5.009005||p -SvSETMAGIC||| -SvSHARED_HASH|5.009003||p -SvSHARE||5.007003| -SvSTASH_set|5.009003||p -SvSTASH||| -SvSetMagicSV_nosteal||5.004000| -SvSetMagicSV||5.004000| -SvSetSV_nosteal||5.004000| -SvSetSV||| -SvTAINTED_off||5.004000| -SvTAINTED_on||5.004000| -SvTAINTED||5.004000| -SvTAINT||| -SvTHINKFIRST||| -SvTRUE_nomg||5.013006| -SvTRUE||| -SvTYPE||| -SvUNLOCK||5.007003| -SvUOK|5.007001|5.006000|p -SvUPGRADE||| -SvUTF8_off||5.006000| -SvUTF8_on||5.006000| -SvUTF8||5.006000| -SvUVXx|5.004000||p -SvUVX|5.004000||p -SvUV_nomg|5.009001||p -SvUV_set|5.009003||p -SvUVx|5.004000||p -SvUV|5.004000||p -SvVOK||5.008001| -SvVSTRING_mg|5.009004||p -THIS|||n -UNDERBAR|5.009002||p -UNICODE_REPLACEMENT|||p -UNLIKELY|||p -UTF8SKIP||5.006000| -UTF8_IS_INVARIANT||| -UTF8_IS_NONCHAR||| -UTF8_IS_SUPER||| -UTF8_IS_SURROGATE||| -UTF8_MAXBYTES|5.009002||p -UTF8_SAFE_SKIP|||p -UVCHR_IS_INVARIANT||| -UVCHR_SKIP||5.022000| -UVSIZE|5.006000||p -UVTYPE|5.006000||p -UVXf|5.007001||p -UVof|5.006000||p -UVuf|5.006000||p -UVxf|5.006000||p -WARN_ALL|5.006000||p -WARN_AMBIGUOUS|5.006000||p -WARN_ASSERTIONS|5.024000||p -WARN_BAREWORD|5.006000||p -WARN_CLOSED|5.006000||p -WARN_CLOSURE|5.006000||p -WARN_DEBUGGING|5.006000||p -WARN_DEPRECATED|5.006000||p -WARN_DIGIT|5.006000||p -WARN_EXEC|5.006000||p -WARN_EXITING|5.006000||p -WARN_GLOB|5.006000||p -WARN_INPLACE|5.006000||p -WARN_INTERNAL|5.006000||p -WARN_IO|5.006000||p -WARN_LAYER|5.008000||p -WARN_MALLOC|5.006000||p -WARN_MISC|5.006000||p -WARN_NEWLINE|5.006000||p -WARN_NUMERIC|5.006000||p -WARN_ONCE|5.006000||p -WARN_OVERFLOW|5.006000||p -WARN_PACK|5.006000||p -WARN_PARENTHESIS|5.006000||p -WARN_PIPE|5.006000||p -WARN_PORTABLE|5.006000||p -WARN_PRECEDENCE|5.006000||p -WARN_PRINTF|5.006000||p -WARN_PROTOTYPE|5.006000||p -WARN_QW|5.006000||p -WARN_RECURSION|5.006000||p -WARN_REDEFINE|5.006000||p -WARN_REGEXP|5.006000||p -WARN_RESERVED|5.006000||p -WARN_SEMICOLON|5.006000||p -WARN_SEVERE|5.006000||p -WARN_SIGNAL|5.006000||p -WARN_SUBSTR|5.006000||p -WARN_SYNTAX|5.006000||p -WARN_TAINT|5.006000||p -WARN_THREADS|5.008000||p -WARN_UNINITIALIZED|5.006000||p -WARN_UNOPENED|5.006000||p -WARN_UNPACK|5.006000||p -WARN_UNTIE|5.006000||p -WARN_UTF8|5.006000||p -WARN_VOID|5.006000||p -WIDEST_UTYPE|5.015004||p -XCPT_CATCH|5.009002||p -XCPT_RETHROW|5.009002||p -XCPT_TRY_END|5.009002||p -XCPT_TRY_START|5.009002||p -XPUSHi||| -XPUSHmortal|5.009002||p -XPUSHn||| -XPUSHp||| -XPUSHs||| -XPUSHu|5.004000||p -XSPROTO|5.010000||p -XSRETURN_EMPTY||| -XSRETURN_IV||| -XSRETURN_NO||| -XSRETURN_NV||| -XSRETURN_PV||| -XSRETURN_UNDEF||| -XSRETURN_UV|5.008001||p -XSRETURN_YES||| -XSRETURN|||p -XST_mIV||| -XST_mNO||| -XST_mNV||| -XST_mPV||| -XST_mUNDEF||| -XST_mUV|5.008001||p -XST_mYES||| -XS_APIVERSION_BOOTCHECK||5.024000| -XS_EXTERNAL||5.024000| -XS_INTERNAL||5.024000| -XS_VERSION_BOOTCHECK||5.024000| -XS_VERSION||| -XSprePUSH|5.006000||p -XS||| -XopDISABLE||5.024000| -XopENABLE||5.024000| -XopENTRYCUSTOM||5.024000| -XopENTRY_set||5.024000| -XopENTRY||5.024000| -XopFLAGS||5.013007| -ZeroD|5.009002||p -Zero||| -__ASSERT_|||p -_aMY_CXT|5.007003||p -_inverse_folds||| -_is_grapheme||| -_is_in_locale_category||| -_new_invlist_C_array||| -_pMY_CXT|5.007003||p -_to_fold_latin1|||n -_to_upper_title_latin1||| -_to_utf8_case||| -_variant_byte_number|||n -_warn_problematic_locale|||n -aMY_CXT_|5.007003||p -aMY_CXT|5.007003||p -aTHXR_|5.024000||p -aTHXR|5.024000||p -aTHX_|5.006000||p -aTHX|5.006000||p -abort_execution||| -add_above_Latin1_folds||| -add_data|||n -add_multi_match||| -add_utf16_textfilter||| -adjust_size_and_find_bucket|||n -advance_one_LB||| -advance_one_SB||| -advance_one_WB||| -allocmy||| -amagic_call||| -amagic_cmp_locale||| -amagic_cmp||| -amagic_deref_call||5.013007| -amagic_i_ncmp||| -amagic_is_enabled||| -amagic_ncmp||| -anonymise_cv_maybe||| -any_dup||| -ao||| -apply_attrs_my||| -apply_attrs||| -apply||| -argvout_final||| -assert_uft8_cache_coherent||| -assignment_type||| -atfork_lock||5.007003|n -atfork_unlock||5.007003|n -av_arylen_p||5.009003| -av_clear||| -av_delete||5.006000| -av_exists||5.006000| -av_extend_guts||| -av_extend||| -av_fetch||| -av_fill||| -av_iter_p||5.011000| -av_len||| -av_make||| -av_nonelem||| -av_pop||| -av_push||| -av_reify||| -av_shift||| -av_store||| -av_tindex|5.017009|5.017009|p -av_top_index|5.017009|5.017009|p -av_undef||| -av_unshift||| -ax|||n -backup_one_GCB||| -backup_one_LB||| -backup_one_SB||| -backup_one_WB||| -bad_type_gv||| -bad_type_pv||| -bind_match||| -block_end||5.004000| -block_gimme||5.004000| -block_start||5.004000| -blockhook_register||5.013003| -boolSV|5.004000||p -boot_core_PerlIO||| -boot_core_UNIVERSAL||| -boot_core_mro||| -bytes_cmp_utf8||5.013007| -cBOOL|5.013000||p -call_argv|5.006000||p -call_atexit||5.006000| -call_list||5.004000| -call_method|5.006000||p -call_pv|5.006000||p -call_sv|5.006000||p -caller_cx|5.013005|5.006000|p -calloc||5.007002|n -cando||| -cast_i32||5.006000|n -cast_iv||5.006000|n -cast_ulong||5.006000|n -cast_uv||5.006000|n -category_name|||n -change_engine_size||| -check_and_deprecate||| -check_type_and_open||| -check_uni||| -checkcomma||| -ckWARN2_d||| -ckWARN2||| -ckWARN3_d||| -ckWARN3||| -ckWARN4_d||| -ckWARN4||| -ckWARN_d||| -ckWARN|5.006000||p -ck_entersub_args_core||| -ck_entersub_args_list||5.013006| -ck_entersub_args_proto_or_list||5.013006| -ck_entersub_args_proto||5.013006| -ck_warner_d||5.011001|v -ck_warner||5.011001|v -ckwarn_common||| -ckwarn_d||5.009003| -ckwarn||5.009003| -clear_defarray||5.023008| -clear_special_blocks||| -clone_params_del|||n -clone_params_new|||n -closest_cop||| -cntrl_to_mnemonic|||n -compute_EXACTish|||n -construct_ahocorasick_from_trie||| -cop_free||| -cop_hints_2hv||5.013007| -cop_hints_fetch_pvn||5.013007| -cop_hints_fetch_pvs||5.013007| -cop_hints_fetch_pv||5.013007| -cop_hints_fetch_sv||5.013007| -cophh_2hv||5.013007| -cophh_copy||5.013007| -cophh_delete_pvn||5.013007| -cophh_delete_pvs||5.013007| -cophh_delete_pv||5.013007| -cophh_delete_sv||5.013007| -cophh_fetch_pvn||5.013007| -cophh_fetch_pvs||5.013007| -cophh_fetch_pv||5.013007| -cophh_fetch_sv||5.013007| -cophh_free||5.013007| -cophh_new_empty||5.024000| -cophh_store_pvn||5.013007| -cophh_store_pvs||5.013007| -cophh_store_pv||5.013007| -cophh_store_sv||5.013007| -core_prototype||| -coresub_op||| -cr_textfilter||| -croak_caller|||vn -croak_memory_wrap|5.019003||pn -croak_no_mem|||n -croak_no_modify|5.013003||pn -croak_nocontext|||pvn -croak_popstack|||n -croak_sv|5.013001||p -croak_xs_usage|5.010001||pn -croak|||v -csighandler||5.009003|n -current_re_engine||| -curse||| -custom_op_desc||5.007003| -custom_op_get_field||| -custom_op_name||5.007003| -custom_op_register||5.013007| -custom_op_xop||5.013007| -cv_clone_into||| -cv_clone||| -cv_const_sv_or_av|||n -cv_const_sv||5.003070|n -cv_dump||| -cv_forget_slab||| -cv_get_call_checker_flags||| -cv_get_call_checker||5.013006| -cv_name||5.021005| -cv_set_call_checker_flags||5.021004| -cv_set_call_checker||5.013006| -cv_undef_flags||| -cv_undef||| -cvgv_from_hek||| -cvgv_set||| -cvstash_set||| -cx_dump||5.005000| -cx_dup||| -cxinc||| -dAXMARK|5.009003||p -dAX|5.007002||p -dITEMS|5.007002||p -dMARK||| -dMULTICALL||5.009003| -dMY_CXT_SV|5.007003||p -dMY_CXT|5.007003||p -dNOOP|5.006000||p -dORIGMARK||| -dSP||| -dTHR|5.004050||p -dTHXR|5.024000||p -dTHXa|5.006000||p -dTHXoa|5.006000||p -dTHX|5.006000||p -dUNDERBAR|5.009002||p -dVAR|5.009003||p -dXCPT|5.009002||p -dXSARGS||| -dXSI32||| -dXSTARG|5.006000||p -deb_curcv||| -deb_nocontext|||vn -deb_stack_all||| -deb_stack_n||| -debop||5.005000| -debprofdump||5.005000| -debprof||| -debstackptrs||5.007003| -debstack||5.007003| -debug_start_match||| -deb||5.007003|v -defelem_target||| -del_sv||| -delimcpy_no_escape|||n -delimcpy||5.004000|n -despatch_signals||5.007001| -destroy_matcher||| -die_nocontext|||vn -die_sv|5.013001||p -die_unwind||| -die|||v -dirp_dup||| -div128||| -djSP||| -do_aexec5||| -do_aexec||| -do_aspawn||| -do_binmode||5.004050| -do_chomp||| -do_close||| -do_delete_local||| -do_dump_pad||| -do_eof||| -do_exec3||| -do_exec||| -do_gv_dump||5.006000| -do_gvgv_dump||5.006000| -do_hv_dump||5.006000| -do_ipcctl||| -do_ipcget||| -do_join||| -do_magic_dump||5.006000| -do_msgrcv||| -do_msgsnd||| -do_ncmp||| -do_oddball||| -do_op_dump||5.006000| -do_open9||5.006000| -do_openn||5.007001| -do_open||5.003070| -do_pmop_dump||5.006000| -do_print||| -do_readline||| -do_seek||| -do_semop||| -do_shmio||| -do_smartmatch||| -do_spawn_nowait||| -do_spawn||| -do_sprintf||| -do_sv_dump||5.006000| -do_sysseek||| -do_tell||| -do_trans_complex_utf8||| -do_trans_complex||| -do_trans_count_utf8||| -do_trans_count||| -do_trans_simple_utf8||| -do_trans_simple||| -do_trans||| -do_vecget||| -do_vecset||| -do_vop||| -docatch||| -does_utf8_overflow|||n -doeval_compile||| -dofile||| -dofindlabel||| -doform||| -doing_taint||5.008001|n -dooneliner||| -doopen_pm||| -doparseform||| -dopoptoeval||| -dopoptogivenfor||| -dopoptolabel||| -dopoptoloop||| -dopoptosub_at||| -dopoptowhen||| -doref||5.009003| -dounwind||| -dowantarray||| -drand48_init_r|||n -drand48_r|||n -dtrace_probe_call||| -dtrace_probe_load||| -dtrace_probe_op||| -dtrace_probe_phase||| -dump_all_perl||| -dump_all||5.006000| -dump_c_backtrace||| -dump_eval||5.006000| -dump_exec_pos||| -dump_form||5.006000| -dump_indent||5.006000|v -dump_mstats||| -dump_packsubs_perl||| -dump_packsubs||5.006000| -dump_regex_sets_structures||| -dump_sub_perl||| -dump_sub||5.006000| -dump_sv_child||| -dump_trie_interim_list||| -dump_trie_interim_table||| -dump_trie||| -dump_vindent||5.006000| -dumpuntil||| -dup_attrlist||| -dup_warnings||| -edit_distance|||n -emulate_setlocale|||n -eval_pv|5.006000||p -eval_sv|5.006000||p -exec_failed||| -expect_number||| -fbm_compile||5.005000| -fbm_instr||5.005000| -feature_is_enabled||| -filter_add||| -filter_del||| -filter_gets||| -filter_read||| -finalize_optree||| -finalize_op||| -find_and_forget_pmops||| -find_array_subscript||| -find_beginning||| -find_byclass||| -find_default_stash||| -find_hash_subscript||| -find_in_my_stash||| -find_lexical_cv||| -find_next_masked|||n -find_runcv_where||| -find_runcv||5.008001| -find_rundefsv||5.013002| -find_script||| -find_span_end_mask|||n -find_span_end|||n -first_symbol|||n -fixup_errno_string||| -foldEQ_latin1_s2_folded|||n -foldEQ_latin1||5.013008|n -foldEQ_locale||5.013002|n -foldEQ_utf8||5.013002| -foldEQ||5.013002|n -fold_constants||| -forbid_setid||| -force_ident_maybe_lex||| -force_ident||| -force_list||| -force_next||| -force_strict_version||| -force_version||| -force_word||| -forget_pmop||| -form_nocontext|||vn -form||5.004000|v -fp_dup||| -fprintf_nocontext|||vn -free_c_backtrace||| -free_global_struct||| -free_tied_hv_pool||| -free_tmps||| -gen_constant_list||| -get_ANYOFM_contents||| -get_ANYOF_cp_list_for_ssc||| -get_and_check_backslash_N_name_wrapper||| -get_and_check_backslash_N_name||| -get_aux_mg||| -get_av|5.006000||p -get_c_backtrace_dump||| -get_c_backtrace||| -get_context||5.006000|n -get_cvn_flags||| -get_cvs|5.011000||p -get_cv|5.006000||p -get_db_sub||| -get_debug_opts||| -get_hash_seed||| -get_hv|5.006000||p -get_mstats||| -get_no_modify||| -get_num||| -get_op_descs||5.005000| -get_op_names||5.005000| -get_opargs||| -get_ppaddr||5.006000| -get_sv|5.006000||p -get_vtbl||5.005030| -getcwd_sv||5.007002| -getenv_len||| -glob_2number||| -glob_assign_glob||| -gp_dup||| -gp_free||| -gp_ref||| -grok_atoUV|||n -grok_bin|5.007003||p -grok_bslash_N||| -grok_hex|5.007003||p -grok_infnan||5.021004| -grok_number_flags||5.021002| -grok_number|5.007002||p -grok_numeric_radix|5.007002||p -grok_oct|5.007003||p -group_end||| -gv_AVadd||| -gv_HVadd||| -gv_IOadd||| -gv_SVadd||| -gv_add_by_type||5.011000| -gv_autoload4||5.004000| -gv_autoload_pvn||5.015004| -gv_autoload_pv||5.015004| -gv_autoload_sv||5.015004| -gv_check||| -gv_const_sv||5.009003| -gv_dump||5.006000| -gv_efullname3||5.003070| -gv_efullname4||5.006001| -gv_efullname||| -gv_fetchfile_flags||5.009005| -gv_fetchfile||| -gv_fetchmeth_autoload||5.007003| -gv_fetchmeth_internal||| -gv_fetchmeth_pv_autoload||5.015004| -gv_fetchmeth_pvn_autoload||5.015004| -gv_fetchmeth_pvn||5.015004| -gv_fetchmeth_pv||5.015004| -gv_fetchmeth_sv_autoload||5.015004| -gv_fetchmeth_sv||5.015004| -gv_fetchmethod_autoload||5.004000| -gv_fetchmethod||| -gv_fetchmeth||| -gv_fetchpvn_flags|5.009002||p -gv_fetchpvs|5.009004||p -gv_fetchpv||| -gv_fetchsv||| -gv_fullname3||5.003070| -gv_fullname4||5.006001| -gv_fullname||| -gv_handler||5.007001| -gv_init_pvn||| -gv_init_pv||5.015004| -gv_init_svtype||| -gv_init_sv||5.015004| -gv_init||| -gv_is_in_main||| -gv_magicalize_isa||| -gv_magicalize||| -gv_name_set||5.009004| -gv_override||| -gv_setref||| -gv_stashpvn_internal||| -gv_stashpvn|5.003070||p -gv_stashpvs|5.009003||p -gv_stashpv||| -gv_stashsvpvn_cached||| -gv_stashsv||| -handle_named_backref||| -handle_possible_posix||| -handle_regex_sets||| -handle_user_defined_property||| -he_dup||| -hek_dup||| -hfree_next_entry||| -hsplit||| -hv_assert||| -hv_auxinit_internal|||n -hv_auxinit||| -hv_clear_placeholders||5.009001| -hv_clear||| -hv_common_key_len||5.010000| -hv_common||5.010000| -hv_copy_hints_hv||5.009004| -hv_delayfree_ent||5.004000| -hv_delete_ent||5.003070| -hv_delete||| -hv_eiter_p||5.009003| -hv_eiter_set||5.009003| -hv_ename_add||| -hv_ename_delete||| -hv_exists_ent||5.003070| -hv_exists||| -hv_fetch_ent||5.003070| -hv_fetchs|5.009003||p -hv_fetch||| -hv_fill||5.013002| -hv_free_ent_ret||| -hv_free_entries||| -hv_free_ent||5.004000| -hv_iterinit||| -hv_iterkeysv||5.003070| -hv_iterkey||| -hv_iternextsv||| -hv_iternext||| -hv_iterval||| -hv_ksplit||5.003070| -hv_magic_check|||n -hv_magic||| -hv_name_set||5.009003| -hv_notallowed||| -hv_placeholders_get||5.009003| -hv_placeholders_p||| -hv_placeholders_set||5.009003| -hv_pushkv||| -hv_rand_set||5.018000| -hv_riter_p||5.009003| -hv_riter_set||5.009003| -hv_scalar||5.009001| -hv_store_ent||5.003070| -hv_stores|5.009004||p -hv_store||| -hv_undef_flags||| -hv_undef||| -ibcmp_locale||5.004000| -ibcmp_utf8||5.007003| -ibcmp||| -incline||| -incpush_if_exists||| -incpush_use_sep||| -incpush||| -ingroup||| -init_argv_symbols||| -init_constants||| -init_dbargs||| -init_debugger||| -init_global_struct||| -init_ids||| -init_interp||| -init_main_stash||| -init_named_cv||| -init_perllib||| -init_postdump_symbols||| -init_predump_symbols||| -init_stacks||5.005000| -init_tm||5.007002| -init_uniprops||| -inplace_aassign||| -instr|||n -intro_my||5.004000| -intuit_method||| -intuit_more||| -invert||| -invoke_exception_hook||| -io_close||| -isALNUMC_A|||p -isALNUMC|5.006000||p -isALNUM_A|||p -isALNUM|||p -isALPHANUMERIC_A|||p -isALPHANUMERIC|5.017008|5.017008|p -isALPHA_A|||p -isALPHA|||p -isASCII_A|||p -isASCII|5.006000||p -isBLANK_A|||p -isBLANK|5.006001||p -isC9_STRICT_UTF8_CHAR|||n -isCNTRL_A|||p -isCNTRL|5.006000||p -isDIGIT_A|||p -isDIGIT|||p -isFF_OVERLONG|||n -isFOO_utf8_lc||| -isGCB||| -isGRAPH_A|||p -isGRAPH|5.006000||p -isIDCONT_A|||p -isIDCONT|5.017008|5.017008|p -isIDFIRST_A|||p -isIDFIRST|||p -isLB||| -isLOWER_A|||p -isLOWER|||p -isOCTAL_A|||p -isOCTAL|5.013005|5.013005|p -isPRINT_A|||p -isPRINT|5.004000||p -isPSXSPC_A|||p -isPSXSPC|5.006001||p -isPUNCT_A|||p -isPUNCT|5.006000||p -isSB||| -isSCRIPT_RUN||| -isSPACE_A|||p -isSPACE|||p -isSTRICT_UTF8_CHAR|||n -isUPPER_A|||p -isUPPER|||p -isUTF8_CHAR_flags||| -isUTF8_CHAR||5.021001|n -isWB||| -isWORDCHAR_A|||p -isWORDCHAR|5.013006|5.013006|p -isXDIGIT_A|||p -isXDIGIT|5.006000||p -is_an_int||| -is_ascii_string||5.011000|n -is_c9strict_utf8_string_loclen|||n -is_c9strict_utf8_string_loc|||n -is_c9strict_utf8_string|||n -is_handle_constructor|||n -is_invariant_string||5.021007|n -is_lvalue_sub||5.007001| -is_safe_syscall||5.019004| -is_ssc_worth_it|||n -is_strict_utf8_string_loclen|||n -is_strict_utf8_string_loc|||n -is_strict_utf8_string|||n -is_utf8_char_buf||5.015008|n -is_utf8_common_with_len||| -is_utf8_common||| -is_utf8_cp_above_31_bits|||n -is_utf8_fixed_width_buf_flags|||n -is_utf8_fixed_width_buf_loc_flags|||n -is_utf8_fixed_width_buf_loclen_flags|||n -is_utf8_invariant_string_loc|||n -is_utf8_invariant_string|||n -is_utf8_non_invariant_string|||n -is_utf8_overlong_given_start_byte_ok|||n -is_utf8_string_flags|||n -is_utf8_string_loc_flags|||n -is_utf8_string_loclen_flags|||n -is_utf8_string_loclen||5.009003|n -is_utf8_string_loc||5.008001|n -is_utf8_string||5.006001|n -is_utf8_valid_partial_char_flags|||n -is_utf8_valid_partial_char|||n -isa_lookup||| -isinfnansv||| -isinfnan||5.021004|n -items|||n -ix|||n -jmaybe||| -join_exact||| -keyword_plugin_standard||| -keyword||| -leave_scope||| -lex_stuff_pvs||5.013005| -listkids||| -list||| -load_module_nocontext|||vn -load_module|5.006000||pv -localize||| -looks_like_bool||| -looks_like_number||| -lop||| -mPUSHi|5.009002||p -mPUSHn|5.009002||p -mPUSHp|5.009002||p -mPUSHs|5.010001||p -mPUSHu|5.009002||p -mXPUSHi|5.009002||p -mXPUSHn|5.009002||p -mXPUSHp|5.009002||p -mXPUSHs|5.010001||p -mXPUSHu|5.009002||p -magic_clear_all_env||| -magic_cleararylen_p||| -magic_clearenv||| -magic_clearhints||| -magic_clearhint||| -magic_clearisa||| -magic_clearpack||| -magic_clearsig||| -magic_copycallchecker||| -magic_dump||5.006000| -magic_existspack||| -magic_freearylen_p||| -magic_freeovrld||| -magic_getarylen||| -magic_getdebugvar||| -magic_getdefelem||| -magic_getnkeys||| -magic_getpack||| -magic_getpos||| -magic_getsig||| -magic_getsubstr||| -magic_gettaint||| -magic_getuvar||| -magic_getvec||| -magic_get||| -magic_killbackrefs||| -magic_methcall1||| -magic_methcall|||v -magic_methpack||| -magic_nextpack||| -magic_regdata_cnt||| -magic_regdatum_get||| -magic_regdatum_set||| -magic_scalarpack||| -magic_set_all_env||| -magic_setarylen||| -magic_setcollxfrm||| -magic_setdbline||| -magic_setdebugvar||| -magic_setdefelem||| -magic_setenv||| -magic_sethint||| -magic_setisa||| -magic_setlvref||| -magic_setmglob||| -magic_setnkeys||| -magic_setnonelem||| -magic_setpack||| -magic_setpos||| -magic_setregexp||| -magic_setsig||| -magic_setsubstr||| -magic_settaint||| -magic_setutf8||| -magic_setuvar||| -magic_setvec||| -magic_set||| -magic_sizepack||| -magic_wipepack||| -make_matcher||| -make_trie||| -malloc_good_size|||n -malloced_size|||n -malloc||5.007002|n -markstack_grow||5.021001| -matcher_matches_sv||| -maybe_multimagic_gv||| -mayberelocate||| -measure_struct||| -memEQs|5.009005||p -memEQ|5.004000||p -memNEs|5.009005||p -memNE|5.004000||p -mem_collxfrm||| -mem_log_alloc|||n -mem_log_common|||n -mem_log_free|||n -mem_log_realloc|||n -mess_alloc||| -mess_nocontext|||pvn -mess_sv|5.013001||p -mess|5.006000||pv -mfree||5.007002|n -mg_clear||| -mg_copy||| -mg_dup||| -mg_find_mglob||| -mg_findext|5.013008||pn -mg_find|||n -mg_free_type||5.013006| -mg_freeext||| -mg_free||| -mg_get||| -mg_localize||| -mg_magical|||n -mg_set||| -mg_size||5.005000| -mini_mktime||5.007002|n -minus_v||| -missingterm||| -mode_from_discipline||| -modkids||| -more_bodies||| -more_sv||| -moreswitches||| -move_proto_attr||| -mro_clean_isarev||| -mro_gather_and_rename||| -mro_get_from_name||5.010001| -mro_get_linear_isa_dfs||| -mro_get_linear_isa||5.009005| -mro_get_private_data||5.010001| -mro_isa_changed_in||| -mro_meta_dup||| -mro_meta_init||| -mro_method_changed_in||5.009005| -mro_package_moved||| -mro_register||5.010001| -mro_set_mro||5.010001| -mro_set_private_data||5.010001| -mul128||| -multiconcat_stringify||| -multideref_stringify||| -my_atof2||5.007002| -my_atof3||| -my_atof||5.006000| -my_attrs||| -my_bytes_to_utf8|||n -my_chsize||| -my_clearenv||| -my_cxt_index||| -my_cxt_init||| -my_dirfd||5.009005|n -my_exit_jump||| -my_exit||| -my_failure_exit||5.004000| -my_fflush_all||5.006000| -my_fork||5.007003|n -my_kid||| -my_lstat_flags||| -my_lstat||5.024000| -my_memrchr|||n -my_mkostemp|||n -my_mkstemp_cloexec|||n -my_mkstemp|||n -my_nl_langinfo|||n -my_pclose||5.003070| -my_popen_list||5.007001| -my_popen||5.003070| -my_setenv||| -my_snprintf|5.009004||pvn -my_socketpair||5.007003|n -my_sprintf|5.009003||pvn -my_stat_flags||| -my_stat||5.024000| -my_strerror||| -my_strftime||5.007002| -my_strlcat|5.009004||pn -my_strlcpy|5.009004||pn -my_strnlen|||pn -my_strtod|||n -my_unexec||| -my_vsnprintf||5.009004|n -need_utf8|||n -newANONATTRSUB||5.006000| -newANONHASH||| -newANONLIST||| -newANONSUB||| -newASSIGNOP||| -newATTRSUB_x||| -newATTRSUB||5.006000| -newAVREF||| -newAV||| -newBINOP||| -newCONDOP||| -newCONSTSUB_flags||5.015006| -newCONSTSUB|5.004050||p -newCVREF||| -newDEFSVOP||5.021006| -newFORM||| -newFOROP||5.013007| -newGIVENOP||5.009003| -newGIVWHENOP||| -newGVOP||| -newGVREF||| -newGVgen_flags||5.015004| -newGVgen||| -newHVREF||| -newHVhv||5.005000| -newHV||| -newIO||| -newLISTOP||| -newLOGOP||| -newLOOPEX||| -newLOOPOP||| -newMETHOP_internal||| -newMETHOP_named||5.021005| -newMETHOP||5.021005| -newMYSUB||5.017004| -newNULLLIST||| -newOP||| -newPADOP||| -newPMOP||| -newPROG||| -newPVOP||| -newRANGE||| -newRV_inc|5.004000||p -newRV_noinc|5.004000||p -newRV||| -newSLICEOP||| -newSTATEOP||| -newSTUB||| -newSUB||| -newSVOP||| -newSVREF||| -newSV_type|5.009005||p -newSVavdefelem||| -newSVhek||5.009003| -newSViv||| -newSVnv||| -newSVpadname||5.017004| -newSVpv_share||5.013006| -newSVpvf_nocontext|||vn -newSVpvf||5.004000|v -newSVpvn_flags|5.010001||p -newSVpvn_share|5.007001||p -newSVpvn_utf8|5.010001||p -newSVpvn|5.004050||p -newSVpvs_flags|5.010001||p -newSVpvs_share|5.009003||p -newSVpvs|5.009003||p -newSVpv||| -newSVrv||| -newSVsv_flags||| -newSVsv_nomg||| -newSVsv||| -newSVuv|5.006000||p -newSV||| -newUNOP_AUX||5.021007| -newUNOP||| -newWHENOP||5.009003| -newWHILEOP||5.013007| -newXS_deffile||| -newXS_len_flags||| -newXSproto||5.006000| -newXS||5.006000| -new_collate||| -new_constant||| -new_ctype||| -new_he||| -new_logop||| -new_msg_hv||| -new_numeric||| -new_regcurly|||n -new_stackinfo||5.005000| -new_version||5.009000| -next_symbol||| -nextargv||| -nextchar||| -ninstr|||n -no_bareword_allowed||| -no_fh_allowed||| -no_op||| -noperl_die|||vn -not_a_number||| -not_incrementable||| -nothreadhook||5.008000| -notify_parser_that_changed_to_utf8||| -nuke_stacks||| -num_overflow|||n -oopsAV||| -oopsHV||| -op_append_elem||5.013006| -op_append_list||5.013006| -op_class||| -op_clear||| -op_contextualize||5.013006| -op_convert_list||5.021006| -op_dump||5.006000| -op_free||| -op_integerize||| -op_linklist||5.013006| -op_lvalue_flags||| -op_null||5.007002| -op_parent|||n -op_prepend_elem||5.013006| -op_refcnt_lock||5.009002| -op_refcnt_unlock||5.009002| -op_relocate_sv||| -op_sibling_splice||5.021002|n -op_std_init||| -open_script||| -openn_cleanup||| -openn_setup||| -opmethod_stash||| -opslab_force_free||| -opslab_free_nopad||| -opslab_free||| -optimize_optree||| -optimize_op||| -output_posix_warnings||| -pMY_CXT_|5.007003||p -pMY_CXT|5.007003||p -pTHX_|5.006000||p -pTHX|5.006000||p -packWARN|5.007003||p -pack_cat||5.007003| -pack_rec||| -package_version||| -package||| -packlist||5.008001| -pad_add_anon||5.008001| -pad_add_name_pvn||5.015001| -pad_add_name_pvs||5.015001| -pad_add_name_pv||5.015001| -pad_add_name_sv||5.015001| -pad_add_weakref||| -pad_alloc_name||| -pad_block_start||| -pad_check_dup||| -pad_compname_type||5.009003| -pad_findlex||| -pad_findmy_pvn||5.015001| -pad_findmy_pvs||5.015001| -pad_findmy_pv||5.015001| -pad_findmy_sv||5.015001| -pad_fixup_inner_anons||| -pad_free||| -pad_leavemy||| -pad_new||5.008001| -pad_push||| -pad_reset||| -pad_setsv||| -pad_sv||| -pad_swipe||| -padlist_dup||| -padlist_store||| -padname_dup||| -padname_free||| -padnamelist_dup||| -padnamelist_free||| -parse_body||| -parse_gv_stash_name||| -parse_ident||| -parse_lparen_question_flags||| -parse_unicode_opts||| -parse_uniprop_string||| -parser_dup||| -parser_free_nexttoke_ops||| -parser_free||| -path_is_searchable|||n -peep||| -pending_ident||| -perl_alloc_using|||n -perl_alloc|||n -perl_clone_using|||n -perl_clone|||n -perl_construct|||n -perl_destruct||5.007003|n -perl_free|||n -perl_parse||5.006000|n -perl_run|||n -pidgone||| -pm_description||| -pmop_dump||5.006000| -pmruntime||| -pmtrans||| -pop_scope||| -populate_ANYOF_from_invlist||| -populate_isa|||v -pregcomp||5.009005| -pregexec||| -pregfree2||5.011000| -pregfree||| -prescan_version||5.011004| -print_bytes_for_locale||| -print_collxfrm_input_and_return||| -printbuf||| -printf_nocontext|||vn -process_special_blocks||| -ptr_hash|||n -ptr_table_fetch||5.009005| -ptr_table_find|||n -ptr_table_free||5.009005| -ptr_table_new||5.009005| -ptr_table_split||5.009005| -ptr_table_store||5.009005| -push_scope||| -put_charclass_bitmap_innards_common||| -put_charclass_bitmap_innards_invlist||| -put_charclass_bitmap_innards||| -put_code_point||| -put_range||| -pv_display|5.006000||p -pv_escape|5.009004||p -pv_pretty|5.009004||p -pv_uni_display||5.007003| -qerror||| -quadmath_format_needed|||n -quadmath_format_single|||n -re_compile||5.009005| -re_croak2||| -re_dup_guts||| -re_exec_indentf|||v -re_indentf|||v -re_intuit_start||5.019001| -re_intuit_string||5.006000| -re_op_compile||| -re_printf|||v -realloc||5.007002|n -reentrant_free||5.024000| -reentrant_init||5.024000| -reentrant_retry||5.024000|vn -reentrant_size||5.024000| -ref_array_or_hash||| -refcounted_he_chain_2hv||| -refcounted_he_fetch_pvn||| -refcounted_he_fetch_pvs||| -refcounted_he_fetch_pv||| -refcounted_he_fetch_sv||| -refcounted_he_free||| -refcounted_he_inc||| -refcounted_he_new_pvn||| -refcounted_he_new_pvs||| -refcounted_he_new_pv||| -refcounted_he_new_sv||| -refcounted_he_value||| -refkids||| -refto||| -ref||5.024000| -reg2Lanode||| -reg_check_named_buff_matched|||n -reg_named_buff_all||5.009005| -reg_named_buff_exists||5.009005| -reg_named_buff_fetch||5.009005| -reg_named_buff_firstkey||5.009005| -reg_named_buff_iter||| -reg_named_buff_nextkey||5.009005| -reg_named_buff_scalar||5.009005| -reg_named_buff||| -reg_node||| -reg_numbered_buff_fetch||| -reg_numbered_buff_length||| -reg_numbered_buff_store||| -reg_qr_package||| -reg_scan_name||| -reg_skipcomment|||n -reg_temp_copy||| -reganode||| -regatom||| -regbranch||| -regclass||| -regcp_restore||| -regcppop||| -regcppush||| -regcurly|||n -regdump_extflags||| -regdump_intflags||| -regdump||5.005000| -regdupe_internal||| -regex_set_precedence|||n -regexec_flags||5.005000| -regfree_internal||5.009005| -reghop3|||n -reghop4|||n -reghopmaybe3|||n -reginclass||| -reginitcolors||5.006000| -reginsert||| -regmatch||| -regnext||5.005000| -regnode_guts||| -regpiece||| -regprop||| -regrepeat||| -regtail_study||| -regtail||| -regtry||| -reg||| -repeatcpy|||n -report_evil_fh||| -report_redefined_cv||| -report_uninit||| -report_wrongway_fh||| -require_pv||5.006000| -require_tie_mod||| -restore_magic||| -restore_switched_locale||| -rninstr|||n -rpeep||| -rsignal_restore||| -rsignal_save||| -rsignal_state||5.004000| -rsignal||5.004000| -run_body||| -run_user_filter||| -runops_debug||5.005000| -runops_standard||5.005000| -rv2cv_op_cv||5.013006| -rvpv_dup||| -rxres_free||| -rxres_restore||| -rxres_save||| -safesyscalloc||5.006000|n -safesysfree||5.006000|n -safesysmalloc||5.006000|n -safesysrealloc||5.006000|n -same_dirent||| -save_I16||5.004000| -save_I32||| -save_I8||5.006000| -save_adelete||5.011000| -save_aelem_flags||5.011000| -save_aelem||5.004050| -save_alloc||5.006000| -save_aptr||| -save_ary||| -save_bool||5.008001| -save_clearsv||| -save_delete||| -save_destructor_x||5.006000| -save_destructor||5.006000| -save_freeop||| -save_freepv||| -save_freesv||| -save_generic_pvref||5.006001| -save_generic_svref||5.005030| -save_gp||5.004000| -save_hash||| -save_hdelete||5.011000| -save_hek_flags|||n -save_helem_flags||5.011000| -save_helem||5.004050| -save_hints||5.010001| -save_hptr||| -save_int||| -save_item||| -save_iv||5.005000| -save_lines||| -save_list||| -save_long||| -save_magic_flags||| -save_mortalizesv||5.007001| -save_nogv||| -save_op||5.005000| -save_padsv_and_mortalize||5.010001| -save_pptr||| -save_pushi32ptr||5.010001| -save_pushptri32ptr||| -save_pushptrptr||5.010001| -save_pushptr||5.010001| -save_re_context||5.006000| -save_scalar_at||| -save_scalar||| -save_set_svflags||5.009000| -save_shared_pvref||5.007003| -save_sptr||| -save_strlen||| -save_svref||| -save_to_buffer|||n -save_vptr||5.006000| -savepvn||| -savepvs||5.009003| -savepv||| -savesharedpvn||5.009005| -savesharedpvs||5.013006| -savesharedpv||5.007003| -savesharedsvpv||5.013006| -savestack_grow_cnt||5.008001| -savestack_grow||| -savesvpv||5.009002| -sawparens||| -scalar_mod_type|||n -scalarboolean||| -scalarkids||| -scalarseq||| -scalarvoid||| -scalar||| -scan_bin||5.006000| -scan_commit||| -scan_const||| -scan_formline||| -scan_heredoc||| -scan_hex||| -scan_ident||| -scan_inputsymbol||| -scan_num||5.007001| -scan_oct||| -scan_pat||| -scan_subst||| -scan_trans||| -scan_version||5.009001| -scan_vstring||5.009005| -search_const||| -seed||5.008001| -sequence_num||| -set_ANYOF_arg||| -set_caret_X||| -set_context||5.006000|n -set_numeric_radix||5.006000| -set_numeric_standard||5.006000| -set_numeric_underlying||| -set_padlist|||n -set_regex_pv||| -setdefout||| -setfd_cloexec_for_nonsysfd||| -setfd_cloexec_or_inhexec_by_sysfdness||| -setfd_cloexec|||n -setfd_inhexec_for_sysfd||| -setfd_inhexec|||n -setlocale_debug_string|||n -share_hek_flags||| -share_hek||5.004000| -should_warn_nl|||n -si_dup||| -sighandler|||n -simplify_sort||| -skip_to_be_ignored_text||| -softref2xv||| -sortcv_stacked||| -sortcv_xsub||| -sortcv||| -sortsv_flags||5.009003| -sortsv||5.007003| -space_join_names_mortal||| -ss_dup||| -ssc_add_range||| -ssc_and||| -ssc_anything||| -ssc_clear_locale|||n -ssc_cp_and||| -ssc_finalize||| -ssc_init||| -ssc_intersection||| -ssc_is_anything|||n -ssc_is_cp_posixl_init|||n -ssc_or||| -ssc_union||| -stack_grow||| -start_subparse||5.004000| -stdize_locale||| -strEQ||| -strGE||| -strGT||| -strLE||| -strLT||| -strNE||| -str_to_version||5.006000| -strip_return||| -strnEQ||| -strnNE||| -study_chunk||| -sub_crush_depth||| -sublex_done||| -sublex_push||| -sublex_start||| -sv_2bool_flags||5.013006| -sv_2bool||| -sv_2cv||| -sv_2io||| -sv_2iuv_common||| -sv_2iuv_non_preserve||| -sv_2iv_flags||5.009001| -sv_2iv||| -sv_2mortal||| -sv_2nv_flags||5.013001| -sv_2pv_flags|5.007002||p -sv_2pv_nolen|5.006000||p -sv_2pvbyte_nolen|5.006000||p -sv_2pvbyte|5.006000||p -sv_2pvutf8_nolen||5.006000| -sv_2pvutf8||5.006000| -sv_2pv||| -sv_2uv_flags||5.009001| -sv_2uv|5.004000||p -sv_add_arena||| -sv_add_backref||| -sv_backoff|||n -sv_bless||| -sv_buf_to_ro||| -sv_buf_to_rw||| -sv_cat_decode||5.008001| -sv_catpv_flags||5.013006| -sv_catpv_mg|5.004050||p -sv_catpv_nomg||5.013006| -sv_catpvf_mg_nocontext|||pvn -sv_catpvf_mg|5.006000|5.004000|pv -sv_catpvf_nocontext|||vn -sv_catpvf||5.004000|v -sv_catpvn_flags||5.007002| -sv_catpvn_mg|5.004050||p -sv_catpvn_nomg|5.007002||p -sv_catpvn||| -sv_catpvs_flags||5.013006| -sv_catpvs_mg||5.013006| -sv_catpvs_nomg||5.013006| -sv_catpvs|5.009003||p -sv_catpv||| -sv_catsv_flags||5.007002| -sv_catsv_mg|5.004050||p -sv_catsv_nomg|5.007002||p -sv_catsv||| -sv_chop||| -sv_clean_all||| -sv_clean_objs||| -sv_clear||| -sv_cmp_flags||5.013006| -sv_cmp_locale_flags||5.013006| -sv_cmp_locale||5.004000| -sv_cmp||| -sv_collxfrm_flags||5.013006| -sv_collxfrm||| -sv_copypv_flags||5.017002| -sv_copypv_nomg||5.017002| -sv_copypv||| -sv_dec_nomg||5.013002| -sv_dec||| -sv_del_backref||| -sv_derived_from_pvn||5.015004| -sv_derived_from_pv||5.015004| -sv_derived_from_sv||5.015004| -sv_derived_from||5.004000| -sv_destroyable||5.010000| -sv_display||| -sv_does_pvn||5.015004| -sv_does_pv||5.015004| -sv_does_sv||5.015004| -sv_does||5.009004| -sv_dump||| -sv_dup_common||| -sv_dup_inc_multiple||| -sv_dup_inc||| -sv_dup||| -sv_eq_flags||5.013006| -sv_eq||| -sv_exp_grow||| -sv_force_normal_flags||5.007001| -sv_force_normal||5.006000| -sv_free_arenas||| -sv_free||| -sv_gets||5.003070| -sv_grow||| -sv_i_ncmp||| -sv_inc_nomg||5.013002| -sv_inc||| -sv_insert_flags||5.010001| -sv_insert||| -sv_isa||| -sv_isobject||| -sv_iv||5.005000| -sv_len_utf8_nomg||| -sv_len_utf8||5.006000| -sv_len||| -sv_magic_portable|5.024000|5.004000|p -sv_magicext_mglob||| -sv_magicext||5.007003| -sv_magic||| -sv_mortalcopy_flags||| -sv_mortalcopy||| -sv_ncmp||| -sv_newmortal||| -sv_newref||| -sv_nolocking||5.007003| -sv_nosharing||5.007003| -sv_nounlocking||| -sv_nv||5.005000| -sv_only_taint_gmagic|||n -sv_or_pv_pos_u2b||| -sv_peek||5.005000| -sv_pos_b2u_flags||5.019003| -sv_pos_b2u_midway||| -sv_pos_b2u||5.006000| -sv_pos_u2b_cached||| -sv_pos_u2b_flags||5.011005| -sv_pos_u2b_forwards|||n -sv_pos_u2b_midway|||n -sv_pos_u2b||5.006000| -sv_pvbyten_force||5.006000| -sv_pvbyten||5.006000| -sv_pvbyte||5.006000| -sv_pvn_force_flags|5.007002||p -sv_pvn_force||| -sv_pvn_nomg|5.007003|5.005000|p -sv_pvn||5.005000| -sv_pvutf8n_force||5.006000| -sv_pvutf8n||5.006000| -sv_pvutf8||5.006000| -sv_pv||5.006000| -sv_recode_to_utf8||5.007003| -sv_reftype||| -sv_ref||5.015004| -sv_replace||| -sv_report_used||| -sv_resetpvn||| -sv_reset||| -sv_rvunweaken||| -sv_rvweaken||5.006000| -sv_set_undef||| -sv_sethek||| -sv_setiv_mg|5.004050||p -sv_setiv||| -sv_setnv_mg|5.006000||p -sv_setnv||| -sv_setpv_bufsize||| -sv_setpv_mg|5.004050||p -sv_setpvf_mg_nocontext|||pvn -sv_setpvf_mg|5.006000|5.004000|pv -sv_setpvf_nocontext|||vn -sv_setpvf||5.004000|v -sv_setpviv_mg||5.008001| -sv_setpviv||5.008001| -sv_setpvn_mg|5.004050||p -sv_setpvn||| -sv_setpvs_mg||5.013006| -sv_setpvs|5.009004||p -sv_setpv||| -sv_setref_iv||| -sv_setref_nv||| -sv_setref_pvn||| -sv_setref_pvs||5.024000| -sv_setref_pv||| -sv_setref_uv||5.007001| -sv_setsv_flags||5.007002| -sv_setsv_mg|5.004050||p -sv_setsv_nomg|5.007002||p -sv_setsv||| -sv_setuv_mg|5.004050||p -sv_setuv|5.004000||p -sv_string_from_errnum||| -sv_tainted||5.004000| -sv_taint||5.004000| -sv_true||5.005000| -sv_unglob||| -sv_uni_display||5.007003| -sv_unmagicext|5.013008||p -sv_unmagic||| -sv_unref_flags||5.007001| -sv_unref||| -sv_untaint||5.004000| -sv_upgrade||| -sv_usepvn_flags||5.009004| -sv_usepvn_mg|5.004050||p -sv_usepvn||| -sv_utf8_decode||| -sv_utf8_downgrade||| -sv_utf8_encode||5.006000| -sv_utf8_upgrade_flags_grow||5.011000| -sv_utf8_upgrade_flags||5.007002| -sv_utf8_upgrade_nomg||5.007002| -sv_utf8_upgrade||5.007001| -sv_uv|5.005000||p -sv_vcatpvf_mg|5.006000|5.004000|p -sv_vcatpvfn_flags||5.017002| -sv_vcatpvfn||5.004000| -sv_vcatpvf|5.006000|5.004000|p -sv_vsetpvf_mg|5.006000|5.004000|p -sv_vsetpvfn||5.004000| -sv_vsetpvf|5.006000|5.004000|p -svtype||| -swallow_bom||| -swatch_get||| -switch_category_locale_to_template||| -switch_to_global_locale|||n -sync_locale||5.021004|n -sys_init3||5.010000|n -sys_init||5.010000|n -sys_intern_clear||| -sys_intern_dup||| -sys_intern_init||| -sys_term||5.010000|n -taint_env||| -taint_proper||| -tied_method|||v -tmps_grow_p||| -toFOLD_utf8_safe||| -toFOLD_utf8||5.019001| -toFOLD_uvchr||5.023009| -toFOLD||5.019001| -toLOWER_L1||5.019001| -toLOWER_LC||5.004000| -toLOWER_utf8_safe||| -toLOWER_utf8||5.015007| -toLOWER_uvchr||5.023009| -toLOWER||| -toTITLE_utf8_safe||| -toTITLE_utf8||5.015007| -toTITLE_uvchr||5.023009| -toTITLE||5.019001| -toUPPER_utf8_safe||| -toUPPER_utf8||5.015007| -toUPPER_uvchr||5.023009| -toUPPER||| -to_byte_substr||| -to_lower_latin1|||n -to_utf8_substr||| -tokenize_use||| -tokeq||| -tokereport||| -too_few_arguments_pv||| -too_many_arguments_pv||| -translate_substr_offsets|||n -traverse_op_tree||| -try_amagic_bin||| -try_amagic_un||| -turkic_fc||| -turkic_lc||| -turkic_uc||| -uiv_2buf|||n -unlnk||| -unpack_rec||| -unpack_str||5.007003| -unpackstring||5.008001| -unreferenced_to_tmp_stack||| -unshare_hek_or_pvn||| -unshare_hek||| -unsharepvn||5.003070| -unwind_handler_stack||| -update_debugger_info||| -upg_version||5.009005| -usage||| -utf16_textfilter||| -utf16_to_utf8_reversed||5.006001| -utf16_to_utf8||5.006001| -utf8_distance||5.006000| -utf8_hop_back|||n -utf8_hop_forward|||n -utf8_hop_safe|||n -utf8_hop||5.006000|n -utf8_length||5.007001| -utf8_mg_len_cache_update||| -utf8_mg_pos_cache_update||| -utf8_to_uvchr_buf|5.015009|5.015009|p -utf8_to_uvchr|||p -utf8n_to_uvchr_error|||n -utf8n_to_uvchr||5.007001|n -utf8n_to_uvuni||5.007001| -utilize||| -uvchr_to_utf8_flags||5.007003| -uvchr_to_utf8||5.007001| -uvoffuni_to_utf8_flags||5.019004| -uvuni_to_utf8_flags||5.007003| -uvuni_to_utf8||5.007001| -valid_utf8_to_uvchr|||n -validate_suid||| -variant_under_utf8_count|||n -varname||| -vcmp||5.009000| -vcroak||5.006000| -vdeb||5.007003| -vform||5.006000| -visit||| -vivify_defelem||| -vivify_ref||| -vload_module|5.006000||p -vmess|5.006000|5.006000|p -vnewSVpvf|5.006000|5.004000|p -vnormal||5.009002| -vnumify||5.009000| -vstringify||5.009000| -vverify||5.009003| -vwarner||5.006000| -vwarn||5.006000| -wait4pid||| -warn_nocontext|||pvn -warn_on_first_deprecated_use||| -warn_sv|5.013001||p -warner_nocontext|||vn -warner|5.006000|5.004000|pv -warn|||v -was_lvalue_sub||| -watch||| -whichsig_pvn||5.015004| -whichsig_pv||5.015004| -whichsig_sv||5.015004| -whichsig||| -win32_croak_not_implemented|||n -win32_setlocale||| -with_queued_errors||| -wrap_op_checker||5.015008| -write_to_stderr||| -xs_boot_epilog||| -xs_handshake|||vn -xs_version_bootcheck||| -yyerror_pvn||| -yyerror_pv||| -yyerror||| -yylex||| -yyparse||| -yyquit||| -yyunlex||| -yywarn||| -); - -if (exists $opt{'list-unsupported'}) { - my $f; - for $f (sort { lc $a cmp lc $b } keys %API) { - next unless $API{$f}{todo}; - print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n"; - } - exit 0; -} - -# Scan for possible replacement candidates - -my(%replace, %need, %hints, %warnings, %depends); -my $replace = 0; -my($hint, $define, $function); - -sub find_api -{ - my $code = shift; - $code =~ s{ - / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) - | "[^"\\]*(?:\\.[^"\\]*)*" - | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; - grep { exists $API{$_} } $code =~ /(\w+)/mg; -} - -while () { - if ($hint) { - my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; - if (m{^\s*\*\s(.*?)\s*$}) { - for (@{$hint->[1]}) { - $h->{$_} ||= ''; # suppress warning with older perls - $h->{$_} .= "$1\n"; - } - } - else { undef $hint } - } - - $hint = [$1, [split /,?\s+/, $2]] - if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}; - - if ($define) { - if ($define->[1] =~ /\\$/) { - $define->[1] .= $_; - } - else { - if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { - my @n = find_api($define->[1]); - push @{$depends{$define->[0]}}, @n if @n - } - undef $define; - } - } - - $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; - - if ($function) { - if (/^}/) { - if (exists $API{$function->[0]}) { - my @n = find_api($function->[1]); - push @{$depends{$function->[0]}}, @n if @n - } - undef $function; - } - else { - $function->[1] .= $_; - } - } - - $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; - - $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; - $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; - $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; - $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$}; - - if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { - my @deps = map { s/\s+//g; $_ } split /,/, $3; - my $d; - for $d (map { s/\s+//g; $_ } split /,/, $1) { - push @{$depends{$d}}, @deps; - } - } - - $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; -} - -for (values %depends) { - my %s; - $_ = [sort grep !$s{$_}++, @$_]; -} - -if (exists $opt{'api-info'}) { - my $f; - my $count = 0; - my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; - for $f (sort { lc $a cmp lc $b } keys %API) { - next unless $f =~ /$match/; - print "\n=== $f ===\n\n"; - my $info = 0; - if ($API{$f}{base} || $API{$f}{todo}) { - my $base = format_version($API{$f}{base} || $API{$f}{todo}); - print "Supported at least starting from perl-$base.\n"; - $info++; - } - if ($API{$f}{provided}) { - my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; - print "Support by $ppport provided back to perl-$todo.\n"; - print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; - print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; - print "\n$hints{$f}" if exists $hints{$f}; - print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; - $info++; - } - print "No portability information available.\n" unless $info; - $count++; - } - $count or print "Found no API matching '$opt{'api-info'}'."; - print "\n"; - exit 0; -} - -if (exists $opt{'list-provided'}) { - my $f; - for $f (sort { lc $a cmp lc $b } keys %API) { - next unless $API{$f}{provided}; - my @flags; - push @flags, 'explicit' if exists $need{$f}; - push @flags, 'depend' if exists $depends{$f}; - push @flags, 'hint' if exists $hints{$f}; - push @flags, 'warning' if exists $warnings{$f}; - my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; - print "$f$flags\n"; - } - exit 0; -} - -my @files; -my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); -my $srcext = join '|', map { quotemeta $_ } @srcext; - -if (@ARGV) { - my %seen; - for (@ARGV) { - if (-e) { - if (-f) { - push @files, $_ unless $seen{$_}++; - } - else { warn "'$_' is not a file.\n" } - } - else { - my @new = grep { -f } glob $_ - or warn "'$_' does not exist.\n"; - push @files, grep { !$seen{$_}++ } @new; - } - } -} -else { - eval { - require File::Find; - File::Find::find(sub { - $File::Find::name =~ /($srcext)$/i - and push @files, $File::Find::name; - }, '.'); - }; - if ($@) { - @files = map { glob "*$_" } @srcext; - } -} - -if (!@ARGV || $opt{filter}) { - my(@in, @out); - my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; - for (@files) { - my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; - push @{ $out ? \@out : \@in }, $_; - } - if (@ARGV && @out) { - warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); - } - @files = @in; -} - -die "No input files given!\n" unless @files; - -my(%files, %global, %revreplace); -%revreplace = reverse %replace; -my $filename; -my $patch_opened = 0; - -for $filename (@files) { - unless (open IN, "<$filename") { - warn "Unable to read from $filename: $!\n"; - next; - } - - info("Scanning $filename ..."); - - my $c = do { local $/; }; - close IN; - - my %file = (orig => $c, changes => 0); - - # Temporarily remove C/XS comments and strings from the code - my @ccom; - - $c =~ s{ - ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* - | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) - | ( ^$HS*\#[^\r\n]* - | "[^"\\]*(?:\\.[^"\\]*)*" - | '[^'\\]*(?:\\.[^'\\]*)*' - | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) - }{ defined $2 and push @ccom, $2; - defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; - - $file{ccom} = \@ccom; - $file{code} = $c; - $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; - - my $func; - - for $func (keys %API) { - my $match = $func; - $match .= "|$revreplace{$func}" if exists $revreplace{$func}; - if ($c =~ /\b(?:Perl_)?($match)\b/) { - $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func}; - $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; - if (exists $API{$func}{provided}) { - $file{uses_provided}{$func}++; - if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { - $file{uses}{$func}++; - my @deps = rec_depend($func); - if (@deps) { - $file{uses_deps}{$func} = \@deps; - for (@deps) { - $file{uses}{$_} = 0 unless exists $file{uses}{$_}; - } - } - for ($func, @deps) { - $file{needs}{$_} = 'static' if exists $need{$_}; - } - } - } - if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) { - if ($c =~ /\b$func\b/) { - $file{uses_todo}{$func}++; - } - } - } - } - - while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) { - if (exists $need{$2}) { - $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; - } - else { warning("Possibly wrong #define $1 in $filename") } - } - - for (qw(uses needs uses_todo needed_global needed_static)) { - for $func (keys %{$file{$_}}) { - push @{$global{$_}{$func}}, $filename; - } - } - - $files{$filename} = \%file; -} - -# Globally resolve NEED_'s -my $need; -for $need (keys %{$global{needs}}) { - if (@{$global{needs}{$need}} > 1) { - my @targets = @{$global{needs}{$need}}; - my @t = grep $files{$_}{needed_global}{$need}, @targets; - @targets = @t if @t; - @t = grep /\.xs$/i, @targets; - @targets = @t if @t; - my $target = shift @targets; - $files{$target}{needs}{$need} = 'global'; - for (@{$global{needs}{$need}}) { - $files{$_}{needs}{$need} = 'extern' if $_ ne $target; - } - } -} - -for $filename (@files) { - exists $files{$filename} or next; - - info("=== Analyzing $filename ==="); - - my %file = %{$files{$filename}}; - my $func; - my $c = $file{code}; - my $warnings = 0; - - for $func (sort keys %{$file{uses_Perl}}) { - if ($API{$func}{varargs}) { - unless ($API{$func}{nothxarg}) { - my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} - { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); - if ($changes) { - warning("Doesn't pass interpreter argument aTHX to Perl_$func"); - $file{changes} += $changes; - } - } - } - else { - warning("Uses Perl_$func instead of $func"); - $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*} - {$func$1(}g); - } - } - - for $func (sort keys %{$file{uses_replace}}) { - warning("Uses $func instead of $replace{$func}"); - $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); - } - - for $func (sort keys %{$file{uses_provided}}) { - if ($file{uses}{$func}) { - if (exists $file{uses_deps}{$func}) { - diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); - } - else { - diag("Uses $func"); - } - } - $warnings += hint($func); - } - - unless ($opt{quiet}) { - for $func (sort keys %{$file{uses_todo}}) { - print "*** WARNING: Uses $func, which may not be portable below perl ", - format_version($API{$func}{todo}), ", even with '$ppport'\n"; - $warnings++; - } - } - - for $func (sort keys %{$file{needed_static}}) { - my $message = ''; - if (not exists $file{uses}{$func}) { - $message = "No need to define NEED_$func if $func is never used"; - } - elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') { - $message = "No need to define NEED_$func when already needed globally"; - } - if ($message) { - diag($message); - $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg); - } - } - - for $func (sort keys %{$file{needed_global}}) { - my $message = ''; - if (not exists $global{uses}{$func}) { - $message = "No need to define NEED_${func}_GLOBAL if $func is never used"; - } - elsif (exists $file{needs}{$func}) { - if ($file{needs}{$func} eq 'extern') { - $message = "No need to define NEED_${func}_GLOBAL when already needed globally"; - } - elsif ($file{needs}{$func} eq 'static') { - $message = "No need to define NEED_${func}_GLOBAL when only used in this file"; - } - } - if ($message) { - diag($message); - $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg); - } - } - - $file{needs_inc_ppport} = keys %{$file{uses}}; - - if ($file{needs_inc_ppport}) { - my $pp = ''; - - for $func (sort keys %{$file{needs}}) { - my $type = $file{needs}{$func}; - next if $type eq 'extern'; - my $suffix = $type eq 'global' ? '_GLOBAL' : ''; - unless (exists $file{"needed_$type"}{$func}) { - if ($type eq 'global') { - diag("Files [@{$global{needs}{$func}}] need $func, adding global request"); - } - else { - diag("File needs $func, adding static request"); - } - $pp .= "#define NEED_$func$suffix\n"; - } - } - - if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) { - $pp = ''; - $file{changes}++; - } - - unless ($file{has_inc_ppport}) { - diag("Needs to include '$ppport'"); - $pp .= qq(#include "$ppport"\n) - } - - if ($pp) { - $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms) - || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m) - || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m) - || ($c =~ s/^/$pp/); - } - } - else { - if ($file{has_inc_ppport}) { - diag("No need to include '$ppport'"); - $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m); - } - } - - # put back in our C comments - my $ix; - my $cppc = 0; - my @ccom = @{$file{ccom}}; - for $ix (0 .. $#ccom) { - if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) { - $cppc++; - $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/; - } - else { - $c =~ s/$rccs$ix$rcce/$ccom[$ix]/; - } - } - - if ($cppc) { - my $s = $cppc != 1 ? 's' : ''; - warning("Uses $cppc C++ style comment$s, which is not portable"); - } - - my $s = $warnings != 1 ? 's' : ''; - my $warn = $warnings ? " ($warnings warning$s)" : ''; - info("Analysis completed$warn"); - - if ($file{changes}) { - if (exists $opt{copy}) { - my $newfile = "$filename$opt{copy}"; - if (-e $newfile) { - error("'$newfile' already exists, refusing to write copy of '$filename'"); - } - else { - local *F; - if (open F, ">$newfile") { - info("Writing copy of '$filename' with changes to '$newfile'"); - print F $c; - close F; - } - else { - error("Cannot open '$newfile' for writing: $!"); - } - } - } - elsif (exists $opt{patch} || $opt{changes}) { - if (exists $opt{patch}) { - unless ($patch_opened) { - if (open PATCH, ">$opt{patch}") { - $patch_opened = 1; - } - else { - error("Cannot open '$opt{patch}' for writing: $!"); - delete $opt{patch}; - $opt{changes} = 1; - goto fallback; - } - } - mydiff(\*PATCH, $filename, $c); - } - else { -fallback: - info("Suggested changes:"); - mydiff(\*STDOUT, $filename, $c); - } - } - else { - my $s = $file{changes} == 1 ? '' : 's'; - info("$file{changes} potentially required change$s detected"); - } - } - else { - info("Looks good"); - } -} - -close PATCH if $patch_opened; - -exit 0; - - -sub try_use { eval "use @_;"; return $@ eq '' } - -sub mydiff -{ - local *F = shift; - my($file, $str) = @_; - my $diff; - - if (exists $opt{diff}) { - $diff = run_diff($opt{diff}, $file, $str); - } - - if (!defined $diff and try_use('Text::Diff')) { - $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); - $diff = <

$tmp") { - print F $str; - close F; - - if (open F, "$prog $file $tmp |") { - while () { - s/\Q$tmp\E/$file.patched/; - $diff .= $_; - } - close F; - unlink $tmp; - return $diff; - } - - unlink $tmp; - } - else { - error("Cannot open '$tmp' for writing: $!"); - } - - return undef; -} - -sub rec_depend -{ - my($func, $seen) = @_; - return () unless exists $depends{$func}; - $seen = {%{$seen||{}}}; - return () if $seen->{$func}++; - my %s; - grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; -} - -sub parse_version -{ - my $ver = shift; - - if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { - return ($1, $2, $3); - } - elsif ($ver !~ /^\d+\.[\d_]+$/) { - die "cannot parse version '$ver'\n"; - } - - $ver =~ s/_//g; - $ver =~ s/$/000000/; - - my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; - - $v = int $v; - $s = int $s; - - if ($r < 5 || ($r == 5 && $v < 6)) { - if ($s % 10) { - die "cannot parse version '$ver'\n"; - } - } - - return ($r, $v, $s); -} - -sub format_version -{ - my $ver = shift; - - $ver =~ s/$/000000/; - my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; - - $v = int $v; - $s = int $s; - - if ($r < 5 || ($r == 5 && $v < 6)) { - if ($s % 10) { - die "invalid version '$ver'\n"; - } - $s /= 10; - - $ver = sprintf "%d.%03d", $r, $v; - $s > 0 and $ver .= sprintf "_%02d", $s; - - return $ver; - } - - return sprintf "%d.%d.%d", $r, $v, $s; -} - -sub info -{ - $opt{quiet} and return; - print @_, "\n"; -} - -sub diag -{ - $opt{quiet} and return; - $opt{diag} and print @_, "\n"; -} - -sub warning -{ - $opt{quiet} and return; - print "*** ", @_, "\n"; -} - -sub error -{ - print "*** ERROR: ", @_, "\n"; -} - -my %given_hints; -my %given_warnings; -sub hint -{ - $opt{quiet} and return; - my $func = shift; - my $rv = 0; - if (exists $warnings{$func} && !$given_warnings{$func}++) { - my $warn = $warnings{$func}; - $warn =~ s!^!*** !mg; - print "*** WARNING: $func\n", $warn; - $rv++; - } - if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { - my $hint = $hints{$func}; - $hint =~ s/^/ /mg; - print " --- hint for $func ---\n", $hint; - } - $rv; -} - -sub usage -{ - my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; - my %M = ( 'I' => '*' ); - $usage =~ s/^\s*perl\s+\S+/$^X $0/; - $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; - - print < }; - my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; - $copy =~ s/^(?=\S+)/ /gms; - $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; - $self =~ s/^SKIP.*(?=^__DATA__)/SKIP -if (\@ARGV && \$ARGV[0] eq '--unstrip') { - eval { require Devel::PPPort }; - \$@ and die "Cannot require Devel::PPPort, please install.\\n"; - if (eval \$Devel::PPPort::VERSION < $VERSION) { - die "$0 was originally generated with Devel::PPPort $VERSION.\\n" - . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" - . "Please install a newer version, or --unstrip will not work.\\n"; - } - Devel::PPPort::WriteFile(\$0); - exit 0; -} -print <$0" or die "cannot strip $0: $!\n"; - print OUT "$pl$c\n"; - - exit 0; -} - -__DATA__ -*/ - -#ifndef _P_P_PORTABILITY_H_ -#define _P_P_PORTABILITY_H_ - -#ifndef DPPP_NAMESPACE -# define DPPP_NAMESPACE DPPP_ -#endif - -#define DPPP_CAT2(x,y) CAT2(x,y) -#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name) - -#ifndef PERL_REVISION -# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) -# define PERL_PATCHLEVEL_H_IMPLICIT -# include -# endif -# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) -# include -# endif -# ifndef PERL_REVISION -# define PERL_REVISION (5) - /* Replace: 1 */ -# define PERL_VERSION PATCHLEVEL -# define PERL_SUBVERSION SUBVERSION - /* Replace PERL_PATCHLEVEL with PERL_VERSION */ - /* Replace: 0 */ -# endif -#endif - -#define D_PPP_DEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) -#define PERL_BCDVERSION ((D_PPP_DEC2BCD(PERL_REVISION)<<24)|(D_PPP_DEC2BCD(PERL_VERSION)<<12)|D_PPP_DEC2BCD(PERL_SUBVERSION)) - -/* It is very unlikely that anyone will try to use this with Perl 6 - (or greater), but who knows. - */ -#if PERL_REVISION != 5 -# error ppport.h only works with Perl version 5 -#endif /* PERL_REVISION != 5 */ -#ifndef dTHR -# define dTHR dNOOP -#endif -#ifndef dTHX -# define dTHX dNOOP -#endif - -#ifndef dTHXa -# define dTHXa(x) dNOOP -#endif -#ifndef pTHX -# define pTHX void -#endif - -#ifndef pTHX_ -# define pTHX_ -#endif - -#ifndef aTHX -# define aTHX -#endif - -#ifndef aTHX_ -# define aTHX_ -#endif - -#if (PERL_BCDVERSION < 0x5006000) -# ifdef USE_THREADS -# define aTHXR thr -# define aTHXR_ thr, -# else -# define aTHXR -# define aTHXR_ -# endif -# define dTHXR dTHR -#else -# define aTHXR aTHX -# define aTHXR_ aTHX_ -# define dTHXR dTHX -#endif -#ifndef dTHXoa -# define dTHXoa(x) dTHXa(x) -#endif - -#ifdef I_LIMITS -# include -#endif - -#ifndef PERL_UCHAR_MIN -# define PERL_UCHAR_MIN ((unsigned char)0) -#endif - -#ifndef PERL_UCHAR_MAX -# ifdef UCHAR_MAX -# define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) -# else -# ifdef MAXUCHAR -# define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) -# else -# define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) -# endif -# endif -#endif - -#ifndef PERL_USHORT_MIN -# define PERL_USHORT_MIN ((unsigned short)0) -#endif - -#ifndef PERL_USHORT_MAX -# ifdef USHORT_MAX -# define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) -# else -# ifdef MAXUSHORT -# define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) -# else -# ifdef USHRT_MAX -# define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) -# else -# define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) -# endif -# endif -# endif -#endif - -#ifndef PERL_SHORT_MAX -# ifdef SHORT_MAX -# define PERL_SHORT_MAX ((short)SHORT_MAX) -# else -# ifdef MAXSHORT /* Often used in */ -# define PERL_SHORT_MAX ((short)MAXSHORT) -# else -# ifdef SHRT_MAX -# define PERL_SHORT_MAX ((short)SHRT_MAX) -# else -# define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) -# endif -# endif -# endif -#endif - -#ifndef PERL_SHORT_MIN -# ifdef SHORT_MIN -# define PERL_SHORT_MIN ((short)SHORT_MIN) -# else -# ifdef MINSHORT -# define PERL_SHORT_MIN ((short)MINSHORT) -# else -# ifdef SHRT_MIN -# define PERL_SHORT_MIN ((short)SHRT_MIN) -# else -# define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) -# endif -# endif -# endif -#endif - -#ifndef PERL_UINT_MAX -# ifdef UINT_MAX -# define PERL_UINT_MAX ((unsigned int)UINT_MAX) -# else -# ifdef MAXUINT -# define PERL_UINT_MAX ((unsigned int)MAXUINT) -# else -# define PERL_UINT_MAX (~(unsigned int)0) -# endif -# endif -#endif - -#ifndef PERL_UINT_MIN -# define PERL_UINT_MIN ((unsigned int)0) -#endif - -#ifndef PERL_INT_MAX -# ifdef INT_MAX -# define PERL_INT_MAX ((int)INT_MAX) -# else -# ifdef MAXINT /* Often used in */ -# define PERL_INT_MAX ((int)MAXINT) -# else -# define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) -# endif -# endif -#endif - -#ifndef PERL_INT_MIN -# ifdef INT_MIN -# define PERL_INT_MIN ((int)INT_MIN) -# else -# ifdef MININT -# define PERL_INT_MIN ((int)MININT) -# else -# define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) -# endif -# endif -#endif - -#ifndef PERL_ULONG_MAX -# ifdef ULONG_MAX -# define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) -# else -# ifdef MAXULONG -# define PERL_ULONG_MAX ((unsigned long)MAXULONG) -# else -# define PERL_ULONG_MAX (~(unsigned long)0) -# endif -# endif -#endif - -#ifndef PERL_ULONG_MIN -# define PERL_ULONG_MIN ((unsigned long)0L) -#endif - -#ifndef PERL_LONG_MAX -# ifdef LONG_MAX -# define PERL_LONG_MAX ((long)LONG_MAX) -# else -# ifdef MAXLONG -# define PERL_LONG_MAX ((long)MAXLONG) -# else -# define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) -# endif -# endif -#endif - -#ifndef PERL_LONG_MIN -# ifdef LONG_MIN -# define PERL_LONG_MIN ((long)LONG_MIN) -# else -# ifdef MINLONG -# define PERL_LONG_MIN ((long)MINLONG) -# else -# define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) -# endif -# endif -#endif - -#if defined(HAS_QUAD) && (defined(convex) || defined(uts)) -# ifndef PERL_UQUAD_MAX -# ifdef ULONGLONG_MAX -# define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) -# else -# ifdef MAXULONGLONG -# define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) -# else -# define PERL_UQUAD_MAX (~(unsigned long long)0) -# endif -# endif -# endif - -# ifndef PERL_UQUAD_MIN -# define PERL_UQUAD_MIN ((unsigned long long)0L) -# endif - -# ifndef PERL_QUAD_MAX -# ifdef LONGLONG_MAX -# define PERL_QUAD_MAX ((long long)LONGLONG_MAX) -# else -# ifdef MAXLONGLONG -# define PERL_QUAD_MAX ((long long)MAXLONGLONG) -# else -# define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) -# endif -# endif -# endif - -# ifndef PERL_QUAD_MIN -# ifdef LONGLONG_MIN -# define PERL_QUAD_MIN ((long long)LONGLONG_MIN) -# else -# ifdef MINLONGLONG -# define PERL_QUAD_MIN ((long long)MINLONGLONG) -# else -# define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) -# endif -# endif -# endif -#endif - -/* This is based on code from 5.003 perl.h */ -#ifdef HAS_QUAD -# ifdef cray -#ifndef IVTYPE -# define IVTYPE int -#endif - -#ifndef IV_MIN -# define IV_MIN PERL_INT_MIN -#endif - -#ifndef IV_MAX -# define IV_MAX PERL_INT_MAX -#endif - -#ifndef UV_MIN -# define UV_MIN PERL_UINT_MIN -#endif - -#ifndef UV_MAX -# define UV_MAX PERL_UINT_MAX -#endif - -# ifdef INTSIZE -#ifndef IVSIZE -# define IVSIZE INTSIZE -#endif - -# endif -# else -# if defined(convex) || defined(uts) -#ifndef IVTYPE -# define IVTYPE long long -#endif - -#ifndef IV_MIN -# define IV_MIN PERL_QUAD_MIN -#endif - -#ifndef IV_MAX -# define IV_MAX PERL_QUAD_MAX -#endif - -#ifndef UV_MIN -# define UV_MIN PERL_UQUAD_MIN -#endif - -#ifndef UV_MAX -# define UV_MAX PERL_UQUAD_MAX -#endif - -# ifdef LONGLONGSIZE -#ifndef IVSIZE -# define IVSIZE LONGLONGSIZE -#endif - -# endif -# else -#ifndef IVTYPE -# define IVTYPE long -#endif - -#ifndef IV_MIN -# define IV_MIN PERL_LONG_MIN -#endif - -#ifndef IV_MAX -# define IV_MAX PERL_LONG_MAX -#endif - -#ifndef UV_MIN -# define UV_MIN PERL_ULONG_MIN -#endif - -#ifndef UV_MAX -# define UV_MAX PERL_ULONG_MAX -#endif - -# ifdef LONGSIZE -#ifndef IVSIZE -# define IVSIZE LONGSIZE -#endif - -# endif -# endif -# endif -#ifndef IVSIZE -# define IVSIZE 8 -#endif - -#ifndef LONGSIZE -# define LONGSIZE 8 -#endif - -#ifndef PERL_QUAD_MIN -# define PERL_QUAD_MIN IV_MIN -#endif - -#ifndef PERL_QUAD_MAX -# define PERL_QUAD_MAX IV_MAX -#endif - -#ifndef PERL_UQUAD_MIN -# define PERL_UQUAD_MIN UV_MIN -#endif - -#ifndef PERL_UQUAD_MAX -# define PERL_UQUAD_MAX UV_MAX -#endif - -#else -#ifndef IVTYPE -# define IVTYPE long -#endif - -#ifndef LONGSIZE -# define LONGSIZE 4 -#endif - -#ifndef IV_MIN -# define IV_MIN PERL_LONG_MIN -#endif - -#ifndef IV_MAX -# define IV_MAX PERL_LONG_MAX -#endif - -#ifndef UV_MIN -# define UV_MIN PERL_ULONG_MIN -#endif - -#ifndef UV_MAX -# define UV_MAX PERL_ULONG_MAX -#endif - -#endif - -#ifndef IVSIZE -# ifdef LONGSIZE -# define IVSIZE LONGSIZE -# else -# define IVSIZE 4 /* A bold guess, but the best we can make. */ -# endif -#endif -#ifndef UVTYPE -# define UVTYPE unsigned IVTYPE -#endif - -#ifndef UVSIZE -# define UVSIZE IVSIZE -#endif -#ifndef cBOOL -# define cBOOL(cbool) ((cbool) ? (bool)1 : (bool)0) -#endif - -#ifndef OpHAS_SIBLING -# define OpHAS_SIBLING(o) (cBOOL((o)->op_sibling)) -#endif - -#ifndef OpSIBLING -# define OpSIBLING(o) (0 + (o)->op_sibling) -#endif - -#ifndef OpMORESIB_set -# define OpMORESIB_set(o, sib) ((o)->op_sibling = (sib)) -#endif - -#ifndef OpLASTSIB_set -# define OpLASTSIB_set(o, parent) ((o)->op_sibling = NULL) -#endif - -#ifndef OpMAYBESIB_set -# define OpMAYBESIB_set(o, sib, parent) ((o)->op_sibling = (sib)) -#endif - -#ifndef HEf_SVKEY -# define HEf_SVKEY -2 -#endif - -#if defined(DEBUGGING) && !defined(__COVERITY__) -#ifndef __ASSERT_ -# define __ASSERT_(statement) assert(statement), -#endif - -#else -#ifndef __ASSERT_ -# define __ASSERT_(statement) -#endif - -#endif - -#ifndef SvRX -#if defined(NEED_SvRX) -static void * DPPP_(my_SvRX)(pTHX_ SV *rv); -static -#else -extern void * DPPP_(my_SvRX)(pTHX_ SV *rv); -#endif - -#if defined(NEED_SvRX) || defined(NEED_SvRX_GLOBAL) - -#ifdef SvRX -# undef SvRX -#endif -#define SvRX(a) DPPP_(my_SvRX)(aTHX_ a) - - -void * -DPPP_(my_SvRX)(pTHX_ SV *rv) -{ - if (SvROK(rv)) { - SV *sv = SvRV(rv); - if (SvMAGICAL(sv)) { - MAGIC *mg = mg_find(sv, PERL_MAGIC_qr); - if (mg && mg->mg_obj) { - return mg->mg_obj; - } - } - } - return 0; -} -#endif -#endif -#ifndef SvRXOK -# define SvRXOK(sv) (!!SvRX(sv)) -#endif - -#ifndef PERL_UNUSED_DECL -# ifdef HASATTRIBUTE -# if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) -# define PERL_UNUSED_DECL -# else -# define PERL_UNUSED_DECL __attribute__((unused)) -# endif -# else -# define PERL_UNUSED_DECL -# endif -#endif - -#ifndef PERL_UNUSED_ARG -# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ -# include -# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) -# else -# define PERL_UNUSED_ARG(x) ((void)x) -# endif -#endif - -#ifndef PERL_UNUSED_VAR -# define PERL_UNUSED_VAR(x) ((void)x) -#endif - -#ifndef PERL_UNUSED_CONTEXT -# ifdef USE_ITHREADS -# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) -# else -# define PERL_UNUSED_CONTEXT -# endif -#endif - -#ifndef PERL_UNUSED_RESULT -# if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT) -# define PERL_UNUSED_RESULT(v) STMT_START { __typeof__(v) z = (v); (void)sizeof(z); } STMT_END -# else -# define PERL_UNUSED_RESULT(v) ((void)(v)) -# endif -#endif -#ifndef NOOP -# define NOOP /*EMPTY*/(void)0 -#endif - -#ifndef dNOOP -# define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL -#endif - -#ifndef NVTYPE -# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) -# define NVTYPE long double -# else -# define NVTYPE double -# endif -typedef NVTYPE NV; -#endif - -#ifndef INT2PTR -# if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) -# define PTRV UV -# define INT2PTR(any,d) (any)(d) -# else -# if PTRSIZE == LONGSIZE -# define PTRV unsigned long -# else -# define PTRV unsigned -# endif -# define INT2PTR(any,d) (any)(PTRV)(d) -# endif -#endif - -#ifndef PTR2ul -# if PTRSIZE == LONGSIZE -# define PTR2ul(p) (unsigned long)(p) -# else -# define PTR2ul(p) INT2PTR(unsigned long,p) -# endif -#endif -#ifndef PTR2nat -# define PTR2nat(p) (PTRV)(p) -#endif - -#ifndef NUM2PTR -# define NUM2PTR(any,d) (any)PTR2nat(d) -#endif - -#ifndef PTR2IV -# define PTR2IV(p) INT2PTR(IV,p) -#endif - -#ifndef PTR2UV -# define PTR2UV(p) INT2PTR(UV,p) -#endif - -#ifndef PTR2NV -# define PTR2NV(p) NUM2PTR(NV,p) -#endif - -#undef START_EXTERN_C -#undef END_EXTERN_C -#undef EXTERN_C -#ifdef __cplusplus -# define START_EXTERN_C extern "C" { -# define END_EXTERN_C } -# define EXTERN_C extern "C" -#else -# define START_EXTERN_C -# define END_EXTERN_C -# define EXTERN_C extern -#endif - -#if defined(PERL_GCC_PEDANTIC) -# ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN -# define PERL_GCC_BRACE_GROUPS_FORBIDDEN -# endif -#endif - -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) -# ifndef PERL_USE_GCC_BRACE_GROUPS -# define PERL_USE_GCC_BRACE_GROUPS -# endif -#endif - -#undef STMT_START -#undef STMT_END -#ifdef PERL_USE_GCC_BRACE_GROUPS -# define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ -# define STMT_END ) -#else -# if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) -# define STMT_START if (1) -# define STMT_END else (void)0 -# else -# define STMT_START do -# define STMT_END while (0) -# endif -#endif -#ifndef boolSV -# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) -#endif - -/* DEFSV appears first in 5.004_56 */ -#ifndef DEFSV -# define DEFSV GvSV(PL_defgv) -#endif - -#ifndef SAVE_DEFSV -# define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) -#endif - -#ifndef DEFSV_set -# define DEFSV_set(sv) (DEFSV = (sv)) -#endif - -/* Older perls (<=5.003) lack AvFILLp */ -#ifndef AvFILLp -# define AvFILLp AvFILL -#endif -#ifndef av_tindex -# define av_tindex AvFILL -#endif - -#ifndef av_top_index -# define av_top_index AvFILL -#endif -#ifndef ERRSV -# define ERRSV get_sv("@",FALSE) -#endif - -/* Hint: gv_stashpvn - * This function's backport doesn't support the length parameter, but - * rather ignores it. Portability can only be ensured if the length - * parameter is used for speed reasons, but the length can always be - * correctly computed from the string argument. - */ -#ifndef gv_stashpvn -# define gv_stashpvn(str,len,create) gv_stashpv(str,create) -#endif - -/* Replace: 1 */ -#ifndef get_cv -# define get_cv perl_get_cv -#endif - -#ifndef get_sv -# define get_sv perl_get_sv -#endif - -#ifndef get_av -# define get_av perl_get_av -#endif - -#ifndef get_hv -# define get_hv perl_get_hv -#endif - -/* Replace: 0 */ -#ifndef dUNDERBAR -# define dUNDERBAR dNOOP -#endif - -#ifndef UNDERBAR -# define UNDERBAR DEFSV -#endif -#ifndef dAX -# define dAX I32 ax = MARK - PL_stack_base + 1 -#endif - -#ifndef dITEMS -# define dITEMS I32 items = SP - MARK -#endif -#ifndef dXSTARG -# define dXSTARG SV * targ = sv_newmortal() -#endif -#ifndef dAXMARK -# define dAXMARK I32 ax = POPMARK; \ - register SV ** const mark = PL_stack_base + ax++ -#endif -#ifndef XSprePUSH -# define XSprePUSH (sp = PL_stack_base + ax - 1) -#endif - -#if (PERL_BCDVERSION < 0x5005000) -# undef XSRETURN -# define XSRETURN(off) \ - STMT_START { \ - PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ - return; \ - } STMT_END -#endif -#ifndef XSPROTO -# define XSPROTO(name) void name(pTHX_ CV* cv) -#endif - -#ifndef SVfARG -# define SVfARG(p) ((void*)(p)) -#endif -#ifndef PERL_ABS -# define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) -#endif -#ifndef dVAR -# define dVAR dNOOP -#endif -#ifndef SVf -# define SVf "_" -#endif -#ifndef UTF8_MAXBYTES -# define UTF8_MAXBYTES UTF8_MAXLEN -#endif -#ifndef CPERLscope -# define CPERLscope(x) x -#endif -#ifndef PERL_HASH -# define PERL_HASH(hash,str,len) \ - STMT_START { \ - const char *s_PeRlHaSh = str; \ - I32 i_PeRlHaSh = len; \ - U32 hash_PeRlHaSh = 0; \ - while (i_PeRlHaSh--) \ - hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ - (hash) = hash_PeRlHaSh; \ - } STMT_END -#endif - -#ifndef PERLIO_FUNCS_DECL -# ifdef PERLIO_FUNCS_CONST -# define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs -# define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) -# else -# define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs -# define PERLIO_FUNCS_CAST(funcs) (funcs) -# endif -#endif - -/* provide these typedefs for older perls */ -#if (PERL_BCDVERSION < 0x5009003) - -# ifdef ARGSproto -typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto); -# else -typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); -# endif - -typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); - -#endif - -#ifndef WIDEST_UTYPE -# ifdef QUADKIND -# ifdef U64TYPE -# define WIDEST_UTYPE U64TYPE -# else -# define WIDEST_UTYPE Quad_t -# endif -# else -# define WIDEST_UTYPE U32 -# endif -#endif - -#ifdef EBCDIC - -/* This is the first version where these macros are fully correct. Relying on - * the C library functions, as earlier releases did, causes problems with - * locales */ -# if (PERL_BCDVERSION < 0x5022000) -# undef isALNUM -# undef isALNUM_A -# undef isALNUMC -# undef isALNUMC_A -# undef isALPHA -# undef isALPHA_A -# undef isALPHANUMERIC -# undef isALPHANUMERIC_A -# undef isASCII -# undef isASCII_A -# undef isBLANK -# undef isBLANK_A -# undef isCNTRL -# undef isCNTRL_A -# undef isDIGIT -# undef isDIGIT_A -# undef isGRAPH -# undef isGRAPH_A -# undef isIDCONT -# undef isIDCONT_A -# undef isIDFIRST -# undef isIDFIRST_A -# undef isLOWER -# undef isLOWER_A -# undef isOCTAL -# undef isOCTAL_A -# undef isPRINT -# undef isPRINT_A -# undef isPSXSPC -# undef isPSXSPC_A -# undef isPUNCT -# undef isPUNCT_A -# undef isSPACE -# undef isSPACE_A -# undef isUPPER -# undef isUPPER_A -# undef isWORDCHAR -# undef isWORDCHAR_A -# undef isXDIGIT -# undef isXDIGIT_A -# endif -#ifndef isASCII -# define isASCII(c) (isCNTRL(c) || isPRINT(c)) -#endif - - /* The below is accurate for all EBCDIC code pages supported by - * all the versions of Perl overridden by this */ -#ifndef isCNTRL -# define isCNTRL(c) ( (c) == '\0' || (c) == '\a' || (c) == '\b' \ - || (c) == '\f' || (c) == '\n' || (c) == '\r' \ - || (c) == '\t' || (c) == '\v' \ - || ((c) <= 3 && (c) >= 1) /* SOH, STX, ETX */ \ - || (c) == 7 /* U+7F DEL */ \ - || ((c) <= 0x13 && (c) >= 0x0E) /* SO, SI */ \ - /* DLE, DC[1-3] */ \ - || (c) == 0x18 /* U+18 CAN */ \ - || (c) == 0x19 /* U+19 EOM */ \ - || ((c) <= 0x1F && (c) >= 0x1C) /* [FGRU]S */ \ - || (c) == 0x26 /* U+17 ETB */ \ - || (c) == 0x27 /* U+1B ESC */ \ - || (c) == 0x2D /* U+05 ENQ */ \ - || (c) == 0x2E /* U+06 ACK */ \ - || (c) == 0x32 /* U+16 SYN */ \ - || (c) == 0x37 /* U+04 EOT */ \ - || (c) == 0x3C /* U+14 DC4 */ \ - || (c) == 0x3D /* U+15 NAK */ \ - || (c) == 0x3F /* U+1A SUB */ \ - ) -#endif - -/* The ordering of the tests in this and isUPPER are to exclude most characters - * early */ -#ifndef isLOWER -# define isLOWER(c) ( (c) >= 'a' && (c) <= 'z' \ - && ( (c) <= 'i' \ - || ((c) >= 'j' && (c) <= 'r') \ - || (c) >= 's')) -#endif - -#ifndef isUPPER -# define isUPPER(c) ( (c) >= 'A' && (c) <= 'Z' \ - && ( (c) <= 'I' \ - || ((c) >= 'J' && (c) <= 'R') \ - || (c) >= 'S')) -#endif - -#else /* Above is EBCDIC; below is ASCII */ - -# if (PERL_BCDVERSION < 0x5004000) -/* The implementation of these in older perl versions can give wrong results if - * the C program locale is set to other than the C locale */ -# undef isALNUM -# undef isALNUM_A -# undef isALPHA -# undef isALPHA_A -# undef isDIGIT -# undef isDIGIT_A -# undef isIDFIRST -# undef isIDFIRST_A -# undef isLOWER -# undef isLOWER_A -# undef isUPPER -# undef isUPPER_A -# endif - -# if (PERL_BCDVERSION < 0x5008000) -/* Hint: isCNTRL - * Earlier perls omitted DEL */ -# undef isCNTRL -# endif - -# if (PERL_BCDVERSION < 0x5010000) -/* Hint: isPRINT - * The implementation in older perl versions includes all of the - * isSPACE() characters, which is wrong. The version provided by - * Devel::PPPort always overrides a present buggy version. - */ -# undef isPRINT -# undef isPRINT_A -# endif - -# if (PERL_BCDVERSION < 0x5014000) -/* Hint: isASCII - * The implementation in older perl versions always returned true if the - * parameter was a signed char - */ -# undef isASCII -# undef isASCII_A -# endif - -# if (PERL_BCDVERSION < 0x5020000) -/* Hint: isSPACE - * The implementation in older perl versions didn't include \v */ -# undef isSPACE -# undef isSPACE_A -# endif -#ifndef isASCII -# define isASCII(c) ((WIDEST_UTYPE) (c) <= 127) -#endif - -#ifndef isCNTRL -# define isCNTRL(c) ((WIDEST_UTYPE) (c) < ' ' || (c) == 127) -#endif - -#ifndef isLOWER -# define isLOWER(c) ((c) >= 'a' && (c) <= 'z') -#endif - -#ifndef isUPPER -# define isUPPER(c) ((c) <= 'Z' && (c) >= 'A') -#endif - -#endif /* Below are definitions common to EBCDIC and ASCII */ -#ifndef isALNUM -# define isALNUM(c) isWORDCHAR(c) -#endif - -#ifndef isALNUMC -# define isALNUMC(c) isALPHANUMERIC(c) -#endif - -#ifndef isALPHA -# define isALPHA(c) (isUPPER(c) || isLOWER(c)) -#endif - -#ifndef isALPHANUMERIC -# define isALPHANUMERIC(c) (isALPHA(c) || isDIGIT(c)) -#endif - -#ifndef isBLANK -# define isBLANK(c) ((c) == ' ' || (c) == '\t') -#endif - -#ifndef isDIGIT -# define isDIGIT(c) ((c) <= '9' && (c) >= '0') -#endif - -#ifndef isGRAPH -# define isGRAPH(c) (isWORDCHAR(c) || isPUNCT(c)) -#endif - -#ifndef isIDCONT -# define isIDCONT(c) isWORDCHAR(c) -#endif - -#ifndef isIDFIRST -# define isIDFIRST(c) (isALPHA(c) || (c) == '_') -#endif - -#ifndef isOCTAL -# define isOCTAL(c) (((WIDEST_UTYPE)((c)) & ~7) == '0') -#endif - -#ifndef isPRINT -# define isPRINT(c) (isGRAPH(c) || (c) == ' ') -#endif - -#ifndef isPSXSPC -# define isPSXSPC(c) isSPACE(c) -#endif - -#ifndef isPUNCT -# define isPUNCT(c) ( (c) == '-' || (c) == '!' || (c) == '"' \ - || (c) == '#' || (c) == '$' || (c) == '%' \ - || (c) == '&' || (c) == '\'' || (c) == '(' \ - || (c) == ')' || (c) == '*' || (c) == '+' \ - || (c) == ',' || (c) == '.' || (c) == '/' \ - || (c) == ':' || (c) == ';' || (c) == '<' \ - || (c) == '=' || (c) == '>' || (c) == '?' \ - || (c) == '@' || (c) == '[' || (c) == '\\' \ - || (c) == ']' || (c) == '^' || (c) == '_' \ - || (c) == '`' || (c) == '{' || (c) == '|' \ - || (c) == '}' || (c) == '~') -#endif - -#ifndef isSPACE -# define isSPACE(c) ( isBLANK(c) || (c) == '\n' || (c) == '\r' \ - || (c) == '\v' || (c) == '\f') -#endif - -#ifndef isWORDCHAR -# define isWORDCHAR(c) (isALPHANUMERIC(c) || (c) == '_') -#endif - -#ifndef isXDIGIT -# define isXDIGIT(c) ( isDIGIT(c) \ - || ((c) >= 'a' && (c) <= 'f') \ - || ((c) >= 'A' && (c) <= 'F')) -#endif -#ifndef isALNUM_A -# define isALNUM_A isALNUM -#endif - -#ifndef isALNUMC_A -# define isALNUMC_A isALNUMC -#endif - -#ifndef isALPHA_A -# define isALPHA_A isALPHA -#endif - -#ifndef isALPHANUMERIC_A -# define isALPHANUMERIC_A isALPHANUMERIC -#endif - -#ifndef isASCII_A -# define isASCII_A isASCII -#endif - -#ifndef isBLANK_A -# define isBLANK_A isBLANK -#endif - -#ifndef isCNTRL_A -# define isCNTRL_A isCNTRL -#endif - -#ifndef isDIGIT_A -# define isDIGIT_A isDIGIT -#endif - -#ifndef isGRAPH_A -# define isGRAPH_A isGRAPH -#endif - -#ifndef isIDCONT_A -# define isIDCONT_A isIDCONT -#endif - -#ifndef isIDFIRST_A -# define isIDFIRST_A isIDFIRST -#endif - -#ifndef isLOWER_A -# define isLOWER_A isLOWER -#endif - -#ifndef isOCTAL_A -# define isOCTAL_A isOCTAL -#endif - -#ifndef isPRINT_A -# define isPRINT_A isPRINT -#endif - -#ifndef isPSXSPC_A -# define isPSXSPC_A isPSXSPC -#endif - -#ifndef isPUNCT_A -# define isPUNCT_A isPUNCT -#endif - -#ifndef isSPACE_A -# define isSPACE_A isSPACE -#endif - -#ifndef isUPPER_A -# define isUPPER_A isUPPER -#endif - -#ifndef isWORDCHAR_A -# define isWORDCHAR_A isWORDCHAR -#endif - -#ifndef isXDIGIT_A -# define isXDIGIT_A isXDIGIT -#endif - -/* Until we figure out how to support this in older perls... */ -#if (PERL_BCDVERSION >= 0x5008000) -#ifndef HeUTF8 -# define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ - SvUTF8(HeKEY_sv(he)) : \ - (U32)HeKUTF8(he)) -#endif - -#endif -#ifndef C_ARRAY_LENGTH -# define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) -#endif - -#ifndef C_ARRAY_END -# define C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a)) -#endif -#ifndef LIKELY -# define LIKELY(x) (x) -#endif - -#ifndef UNLIKELY -# define UNLIKELY(x) (x) -#endif -#ifndef UNICODE_REPLACEMENT -# define UNICODE_REPLACEMENT 0xFFFD -#endif - -#ifndef MUTABLE_PTR -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) -# define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) -#else -# define MUTABLE_PTR(p) ((void *) (p)) -#endif -#endif -#ifndef MUTABLE_SV -# define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) -#endif -#ifndef WARN_ALL -# define WARN_ALL 0 -#endif - -#ifndef WARN_CLOSURE -# define WARN_CLOSURE 1 -#endif - -#ifndef WARN_DEPRECATED -# define WARN_DEPRECATED 2 -#endif - -#ifndef WARN_EXITING -# define WARN_EXITING 3 -#endif - -#ifndef WARN_GLOB -# define WARN_GLOB 4 -#endif - -#ifndef WARN_IO -# define WARN_IO 5 -#endif - -#ifndef WARN_CLOSED -# define WARN_CLOSED 6 -#endif - -#ifndef WARN_EXEC -# define WARN_EXEC 7 -#endif - -#ifndef WARN_LAYER -# define WARN_LAYER 8 -#endif - -#ifndef WARN_NEWLINE -# define WARN_NEWLINE 9 -#endif - -#ifndef WARN_PIPE -# define WARN_PIPE 10 -#endif - -#ifndef WARN_UNOPENED -# define WARN_UNOPENED 11 -#endif - -#ifndef WARN_MISC -# define WARN_MISC 12 -#endif - -#ifndef WARN_NUMERIC -# define WARN_NUMERIC 13 -#endif - -#ifndef WARN_ONCE -# define WARN_ONCE 14 -#endif - -#ifndef WARN_OVERFLOW -# define WARN_OVERFLOW 15 -#endif - -#ifndef WARN_PACK -# define WARN_PACK 16 -#endif - -#ifndef WARN_PORTABLE -# define WARN_PORTABLE 17 -#endif - -#ifndef WARN_RECURSION -# define WARN_RECURSION 18 -#endif - -#ifndef WARN_REDEFINE -# define WARN_REDEFINE 19 -#endif - -#ifndef WARN_REGEXP -# define WARN_REGEXP 20 -#endif - -#ifndef WARN_SEVERE -# define WARN_SEVERE 21 -#endif - -#ifndef WARN_DEBUGGING -# define WARN_DEBUGGING 22 -#endif - -#ifndef WARN_INPLACE -# define WARN_INPLACE 23 -#endif - -#ifndef WARN_INTERNAL -# define WARN_INTERNAL 24 -#endif - -#ifndef WARN_MALLOC -# define WARN_MALLOC 25 -#endif - -#ifndef WARN_SIGNAL -# define WARN_SIGNAL 26 -#endif - -#ifndef WARN_SUBSTR -# define WARN_SUBSTR 27 -#endif - -#ifndef WARN_SYNTAX -# define WARN_SYNTAX 28 -#endif - -#ifndef WARN_AMBIGUOUS -# define WARN_AMBIGUOUS 29 -#endif - -#ifndef WARN_BAREWORD -# define WARN_BAREWORD 30 -#endif - -#ifndef WARN_DIGIT -# define WARN_DIGIT 31 -#endif - -#ifndef WARN_PARENTHESIS -# define WARN_PARENTHESIS 32 -#endif - -#ifndef WARN_PRECEDENCE -# define WARN_PRECEDENCE 33 -#endif - -#ifndef WARN_PRINTF -# define WARN_PRINTF 34 -#endif - -#ifndef WARN_PROTOTYPE -# define WARN_PROTOTYPE 35 -#endif - -#ifndef WARN_QW -# define WARN_QW 36 -#endif - -#ifndef WARN_RESERVED -# define WARN_RESERVED 37 -#endif - -#ifndef WARN_SEMICOLON -# define WARN_SEMICOLON 38 -#endif - -#ifndef WARN_TAINT -# define WARN_TAINT 39 -#endif - -#ifndef WARN_THREADS -# define WARN_THREADS 40 -#endif - -#ifndef WARN_UNINITIALIZED -# define WARN_UNINITIALIZED 41 -#endif - -#ifndef WARN_UNPACK -# define WARN_UNPACK 42 -#endif - -#ifndef WARN_UNTIE -# define WARN_UNTIE 43 -#endif - -#ifndef WARN_UTF8 -# define WARN_UTF8 44 -#endif - -#ifndef WARN_VOID -# define WARN_VOID 45 -#endif - -#ifndef WARN_ASSERTIONS -# define WARN_ASSERTIONS 46 -#endif -#ifndef packWARN -# define packWARN(a) (a) -#endif - -#ifndef ckWARN -# ifdef G_WARN_ON -# define ckWARN(a) (PL_dowarn & G_WARN_ON) -# else -# define ckWARN(a) PL_dowarn -# endif -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(warner) -#if defined(NEED_warner) -static void DPPP_(my_warner)(U32 err, const char *pat, ...); -static -#else -extern void DPPP_(my_warner)(U32 err, const char *pat, ...); -#endif - -#if defined(NEED_warner) || defined(NEED_warner_GLOBAL) - -#define Perl_warner DPPP_(my_warner) - - -void -DPPP_(my_warner)(U32 err, const char *pat, ...) -{ - SV *sv; - va_list args; - - PERL_UNUSED_ARG(err); - - va_start(args, pat); - sv = vnewSVpvf(pat, &args); - va_end(args); - sv_2mortal(sv); - warn("%s", SvPV_nolen(sv)); -} - -#define warner Perl_warner - -#define Perl_warner_nocontext Perl_warner - -#endif -#endif - -#define _ppport_MIN(a,b) (((a) <= (b)) ? (a) : (b)) -#ifndef sv_setuv -# define sv_setuv(sv, uv) \ - STMT_START { \ - UV TeMpUv = uv; \ - if (TeMpUv <= IV_MAX) \ - sv_setiv(sv, TeMpUv); \ - else \ - sv_setnv(sv, (double)TeMpUv); \ - } STMT_END -#endif -#ifndef newSVuv -# define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) -#endif -#ifndef sv_2uv -# define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) -#endif - -#ifndef SvUVX -# define SvUVX(sv) ((UV)SvIVX(sv)) -#endif - -#ifndef SvUVXx -# define SvUVXx(sv) SvUVX(sv) -#endif - -#ifndef SvUV -# define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) -#endif - -#ifndef SvUVx -# define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) -#endif - -/* Hint: sv_uv - * Always use the SvUVx() macro instead of sv_uv(). - */ -#ifndef sv_uv -# define sv_uv(sv) SvUVx(sv) -#endif - -#if !defined(SvUOK) && defined(SvIOK_UV) -# define SvUOK(sv) SvIOK_UV(sv) -#endif -#ifndef XST_mUV -# define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) -#endif - -#ifndef XSRETURN_UV -# define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END -#endif -#ifndef PUSHu -# define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END -#endif - -#ifndef XPUSHu -# define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END -#endif - -#if defined UTF8SKIP - -/* Don't use official version because it uses MIN, which may not be available */ -#undef UTF8_SAFE_SKIP -#ifndef UTF8_SAFE_SKIP -# define UTF8_SAFE_SKIP(s, e) ( \ - ((((e) - (s)) <= 0) \ - ? 0 \ - : _ppport_MIN(((e) - (s)), UTF8SKIP(s)))) -#endif - -#endif - -#if !defined(my_strnlen) -#if defined(NEED_my_strnlen) -static STRLEN DPPP_(my_my_strnlen)(const char *str, Size_t maxlen); -static -#else -extern STRLEN DPPP_(my_my_strnlen)(const char *str, Size_t maxlen); -#endif - -#if defined(NEED_my_strnlen) || defined(NEED_my_strnlen_GLOBAL) - -#define my_strnlen DPPP_(my_my_strnlen) -#define Perl_my_strnlen DPPP_(my_my_strnlen) - - -STRLEN -DPPP_(my_my_strnlen)(const char *str, Size_t maxlen) -{ - const char *p = str; - - while(maxlen-- && *p) - p++; - - return p - str; -} - -#endif -#endif - -#if (PERL_BCDVERSION < 0x5031002) - /* Versions prior to this accepted things that are now considered - * malformations, and didn't return -1 on error with warnings enabled - * */ -# undef utf8_to_uvchr_buf -#endif - -/* This implementation brings modern, generally more restricted standards to - * utf8_to_uvchr_buf. Some of these are security related, and clearly must - * be done. But its arguable that the others need not, and hence should not. - * The reason they're here is that a module that intends to play with the - * latest perls shoud be able to work the same in all releases. An example is - * that perl no longer accepts any UV for a code point, but limits them to - * IV_MAX or below. This is for future internal use of the larger code points. - * If it turns out that some of these changes are breaking code that isn't - * intended to work with modern perls, the tighter restrictions could be - * relaxed. khw thinks this is unlikely, but has been wrong in the past. */ - -#ifndef utf8_to_uvchr_buf - /* Choose which underlying implementation to use. At least one must be - * present or the perl is too early to handle this function */ -# if defined(utf8n_to_uvchr) || defined(utf8_to_uv) -# if defined(utf8n_to_uvchr) /* This is the preferred implementation */ -# define _ppport_utf8_to_uvchr_buf_callee utf8n_to_uvchr -# else -# define _ppport_utf8_to_uvchr_buf_callee utf8_to_uv -# endif - -# endif - -#ifdef _ppport_utf8_to_uvchr_buf_callee -# if defined(NEED_utf8_to_uvchr_buf) -static UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen); -static -#else -extern UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen); -#endif - -#if defined(NEED_utf8_to_uvchr_buf) || defined(NEED_utf8_to_uvchr_buf_GLOBAL) - -#ifdef utf8_to_uvchr_buf -# undef utf8_to_uvchr_buf -#endif -#define utf8_to_uvchr_buf(a,b,c) DPPP_(my_utf8_to_uvchr_buf)(aTHX_ a,b,c) -#define Perl_utf8_to_uvchr_buf DPPP_(my_utf8_to_uvchr_buf) - - -UV -DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen) -{ - UV ret; - STRLEN curlen; - bool overflows = 0; - const U8 *cur_s = s; - const bool do_warnings = ckWARN_d(WARN_UTF8); - - if (send > s) { - curlen = send - s; - } - else { - assert(0); /* Modern perls die under this circumstance */ - curlen = 0; - if (! do_warnings) { /* Handle empty here if no warnings needed */ - if (retlen) *retlen = 0; - return UNICODE_REPLACEMENT; - } - } - - /* The modern version allows anything that evaluates to a legal UV, but not - * overlongs nor an empty input */ - ret = _ppport_utf8_to_uvchr_buf_callee( - s, curlen, retlen, (UTF8_ALLOW_ANYUV - & ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY))); - - /* But actually, modern versions restrict the UV to being no more than what - * an IV can hold */ - if (ret > PERL_INT_MAX) { - overflows = 1; - } - -# if (PERL_BCDVERSION < 0x5026000) -# ifndef EBCDIC - - /* There are bugs in versions earlier than this on non-EBCDIC platforms - * in which it did not detect all instances of overflow, which could be - * a security hole. Also, earlier versions did not allow the overflow - * malformation under any circumstances, and modern ones do. So we - * need to check here. */ - - else if (curlen > 0 && *s >= 0xFE) { - - /* If the main routine detected overflow, great; it returned 0. But if the - * input's first byte indicates it could overflow, we need to verify. - * First, on a 32-bit machine the first byte being at least \xFE - * automatically is overflow */ - if (sizeof(ret) < 8) { - overflows = 1; - } - else { - const U8 highest[] = /* 2*63-1 */ - "\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF"; - const U8 *cur_h = highest; - - for (cur_s = s; cur_s < send; cur_s++, cur_h++) { - if (UNLIKELY(*cur_s == *cur_h)) { - continue; - } - - /* If this byte is larger than the corresponding highest UTF-8 - * byte, the sequence overflows; otherwise the byte is less than - * (as we handled the equality case above), and so the sequence - * doesn't overflow */ - overflows = *cur_s > *cur_h; - break; - - } - - /* Here, either we set the bool and broke out of the loop, or got - * to the end and all bytes are the same which indicates it doesn't - * overflow. */ - } - } - -# endif -# endif /* < 5.26 */ - - if (UNLIKELY(overflows)) { - if (! do_warnings) { - if (retlen) { - *retlen = _ppport_MIN(*retlen, UTF8SKIP(s)); - *retlen = _ppport_MIN(*retlen, curlen); - } - return UNICODE_REPLACEMENT; - } - else { - - /* On versions that correctly detect overflow, but forbid it - * always, 0 will be returned, but also a warning will have been - * raised. Don't repeat it */ - if (ret != 0) { - /* We use the error message in use from 5.8-5.14 */ - Perl_warner(aTHX_ packWARN(WARN_UTF8), - "Malformed UTF-8 character (overflow at 0x%" UVxf - ", byte 0x%02x, after start byte 0x%02x)", - ret, *cur_s, *s); - } - if (retlen) { - *retlen = (STRLEN) -1; - } - return 0; - } - } - - /* If failed and warnings are off, to emulate the behavior of the real - * utf8_to_uvchr(), try again, allowing anything. (Note a return of 0 is - * ok if the input was '\0') */ - if (UNLIKELY(ret == 0 && (curlen == 0 || *s != '\0'))) { - - /* If curlen is 0, we already handled the case where warnings are - * disabled, so this 'if' will be true, and we won't look at the - * contents of 's' */ - if (do_warnings) { - *retlen = (STRLEN) -1; - } - else { - ret = _ppport_utf8_to_uvchr_buf_callee( - s, curlen, retlen, UTF8_ALLOW_ANY); - /* Override with the REPLACEMENT character, as that is what the - * modern version of this function returns */ - ret = UNICODE_REPLACEMENT; - -# if (PERL_BCDVERSION < 0x5016000) - - /* Versions earlier than this don't necessarily return the proper - * length. It should not extend past the end of string, nor past - * what the first byte indicates the length is, nor past the - * continuation characters */ - if (retlen && *retlen >= 0) { - *retlen = _ppport_MIN(*retlen, curlen); - *retlen = _ppport_MIN(*retlen, UTF8SKIP(s)); - unsigned int i = 1; - do { - if (s[i] < 0x80 || s[i] > 0xBF) { - *retlen = i; - break; - } - } while (++i < *retlen); - } - -# endif - - } - } - - return ret; -} - -# endif -#endif -#endif - -#if defined(UTF8SKIP) && defined(utf8_to_uvchr_buf) -#undef utf8_to_uvchr /* Always redefine this unsafe function so that it refuses - to read past a NUL, making it much less likely to read - off the end of the buffer. A NUL indicates the start - of the next character anyway. If the input isn't - NUL-terminated, the function remains unsafe, as it - always has been. */ -#ifndef utf8_to_uvchr -# define utf8_to_uvchr(s, lp) \ - ((*(s) == '\0') \ - ? utf8_to_uvchr_buf(s,((s)+1), lp) /* Handle single NUL specially */ \ - : utf8_to_uvchr_buf(s, (s) + my_strnlen((char *) (s), UTF8SKIP(s)), (lp))) -#endif - -#endif - -#ifdef HAS_MEMCMP -#ifndef memNE -# define memNE(s1,s2,l) (memcmp(s1,s2,l)) -#endif - -#ifndef memEQ -# define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) -#endif - -#else -#ifndef memNE -# define memNE(s1,s2,l) (bcmp(s1,s2,l)) -#endif - -#ifndef memEQ -# define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) -#endif - -#endif -#ifndef memEQs -# define memEQs(s1, l, s2) \ - (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1))) -#endif - -#ifndef memNEs -# define memNEs(s1, l, s2) !memEQs(s1, l, s2) -#endif -#ifndef MoveD -# define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) -#endif - -#ifndef CopyD -# define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) -#endif - -#ifdef HAS_MEMSET -#ifndef ZeroD -# define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) -#endif - -#else -#ifndef ZeroD -# define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)), d) -#endif - -#endif -#ifndef PoisonWith -# define PoisonWith(d,n,t,b) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) -#endif - -#ifndef PoisonNew -# define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) -#endif - -#ifndef PoisonFree -# define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) -#endif - -#ifndef Poison -# define Poison(d,n,t) PoisonFree(d,n,t) -#endif -#ifndef Newx -# define Newx(v,n,t) New(0,v,n,t) -#endif - -#ifndef Newxc -# define Newxc(v,n,t,c) Newc(0,v,n,t,c) -#endif - -#ifndef Newxz -# define Newxz(v,n,t) Newz(0,v,n,t) -#endif -#ifndef PERL_MAGIC_sv -# define PERL_MAGIC_sv '\0' -#endif - -#ifndef PERL_MAGIC_overload -# define PERL_MAGIC_overload 'A' -#endif - -#ifndef PERL_MAGIC_overload_elem -# define PERL_MAGIC_overload_elem 'a' -#endif - -#ifndef PERL_MAGIC_overload_table -# define PERL_MAGIC_overload_table 'c' -#endif - -#ifndef PERL_MAGIC_bm -# define PERL_MAGIC_bm 'B' -#endif - -#ifndef PERL_MAGIC_regdata -# define PERL_MAGIC_regdata 'D' -#endif - -#ifndef PERL_MAGIC_regdatum -# define PERL_MAGIC_regdatum 'd' -#endif - -#ifndef PERL_MAGIC_env -# define PERL_MAGIC_env 'E' -#endif - -#ifndef PERL_MAGIC_envelem -# define PERL_MAGIC_envelem 'e' -#endif - -#ifndef PERL_MAGIC_fm -# define PERL_MAGIC_fm 'f' -#endif - -#ifndef PERL_MAGIC_regex_global -# define PERL_MAGIC_regex_global 'g' -#endif - -#ifndef PERL_MAGIC_isa -# define PERL_MAGIC_isa 'I' -#endif - -#ifndef PERL_MAGIC_isaelem -# define PERL_MAGIC_isaelem 'i' -#endif - -#ifndef PERL_MAGIC_nkeys -# define PERL_MAGIC_nkeys 'k' -#endif - -#ifndef PERL_MAGIC_dbfile -# define PERL_MAGIC_dbfile 'L' -#endif - -#ifndef PERL_MAGIC_dbline -# define PERL_MAGIC_dbline 'l' -#endif - -#ifndef PERL_MAGIC_mutex -# define PERL_MAGIC_mutex 'm' -#endif - -#ifndef PERL_MAGIC_shared -# define PERL_MAGIC_shared 'N' -#endif - -#ifndef PERL_MAGIC_shared_scalar -# define PERL_MAGIC_shared_scalar 'n' -#endif - -#ifndef PERL_MAGIC_collxfrm -# define PERL_MAGIC_collxfrm 'o' -#endif - -#ifndef PERL_MAGIC_tied -# define PERL_MAGIC_tied 'P' -#endif - -#ifndef PERL_MAGIC_tiedelem -# define PERL_MAGIC_tiedelem 'p' -#endif - -#ifndef PERL_MAGIC_tiedscalar -# define PERL_MAGIC_tiedscalar 'q' -#endif - -#ifndef PERL_MAGIC_qr -# define PERL_MAGIC_qr 'r' -#endif - -#ifndef PERL_MAGIC_sig -# define PERL_MAGIC_sig 'S' -#endif - -#ifndef PERL_MAGIC_sigelem -# define PERL_MAGIC_sigelem 's' -#endif - -#ifndef PERL_MAGIC_taint -# define PERL_MAGIC_taint 't' -#endif - -#ifndef PERL_MAGIC_uvar -# define PERL_MAGIC_uvar 'U' -#endif - -#ifndef PERL_MAGIC_uvar_elem -# define PERL_MAGIC_uvar_elem 'u' -#endif - -#ifndef PERL_MAGIC_vstring -# define PERL_MAGIC_vstring 'V' -#endif - -#ifndef PERL_MAGIC_vec -# define PERL_MAGIC_vec 'v' -#endif - -#ifndef PERL_MAGIC_utf8 -# define PERL_MAGIC_utf8 'w' -#endif - -#ifndef PERL_MAGIC_substr -# define PERL_MAGIC_substr 'x' -#endif - -#ifndef PERL_MAGIC_defelem -# define PERL_MAGIC_defelem 'y' -#endif - -#ifndef PERL_MAGIC_glob -# define PERL_MAGIC_glob '*' -#endif - -#ifndef PERL_MAGIC_arylen -# define PERL_MAGIC_arylen '#' -#endif - -#ifndef PERL_MAGIC_pos -# define PERL_MAGIC_pos '.' -#endif - -#ifndef PERL_MAGIC_backref -# define PERL_MAGIC_backref '<' -#endif - -#ifndef PERL_MAGIC_ext -# define PERL_MAGIC_ext '~' -#endif - -#ifdef NEED_mess_sv -#define NEED_mess -#endif - -#ifdef NEED_mess -#define NEED_mess_nocontext -#define NEED_vmess -#endif - -#ifndef croak_sv -#if (PERL_BCDVERSION >= 0x5007003) || ( (PERL_BCDVERSION >= 0x5006001) && (PERL_BCDVERSION < 0x5007000) ) -# if ( (PERL_BCDVERSION >= 0x5008000) && (PERL_BCDVERSION < 0x5008009) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5010001) ) -# define D_PPP_FIX_UTF8_ERRSV(errsv, sv) \ - STMT_START { \ - if (sv != errsv) \ - SvFLAGS(errsv) = (SvFLAGS(errsv) & ~SVf_UTF8) | \ - (SvFLAGS(sv) & SVf_UTF8); \ - } STMT_END -# else -# define D_PPP_FIX_UTF8_ERRSV(errsv, sv) STMT_START {} STMT_END -# endif -# define croak_sv(sv) \ - STMT_START { \ - if (SvROK(sv)) { \ - sv_setsv(ERRSV, sv); \ - croak(NULL); \ - } else { \ - D_PPP_FIX_UTF8_ERRSV(ERRSV, sv); \ - croak("%" SVf, SVfARG(sv)); \ - } \ - } STMT_END -#elif (PERL_BCDVERSION >= 0x5004000) -# define croak_sv(sv) croak("%" SVf, SVfARG(sv)) -#else -# define croak_sv(sv) croak("%s", SvPV_nolen(sv)) -#endif -#endif - -#ifndef die_sv -#if defined(NEED_die_sv) -static OP * DPPP_(my_die_sv)(pTHX_ SV *sv); -static -#else -extern OP * DPPP_(my_die_sv)(pTHX_ SV *sv); -#endif - -#if defined(NEED_die_sv) || defined(NEED_die_sv_GLOBAL) - -#ifdef die_sv -# undef die_sv -#endif -#define die_sv(a) DPPP_(my_die_sv)(aTHX_ a) -#define Perl_die_sv DPPP_(my_die_sv) - -OP * -DPPP_(my_die_sv)(pTHX_ SV *sv) -{ - croak_sv(sv); - return (OP *)NULL; -} -#endif -#endif - -#ifndef warn_sv -#if (PERL_BCDVERSION >= 0x5004000) -# define warn_sv(sv) warn("%" SVf, SVfARG(sv)) -#else -# define warn_sv(sv) warn("%s", SvPV_nolen(sv)) -#endif -#endif - -#ifndef vmess -#if defined(NEED_vmess) -static SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args); -static -#else -extern SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args); -#endif - -#if defined(NEED_vmess) || defined(NEED_vmess_GLOBAL) - -#ifdef vmess -# undef vmess -#endif -#define vmess(a,b) DPPP_(my_vmess)(aTHX_ a,b) -#define Perl_vmess DPPP_(my_vmess) - -SV* -DPPP_(my_vmess)(pTHX_ const char* pat, va_list* args) -{ - mess(pat, args); - return PL_mess_sv; -} -#endif -#endif - -#if (PERL_BCDVERSION < 0x5006000) -#undef mess -#endif - -#if !defined(mess_nocontext) && !defined(Perl_mess_nocontext) -#if defined(NEED_mess_nocontext) -static SV * DPPP_(my_mess_nocontext)(const char * pat, ...); -static -#else -extern SV * DPPP_(my_mess_nocontext)(const char * pat, ...); -#endif - -#if defined(NEED_mess_nocontext) || defined(NEED_mess_nocontext_GLOBAL) - -#define mess_nocontext DPPP_(my_mess_nocontext) -#define Perl_mess_nocontext DPPP_(my_mess_nocontext) - -SV* -DPPP_(my_mess_nocontext)(const char* pat, ...) -{ - dTHX; - SV *sv; - va_list args; - va_start(args, pat); - sv = vmess(pat, &args); - va_end(args); - return sv; -} -#endif -#endif - -#ifndef mess -#if defined(NEED_mess) -static SV * DPPP_(my_mess)(pTHX_ const char * pat, ...); -static -#else -extern SV * DPPP_(my_mess)(pTHX_ const char * pat, ...); -#endif - -#if defined(NEED_mess) || defined(NEED_mess_GLOBAL) - -#define Perl_mess DPPP_(my_mess) - -SV* -DPPP_(my_mess)(pTHX_ const char* pat, ...) -{ - SV *sv; - va_list args; - va_start(args, pat); - sv = vmess(pat, &args); - va_end(args); - return sv; -} -#ifdef mess_nocontext -#define mess mess_nocontext -#else -#define mess Perl_mess_nocontext -#endif -#endif -#endif - -#ifndef mess_sv -#if defined(NEED_mess_sv) -static SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume); -static -#else -extern SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume); -#endif - -#if defined(NEED_mess_sv) || defined(NEED_mess_sv_GLOBAL) - -#ifdef mess_sv -# undef mess_sv -#endif -#define mess_sv(a,b) DPPP_(my_mess_sv)(aTHX_ a,b) -#define Perl_mess_sv DPPP_(my_mess_sv) - -SV * -DPPP_(my_mess_sv)(pTHX_ SV *basemsg, bool consume) -{ - SV *tmp; - SV *ret; - - if (SvPOK(basemsg) && SvCUR(basemsg) && *(SvEND(basemsg)-1) == '\n') { - if (consume) - return basemsg; - ret = mess(""); - SvSetSV_nosteal(ret, basemsg); - return ret; - } - - if (consume) { - sv_catsv(basemsg, mess("")); - return basemsg; - } - - ret = mess(""); - tmp = newSVsv(ret); - SvSetSV_nosteal(ret, basemsg); - sv_catsv(ret, tmp); - sv_dec(tmp); - return ret; -} -#endif -#endif - -#ifndef warn_nocontext -#define warn_nocontext warn -#endif - -#ifndef croak_nocontext -#define croak_nocontext croak -#endif - -#ifndef croak_no_modify -#define croak_no_modify() croak_nocontext("%s", PL_no_modify) -#define Perl_croak_no_modify() croak_no_modify() -#endif - -#ifndef croak_memory_wrap -#if (PERL_BCDVERSION >= 0x5009002) || ( (PERL_BCDVERSION >= 0x5008006) && (PERL_BCDVERSION < 0x5009000) ) -# define croak_memory_wrap() croak_nocontext("%s", PL_memory_wrap) -#else -# define croak_memory_wrap() croak_nocontext("panic: memory wrap") -#endif -#endif - -#ifndef croak_xs_usage -#if defined(NEED_croak_xs_usage) -static void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params); -static -#else -extern void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params); -#endif - -#if defined(NEED_croak_xs_usage) || defined(NEED_croak_xs_usage_GLOBAL) - -#define croak_xs_usage DPPP_(my_croak_xs_usage) -#define Perl_croak_xs_usage DPPP_(my_croak_xs_usage) - - -#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE -#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params) -#endif - -void -DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params) -{ - dTHX; - const GV *const gv = CvGV(cv); - - PERL_ARGS_ASSERT_CROAK_XS_USAGE; - - if (gv) { - const char *const gvname = GvNAME(gv); - const HV *const stash = GvSTASH(gv); - const char *const hvname = stash ? HvNAME(stash) : NULL; - - if (hvname) - croak("Usage: %s::%s(%s)", hvname, gvname, params); - else - croak("Usage: %s(%s)", gvname, params); - } else { - /* Pants. I don't think that it should be possible to get here. */ - croak("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params); - } -} -#endif -#endif - -#ifndef PERL_SIGNALS_UNSAFE_FLAG - -#define PERL_SIGNALS_UNSAFE_FLAG 0x0001 - -#if (PERL_BCDVERSION < 0x5008000) -# define D_PPP_PERL_SIGNALS_INIT PERL_SIGNALS_UNSAFE_FLAG -#else -# define D_PPP_PERL_SIGNALS_INIT 0 -#endif - -#if defined(NEED_PL_signals) -static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; -#elif defined(NEED_PL_signals_GLOBAL) -U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; -#else -extern U32 DPPP_(my_PL_signals); -#endif -#define PL_signals DPPP_(my_PL_signals) - -#endif - -/* Hint: PL_ppaddr - * Calling an op via PL_ppaddr requires passing a context argument - * for threaded builds. Since the context argument is different for - * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will - * automatically be defined as the correct argument. - */ - -#if (PERL_BCDVERSION <= 0x5005005) -/* Replace: 1 */ -# define PL_ppaddr ppaddr -# define PL_no_modify no_modify -/* Replace: 0 */ -#endif - -#if (PERL_BCDVERSION <= 0x5004005) -/* Replace: 1 */ -# define PL_DBsignal DBsignal -# define PL_DBsingle DBsingle -# define PL_DBsub DBsub -# define PL_DBtrace DBtrace -# define PL_Sv Sv -# define PL_bufend bufend -# define PL_bufptr bufptr -# define PL_compiling compiling -# define PL_copline copline -# define PL_curcop curcop -# define PL_curstash curstash -# define PL_debstash debstash -# define PL_defgv defgv -# define PL_diehook diehook -# define PL_dirty dirty -# define PL_dowarn dowarn -# define PL_errgv errgv -# define PL_error_count error_count -# define PL_expect expect -# define PL_hexdigit hexdigit -# define PL_hints hints -# define PL_in_my in_my -# define PL_laststatval laststatval -# define PL_lex_state lex_state -# define PL_lex_stuff lex_stuff -# define PL_linestr linestr -# define PL_na na -# define PL_perl_destruct_level perl_destruct_level -# define PL_perldb perldb -# define PL_rsfp_filters rsfp_filters -# define PL_rsfp rsfp -# define PL_stack_base stack_base -# define PL_stack_sp stack_sp -# define PL_statcache statcache -# define PL_stdingv stdingv -# define PL_sv_arenaroot sv_arenaroot -# define PL_sv_no sv_no -# define PL_sv_undef sv_undef -# define PL_sv_yes sv_yes -# define PL_tainted tainted -# define PL_tainting tainting -# define PL_tokenbuf tokenbuf -/* Replace: 0 */ -#endif - -/* Warning: PL_parser - * For perl versions earlier than 5.9.5, this is an always - * non-NULL dummy. Also, it cannot be dereferenced. Don't - * use it if you can avoid is and unless you absolutely know - * what you're doing. - * If you always check that PL_parser is non-NULL, you can - * define DPPP_PL_parser_NO_DUMMY to avoid the creation of - * a dummy parser structure. - */ - -#if (PERL_BCDVERSION >= 0x5009005) -# ifdef DPPP_PL_parser_NO_DUMMY -# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ - (croak("panic: PL_parser == NULL in %s:%d", \ - __FILE__, __LINE__), (yy_parser *) NULL))->var) -# else -# ifdef DPPP_PL_parser_NO_DUMMY_WARNING -# define D_PPP_parser_dummy_warning(var) -# else -# define D_PPP_parser_dummy_warning(var) \ - warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__), -# endif -# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ - (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var) -#if defined(NEED_PL_parser) -static yy_parser DPPP_(dummy_PL_parser); -#elif defined(NEED_PL_parser_GLOBAL) -yy_parser DPPP_(dummy_PL_parser); -#else -extern yy_parser DPPP_(dummy_PL_parser); -#endif - -# endif - -/* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */ -/* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf - * Do not use this variable unless you know exactly what you're - * doing. It is internal to the perl parser and may change or even - * be removed in the future. As of perl 5.9.5, you have to check - * for (PL_parser != NULL) for this variable to have any effect. - * An always non-NULL PL_parser dummy is provided for earlier - * perl versions. - * If PL_parser is NULL when you try to access this variable, a - * dummy is being accessed instead and a warning is issued unless - * you define DPPP_PL_parser_NO_DUMMY_WARNING. - * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access - * this variable will croak with a panic message. - */ - -# define PL_expect D_PPP_my_PL_parser_var(expect) -# define PL_copline D_PPP_my_PL_parser_var(copline) -# define PL_rsfp D_PPP_my_PL_parser_var(rsfp) -# define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters) -# define PL_linestr D_PPP_my_PL_parser_var(linestr) -# define PL_bufptr D_PPP_my_PL_parser_var(bufptr) -# define PL_bufend D_PPP_my_PL_parser_var(bufend) -# define PL_lex_state D_PPP_my_PL_parser_var(lex_state) -# define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff) -# define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf) -# define PL_in_my D_PPP_my_PL_parser_var(in_my) -# define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash) -# define PL_error_count D_PPP_my_PL_parser_var(error_count) - - -#else - -/* ensure that PL_parser != NULL and cannot be dereferenced */ -# define PL_parser ((void *) 1) - -#endif -#ifndef mPUSHs -# define mPUSHs(s) PUSHs(sv_2mortal(s)) -#endif - -#ifndef PUSHmortal -# define PUSHmortal PUSHs(sv_newmortal()) -#endif - -#ifndef mPUSHp -# define mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l)) -#endif - -#ifndef mPUSHn -# define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) -#endif - -#ifndef mPUSHi -# define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) -#endif - -#ifndef mPUSHu -# define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) -#endif -#ifndef mXPUSHs -# define mXPUSHs(s) XPUSHs(sv_2mortal(s)) -#endif - -#ifndef XPUSHmortal -# define XPUSHmortal XPUSHs(sv_newmortal()) -#endif - -#ifndef mXPUSHp -# define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END -#endif - -#ifndef mXPUSHn -# define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END -#endif - -#ifndef mXPUSHi -# define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END -#endif - -#ifndef mXPUSHu -# define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END -#endif - -/* Replace: 1 */ -#ifndef call_sv -# define call_sv perl_call_sv -#endif - -#ifndef call_pv -# define call_pv perl_call_pv -#endif - -#ifndef call_argv -# define call_argv perl_call_argv -#endif - -#ifndef call_method -# define call_method perl_call_method -#endif -#ifndef eval_sv -# define eval_sv perl_eval_sv -#endif - -/* Replace: 0 */ -#ifndef PERL_LOADMOD_DENY -# define PERL_LOADMOD_DENY 0x1 -#endif - -#ifndef PERL_LOADMOD_NOIMPORT -# define PERL_LOADMOD_NOIMPORT 0x2 -#endif - -#ifndef PERL_LOADMOD_IMPORT_OPS -# define PERL_LOADMOD_IMPORT_OPS 0x4 -#endif - -#ifndef G_METHOD -# define G_METHOD 64 -# ifdef call_sv -# undef call_sv -# endif -# if (PERL_BCDVERSION < 0x5006000) -# define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \ - (flags) & ~G_METHOD) : perl_call_sv(sv, flags)) -# else -# define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \ - (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags)) -# endif -#endif - -/* Replace perl_eval_pv with eval_pv */ - -#ifndef eval_pv -#if defined(NEED_eval_pv) -static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); -static -#else -extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); -#endif - -#if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL) - -#ifdef eval_pv -# undef eval_pv -#endif -#define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b) -#define Perl_eval_pv DPPP_(my_eval_pv) - - -SV* -DPPP_(my_eval_pv)(char *p, I32 croak_on_error) -{ - dSP; - SV* sv = newSVpv(p, 0); - - PUSHMARK(sp); - eval_sv(sv, G_SCALAR); - SvREFCNT_dec(sv); - - SPAGAIN; - sv = POPs; - PUTBACK; - - if (croak_on_error && SvTRUEx(ERRSV)) - croak_sv(ERRSV); - - return sv; -} - -#endif -#endif - -#ifndef vload_module -#if defined(NEED_vload_module) -static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); -static -#else -extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); -#endif - -#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) - -#ifdef vload_module -# undef vload_module -#endif -#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) -#define Perl_vload_module DPPP_(my_vload_module) - - -void -DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) -{ - dTHR; - dVAR; - OP *veop, *imop; - - OP * const modname = newSVOP(OP_CONST, 0, name); - /* 5.005 has a somewhat hacky force_normal that doesn't croak on - SvREADONLY() if PL_compling is true. Current perls take care in - ck_require() to correctly turn off SvREADONLY before calling - force_normal_flags(). This seems a better fix than fudging PL_compling - */ - SvREADONLY_off(((SVOP*)modname)->op_sv); - modname->op_private |= OPpCONST_BARE; - if (ver) { - veop = newSVOP(OP_CONST, 0, ver); - } - else - veop = NULL; - if (flags & PERL_LOADMOD_NOIMPORT) { - imop = sawparens(newNULLLIST()); - } - else if (flags & PERL_LOADMOD_IMPORT_OPS) { - imop = va_arg(*args, OP*); - } - else { - SV *sv; - imop = NULL; - sv = va_arg(*args, SV*); - while (sv) { - imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); - sv = va_arg(*args, SV*); - } - } - { - const line_t ocopline = PL_copline; - COP * const ocurcop = PL_curcop; - const int oexpect = PL_expect; - -#if (PERL_BCDVERSION >= 0x5004000) - utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), - veop, modname, imop); -#elif (PERL_BCDVERSION > 0x5003000) - utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), - veop, modname, imop); -#else - utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), - modname, imop); -#endif - PL_expect = oexpect; - PL_copline = ocopline; - PL_curcop = ocurcop; - } -} - -#endif -#endif - -#ifndef load_module -#if defined(NEED_load_module) -static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); -static -#else -extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); -#endif - -#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) - -#ifdef load_module -# undef load_module -#endif -#define load_module DPPP_(my_load_module) -#define Perl_load_module DPPP_(my_load_module) - - -void -DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) -{ - va_list args; - va_start(args, ver); - vload_module(flags, name, ver, &args); - va_end(args); -} - -#endif -#endif -#ifndef newRV_inc -# define newRV_inc(sv) newRV(sv) /* Replace */ -#endif - -#ifndef newRV_noinc -#if defined(NEED_newRV_noinc) -static SV * DPPP_(my_newRV_noinc)(SV *sv); -static -#else -extern SV * DPPP_(my_newRV_noinc)(SV *sv); -#endif - -#if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL) - -#ifdef newRV_noinc -# undef newRV_noinc -#endif -#define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a) -#define Perl_newRV_noinc DPPP_(my_newRV_noinc) - -SV * -DPPP_(my_newRV_noinc)(SV *sv) -{ - SV *rv = (SV *)newRV(sv); - SvREFCNT_dec(sv); - return rv; -} -#endif -#endif - -/* Hint: newCONSTSUB - * Returns a CV* as of perl-5.7.1. This return value is not supported - * by Devel::PPPort. - */ - -/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ -#if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) -#if defined(NEED_newCONSTSUB) -static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); -static -#else -extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); -#endif - -#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL) - -#ifdef newCONSTSUB -# undef newCONSTSUB -#endif -#define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c) -#define Perl_newCONSTSUB DPPP_(my_newCONSTSUB) - - -/* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */ -/* (There's no PL_parser in perl < 5.005, so this is completely safe) */ -#define D_PPP_PL_copline PL_copline - -void -DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) -{ - U32 oldhints = PL_hints; - HV *old_cop_stash = PL_curcop->cop_stash; - HV *old_curstash = PL_curstash; - line_t oldline = PL_curcop->cop_line; - PL_curcop->cop_line = D_PPP_PL_copline; - - PL_hints &= ~HINT_BLOCK_SCOPE; - if (stash) - PL_curstash = PL_curcop->cop_stash = stash; - - newSUB( - -#if (PERL_BCDVERSION < 0x5003022) - start_subparse(), -#elif (PERL_BCDVERSION == 0x5003022) - start_subparse(0), -#else /* 5.003_23 onwards */ - start_subparse(FALSE, 0), -#endif - - newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), - newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ - newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) - ); - - PL_hints = oldhints; - PL_curcop->cop_stash = old_cop_stash; - PL_curstash = old_curstash; - PL_curcop->cop_line = oldline; -} -#endif -#endif - -/* - * Boilerplate macros for initializing and accessing interpreter-local - * data from C. All statics in extensions should be reworked to use - * this, if you want to make the extension thread-safe. See ext/re/re.xs - * for an example of the use of these macros. - * - * Code that uses these macros is responsible for the following: - * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts" - * 2. Declare a typedef named my_cxt_t that is a structure that contains - * all the data that needs to be interpreter-local. - * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. - * 4. Use the MY_CXT_INIT macro such that it is called exactly once - * (typically put in the BOOT: section). - * 5. Use the members of the my_cxt_t structure everywhere as - * MY_CXT.member. - * 6. Use the dMY_CXT macro (a declaration) in all the functions that - * access MY_CXT. - */ - -#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \ - defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT) - -#ifndef START_MY_CXT - -/* This must appear in all extensions that define a my_cxt_t structure, - * right after the definition (i.e. at file scope). The non-threads - * case below uses it to declare the data as static. */ -#define START_MY_CXT - -#if (PERL_BCDVERSION < 0x5004068) -/* Fetches the SV that keeps the per-interpreter data. */ -#define dMY_CXT_SV \ - SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE) -#else /* >= perl5.004_68 */ -#define dMY_CXT_SV \ - SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \ - sizeof(MY_CXT_KEY)-1, TRUE) -#endif /* < perl5.004_68 */ - -/* This declaration should be used within all functions that use the - * interpreter-local data. */ -#define dMY_CXT \ - dMY_CXT_SV; \ - my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv)) - -/* Creates and zeroes the per-interpreter data. - * (We allocate my_cxtp in a Perl SV so that it will be released when - * the interpreter goes away.) */ -#define MY_CXT_INIT \ - dMY_CXT_SV; \ - /* newSV() allocates one more than needed */ \ - my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ - Zero(my_cxtp, 1, my_cxt_t); \ - sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) - -/* This macro must be used to access members of the my_cxt_t structure. - * e.g. MYCXT.some_data */ -#define MY_CXT (*my_cxtp) - -/* Judicious use of these macros can reduce the number of times dMY_CXT - * is used. Use is similar to pTHX, aTHX etc. */ -#define pMY_CXT my_cxt_t *my_cxtp -#define pMY_CXT_ pMY_CXT, -#define _pMY_CXT ,pMY_CXT -#define aMY_CXT my_cxtp -#define aMY_CXT_ aMY_CXT, -#define _aMY_CXT ,aMY_CXT - -#endif /* START_MY_CXT */ - -#ifndef MY_CXT_CLONE -/* Clones the per-interpreter data. */ -#define MY_CXT_CLONE \ - dMY_CXT_SV; \ - my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ - Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\ - sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) -#endif - -#else /* single interpreter */ - -#ifndef START_MY_CXT - -#define START_MY_CXT static my_cxt_t my_cxt; -#define dMY_CXT_SV dNOOP -#define dMY_CXT dNOOP -#define MY_CXT_INIT NOOP -#define MY_CXT my_cxt - -#define pMY_CXT void -#define pMY_CXT_ -#define _pMY_CXT -#define aMY_CXT -#define aMY_CXT_ -#define _aMY_CXT - -#endif /* START_MY_CXT */ - -#ifndef MY_CXT_CLONE -#define MY_CXT_CLONE NOOP -#endif - -#endif - -#ifndef IVdf -# if IVSIZE == LONGSIZE -# define IVdf "ld" -# define UVuf "lu" -# define UVof "lo" -# define UVxf "lx" -# define UVXf "lX" -# elif IVSIZE == INTSIZE -# define IVdf "d" -# define UVuf "u" -# define UVof "o" -# define UVxf "x" -# define UVXf "X" -# else -# error "cannot define IV/UV formats" -# endif -#endif - -#ifndef NVef -# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \ - defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000) - /* Not very likely, but let's try anyway. */ -# define NVef PERL_PRIeldbl -# define NVff PERL_PRIfldbl -# define NVgf PERL_PRIgldbl -# else -# define NVef "e" -# define NVff "f" -# define NVgf "g" -# endif -#endif - -#ifndef SvREFCNT_inc -# ifdef PERL_USE_GCC_BRACE_GROUPS -# define SvREFCNT_inc(sv) \ - ({ \ - SV * const _sv = (SV*)(sv); \ - if (_sv) \ - (SvREFCNT(_sv))++; \ - _sv; \ - }) -# else -# define SvREFCNT_inc(sv) \ - ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) -# endif -#endif - -#ifndef SvREFCNT_inc_simple -# ifdef PERL_USE_GCC_BRACE_GROUPS -# define SvREFCNT_inc_simple(sv) \ - ({ \ - if (sv) \ - (SvREFCNT(sv))++; \ - (SV *)(sv); \ - }) -# else -# define SvREFCNT_inc_simple(sv) \ - ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) -# endif -#endif - -#ifndef SvREFCNT_inc_NN -# ifdef PERL_USE_GCC_BRACE_GROUPS -# define SvREFCNT_inc_NN(sv) \ - ({ \ - SV * const _sv = (SV*)(sv); \ - SvREFCNT(_sv)++; \ - _sv; \ - }) -# else -# define SvREFCNT_inc_NN(sv) \ - (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) -# endif -#endif - -#ifndef SvREFCNT_inc_void -# ifdef PERL_USE_GCC_BRACE_GROUPS -# define SvREFCNT_inc_void(sv) \ - ({ \ - SV * const _sv = (SV*)(sv); \ - if (_sv) \ - (void)(SvREFCNT(_sv)++); \ - }) -# else -# define SvREFCNT_inc_void(sv) \ - (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) -# endif -#endif -#ifndef SvREFCNT_inc_simple_void -# define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END -#endif - -#ifndef SvREFCNT_inc_simple_NN -# define SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv)) -#endif - -#ifndef SvREFCNT_inc_void_NN -# define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) -#endif - -#ifndef SvREFCNT_inc_simple_void_NN -# define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) -#endif - -#ifndef newSV_type - -#if defined(NEED_newSV_type) -static SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); -static -#else -extern SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); -#endif - -#if defined(NEED_newSV_type) || defined(NEED_newSV_type_GLOBAL) - -#ifdef newSV_type -# undef newSV_type -#endif -#define newSV_type(a) DPPP_(my_newSV_type)(aTHX_ a) -#define Perl_newSV_type DPPP_(my_newSV_type) - - -SV* -DPPP_(my_newSV_type)(pTHX_ svtype const t) -{ - SV* const sv = newSV(0); - sv_upgrade(sv, t); - return sv; -} - -#endif - -#endif - -#if (PERL_BCDVERSION < 0x5006000) -# define D_PPP_CONSTPV_ARG(x) ((char *) (x)) -#else -# define D_PPP_CONSTPV_ARG(x) (x) -#endif -#ifndef newSVpvn -# define newSVpvn(data,len) ((data) \ - ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ - : newSV(0)) -#endif -#ifndef newSVpvn_utf8 -# define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0) -#endif -#ifndef SVf_UTF8 -# define SVf_UTF8 0 -#endif - -#ifndef newSVpvn_flags - -#if defined(NEED_newSVpvn_flags) -static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); -static -#else -extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); -#endif - -#if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL) - -#ifdef newSVpvn_flags -# undef newSVpvn_flags -#endif -#define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c) -#define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags) - - -SV * -DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags) -{ - SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len); - SvFLAGS(sv) |= (flags & SVf_UTF8); - return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv; -} - -#endif - -#endif - -/* Backwards compatibility stuff... :-( */ -#if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen) -# define NEED_sv_2pv_flags -#endif -#if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL) -# define NEED_sv_2pv_flags_GLOBAL -#endif - -/* Hint: sv_2pv_nolen - * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen(). - */ -#ifndef sv_2pv_nolen -# define sv_2pv_nolen(sv) SvPV_nolen(sv) -#endif - -#ifdef SvPVbyte - -/* Hint: SvPVbyte - * Does not work in perl-5.6.1, ppport.h implements a version - * borrowed from perl-5.7.3. - */ - -#if (PERL_BCDVERSION < 0x5007000) - -#if defined(NEED_sv_2pvbyte) -static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); -static -#else -extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); -#endif - -#if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL) - -#ifdef sv_2pvbyte -# undef sv_2pvbyte -#endif -#define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b) -#define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte) - - -char * -DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp) -{ - sv_utf8_downgrade(sv,0); - return SvPV(sv,*lp); -} - -#endif - -/* Hint: sv_2pvbyte - * Use the SvPVbyte() macro instead of sv_2pvbyte(). - */ - -#undef SvPVbyte - -#define SvPVbyte(sv, lp) \ - ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ - ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) - -#endif - -#else - -# define SvPVbyte SvPV -# define sv_2pvbyte sv_2pv - -#endif -#ifndef sv_2pvbyte_nolen -# define sv_2pvbyte_nolen(sv) sv_2pv_nolen(sv) -#endif - -/* Hint: sv_pvn - * Always use the SvPV() macro instead of sv_pvn(). - */ - -/* Hint: sv_pvn_force - * Always use the SvPV_force() macro instead of sv_pvn_force(). - */ - -/* If these are undefined, they're not handled by the core anyway */ -#ifndef SV_IMMEDIATE_UNREF -# define SV_IMMEDIATE_UNREF 0 -#endif - -#ifndef SV_GMAGIC -# define SV_GMAGIC 0 -#endif - -#ifndef SV_COW_DROP_PV -# define SV_COW_DROP_PV 0 -#endif - -#ifndef SV_UTF8_NO_ENCODING -# define SV_UTF8_NO_ENCODING 0 -#endif - -#ifndef SV_NOSTEAL -# define SV_NOSTEAL 0 -#endif - -#ifndef SV_CONST_RETURN -# define SV_CONST_RETURN 0 -#endif - -#ifndef SV_MUTABLE_RETURN -# define SV_MUTABLE_RETURN 0 -#endif - -#ifndef SV_SMAGIC -# define SV_SMAGIC 0 -#endif - -#ifndef SV_HAS_TRAILING_NUL -# define SV_HAS_TRAILING_NUL 0 -#endif - -#ifndef SV_COW_SHARED_HASH_KEYS -# define SV_COW_SHARED_HASH_KEYS 0 -#endif - -#if (PERL_BCDVERSION < 0x5007002) - -#if defined(NEED_sv_2pv_flags) -static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); -static -#else -extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); -#endif - -#if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL) - -#ifdef sv_2pv_flags -# undef sv_2pv_flags -#endif -#define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c) -#define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags) - - -char * -DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) -{ - STRLEN n_a = (STRLEN) flags; - return sv_2pv(sv, lp ? lp : &n_a); -} - -#endif - -#if defined(NEED_sv_pvn_force_flags) -static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); -static -#else -extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); -#endif - -#if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL) - -#ifdef sv_pvn_force_flags -# undef sv_pvn_force_flags -#endif -#define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c) -#define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags) - - -char * -DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) -{ - STRLEN n_a = (STRLEN) flags; - return sv_pvn_force(sv, lp ? lp : &n_a); -} - -#endif - -#endif - -#if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) ) -# define D_PPP_SVPV_NOLEN_LP_ARG &PL_na -#else -# define D_PPP_SVPV_NOLEN_LP_ARG 0 -#endif -#ifndef SvPV_const -# define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC) -#endif - -#ifndef SvPV_mutable -# define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC) -#endif -#ifndef SvPV_flags -# define SvPV_flags(sv, lp, flags) \ - ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ - ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) -#endif -#ifndef SvPV_flags_const -# define SvPV_flags_const(sv, lp, flags) \ - ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ - ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ - (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) -#endif -#ifndef SvPV_flags_const_nolen -# define SvPV_flags_const_nolen(sv, flags) \ - ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ - ? SvPVX_const(sv) : \ - (const char*) sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN)) -#endif -#ifndef SvPV_flags_mutable -# define SvPV_flags_mutable(sv, lp, flags) \ - ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ - ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ - sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) -#endif -#ifndef SvPV_force -# define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC) -#endif - -#ifndef SvPV_force_nolen -# define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC) -#endif - -#ifndef SvPV_force_mutable -# define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) -#endif - -#ifndef SvPV_force_nomg -# define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0) -#endif - -#ifndef SvPV_force_nomg_nolen -# define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0) -#endif -#ifndef SvPV_force_flags -# define SvPV_force_flags(sv, lp, flags) \ - ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ - ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) -#endif -#ifndef SvPV_force_flags_nolen -# define SvPV_force_flags_nolen(sv, flags) \ - ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ - ? SvPVX(sv) : sv_pvn_force_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags)) -#endif -#ifndef SvPV_force_flags_mutable -# define SvPV_force_flags_mutable(sv, lp, flags) \ - ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ - ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ - : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) -#endif -#ifndef SvPV_nolen -# define SvPV_nolen(sv) \ - ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ - ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC)) -#endif -#ifndef SvPV_nolen_const -# define SvPV_nolen_const(sv) \ - ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ - ? SvPVX_const(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN)) -#endif -#ifndef SvPV_nomg -# define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) -#endif - -#ifndef SvPV_nomg_const -# define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) -#endif - -#ifndef SvPV_nomg_const_nolen -# define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0) -#endif - -#ifndef SvPV_nomg_nolen -# define SvPV_nomg_nolen(sv) ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ - ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, 0)) -#endif -#ifndef SvPV_renew -# define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \ - SvPV_set((sv), (char *) saferealloc( \ - (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \ - } STMT_END -#endif -#ifndef SvMAGIC_set -# define SvMAGIC_set(sv, val) \ - STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ - (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END -#endif - -#if (PERL_BCDVERSION < 0x5009003) -#ifndef SvPVX_const -# define SvPVX_const(sv) ((const char*) (0 + SvPVX(sv))) -#endif - -#ifndef SvPVX_mutable -# define SvPVX_mutable(sv) (0 + SvPVX(sv)) -#endif -#ifndef SvRV_set -# define SvRV_set(sv, val) \ - STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ - (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END -#endif - -#else -#ifndef SvPVX_const -# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) -#endif - -#ifndef SvPVX_mutable -# define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) -#endif -#ifndef SvRV_set -# define SvRV_set(sv, val) \ - STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ - ((sv)->sv_u.svu_rv = (val)); } STMT_END -#endif - -#endif -#ifndef SvSTASH_set -# define SvSTASH_set(sv, val) \ - STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ - (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END -#endif - -#if (PERL_BCDVERSION < 0x5004000) -#ifndef SvUV_set -# define SvUV_set(sv, val) \ - STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ - (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END -#endif - -#else -#ifndef SvUV_set -# define SvUV_set(sv, val) \ - STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ - (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END -#endif - -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf) -#if defined(NEED_vnewSVpvf) -static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); -static -#else -extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); -#endif - -#if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL) - -#ifdef vnewSVpvf -# undef vnewSVpvf -#endif -#define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b) -#define Perl_vnewSVpvf DPPP_(my_vnewSVpvf) - - -SV * -DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args) -{ - register SV *sv = newSV(0); - sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); - return sv; -} - -#endif -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf) -# define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf) -# define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg) -#if defined(NEED_sv_catpvf_mg) -static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); -static -#else -extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); -#endif - -#if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL) - -#define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg) - - -void -DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...) -{ - va_list args; - va_start(args, pat); - sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); - SvSETMAGIC(sv); - va_end(args); -} - -#endif -#endif - -#ifdef PERL_IMPLICIT_CONTEXT -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext) -#if defined(NEED_sv_catpvf_mg_nocontext) -static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); -static -#else -extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); -#endif - -#if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL) - -#define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) -#define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) - - -void -DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...) -{ - dTHX; - va_list args; - va_start(args, pat); - sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); - SvSETMAGIC(sv); - va_end(args); -} - -#endif -#endif -#endif - -/* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */ -#ifndef sv_catpvf_mg -# ifdef PERL_IMPLICIT_CONTEXT -# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext -# else -# define sv_catpvf_mg Perl_sv_catpvf_mg -# endif -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg) -# define sv_vcatpvf_mg(sv, pat, args) \ - STMT_START { \ - sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ - SvSETMAGIC(sv); \ - } STMT_END -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg) -#if defined(NEED_sv_setpvf_mg) -static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); -static -#else -extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); -#endif - -#if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL) - -#define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg) - - -void -DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...) -{ - va_list args; - va_start(args, pat); - sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); - SvSETMAGIC(sv); - va_end(args); -} - -#endif -#endif - -#ifdef PERL_IMPLICIT_CONTEXT -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext) -#if defined(NEED_sv_setpvf_mg_nocontext) -static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); -static -#else -extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); -#endif - -#if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL) - -#define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) -#define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) - - -void -DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) -{ - dTHX; - va_list args; - va_start(args, pat); - sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); - SvSETMAGIC(sv); - va_end(args); -} - -#endif -#endif -#endif - -/* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */ -#ifndef sv_setpvf_mg -# ifdef PERL_IMPLICIT_CONTEXT -# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext -# else -# define sv_setpvf_mg Perl_sv_setpvf_mg -# endif -#endif - -#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg) -# define sv_vsetpvf_mg(sv, pat, args) \ - STMT_START { \ - sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ - SvSETMAGIC(sv); \ - } STMT_END -#endif - -/* Hint: newSVpvn_share - * The SVs created by this function only mimic the behaviour of - * shared PVs without really being shared. Only use if you know - * what you're doing. - */ - -#ifndef newSVpvn_share - -#if defined(NEED_newSVpvn_share) -static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); -static -#else -extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); -#endif - -#if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL) - -#ifdef newSVpvn_share -# undef newSVpvn_share -#endif -#define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c) -#define Perl_newSVpvn_share DPPP_(my_newSVpvn_share) - - -SV * -DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash) -{ - SV *sv; - if (len < 0) - len = -len; - if (!hash) - PERL_HASH(hash, (char*) src, len); - sv = newSVpvn((char *) src, len); - sv_upgrade(sv, SVt_PVIV); - SvIVX(sv) = hash; - SvREADONLY_on(sv); - SvPOK_on(sv); - return sv; -} - -#endif - -#endif -#ifndef SvSHARED_HASH -# define SvSHARED_HASH(sv) (0 + SvUVX(sv)) -#endif -#ifndef HvNAME_get -# define HvNAME_get(hv) HvNAME(hv) -#endif -#ifndef HvNAMELEN_get -# define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0) -#endif - -#ifndef gv_fetchpvn_flags -#if defined(NEED_gv_fetchpvn_flags) -static GV* DPPP_(my_gv_fetchpvn_flags)(pTHX_ const char* name, STRLEN len, int flags, int types); -static -#else -extern GV* DPPP_(my_gv_fetchpvn_flags)(pTHX_ const char* name, STRLEN len, int flags, int types); -#endif - -#if defined(NEED_gv_fetchpvn_flags) || defined(NEED_gv_fetchpvn_flags_GLOBAL) - -#ifdef gv_fetchpvn_flags -# undef gv_fetchpvn_flags -#endif -#define gv_fetchpvn_flags(a,b,c,d) DPPP_(my_gv_fetchpvn_flags)(aTHX_ a,b,c,d) -#define Perl_gv_fetchpvn_flags DPPP_(my_gv_fetchpvn_flags) - - -GV* -DPPP_(my_gv_fetchpvn_flags)(pTHX_ const char* name, STRLEN len, int flags, int types) { - char *namepv = savepvn(name, len); - GV* stash = gv_fetchpv(namepv, TRUE, SVt_PVHV); - Safefree(namepv); - return stash; -} - -#endif -#endif -#ifndef GvSVn -# define GvSVn(gv) GvSV(gv) -#endif - -#ifndef isGV_with_GP -# define isGV_with_GP(gv) isGV(gv) -#endif - -#ifndef gv_fetchsv -# define gv_fetchsv(name, flags, svt) gv_fetchpv(SvPV_nolen_const(name), flags, svt) -#endif -#ifndef get_cvn_flags -# define get_cvn_flags(name, namelen, flags) get_cv(name, flags) -#endif - -#ifndef gv_init_pvn -# define gv_init_pvn(gv, stash, ptr, len, flags) gv_init(gv, stash, ptr, len, flags & GV_ADDMULTI ? TRUE : FALSE) -#endif - -/* concatenating with "" ensures that only literal strings are accepted as argument - * note that STR_WITH_LEN() can't be used as argument to macros or functions that - * under some configurations might be macros - */ -#ifndef STR_WITH_LEN -# define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) -#endif -#ifndef newSVpvs -# define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) -#endif - -#ifndef newSVpvs_flags -# define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags) -#endif - -#ifndef newSVpvs_share -# define newSVpvs_share(str) newSVpvn_share(str "", sizeof(str) - 1, 0) -#endif - -#ifndef sv_catpvs -# define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) -#endif - -#ifndef sv_setpvs -# define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) -#endif - -#ifndef hv_fetchs -# define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) -#endif - -#ifndef hv_stores -# define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0) -#endif -#ifndef gv_fetchpvs -# define gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt) -#endif - -#ifndef gv_stashpvs -# define gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags) -#endif -#ifndef get_cvs -# define get_cvs(name, flags) get_cvn_flags(name "", sizeof(name)-1, flags) -#endif -#ifndef SvGETMAGIC -# define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END -#endif - -/* That's the best we can do... */ -#ifndef sv_catpvn_nomg -# define sv_catpvn_nomg sv_catpvn -#endif - -#ifndef sv_catsv_nomg -# define sv_catsv_nomg sv_catsv -#endif - -#ifndef sv_setsv_nomg -# define sv_setsv_nomg sv_setsv -#endif - -#ifndef sv_pvn_nomg -# define sv_pvn_nomg sv_pvn -#endif - -#ifndef SvIV_nomg -# define SvIV_nomg SvIV -#endif - -#ifndef SvUV_nomg -# define SvUV_nomg SvUV -#endif - -#ifndef sv_catpv_mg -# define sv_catpv_mg(sv, ptr) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_catpv(TeMpSv,ptr); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_catpvn_mg -# define sv_catpvn_mg(sv, ptr, len) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_catpvn(TeMpSv,ptr,len); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_catsv_mg -# define sv_catsv_mg(dsv, ssv) \ - STMT_START { \ - SV *TeMpSv = dsv; \ - sv_catsv(TeMpSv,ssv); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_setiv_mg -# define sv_setiv_mg(sv, i) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_setiv(TeMpSv,i); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_setnv_mg -# define sv_setnv_mg(sv, num) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_setnv(TeMpSv,num); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_setpv_mg -# define sv_setpv_mg(sv, ptr) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_setpv(TeMpSv,ptr); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_setpvn_mg -# define sv_setpvn_mg(sv, ptr, len) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_setpvn(TeMpSv,ptr,len); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_setsv_mg -# define sv_setsv_mg(dsv, ssv) \ - STMT_START { \ - SV *TeMpSv = dsv; \ - sv_setsv(TeMpSv,ssv); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_setuv_mg -# define sv_setuv_mg(sv, i) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_setuv(TeMpSv,i); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif - -#ifndef sv_usepvn_mg -# define sv_usepvn_mg(sv, ptr, len) \ - STMT_START { \ - SV *TeMpSv = sv; \ - sv_usepvn(TeMpSv,ptr,len); \ - SvSETMAGIC(TeMpSv); \ - } STMT_END -#endif -#ifndef SvVSTRING_mg -# define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) -#endif - -/* Hint: sv_magic_portable - * This is a compatibility function that is only available with - * Devel::PPPort. It is NOT in the perl core. - * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when - * it is being passed a name pointer with namlen == 0. In that - * case, perl 5.8.0 and later store the pointer, not a copy of it. - * The compatibility can be provided back to perl 5.004. With - * earlier versions, the code will not compile. - */ - -#if (PERL_BCDVERSION < 0x5004000) - - /* code that uses sv_magic_portable will not compile */ - -#elif (PERL_BCDVERSION < 0x5008000) - -# define sv_magic_portable(sv, obj, how, name, namlen) \ - STMT_START { \ - SV *SvMp_sv = (sv); \ - char *SvMp_name = (char *) (name); \ - I32 SvMp_namlen = (namlen); \ - if (SvMp_name && SvMp_namlen == 0) \ - { \ - MAGIC *mg; \ - sv_magic(SvMp_sv, obj, how, 0, 0); \ - mg = SvMAGIC(SvMp_sv); \ - mg->mg_len = -42; /* XXX: this is the tricky part */ \ - mg->mg_ptr = SvMp_name; \ - } \ - else \ - { \ - sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \ - } \ - } STMT_END - -#else - -# define sv_magic_portable(a, b, c, d, e) sv_magic(a, b, c, d, e) - -#endif - -#if !defined(mg_findext) -#if defined(NEED_mg_findext) -static MAGIC * DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl); -static -#else -extern MAGIC * DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl); -#endif - -#if defined(NEED_mg_findext) || defined(NEED_mg_findext_GLOBAL) - -#define mg_findext DPPP_(my_mg_findext) -#define Perl_mg_findext DPPP_(my_mg_findext) - - -MAGIC * -DPPP_(my_mg_findext)(SV * sv, int type, const MGVTBL *vtbl) { - if (sv) { - MAGIC *mg; - -#ifdef AvPAD_NAMELIST - assert(!(SvTYPE(sv) == SVt_PVAV && AvPAD_NAMELIST(sv))); -#endif - - for (mg = SvMAGIC (sv); mg; mg = mg->mg_moremagic) { - if (mg->mg_type == type && mg->mg_virtual == vtbl) - return mg; - } - } - - return NULL; -} - -#endif -#endif - -#if !defined(sv_unmagicext) -#if defined(NEED_sv_unmagicext) -static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl); -static -#else -extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl); -#endif - -#if defined(NEED_sv_unmagicext) || defined(NEED_sv_unmagicext_GLOBAL) - -#ifdef sv_unmagicext -# undef sv_unmagicext -#endif -#define sv_unmagicext(a,b,c) DPPP_(my_sv_unmagicext)(aTHX_ a,b,c) -#define Perl_sv_unmagicext DPPP_(my_sv_unmagicext) - - -int -DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, MGVTBL *vtbl) -{ - MAGIC* mg; - MAGIC** mgp; - - if (SvTYPE(sv) < SVt_PVMG || !SvMAGIC(sv)) - return 0; - mgp = &(SvMAGIC(sv)); - for (mg = *mgp; mg; mg = *mgp) { - const MGVTBL* const virt = mg->mg_virtual; - if (mg->mg_type == type && virt == vtbl) { - *mgp = mg->mg_moremagic; - if (virt && virt->svt_free) - virt->svt_free(aTHX_ sv, mg); - if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) { - if (mg->mg_len > 0) - Safefree(mg->mg_ptr); - else if (mg->mg_len == HEf_SVKEY) /* Questionable on older perls... */ - SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr)); - else if (mg->mg_type == PERL_MAGIC_utf8) - Safefree(mg->mg_ptr); - } - if (mg->mg_flags & MGf_REFCOUNTED) - SvREFCNT_dec(mg->mg_obj); - Safefree(mg); - } - else - mgp = &mg->mg_moremagic; - } - if (SvMAGIC(sv)) { - if (SvMAGICAL(sv)) /* if we're under save_magic, wait for restore_magic; */ - mg_magical(sv); /* else fix the flags now */ - } - else { - SvMAGICAL_off(sv); - SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT; - } - return 0; -} - -#endif -#endif - -#ifdef USE_ITHREADS -#ifndef CopFILE -# define CopFILE(c) ((c)->cop_file) -#endif - -#ifndef CopFILEGV -# define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv) -#endif - -#ifndef CopFILE_set -# define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) -#endif - -#ifndef CopFILESV -# define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv) -#endif - -#ifndef CopFILEAV -# define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav) -#endif - -#ifndef CopSTASHPV -# define CopSTASHPV(c) ((c)->cop_stashpv) -#endif - -#ifndef CopSTASHPV_set -# define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch)) -#endif - -#ifndef CopSTASH -# define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv) -#endif - -#ifndef CopSTASH_set -# define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch) -#endif - -#ifndef CopSTASH_eq -# define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \ - || (CopSTASHPV(c) && HvNAME(hv) \ - && strEQ(CopSTASHPV(c), HvNAME(hv))))) -#endif - -#else -#ifndef CopFILEGV -# define CopFILEGV(c) ((c)->cop_filegv) -#endif - -#ifndef CopFILEGV_set -# define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) -#endif - -#ifndef CopFILE_set -# define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) -#endif - -#ifndef CopFILESV -# define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv) -#endif - -#ifndef CopFILEAV -# define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav) -#endif - -#ifndef CopFILE -# define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch) -#endif - -#ifndef CopSTASH -# define CopSTASH(c) ((c)->cop_stash) -#endif - -#ifndef CopSTASH_set -# define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) -#endif - -#ifndef CopSTASHPV -# define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch) -#endif - -#ifndef CopSTASHPV_set -# define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) -#endif - -#ifndef CopSTASH_eq -# define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) -#endif - -#endif /* USE_ITHREADS */ - -#if (PERL_BCDVERSION >= 0x5006000) -#ifndef caller_cx - -# if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) -static I32 -DPPP_dopoptosub_at(const PERL_CONTEXT *cxstk, I32 startingblock) -{ - I32 i; - - for (i = startingblock; i >= 0; i--) { - register const PERL_CONTEXT * const cx = &cxstk[i]; - switch (CxTYPE(cx)) { - default: - continue; - case CXt_EVAL: - case CXt_SUB: - case CXt_FORMAT: - return i; - } - } - return i; -} -# endif - -# if defined(NEED_caller_cx) -static const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp); -static -#else -extern const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp); -#endif - -#if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) - -#ifdef caller_cx -# undef caller_cx -#endif -#define caller_cx(a,b) DPPP_(my_caller_cx)(aTHX_ a,b) -#define Perl_caller_cx DPPP_(my_caller_cx) - - -const PERL_CONTEXT * -DPPP_(my_caller_cx)(pTHX_ I32 count, const PERL_CONTEXT **dbcxp) -{ - register I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix); - register const PERL_CONTEXT *cx; - register const PERL_CONTEXT *ccstack = cxstack; - const PERL_SI *top_si = PL_curstackinfo; - - for (;;) { - /* we may be in a higher stacklevel, so dig down deeper */ - while (cxix < 0 && top_si->si_type != PERLSI_MAIN) { - top_si = top_si->si_prev; - ccstack = top_si->si_cxstack; - cxix = DPPP_dopoptosub_at(ccstack, top_si->si_cxix); - } - if (cxix < 0) - return NULL; - /* caller() should not report the automatic calls to &DB::sub */ - if (PL_DBsub && GvCV(PL_DBsub) && cxix >= 0 && - ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub)) - count++; - if (!count--) - break; - cxix = DPPP_dopoptosub_at(ccstack, cxix - 1); - } - - cx = &ccstack[cxix]; - if (dbcxp) *dbcxp = cx; - - if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) { - const I32 dbcxix = DPPP_dopoptosub_at(ccstack, cxix - 1); - /* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the - field below is defined for any cx. */ - /* caller() should not report the automatic calls to &DB::sub */ - if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) - cx = &ccstack[dbcxix]; - } - - return cx; -} - -# endif -#endif /* caller_cx */ -#endif /* 5.6.0 */ -#ifndef IN_PERL_COMPILETIME -# define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) -#endif - -#ifndef IN_LOCALE_RUNTIME -# define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE) -#endif - -#ifndef IN_LOCALE_COMPILETIME -# define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) -#endif - -#ifndef IN_LOCALE -# define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) -#endif -#ifndef IS_NUMBER_IN_UV -# define IS_NUMBER_IN_UV 0x01 -#endif - -#ifndef IS_NUMBER_GREATER_THAN_UV_MAX -# define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 -#endif - -#ifndef IS_NUMBER_NOT_INT -# define IS_NUMBER_NOT_INT 0x04 -#endif - -#ifndef IS_NUMBER_NEG -# define IS_NUMBER_NEG 0x08 -#endif - -#ifndef IS_NUMBER_INFINITY -# define IS_NUMBER_INFINITY 0x10 -#endif - -#ifndef IS_NUMBER_NAN -# define IS_NUMBER_NAN 0x20 -#endif -#ifndef GROK_NUMERIC_RADIX -# define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) -#endif -#ifndef PERL_SCAN_GREATER_THAN_UV_MAX -# define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 -#endif - -#ifndef PERL_SCAN_SILENT_ILLDIGIT -# define PERL_SCAN_SILENT_ILLDIGIT 0x04 -#endif - -#ifndef PERL_SCAN_ALLOW_UNDERSCORES -# define PERL_SCAN_ALLOW_UNDERSCORES 0x01 -#endif - -#ifndef PERL_SCAN_DISALLOW_PREFIX -# define PERL_SCAN_DISALLOW_PREFIX 0x02 -#endif - -#ifndef grok_numeric_radix -#if defined(NEED_grok_numeric_radix) -static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); -static -#else -extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); -#endif - -#if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL) - -#ifdef grok_numeric_radix -# undef grok_numeric_radix -#endif -#define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b) -#define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix) - -bool -DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send) -{ -#ifdef USE_LOCALE_NUMERIC -#ifdef PL_numeric_radix_sv - if (PL_numeric_radix_sv && IN_LOCALE) { - STRLEN len; - char* radix = SvPV(PL_numeric_radix_sv, len); - if (*sp + len <= send && memEQ(*sp, radix, len)) { - *sp += len; - return TRUE; - } - } -#else - /* older perls don't have PL_numeric_radix_sv so the radix - * must manually be requested from locale.h - */ -#include - dTHR; /* needed for older threaded perls */ - struct lconv *lc = localeconv(); - char *radix = lc->decimal_point; - if (radix && IN_LOCALE) { - STRLEN len = strlen(radix); - if (*sp + len <= send && memEQ(*sp, radix, len)) { - *sp += len; - return TRUE; - } - } -#endif -#endif /* USE_LOCALE_NUMERIC */ - /* always try "." if numeric radix didn't match because - * we may have data from different locales mixed */ - if (*sp < send && **sp == '.') { - ++*sp; - return TRUE; - } - return FALSE; -} -#endif -#endif - -#ifndef grok_number -#if defined(NEED_grok_number) -static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); -static -#else -extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); -#endif - -#if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL) - -#ifdef grok_number -# undef grok_number -#endif -#define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c) -#define Perl_grok_number DPPP_(my_grok_number) - -int -DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep) -{ - const char *s = pv; - const char *send = pv + len; - const UV max_div_10 = UV_MAX / 10; - const char max_mod_10 = UV_MAX % 10; - int numtype = 0; - int sawinf = 0; - int sawnan = 0; - - while (s < send && isSPACE(*s)) - s++; - if (s == send) { - return 0; - } else if (*s == '-') { - s++; - numtype = IS_NUMBER_NEG; - } - else if (*s == '+') - s++; - - if (s == send) - return 0; - - /* next must be digit or the radix separator or beginning of infinity */ - if (isDIGIT(*s)) { - /* UVs are at least 32 bits, so the first 9 decimal digits cannot - overflow. */ - UV value = *s - '0'; - /* This construction seems to be more optimiser friendly. - (without it gcc does the isDIGIT test and the *s - '0' separately) - With it gcc on arm is managing 6 instructions (6 cycles) per digit. - In theory the optimiser could deduce how far to unroll the loop - before checking for overflow. */ - if (++s < send) { - int digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - digit = *s - '0'; - if (digit >= 0 && digit <= 9) { - value = value * 10 + digit; - if (++s < send) { - /* Now got 9 digits, so need to check - each time for overflow. */ - digit = *s - '0'; - while (digit >= 0 && digit <= 9 - && (value < max_div_10 - || (value == max_div_10 - && digit <= max_mod_10))) { - value = value * 10 + digit; - if (++s < send) - digit = *s - '0'; - else - break; - } - if (digit >= 0 && digit <= 9 - && (s < send)) { - /* value overflowed. - skip the remaining digits, don't - worry about setting *valuep. */ - do { - s++; - } while (s < send && isDIGIT(*s)); - numtype |= - IS_NUMBER_GREATER_THAN_UV_MAX; - goto skip_value; - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - numtype |= IS_NUMBER_IN_UV; - if (valuep) - *valuep = value; - - skip_value: - if (GROK_NUMERIC_RADIX(&s, send)) { - numtype |= IS_NUMBER_NOT_INT; - while (s < send && isDIGIT(*s)) /* optional digits after the radix */ - s++; - } - } - else if (GROK_NUMERIC_RADIX(&s, send)) { - numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */ - /* no digits before the radix means we need digits after it */ - if (s < send && isDIGIT(*s)) { - do { - s++; - } while (s < send && isDIGIT(*s)); - if (valuep) { - /* integer approximation is valid - it's 0. */ - *valuep = 0; - } - } - else - return 0; - } else if (*s == 'I' || *s == 'i') { - s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; - s++; if (s == send || (*s != 'F' && *s != 'f')) return 0; - s++; if (s < send && (*s == 'I' || *s == 'i')) { - s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; - s++; if (s == send || (*s != 'I' && *s != 'i')) return 0; - s++; if (s == send || (*s != 'T' && *s != 't')) return 0; - s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0; - s++; - } - sawinf = 1; - } else if (*s == 'N' || *s == 'n') { - /* XXX TODO: There are signaling NaNs and quiet NaNs. */ - s++; if (s == send || (*s != 'A' && *s != 'a')) return 0; - s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; - s++; - sawnan = 1; - } else - return 0; - - if (sawinf) { - numtype &= IS_NUMBER_NEG; /* Keep track of sign */ - numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; - } else if (sawnan) { - numtype &= IS_NUMBER_NEG; /* Keep track of sign */ - numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT; - } else if (s < send) { - /* we can have an optional exponent part */ - if (*s == 'e' || *s == 'E') { - /* The only flag we keep is sign. Blow away any "it's UV" */ - numtype &= IS_NUMBER_NEG; - numtype |= IS_NUMBER_NOT_INT; - s++; - if (s < send && (*s == '-' || *s == '+')) - s++; - if (s < send && isDIGIT(*s)) { - do { - s++; - } while (s < send && isDIGIT(*s)); - } - else - return 0; - } - } - while (s < send && isSPACE(*s)) - s++; - if (s >= send) - return numtype; - if (len == 10 && memEQ(pv, "0 but true", 10)) { - if (valuep) - *valuep = 0; - return IS_NUMBER_IN_UV; - } - return 0; -} -#endif -#endif - -/* - * The grok_* routines have been modified to use warn() instead of - * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit, - * which is why the stack variable has been renamed to 'xdigit'. - */ - -#ifndef grok_bin -#if defined(NEED_grok_bin) -static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); -static -#else -extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); -#endif - -#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) - -#ifdef grok_bin -# undef grok_bin -#endif -#define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d) -#define Perl_grok_bin DPPP_(my_grok_bin) - -UV -DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) -{ - const char *s = start; - STRLEN len = *len_p; - UV value = 0; - NV value_nv = 0; - - const UV max_div_2 = UV_MAX / 2; - bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; - bool overflowed = FALSE; - - if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { - /* strip off leading b or 0b. - for compatibility silently suffer "b" and "0b" as valid binary - numbers. */ - if (len >= 1) { - if (s[0] == 'b') { - s++; - len--; - } - else if (len >= 2 && s[0] == '0' && s[1] == 'b') { - s+=2; - len-=2; - } - } - } - - for (; len-- && *s; s++) { - char bit = *s; - if (bit == '0' || bit == '1') { - /* Write it in this wonky order with a goto to attempt to get the - compiler to make the common case integer-only loop pretty tight. - With gcc seems to be much straighter code than old scan_bin. */ - redo: - if (!overflowed) { - if (value <= max_div_2) { - value = (value << 1) | (bit - '0'); - continue; - } - /* Bah. We're just overflowed. */ - warn("Integer overflow in binary number"); - overflowed = TRUE; - value_nv = (NV) value; - } - value_nv *= 2.0; - /* If an NV has not enough bits in its mantissa to - * represent a UV this summing of small low-order numbers - * is a waste of time (because the NV cannot preserve - * the low-order bits anyway): we could just remember when - * did we overflow and in the end just multiply value_nv by the - * right amount. */ - value_nv += (NV)(bit - '0'); - continue; - } - if (bit == '_' && len && allow_underscores && (bit = s[1]) - && (bit == '0' || bit == '1')) - { - --len; - ++s; - goto redo; - } - if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) - warn("Illegal binary digit '%c' ignored", *s); - break; - } - - if ( ( overflowed && value_nv > 4294967295.0) -#if UVSIZE > 4 - || (!overflowed && value > 0xffffffff ) -#endif - ) { - warn("Binary number > 0b11111111111111111111111111111111 non-portable"); - } - *len_p = s - start; - if (!overflowed) { - *flags = 0; - return value; - } - *flags = PERL_SCAN_GREATER_THAN_UV_MAX; - if (result) - *result = value_nv; - return UV_MAX; -} -#endif -#endif - -#ifndef grok_hex -#if defined(NEED_grok_hex) -static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); -static -#else -extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); -#endif - -#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) - -#ifdef grok_hex -# undef grok_hex -#endif -#define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d) -#define Perl_grok_hex DPPP_(my_grok_hex) - -UV -DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) -{ - const char *s = start; - STRLEN len = *len_p; - UV value = 0; - NV value_nv = 0; - - const UV max_div_16 = UV_MAX / 16; - bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; - bool overflowed = FALSE; - const char *xdigit; - - if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { - /* strip off leading x or 0x. - for compatibility silently suffer "x" and "0x" as valid hex numbers. - */ - if (len >= 1) { - if (s[0] == 'x') { - s++; - len--; - } - else if (len >= 2 && s[0] == '0' && s[1] == 'x') { - s+=2; - len-=2; - } - } - } - - for (; len-- && *s; s++) { - xdigit = strchr((char *) PL_hexdigit, *s); - if (xdigit) { - /* Write it in this wonky order with a goto to attempt to get the - compiler to make the common case integer-only loop pretty tight. - With gcc seems to be much straighter code than old scan_hex. */ - redo: - if (!overflowed) { - if (value <= max_div_16) { - value = (value << 4) | ((xdigit - PL_hexdigit) & 15); - continue; - } - warn("Integer overflow in hexadecimal number"); - overflowed = TRUE; - value_nv = (NV) value; - } - value_nv *= 16.0; - /* If an NV has not enough bits in its mantissa to - * represent a UV this summing of small low-order numbers - * is a waste of time (because the NV cannot preserve - * the low-order bits anyway): we could just remember when - * did we overflow and in the end just multiply value_nv by the - * right amount of 16-tuples. */ - value_nv += (NV)((xdigit - PL_hexdigit) & 15); - continue; - } - if (*s == '_' && len && allow_underscores && s[1] - && (xdigit = strchr((char *) PL_hexdigit, s[1]))) - { - --len; - ++s; - goto redo; - } - if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) - warn("Illegal hexadecimal digit '%c' ignored", *s); - break; - } - - if ( ( overflowed && value_nv > 4294967295.0) -#if UVSIZE > 4 - || (!overflowed && value > 0xffffffff ) -#endif - ) { - warn("Hexadecimal number > 0xffffffff non-portable"); - } - *len_p = s - start; - if (!overflowed) { - *flags = 0; - return value; - } - *flags = PERL_SCAN_GREATER_THAN_UV_MAX; - if (result) - *result = value_nv; - return UV_MAX; -} -#endif -#endif - -#ifndef grok_oct -#if defined(NEED_grok_oct) -static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); -static -#else -extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); -#endif - -#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) - -#ifdef grok_oct -# undef grok_oct -#endif -#define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d) -#define Perl_grok_oct DPPP_(my_grok_oct) - -UV -DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) -{ - const char *s = start; - STRLEN len = *len_p; - UV value = 0; - NV value_nv = 0; - - const UV max_div_8 = UV_MAX / 8; - bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; - bool overflowed = FALSE; - - for (; len-- && *s; s++) { - /* gcc 2.95 optimiser not smart enough to figure that this subtraction - out front allows slicker code. */ - int digit = *s - '0'; - if (digit >= 0 && digit <= 7) { - /* Write it in this wonky order with a goto to attempt to get the - compiler to make the common case integer-only loop pretty tight. - */ - redo: - if (!overflowed) { - if (value <= max_div_8) { - value = (value << 3) | digit; - continue; - } - /* Bah. We're just overflowed. */ - warn("Integer overflow in octal number"); - overflowed = TRUE; - value_nv = (NV) value; - } - value_nv *= 8.0; - /* If an NV has not enough bits in its mantissa to - * represent a UV this summing of small low-order numbers - * is a waste of time (because the NV cannot preserve - * the low-order bits anyway): we could just remember when - * did we overflow and in the end just multiply value_nv by the - * right amount of 8-tuples. */ - value_nv += (NV)digit; - continue; - } - if (digit == ('_' - '0') && len && allow_underscores - && (digit = s[1] - '0') && (digit >= 0 && digit <= 7)) - { - --len; - ++s; - goto redo; - } - /* Allow \octal to work the DWIM way (that is, stop scanning - * as soon as non-octal characters are seen, complain only iff - * someone seems to want to use the digits eight and nine). */ - if (digit == 8 || digit == 9) { - if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) - warn("Illegal octal digit '%c' ignored", *s); - } - break; - } - - if ( ( overflowed && value_nv > 4294967295.0) -#if UVSIZE > 4 - || (!overflowed && value > 0xffffffff ) -#endif - ) { - warn("Octal number > 037777777777 non-portable"); - } - *len_p = s - start; - if (!overflowed) { - *flags = 0; - return value; - } - *flags = PERL_SCAN_GREATER_THAN_UV_MAX; - if (result) - *result = value_nv; - return UV_MAX; -} -#endif -#endif - -#if !defined(my_snprintf) -#if defined(NEED_my_snprintf) -static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); -static -#else -extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); -#endif - -#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) - -#define my_snprintf DPPP_(my_my_snprintf) -#define Perl_my_snprintf DPPP_(my_my_snprintf) - - -int -DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) -{ - dTHX; - int retval; - va_list ap; - va_start(ap, format); -#ifdef HAS_VSNPRINTF - retval = vsnprintf(buffer, len, format, ap); -#else - retval = vsprintf(buffer, format, ap); -#endif - va_end(ap); - if (retval < 0 || (len > 0 && (Size_t)retval >= len)) - Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); - return retval; -} - -#endif -#endif - -#if !defined(my_sprintf) -#if defined(NEED_my_sprintf) -static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); -static -#else -extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); -#endif - -#if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL) - -#define my_sprintf DPPP_(my_my_sprintf) -#define Perl_my_sprintf DPPP_(my_my_sprintf) - - -int -DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...) -{ - va_list args; - va_start(args, pat); - vsprintf(buffer, pat, args); - va_end(args); - return strlen(buffer); -} - -#endif -#endif - -#ifdef NO_XSLOCKS -# ifdef dJMPENV -# define dXCPT dJMPENV; int rEtV = 0 -# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) -# define XCPT_TRY_END JMPENV_POP; -# define XCPT_CATCH if (rEtV != 0) -# define XCPT_RETHROW JMPENV_JUMP(rEtV) -# else -# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0 -# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0) -# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf); -# define XCPT_CATCH if (rEtV != 0) -# define XCPT_RETHROW Siglongjmp(top_env, rEtV) -# endif -#endif - -#if !defined(my_strlcat) -#if defined(NEED_my_strlcat) -static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); -static -#else -extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); -#endif - -#if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL) - -#define my_strlcat DPPP_(my_my_strlcat) -#define Perl_my_strlcat DPPP_(my_my_strlcat) - - -Size_t -DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size) -{ - Size_t used, length, copy; - - used = strlen(dst); - length = strlen(src); - if (size > 0 && used < size - 1) { - copy = (length >= size - used) ? size - used - 1 : length; - memcpy(dst + used, src, copy); - dst[used + copy] = '\0'; - } - return used + length; -} -#endif -#endif - -#if !defined(my_strlcpy) -#if defined(NEED_my_strlcpy) -static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); -static -#else -extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); -#endif - -#if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL) - -#define my_strlcpy DPPP_(my_my_strlcpy) -#define Perl_my_strlcpy DPPP_(my_my_strlcpy) - - -Size_t -DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size) -{ - Size_t length, copy; - - length = strlen(src); - if (size > 0) { - copy = (length >= size) ? size - 1 : length; - memcpy(dst, src, copy); - dst[copy] = '\0'; - } - return length; -} - -#endif -#endif -#ifndef PERL_PV_ESCAPE_QUOTE -# define PERL_PV_ESCAPE_QUOTE 0x0001 -#endif - -#ifndef PERL_PV_PRETTY_QUOTE -# define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE -#endif - -#ifndef PERL_PV_PRETTY_ELLIPSES -# define PERL_PV_PRETTY_ELLIPSES 0x0002 -#endif - -#ifndef PERL_PV_PRETTY_LTGT -# define PERL_PV_PRETTY_LTGT 0x0004 -#endif - -#ifndef PERL_PV_ESCAPE_FIRSTCHAR -# define PERL_PV_ESCAPE_FIRSTCHAR 0x0008 -#endif - -#ifndef PERL_PV_ESCAPE_UNI -# define PERL_PV_ESCAPE_UNI 0x0100 -#endif - -#ifndef PERL_PV_ESCAPE_UNI_DETECT -# define PERL_PV_ESCAPE_UNI_DETECT 0x0200 -#endif - -#ifndef PERL_PV_ESCAPE_ALL -# define PERL_PV_ESCAPE_ALL 0x1000 -#endif - -#ifndef PERL_PV_ESCAPE_NOBACKSLASH -# define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 -#endif - -#ifndef PERL_PV_ESCAPE_NOCLEAR -# define PERL_PV_ESCAPE_NOCLEAR 0x4000 -#endif - -#ifndef PERL_PV_ESCAPE_RE -# define PERL_PV_ESCAPE_RE 0x8000 -#endif - -#ifndef PERL_PV_PRETTY_NOCLEAR -# define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR -#endif -#ifndef PERL_PV_PRETTY_DUMP -# define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE -#endif - -#ifndef PERL_PV_PRETTY_REGPROP -# define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE -#endif - -/* Hint: pv_escape - * Note that unicode functionality is only backported to - * those perl versions that support it. For older perl - * versions, the implementation will fall back to bytes. - */ - -#ifndef pv_escape -#if defined(NEED_pv_escape) -static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); -static -#else -extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); -#endif - -#if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL) - -#ifdef pv_escape -# undef pv_escape -#endif -#define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f) -#define Perl_pv_escape DPPP_(my_pv_escape) - - -char * -DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str, - const STRLEN count, const STRLEN max, - STRLEN * const escaped, const U32 flags) -{ - const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\'; - const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc; - char octbuf[32] = "%123456789ABCDF"; - STRLEN wrote = 0; - STRLEN chsize = 0; - STRLEN readsize = 1; -#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) - bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0; -#endif - const char *pv = str; - const char * const end = pv + count; - octbuf[0] = esc; - - if (!(flags & PERL_PV_ESCAPE_NOCLEAR)) - sv_setpvs(dsv, ""); - -#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) - if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count)) - isuni = 1; -#endif - - for (; pv < end && (!max || wrote < max) ; pv += readsize) { - const UV u = -#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) - isuni ? utf8_to_uvchr_buf((U8*)pv, end, &readsize) : -#endif - (U8)*pv; - const U8 c = (U8)u & 0xFF; - - if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) { - if (flags & PERL_PV_ESCAPE_FIRSTCHAR) - chsize = my_snprintf(octbuf, sizeof octbuf, - "%" UVxf, u); - else - chsize = my_snprintf(octbuf, sizeof octbuf, - "%cx{%" UVxf "}", esc, u); - } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) { - chsize = 1; - } else { - if (c == dq || c == esc || !isPRINT(c)) { - chsize = 2; - switch (c) { - case '\\' : /* fallthrough */ - case '%' : if (c == esc) - octbuf[1] = esc; - else - chsize = 1; - break; - case '\v' : octbuf[1] = 'v'; break; - case '\t' : octbuf[1] = 't'; break; - case '\r' : octbuf[1] = 'r'; break; - case '\n' : octbuf[1] = 'n'; break; - case '\f' : octbuf[1] = 'f'; break; - case '"' : if (dq == '"') - octbuf[1] = '"'; - else - chsize = 1; - break; - default: chsize = my_snprintf(octbuf, sizeof octbuf, - pv < end && isDIGIT((U8)*(pv+readsize)) - ? "%c%03o" : "%c%o", esc, c); - } - } else { - chsize = 1; - } - } - if (max && wrote + chsize > max) { - break; - } else if (chsize > 1) { - sv_catpvn(dsv, octbuf, chsize); - wrote += chsize; - } else { - char tmp[2]; - my_snprintf(tmp, sizeof tmp, "%c", c); - sv_catpvn(dsv, tmp, 1); - wrote++; - } - if (flags & PERL_PV_ESCAPE_FIRSTCHAR) - break; - } - if (escaped != NULL) - *escaped= pv - str; - return SvPVX(dsv); -} - -#endif -#endif - -#ifndef pv_pretty -#if defined(NEED_pv_pretty) -static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); -static -#else -extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); -#endif - -#if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL) - -#ifdef pv_pretty -# undef pv_pretty -#endif -#define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g) -#define Perl_pv_pretty DPPP_(my_pv_pretty) - - -char * -DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count, - const STRLEN max, char const * const start_color, char const * const end_color, - const U32 flags) -{ - const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%'; - STRLEN escaped; - - if (!(flags & PERL_PV_PRETTY_NOCLEAR)) - sv_setpvs(dsv, ""); - - if (dq == '"') - sv_catpvs(dsv, "\""); - else if (flags & PERL_PV_PRETTY_LTGT) - sv_catpvs(dsv, "<"); - - if (start_color != NULL) - sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color)); - - pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR); - - if (end_color != NULL) - sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color)); - - if (dq == '"') - sv_catpvs(dsv, "\""); - else if (flags & PERL_PV_PRETTY_LTGT) - sv_catpvs(dsv, ">"); - - if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count) - sv_catpvs(dsv, "..."); - - return SvPVX(dsv); -} - -#endif -#endif - -#ifndef pv_display -#if defined(NEED_pv_display) -static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); -static -#else -extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); -#endif - -#if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL) - -#ifdef pv_display -# undef pv_display -#endif -#define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e) -#define Perl_pv_display DPPP_(my_pv_display) - - -char * -DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) -{ - pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP); - if (len > cur && pv[cur] == '\0') - sv_catpvs(dsv, "\\0"); - return SvPVX(dsv); -} - -#endif -#endif - -#endif /* _P_P_PORTABILITY_H_ */ - -/* End of File ppport.h */ 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 e763cbacce6..aa540c68fda 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/private/MakeUtil.pm @@ -35,8 +35,7 @@ sub MY::libscan my $path = shift; return undef - if $path =~ /^(?:RCS|CVS|SCCS|\.svn|_darcs)$/ || - $path =~ /(~|\.bak|_bak)$/ || + if $path =~ /(~|\.bak|_bak)$/ || $path =~ /\..*\.sw(o|p)$/ || $path =~ /\B\.svn\b/; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/suppressions.asan b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/suppressions.asan deleted file mode 100644 index ac5f3991aac..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/suppressions.asan +++ /dev/null @@ -1,10 +0,0 @@ -# suppressions file for address sanitizer - -leak:Perl_yylex -leak:Perl_yyparse -leak:Perl_init_i18nl10n -leak:Perl_newSTATEOP -leak:S_optimize_op -leak:Perl_re_op_compile -leak:S_doeval_compile -leak:Perl_re_dup_guts diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/000prereq.t b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/000prereq.t deleted file mode 100644 index 6e426cbbf44..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/000prereq.t +++ /dev/null @@ -1,223 +0,0 @@ -BEGIN { - if ($ENV{PERL_CORE}) { - chdir 't' if -d 't'; - @INC = ("../lib", "lib/compress"); - } -} - -use lib qw(t t/compress); -use strict ; -use warnings ; - -use Test::More ; - -BEGIN -{ - - diag "Running Perl version $]\n"; - - # use Test::NoWarnings, if available - my $extra = 0 ; - $extra = 1 - if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; - - - my $VERSION = '2.202'; - my @NAMES = qw( - - ); - - my @OPT = qw( - - ); - - plan tests => 1 + @NAMES + @OPT + $extra ; - - ok 1; - - foreach my $name (@NAMES) - { - use_ok($name, $VERSION); - } - - - foreach my $name (@OPT) - { - eval " require $name " ; - if ($@) - { - ok 1, "$name not available" - } - else - { - my $ver = eval("\$${name}::VERSION"); - is $ver, $VERSION, "$name version should be $VERSION" - or diag "$name version is $ver, need $VERSION" ; - } - } - -} - -sub bit -{ - return 1 << $_[0]; -} - -{ - # Print our versions of all modules used - - use Compress::Raw::Zlib; - - my @results = ( [ 'Perl', $] ] ); - my @modules = qw( - Compress::Raw::Zlib - ); - - my %have = (); - - for my $module (@modules) - { - my $ver = packageVer($module) ; - my $v = defined $ver - ? $ver - : "Not Installed" ; - push @results, [$module, $v] ; - $have{$module} ++ - if $ver ; - } - - push @results, ['','']; - push @results, ["zlib_version (from zlib library)", Compress::Raw::Zlib::zlib_version() ]; - push @results, ["ZLIB_VERSION (from zlib.h)", Compress::Raw::Zlib::ZLIB_VERSION ]; - push @results, ["ZLIB_VERNUM", sprintf("0x%x", Compress::Raw::Zlib::ZLIB_VERNUM) ]; - push @results, ['','']; - - push @results, ['BUILD_ZLIB', $Compress::Raw::Zlib::BUILD_ZLIB]; - push @results, ['GZIP_OS_CODE', $Compress::Raw::Zlib::gzip_os_code]; - push @results, ['','']; - - if (Compress::Raw::Zlib::is_zlibng) - { - push @results, ["Using zlib-ng", "Yes" ]; - - push @results, ["zlibng_version", Compress::Raw::Zlib::zlibng_version() ]; - - if (Compress::Raw::Zlib::is_zlibng_compat) - { - push @results, ["zlib-ng Mode", "Compat" ]; - } - else - { - push @results, ["zlib-ng Mode", "Native" ]; - } - - my @ng = qw( - ZLIBNG_VERSION - ZLIBNG_VER_MAJOR - ZLIBNG_VER_MINOR - ZLIBNG_VER_REVISION - ZLIBNG_VER_STATUS - ZLIBNG_VER_MODIFIED - ); - - for my $n (@ng) - { - no strict 'refs'; - push @results, [" $n", &{ "Compress::Raw::Zlib::$n" } ]; - } - - no strict 'refs'; - push @results, [" ZLIBNG_VERNUM", sprintf("0x%x", &{ "Compress::Raw::Zlib::ZLIBNG_VERNUM" }) ]; - - } - else - { - push @results, ["Using zlib-ng", "No" ]; - } - - push @results, ['','']; - push @results, ["is_zlib_native", Compress::Raw::Zlib::is_zlib_native() ? 1 : 0 ]; - push @results, ["is_zlibng", Compress::Raw::Zlib::is_zlibng() ?1 : 0]; - push @results, ["is_zlibng_native", Compress::Raw::Zlib::is_zlibng_native() ? 1 : 0 ]; - push @results, ["is_zlibng_compat", Compress::Raw::Zlib::is_zlibng_compat() ? 1 : 0]; - - - my $zlib_h = ZLIB_VERSION ; - my $libz = Compress::Raw::Zlib::zlib_version; - my $ZLIB_VERNUM = sprintf ("0x%X", Compress::Raw::Zlib::ZLIB_VERNUM()) ; - my $flags = Compress::Raw::Zlib::zlibCompileFlags(); - - push @results, ['','']; - push @results, ['zlibCompileFlags', $flags]; - push @results, [' Type Sizes', '']; - - my %sizes = ( - 0 => '16 bit', - 1 => '32 bit', - 2 => '64 bit', - 3 => 'other' - ); - - push @results, [' size of uInt', $sizes{ ($flags >> 0) & 0x3 } ]; - push @results, [' size of uLong', $sizes{ ($flags >> 2) & 0x3 } ]; - push @results, [' size of pointer', $sizes{ ($flags >> 4) & 0x3 } ]; - push @results, [' size of z_off_t', $sizes{ ($flags >> 6) & 0x3 } ]; - - my @compiler_options; - push @compiler_options, 'ZLIB_DEBUG' if $flags & bit(8) ; - push @compiler_options, 'ASM' if $flags & bit(9) ; - push @compiler_options, 'ZLIB_WINAPI' if $flags & bit(10) ; - push @compiler_options, 'None' unless @compiler_options; - push @results, [' Compiler Options', join ", ", @compiler_options]; - - my @one_time; - push @one_time, 'BUILDFIXED' if $flags & bit(12) ; - push @one_time, 'DYNAMIC_CRC_TABLE' if $flags & bit(13) ; - push @one_time, 'None' unless @one_time; - push @results, [' One-time table building', join ", ", @one_time]; - - my @library; - push @library, 'NO_GZCOMPRESS' if $flags & bit(16) ; - push @library, 'NO_GZIP' if $flags & bit(17) ; - push @library, 'None' unless @library; - push @results, [' Library content', join ", ", @library]; - - my @operational; - push @operational, 'PKZIP_BUG_WORKAROUND' if $flags & bit(20) ; - push @operational, 'FASTEST' if $flags & bit(21) ; - push @operational, 'None' unless @operational; - push @results, [' Operation variations', join ", ", @operational]; - - - - if ($have{"Compress::Raw::Lzma"}) - { - my $ver = eval { Compress::Raw::Lzma::lzma_version_string(); } || "unknown"; - push @results, ["lzma", $ver] ; - } - - use List::Util qw(max); - my $width = max map { length $_->[0] } @results; - - diag "\n\n" ; - for my $m (@results) - { - my ($name, $ver) = @$m; - - my $b = " " x (1 + $width - length $name); - - diag $name . $b . $ver . "\n" ; - } - - diag "\n\n" ; -} - -sub packageVer -{ - no strict 'refs'; - my $package = shift; - - eval "use $package;"; - return ${ "${package}::VERSION" }; - -} \ No newline at end of file diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/99pod.t b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/99pod.t deleted file mode 100644 index 5abb63d6ea9..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/99pod.t +++ /dev/null @@ -1,15 +0,0 @@ -BEGIN { - if ($ENV{PERL_CORE}) { - chdir 't' if -d 't'; - @INC = ("../lib", "lib/compress"); - } -} - -use lib qw(t t/compress); -use Test::More; - -eval "use Test::Pod 1.00"; - -plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; - -all_pod_files_ok(); diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/Builder.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/Builder.pm deleted file mode 100644 index 29b6e1caac0..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/Builder.pm +++ /dev/null @@ -1,1625 +0,0 @@ -package Test::Builder; - -use 5.004; - -# $^C was only introduced in 5.005-ish. We do this to prevent -# use of uninitialized value warnings in older perls. -$^C ||= 0; - -use strict; -our ($VERSION); -$VERSION = '0.30'; -$VERSION = eval $VERSION; # make the alpha version come out as a number - -# Make Test::Builder thread-safe for ithreads. -BEGIN { - use Config; - # Load threads::shared when threads are turned on - if( $] >= 5.008 && $Config{useithreads} && $INC{'threads.pm'}) { - require threads::shared; - - # Hack around YET ANOTHER threads::shared bug. It would - # occassionally forget the contents of the variable when sharing it. - # So we first copy the data, then share, then put our copy back. - *share = sub (\[$@%]) { - my $type = ref $_[0]; - my $data; - - if( $type eq 'HASH' ) { - %$data = %{$_[0]}; - } - elsif( $type eq 'ARRAY' ) { - @$data = @{$_[0]}; - } - elsif( $type eq 'SCALAR' ) { - $$data = ${$_[0]}; - } - else { - die "Unknown type: ".$type; - } - - $_[0] = &threads::shared::share($_[0]); - - if( $type eq 'HASH' ) { - %{$_[0]} = %$data; - } - elsif( $type eq 'ARRAY' ) { - @{$_[0]} = @$data; - } - elsif( $type eq 'SCALAR' ) { - ${$_[0]} = $$data; - } - else { - die "Unknown type: ".$type; - } - - return $_[0]; - }; - } - # 5.8.0's threads::shared is busted when threads are off. - # We emulate it here. - else { - *share = sub { return $_[0] }; - *lock = sub { 0 }; - } -} - - -=head1 NAME - -Test::Builder - Backend for building test libraries - -=head1 SYNOPSIS - - package My::Test::Module; - use Test::Builder; - require Exporter; - @ISA = qw(Exporter); - @EXPORT = qw(ok); - - my $Test = Test::Builder->new; - $Test->output('my_logfile'); - - sub import { - my($self) = shift; - my $pack = caller; - - $Test->exported_to($pack); - $Test->plan(@_); - - $self->export_to_level(1, $self, 'ok'); - } - - sub ok { - my($test, $name) = @_; - - $Test->ok($test, $name); - } - - -=head1 DESCRIPTION - -Test::Simple and Test::More have proven to be popular testing modules, -but they're not always flexible enough. Test::Builder provides the a -building block upon which to write your own test libraries I. - -=head2 Construction - -=over 4 - -=item B - - my $Test = Test::Builder->new; - -Returns a Test::Builder object representing the current state of the -test. - -Since you only run one test per program C always returns the same -Test::Builder object. No matter how many times you call new(), you're -getting the same object. This is called a singleton. This is done so that -multiple modules share such global information as the test counter and -where test output is going. - -If you want a completely new Test::Builder object different from the -singleton, use C. - -=cut - -my $Test = Test::Builder->new; -sub new { - my($class) = shift; - $Test ||= $class->create; - return $Test; -} - - -=item B - - my $Test = Test::Builder->create; - -Ok, so there can be more than one Test::Builder object and this is how -you get it. You might use this instead of C if you're testing -a Test::Builder based module, but otherwise you probably want C. - -B: the implementation is not complete. C, for example, is -still shared amongst B Test::Builder objects, even ones created using -this method. Also, the method name may change in the future. - -=cut - -sub create { - my $class = shift; - - my $self = bless {}, $class; - $self->reset; - - return $self; -} - -=item B - - $Test->reset; - -Reinitializes the Test::Builder singleton to its original state. -Mostly useful for tests run in persistent environments where the same -test might be run multiple times in the same process. - -=cut - -our ($Level); - -sub reset { - my ($self) = @_; - - # We leave this a global because it has to be localized and localizing - # hash keys is just asking for pain. Also, it was documented. - $Level = 1; - - $self->{Test_Died} = 0; - $self->{Have_Plan} = 0; - $self->{No_Plan} = 0; - $self->{Original_Pid} = $$; - - share($self->{Curr_Test}); - $self->{Curr_Test} = 0; - $self->{Test_Results} = &share([]); - - $self->{Exported_To} = undef; - $self->{Expected_Tests} = 0; - - $self->{Skip_All} = 0; - - $self->{Use_Nums} = 1; - - $self->{No_Header} = 0; - $self->{No_Ending} = 0; - - $self->_dup_stdhandles unless $^C; - - return undef; -} - -=back - -=head2 Setting up tests - -These methods are for setting up tests and declaring how many there -are. You usually only want to call one of these methods. - -=over 4 - -=item B - - my $pack = $Test->exported_to; - $Test->exported_to($pack); - -Tells Test::Builder what package you exported your functions to. -This is important for getting TODO tests right. - -=cut - -sub exported_to { - my($self, $pack) = @_; - - if( defined $pack ) { - $self->{Exported_To} = $pack; - } - return $self->{Exported_To}; -} - -=item B - - $Test->plan('no_plan'); - $Test->plan( skip_all => $reason ); - $Test->plan( tests => $num_tests ); - -A convenient way to set up your tests. Call this and Test::Builder -will print the appropriate headers and take the appropriate actions. - -If you call plan(), don't call any of the other methods below. - -=cut - -sub plan { - my($self, $cmd, $arg) = @_; - - return unless $cmd; - - if( $self->{Have_Plan} ) { - die sprintf "You tried to plan twice! Second plan at %s line %d\n", - ($self->caller)[1,2]; - } - - if( $cmd eq 'no_plan' ) { - $self->no_plan; - } - elsif( $cmd eq 'skip_all' ) { - return $self->skip_all($arg); - } - elsif( $cmd eq 'tests' ) { - if( $arg ) { - return $self->expected_tests($arg); - } - elsif( !defined $arg ) { - die "Got an undefined number of tests. Looks like you tried to ". - "say how many tests you plan to run but made a mistake.\n"; - } - elsif( !$arg ) { - die "You said to run 0 tests! You've got to run something.\n"; - } - } - else { - require Carp; - my @args = grep { defined } ($cmd, $arg); - Carp::croak("plan() doesn't understand @args"); - } - - return 1; -} - -=item B - - my $max = $Test->expected_tests; - $Test->expected_tests($max); - -Gets/sets the # of tests we expect this test to run and prints out -the appropriate headers. - -=cut - -sub expected_tests { - my $self = shift; - my($max) = @_; - - if( @_ ) { - die "Number of tests must be a postive integer. You gave it '$max'.\n" - unless $max =~ /^\+?\d+$/ and $max > 0; - - $self->{Expected_Tests} = $max; - $self->{Have_Plan} = 1; - - $self->_print("1..$max\n") unless $self->no_header; - } - return $self->{Expected_Tests}; -} - - -=item B - - $Test->no_plan; - -Declares that this test will run an indeterminate # of tests. - -=cut - -sub no_plan { - my $self = shift; - - $self->{No_Plan} = 1; - $self->{Have_Plan} = 1; -} - -=item B - - $plan = $Test->has_plan - -Find out whether a plan has been defined. $plan is either C (no plan has been set), C (indeterminate # of tests) or an integer (the number of expected tests). - -=cut - -sub has_plan { - my $self = shift; - - return($self->{Expected_Tests}) if $self->{Expected_Tests}; - return('no_plan') if $self->{No_Plan}; - return(undef); -}; - - -=item B - - $Test->skip_all; - $Test->skip_all($reason); - -Skips all the tests, using the given $reason. Exits immediately with 0. - -=cut - -sub skip_all { - my($self, $reason) = @_; - - my $out = "1..0"; - $out .= " # Skip $reason" if $reason; - $out .= "\n"; - - $self->{Skip_All} = 1; - - $self->_print($out) unless $self->no_header; - exit(0); -} - -=back - -=head2 Running tests - -These actually run the tests, analogous to the functions in -Test::More. - -$name is always optional. - -=over 4 - -=item B - - $Test->ok($test, $name); - -Your basic test. Pass if $test is true, fail if $test is false. Just -like Test::Simple's ok(). - -=cut - -sub ok { - my($self, $test, $name) = @_; - - # $test might contain an object which we don't want to accidentally - # store, so we turn it into a boolean. - $test = $test ? 1 : 0; - - unless( $self->{Have_Plan} ) { - require Carp; - Carp::croak("You tried to run a test without a plan! Gotta have a plan."); - } - - lock $self->{Curr_Test}; - $self->{Curr_Test}++; - - # In case $name is a string overloaded object, force it to stringify. - $self->_unoverload(\$name); - - $self->diag(<caller; - - my $todo = $self->todo($pack); - $self->_unoverload(\$todo); - - my $out; - my $result = &share({}); - - unless( $test ) { - $out .= "not "; - @$result{ 'ok', 'actual_ok' } = ( ( $todo ? 1 : 0 ), 0 ); - } - else { - @$result{ 'ok', 'actual_ok' } = ( 1, $test ); - } - - $out .= "ok"; - $out .= " $self->{Curr_Test}" if $self->use_numbers; - - if( defined $name ) { - $name =~ s|#|\\#|g; # # in a name can confuse Test::Harness. - $out .= " - $name"; - $result->{name} = $name; - } - else { - $result->{name} = ''; - } - - if( $todo ) { - $out .= " # TODO $todo"; - $result->{reason} = $todo; - $result->{type} = 'todo'; - } - else { - $result->{reason} = ''; - $result->{type} = ''; - } - - $self->{Test_Results}[$self->{Curr_Test}-1] = $result; - $out .= "\n"; - - $self->_print($out); - - unless( $test ) { - my $msg = $todo ? "Failed (TODO)" : "Failed"; - $self->_print_diag("\n") if $ENV{HARNESS_ACTIVE}; - $self->diag(" $msg test ($file at line $line)\n"); - } - - return $test ? 1 : 0; -} - - -sub _unoverload { - my $self = shift; - - local($@,$!); - - eval { require overload } || return; - - foreach my $thing (@_) { - eval { - if( defined $$thing ) { - if( my $string_meth = overload::Method($$thing, '""') ) { - $$thing = $$thing->$string_meth(); - } - } - }; - } -} - - -=item B - - $Test->is_eq($got, $expected, $name); - -Like Test::More's is(). Checks if $got eq $expected. This is the -string version. - -=item B - - $Test->is_num($got, $expected, $name); - -Like Test::More's is(). Checks if $got == $expected. This is the -numeric version. - -=cut - -sub is_eq { - my($self, $got, $expect, $name) = @_; - local $Level = $Level + 1; - - if( !defined $got || !defined $expect ) { - # undef only matches undef and nothing else - my $test = !defined $got && !defined $expect; - - $self->ok($test, $name); - $self->_is_diag($got, 'eq', $expect) unless $test; - return $test; - } - - return $self->cmp_ok($got, 'eq', $expect, $name); -} - -sub is_num { - my($self, $got, $expect, $name) = @_; - local $Level = $Level + 1; - - if( !defined $got || !defined $expect ) { - # undef only matches undef and nothing else - my $test = !defined $got && !defined $expect; - - $self->ok($test, $name); - $self->_is_diag($got, '==', $expect) unless $test; - return $test; - } - - return $self->cmp_ok($got, '==', $expect, $name); -} - -sub _is_diag { - my($self, $got, $type, $expect) = @_; - - foreach my $val (\$got, \$expect) { - if( defined $$val ) { - if( $type eq 'eq' ) { - # quote and force string context - $$val = "'$$val'" - } - else { - # force numeric context - $$val = $$val+0; - } - } - else { - $$val = 'undef'; - } - } - - return $self->diag(sprintf < - - $Test->isnt_eq($got, $dont_expect, $name); - -Like Test::More's isnt(). Checks if $got ne $dont_expect. This is -the string version. - -=item B - - $Test->is_num($got, $dont_expect, $name); - -Like Test::More's isnt(). Checks if $got ne $dont_expect. This is -the numeric version. - -=cut - -sub isnt_eq { - my($self, $got, $dont_expect, $name) = @_; - local $Level = $Level + 1; - - if( !defined $got || !defined $dont_expect ) { - # undef only matches undef and nothing else - my $test = defined $got || defined $dont_expect; - - $self->ok($test, $name); - $self->_cmp_diag($got, 'ne', $dont_expect) unless $test; - return $test; - } - - return $self->cmp_ok($got, 'ne', $dont_expect, $name); -} - -sub isnt_num { - my($self, $got, $dont_expect, $name) = @_; - local $Level = $Level + 1; - - if( !defined $got || !defined $dont_expect ) { - # undef only matches undef and nothing else - my $test = defined $got || defined $dont_expect; - - $self->ok($test, $name); - $self->_cmp_diag($got, '!=', $dont_expect) unless $test; - return $test; - } - - return $self->cmp_ok($got, '!=', $dont_expect, $name); -} - - -=item B - - $Test->like($this, qr/$regex/, $name); - $Test->like($this, '/$regex/', $name); - -Like Test::More's like(). Checks if $this matches the given $regex. - -You'll want to avoid qr// if you want your tests to work before 5.005. - -=item B - - $Test->unlike($this, qr/$regex/, $name); - $Test->unlike($this, '/$regex/', $name); - -Like Test::More's unlike(). Checks if $this B the -given $regex. - -=cut - -sub like { - my($self, $this, $regex, $name) = @_; - - local $Level = $Level + 1; - $self->_regex_ok($this, $regex, '=~', $name); -} - -sub unlike { - my($self, $this, $regex, $name) = @_; - - local $Level = $Level + 1; - $self->_regex_ok($this, $regex, '!~', $name); -} - -=item B - - $Test->maybe_regex(qr/$regex/); - $Test->maybe_regex('/$regex/'); - -Convenience method for building testing functions that take regular -expressions as arguments, but need to work before perl 5.005. - -Takes a quoted regular expression produced by qr//, or a string -representing a regular expression. - -Returns a Perl value which may be used instead of the corresponding -regular expression, or undef if it's argument is not recognised. - -For example, a version of like(), sans the useful diagnostic messages, -could be written as: - - sub laconic_like { - my ($self, $this, $regex, $name) = @_; - my $usable_regex = $self->maybe_regex($regex); - die "expecting regex, found '$regex'\n" - unless $usable_regex; - $self->ok($this =~ m/$usable_regex/, $name); - } - -=cut - - -sub maybe_regex { - my ($self, $regex) = @_; - my $usable_regex = undef; - - return $usable_regex unless defined $regex; - - my($re, $opts); - - # Check for qr/foo/ - if( ref $regex eq 'Regexp' ) { - $usable_regex = $regex; - } - # Check for '/foo/' or 'm,foo,' - elsif( ($re, $opts) = $regex =~ m{^ /(.*)/ (\w*) $ }sx or - (undef, $re, $opts) = $regex =~ m,^ m([^\w\s]) (.+) \1 (\w*) $,sx - ) - { - $usable_regex = length $opts ? "(?$opts)$re" : $re; - } - - return $usable_regex; -}; - -sub _regex_ok { - my($self, $this, $regex, $cmp, $name) = @_; - - local $Level = $Level + 1; - - my $ok = 0; - my $usable_regex = $self->maybe_regex($regex); - unless (defined $usable_regex) { - $ok = $self->ok( 0, $name ); - $self->diag(" '$regex' doesn't look much like a regex to me."); - return $ok; - } - - { - local $^W = 0; - my $test = $this =~ /$usable_regex/ ? 1 : 0; - $test = !$test if $cmp eq '!~'; - $ok = $self->ok( $test, $name ); - } - - unless( $ok ) { - $this = defined $this ? "'$this'" : 'undef'; - my $match = $cmp eq '=~' ? "doesn't match" : "matches"; - $self->diag(sprintf < - - $Test->cmp_ok($this, $type, $that, $name); - -Works just like Test::More's cmp_ok(). - - $Test->cmp_ok($big_num, '!=', $other_big_num); - -=cut - -sub cmp_ok { - my($self, $got, $type, $expect, $name) = @_; - - my $test; - { - local $^W = 0; - local($@,$!); # don't interfere with $@ - # eval() sometimes resets $! - $test = eval "\$got $type \$expect"; - } - local $Level = $Level + 1; - my $ok = $self->ok($test, $name); - - unless( $ok ) { - if( $type =~ /^(eq|==)$/ ) { - $self->_is_diag($got, $type, $expect); - } - else { - $self->_cmp_diag($got, $type, $expect); - } - } - return $ok; -} - -sub _cmp_diag { - my($self, $got, $type, $expect) = @_; - - $got = defined $got ? "'$got'" : 'undef'; - $expect = defined $expect ? "'$expect'" : 'undef'; - return $self->diag(sprintf < - - $Test->BAILOUT($reason); - -Indicates to the Test::Harness that things are going so badly all -testing should terminate. This includes running any additional test -scripts. - -It will exit with 255. - -=cut - -sub BAILOUT { - my($self, $reason) = @_; - - $self->_print("Bail out! $reason"); - exit 255; -} - -=item B - - $Test->skip; - $Test->skip($why); - -Skips the current test, reporting $why. - -=cut - -sub skip { - my($self, $why) = @_; - $why ||= ''; - $self->_unoverload(\$why); - - unless( $self->{Have_Plan} ) { - require Carp; - Carp::croak("You tried to run tests without a plan! Gotta have a plan."); - } - - lock($self->{Curr_Test}); - $self->{Curr_Test}++; - - $self->{Test_Results}[$self->{Curr_Test}-1] = &share({ - 'ok' => 1, - actual_ok => 1, - name => '', - type => 'skip', - reason => $why, - }); - - my $out = "ok"; - $out .= " $self->{Curr_Test}" if $self->use_numbers; - $out .= " # skip"; - $out .= " $why" if length $why; - $out .= "\n"; - - $self->_print($out); - - return 1; -} - - -=item B - - $Test->todo_skip; - $Test->todo_skip($why); - -Like skip(), only it will declare the test as failing and TODO. Similar -to - - print "not ok $tnum # TODO $why\n"; - -=cut - -sub todo_skip { - my($self, $why) = @_; - $why ||= ''; - - unless( $self->{Have_Plan} ) { - require Carp; - Carp::croak("You tried to run tests without a plan! Gotta have a plan."); - } - - lock($self->{Curr_Test}); - $self->{Curr_Test}++; - - $self->{Test_Results}[$self->{Curr_Test}-1] = &share({ - 'ok' => 1, - actual_ok => 0, - name => '', - type => 'todo_skip', - reason => $why, - }); - - my $out = "not ok"; - $out .= " $self->{Curr_Test}" if $self->use_numbers; - $out .= " # TODO & SKIP $why\n"; - - $self->_print($out); - - return 1; -} - - -=begin _unimplemented - -=item B - - $Test->skip_rest; - $Test->skip_rest($reason); - -Like skip(), only it skips all the rest of the tests you plan to run -and terminates the test. - -If you're running under no_plan, it skips once and terminates the -test. - -=end _unimplemented - -=back - - -=head2 Test style - -=over 4 - -=item B - - $Test->level($how_high); - -How far up the call stack should $Test look when reporting where the -test failed. - -Defaults to 1. - -Setting $Test::Builder::Level overrides. This is typically useful -localized: - - { - local $Test::Builder::Level = 2; - $Test->ok($test); - } - -=cut - -sub level { - my($self, $level) = @_; - - if( defined $level ) { - $Level = $level; - } - return $Level; -} - - -=item B - - $Test->use_numbers($on_or_off); - -Whether or not the test should output numbers. That is, this if true: - - ok 1 - ok 2 - ok 3 - -or this if false - - ok - ok - ok - -Most useful when you can't depend on the test output order, such as -when threads or forking is involved. - -Test::Harness will accept either, but avoid mixing the two styles. - -Defaults to on. - -=cut - -sub use_numbers { - my($self, $use_nums) = @_; - - if( defined $use_nums ) { - $self->{Use_Nums} = $use_nums; - } - return $self->{Use_Nums}; -} - -=item B - - $Test->no_header($no_header); - -If set to true, no "1..N" header will be printed. - -=item B - - $Test->no_ending($no_ending); - -Normally, Test::Builder does some extra diagnostics when the test -ends. It also changes the exit code as described below. - -If this is true, none of that will be done. - -=cut - -sub no_header { - my($self, $no_header) = @_; - - if( defined $no_header ) { - $self->{No_Header} = $no_header; - } - return $self->{No_Header}; -} - -sub no_ending { - my($self, $no_ending) = @_; - - if( defined $no_ending ) { - $self->{No_Ending} = $no_ending; - } - return $self->{No_Ending}; -} - - -=back - -=head2 Output - -Controlling where the test output goes. - -It's ok for your test to change where STDOUT and STDERR point to, -Test::Builder's default output settings will not be affected. - -=over 4 - -=item B - - $Test->diag(@msgs); - -Prints out the given @msgs. Like C, arguments are simply -appended together. - -Normally, it uses the failure_output() handle, but if this is for a -TODO test, the todo_output() handle is used. - -Output will be indented and marked with a # so as not to interfere -with test output. A newline will be put on the end if there isn't one -already. - -We encourage using this rather than calling print directly. - -Returns false. Why? Because diag() is often used in conjunction with -a failing test (C) it "passes through" the failure. - - return ok(...) || diag(...); - -=for blame transfer -Mark Fowler - -=cut - -sub diag { - my($self, @msgs) = @_; - return unless @msgs; - - # Prevent printing headers when compiling (i.e. -c) - return if $^C; - - # Smash args together like print does. - # Convert undef to 'undef' so its readable. - my $msg = join '', map { defined($_) ? $_ : 'undef' } @msgs; - - # Escape each line with a #. - $msg =~ s/^/# /gm; - - # Stick a newline on the end if it needs it. - $msg .= "\n" unless $msg =~ /\n\Z/; - - local $Level = $Level + 1; - $self->_print_diag($msg); - - return 0; -} - -=begin _private - -=item B<_print> - - $Test->_print(@msgs); - -Prints to the output() filehandle. - -=end _private - -=cut - -sub _print { - my($self, @msgs) = @_; - - # Prevent printing headers when only compiling. Mostly for when - # tests are deparsed with B::Deparse - return if $^C; - - my $msg = join '', @msgs; - - local($\, $", $,) = (undef, ' ', ''); - my $fh = $self->output; - - # Escape each line after the first with a # so we don't - # confuse Test::Harness. - $msg =~ s/\n(.)/\n# $1/sg; - - # Stick a newline on the end if it needs it. - $msg .= "\n" unless $msg =~ /\n\Z/; - - print $fh $msg; -} - - -=item B<_print_diag> - - $Test->_print_diag(@msg); - -Like _print, but prints to the current diagnostic filehandle. - -=cut - -sub _print_diag { - my $self = shift; - - local($\, $", $,) = (undef, ' ', ''); - my $fh = $self->todo ? $self->todo_output : $self->failure_output; - print $fh @_; -} - -=item B - - $Test->output($fh); - $Test->output($file); - -Where normal "ok/not ok" test output should go. - -Defaults to STDOUT. - -=item B - - $Test->failure_output($fh); - $Test->failure_output($file); - -Where diagnostic output on test failures and diag() should go. - -Defaults to STDERR. - -=item B - - $Test->todo_output($fh); - $Test->todo_output($file); - -Where diagnostics about todo test failures and diag() should go. - -Defaults to STDOUT. - -=cut - -sub output { - my($self, $fh) = @_; - - if( defined $fh ) { - $self->{Out_FH} = _new_fh($fh); - } - return $self->{Out_FH}; -} - -sub failure_output { - my($self, $fh) = @_; - - if( defined $fh ) { - $self->{Fail_FH} = _new_fh($fh); - } - return $self->{Fail_FH}; -} - -sub todo_output { - my($self, $fh) = @_; - - if( defined $fh ) { - $self->{Todo_FH} = _new_fh($fh); - } - return $self->{Todo_FH}; -} - - -sub _new_fh { - my($file_or_fh) = shift; - - my $fh; - if( _is_fh($file_or_fh) ) { - $fh = $file_or_fh; - } - else { - $fh = do { local *FH }; - open $fh, ">$file_or_fh" or - die "Can't open test output log $file_or_fh: $!"; - _autoflush($fh); - } - - return $fh; -} - - -sub _is_fh { - my $maybe_fh = shift; - - return 1 if ref \$maybe_fh eq 'GLOB'; # its a glob - - return UNIVERSAL::isa($maybe_fh, 'GLOB') || - UNIVERSAL::isa($maybe_fh, 'IO::Handle') || - - # 5.5.4's tied() and can() doesn't like getting undef - UNIVERSAL::can((tied($maybe_fh) || ''), 'TIEHANDLE'); -} - - -sub _autoflush { - my($fh) = shift; - my $old_fh = select $fh; - $| = 1; - select $old_fh; -} - - -sub _dup_stdhandles { - my $self = shift; - - $self->_open_testhandles; - - # Set everything to unbuffered else plain prints to STDOUT will - # come out in the wrong order from our own prints. - _autoflush(\*TESTOUT); - _autoflush(\*STDOUT); - _autoflush(\*TESTERR); - _autoflush(\*STDERR); - - $self->output(\*TESTOUT); - $self->failure_output(\*TESTERR); - $self->todo_output(\*TESTOUT); -} - - -my $Opened_Testhandles = 0; -sub _open_testhandles { - return if $Opened_Testhandles; - # We dup STDOUT and STDERR so people can change them in their - # test suites while still getting normal test output. - open(TESTOUT, ">&STDOUT") or die "Can't dup STDOUT: $!"; - open(TESTERR, ">&STDERR") or die "Can't dup STDERR: $!"; - $Opened_Testhandles = 1; -} - - -=back - - -=head2 Test Status and Info - -=over 4 - -=item B - - my $curr_test = $Test->current_test; - $Test->current_test($num); - -Gets/sets the current test number we're on. You usually shouldn't -have to set this. - -If set forward, the details of the missing tests are filled in as 'unknown'. -if set backward, the details of the intervening tests are deleted. You -can erase history if you really want to. - -=cut - -sub current_test { - my($self, $num) = @_; - - lock($self->{Curr_Test}); - if( defined $num ) { - unless( $self->{Have_Plan} ) { - require Carp; - Carp::croak("Can't change the current test number without a plan!"); - } - - $self->{Curr_Test} = $num; - - # If the test counter is being pushed forward fill in the details. - my $test_results = $self->{Test_Results}; - if( $num > @$test_results ) { - my $start = @$test_results ? @$test_results : 0; - for ($start..$num-1) { - $test_results->[$_] = &share({ - 'ok' => 1, - actual_ok => undef, - reason => 'incrementing test number', - type => 'unknown', - name => undef - }); - } - } - # If backward, wipe history. Its their funeral. - elsif( $num < @$test_results ) { - $#{$test_results} = $num - 1; - } - } - return $self->{Curr_Test}; -} - - -=item B - - my @tests = $Test->summary; - -A simple summary of the tests so far. True for pass, false for fail. -This is a logical pass/fail, so todos are passes. - -Of course, test #1 is $tests[0], etc... - -=cut - -sub summary { - my($self) = shift; - - return map { $_->{'ok'} } @{ $self->{Test_Results} }; -} - -=item B
- - my @tests = $Test->details; - -Like summary(), but with a lot more detail. - - $tests[$test_num - 1] = - { 'ok' => is the test considered a pass? - actual_ok => did it literally say 'ok'? - name => name of the test (if any) - type => type of test (if any, see below). - reason => reason for the above (if any) - }; - -'ok' is true if Test::Harness will consider the test to be a pass. - -'actual_ok' is a reflection of whether or not the test literally -printed 'ok' or 'not ok'. This is for examining the result of 'todo' -tests. - -'name' is the name of the test. - -'type' indicates if it was a special test. Normal tests have a type -of ''. Type can be one of the following: - - skip see skip() - todo see todo() - todo_skip see todo_skip() - unknown see below - -Sometimes the Test::Builder test counter is incremented without it -printing any test output, for example, when current_test() is changed. -In these cases, Test::Builder doesn't know the result of the test, so -it's type is 'unkown'. These details for these tests are filled in. -They are considered ok, but the name and actual_ok is left undef. - -For example "not ok 23 - hole count # TODO insufficient donuts" would -result in this structure: - - $tests[22] = # 23 - 1, since arrays start from 0. - { ok => 1, # logically, the test passed since it's todo - actual_ok => 0, # in absolute terms, it failed - name => 'hole count', - type => 'todo', - reason => 'insufficient donuts' - }; - -=cut - -sub details { - my $self = shift; - return @{ $self->{Test_Results} }; -} - -=item B - - my $todo_reason = $Test->todo; - my $todo_reason = $Test->todo($pack); - -todo() looks for a $TODO variable in your tests. If set, all tests -will be considered 'todo' (see Test::More and Test::Harness for -details). Returns the reason (ie. the value of $TODO) if running as -todo tests, false otherwise. - -todo() is about finding the right package to look for $TODO in. It -uses the exported_to() package to find it. If that's not set, it's -pretty good at guessing the right package to look at based on $Level. - -Sometimes there is some confusion about where todo() should be looking -for the $TODO variable. If you want to be sure, tell it explicitly -what $pack to use. - -=cut - -sub todo { - my($self, $pack) = @_; - - $pack = $pack || $self->exported_to || $self->caller($Level); - return 0 unless $pack; - - no strict 'refs'; - return defined ${$pack.'::TODO'} ? ${$pack.'::TODO'} - : 0; -} - -=item B - - my $package = $Test->caller; - my($pack, $file, $line) = $Test->caller; - my($pack, $file, $line) = $Test->caller($height); - -Like the normal caller(), except it reports according to your level(). - -=cut - -sub caller { - my($self, $height) = @_; - $height ||= 0; - - my @caller = CORE::caller($self->level + $height + 1); - return wantarray ? @caller : $caller[0]; -} - -=back - -=cut - -=begin _private - -=over 4 - -=item B<_sanity_check> - - $self->_sanity_check(); - -Runs a bunch of end of test sanity checks to make sure reality came -through ok. If anything is wrong it will die with a fairly friendly -error message. - -=cut - -#'# -sub _sanity_check { - my $self = shift; - - _whoa($self->{Curr_Test} < 0, 'Says here you ran a negative number of tests!'); - _whoa(!$self->{Have_Plan} and $self->{Curr_Test}, - 'Somehow your tests ran without a plan!'); - _whoa($self->{Curr_Test} != @{ $self->{Test_Results} }, - 'Somehow you got a different number of results than tests ran!'); -} - -=item B<_whoa> - - _whoa($check, $description); - -A sanity check, similar to assert(). If the $check is true, something -has gone horribly wrong. It will die with the given $description and -a note to contact the author. - -=cut - -sub _whoa { - my($check, $desc) = @_; - if( $check ) { - die < - - _my_exit($exit_num); - -Perl seems to have some trouble with exiting inside an END block. 5.005_03 -and 5.6.1 both seem to do odd things. Instead, this function edits $? -directly. It should ONLY be called from inside an END block. It -doesn't actually exit, that's your job. - -=cut - -sub _my_exit { - $? = $_[0]; - - return 1; -} - - -=back - -=end _private - -=cut - -$SIG{__DIE__} = sub { - # We don't want to muck with death in an eval, but $^S isn't - # totally reliable. 5.005_03 and 5.6.1 both do the wrong thing - # with it. Instead, we use caller. This also means it runs under - # 5.004! - my $in_eval = 0; - for( my $stack = 1; my $sub = (CORE::caller($stack))[3]; $stack++ ) { - $in_eval = 1 if $sub =~ /^\(eval\)/; - } - $Test->{Test_Died} = 1 unless $in_eval; -}; - -sub _ending { - my $self = shift; - - $self->_sanity_check(); - - # Don't bother with an ending if this is a forked copy. Only the parent - # should do the ending. - # Exit if plan() was never called. This is so "require Test::Simple" - # doesn't puke. - if( ($self->{Original_Pid} != $$) or - (!$self->{Have_Plan} && !$self->{Test_Died}) ) - { - _my_exit($?); - return; - } - - # Figure out if we passed or failed and print helpful messages. - my $test_results = $self->{Test_Results}; - if( @$test_results ) { - # The plan? We have no plan. - if( $self->{No_Plan} ) { - $self->_print("1..$self->{Curr_Test}\n") unless $self->no_header; - $self->{Expected_Tests} = $self->{Curr_Test}; - } - - # Auto-extended arrays and elements which aren't explicitly - # filled in with a shared reference will puke under 5.8.0 - # ithreads. So we have to fill them in by hand. :( - my $empty_result = &share({}); - for my $idx ( 0..$self->{Expected_Tests}-1 ) { - $test_results->[$idx] = $empty_result - unless defined $test_results->[$idx]; - } - - my $num_failed = grep !$_->{'ok'}, - @{$test_results}[0..$self->{Expected_Tests}-1]; - $num_failed += abs($self->{Expected_Tests} - @$test_results); - - if( $self->{Curr_Test} < $self->{Expected_Tests} ) { - my $s = $self->{Expected_Tests} == 1 ? '' : 's'; - $self->diag(<<"FAIL"); -Looks like you planned $self->{Expected_Tests} test$s but only ran $self->{Curr_Test}. -FAIL - } - elsif( $self->{Curr_Test} > $self->{Expected_Tests} ) { - my $num_extra = $self->{Curr_Test} - $self->{Expected_Tests}; - my $s = $self->{Expected_Tests} == 1 ? '' : 's'; - $self->diag(<<"FAIL"); -Looks like you planned $self->{Expected_Tests} test$s but ran $num_extra extra. -FAIL - } - elsif ( $num_failed ) { - my $s = $num_failed == 1 ? '' : 's'; - $self->diag(<<"FAIL"); -Looks like you failed $num_failed test$s of $self->{Expected_Tests}. -FAIL - } - - if( $self->{Test_Died} ) { - $self->diag(<<"FAIL"); -Looks like your test died just after $self->{Curr_Test}. -FAIL - - _my_exit( 255 ) && return; - } - - _my_exit( $num_failed <= 254 ? $num_failed : 254 ) && return; - } - elsif ( $self->{Skip_All} ) { - _my_exit( 0 ) && return; - } - elsif ( $self->{Test_Died} ) { - $self->diag(<<'FAIL'); -Looks like your test died before it could output anything. -FAIL - _my_exit( 255 ) && return; - } - else { - $self->diag("No tests run!\n"); - _my_exit( 255 ) && return; - } -} - -END { - $Test->_ending if defined $Test and !$Test->no_ending; -} - -=head1 EXIT CODES - -If all your tests passed, Test::Builder will exit with zero (which is -normal). If anything failed it will exit with how many failed. If -you run less (or more) tests than you planned, the missing (or extras) -will be considered failures. If no tests were ever run Test::Builder -will throw a warning and exit with 255. If the test died, even after -having successfully completed all its tests, it will still be -considered a failure and will exit with 255. - -So the exit codes are... - - 0 all tests successful - 255 test died - any other number how many failed (including missing or extras) - -If you fail more than 254 tests, it will be reported as 254. - - -=head1 THREADS - -In perl 5.8.0 and later, Test::Builder is thread-safe. The test -number is shared amongst all threads. This means if one thread sets -the test number using current_test() they will all be effected. - -Test::Builder is only thread-aware if threads.pm is loaded I -Test::Builder. - -=head1 EXAMPLES - -CPAN can provide the best examples. Test::Simple, Test::More, -Test::Exception and Test::Differences all use Test::Builder. - -=head1 SEE ALSO - -Test::Simple, Test::More, Test::Harness - -=head1 AUTHORS - -Original code by chromatic, maintained by Michael G Schwern -Eschwern@pobox.comE - -=head1 COPYRIGHT - -Copyright 2002, 2004 by chromatic Echromatic@wgz.orgE and - Michael G Schwern Eschwern@pobox.comE. - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -See F - -=cut - -1; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/More.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/More.pm deleted file mode 100644 index 74eaa42c1c2..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/More.pm +++ /dev/null @@ -1,1493 +0,0 @@ -package Test::More; - -use 5.004; - -use strict; -use Test::Builder; - - -# Can't use Carp because it might cause use_ok() to accidentally succeed -# even though the module being used forgot to use Carp. Yes, this -# actually happened. -sub _carp { - my($file, $line) = (caller(1))[1,2]; - warn @_, " at $file line $line\n"; -} - - - -require Exporter; -our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $TODO); -$VERSION = '0.60'; -$VERSION = eval $VERSION; # make the alpha version come out as a number - -@ISA = qw(Exporter); -@EXPORT = qw(ok use_ok require_ok - is isnt like unlike is_deeply - cmp_ok - skip todo todo_skip - pass fail - eq_array eq_hash eq_set - $TODO - plan - can_ok isa_ok - diag - ); - -my $Test = Test::Builder->new; -my $Show_Diag = 1; - - -# 5.004's Exporter doesn't have export_to_level. -sub _export_to_level -{ - my $pkg = shift; - my $level = shift; - (undef) = shift; # redundant arg - my $callpkg = caller($level); - $pkg->export($callpkg, @_); -} - - -=head1 NAME - -Test::More - yet another framework for writing test scripts - -=head1 SYNOPSIS - - use Test::More tests => $Num_Tests; - # or - use Test::More qw(no_plan); - # or - use Test::More skip_all => $reason; - - BEGIN { use_ok( 'Some::Module' ); } - require_ok( 'Some::Module' ); - - # Various ways to say "ok" - ok($this eq $that, $test_name); - - is ($this, $that, $test_name); - isnt($this, $that, $test_name); - - # Rather than print STDERR "# here's what went wrong\n" - diag("here's what went wrong"); - - like ($this, qr/that/, $test_name); - unlike($this, qr/that/, $test_name); - - cmp_ok($this, '==', $that, $test_name); - - is_deeply($complex_structure1, $complex_structure2, $test_name); - - SKIP: { - skip $why, $how_many unless $have_some_feature; - - ok( foo(), $test_name ); - is( foo(42), 23, $test_name ); - }; - - TODO: { - local $TODO = $why; - - ok( foo(), $test_name ); - is( foo(42), 23, $test_name ); - }; - - can_ok($module, @methods); - isa_ok($object, $class); - - pass($test_name); - fail($test_name); - - # UNIMPLEMENTED!!! - my @status = Test::More::status; - - # UNIMPLEMENTED!!! - BAIL_OUT($why); - - -=head1 DESCRIPTION - -B If you're just getting started writing tests, have a look at -Test::Simple first. This is a drop in replacement for Test::Simple -which you can switch to once you get the hang of basic testing. - -The purpose of this module is to provide a wide range of testing -utilities. Various ways to say "ok" with better diagnostics, -facilities to skip tests, test future features and compare complicated -data structures. While you can do almost anything with a simple -C function, it doesn't provide good diagnostic output. - - -=head2 I love it when a plan comes together - -Before anything else, you need a testing plan. This basically declares -how many tests your script is going to run to protect against premature -failure. - -The preferred way to do this is to declare a plan when you C. - - use Test::More tests => $Num_Tests; - -There are rare cases when you will not know beforehand how many tests -your script is going to run. In this case, you can declare that you -have no plan. (Try to avoid using this as it weakens your test.) - - use Test::More qw(no_plan); - -B: using no_plan requires a Test::Harness upgrade else it will -think everything has failed. See L) - -In some cases, you'll want to completely skip an entire testing script. - - use Test::More skip_all => $skip_reason; - -Your script will declare a skip with the reason why you skipped and -exit immediately with a zero (success). See L for -details. - -If you want to control what functions Test::More will export, you -have to use the 'import' option. For example, to import everything -but 'fail', you'd do: - - use Test::More tests => 23, import => ['!fail']; - -Alternatively, you can use the plan() function. Useful for when you -have to calculate the number of tests. - - use Test::More; - plan tests => keys %Stuff * 3; - -or for deciding between running the tests at all: - - use Test::More; - if( $^O eq 'MacOS' ) { - plan skip_all => 'Test irrelevant on MacOS'; - } - else { - plan tests => 42; - } - -=cut - -sub plan { - my(@plan) = @_; - - my $idx = 0; - my @cleaned_plan; - while( $idx <= $#plan ) { - my $item = $plan[$idx]; - - if( $item eq 'no_diag' ) { - $Show_Diag = 0; - } - else { - push @cleaned_plan, $item; - } - - $idx++; - } - - $Test->plan(@cleaned_plan); -} - -sub import { - my($class) = shift; - - my $caller = caller; - - $Test->exported_to($caller); - - my $idx = 0; - my @plan; - my @imports; - while( $idx <= $#_ ) { - my $item = $_[$idx]; - - if( $item eq 'import' ) { - push @imports, @{$_[$idx+1]}; - $idx++; - } - else { - push @plan, $item; - } - - $idx++; - } - - plan(@plan); - - __PACKAGE__->_export_to_level(1, __PACKAGE__, @imports); -} - - -=head2 Test names - -By convention, each test is assigned a number in order. This is -largely done automatically for you. However, it's often very useful to -assign a name to each test. Which would you rather see: - - ok 4 - not ok 5 - ok 6 - -or - - ok 4 - basic multi-variable - not ok 5 - simple exponential - ok 6 - force == mass * acceleration - -The later gives you some idea of what failed. It also makes it easier -to find the test in your script, simply search for "simple -exponential". - -All test functions take a name argument. It's optional, but highly -suggested that you use it. - - -=head2 I'm ok, you're not ok. - -The basic purpose of this module is to print out either "ok #" or "not -ok #" depending on if a given test succeeded or failed. Everything -else is just gravy. - -All of the following print "ok" or "not ok" depending on if the test -succeeded or failed. They all also return true or false, -respectively. - -=over 4 - -=item B - - ok($this eq $that, $test_name); - -This simply evaluates any expression (C<$this eq $that> is just a -simple example) and uses that to determine if the test succeeded or -failed. A true expression passes, a false one fails. Very simple. - -For example: - - ok( $exp{9} == 81, 'simple exponential' ); - ok( Film->can('db_Main'), 'set_db()' ); - ok( $p->tests == 4, 'saw tests' ); - ok( !grep !defined $_, @items, 'items populated' ); - -(Mnemonic: "This is ok.") - -$test_name is a very short description of the test that will be printed -out. It makes it very easy to find a test in your script when it fails -and gives others an idea of your intentions. $test_name is optional, -but we B strongly encourage its use. - -Should an ok() fail, it will produce some diagnostics: - - not ok 18 - sufficient mucus - # Failed test 18 (foo.t at line 42) - -This is actually Test::Simple's ok() routine. - -=cut - -sub ok ($;$) { - my($test, $name) = @_; - $Test->ok($test, $name); -} - -=item B - -=item B - - is ( $this, $that, $test_name ); - isnt( $this, $that, $test_name ); - -Similar to ok(), is() and isnt() compare their two arguments -with C and C respectively and use the result of that to -determine if the test succeeded or failed. So these: - - # Is the ultimate answer 42? - is( ultimate_answer(), 42, "Meaning of Life" ); - - # $foo isn't empty - isnt( $foo, '', "Got some foo" ); - -are similar to these: - - ok( ultimate_answer() eq 42, "Meaning of Life" ); - ok( $foo ne '', "Got some foo" ); - -(Mnemonic: "This is that." "This isn't that.") - -So why use these? They produce better diagnostics on failure. ok() -cannot know what you are testing for (beyond the name), but is() and -isnt() know what the test was and why it failed. For example this -test: - - my $foo = 'waffle'; my $bar = 'yarblokos'; - is( $foo, $bar, 'Is foo the same as bar?' ); - -Will produce something like this: - - not ok 17 - Is foo the same as bar? - # Failed test (foo.t at line 139) - # got: 'waffle' - # expected: 'yarblokos' - -So you can figure out what went wrong without rerunning the test. - -You are encouraged to use is() and isnt() over ok() where possible, -however do not be tempted to use them to find out if something is -true or false! - - # XXX BAD! - is( exists $brooklyn{tree}, 1, 'A tree grows in Brooklyn' ); - -This does not check if C is true, it checks if -it returns 1. Very different. Similar caveats exist for false and 0. -In these cases, use ok(). - - ok( exists $brooklyn{tree}, 'A tree grows in Brooklyn' ); - -For those grammatical pedants out there, there's an C -function which is an alias of isnt(). - -=cut - -sub is ($$;$) { - $Test->is_eq(@_); -} - -sub isnt ($$;$) { - $Test->isnt_eq(@_); -} - -*isn't = \&isnt; - - -=item B - - like( $this, qr/that/, $test_name ); - -Similar to ok(), like() matches $this against the regex C. - -So this: - - like($this, qr/that/, 'this is like that'); - -is similar to: - - ok( $this =~ /that/, 'this is like that'); - -(Mnemonic "This is like that".) - -The second argument is a regular expression. It may be given as a -regex reference (i.e. C) or (for better compatibility with older -perls) as a string that looks like a regex (alternative delimiters are -currently not supported): - - like( $this, '/that/', 'this is like that' ); - -Regex options may be placed on the end (C<'/that/i'>). - -Its advantages over ok() are similar to that of is() and isnt(). Better -diagnostics on failure. - -=cut - -sub like ($$;$) { - $Test->like(@_); -} - - -=item B - - unlike( $this, qr/that/, $test_name ); - -Works exactly as like(), only it checks if $this B match the -given pattern. - -=cut - -sub unlike ($$;$) { - $Test->unlike(@_); -} - - -=item B - - cmp_ok( $this, $op, $that, $test_name ); - -Halfway between ok() and is() lies cmp_ok(). This allows you to -compare two arguments using any binary perl operator. - - # ok( $this eq $that ); - cmp_ok( $this, 'eq', $that, 'this eq that' ); - - # ok( $this == $that ); - cmp_ok( $this, '==', $that, 'this == that' ); - - # ok( $this && $that ); - cmp_ok( $this, '&&', $that, 'this && that' ); - ...etc... - -Its advantage over ok() is when the test fails you'll know what $this -and $that were: - - not ok 1 - # Failed test (foo.t at line 12) - # '23' - # && - # undef - -It's also useful in those cases where you are comparing numbers and -is()'s use of C will interfere: - - cmp_ok( $big_hairy_number, '==', $another_big_hairy_number ); - -=cut - -sub cmp_ok($$$;$) { - $Test->cmp_ok(@_); -} - - -=item B - - can_ok($module, @methods); - can_ok($object, @methods); - -Checks to make sure the $module or $object can do these @methods -(works with functions, too). - - can_ok('Foo', qw(this that whatever)); - -is almost exactly like saying: - - ok( Foo->can('this') && - Foo->can('that') && - Foo->can('whatever') - ); - -only without all the typing and with a better interface. Handy for -quickly testing an interface. - -No matter how many @methods you check, a single can_ok() call counts -as one test. If you desire otherwise, use: - - foreach my $meth (@methods) { - can_ok('Foo', $meth); - } - -=cut - -sub can_ok ($@) { - my($proto, @methods) = @_; - my $class = ref $proto || $proto; - - unless( @methods ) { - my $ok = $Test->ok( 0, "$class->can(...)" ); - $Test->diag(' can_ok() called with no methods'); - return $ok; - } - - my @nok = (); - foreach my $method (@methods) { - local($!, $@); # don't interfere with caller's $@ - # eval sometimes resets $! - eval { $proto->can($method) } || push @nok, $method; - } - - my $name; - $name = @methods == 1 ? "$class->can('$methods[0]')" - : "$class->can(...)"; - - my $ok = $Test->ok( !@nok, $name ); - - $Test->diag(map " $class->can('$_') failed\n", @nok); - - return $ok; -} - -=item B - - isa_ok($object, $class, $object_name); - isa_ok($ref, $type, $ref_name); - -Checks to see if the given C<< $object->isa($class) >>. Also checks to make -sure the object was defined in the first place. Handy for this sort -of thing: - - my $obj = Some::Module->new; - isa_ok( $obj, 'Some::Module' ); - -where you'd otherwise have to write - - my $obj = Some::Module->new; - ok( defined $obj && $obj->isa('Some::Module') ); - -to safeguard against your test script blowing up. - -It works on references, too: - - isa_ok( $array_ref, 'ARRAY' ); - -The diagnostics of this test normally just refer to 'the object'. If -you'd like them to be more specific, you can supply an $object_name -(for example 'Test customer'). - -=cut - -sub isa_ok ($$;$) { - my($object, $class, $obj_name) = @_; - - my $diag; - $obj_name = 'The object' unless defined $obj_name; - my $name = "$obj_name isa $class"; - if( !defined $object ) { - $diag = "$obj_name isn't defined"; - } - elsif( !ref $object ) { - $diag = "$obj_name isn't a reference"; - } - else { - # We can't use UNIVERSAL::isa because we want to honor isa() overrides - local($@, $!); # eval sometimes resets $! - my $rslt = eval { $object->isa($class) }; - if( $@ ) { - if( $@ =~ /^Can't call method "isa" on unblessed reference/ ) { - if( !UNIVERSAL::isa($object, $class) ) { - my $ref = ref $object; - $diag = "$obj_name isn't a '$class' it's a '$ref'"; - } - } else { - die <isa on your object and got some weird error. -This should never happen. Please contact the author immediately. -Here's the error. -$@ -WHOA - } - } - elsif( !$rslt ) { - my $ref = ref $object; - $diag = "$obj_name isn't a '$class' it's a '$ref'"; - } - } - - - - my $ok; - if( $diag ) { - $ok = $Test->ok( 0, $name ); - $Test->diag(" $diag\n"); - } - else { - $ok = $Test->ok( 1, $name ); - } - - return $ok; -} - - -=item B - -=item B - - pass($test_name); - fail($test_name); - -Sometimes you just want to say that the tests have passed. Usually -the case is you've got some complicated condition that is difficult to -wedge into an ok(). In this case, you can simply use pass() (to -declare the test ok) or fail (for not ok). They are synonyms for -ok(1) and ok(0). - -Use these very, very, very sparingly. - -=cut - -sub pass (;$) { - $Test->ok(1, @_); -} - -sub fail (;$) { - $Test->ok(0, @_); -} - -=back - -=head2 Diagnostics - -If you pick the right test function, you'll usually get a good idea of -what went wrong when it failed. But sometimes it doesn't work out -that way. So here we have ways for you to write your own diagnostic -messages which are safer than just C. - -=over 4 - -=item B - - diag(@diagnostic_message); - -Prints a diagnostic message which is guaranteed not to interfere with -test output. Like C @diagnostic_message is simply concatinated -together. - -Handy for this sort of thing: - - ok( grep(/foo/, @users), "There's a foo user" ) or - diag("Since there's no foo, check that /etc/bar is set up right"); - -which would produce: - - not ok 42 - There's a foo user - # Failed test (foo.t at line 52) - # Since there's no foo, check that /etc/bar is set up right. - -You might remember C with the mnemonic C. - -All diag()s can be made silent by passing the "no_diag" option to -Test::More. C 1, 'no_diag'>. This is useful -if you have diagnostics for personal testing but then wish to make -them silent for release without commenting out each individual -statement. - -B The exact formatting of the diagnostic output is still -changing, but it is guaranteed that whatever you throw at it it won't -interfere with the test. - -=cut - -sub diag { - return unless $Show_Diag; - $Test->diag(@_); -} - - -=back - -=head2 Module tests - -You usually want to test if the module you're testing loads ok, rather -than just vomiting if its load fails. For such purposes we have -C and C. - -=over 4 - -=item B - - BEGIN { use_ok($module); } - BEGIN { use_ok($module, @imports); } - -These simply use the given $module and test to make sure the load -happened ok. It's recommended that you run use_ok() inside a BEGIN -block so its functions are exported at compile-time and prototypes are -properly honored. - -If @imports are given, they are passed through to the use. So this: - - BEGIN { use_ok('Some::Module', qw(foo bar)) } - -is like doing this: - - use Some::Module qw(foo bar); - -Version numbers can be checked like so: - - # Just like "use Some::Module 1.02" - BEGIN { use_ok('Some::Module', 1.02) } - -Don't try to do this: - - BEGIN { - use_ok('Some::Module'); - - ...some code that depends on the use... - ...happening at compile time... - } - -because the notion of "compile-time" is relative. Instead, you want: - - BEGIN { use_ok('Some::Module') } - BEGIN { ...some code that depends on the use... } - - -=cut - -sub use_ok ($;@) { - my($module, @imports) = @_; - @imports = () unless @imports; - - my($pack,$filename,$line) = caller; - - local($@,$!); # eval sometimes interferes with $! - - if( @imports == 1 and $imports[0] =~ /^\d+(?:\.\d+)?$/ ) { - # probably a version check. Perl needs to see the bare number - # for it to work with non-Exporter based modules. - eval <ok( !$@, "use $module;" ); - - unless( $ok ) { - chomp $@; - $@ =~ s{^BEGIN failed--compilation aborted at .*$} - {BEGIN failed--compilation aborted at $filename line $line.}m; - $Test->diag(< - - require_ok($module); - require_ok($file); - -Like use_ok(), except it requires the $module or $file. - -=cut - -sub require_ok ($) { - my($module) = shift; - - my $pack = caller; - - # Try to deterine if we've been given a module name or file. - # Module names must be barewords, files not. - $module = qq['$module'] unless _is_module_name($module); - - local($!, $@); # eval sometimes interferes with $! - eval <ok( !$@, "require $module;" ); - - unless( $ok ) { - chomp $@; - $Test->diag(<. - -The way Test::More handles this is with a named block. Basically, a -block of tests which can be skipped over or made todo. It's best if I -just show you... - -=over 4 - -=item B - - SKIP: { - skip $why, $how_many if $condition; - - ...normal testing code goes here... - } - -This declares a block of tests that might be skipped, $how_many tests -there are, $why and under what $condition to skip them. An example is -the easiest way to illustrate: - - SKIP: { - eval { require HTML::Lint }; - - skip "HTML::Lint not installed", 2 if $@; - - my $lint = new HTML::Lint; - isa_ok( $lint, "HTML::Lint" ); - - $lint->parse( $html ); - is( $lint->errors, 0, "No errors found in HTML" ); - } - -If the user does not have HTML::Lint installed, the whole block of -code I. Test::More will output special ok's -which Test::Harness interprets as skipped, but passing, tests. - -It's important that $how_many accurately reflects the number of tests -in the SKIP block so the # of tests run will match up with your plan. -If your plan is C $how_many is optional and will default to 1. - -It's perfectly safe to nest SKIP blocks. Each SKIP block must have -the label C, or Test::More can't work its magic. - -You don't skip tests which are failing because there's a bug in your -program, or for which you don't yet have code written. For that you -use TODO. Read on. - -=cut - -#'# -sub skip { - my($why, $how_many) = @_; - - unless( defined $how_many ) { - # $how_many can only be avoided when no_plan is in use. - _carp "skip() needs to know \$how_many tests are in the block" - unless $Test->has_plan eq 'no_plan'; - $how_many = 1; - } - - for( 1..$how_many ) { - $Test->skip($why); - } - - local $^W = 0; - last SKIP; -} - - -=item B - - TODO: { - local $TODO = $why if $condition; - - ...normal testing code goes here... - } - -Declares a block of tests you expect to fail and $why. Perhaps it's -because you haven't fixed a bug or haven't finished a new feature: - - TODO: { - local $TODO = "URI::Geller not finished"; - - my $card = "Eight of clubs"; - is( URI::Geller->your_card, $card, 'Is THIS your card?' ); - - my $spoon; - URI::Geller->bend_spoon; - is( $spoon, 'bent', "Spoon bending, that's original" ); - } - -With a todo block, the tests inside are expected to fail. Test::More -will run the tests normally, but print out special flags indicating -they are "todo". Test::Harness will interpret failures as being ok. -Should anything succeed, it will report it as an unexpected success. -You then know the thing you had todo is done and can remove the -TODO flag. - -The nice part about todo tests, as opposed to simply commenting out a -block of tests, is it's like having a programmatic todo list. You know -how much work is left to be done, you're aware of what bugs there are, -and you'll know immediately when they're fixed. - -Once a todo test starts succeeding, simply move it outside the block. -When the block is empty, delete it. - -B: TODO tests require a Test::Harness upgrade else it will -treat it as a normal failure. See L) - - -=item B - - TODO: { - todo_skip $why, $how_many if $condition; - - ...normal testing code... - } - -With todo tests, it's best to have the tests actually run. That way -you'll know when they start passing. Sometimes this isn't possible. -Often a failing test will cause the whole program to die or hang, even -inside an C with and using C. In these extreme -cases you have no choice but to skip over the broken tests entirely. - -The syntax and behavior is similar to a C except the -tests will be marked as failing but todo. Test::Harness will -interpret them as passing. - -=cut - -sub todo_skip { - my($why, $how_many) = @_; - - unless( defined $how_many ) { - # $how_many can only be avoided when no_plan is in use. - _carp "todo_skip() needs to know \$how_many tests are in the block" - unless $Test->has_plan eq 'no_plan'; - $how_many = 1; - } - - for( 1..$how_many ) { - $Test->todo_skip($why); - } - - local $^W = 0; - last TODO; -} - -=item When do I use SKIP vs. TODO? - -B, use SKIP. -This includes optional modules that aren't installed, running under -an OS that doesn't have some feature (like fork() or symlinks), or maybe -you need an Internet connection and one isn't available. - -B, use TODO. This -is for any code you haven't written yet, or bugs you have yet to fix, -but want to put tests in your testing script (always a good idea). - - -=back - -=head2 Complex data structures - -Not everything is a simple eq check or regex. There are times you -need to see if two data structures are equivalent. For these -instances Test::More provides a handful of useful functions. - -B I'm not quite sure what will happen with filehandles. - -=over 4 - -=item B - - is_deeply( $this, $that, $test_name ); - -Similar to is(), except that if $this and $that are hash or array -references, it does a deep comparison walking each data structure to -see if they are equivalent. If the two structures are different, it -will display the place where they start differing. - -Test::Differences and Test::Deep provide more in-depth functionality -along these lines. - -=back - -=cut - -our (@Data_Stack, %Refs_Seen); -my $DNE = bless [], 'Does::Not::Exist'; -sub is_deeply { - unless( @_ == 2 or @_ == 3 ) { - my $msg = <ok(0); - } - - my($this, $that, $name) = @_; - - my $ok; - if( !ref $this and !ref $that ) { # neither is a reference - $ok = $Test->is_eq($this, $that, $name); - } - elsif( !ref $this xor !ref $that ) { # one's a reference, one isn't - $ok = $Test->ok(0, $name); - $Test->diag( _format_stack({ vals => [ $this, $that ] }) ); - } - else { # both references - local @Data_Stack = (); - if( _deep_check($this, $that) ) { - $ok = $Test->ok(1, $name); - } - else { - $ok = $Test->ok(0, $name); - $Test->diag(_format_stack(@Data_Stack)); - } - } - - return $ok; -} - -sub _format_stack { - my(@Stack) = @_; - - my $var = '$FOO'; - my $did_arrow = 0; - foreach my $entry (@Stack) { - my $type = $entry->{type} || ''; - my $idx = $entry->{'idx'}; - if( $type eq 'HASH' ) { - $var .= "->" unless $did_arrow++; - $var .= "{$idx}"; - } - elsif( $type eq 'ARRAY' ) { - $var .= "->" unless $did_arrow++; - $var .= "[$idx]"; - } - elsif( $type eq 'REF' ) { - $var = "\${$var}"; - } - } - - my @vals = @{$Stack[-1]{vals}}[0,1]; - my @vars = (); - ($vars[0] = $var) =~ s/\$FOO/ \$got/; - ($vars[1] = $var) =~ s/\$FOO/\$expected/; - - my $out = "Structures begin differing at:\n"; - foreach my $idx (0..$#vals) { - my $val = $vals[$idx]; - $vals[$idx] = !defined $val ? 'undef' : - $val eq $DNE ? "Does not exist" : - ref $val ? "$val" : - "'$val'"; - } - - $out .= "$vars[0] = $vals[0]\n"; - $out .= "$vars[1] = $vals[1]\n"; - - $out =~ s/^/ /msg; - return $out; -} - - -sub _type { - my $thing = shift; - - return '' if !ref $thing; - - for my $type (qw(ARRAY HASH REF SCALAR GLOB Regexp)) { - return $type if UNIVERSAL::isa($thing, $type); - } - - return ''; -} - - -=head2 Discouraged comparison functions - -The use of the following functions is discouraged as they are not -actually testing functions and produce no diagnostics to help figure -out what went wrong. They were written before is_deeply() existed -because I couldn't figure out how to display a useful diff of two -arbitrary data structures. - -These functions are usually used inside an ok(). - - ok( eq_array(\@this, \@that) ); - -C can do that better and with diagnostics. - - is_deeply( \@this, \@that ); - -They may be deprecated in future versions. - -=over 4 - -=item B - - my $is_eq = eq_array(\@this, \@that); - -Checks if two arrays are equivalent. This is a deep check, so -multi-level structures are handled correctly. - -=cut - -#'# -sub eq_array { - local @Data_Stack; - _deep_check(@_); -} - -sub _eq_array { - my($a1, $a2) = @_; - - if( grep !_type($_) eq 'ARRAY', $a1, $a2 ) { - warn "eq_array passed a non-array ref"; - return 0; - } - - return 1 if $a1 eq $a2; - - my $ok = 1; - my $max = $#$a1 > $#$a2 ? $#$a1 : $#$a2; - for (0..$max) { - my $e1 = $_ > $#$a1 ? $DNE : $a1->[$_]; - my $e2 = $_ > $#$a2 ? $DNE : $a2->[$_]; - - push @Data_Stack, { type => 'ARRAY', idx => $_, vals => [$e1, $e2] }; - $ok = _deep_check($e1,$e2); - pop @Data_Stack if $ok; - - last unless $ok; - } - - return $ok; -} - -sub _deep_check { - my($e1, $e2) = @_; - my $ok = 0; - - # Effectively turn %Refs_Seen into a stack. This avoids picking up - # the same referenced used twice (such as [\$a, \$a]) to be considered - # circular. - local %Refs_Seen = %Refs_Seen; - - { - # Quiet uninitialized value warnings when comparing undefs. - local $^W = 0; - - $Test->_unoverload(\$e1, \$e2); - - # Either they're both references or both not. - my $same_ref = !(!ref $e1 xor !ref $e2); - my $not_ref = (!ref $e1 and !ref $e2); - - if( defined $e1 xor defined $e2 ) { - $ok = 0; - } - elsif ( $e1 == $DNE xor $e2 == $DNE ) { - $ok = 0; - } - elsif ( $same_ref and ($e1 eq $e2) ) { - $ok = 1; - } - elsif ( $not_ref ) { - push @Data_Stack, { type => '', vals => [$e1, $e2] }; - $ok = 0; - } - else { - if( $Refs_Seen{$e1} ) { - return $Refs_Seen{$e1} eq $e2; - } - else { - $Refs_Seen{$e1} = "$e2"; - } - - my $type = _type($e1); - $type = 'DIFFERENT' unless _type($e2) eq $type; - - if( $type eq 'DIFFERENT' ) { - push @Data_Stack, { type => $type, vals => [$e1, $e2] }; - $ok = 0; - } - elsif( $type eq 'ARRAY' ) { - $ok = _eq_array($e1, $e2); - } - elsif( $type eq 'HASH' ) { - $ok = _eq_hash($e1, $e2); - } - elsif( $type eq 'REF' ) { - push @Data_Stack, { type => $type, vals => [$e1, $e2] }; - $ok = _deep_check($$e1, $$e2); - pop @Data_Stack if $ok; - } - elsif( $type eq 'SCALAR' ) { - push @Data_Stack, { type => 'REF', vals => [$e1, $e2] }; - $ok = _deep_check($$e1, $$e2); - pop @Data_Stack if $ok; - } - else { - _whoa(1, "No type in _deep_check"); - } - } - } - - return $ok; -} - - -sub _whoa { - my($check, $desc) = @_; - if( $check ) { - die < - - my $is_eq = eq_hash(\%this, \%that); - -Determines if the two hashes contain the same keys and values. This -is a deep check. - -=cut - -sub eq_hash { - local @Data_Stack; - return _deep_check(@_); -} - -sub _eq_hash { - my($a1, $a2) = @_; - - if( grep !_type($_) eq 'HASH', $a1, $a2 ) { - warn "eq_hash passed a non-hash ref"; - return 0; - } - - return 1 if $a1 eq $a2; - - my $ok = 1; - my $bigger = keys %$a1 > keys %$a2 ? $a1 : $a2; - foreach my $k (keys %$bigger) { - my $e1 = exists $a1->{$k} ? $a1->{$k} : $DNE; - my $e2 = exists $a2->{$k} ? $a2->{$k} : $DNE; - - push @Data_Stack, { type => 'HASH', idx => $k, vals => [$e1, $e2] }; - $ok = _deep_check($e1, $e2); - pop @Data_Stack if $ok; - - last unless $ok; - } - - return $ok; -} - -=item B - - my $is_eq = eq_set(\@this, \@that); - -Similar to eq_array(), except the order of the elements is B -important. This is a deep check, but the irrelevancy of order only -applies to the top level. - - ok( eq_set(\@this, \@that) ); - -Is better written: - - is_deeply( [sort @this], [sort @that] ); - -B By historical accident, this is not a true set comparision. -While the order of elements does not matter, duplicate elements do. - -Test::Deep contains much better set comparison functions. - -=cut - -sub eq_set { - my($a1, $a2) = @_; - return 0 unless @$a1 == @$a2; - - # There's faster ways to do this, but this is easiest. - local $^W = 0; - - # We must make sure that references are treated neutrally. It really - # doesn't matter how we sort them, as long as both arrays are sorted - # with the same algorithm. - # Have to inline the sort routine due to a threading/sort bug. - # See [rt.cpan.org 6782] - return eq_array( - [sort { ref $a ? -1 : ref $b ? 1 : $a cmp $b } @$a1], - [sort { ref $a ? -1 : ref $b ? 1 : $a cmp $b } @$a2] - ); -} - -=back - - -=head2 Extending and Embedding Test::More - -Sometimes the Test::More interface isn't quite enough. Fortunately, -Test::More is built on top of Test::Builder which provides a single, -unified backend for any test library to use. This means two test -libraries which both use Test::Builder B. - -If you simply want to do a little tweaking of how the tests behave, -you can access the underlying Test::Builder object like so: - -=over 4 - -=item B - - my $test_builder = Test::More->builder; - -Returns the Test::Builder object underlying Test::More for you to play -with. - -=cut - -sub builder { - return Test::Builder->new; -} - -=back - - -=head1 EXIT CODES - -If all your tests passed, Test::Builder will exit with zero (which is -normal). If anything failed it will exit with how many failed. If -you run less (or more) tests than you planned, the missing (or extras) -will be considered failures. If no tests were ever run Test::Builder -will throw a warning and exit with 255. If the test died, even after -having successfully completed all its tests, it will still be -considered a failure and will exit with 255. - -So the exit codes are... - - 0 all tests successful - 255 test died - any other number how many failed (including missing or extras) - -If you fail more than 254 tests, it will be reported as 254. - -B This behavior may go away in future versions. - - -=head1 CAVEATS and NOTES - -=over 4 - -=item Backwards compatibility - -Test::More works with Perls as old as 5.004_05. - - -=item Overloaded objects - -String overloaded objects are compared B. This prevents -Test::More from piercing an object's interface allowing better blackbox -testing. So if a function starts returning overloaded objects instead of -bare strings your tests won't notice the difference. This is good. - -However, it does mean that functions like is_deeply() cannot be used to -test the internals of string overloaded objects. In this case I would -suggest Test::Deep which contains more flexible testing functions for -complex data structures. - - -=item Threads - -Test::More will only be aware of threads if "use threads" has been done -I Test::More is loaded. This is ok: - - use threads; - use Test::More; - -This may cause problems: - - use Test::More - use threads; - - -=item Test::Harness upgrade - -no_plan and todo depend on new Test::Harness features and fixes. If -you're going to distribute tests that use no_plan or todo your -end-users will have to upgrade Test::Harness to the latest one on -CPAN. If you avoid no_plan and TODO tests, the stock Test::Harness -will work fine. - -Installing Test::More should also upgrade Test::Harness. - -=back - - -=head1 HISTORY - -This is a case of convergent evolution with Joshua Pritikin's Test -module. I was largely unaware of its existence when I'd first -written my own ok() routines. This module exists because I can't -figure out how to easily wedge test names into Test's interface (along -with a few other problems). - -The goal here is to have a testing utility that's simple to learn, -quick to use and difficult to trip yourself up with while still -providing more flexibility than the existing Test.pm. As such, the -names of the most common routines are kept tiny, special cases and -magic side-effects are kept to a minimum. WYSIWYG. - - -=head1 SEE ALSO - -L if all this confuses you and you just want to write -some tests. You can upgrade to Test::More later (it's forward -compatible). - -L is the old testing module. Its main benefit is that it has -been distributed with Perl since 5.004_05. - -L for details on how your test results are interpreted -by Perl. - -L for more ways to test complex data structures. -And it plays well with Test::More. - -L is like XUnit but more perlish. - -L gives you more powerful complex data structure testing. - -L is XUnit style testing. - -L shows the idea of embedded testing. - -L installs a whole bunch of useful test modules. - - -=head1 AUTHORS - -Michael G Schwern Eschwern@pobox.comE with much inspiration -from Joshua Pritikin's Test module and lots of help from Barrie -Slaymaker, Tony Bowden, blackstar.co.uk, chromatic, Fergal Daly and -the perl-qa gang. - - -=head1 BUGS - -See F to report and view bugs. - - -=head1 COPYRIGHT - -Copyright 2001, 2002, 2004 by Michael G Schwern Eschwern@pobox.comE. - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -See F - -=cut - -1; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/Simple.pm b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/Simple.pm deleted file mode 100644 index 2317f54d5be..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/Test/Simple.pm +++ /dev/null @@ -1,236 +0,0 @@ -package Test::Simple; - -use 5.004; - -use strict 'vars'; -our ($VERSION); -$VERSION = '0.60'; -$VERSION = eval $VERSION; # make the alpha version come out as a number - - -use Test::Builder; -my $Test = Test::Builder->new; - -sub import { - my $self = shift; - my $caller = caller; - *{$caller.'::ok'} = \&ok; - - $Test->exported_to($caller); - $Test->plan(@_); -} - - -=head1 NAME - -Test::Simple - Basic utilities for writing tests. - -=head1 SYNOPSIS - - use Test::Simple tests => 1; - - ok( $foo eq $bar, 'foo is bar' ); - - -=head1 DESCRIPTION - -** If you are unfamiliar with testing B first! ** - -This is an extremely simple, extremely basic module for writing tests -suitable for CPAN modules and other pursuits. If you wish to do more -complicated testing, use the Test::More module (a drop-in replacement -for this one). - -The basic unit of Perl testing is the ok. For each thing you want to -test your program will print out an "ok" or "not ok" to indicate pass -or fail. You do this with the ok() function (see below). - -The only other constraint is you must pre-declare how many tests you -plan to run. This is in case something goes horribly wrong during the -test and your test program aborts, or skips a test or whatever. You -do this like so: - - use Test::Simple tests => 23; - -You must have a plan. - - -=over 4 - -=item B - - ok( $foo eq $bar, $name ); - ok( $foo eq $bar ); - -ok() is given an expression (in this case C<$foo eq $bar>). If it's -true, the test passed. If it's false, it didn't. That's about it. - -ok() prints out either "ok" or "not ok" along with a test number (it -keeps track of that for you). - - # This produces "ok 1 - Hell not yet frozen over" (or not ok) - ok( get_temperature($hell) > 0, 'Hell not yet frozen over' ); - -If you provide a $name, that will be printed along with the "ok/not -ok" to make it easier to find your test when if fails (just search for -the name). It also makes it easier for the next guy to understand -what your test is for. It's highly recommended you use test names. - -All tests are run in scalar context. So this: - - ok( @stuff, 'I have some stuff' ); - -will do what you mean (fail if stuff is empty) - -=cut - -sub ok ($;$) { - $Test->ok(@_); -} - - -=back - -Test::Simple will start by printing number of tests run in the form -"1..M" (so "1..5" means you're going to run 5 tests). This strange -format lets Test::Harness know how many tests you plan on running in -case something goes horribly wrong. - -If all your tests passed, Test::Simple will exit with zero (which is -normal). If anything failed it will exit with how many failed. If -you run less (or more) tests than you planned, the missing (or extras) -will be considered failures. If no tests were ever run Test::Simple -will throw a warning and exit with 255. If the test died, even after -having successfully completed all its tests, it will still be -considered a failure and will exit with 255. - -So the exit codes are... - - 0 all tests successful - 255 test died - any other number how many failed (including missing or extras) - -If you fail more than 254 tests, it will be reported as 254. - -This module is by no means trying to be a complete testing system. -It's just to get you started. Once you're off the ground its -recommended you look at L. - - -=head1 EXAMPLE - -Here's an example of a simple .t file for the fictional Film module. - - use Test::Simple tests => 5; - - use Film; # What you're testing. - - my $btaste = Film->new({ Title => 'Bad Taste', - Director => 'Peter Jackson', - Rating => 'R', - NumExplodingSheep => 1 - }); - ok( defined($btaste) && ref $btaste eq 'Film, 'new() works' ); - - ok( $btaste->Title eq 'Bad Taste', 'Title() get' ); - ok( $btaste->Director eq 'Peter Jackson', 'Director() get' ); - ok( $btaste->Rating eq 'R', 'Rating() get' ); - ok( $btaste->NumExplodingSheep == 1, 'NumExplodingSheep() get' ); - -It will produce output like this: - - 1..5 - ok 1 - new() works - ok 2 - Title() get - ok 3 - Director() get - not ok 4 - Rating() get - # Failed test (t/film.t at line 14) - ok 5 - NumExplodingSheep() get - # Looks like you failed 1 tests of 5 - -Indicating the Film::Rating() method is broken. - - -=head1 CAVEATS - -Test::Simple will only report a maximum of 254 failures in its exit -code. If this is a problem, you probably have a huge test script. -Split it into multiple files. (Otherwise blame the Unix folks for -using an unsigned short integer as the exit status). - -Because VMS's exit codes are much, much different than the rest of the -universe, and perl does horrible mangling to them that gets in my way, -it works like this on VMS. - - 0 SS$_NORMAL all tests successful - 4 SS$_ABORT something went wrong - -Unfortunately, I can't differentiate any further. - - -=head1 NOTES - -Test::Simple is B tested all the way back to perl 5.004. - -Test::Simple is thread-safe in perl 5.8.0 and up. - -=head1 HISTORY - -This module was conceived while talking with Tony Bowden in his -kitchen one night about the problems I was having writing some really -complicated feature into the new Testing module. He observed that the -main problem is not dealing with these edge cases but that people hate -to write tests B. What was needed was a dead simple module -that took all the hard work out of testing and was really, really easy -to learn. Paul Johnson simultaneously had this idea (unfortunately, -he wasn't in Tony's kitchen). This is it. - - -=head1 SEE ALSO - -=over 4 - -=item L - -More testing functions! Once you outgrow Test::Simple, look at -Test::More. Test::Simple is 100% forward compatible with Test::More -(i.e. you can just use Test::More instead of Test::Simple in your -programs and things will still work). - -=item L - -The original Perl testing module. - -=item L - -Elaborate unit testing. - -=item L, L - -Embed tests in your code! - -=item L - -Interprets the output of your test program. - -=back - - -=head1 AUTHORS - -Idea by Tony Bowden and Paul Johnson, code by Michael G Schwern -Eschwern@pobox.comE, wardrobe by Calvin Klein. - - -=head1 COPYRIGHT - -Copyright 2001, 2002, 2004 by Michael G Schwern Eschwern@pobox.comE. - -This program is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -See F - -=cut - -1; diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/meta-json.t b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/meta-json.t deleted file mode 100644 index 3d505cf23f8..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/meta-json.t +++ /dev/null @@ -1,12 +0,0 @@ -BEGIN { - if ($ENV{PERL_CORE}) { - chdir 't' if -d 't'; - @INC = ("../lib", "lib/compress"); - } -} - -use lib qw(t t/compress); -use Test::More; -eval "use Test::CPAN::Meta::JSON"; -plan skip_all => "Test::CPAN::Meta::JSON required for testing META.json" if $@; -meta_json_ok(); \ No newline at end of file diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/meta-yaml.t b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/meta-yaml.t deleted file mode 100644 index d0924aa234f..00000000000 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/t/meta-yaml.t +++ /dev/null @@ -1,12 +0,0 @@ -BEGIN { - if ($ENV{PERL_CORE}) { - chdir 't' if -d 't'; - @INC = ("../lib", "lib/compress"); - } -} - -use lib qw(t t/compress); -use Test::More; -eval "use Test::CPAN::Meta"; -plan skip_all => "Test::CPAN::Meta required for testing META.yml" if $@; -meta_yaml_ok(); \ No newline at end of file diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.c index 89b8c321955..b79df1e0e66 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/crc32.c @@ -98,13 +98,22 @@ # endif #endif +/* If available, use the ARM processor CRC32 instruction. */ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 +# define ARMCRC32 +#endif + /* Local functions. */ local z_crc_t multmodp OF((z_crc_t a, z_crc_t b)); local z_crc_t x2nmodp OF((z_off64_t n, unsigned k)); -/* If available, use the ARM processor CRC32 instruction. */ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 -# define ARMCRC32 +#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE)) + local z_word_t byte_swap OF((z_word_t word)); +#endif + +#if defined(W) && !defined(ARMCRC32) + local z_crc_t crc_word OF((z_word_t data)); + local z_word_t crc_word_big OF((z_word_t data)); #endif #if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE)) @@ -645,8 +654,8 @@ unsigned long ZEXPORT crc32_z( len &= 7; /* Do three interleaved CRCs to realize the throughput of one crc32x - instruction per cycle. Each CRC is calcuated on Z_BATCH words. The three - CRCs are combined into a single CRC after each set of batches. */ + instruction per cycle. Each CRC is calculated on Z_BATCH words. The + three CRCs are combined into a single CRC after each set of batches. */ while (num >= 3 * Z_BATCH) { crc1 = 0; crc2 = 0; @@ -1086,7 +1095,7 @@ uLong ZEXPORT crc32_combine( uLong crc2, z_off_t len2) { - return crc32_combine64(crc1, crc2, len2); + return crc32_combine64(crc1, crc2, (z_off64_t)len2); } /* ========================================================================= */ @@ -1103,7 +1112,7 @@ uLong ZEXPORT crc32_combine_gen64( uLong ZEXPORT crc32_combine_gen( z_off_t len2) { - return crc32_combine_gen64(len2); + return crc32_combine_gen64((z_off64_t)len2); } /* ========================================================================= */ diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.c index a5fb52594ed..abe61387a7f 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.c @@ -52,7 +52,7 @@ #include "deflate.h" const char deflate_copyright[] = - " deflate 1.2.12 Copyright 1995-2022 Jean-loup Gailly and Mark Adler "; + " deflate 1.2.13 Copyright 1995-2022 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -87,13 +87,7 @@ local void lm_init OF((deflate_state *s)); local void putShortMSB OF((deflate_state *s, uInt b)); local void flush_pending OF((z_streamp strm)); local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); -#ifdef ASMV -# pragma message("Assembler code may have bugs -- use at your own risk") - void match_init OF((void)); /* asm code initialization */ - uInt longest_match OF((deflate_state *s, IPos cur_match)); -#else local uInt longest_match OF((deflate_state *s, IPos cur_match)); -#endif #ifdef ZLIB_DEBUG local void check_match OF((deflate_state *s, IPos start, IPos match, @@ -160,7 +154,7 @@ local const config configuration_table[10] = { * characters, so that a running hash key can be computed from the previous * key instead of complete recalculation each time. */ -#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) +#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) /* =========================================================================== @@ -191,9 +185,9 @@ local const config configuration_table[10] = { */ #define CLEAR_HASH(s) \ do { \ - s->head[s->hash_size-1] = NIL; \ + s->head[s->hash_size - 1] = NIL; \ zmemzero((Bytef *)s->head, \ - (unsigned)(s->hash_size-1)*sizeof(*s->head)); \ + (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ } while (0) /* =========================================================================== @@ -284,6 +278,8 @@ int ZEXPORT deflateInit2_( if (windowBits < 0) { /* suppress zlib wrapper */ wrap = 0; + if (windowBits < -15) + return Z_STREAM_ERROR; windowBits = -windowBits; } #ifdef GZIP @@ -313,7 +309,7 @@ int ZEXPORT deflateInit2_( s->hash_bits = (uInt)memLevel + 7; s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; - s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); + s->hash_shift = ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH); s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); @@ -339,11 +335,11 @@ int ZEXPORT deflateInit2_( * sym_buf value to read moves forward three bytes. From that symbol, up to * 31 bits are written to pending_buf. The closest the written pending_buf * bits gets to the next sym_buf symbol to read is just before the last - * code is written. At that time, 31*(n-2) bits have been written, just - * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at - * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1 + * code is written. At that time, 31*(n - 2) bits have been written, just + * after 24*(n - 2) bits have been consumed from sym_buf. sym_buf starts at + * 8*n bits into pending_buf. (Note that the symbol buffer fills when n - 1 * symbols are written.) The closest the writing gets to what is unread is - * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and + * then n + 14 bits. Here n is lit_bufsize, which is 16384 by default, and * can range from 128 to 32768. * * Therefore, at a minimum, there are 142 bits of space between what is @@ -673,36 +669,50 @@ int ZEXPORT deflateTune( } /* ========================================================================= - * For the default windowBits of 15 and memLevel of 8, this function returns - * a close to exact, as well as small, upper bound on the compressed size. - * They are coded as constants here for a reason--if the #define's are - * changed, then this function needs to be changed as well. The return - * value for 15 and 8 only works for those exact settings. + * For the default windowBits of 15 and memLevel of 8, this function returns a + * close to exact, as well as small, upper bound on the compressed size. This + * is an expansion of ~0.03%, plus a small constant. + * + * For any setting other than those defaults for windowBits and memLevel, one + * of two worst case bounds is returned. This is at most an expansion of ~4% or + * ~13%, plus a small constant. * - * For any setting other than those defaults for windowBits and memLevel, - * the value returned is a conservative worst case for the maximum expansion - * resulting from using fixed blocks instead of stored blocks, which deflate - * can emit on compressed data for some combinations of the parameters. + * Both the 0.03% and 4% derive from the overhead of stored blocks. The first + * one is for stored blocks of 16383 bytes (memLevel == 8), whereas the second + * is for stored blocks of 127 bytes (the worst case memLevel == 1). The + * expansion results from five bytes of header for each stored block. * - * This function could be more sophisticated to provide closer upper bounds for - * every combination of windowBits and memLevel. But even the conservative - * upper bound of about 14% expansion does not seem onerous for output buffer - * allocation. + * The larger expansion of 13% results from a window size less than or equal to + * the symbols buffer size (windowBits <= memLevel + 7). In that case some of + * the data being compressed may have slid out of the sliding window, impeding + * a stored block from being emitted. Then the only choice is a fixed or + * dynamic block, where a fixed block limits the maximum expansion to 9 bits + * per 8-bit byte, plus 10 bits for every block. The smallest block size for + * which this can occur is 255 (memLevel == 2). + * + * Shifts are used to approximate divisions, for speed. */ uLong ZEXPORT deflateBound( z_streamp strm, uLong sourceLen) { deflate_state *s; - uLong complen, wraplen; + uLong fixedlen, storelen, wraplen; + + /* upper bound for fixed blocks with 9-bit literals and length 255 + (memLevel == 2, which is the lowest that may not use stored blocks) -- + ~13% overhead plus a small constant */ + fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) + + (sourceLen >> 9) + 4; - /* conservative upper bound for compressed data */ - complen = sourceLen + - ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; + /* upper bound for stored blocks with length 127 (memLevel == 1) -- + ~4% overhead plus a small constant */ + storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + + (sourceLen >> 11) + 7; - /* if can't get parameters, return conservative bound plus zlib wrapper */ + /* if can't get parameters, return larger bound plus a zlib wrapper */ if (deflateStateCheck(strm)) - return complen + 6; + return (fixedlen > storelen ? fixedlen : storelen) + 6; /* compute wrapper length */ s = strm->state; @@ -739,11 +749,12 @@ uLong ZEXPORT deflateBound( wraplen = 6; } - /* if not default parameters, return conservative bound */ + /* if not default parameters, return one of the conservative bounds */ if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return complen + wraplen; + return (s->w_bits <= s->hash_bits ? fixedlen : storelen) + wraplen; - /* default settings: return tight bound for that case */ + /* default settings: return tight bound for that case -- ~0.03% overhead + plus a small constant */ return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + (sourceLen >> 25) + 13 - 6 + wraplen; } @@ -855,7 +866,7 @@ int ZEXPORT deflate ( s->status = BUSY_STATE; if (s->status == INIT_STATE) { /* zlib header */ - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; + uInt header = (Z_DEFLATED + ((s->w_bits - 8) << 4)) << 8; uInt level_flags; if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) @@ -1251,11 +1262,6 @@ local void lm_init ( s->match_length = s->prev_length = MIN_MATCH-1; s->match_available = 0; s->ins_h = 0; -#ifndef FASTEST -#ifdef ASMV - match_init(); /* initialize the asm code */ -#endif -#endif } #ifndef FASTEST @@ -1268,18 +1274,14 @@ local void lm_init ( * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 * OUT assertion: the match length is not greater than s->lookahead. */ -#ifndef ASMV -/* For 80x86 and 680x0, an optimized version will be provided in match.asm or - * match.S. The code will be functionally equivalent. - */ local uInt longest_match( deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ + Bytef *scan = s->window + s->strstart; /* current string */ + Bytef *match; /* matched string */ + int len; /* length of current match */ int best_len = (int)s->prev_length; /* best match length so far */ int nice_match = s->nice_match; /* stop if match long enough */ IPos limit = s->strstart > (IPos)MAX_DIST(s) ? @@ -1294,13 +1296,13 @@ local uInt longest_match( /* Compare two bytes at a time. Note: this is not always beneficial. * Try with and without -DUNALIGNED_OK to check. */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan+best_len-1); + Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + ush scan_start = *(ushf*)scan; + ush scan_end = *(ushf*)(scan + best_len - 1); #else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len-1]; - register Byte scan_end = scan[best_len]; + Bytef *strend = s->window + s->strstart + MAX_MATCH; + Byte scan_end1 = scan[best_len - 1]; + Byte scan_end = scan[best_len]; #endif /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. @@ -1317,7 +1319,8 @@ local uInt longest_match( */ if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead; - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "need lookahead"); do { Assert(cur_match < s->strstart, "no future"); @@ -1335,43 +1338,44 @@ local uInt longest_match( /* This code assumes sizeof(unsigned short) == 2. Do not use * UNALIGNED_OK if your compiler uses a different size. */ - if (*(ushf*)(match+best_len-1) != scan_end || + if (*(ushf*)(match + best_len - 1) != scan_end || *(ushf*)match != scan_start) continue; /* It is not necessary to compare scan[2] and match[2] since they are * always equal when the other bytes match, given that the hash keys * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at - * strstart+3, +5, ... up to strstart+257. We check for insufficient + * strstart + 3, + 5, up to strstart + 257. We check for insufficient * lookahead only every 4th comparison; the 128th check will be made - * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is + * at strstart + 257. If MAX_MATCH-2 is not a multiple of 8, it is * necessary to put more guard bytes at the end of the window, or * to check more often for insufficient lookahead. */ Assert(scan[2] == match[2], "scan[2]?"); scan++, match++; do { - } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && scan < strend); /* The funny "do {}" generates better code on most compilers */ - /* Here, scan <= window+strstart+257 */ - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + /* Here, scan <= window + strstart + 257 */ + Assert(scan <= s->window + (unsigned)(s->window_size - 1), + "wild scan"); if (*scan == *match) scan++; - len = (MAX_MATCH - 1) - (int)(strend-scan); + len = (MAX_MATCH - 1) - (int)(strend - scan); scan = strend - (MAX_MATCH-1); #else /* UNALIGNED_OK */ - if (match[best_len] != scan_end || - match[best_len-1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; + if (match[best_len] != scan_end || + match[best_len - 1] != scan_end1 || + *match != *scan || + *++match != scan[1]) continue; - /* The check at best_len-1 can be removed because it will be made + /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) * It is not necessary to compare scan[2] and match[2] since they * are always equal when the other bytes match, given that @@ -1381,7 +1385,7 @@ local uInt longest_match( Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. + * the 256th check will be made at strstart + 258. */ do { } while (*++scan == *++match && *++scan == *++match && @@ -1390,7 +1394,8 @@ local uInt longest_match( *++scan == *++match && *++scan == *++match && scan < strend); - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (unsigned)(s->window_size - 1), + "wild scan"); len = MAX_MATCH - (int)(strend - scan); scan = strend - MAX_MATCH; @@ -1402,9 +1407,9 @@ local uInt longest_match( best_len = len; if (len >= nice_match) break; #ifdef UNALIGNED_OK - scan_end = *(ushf*)(scan+best_len-1); + scan_end = *(ushf*)(scan + best_len - 1); #else - scan_end1 = scan[best_len-1]; + scan_end1 = scan[best_len - 1]; scan_end = scan[best_len]; #endif } @@ -1414,7 +1419,6 @@ local uInt longest_match( if ((uInt)best_len <= s->lookahead) return (uInt)best_len; return s->lookahead; } -#endif /* ASMV */ #else /* FASTEST */ @@ -1425,17 +1429,18 @@ local uInt longest_match( deflate_state *s, IPos cur_match) { - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH; + Bytef *scan = s->window + s->strstart; /* current string */ + Bytef *match; /* matched string */ + int len; /* length of current match */ + Bytef *strend = s->window + s->strstart + MAX_MATCH; /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. * It is easy to get rid of this optimization if necessary. */ Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "need lookahead"); Assert(cur_match < s->strstart, "no future"); @@ -1445,7 +1450,7 @@ local uInt longest_match( */ if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; - /* The check at best_len-1 can be removed because it will be made + /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) * It is not necessary to compare scan[2] and match[2] since they * are always equal when the other bytes match, given that @@ -1455,7 +1460,7 @@ local uInt longest_match( Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. + * the 256th check will be made at strstart + 258. */ do { } while (*++scan == *++match && *++scan == *++match && @@ -1464,7 +1469,7 @@ local uInt longest_match( *++scan == *++match && *++scan == *++match && scan < strend); - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan"); len = MAX_MATCH - (int)(strend - scan); @@ -1501,7 +1506,7 @@ local void check_match( z_error("invalid match"); } if (z_verbose > 1) { - fprintf(stderr,"\\[%d,%d]", start-match, length); + fprintf(stderr,"\\[%d,%d]", start - match, length); do { putc(s->window[start++], stderr); } while (--length != 0); } } @@ -1547,9 +1552,9 @@ local void fill_window( /* If the window is almost full and there is insufficient lookahead, * move the upper half to the lower one to make room in the upper half. */ - if (s->strstart >= wsize+MAX_DIST(s)) { + if (s->strstart >= wsize + MAX_DIST(s)) { - zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more); + zmemcpy(s->window, s->window + wsize, (unsigned)wsize - more); s->match_start -= wsize; s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ s->block_start -= (long) wsize; @@ -1680,7 +1685,7 @@ local void fill_window( * * deflate_stored() is written to minimize the number of times an input byte is * copied. It is most efficient with large input and output buffers, which - * maximizes the opportunites to have a single copy from next_in to next_out. + * maximizes the opportunities to have a single copy from next_in to next_out. */ local block_state deflate_stored( deflate_state *s, @@ -1890,7 +1895,7 @@ local block_state deflate_fast( if (s->lookahead == 0) break; /* flush the current block */ } - /* Insert the string window[strstart .. strstart+2] in the + /* Insert the string window[strstart .. strstart + 2] in the * dictionary, and set hash_head to the head of the hash chain: */ hash_head = NIL; @@ -1938,7 +1943,7 @@ local block_state deflate_fast( s->strstart += s->match_length; s->match_length = 0; s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); + UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); #if MIN_MATCH != 3 Call UPDATE_HASH() MIN_MATCH-3 more times #endif @@ -1949,7 +1954,7 @@ local block_state deflate_fast( } else { /* No match, output a literal byte */ Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; } @@ -1993,7 +1998,7 @@ local block_state deflate_slow( if (s->lookahead == 0) break; /* flush the current block */ } - /* Insert the string window[strstart .. strstart+2] in the + /* Insert the string window[strstart .. strstart + 2] in the * dictionary, and set hash_head to the head of the hash chain: */ hash_head = NIL; @@ -2035,17 +2040,17 @@ local block_state deflate_slow( uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ - check_match(s, s->strstart-1, s->prev_match, s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, s->prev_length); - _tr_tally_dist(s, s->strstart -1 - s->prev_match, + _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not + * strstart - 1 and strstart are already inserted. If there is not * enough lookahead, the last two strings are not inserted in * the hash table. */ - s->lookahead -= s->prev_length-1; + s->lookahead -= s->prev_length - 1; s->prev_length -= 2; do { if (++s->strstart <= max_insert) { @@ -2063,8 +2068,8 @@ local block_state deflate_slow( * single literal. If there was a match but the current match * is longer, truncate the previous match to a single literal. */ - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); + Tracevv((stderr,"%c", s->window[s->strstart - 1])); + _tr_tally_lit(s, s->window[s->strstart - 1], bflush); if (bflush) { FLUSH_BLOCK_ONLY(s, 0); } @@ -2082,8 +2087,8 @@ local block_state deflate_slow( } Assert (flush != Z_NO_FLUSH, "no flush?"); if (s->match_available) { - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); + Tracevv((stderr,"%c", s->window[s->strstart - 1])); + _tr_tally_lit(s, s->window[s->strstart - 1], bflush); s->match_available = 0; } s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; @@ -2140,7 +2145,8 @@ local block_state deflate_rle( if (s->match_length > s->lookahead) s->match_length = s->lookahead; } - Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (uInt)(s->window_size - 1), + "wild scan"); } /* Emit match if have run of MIN_MATCH or longer, else emit literal */ @@ -2155,7 +2161,7 @@ local block_state deflate_rle( } else { /* No match, output a literal byte */ Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; } @@ -2195,7 +2201,7 @@ local block_state deflate_huff( /* Output a literal byte */ s->match_length = 0; Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; if (bflush) FLUSH_BLOCK(s, 0); diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.h b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.h index 17c226113b0..1a06cd5f25d 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.h +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/deflate.h @@ -329,8 +329,8 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, # define _tr_tally_dist(s, distance, length, flush) \ { uch len = (uch)(length); \ ush dist = (ush)(distance); \ - s->sym_buf[s->sym_next++] = dist; \ - s->sym_buf[s->sym_next++] = dist >> 8; \ + s->sym_buf[s->sym_next++] = (uch)dist; \ + s->sym_buf[s->sym_next++] = (uch)(dist >> 8); \ s->sym_buf[s->sym_next++] = len; \ dist--; \ s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c index 390ceaf112d..910a061b59a 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/inflate.c @@ -168,6 +168,8 @@ int ZEXPORT inflateReset2( /* extract wrap request from windowBits parameter */ if (windowBits < 0) { + if (windowBits < -15) + return Z_STREAM_ERROR; wrap = 0; windowBits = -windowBits; } @@ -764,8 +766,9 @@ int ZEXPORT inflate( if (copy > have) copy = have; if (copy) { if (state->head != Z_NULL && - state->head->extra != Z_NULL) { - len = state->head->extra_len - state->length; + state->head->extra != Z_NULL && + (len = state->head->extra_len - state->length) < + state->head->extra_max) { zmemcpy(state->head->extra + len, next, len + copy > state->head->extra_max ? state->head->extra_max - len : copy); diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/trees.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/trees.c index 658b8682ef8..20d37352614 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/trees.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/trees.c @@ -1,3 +1,4 @@ + /* trees.c -- output deflated data using Huffman coding * Copyright (C) 1995-2021 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 @@ -193,7 +194,7 @@ local void send_bits( s->bits_sent += (ulg)length; /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) + * (16 - bi_valid) bits from value, leaving (width - (16 - bi_valid)) * unused bits in value. */ if (s->bi_valid > (int)Buf_size - length) { @@ -256,7 +257,7 @@ local void tr_static_init() length = 0; for (code = 0; code < LENGTH_CODES-1; code++) { base_length[code] = length; - for (n = 0; n < (1< dist code (0..29) */ dist = 0; for (code = 0 ; code < 16; code++) { base_dist[code] = dist; - for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ for ( ; code < D_CODES; code++) { base_dist[code] = dist << 7; - for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { _dist_code[256 + dist++] = (uch)code; } } - Assert (dist == 256, "tr_static_init: 256+dist != 512"); + Assert (dist == 256, "tr_static_init: 256 + dist != 512"); /* Construct the codes of the static literal tree */ for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; @@ -312,7 +313,7 @@ local void tr_static_init() } /* =========================================================================== - * Genererate the file trees.h describing the static trees. + * Generate the file trees.h describing the static trees. */ #ifdef GEN_TREES_H # ifndef ZLIB_DEBUG @@ -321,7 +322,7 @@ local void tr_static_init() # define SEPARATOR(i, last, width) \ ((i) == (last)? "\n};\n\n" : \ - ((i) % (width) == (width)-1 ? ",\n" : ", ")) + ((i) % (width) == (width) - 1 ? ",\n" : ", ")) void gen_trees_header() { @@ -458,7 +459,7 @@ local void pqdownheap( while (j <= s->heap_len) { /* Set j to the smallest of the two sons: */ if (j < s->heap_len && - smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { + smaller(tree, s->heap[j + 1], s->heap[j], s->depth)) { j++; } /* Exit if v is smaller than both sons */ @@ -507,7 +508,7 @@ local void gen_bitlen( */ tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ - for (h = s->heap_max+1; h < HEAP_SIZE; h++) { + for (h = s->heap_max + 1; h < HEAP_SIZE; h++) { n = s->heap[h]; bits = tree[tree[n].Dad].Len + 1; if (bits > max_length) bits = max_length, overflow++; @@ -518,7 +519,7 @@ local void gen_bitlen( s->bl_count[bits]++; xbits = 0; - if (n >= base) xbits = extra[n-base]; + if (n >= base) xbits = extra[n - base]; f = tree[n].Freq; s->opt_len += (ulg)f * (unsigned)(bits + xbits); if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits); @@ -530,10 +531,10 @@ local void gen_bitlen( /* Find the first bit length which could increase: */ do { - bits = max_length-1; + bits = max_length - 1; while (s->bl_count[bits] == 0) bits--; - s->bl_count[bits]--; /* move one leaf down the tree */ - s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ + s->bl_count[bits]--; /* move one leaf down the tree */ + s->bl_count[bits + 1] += 2; /* move one overflow item as its brother */ s->bl_count[max_length]--; /* The brother of the overflow item also moves one step up, * but this does not affect bl_count[max_length] @@ -583,13 +584,13 @@ local void gen_codes ( * without bit reversal. */ for (bits = 1; bits <= MAX_BITS; bits++) { - code = (code + bl_count[bits-1]) << 1; + code = (code + bl_count[bits - 1]) << 1; next_code[bits] = (ush)code; } /* Check that the bit counts in bl_count are consistent. The last code * must be all ones. */ - Assert (code + bl_count[MAX_BITS]-1 == (1<heap_len = 0, s->heap_max = HEAP_SIZE; @@ -652,7 +653,7 @@ local void build_tree( } desc->max_code = max_code; - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + /* The elements heap[heap_len/2 + 1 .. heap_len] are leaves of the tree, * establish sub-heaps of increasing lengths: */ for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); @@ -714,10 +715,10 @@ local void scan_tree ( int min_count = 4; /* min repeat count */ if (nextlen == 0) max_count = 138, min_count = 3; - tree[max_code+1].Len = (ush)0xffff; /* guard */ + tree[max_code + 1].Len = (ush)0xffff; /* guard */ for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; + curlen = nextlen; nextlen = tree[n + 1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { @@ -758,11 +759,11 @@ local void send_tree ( int max_count = 7; /* max repeat count */ int min_count = 4; /* min repeat count */ - /* tree[max_code+1].Len = -1; */ /* guard already set */ + /* tree[max_code + 1].Len = -1; */ /* guard already set */ if (nextlen == 0) max_count = 138, min_count = 3; for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; + curlen = nextlen; nextlen = tree[n + 1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { @@ -773,13 +774,13 @@ local void send_tree ( send_code(s, curlen, s->bl_tree); count--; } Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); + send_code(s, REP_3_6, s->bl_tree); send_bits(s, count - 3, 2); } else if (count <= 10) { - send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); + send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count - 3, 3); } else { - send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); + send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count - 11, 7); } count = 0; prevlen = curlen; if (nextlen == 0) { @@ -807,8 +808,8 @@ local int build_bl_tree( /* Build the bit length tree: */ build_tree(s, (tree_desc *)(&(s->bl_desc))); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + /* opt_len now includes the length of the tree representations, except the + * lengths of the bit lengths codes and the 5 + 5 + 4 bits for the counts. */ /* Determine the number of bit length codes to send. The pkzip format @@ -819,7 +820,7 @@ local int build_bl_tree( if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; } /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4; + s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4; Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); @@ -843,19 +844,19 @@ local void send_all_trees( Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, "too many codes"); Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes-1, 5); - send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ for (rank = 0; rank < blcodes; rank++) { Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ + send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ + send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); } @@ -868,7 +869,7 @@ void ZLIB_INTERNAL _tr_stored_block( ulg stored_len, int last) { - send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ + send_bits(s, (STORED_BLOCK<<1) + last, 3); /* send block type */ bi_windup(s); /* align on byte boundary */ put_short(s, (ush)stored_len); put_short(s, (ush)~stored_len); @@ -879,7 +880,7 @@ void ZLIB_INTERNAL _tr_stored_block( s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; s->compressed_len += (stored_len + 4) << 3; s->bits_sent += 2*16; - s->bits_sent += stored_len<<3; + s->bits_sent += stored_len << 3; #endif } @@ -945,14 +946,17 @@ void ZLIB_INTERNAL _tr_flush_block( max_blindex = build_bl_tree(s); /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s->opt_len+3+7)>>3; - static_lenb = (s->static_len+3+7)>>3; + opt_lenb = (s->opt_len + 3 + 7) >> 3; + static_lenb = (s->static_len + 3 + 7) >> 3; Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, s->sym_next / 3)); - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; +#ifndef FORCE_STATIC + if (static_lenb <= opt_lenb || s->strategy == Z_FIXED) +#endif + opt_lenb = static_lenb; } else { Assert(buf != (char*)0, "lost buf"); @@ -962,7 +966,7 @@ void ZLIB_INTERNAL _tr_flush_block( #ifdef FORCE_STORED if (buf != (char*)0) { /* force stored block */ #else - if (stored_len+4 <= opt_lenb && buf != (char*)0) { + if (stored_len + 4 <= opt_lenb && buf != (char*)0) { /* 4: two words for the lengths */ #endif /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. @@ -973,21 +977,17 @@ void ZLIB_INTERNAL _tr_flush_block( */ _tr_stored_block(s, buf, stored_len, last); -#ifdef FORCE_STATIC - } else if (static_lenb >= 0) { /* force static trees */ -#else - } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { -#endif - send_bits(s, (STATIC_TREES<<1)+last, 3); + } else if (static_lenb == opt_lenb) { + send_bits(s, (STATIC_TREES<<1) + last, 3); compress_block(s, (const ct_data *)static_ltree, (const ct_data *)static_dtree); #ifdef ZLIB_DEBUG s->compressed_len += 3 + s->static_len; #endif } else { - send_bits(s, (DYN_TREES<<1)+last, 3); - send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, - max_blindex+1); + send_bits(s, (DYN_TREES<<1) + last, 3); + send_all_trees(s, s->l_desc.max_code + 1, s->d_desc.max_code + 1, + max_blindex + 1); compress_block(s, (const ct_data *)s->dyn_ltree, (const ct_data *)s->dyn_dtree); #ifdef ZLIB_DEBUG @@ -1006,8 +1006,8 @@ void ZLIB_INTERNAL _tr_flush_block( s->compressed_len += 7; /* align on byte boundary */ #endif } - Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - s->compressed_len-7*last)); + Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, + s->compressed_len - 7*last)); } /* =========================================================================== @@ -1019,9 +1019,9 @@ int ZLIB_INTERNAL _tr_tally ( unsigned dist, unsigned lc) { - s->sym_buf[s->sym_next++] = dist; - s->sym_buf[s->sym_next++] = dist >> 8; - s->sym_buf[s->sym_next++] = lc; + s->sym_buf[s->sym_next++] = (uch)dist; + s->sym_buf[s->sym_next++] = (uch)(dist >> 8); + s->sym_buf[s->sym_next++] = (uch)lc; if (dist == 0) { /* lc is the unmatched char */ s->dyn_ltree[lc].Freq++; @@ -1033,7 +1033,7 @@ int ZLIB_INTERNAL _tr_tally ( (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; + s->dyn_ltree[_length_code[lc] + LITERALS + 1].Freq++; s->dyn_dtree[d_code(dist)].Freq++; } return (s->sym_next == s->sym_end); @@ -1063,7 +1063,7 @@ local void compress_block( } else { /* Here, lc is the match length - MIN_MATCH */ code = _length_code[lc]; - send_code(s, code+LITERALS+1, ltree); /* send the length code */ + send_code(s, code + LITERALS + 1, ltree); /* send length code */ extra = extra_lbits[code]; if (extra != 0) { lc -= base_length[code]; @@ -1140,7 +1140,7 @@ local unsigned bi_reverse( unsigned code, int len) { - register unsigned res = 0; + unsigned res = 0; do { res |= code & 1; code >>= 1, res <<= 1; @@ -1179,6 +1179,6 @@ local void bi_windup( s->bi_buf = 0; s->bi_valid = 0; #ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent+7) & ~7; + s->bits_sent = (s->bits_sent + 7) & ~7; #endif } diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zconf.h b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zconf.h index 9d8847366a6..3e60df6d824 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zconf.h +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zconf.h @@ -349,6 +349,9 @@ # ifdef FAR # undef FAR # endif +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif # include /* No need for _export, use ZLIB.DEF instead. */ /* For complete Windows compatibility, use WINAPI, not __stdcall. */ @@ -467,11 +470,18 @@ typedef uLong FAR uLongf; # undef _LARGEFILE64_SOURCE #endif -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H +#ifndef Z_HAVE_UNISTD_H +# ifdef __WATCOMC__ +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_HAVE_UNISTD_H +# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) +# define Z_HAVE_UNISTD_H +# endif #endif #ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# if defined(Z_HAVE_UNISTD_H) # include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ # ifdef VMS # include /* for off_t */ diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.c b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.c index a19ac2b96dd..e7ea64e6863 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.c +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.c @@ -61,9 +61,11 @@ uLong ZEXPORT zlibCompileFlags() #ifdef ZLIB_DEBUG flags += 1 << 8; #endif + /* #if defined(ASMV) || defined(ASMINF) flags += 1 << 9; #endif + */ #ifdef ZLIB_WINAPI flags += 1 << 10; #endif @@ -214,7 +216,7 @@ local ptr_table table[MAX_PTR]; * a protected system like OS/2. Use Microsoft C instead. */ -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) { voidpf buf; ulg bsize = (ulg)items*size; @@ -240,7 +242,7 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) return buf; } -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { int n; @@ -277,13 +279,13 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) # define _hfree hfree #endif -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size) { (void)opaque; return _halloc((long)items, size); } -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { (void)opaque; _hfree(ptr); diff --git a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.h b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.h index 2ee0791ff63..d1ba8d94de4 100644 --- a/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.h +++ b/gnu/usr.bin/perl/cpan/Compress-Raw-Zlib/zlib-src/zutil.h @@ -197,6 +197,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t)); #endif /* common defaults */ diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm b/gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm index 774446a83f6..d8fd2a8e4e1 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/V.pm @@ -6,7 +6,7 @@ use warnings; use Config; use Exporter; use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS); -$VERSION = "0.33"; +$VERSION = "0.36"; @ISA = qw( Exporter ); @EXPORT_OK = qw( plv2hash summary myconfig signature ); %EXPORT_TAGS = ( @@ -29,6 +29,8 @@ my %BTD = map {( $_ => 0 )} qw( DEBUGGING NO_HASH_SEED NO_MATHOMS + NO_PERL_INTERNAL_RAND_SEED + NO_PERL_RAND_SEED NO_TAINT_SUPPORT PERL_BOOL_AS_CHAR PERL_COPY_ON_WRITE @@ -57,9 +59,11 @@ my %BTD = map {( $_ => 0 )} qw( PERL_PERTURB_KEYS_DISABLED PERL_PERTURB_KEYS_RANDOM PERL_PRESERVE_IVUV + PERL_RC_STACK PERL_RELOCATABLE_INCPUSH PERL_USE_DEVEL PERL_USE_SAFE_PUTENV + PERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES SILENT_NO_TAINT_SUPPORT UNLINK_ALL_VERSIONS USE_ATTRIBUTES_FOR_PERLIO @@ -81,10 +85,13 @@ my %BTD = map {( $_ => 0 )} qw( HAVE_INTERP_INTERN MULTIPLICITY MYMALLOC + NO_HASH_SEED PERL_DEBUG_READONLY_COW PERL_DEBUG_READONLY_OPS PERL_GLOBAL_STRUCT PERL_GLOBAL_STRUCT_PRIVATE + PERL_HASH_NO_SBOX32 + PERL_HASH_USE_SBOX32 PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERLIO_LAYERS @@ -263,7 +270,10 @@ sub plv2hash { $config{$k} = $v; } - if (my %kv = ($pv =~ m{\b + my %kv; + if ($pv =~ m{\S,? (?:osvers|archname)=}) { # attr is not the first on the line + # up to and including 5.24, a line could have multiple kv pairs + %kv = ($pv =~ m{\b (\w+) # key \s*= # assign ( '\s*[^']*?\s*' # quoted value @@ -271,17 +281,27 @@ sub plv2hash { | \S+ # unquoted value | \s*\n # empty ) - (?:,?\s+|\s*\n)? # separator (5.8.x reports did not have a ',' - }gx)) { # between every kv pair - - while (my ($k, $v) = each %kv) { - $k =~ s{\s+$} {}; - $v =~ s{\s*\n\z} {}; - $v =~ s{,$} {}; - $v =~ m{^'(.*)'$} and $v = $1; - $v =~ s{\s+$} {}; - $config{$k} = $v; - } + (?:,?\s+|\s*\n)? # optional separator (5.8.x reports did + }gx); # not have a ',' between every kv pair) + } + else { + # as of 5.25, each kv pair is listed on its own line + %kv = ($pv =~ m{^ + \s+ + (\w+) # key + \s*=\s* # assign + (.*?) # value + \s*,?\s*$ + }gmx); + } + + while (my ($k, $v) = each %kv) { + $k =~ s{\s+$} {}; + $v =~ s{\s*\n\z} {}; + $v =~ s{,$} {}; + $v =~ m{^'(.*)'$} and $v = $1; + $v =~ s{\s+$} {}; + $config{$k} = $v; } my $build = { %empty_build }; @@ -554,7 +574,7 @@ H.Merijn Brand =head1 COPYRIGHT AND LICENSE -Copyright (C) 2009-2020 H.Merijn Brand +Copyright (C) 2009-2023 H.Merijn Brand This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv56.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv56.t index 252a1622e2b..23060968d85 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv56.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/20_plv56.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 100; + my $tests = 106; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -39,7 +39,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "9dc187182be100c1713f210a8c6d9f45"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } __END__ Summary of my perl5 (revision 5.0 version 6 subversion 2) configuration: diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/21_plv58.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/21_plv58.t index b354e24a9d8..9ec8a9afb41 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/21_plv58.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/21_plv58.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 100; + my $tests = 106; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -42,7 +42,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "df48dce1adaaf63855d8acd455c51818"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } __END__ Summary of my perl5 (revision 5 version 8 subversion 9) configuration: diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/22_plv510.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/22_plv510.t index bec688cdfb4..55efc6a2cad 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/22_plv510.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/22_plv510.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 99; + my $tests = 105; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -32,7 +32,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "ce0a7871dfddbbed0a6c685c0f52dbf9"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } __END__ Summary of my perl5 (revision 5 version 10 subversion 0) configuration: diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/23_plv512.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/23_plv512.t index 03c69cbd20e..8b0cc3765b5 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/23_plv512.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/23_plv512.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 101; + my $tests = 107; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -42,7 +42,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "a2c38153cc47d340bc140d0bfe294afb"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } __END__ Summary of my perl5 (revision 5 version 12 subversion 2) configuration: diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/24_plv514.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/24_plv514.t index 3377b417706..7ac1c2205ae 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/24_plv514.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/24_plv514.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 101; + my $tests = 107; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -43,7 +43,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "778815a670c0c454738aedf0c88930ba"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } __END__ Summary of my perl5 (revision 5 version 14 subversion 2) configuration: diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv516.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv516.t index 5505245b54f..2dd1ab1e2e6 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv516.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv516.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 100; + my $tests = 106; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -43,7 +43,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "7b00cf3b306d96fa802892e6ad4b070f"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } __END__ Summary of my perl5 (revision 5 version 16 subversion 3) configuration: diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv5162.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv5162.t index 68d1596c3e5..9e534ba1937 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv5162.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/25_plv5162.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 158; + my $tests = 164; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -45,7 +45,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "2917ca2a97b6db1ab8fb08798f53c0bb"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } is_deeply ($conf->{build}{patches}, [ "/Library/Perl/Updates/ comes before system perl directories", diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv518.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv518.t index a255797306a..7d54c29adff 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv518.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv518.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 119; + my $tests = 125; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -43,7 +43,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "8f46b07a7775e6a92347d4cd564b8f03"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } is_deeply ($conf->{build}{patches}, [], "No local patches"); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv5182.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv5182.t index 25e52bb8b4e..dd734b7cde5 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv5182.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/26_plv5182.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 119; + my $tests = 125; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -43,7 +43,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "874325856acfea3dab7e7c944660f398"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } is_deeply ($conf->{build}{patches}, [], "No local patches"); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5200.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5200.t index f44273d42fc..6ba124f1448 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5200.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5200.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 119; + my $tests = 125; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -46,7 +46,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "3e7b4513cd80c6ef00fcd77e5e16f8b4"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } is_deeply ($conf->{build}{patches}, [], "No local patches"); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5202.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5202.t index 83c3cb0df50..8c0ff480bf5 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5202.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/27_plv5202.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 120; + my $tests = 126; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -46,7 +46,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "9f954ebc2be7b1d7e151ab28dbdf7062"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } is_deeply ($conf->{build}{patches}, [], "No local patches"); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv5220.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv5220.t index 885445b1f62..a081074b0d5 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv5220.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv5220.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 120; + my $tests = 126; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -46,7 +46,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "ddcc2d51e43bf18f5234ba66529068ef"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } is_deeply ($conf->{build}{patches}, [], "No local patches"); diff --git a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv52201w.t b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv52201w.t index 6c742196ed1..9cd2924a662 100644 --- a/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv52201w.t +++ b/gnu/usr.bin/perl/cpan/Config-Perl-V/t/28_plv52201w.t @@ -5,7 +5,7 @@ use warnings; BEGIN { use Test::More; - my $tests = 120; + my $tests = 126; unless ($ENV{PERL_CORE}) { require Test::NoWarnings; Test::NoWarnings->import (); @@ -46,7 +46,11 @@ foreach my $o (sort keys %$opt) { eval { require Digest::MD5; }; my $md5 = $@ ? "0" x 32 : "dfb32b8299b66e8bdb2712934f700d94"; ok (my $sig = Config::Perl::V::signature ($conf), "Get signature"); -is ($sig, $md5, "MD5"); + +SKIP: { + ord "A" == 65 or skip "ASCII-centric test", 1; + is ($sig, $md5, "MD5"); + } is_deeply ($conf->{build}{patches}, [], "No local patches"); diff --git a/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm b/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm index 22f2bdc6968..fe42cb82fc5 100644 --- a/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm +++ b/gnu/usr.bin/perl/cpan/DB_File/DB_File.pm @@ -165,7 +165,7 @@ use Carp; # Module not thread safe, so don't clone sub CLONE_SKIP { 1 } -$VERSION = "1.857" ; +$VERSION = "1.858" ; $VERSION = eval $VERSION; # needed for dev releases { @@ -2331,23 +2331,9 @@ same terms as Perl itself. Although B is covered by the Perl license, the library it makes use of, namely Berkeley DB, is not. Berkeley DB has its own -copyright and its own license. Please take the time to read it. - -Here are a few words taken from the Berkeley DB FAQ (at -L) regarding the license: - - Do I have to license DB to use it in Perl scripts? - - No. The Berkeley DB license requires that software that uses - Berkeley DB be freely redistributable. In the case of Perl, that - software is Perl, and not your scripts. Any Perl scripts that you - write are your property, including scripts that make use of - Berkeley DB. Neither the Perl license nor the Berkeley DB license - place any restriction on what you may do with them. - -If you are in any doubt about the license situation, contact either the -Berkeley DB authors or the author of DB_File. See L<"AUTHOR"> for details. - +copyright and its own license. +See L for more details. +Please take the time to read the Berkeley DB license and decide how it impacts your use of this Perl module. =head1 SEE ALSO diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm index 81e5142e4d8..65a86f4e358 100644 --- a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm +++ b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.pm @@ -3,7 +3,7 @@ package Digest::MD5; use strict; use warnings; -our $VERSION = '2.58'; +our $VERSION = '2.58_01'; require Exporter; *import = \&Exporter::import; diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs index 61beebafff1..f42fd156cad 100644 --- a/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs +++ b/gnu/usr.bin/perl/cpan/Digest-MD5/MD5.xs @@ -32,18 +32,10 @@ * documentation and/or software. */ -#ifdef __cplusplus -extern "C" { -#endif #define PERL_NO_GET_CONTEXT /* we want efficiency */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" -#include -#include -#ifdef __cplusplus -} -#endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(x) ((void)x) @@ -90,6 +82,46 @@ 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. + */ +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)) + +/* This structure keeps the current state of algorithm. + */ +typedef struct { + U32 A, B, C, D; /* current digest */ + U32 bytes_low; /* counts bytes in message */ + U32 bytes_high; /* turn it into a 64-bit counter */ + U8 buffer[128]; /* collect complete 64 byte blocks */ +} MD5_CTX; + #if defined(USE_ITHREADS) && defined(MGf_DUP) STATIC int dup_md5_ctx(pTHX_ MAGIC *mg, CLONE_PARAMS *params) { @@ -126,6 +158,300 @@ STATIC const struct { }; #endif + +/* Padding is added at the end of the message in order to fill a + * complete 64 byte block (- 8 bytes for the message length). The + * padding is also the reason the buffer in MD5_CTX have to be + * 128 bytes. + */ +static const unsigned char PADDING[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/* Constants for MD5Transform routine. + */ +#define S11 7 +#define S12 12 +#define S13 17 +#define S14 22 +#define S21 5 +#define S22 9 +#define S23 14 +#define S24 20 +#define S31 4 +#define S32 11 +#define S33 16 +#define S34 23 +#define S41 6 +#define S42 10 +#define S43 15 +#define S44 21 + +/* F, G, H and I are basic MD5 functions. + */ +#define F(x, y, z) ((((x) & ((y) ^ (z))) ^ (z))) +#define G(x, y, z) F(z, x, y) +#define H(x, y, z) ((x) ^ (y) ^ (z)) +#define I(x, y, z) ((y) ^ ((x) | (~z))) + +/* ROTATE_LEFT rotates x left n bits. + */ +#define ROTATE_LEFT(x, n) (((x) << (n) | ((x) >> (32-(n))))) + +/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. + * Rotation is separate from addition to prevent recomputation. + */ +#define FF(a, b, c, d, s, ac) \ + (a) += F ((b), (c), (d)) + (NEXTx) + (U32)(ac); \ + TRUNC32((a)); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ + TRUNC32((a)); + +#define GG(a, b, c, d, x, s, ac) \ + (a) += G ((b), (c), (d)) + X[x] + (U32)(ac); \ + TRUNC32((a)); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ + TRUNC32((a)); + +#define HH(a, b, c, d, x, s, ac) \ + (a) += H ((b), (c), (d)) + X[x] + (U32)(ac); \ + TRUNC32((a)); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ + TRUNC32((a)); + +#define II(a, b, c, d, x, s, ac) \ + (a) += I ((b), (c), (d)) + X[x] + (U32)(ac); \ + TRUNC32((a)); \ + (a) = ROTATE_LEFT ((a), (s)); \ + (a) += (b); \ + TRUNC32((a)); + + +static void +MD5Init(MD5_CTX *ctx) +{ + /* Start state */ + ctx->A = 0x67452301; + ctx->B = 0xefcdab89; + ctx->C = 0x98badcfe; + ctx->D = 0x10325476; + + /* message length */ + ctx->bytes_low = ctx->bytes_high = 0; +} + + +static void +MD5Transform(MD5_CTX* ctx, const U8* buf, STRLEN blocks) +{ +#ifdef MD5_DEBUG + static int tcount = 0; +#endif + + U32 A = ctx->A; + U32 B = ctx->B; + U32 C = ctx->C; + U32 D = ctx->D; + + do { + U32 a = A; + U32 b = B; + U32 c = C; + U32 d = D; + + U32 X[16]; /* little-endian values, used in round 2-4 */ + U32 *uptr = X; + U32 tmp; + #define NEXTx (s2u(buf,tmp), buf += 4, *uptr++ = tmp) + +#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]); /* FIXME */ + } + 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); + u2s(bits_low, ctx->buffer + fill); fill += 4; + u2s(bits_high, ctx->buffer + fill); fill += 4; + + MD5Transform(ctx, ctx->buffer, fill >> 6); +#ifdef MD5_DEBUG + fprintf(stderr," Result: %s\n", ctx_dump(ctx)); +#endif + + u2s(ctx->A, digest); + u2s(ctx->B, digest+4); + u2s(ctx->C, digest+8); + u2s(ctx->D, digest+12); +} + +#ifndef INT2PTR +#define INT2PTR(any,d) (any)(d) +#endif + static MD5_CTX* get_md5_ctx(pTHX_ SV* sv) { MAGIC *mg; @@ -306,7 +632,7 @@ addfile(self, fh) InputStream fh PREINIT: MD5_CTX* context = get_md5_ctx(aTHX_ self); - STRLEN fill = (context->count >> 3) & (MD5_BLOCK_LENGTH - 1); + STRLEN fill = context->bytes_low & 0x3F; #ifdef USE_HEAP_INSTEAD_OF_STACK unsigned char* buffer; #else @@ -371,12 +697,14 @@ context(ctx, ...) PPCODE: if (items > 2) { STRLEN len; - ctx->count = SvUV(ST(1)) << 3; + unsigned long blocks = SvUV(ST(1)); unsigned char *buf = (unsigned char *)(SvPV(ST(2), len)); - ctx->state[0] = buf[ 0] | (buf[ 1]<<8) | (buf[ 2]<<16) | (buf[ 3]<<24); - ctx->state[1] = buf[ 4] | (buf[ 5]<<8) | (buf[ 6]<<16) | (buf[ 7]<<24); - ctx->state[2] = buf[ 8] | (buf[ 9]<<8) | (buf[10]<<16) | (buf[11]<<24); - ctx->state[3] = buf[12] | (buf[13]<<8) | (buf[14]<<16) | (buf[15]<<24); + ctx->A = buf[ 0] | (buf[ 1]<<8) | (buf[ 2]<<16) | (buf[ 3]<<24); + ctx->B = buf[ 4] | (buf[ 5]<<8) | (buf[ 6]<<16) | (buf[ 7]<<24); + ctx->C = buf[ 8] | (buf[ 9]<<8) | (buf[10]<<16) | (buf[11]<<24); + ctx->D = buf[12] | (buf[13]<<8) | (buf[14]<<16) | (buf[15]<<24); + ctx->bytes_low = blocks << 6; + ctx->bytes_high = blocks >> 26; if (items == 4) { buf = (unsigned char *)(SvPV(ST(3), len)); MD5Update(ctx, buf, len); @@ -386,22 +714,21 @@ context(ctx, ...) XSRETURN(0); } - w=ctx->state[0]; out[ 0]=(char)w; out[ 1]=(char)(w>>8); out[ 2]=(char)(w>>16); out[ 3]=(char)(w>>24); - w=ctx->state[0]; out[ 4]=(char)w; out[ 5]=(char)(w>>8); out[ 6]=(char)(w>>16); out[ 7]=(char)(w>>24); - w=ctx->state[0]; out[ 8]=(char)w; out[ 9]=(char)(w>>8); out[10]=(char)(w>>16); out[11]=(char)(w>>24); - w=ctx->state[0]; out[12]=(char)w; out[13]=(char)(w>>8); out[14]=(char)(w>>16); out[15]=(char)(w>>24); + w=ctx->A; out[ 0]=(char)w; out[ 1]=(char)(w>>8); out[ 2]=(char)(w>>16); out[ 3]=(char)(w>>24); + w=ctx->B; out[ 4]=(char)w; out[ 5]=(char)(w>>8); out[ 6]=(char)(w>>16); out[ 7]=(char)(w>>24); + w=ctx->C; out[ 8]=(char)w; out[ 9]=(char)(w>>8); out[10]=(char)(w>>16); out[11]=(char)(w>>24); + w=ctx->D; out[12]=(char)w; out[13]=(char)(w>>8); out[14]=(char)(w>>16); out[15]=(char)(w>>24); EXTEND(SP, 3); - ST(0) = sv_2mortal(newSViv((ctx->count >> 3) - - ((ctx->count >> 3) % MD5_BLOCK_LENGTH))); + ST(0) = sv_2mortal(newSVuv(ctx->bytes_high << 26 | + ctx->bytes_low >> 6)); ST(1) = sv_2mortal(newSVpv(out, 16)); - if (((ctx->count >> 3) & (MD5_BLOCK_LENGTH - 1)) == 0) - XSRETURN(2); + if ((ctx->bytes_low & 0x3F) == 0) + XSRETURN(2); ST(2) = sv_2mortal(newSVpv((char *)ctx->buffer, - (ctx->count >> 3) & (MD5_BLOCK_LENGTH - 1))); - + ctx->bytes_low & 0x3F)); XSRETURN(3); void diff --git a/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t b/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t index 3a22dce75dc..01c785009b2 100755 --- a/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t +++ b/gnu/usr.bin/perl/cpan/Digest-MD5/t/files.t @@ -22,7 +22,7 @@ EOT # This is the output of: 'md5sum README MD5.xs rfc1321.txt' $EXPECT = <: =head1 AUTHOR -Copyright (C) 2003-2018 Mark Shelor . +Copyright (C) 2003-2023 Mark Shelor . =head1 SEE ALSO @@ -107,7 +107,7 @@ I is implemented using the Perl module L. END_OF_POD -my $VERSION = "6.02"; +my $VERSION = "6.04"; sub usage { my($err, $msg) = @_; diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c index bc337eb38c0..64642788720 100644 --- a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c +++ b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.c @@ -3,10 +3,10 @@ * * Ref: NIST FIPS PUB 180-4 Secure Hash Standard * - * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved + * Copyright (C) 2003-2023 Mark Shelor, All Rights Reserved * - * Version: 6.02 - * Fri Apr 20 16:25:30 MST 2018 + * Version: 6.04 + * Sat Feb 25 12:00:50 PM MST 2023 * */ @@ -279,14 +279,11 @@ static UCHR *statecpy(SHA *s, UCHR *buf) return(buf); } -#define SHA_INIT(s, algo, transform) \ +#define SHA_INIT(s, algo, transform, state, state_t) \ do { \ Zero(s, 1, SHA); \ s->alg = algo; s->sha = sha ## transform; \ - if (s->alg <= SHA256) \ - Copy(H0 ## algo, s->H32, 8, SHA32); \ - else \ - Copy(H0 ## algo, s->H64, 8, SHA64); \ + Copy(H0 ## algo, s->state, 8, state_t); \ s->blocksize = SHA ## algo ## _BLOCK_BITS; \ s->digestlen = SHA ## algo ## _DIGEST_BITS >> 3; \ } while (0) @@ -294,13 +291,13 @@ static UCHR *statecpy(SHA *s, UCHR *buf) /* sharewind: resets digest object */ static void sharewind(SHA *s) { - if (s->alg == SHA1) SHA_INIT(s, 1, 1); - else if (s->alg == SHA224) SHA_INIT(s, 224, 256); - else if (s->alg == SHA256) SHA_INIT(s, 256, 256); - else if (s->alg == SHA384) SHA_INIT(s, 384, 512); - else if (s->alg == SHA512) SHA_INIT(s, 512, 512); - else if (s->alg == SHA512224) SHA_INIT(s, 512224, 512); - else if (s->alg == SHA512256) SHA_INIT(s, 512256, 512); + if (s->alg == SHA1) SHA_INIT(s, 1, 1, H32, SHA32); + else if (s->alg == SHA224) SHA_INIT(s, 224, 256, H32, SHA32); + else if (s->alg == SHA256) SHA_INIT(s, 256, 256, H32, SHA32); + else if (s->alg == SHA384) SHA_INIT(s, 384, 512, H64, SHA64); + else if (s->alg == SHA512) SHA_INIT(s, 512, 512, H64, SHA64); + else if (s->alg == SHA512224) SHA_INIT(s, 512224, 512, H64, SHA64); + else if (s->alg == SHA512256) SHA_INIT(s, 512256, 512, H64, SHA64); } /* shainit: initializes digest object */ diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h index f6599281de6..5146aef7366 100644 --- a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h +++ b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha.h @@ -3,10 +3,10 @@ * * Ref: NIST FIPS PUB 180-4 Secure Hash Standard * - * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved + * Copyright (C) 2003-2023 Mark Shelor, All Rights Reserved * - * Version: 6.02 - * Fri Apr 20 16:25:30 MST 2018 + * Version: 6.04 + * Sat Feb 25 12:00:50 PM MST 2023 * */ diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c index 146fb4c35fd..10d7e499eda 100644 --- a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c +++ b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.c @@ -3,10 +3,10 @@ * * Ref: NIST FIPS PUB 180-4 Secure Hash Standard * - * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved + * Copyright (C) 2003-2023 Mark Shelor, All Rights Reserved * - * Version: 6.02 - * Fri Apr 20 16:25:30 MST 2018 + * Version: 6.04 + * Sat Feb 25 12:00:50 PM MST 2023 * */ diff --git a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.h b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.h index 8517993f999..f61d70d4d2e 100644 --- a/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.h +++ b/gnu/usr.bin/perl/cpan/Digest-SHA/src/sha64bit.h @@ -3,10 +3,10 @@ * * Ref: NIST FIPS PUB 180-4 Secure Hash Standard * - * Copyright (C) 2003-2018 Mark Shelor, All Rights Reserved + * Copyright (C) 2003-2023 Mark Shelor, All Rights Reserved * - * Version: 6.02 - * Fri Apr 20 16:25:30 MST 2018 + * Version: 6.04 + * Sat Feb 25 12:00:50 PM MST 2023 * * The following macros supply placeholder values that enable the * sha.c module to successfully compile when 64-bit integer types diff --git a/gnu/usr.bin/perl/cpan/Encode/Encode.pm b/gnu/usr.bin/perl/cpan/Encode/Encode.pm index fc857f5af75..8a2727fc443 100644 --- a/gnu/usr.bin/perl/cpan/Encode/Encode.pm +++ b/gnu/usr.bin/perl/cpan/Encode/Encode.pm @@ -1,5 +1,5 @@ # -# $Id: Encode.pm,v 3.17 2022/04/07 03:05:51 dankogai Exp $ +# $Id: Encode.pm,v 3.19 2022/08/04 04:42:30 dankogai Exp $ # package Encode; use strict; @@ -7,7 +7,7 @@ use warnings; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; our $VERSION; BEGIN { - $VERSION = sprintf "%d.%02d", q$Revision: 3.17 $ =~ /(\d+)/g; + $VERSION = sprintf "%d.%02d", q$Revision: 3.19 $ =~ /(\d+)/g; require XSLoader; XSLoader::load( __PACKAGE__, $VERSION ); } diff --git a/gnu/usr.bin/perl/cpan/Encode/Makefile.PL b/gnu/usr.bin/perl/cpan/Encode/Makefile.PL index 3cb95e89f03..fd3ebe3d661 100644 --- a/gnu/usr.bin/perl/cpan/Encode/Makefile.PL +++ b/gnu/usr.bin/perl/cpan/Encode/Makefile.PL @@ -1,5 +1,5 @@ # -# $Id: Makefile.PL,v 2.24 2021/10/13 08:29:13 dankogai Exp $ +# $Id: Makefile.PL,v 2.25 2022/06/25 01:58:57 dankogai Exp $ # use 5.007003; use strict; @@ -17,6 +17,8 @@ $ENV{PERL_CORE} ||= $ARGV{PERL_CORE} if $ARGV{PERL_CORE}; my $ccflags = $Config{ccflags}; if (!$ENV{PERL_CORE}) { if (my $gccver = $Config{gccversion}) { + # no more 'Argument "Apple" isn't numeric in addition (+)' + no warnings 'numeric'; $gccver =~ s/\.//g; $gccver =~ s/ .*//; $gccver .= "0" while length $gccver < 3; $gccver = 0+$gccver; diff --git a/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Alias.pm b/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Alias.pm index dbfa01b6182..cca72a3d849 100644 --- a/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Alias.pm +++ b/gnu/usr.bin/perl/cpan/Encode/lib/Encode/Alias.pm @@ -1,7 +1,7 @@ package Encode::Alias; use strict; use warnings; -our $VERSION = do { my @r = ( q$Revision: 2.24 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; +our $VERSION = do { my @r = ( q$Revision: 2.25 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; use Exporter 'import'; @@ -162,6 +162,10 @@ sub init_aliases { # Allow variants of iso-8859-1 etc. define_alias( qr/\biso[-_]?(\d+)[-_](\d+)$/i => '"iso-$1-$2"' ); + # ISO-8859-8-I => ISO-8859-8 + # https://en.wikipedia.org/wiki/ISO-8859-8-I + define_alias( qr/\biso[-_]8859[-_]8[-_]I$/i => '"iso-8859-8"' ); + # At least HP-UX has these. define_alias( qr/\biso8859(\d+)$/i => '"iso-8859-$1"' ); diff --git a/gnu/usr.bin/perl/cpan/Encode/lib/Encode/MIME/Header.pm b/gnu/usr.bin/perl/cpan/Encode/lib/Encode/MIME/Header.pm index 848de99fa43..4d4574447e9 100644 --- a/gnu/usr.bin/perl/cpan/Encode/lib/Encode/MIME/Header.pm +++ b/gnu/usr.bin/perl/cpan/Encode/lib/Encode/MIME/Header.pm @@ -2,7 +2,7 @@ package Encode::MIME::Header; use strict; use warnings; -our $VERSION = do { my @r = ( q$Revision: 2.28 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; +our $VERSION = do { my @r = ( q$Revision: 2.29 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use Carp (); use Encode (); @@ -55,7 +55,7 @@ my $re_capture_encoded_word_split = qr/=\?($re_charset)((?:\*$re_language)?)\?($ # in strict mode check also for valid base64 characters and also for valid quoted printable codes my $re_encoding_strict_b = qr/[Bb]/; my $re_encoding_strict_q = qr/[Qq]/; -my $re_encoded_text_strict_b = qr/[0-9A-Za-z\+\/]*={0,2}/; +my $re_encoded_text_strict_b = qr/(?:[0-9A-Za-z\+\/]{4})*(?:[0-9A-Za-z\+\/]{2}==|[0-9A-Za-z\+\/]{3}=|)/; my $re_encoded_text_strict_q = qr/(?:[\x21-\x3C\x3E\x40-\x7E]|=[0-9A-Fa-f]{2})*/; # NOTE: first part are printable US-ASCII except ?, =, SPACE and TAB my $re_encoded_word_strict = qr/=\?$re_charset(?:\*$re_language)?\?(?:$re_encoding_strict_b\?$re_encoded_text_strict_b|$re_encoding_strict_q\?$re_encoded_text_strict_q)\?=/; my $re_capture_encoded_word_strict = qr/=\?($re_charset)((?:\*$re_language)?)\?($re_encoding_strict_b\?$re_encoded_text_strict_b|$re_encoding_strict_q\?$re_encoded_text_strict_q)\?=/; @@ -94,6 +94,10 @@ sub decode($$;$) { $stop = 1 unless length($line) or length($sep); + # in non strict mode append missing '=' padding characters for b words + # fixes below concatenation of consecutive encoded mime words + 1 while not $STRICT_DECODE and $line =~ s/(=\?$re_charset(?:\*$re_language)?\?[Bb]\?)((?:[^\?]{4})*[^\?]{1,3})(\?=)/$1.$2.('='x(4-length($2)%4)).$3/se; + # NOTE: this code partially could break $chk support # in non strict mode concat consecutive encoded mime words with same charset, language and encoding # fixes breaking inside multi-byte characters diff --git a/gnu/usr.bin/perl/cpan/Encode/t/Aliases.t b/gnu/usr.bin/perl/cpan/Encode/t/Aliases.t index 8d4752bddbc..23a1cd38e8d 100755 --- a/gnu/usr.bin/perl/cpan/Encode/t/Aliases.t +++ b/gnu/usr.bin/perl/cpan/Encode/t/Aliases.t @@ -42,6 +42,7 @@ sub init_a2c{ 'arabic' => 'iso-8859-6', 'greek' => 'iso-8859-7', 'hebrew' => 'iso-8859-8', + 'iso-8859-8-I' => 'iso-8859-8', 'thai' => 'iso-8859-11', 'tis620' => 'iso-8859-11', 'tis-620' => 'iso-8859-11', diff --git a/gnu/usr.bin/perl/cpan/Encode/t/enc_data.t b/gnu/usr.bin/perl/cpan/Encode/t/enc_data.t index f5ddaf77a6e..19619ae02ee 100755 --- a/gnu/usr.bin/perl/cpan/Encode/t/enc_data.t +++ b/gnu/usr.bin/perl/cpan/Encode/t/enc_data.t @@ -1,4 +1,4 @@ -# $Id: enc_data.t,v 2.6 2022/04/07 03:06:40 dankogai Exp dankogai $ +# $Id: enc_data.t,v 2.6 2022/04/07 03:06:40 dankogai Exp $ BEGIN { require Config; import Config; diff --git a/gnu/usr.bin/perl/cpan/Encode/t/enc_module.t b/gnu/usr.bin/perl/cpan/Encode/t/enc_module.t index 2d94e36b29a..a96fc8dbcd5 100755 --- a/gnu/usr.bin/perl/cpan/Encode/t/enc_module.t +++ b/gnu/usr.bin/perl/cpan/Encode/t/enc_module.t @@ -1,4 +1,4 @@ -# $Id: enc_module.t,v 2.6 2022/04/07 03:06:40 dankogai Exp dankogai $ +# $Id: enc_module.t,v 2.6 2022/04/07 03:06:40 dankogai Exp $ # This file is in euc-jp BEGIN { require Config; import Config; diff --git a/gnu/usr.bin/perl/cpan/Encode/t/jperl.t b/gnu/usr.bin/perl/cpan/Encode/t/jperl.t index 27ce8814163..c49c6b86c09 100755 --- a/gnu/usr.bin/perl/cpan/Encode/t/jperl.t +++ b/gnu/usr.bin/perl/cpan/Encode/t/jperl.t @@ -1,5 +1,5 @@ # -# $Id: jperl.t,v 2.6 2022/04/07 03:06:40 dankogai Exp dankogai $ +# $Id: jperl.t,v 2.6 2022/04/07 03:06:40 dankogai Exp $ # # This script is written in euc-jp diff --git a/gnu/usr.bin/perl/cpan/Encode/t/mime-header.t b/gnu/usr.bin/perl/cpan/Encode/t/mime-header.t index bf48753d93f..de74241a15a 100755 --- a/gnu/usr.bin/perl/cpan/Encode/t/mime-header.t +++ b/gnu/usr.bin/perl/cpan/Encode/t/mime-header.t @@ -1,5 +1,5 @@ # -# $Id: mime-header.t,v 2.15 2017/07/18 07:15:29 dankogai Exp $ +# $Id: mime-header.t,v 2.16 2022/06/25 01:58:57 dankogai Exp $ # This script is written in utf8 # BEGIN { @@ -24,7 +24,7 @@ use strict; use utf8; use charnames ":full"; -use Test::More tests => 266; +use Test::More tests => 274; BEGIN { use_ok("Encode::MIME::Header"); @@ -138,6 +138,11 @@ my @decode_default_tests = ( "=?utf-8-strict?Q?=C3=A1=f9=80=80=80=80?=" => "á�", # allow non-ASCII characters in q word "=?UTF-8?Q?\x{C3}\x{A1}?=" => "á", + # allow missing padding characters '=' in b word + "=?UTF-8?B?JQ?=" => "%", + "=?UTF-8?B?JQ?= =?UTF-8?B?JQ?=" => "%%", + "=?UTF-8?B?YWI?=" => "ab", + "=?UTF-8?B?YWI?= =?UTF-8?B?YWI?=" => "abab", ); my @decode_strict_tests = ( @@ -159,6 +164,11 @@ my @decode_strict_tests = ( "=?utf-8-strict?Q?=C3=A1?=" => "=?utf-8-strict?Q?=C3=A1?=", # do not allow non-ASCII characters in q word "=?UTF-8?Q?\x{C3}\x{A1}?=" => "=?UTF-8?Q?\x{C3}\x{A1}?=", + # do not allow missing padding characters '=' in b word + "=?UTF-8?B?JQ?=" => "=?UTF-8?B?JQ?=", + "=?UTF-8?B?JQ?= =?UTF-8?B?JQ?=" => "=?UTF-8?B?JQ?= =?UTF-8?B?JQ?=", + "=?UTF-8?B?YWI?=" => "=?UTF-8?B?YWI?=", + "=?UTF-8?B?YWI?= =?UTF-8?B?YWI?=" => "=?UTF-8?B?YWI?= =?UTF-8?B?YWI?=", ); my @encode_tests = ( diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm index 0a17f469464..83db80df500 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm @@ -32,11 +32,11 @@ ExtUtils::Install - install files from here to there =head1 VERSION -2.20 +2.22 =cut -our $VERSION = '2.20'; # <-- do not forget to update the POD section just above this line! +our $VERSION = '2.22'; # <-- do not forget to update the POD section just above this line! $VERSION = eval $VERSION; =pod @@ -104,7 +104,6 @@ $INSTALL_QUIET = 1 $ENV{MAKEFLAGS} =~ /\b(s|silent|quiet)\b/); my $Curdir = File::Spec->curdir; -my $Perm_Dir = $ENV{PERL_CORE} ? 0770 : 0755; sub _estr(@) { return join "\n",'!' x 72,@_,'!' x 72,''; @@ -770,7 +769,7 @@ sub install { #XXX OS-SPECIFIC _chdir($cwd); } foreach my $targetdir (sort keys %check_dirs) { - _mkpath( $targetdir, 0, $Perm_Dir, $verbose, $dry_run ); + _mkpath( $targetdir, 0, 0755, $verbose, $dry_run ); } foreach my $found (@found_files) { my ($diff, $ffd, $origfile, $mode, $size, $atime, $mtime, @@ -784,7 +783,7 @@ sub install { #XXX OS-SPECIFIC $targetfile= _unlink_or_rename( $targetfile, 'tryhard', 'install' ) unless $dry_run; } elsif ( ! -d $targetdir ) { - _mkpath( $targetdir, 0, $Perm_Dir, $verbose, $dry_run ); + _mkpath( $targetdir, 0, 0755, $verbose, $dry_run ); } print "Installing $targetfile\n"; @@ -824,7 +823,7 @@ sub install { #XXX OS-SPECIFIC if ($pack{'write'}) { $dir = install_rooted_dir(dirname($pack{'write'})); - _mkpath( $dir, 0, $Perm_Dir, $verbose, $dry_run ); + _mkpath( $dir, 0, 0755, $verbose, $dry_run ); print "Writing $pack{'write'}\n" if $verbose; $packlist->write(install_rooted_file($pack{'write'})) unless $dry_run; } @@ -1162,7 +1161,7 @@ sub pm_to_blib { my($fromto,$autodir,$pm_filter) = @_; my %dirs; - _mkpath($autodir,0,$Perm_Dir) if defined $autodir; + _mkpath($autodir,0,0755) if defined $autodir; while(my($from, $to) = each %$fromto) { if( -f $to && -s $from == -s $to && -M $to < -M $from ) { print "Skip $to (unchanged)\n" unless $INSTALL_QUIET; @@ -1187,7 +1186,7 @@ sub pm_to_blib { } else { my $dirname = dirname($to); if (!$dirs{$dirname}++) { - _mkpath($dirname,0,$Perm_Dir); + _mkpath($dirname,0,0755); } } if ($need_filtering) { diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm index 0cfd96b507d..c82861bd1da 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm @@ -15,7 +15,7 @@ my $DOSISH = ($^O =~ /^(MSWin\d\d|os2|dos|mint)$/); require VMS::Filespec if $Is_VMS; -our $VERSION = '2.20'; +our $VERSION = '2.22'; $VERSION = eval $VERSION; sub _is_prefix { diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm index 98d09e3d820..5fa93ff2740 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm @@ -4,7 +4,7 @@ use strict; use Carp qw(); use Config; our $Relocations; -our $VERSION = '2.20'; +our $VERSION = '2.22'; $VERSION = eval $VERSION; # Used for generating filehandle globs. IO::File might not be available! diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/Installapi2.t b/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/Installapi2.t index 7396ed35245..a50ed0ad6ae 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/Installapi2.t +++ b/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/Installapi2.t @@ -11,6 +11,7 @@ use TieOut; use File::Path; use File::Spec; use File::Temp qw[tempdir]; +use File::Compare; use Test::More tests => 70; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm b/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm index d0b57a23d5c..de49e58c3fc 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm @@ -35,6 +35,7 @@ WriteMakefile( VERSION_FROM => 'lib/Big/Dummy.pm', EXE_FILES => [qw(bin/program)], PREREQ_PM => { strict => 0 }, + BUILD_REQUIRES => { warnings => 0 }, ABSTRACT_FROM => 'lib/Big/Dummy.pm', AUTHOR => 'Michael G Schwern ', ); @@ -104,12 +105,23 @@ END ); +my $tmpdir; +# if given args, those are inserted as components in resulting path, eg: +# setup_recurs('dir') means instead of creating Big-Dummy/*, dir/Big-Dummy/* sub setup_recurs { - - while(my($file, $text) = each %Files) { + my @chrs = ( "A" .. "Z", 0 .. 9 ); + # annoyingly we cant use File::Temp here as it drags in XS code + # and we run under blocks to prevent XS code loads. This is a minimal + # patch to fix the issue. + $tmpdir = join "", "./temp-$$-", map { $chrs[rand(@chrs)] } 1..8; + mkdir($tmpdir) or die "Failed to create '$tmpdir': $!"; + chdir($tmpdir) or die "Failed to chdir '$tmpdir': $!"; + foreach my $file (sort keys %Files) { + my $text = $Files{$file}; # Convert to a relative, native file path. - $file = File::Spec->catfile(File::Spec->curdir, split m{\/}, $file); + $file = File::Spec->catfile(File::Spec->curdir, @_, split m{\/}, $file); + $file = File::Spec->rel2abs($file); my $dir = dirname($file); mkpath $dir; @@ -126,13 +138,15 @@ sub setup_recurs { return 1; } -sub teardown_recurs { +sub teardown_recurs { foreach my $file (keys %Files) { my $dir = dirname($file); if( -e $dir ) { - rmtree($dir) || return; + rmtree($dir) or next; } } + chdir(".."); + rmtree($tmpdir); return 1; } diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm index 34b1dc15a59..39cf5f2ffd5 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm @@ -4,11 +4,10 @@ use 5.00503; use strict; use warnings; require Exporter; -use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); -@ISA = qw(Exporter); -@EXPORT = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f test_d chmod - dos2unix); -$VERSION = '7.64'; +our @ISA = qw(Exporter); +our @EXPORT = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f test_d chmod + dos2unix); +our $VERSION = '7.70'; $VERSION =~ tr/_//d; my $Is_VMS = $^O eq 'VMS'; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm index 348b67586e9..52198855ef5 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm @@ -10,7 +10,7 @@ our @ISA = qw(Exporter); our @EXPORT = qw(test_harness pod2man perllocal_install uninstall warn_if_old_packlist test_s cp_nonempty); -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; my $Is_VMS = $^O eq 'VMS'; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm index cf68149da74..a21e16dc72e 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm @@ -3,7 +3,7 @@ package ExtUtils::Liblist; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; use File::Spec; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm index 01a4a486025..298a026bc4f 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm @@ -11,7 +11,7 @@ use 5.006; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; use ExtUtils::MakeMaker::Config; @@ -62,6 +62,7 @@ sub _unix_os2_ext { chomp(my @incpath = grep s/^ //, grep { /^#include &1 >/dev/null`); unshift @libpath, map { s{/include[^/]*}{/lib}; $_ } @incpath } + @libpath = grep -d, @libpath; if ( $^O eq 'darwin' or $^O eq 'next' ) { # 'escape' Mach-O ld -framework and -F flags, so they aren't dropped later on diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm index a9d8d268999..554e6fbb1cf 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm @@ -4,7 +4,7 @@ use strict; use warnings; use ExtUtils::MakeMaker::Config; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::Liblist; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm index b25adf58b27..d6519d2f4e3 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_AIX; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; use ExtUtils::MakeMaker::Config; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm index 826a4a556fa..45136821c4a 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_Any; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; use Carp; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm index d00dea576ad..e544515a3fd 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm @@ -27,7 +27,7 @@ require ExtUtils::MM_Any; require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm index 91d20941964..f44877b257f 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm @@ -10,7 +10,7 @@ require ExtUtils::MM_Unix; require ExtUtils::MM_Win32; our @ISA = qw( ExtUtils::MM_Unix ); -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm index 4e1b86a8ed4..c23ec5dcf21 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm @@ -3,7 +3,7 @@ package ExtUtils::MM_DOS; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm index 4e971c36a94..24f48d902ee 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Darwin.pm @@ -8,7 +8,7 @@ BEGIN { our @ISA = qw( ExtUtils::MM_Unix ); } -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm index f914555bb09..e186b916d05 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm @@ -3,7 +3,7 @@ package ExtUtils::MM_MacOS; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; sub new { diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm index 052083d29ba..e2ba1dfcdb3 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm @@ -23,7 +23,7 @@ use warnings; use ExtUtils::MakeMaker::Config; use File::Basename; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Win32; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm index 95583e264b2..2cbec89fd8f 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm @@ -6,7 +6,7 @@ use warnings; use ExtUtils::MakeMaker qw(neatvalue); use File::Spec; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm index 071a2d5aca6..ee063648103 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_QNX; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Unix; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm index 7bb41d0f371..64852a127ea 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_UWIN; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Unix; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm index dec0a08f678..fe385984f12 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm @@ -13,10 +13,11 @@ our %Config_Override; use ExtUtils::MakeMaker qw($Verbose neatvalue _sprintf562); -# If we make $VERSION an our variable parse_version() breaks -use vars qw($VERSION); -$VERSION = '7.64'; +# If $VERSION is in scope, parse_version() breaks +{ +our $VERSION = '7.70'; $VERSION =~ tr/_//d; +} require ExtUtils::MM_Any; our @ISA = qw(ExtUtils::MM_Any); @@ -34,13 +35,16 @@ BEGIN { $Is{SunOS4} = $^O eq 'sunos'; $Is{Solaris} = $^O eq 'solaris'; $Is{SunOS} = $Is{SunOS4} || $Is{Solaris}; - $Is{BSD} = ($^O =~ /^(?:free|net|open)bsd$/ or + $Is{BSD} = ($^O =~ /^(?:free|midnight|net|open)bsd$/ or grep( $^O eq $_, qw(bsdos interix dragonfly) ) ); $Is{Android} = $^O =~ /android/; - if ( $^O eq 'darwin' && $^X eq '/usr/bin/perl' ) { + if ( $^O eq 'darwin' ) { my @osvers = split /\./, $Config{osvers}; - $Is{ApplCor} = ( $osvers[0] >= 18 ); + if ( $^X eq '/usr/bin/perl' ) { + $Is{ApplCor} = ( $osvers[0] >= 18 ); + } + $Is{AppleRPath} = ( $osvers[0] >= 9 ); } } @@ -1054,7 +1058,7 @@ sub xs_make_dynamic_lib { if ( $Is{IRIX} ) { $ldrun = qq{-rpath "$self->{LD_RUN_PATH}"}; } - elsif ( $^O eq 'darwin' ) { + elsif ( $^O eq 'darwin' && $Is{AppleRPath} ) { # both clang and gcc support -Wl,-rpath, but only clang supports # -rpath so by using -Wl,-rpath we avoid having to check for the # type of compiler @@ -2193,7 +2197,7 @@ Add MM_Unix_VERSION. sub init_platform { my($self) = shift; - $self->{MM_Unix_VERSION} = $VERSION; + $self->{MM_Unix_VERSION} = our $VERSION; $self->{PERL_MALLOC_DEF} = '-DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc '. '-Dfree=Perl_mfree -Drealloc=Perl_realloc '. '-Dcalloc=Perl_calloc'; @@ -2225,8 +2229,7 @@ Called by init_main. Initializes PERL_* sub init_PERM { my($self) = shift; - my $perm_dir = $self->{PERL_CORE} ? 770 : 755; - $self->{PERM_DIR} = $perm_dir unless defined $self->{PERM_DIR}; + $self->{PERM_DIR} = 755 unless defined $self->{PERM_DIR}; $self->{PERM_RW} = 644 unless defined $self->{PERM_RW}; $self->{PERM_RWX} = 755 unless defined $self->{PERM_RWX}; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm index 8564bc7362e..4ed4e26e722 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VMS.pm @@ -16,7 +16,7 @@ BEGIN { use File::Basename; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Any; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm index 341750e3652..cdbd1afdd6d 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_VOS.pm @@ -2,7 +2,7 @@ package ExtUtils::MM_VOS; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Unix; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm index f6a1bc97630..5d931b4e5aa 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win32.pm @@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw(neatvalue _sprintf562); require ExtUtils::MM_Any; require ExtUtils::MM_Unix; our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; $ENV{EMXSHELL} = 'sh'; # to run `commands` diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm index f7bc5f75068..e907fb1a399 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Win95.pm @@ -3,7 +3,7 @@ package ExtUtils::MM_Win95; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require ExtUtils::MM_Win32; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm index 5c4cf770d23..4b24422ee39 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MY.pm @@ -3,7 +3,7 @@ package ExtUtils::MY; use strict; require ExtUtils::MM; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; our @ISA = qw(ExtUtils::MM); @@ -30,7 +30,7 @@ ExtUtils::MY - ExtUtils::MakeMaker subclass for customization B -ExtUtils::MY is a subclass of L. Its provided in your +ExtUtils::MY is a subclass of L. It is provided in your Makefile.PL for you to add and override MakeMaker functionality. It also provides a convenient alias via the MY class. diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm index 8ee3ca8e2c8..e8c3808b381 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm @@ -25,7 +25,7 @@ my %Recognized_Att_Keys; our %macro_fsentity; # whether a macro is a filesystem name our %macro_dep; # whether a macro is a dependency -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; # Emulate something resembling CVS $Revision$ @@ -525,7 +525,10 @@ sub new { # simulate "use warnings FATAL => 'all'" for vintage perls die @_; }; - version->new( $perl_version )->numify; + my $v = version->new($perl_version); + # we care about parse issues, not numify warnings + no warnings; + $v->numify; }; $perl_version =~ tr/_//d if defined $perl_version; @@ -1151,19 +1154,20 @@ sub check_hints { } sub _run_hintfile { - my ($self, $hint_file) = @_; + our $self; + local($self) = shift; # make $self available to the hint file. + my($hint_file) = shift; local($@, $!); print "Processing hints file $hint_file\n" if $Verbose; - if(open(my $fh, '<', $hint_file)) { - my $hints_content = do { local $/; <$fh> }; - no strict; - eval $hints_content; - warn "Failed to run hint file $hint_file: $@" if $@; - } - else { - warn "Could not open $hint_file for read: $!"; + # Just in case the ./ isn't on the hint file, which File::Spec can + # often strip off, we bung the curdir into @INC + local @INC = (File::Spec->curdir, @INC); + my $ret = do $hint_file; + if( !defined $ret ) { + my $error = $@ || $!; + warn $error; } } @@ -1262,6 +1266,7 @@ sub write_file_via_tmp { die "write_file_via_tmp: 2nd arg must be ref" unless ref $contents; for my $chunk (@$contents) { my $to_write = $chunk; + $to_write = '' unless defined $to_write; utf8::encode $to_write if !$CAN_DECODE && "$]" > 5.008; print $fh "$to_write\n" or die "Can't write to MakeMaker.tmp: $!"; } @@ -1331,26 +1336,6 @@ sub neatvalue { return "{ ".join(', ',@m)." }"; } -sub _find_magic_vstring { - my $value = shift; - return $value if $UNDER_CORE; - my $tvalue = ''; - require B; - my $sv = B::svref_2object(\$value); - my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef; - while ( $magic ) { - if ( $magic->TYPE eq 'V' ) { - $tvalue = $magic->PTR; - $tvalue =~ s/^v?(.+)$/v$1/; - last; - } - else { - $magic = $magic->MOREMAGIC; - } - } - return $tvalue; -} - sub selfdocument { my($self) = @_; my(@m); @@ -3297,7 +3282,7 @@ are generated when F generates a F (if L is installed). Clients like L or L will read these files to see what prerequisites must be fulfilled before building or testing the distribution. If you wish to shut this feature off, set the C -C flag to true. +C flag to true. =head2 Disabling an extension diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm index 7b2498b6e81..abc9db1adea 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm @@ -3,7 +3,7 @@ package ExtUtils::MakeMaker::Config; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; use Config (); diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod index 1184841ecb2..76dca18e897 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod @@ -1,6 +1,6 @@ package ExtUtils::MakeMaker::FAQ; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; 1; @@ -129,7 +129,7 @@ Let's take the following test directory structure: t/bar/othertest.t t/bar/baz/anothertest.t -Now, inside of the C function in your F, specify +Now, inside of the C function in your F, specify where your tests are located with the C directive: test => {TESTS => 't/*.t t/*/*.t t/*/*/*.t'} @@ -536,8 +536,7 @@ And of course a very basic test: t/cool.t: -------- - use Test; - BEGIN { plan tests => 1 }; + use Test::More tests => 1; use Cool::Foo; use Cool::Bar; Cool::Foo::perl_rules(); diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm index e4625e33303..7a75411a7a0 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm @@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Locale; use strict; use warnings; -our $VERSION = "7.64"; +our $VERSION = "7.70"; $VERSION =~ tr/_//d; use base 'Exporter'; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod index e4768745ace..9e545b37f9b 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod @@ -1,6 +1,6 @@ package ExtUtils::MakeMaker::Tutorial; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; @@ -112,7 +112,7 @@ example: t/foo/subdir_test.t -To do this, you need to inform C in your I file +To do this, you need to inform C in your I file in the following fashion: test => {TESTS => 't/*.t t/*/*.t'} diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm index 726ac76be19..59fb20e5ce1 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm @@ -16,7 +16,7 @@ use warnings; use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv); -$VERSION = '7.64'; +$VERSION = '7.70'; $VERSION =~ tr/_//d; $CLASS = 'version'; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm index 2f02cc93b62..a824a2507cc 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm @@ -11,7 +11,7 @@ use warnings; use vars qw($VERSION $CLASS $STRICT $LAX); -$VERSION = '7.64'; +$VERSION = '7.70'; $VERSION =~ tr/_//d; #--------------------------------------------------------------------------# diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm index 51b1add1635..9a490a60a97 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm @@ -3,7 +3,7 @@ package ExtUtils::Mkbootstrap; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; require Exporter; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm index 4498c39bf4b..ec074dca224 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm @@ -11,7 +11,7 @@ use Config; our @ISA = qw(Exporter); our @EXPORT = qw(&Mksymlists); -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; sub Mksymlists { diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm index de24aa3fd0e..2de002827fa 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/lib/ExtUtils/testlib.pm @@ -3,7 +3,7 @@ package ExtUtils::testlib; use strict; use warnings; -our $VERSION = '7.64'; +our $VERSION = '7.70'; $VERSION =~ tr/_//d; use Cwd; diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t index 0233c2f3f81..79ca6c3afa0 100644 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/eu_command.t @@ -67,7 +67,14 @@ BEGIN { my ($now) = time; utime ($now, $now, $ARGV[0]); - sleep 2; + + sleep 3; # note this affects the "newer file created" + # we used to sleep 2, but with the vagaries of sleep + # this meant that occasionally that test would fail + # on cygwin, by virtue of seeing only a one second + # difference. Sleeping 3 seconds should ensure + # that we get at least 2 seconds difference for + # that test. # Just checking modify time stamp, access time stamp is set # to the beginning of the day in Win95. diff --git a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/min_perl_version.t b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/min_perl_version.t index cb138fcb004..c74af998599 100755 --- a/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/min_perl_version.t +++ b/gnu/usr.bin/perl/cpan/ExtUtils-MakeMaker/t/min_perl_version.t @@ -17,7 +17,7 @@ use ExtUtils::MM; use Test::More !MM->can_run(make()) && $ENV{PERL_CORE} && $Config{'usecrosscompile'} ? (skip_all => "cross-compiling and make not available") - : (tests => 35); + : (tests => 37); use File::Path; use ExtUtils::MakeMaker; @@ -124,6 +124,17 @@ note "Argument verification"; { is( $@, '', ' nor a hard failure' ); + $warnings = ''; + eval { + WriteMakefile( + NAME => 'Min::PerlVers', + MIN_PERL_VERSION => '5.005_04', + ); + }; + is( $warnings, '', 'MIN_PERL_VERSION=5.005_04 does not trigger a warning' ); + is( $@, '', ' nor a hard failure' ); + + $warnings = ''; eval { WriteMakefile( diff --git a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm index 0805ae73350..8652a40988b 100644 --- a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm +++ b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.pm @@ -1,7 +1,7 @@ # Call.pm # # Copyright (c) 1995-2011 Paul Marquess. All rights reserved. -# Copyright (c) 2011-2014 Reini Urban. All rights reserved. +# Copyright (c) 2011-2014, 2018-2022 Reini Urban. All rights reserved. # Copyright (c) 2014-2017 cPanel Inc. All rights reserved. # # This program is free software; you can redistribute it and/or @@ -18,7 +18,7 @@ use warnings; our @ISA = qw(Exporter); our @EXPORT = qw( filter_add filter_del filter_read filter_read_exact) ; -our $VERSION = "1.60" ; +our $VERSION = "1.64" ; our $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -528,7 +528,7 @@ Paul Marquess =head1 LICENSE Copyright (c) 1995-2011 Paul Marquess. All rights reserved. -Copyright (c) 2011-2014 Reini Urban. All rights reserved. +Copyright (c) 2011-2014, 2018-2022 Reini Urban. All rights reserved. Copyright (c) 2014-2017 cPanel Inc. All rights reserved. This program is free software; you can redistribute it and/or diff --git a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs index 2ac88e29fc9..9521c0b939c 100644 --- a/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs +++ b/gnu/usr.bin/perl/cpan/Filter-Util-Call/Call.xs @@ -1,12 +1,12 @@ /* * Filename : Call.xs * - * Author : Paul Marquess - * Date : 2014-12-09 02:48:44 rurban - * Version : 1.60 + * Author : Reini Urban + * Date : Di 16. Aug 7:59:10 CEST 2022 + * Version : 1.64 * * Copyright (c) 1995-2011 Paul Marquess. All rights reserved. - * Copyright (c) 2011-2014 Reini Urban. All rights reserved. + * Copyright (c) 2011-2014, 2018 Reini Urban. All rights reserved. * This program is free software; you can redistribute it and/or * modify it under the same terms as Perl itself. * diff --git a/gnu/usr.bin/perl/cpan/Getopt-Long/lib/Getopt/Long.pm b/gnu/usr.bin/perl/cpan/Getopt-Long/lib/Getopt/Long.pm index 8263e217131..fda1fc3a8f4 100644 --- a/gnu/usr.bin/perl/cpan/Getopt-Long/lib/Getopt/Long.pm +++ b/gnu/usr.bin/perl/cpan/Getopt-Long/lib/Getopt/Long.pm @@ -4,12 +4,14 @@ # Author : Johan Vromans # Created On : Tue Sep 11 15:00:12 1990 # Last Modified By: Johan Vromans -# Last Modified On: Tue Aug 18 14:48:05 2020 -# Update Count : 1739 +# Last Modified On: Thu Nov 17 17:45:27 2022 +# Update Count : 1777 # Status : Released ################ Module Preamble ################ +# There are no CPAN testers for very old versions of Perl. +# Getopt::Long is reported to run under 5.8. use 5.004; use strict; @@ -18,10 +20,10 @@ use warnings; package Getopt::Long; use vars qw($VERSION); -$VERSION = 2.52; +$VERSION = 2.54; # For testing versions only. use vars qw($VERSION_STRING); -$VERSION_STRING = "2.52"; +$VERSION_STRING = "2.54"; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK); @@ -258,9 +260,9 @@ use constant PAT_XINT => ")"; use constant PAT_FLOAT => "[-+]?". # optional sign - "(?=[0-9.])". # must start with digit or dec.point + "(?=\\.?[0-9])". # must start with digit or dec.point "[0-9_]*". # digits before the dec.point - "(\.[0-9_]+)?". # optional fraction + "(\\.[0-9_]*)?". # optional fraction "([eE][-+]?[0-9_]+)?"; # optional exponent sub GetOptions(@) { @@ -525,8 +527,9 @@ sub GetOptionsFromArray(@) { my $key; # key (if hash type) my $arg; # option argument my $ctl; # the opctl entry + my $starter; # the actual starter character(s) - ($found, $opt, $ctl, $arg, $key) = + ($found, $opt, $ctl, $starter, $arg, $key) = FindOption ($argv, $prefix, $argend, $opt, \%opctl); if ( $found ) { @@ -606,12 +609,13 @@ sub GetOptionsFromArray(@) { eval { &{$linkage{$opt}} (Getopt::Long::CallBack->new - (name => $opt, - given => $given, - ctl => $ctl, - opctl => \%opctl, - linkage => \%linkage, - prefix => $prefix, + (name => $opt, + given => $given, + ctl => $ctl, + opctl => \%opctl, + linkage => \%linkage, + prefix => $prefix, + starter => $starter, ), $ctl->[CTL_DEST] == CTL_DEST_HASH ? ($key) : (), $arg); @@ -818,7 +822,7 @@ sub ParseOptionSpec ($$) { [=:] [ionfs] [@%]? (?: \{\d*,?\d*\} )? | # ... or an optional-with-default spec - : (?: -?\d+ | \+ ) [@%]? + : (?: 0[0-7]+ | 0[xX][0-9a-fA-F]+ | 0[bB][01]+ | -?\d+ | \+ ) [@%]? )? $;x ) { return (undef, "Error in option spec: \"$opt\"\n"); @@ -851,10 +855,23 @@ sub ParseOptionSpec ($$) { # Fields are hard-wired here. $entry = [$spec,$orig,undef,CTL_DEST_SCALAR,0,0]; } - elsif ( $spec =~ /^:(-?\d+|\+)([@%])?$/ ) { + elsif ( $spec =~ /^:(0[0-7]+|0x[0-9a-f]+|0b[01]+|-?\d+|\+)([@%])?$/i ) { my $def = $1; my $dest = $2; - my $type = $def eq '+' ? 'I' : 'i'; + my $type = 'i'; # assume integer + if ( $def eq '+' ) { + # Increment. + $type = 'I'; + } + elsif ( $def =~ /^(0[0-7]+|0[xX][0-9a-fA-F]+|0[bB][01]+)$/ ) { + # Octal, binary or hex. + $type = 'o'; + $def = oct($def); + } + elsif ( $def =~ /^-?\d+$/ ) { + # Integer. + $def = 0 + $def; + } $dest ||= '$'; $dest = $dest eq '@' ? CTL_DEST_ARRAY : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR; @@ -923,7 +940,7 @@ sub ParseOptionSpec ($$) { # Option lookup. sub FindOption ($$$$$) { - # returns (1, $opt, $ctl, $arg, $key) if okay, + # returns (1, $opt, $ctl, $starter, $arg, $key) if okay, # returns (1, undef) if option in error, # returns (0) otherwise. @@ -1104,7 +1121,7 @@ sub FindOption ($$$$$) { $arg = 0; # supply explicit value } unshift (@$argv, $starter.$rest) if defined $rest; - return (1, $opt, $ctl, $arg); + return (1, $opt, $ctl, $starter, $arg); } # Get mandatory status and type info. @@ -1127,15 +1144,15 @@ sub FindOption ($$$$$) { # Fake incremental type. my @c = @$ctl; $c[CTL_TYPE] = '+'; - return (1, $opt, \@c, 1); + return (1, $opt, \@c, $starter, 1); } my $val = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : $type eq 's' ? '' : 0; - return (1, $opt, $ctl, $val); + return (1, $opt, $ctl, $starter, $val); } - return (1, $opt, $ctl, $type eq 's' ? '' : 0) + return (1, $opt, $ctl, $starter, $type eq 's' ? '' : 0) if $optargtype == 1; # --foo= -> return nothing } @@ -1155,9 +1172,9 @@ sub FindOption ($$$$$) { # Fake incremental type. my @c = @$ctl; $c[CTL_TYPE] = '+'; - return (1, $opt, \@c, 1); + return (1, $opt, \@c, $starter, 1); } - return (1, $opt, $ctl, + return (1, $opt, $ctl, $starter, defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : $type eq 's' ? '' : 0); } @@ -1187,16 +1204,16 @@ sub FindOption ($$$$$) { if ( $type eq 's' ) { # string # A mandatory string takes anything. - return (1, $opt, $ctl, $arg, $key) if $mand; + return (1, $opt, $ctl, $starter, $arg, $key) if $mand; # Same for optional string as a hash value - return (1, $opt, $ctl, $arg, $key) + return (1, $opt, $ctl, $starter, $arg, $key) if $ctl->[CTL_DEST] == CTL_DEST_HASH; # An optional string takes almost anything. - return (1, $opt, $ctl, $arg, $key) + return (1, $opt, $ctl, $starter, $arg, $key) if defined $optarg || defined $rest; - return (1, $opt, $ctl, $arg, $key) if $arg eq "-"; # ?? + return (1, $opt, $ctl, $starter, $arg, $key) if $arg eq "-"; # ?? # Check for option or option list terminator. if ($arg eq $argend || @@ -1248,7 +1265,7 @@ sub FindOption ($$$$$) { # Fake incremental type. my @c = @$ctl; $c[CTL_TYPE] = '+'; - return (1, $opt, \@c, 1); + return (1, $opt, \@c, $starter, 1); } # Supply default value. $arg = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : 0; @@ -1293,7 +1310,7 @@ sub FindOption ($$$$$) { else { die("Getopt::Long internal error (Can't happen)\n"); } - return (1, $opt, $ctl, $arg, $key); + return (1, $opt, $ctl, $starter, $arg, $key); } sub ValidValue ($$$$$) { @@ -1529,8 +1546,9 @@ sub setup_pa_args($@) { if ( UNIVERSAL::isa($pa, 'HASH') ) { # Get rid of -msg vs. -message ambiguity. - $pa->{-message} = $pa->{-msg}; - delete($pa->{-msg}); + if (!defined $pa->{-message}) { + $pa->{-message} = delete($pa->{-msg}); + } } elsif ( $pa =~ /^-?\d+$/ ) { $pa = { -exitval => $pa }; @@ -1714,6 +1732,9 @@ disable C<$verbose> by setting its value to C<0>. Using a suitable default value, the program can find out whether C<$verbose> is false by default, or disabled by using C<--noverbose>. +(If both C<--verbose> and C<--noverbose> are given, whichever is given +last takes precedence.) + An incremental option is specified with a plus C<+> after the option name: @@ -1766,6 +1787,10 @@ of the equals sign indicates that the option value is optional. In this case, if no suitable value is supplied, string valued options get an empty string C<''> assigned, while numeric options are set to C<0>. +(If the same option appears more than once on the command line, the +last given value is used. If you want to take all the values, see +below.) + =head2 Options with multiple values Options sometimes take several values. For example, a program could @@ -2010,6 +2035,8 @@ considered an option on itself. Like C<:i>, but if the value is omitted, the I will be assigned. +If the I is octal, hexadecimal or binary, behaves like C<:o>. + =item : + [ I ] Like C<:i>, but if the value is omitted, the current value for the diff --git a/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm b/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm index 83ca06d18ce..8939b428671 100644 --- a/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm +++ b/gnu/usr.bin/perl/cpan/HTTP-Tiny/lib/HTTP/Tiny.pm @@ -4,7 +4,7 @@ use strict; use warnings; # ABSTRACT: A small, simple, correct HTTP/1.1 client -our $VERSION = '0.080'; +our $VERSION = '0.086'; sub _croak { require Carp; Carp::croak(@_) } @@ -40,10 +40,15 @@ sub _croak { require Carp; Carp::croak(@_) } #pod * C — Request timeout in seconds (default is 60) If a socket open, #pod read or write takes longer than the timeout, the request response status code #pod will be 599. -#pod * C — A boolean that indicates whether to validate the SSL -#pod certificate of an C — connection (default is false) +#pod * C — A boolean that indicates whether to validate the TLS/SSL +#pod certificate of an C — connection (default is true). Changed from false +#pod to true in version 0.083. #pod * C — A hashref of C — options to pass through to #pod L +#pod * C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}> - Changes the default +#pod certificate verification behavior to not check server identity if set to 1. +#pod Only effective if C is not set. Added in version 0.083. +#pod #pod #pod An accessor/mutator method exists for each attribute. #pod @@ -111,11 +116,17 @@ sub timeout { sub new { my($class, %args) = @_; + # Support lower case verify_ssl argument, but only if verify_SSL is not + # true. + if ( exists $args{verify_ssl} ) { + $args{verify_SSL} ||= $args{verify_ssl}; + } + my $self = { max_redirect => 5, timeout => defined $args{timeout} ? $args{timeout} : 60, keep_alive => 1, - verify_SSL => $args{verify_SSL} || $args{verify_ssl} || 0, # no verification by default + verify_SSL => defined $args{verify_SSL} ? $args{verify_SSL} : _verify_SSL_default(), no_proxy => $ENV{no_proxy}, }; @@ -134,6 +145,13 @@ sub new { return $self; } +sub _verify_SSL_default { + my ($self) = @_; + # Check if insecure default certificate verification behaviour has been + # changed by the user by setting PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT=1 + return (($ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT} || '') eq '1') ? 0 : 1; +} + sub _set_proxies { my ($self) = @_; @@ -245,9 +263,10 @@ sub post_form { while ( my ($key, $value) = each %{$args->{headers} || {}} ) { $headers->{lc $key} = $value; } - delete $args->{headers}; return $self->request('POST', $url, { + # Any existing 'headers' key in $args will be overridden with a + # normalized version below. %$args, content => $self->www_form_urlencode($data), headers => { @@ -389,6 +408,10 @@ sub mirror { #pod customizing the action of the callback based on the C or C #pod received prior to the content body.) #pod +#pod Content data in the request/response is handled as "raw bytes". Any +#pod encoding/decoding (with associated headers) are the responsibility of the +#pod caller. +#pod #pod The C method returns a hashref containing the response. The hashref #pod will have the following keys: #pod @@ -1055,7 +1078,7 @@ sub new { timeout => 60, max_line_size => 16384, max_header_lines => 64, - verify_SSL => 0, + verify_SSL => HTTP::Tiny::_verify_SSL_default(), SSL_options => {}, %args }, $class; @@ -1704,7 +1727,7 @@ HTTP::Tiny - A small, simple, correct HTTP/1.1 client =head1 VERSION -version 0.080 +version 0.086 =head1 SYNOPSIS @@ -1797,12 +1820,16 @@ C — Request timeout in seconds (default is 60) If a socket open, read =item * -C — A boolean that indicates whether to validate the SSL certificate of an C — connection (default is false) +C — A boolean that indicates whether to validate the TLS/SSL certificate of an C — connection (default is true). Changed from false to true in version 0.083. =item * C — A hashref of C — options to pass through to L +=item * + +C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}> - Changes the default certificate verification behavior to not check server identity if set to 1. Only effective if C is not set. Added in version 0.083. + =back An accessor/mutator method exists for each attribute. @@ -1943,6 +1970,10 @@ in-progress response hash reference, as described below. (This allows customizing the action of the callback based on the C or C received prior to the content body.) +Content data in the request/response is handled as "raw bytes". Any +encoding/decoding (with associated headers) are the responsibility of the +caller. + The C method returns a hashref containing the response. The hashref will have the following keys: @@ -2043,11 +2074,11 @@ proxy timeout verify_SSL -=head1 SSL SUPPORT +=head1 TLS/SSL SUPPORT Direct C connections are supported only if L 1.56 or greater and L 1.49 or greater are installed. An error will occur -if new enough versions of these modules are not installed or if the SSL +if new enough versions of these modules are not installed or if the TLS encryption fails. You can also use C utility function that returns boolean to see if the required modules are installed. @@ -2055,7 +2086,7 @@ An C connection may be made via an C proxy that supports the CONNEC command (i.e. RFC 2817). You may not proxy C via a proxy that itself requires C to communicate. -SSL provides two distinct capabilities: +TLS/SSL provides two distinct capabilities: =over 4 @@ -2069,24 +2100,17 @@ Verification of server identity =back -B. +B. -Server identity verification is controversial and potentially tricky because it -depends on a (usually paid) third-party Certificate Authority (CA) trust model -to validate a certificate as legitimate. This discriminates against servers -with self-signed certificates or certificates signed by free, community-driven -CA's such as L. +This was changed in version 0.083 due to security concerns. The previous default +behavior can be enabled by setting C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}> +to 1. -By default, HTTP::Tiny does not make any assumptions about your trust model, -threat level or risk tolerance. It just aims to give you an encrypted channel -when you need one. - -Setting the C attribute to a true value will make HTTP::Tiny verify -that an SSL connection has a valid SSL certificate corresponding to the host -name of the connection and that the SSL certificate has been verified by a CA. -Assuming you trust the CA, this will protect against a L. If you are -concerned about security, you should enable this option. +Verification is done by checking that that the TLS/SSL connection has a valid +certificate corresponding to the host name of the connection and that the +certificate has been verified by a CA. Assuming you trust the CA, this will +protect against L. Certificate verification requires a file containing trusted CA certificates. @@ -2094,9 +2118,7 @@ If the environment variable C is present, HTTP::Tiny will try to find a CA certificate file in that location. If the L module is installed, HTTP::Tiny will use the CA file -included with it as a source of trusted CA's. (This means you trust Mozilla, -the author of Mozilla::CA, the CPAN mirror where you got Mozilla::CA, the -toolchain used to install it, and your operating system security, right?) +included with it as a source of trusted CA's. If that module is not available, then HTTP::Tiny will search several system-specific default locations for a CA certificate file: @@ -2115,13 +2137,33 @@ system-specific default locations for a CA certificate file: /etc/ssl/ca-bundle.pem +=item * + +/etc/openssl/certs/ca-certificates.crt + +=item * + +/etc/ssl/cert.pem + +=item * + +/usr/local/share/certs/ca-root-nss.crt + +=item * + +/etc/pki/tls/cacert.pem + +=item * + +/etc/certs/ca-certificates.crt + =back An error will be occur if C is true and no CA certificate file is available. -If you desire complete control over SSL connections, the C attribute -lets you provide a hash reference that will be passed through to +If you desire complete control over TLS/SSL connections, the C +attribute lets you provide a hash reference that will be passed through to C, overriding any options set by HTTP::Tiny. For example, to provide your own trusted CA file: @@ -2131,7 +2173,7 @@ example, to provide your own trusted CA file: The C attribute could also be used for such things as providing a client certificate for authentication to a server or controlling the choice of -cipher used for the SSL connection. See L documentation for +cipher used for the TLS/SSL connection. See L documentation for details. =head1 PROXY SUPPORT @@ -2337,7 +2379,7 @@ David Golden =head1 CONTRIBUTORS -=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry David Golden Mitchell Dean Pearce Edward Zborowski Felipe Gasper Greg Kennedy James E Keenan Raspass Jeremy Mates Jess Robinson Karen Etheridge Lukas Eklund Martin J. Evans Martin-Louis Bright Matthew Horsfall Michael R. Davis Mike Doherty Nicolas Rochelemagne Olaf Alders Olivier Mengué Petr Písař sanjay-cpu Serguei Trouchelle Shoichi Kaji SkyMarshal Sören Kornetzki Steve Grazzini Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook Xavier Guimard +=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry David Golden Mitchell Dean Pearce Edward Zborowski Felipe Gasper Graham Knop Greg Kennedy James E Keenan Raspass Jeremy Mates Jess Robinson Karen Etheridge Lukas Eklund Martin J. Evans Martin-Louis Bright Matthew Horsfall Michael R. Davis Mike Doherty Nicolas Rochelemagne Olaf Alders Olivier Mengué Petr Písař sanjay-cpu Serguei Trouchelle Shoichi Kaji SkyMarshal Sören Kornetzki Steve Grazzini Stig Palmquist Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook Xavier Guimard =over 4 @@ -2407,6 +2449,10 @@ Felipe Gasper =item * +Graham Knop + +=item * + Greg Kennedy =item * @@ -2495,6 +2541,10 @@ Steve Grazzini =item * +Stig Palmquist + +=item * + Syohei YOSHIDA =item * @@ -2517,7 +2567,7 @@ Xavier Guimard =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2021 by Christian Hansen. +This software is copyright (c) 2023 by Christian Hansen. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL b/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL index 8e9acfe7cf5..96e9ad859c5 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL +++ b/gnu/usr.bin/perl/cpan/IO-Compress/Makefile.PL @@ -3,8 +3,8 @@ use strict ; require 5.006 ; -$::VERSION = '2.106' ; -$::DEP_VERSION = '2.103'; +$::VERSION = '2.204' ; +$::DEP_VERSION = '2.204'; use lib '.'; use private::MakeUtil; @@ -29,6 +29,7 @@ WriteMakefile( 'Compress::Raw::Zlib' => $::DEP_VERSION, 'Scalar::Util' => 0, 'Encode' => 0, + 'Time::Local' => 0, $] >= 5.005 && $] < 5.006 ? ('File::BSDGlob' => 0) : () } diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm index 37aa051557d..68a5a5115af 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/Compress/Zlib.pm @@ -7,17 +7,17 @@ use Carp ; use IO::Handle ; use Scalar::Util qw(dualvar); -use IO::Compress::Base::Common 2.106 ; -use Compress::Raw::Zlib 2.103 ; -use IO::Compress::Gzip 2.106 ; -use IO::Uncompress::Gunzip 2.106 ; +use IO::Compress::Base::Common 2.204 ; +use Compress::Raw::Zlib 2.204 ; +use IO::Compress::Gzip 2.204 ; +use IO::Uncompress::Gunzip 2.204 ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); -$VERSION = '2.106'; +$VERSION = '2.204'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @@ -461,7 +461,7 @@ sub inflate package Compress::Zlib ; -use IO::Compress::Gzip::Constants 2.106 ; +use IO::Compress::Gzip::Constants 2.204 ; sub memGzip($) { @@ -1494,6 +1494,9 @@ C and Mark Adler C. The primary site for the I compression library is L. +The primary site for the I compression library is +L. + The primary site for gzip is L. =head1 AUTHOR @@ -1506,7 +1509,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 1995-2022 Paul Marquess. All rights reserved. +Copyright (c) 1995-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm index cc1700aab26..e19755123d1 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm @@ -4,12 +4,12 @@ use strict; use warnings; use bytes; -use IO::Compress::Base::Common 2.106 qw(:Status); +use IO::Compress::Base::Common 2.204 qw(:Status); -use Compress::Raw::Bzip2 2.103 ; +use Compress::Raw::Bzip2 2.204 ; our ($VERSION); -$VERSION = '2.106'; +$VERSION = '2.204'; sub mkCompObject { diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm index 12f97ccc52d..54696ffd781 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm @@ -4,13 +4,13 @@ use strict; use warnings; use bytes; -use IO::Compress::Base::Common 2.106 qw(:Status); -use Compress::Raw::Zlib 2.103 qw( !crc32 !adler32 ) ; +use IO::Compress::Base::Common 2.204 qw(:Status); +use Compress::Raw::Zlib 2.204 qw( !crc32 !adler32 ) ; require Exporter; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS); -$VERSION = '2.106'; +$VERSION = '2.204'; @ISA = qw(Exporter); @EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS; %EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS; @@ -40,6 +40,29 @@ sub mkCompObject } ; } +sub mkCompObject1 +{ + my $crc32 = shift ; + my $adler32 = shift ; + my $level = shift ; + my $strategy = shift ; + + my ($def, $status) = Compress::Raw::Zlib::Deflate->new( + -AppendOutput => 1, + -CRC32 => $crc32, + -ADLER32 => $adler32, + -Level => $level, + -Strategy => $strategy, + -WindowBits => MAX_WBITS); + + return (undef, "Cannot create Deflate object: $status", $status) + if $status != Z_OK; + + return bless {'Def' => $def, + 'Error' => '', + } ; +} + sub compr { my $self = shift ; diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm index a21962ea1aa..5938d136978 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm @@ -4,10 +4,10 @@ use strict; use warnings; use bytes; -use IO::Compress::Base::Common 2.106 qw(:Status); +use IO::Compress::Base::Common 2.204 qw(:Status); our ($VERSION); -$VERSION = '2.106'; +$VERSION = '2.204'; sub mkCompObject { diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm index fdb169d7716..37a0df94f34 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base.pm @@ -6,7 +6,7 @@ require 5.006 ; use strict ; use warnings; -use IO::Compress::Base::Common 2.106 ; +use IO::Compress::Base::Common 2.204 ; use IO::File (); ; use Scalar::Util (); @@ -20,7 +20,7 @@ use Symbol(); our (@ISA, $VERSION); @ISA = qw(IO::File Exporter); -$VERSION = '2.106'; +$VERSION = '2.204'; #Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16. @@ -1051,7 +1051,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm index 39ac0168589..32c4aa34642 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Base/Common.pm @@ -11,7 +11,7 @@ use File::GlobMapper; require Exporter; our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE); @ISA = qw(Exporter); -$VERSION = '2.106'; +$VERSION = '2.204'; @EXPORT = qw( isaFilehandle isaFilename isaScalar whatIsInput whatIsOutput diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm index faf043b1540..6aa0ddd4cb4 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Bzip2.pm @@ -5,16 +5,16 @@ use warnings; use bytes; require Exporter ; -use IO::Compress::Base 2.106 ; +use IO::Compress::Base 2.204 ; -use IO::Compress::Base::Common 2.106 qw(); -use IO::Compress::Adapter::Bzip2 2.106 ; +use IO::Compress::Base::Common 2.204 qw(); +use IO::Compress::Adapter::Bzip2 2.204 ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error); -$VERSION = '2.106'; +$VERSION = '2.204'; $Bzip2Error = ''; @ISA = qw(IO::Compress::Base Exporter); @@ -51,7 +51,7 @@ sub getExtraParams { my $self = shift ; - use IO::Compress::Base::Common 2.106 qw(:Parse); + use IO::Compress::Base::Common 2.204 qw(:Parse); return ( 'blocksize100k' => [IO::Compress::Base::Common::Parse_unsigned, 1], @@ -818,7 +818,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm index 0998952b4de..a34a6ba6e69 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Deflate.pm @@ -8,16 +8,16 @@ use bytes; require Exporter ; -use IO::Compress::RawDeflate 2.106 (); -use IO::Compress::Adapter::Deflate 2.106 ; +use IO::Compress::RawDeflate 2.204 (); +use IO::Compress::Adapter::Deflate 2.204 ; -use IO::Compress::Zlib::Constants 2.106 ; -use IO::Compress::Base::Common 2.106 qw(); +use IO::Compress::Zlib::Constants 2.204 ; +use IO::Compress::Base::Common 2.204 qw(); our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $DeflateError); -$VERSION = '2.106'; +$VERSION = '2.204'; $DeflateError = ''; @ISA = qw(IO::Compress::RawDeflate Exporter); @@ -42,92 +42,35 @@ sub deflate return $obj->_def(@_); } - -sub bitmask($$$$) -{ - my $into = shift ; - my $value = shift ; - my $offset = shift ; - my $mask = shift ; - - return $into | (($value & $mask) << $offset ) ; -} - -sub mkDeflateHdr($$$;$) -{ - my $method = shift ; - my $cinfo = shift; - my $level = shift; - my $fdict_adler = shift ; - - my $cmf = 0; - my $flg = 0; - my $fdict = 0; - $fdict = 1 if defined $fdict_adler; - - $cmf = bitmask($cmf, $method, ZLIB_CMF_CM_OFFSET, ZLIB_CMF_CM_BITS); - $cmf = bitmask($cmf, $cinfo, ZLIB_CMF_CINFO_OFFSET, ZLIB_CMF_CINFO_BITS); - - $flg = bitmask($flg, $fdict, ZLIB_FLG_FDICT_OFFSET, ZLIB_FLG_FDICT_BITS); - $flg = bitmask($flg, $level, ZLIB_FLG_LEVEL_OFFSET, ZLIB_FLG_LEVEL_BITS); - - my $fcheck = 31 - ($cmf * 256 + $flg) % 31 ; - $flg = bitmask($flg, $fcheck, ZLIB_FLG_FCHECK_OFFSET, ZLIB_FLG_FCHECK_BITS); - - my $hdr = pack("CC", $cmf, $flg) ; - $hdr .= pack("N", $fdict_adler) if $fdict ; - - return $hdr; -} - -sub mkHeader +sub mkComp { my $self = shift ; - my $param = shift ; + my $got = shift ; - my $level = $param->getValue('level'); - my $strategy = $param->getValue('strategy'); + my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject1( + $got->getValue('crc32'), + $got->getValue('adler32'), + $got->getValue('level'), + $got->getValue('strategy') + ); - my $lflag ; - $level = 6 - if $level == Z_DEFAULT_COMPRESSION ; + return $self->saveErrorString(undef, $errstr, $errno) + if ! defined $obj; - if (ZLIB_VERNUM >= 0x1210) - { - if ($strategy >= Z_HUFFMAN_ONLY || $level < 2) - { $lflag = ZLIB_FLG_LEVEL_FASTEST } - elsif ($level < 6) - { $lflag = ZLIB_FLG_LEVEL_FAST } - elsif ($level == 6) - { $lflag = ZLIB_FLG_LEVEL_DEFAULT } - else - { $lflag = ZLIB_FLG_LEVEL_SLOWEST } - } - else - { - $lflag = ($level - 1) >> 1 ; - $lflag = 3 if $lflag > 3 ; - } - - #my $wbits = (MAX_WBITS - 8) << 4 ; - my $wbits = 7; - mkDeflateHdr(ZLIB_CMF_CM_DEFLATED, $wbits, $lflag); + return $obj; } -sub ckParams + +sub mkHeader { my $self = shift ; - my $got = shift; - - $got->setValue('adler32' => 1); - return 1 ; + return ''; } - sub mkTrailer { my $self = shift ; - return pack("N", *$self->{Compress}->adler32()) ; + return ''; } sub mkFinalTrailer @@ -135,12 +78,6 @@ sub mkFinalTrailer return ''; } -#sub newHeader -#{ -# my $self = shift ; -# return *$self->{Header}; -#} - sub getExtraParams { my $self = shift ; @@ -940,6 +877,9 @@ C and Mark Adler C. The primary site for the I compression library is L. +The primary site for the I compression library is +L. + The primary site for gzip is L. =head1 AUTHOR @@ -952,7 +892,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod index 466488bb89f..549ea2a7b4e 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/FAQ.pod @@ -682,7 +682,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm index 0471e33ea7a..6b142d45216 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip.pm @@ -8,12 +8,12 @@ use bytes; require Exporter ; -use IO::Compress::RawDeflate 2.106 () ; -use IO::Compress::Adapter::Deflate 2.106 ; +use IO::Compress::RawDeflate 2.204 () ; +use IO::Compress::Adapter::Deflate 2.204 ; -use IO::Compress::Base::Common 2.106 qw(:Status ); -use IO::Compress::Gzip::Constants 2.106 ; -use IO::Compress::Zlib::Extra 2.106 ; +use IO::Compress::Base::Common 2.204 qw(:Status ); +use IO::Compress::Gzip::Constants 2.204 ; +use IO::Compress::Zlib::Extra 2.204 ; BEGIN { @@ -25,7 +25,7 @@ BEGIN our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError); -$VERSION = '2.106'; +$VERSION = '2.204'; $GzipError = '' ; @ISA = qw(IO::Compress::RawDeflate Exporter); @@ -1252,6 +1252,9 @@ C and Mark Adler C. The primary site for the I compression library is L. +The primary site for the I compression library is +L. + The primary site for gzip is L. =head1 AUTHOR @@ -1264,7 +1267,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm index 8e32e17d590..f56612d7292 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm @@ -9,7 +9,7 @@ require Exporter; our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names); our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE); -$VERSION = '2.106'; +$VERSION = '2.204'; @ISA = qw(Exporter); diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm index de0f332ecb8..75ee62ba48f 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm @@ -6,16 +6,16 @@ use strict ; use warnings; use bytes; -use IO::Compress::Base 2.106 ; -use IO::Compress::Base::Common 2.106 qw(:Status :Parse); -use IO::Compress::Adapter::Deflate 2.106 ; -use Compress::Raw::Zlib 2.103 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY); +use IO::Compress::Base 2.204 ; +use IO::Compress::Base::Common 2.204 qw(:Status :Parse); +use IO::Compress::Adapter::Deflate 2.204 ; +use Compress::Raw::Zlib 2.204 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY); require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError); -$VERSION = '2.106'; +$VERSION = '2.204'; $RawDeflateError = ''; @ISA = qw(IO::Compress::Base Exporter); @@ -995,6 +995,9 @@ C and Mark Adler C. The primary site for the I compression library is L. +The primary site for the I compression library is +L. + The primary site for gzip is L. =head1 AUTHOR @@ -1007,7 +1010,7 @@ See the Changes file. =head1 COPYRIGHT AND LICENSE -Copyright (c) 2005-2022 Paul Marquess. All rights reserved. +Copyright (c) 2005-2023 Paul Marquess. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm index ecba767727b..856ae7b08a1 100644 --- a/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm +++ b/gnu/usr.bin/perl/cpan/IO-Compress/lib/IO/Compress/Zip.pm @@ -4,41 +4,41 @@ use strict ; use warnings; use bytes; -use IO::Compress::Base::Common 2.106 qw(:Status ); -use IO::Compress::RawDeflate 2.106 (); -use IO::Compress::Adapter::Deflate 2.106 ; -use IO::Compress::Adapter::Identity 2.106 ; -use IO::Compress::Zlib::Extra 2.106 ; -use IO::Compress::Zip::Constants 2.106 ; +use IO::Compress::Base::Common 2.204 qw(:Status ); +use IO::Compress::RawDeflate 2.204 (); +use IO::Compress::Adapter::Deflate 2.204 ; +use IO::Compress::Adapter::Identity 2.204 ; +use IO::Compress::Zlib::Extra 2.204 ; +use IO::Compress::Zip::Constants 2.204 ; use File::Spec(); use Config; -use Compress::Raw::Zlib 2.103 (); +use Compress::Raw::Zlib 2.204 (); BEGIN { eval { require IO::Compress::Adapter::Bzip2 ; - IO::Compress::Adapter::Bzip2->import( 2.103 ); + IO::Compress::Adapter::Bzip2->import( 2.201 ); require IO::Compress::Bzip2 ; - IO::Compress::Bzip2->import( 2.103 ); + IO::Compress::Bzip2->import( 2.201 ); } ; eval { require IO::Compress::Adapter::Lzma ; - IO::Compress::Adapter::Lzma->import( 2.103 ); + IO::Compress::Adapter::Lzma->import( 2.201 ); require IO::Compress::Lzma ; - IO::Compress::Lzma->import( 2.103 ); + IO::Compress::Lzma->import( 2.201 ); } ; eval { require IO::Compress::Adapter::Xz ; - IO::Compress::Adapter::Xz->import( 2.103 ); + IO::Compress::Adapter::Xz->import( 2.201 ); require IO::Compress::Xz ; - IO::Compress::Xz->import( 2.103 ); + IO::Compress::Xz->import( 2.201 ); } ; eval { require IO::Compress::Adapter::Zstd ; - IO::Compress::Adapter::Zstd->import( 2.103 ); + IO::Compress::Adapter::Zstd->import( 2.201 ); require IO::Compress::Zstd ; - IO::Compress::Zstd->import( 2.103 ); + IO::Compress::Zstd->import( 2.201 ); } ; } @@ -47,7 +47,7 @@ require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $ZipError); -$VERSION = '2.106'; +$VERSION = '2.204'; $ZipError = ''; @ISA = qw(IO::Compress::RawDeflate Exporter); @@ -85,20 +85,24 @@ sub isMethodAvailable if $method == ZIP_CM_STORE || $method == ZIP_CM_DEFLATE ; return 1 - if $method == ZIP_CM_BZIP2 and - defined $IO::Compress::Adapter::Bzip2::VERSION; + if $method == ZIP_CM_BZIP2 && + defined $IO::Compress::Adapter::Bzip2::VERSION && + defined &{ "IO::Compress::Adapter::Bzip2::mkRawZipCompObject" }; return 1 - if $method == ZIP_CM_LZMA and - defined $IO::Compress::Adapter::Lzma::VERSION; + if $method == ZIP_CM_LZMA && + defined $IO::Compress::Adapter::Lzma::VERSION && + defined &{ "IO::Compress::Adapter::Lzma::mkRawZipCompObject" }; return 1 - if $method == ZIP_CM_XZ and - defined $IO::Compress::Adapter::Xz::VERSION; + if $method == ZIP_CM_XZ && + defined $IO::Compress::Adapter::Xz::VERSION && + defined &{ "IO::Compress::Adapter::Xz::mkRawZipCompObject" }; return 1 - if $method == ZIP_CM_ZSTD and - defined $IO::Compress::Adapter::ZSTD::VERSION; + if $method == ZIP_CM_ZSTD && + defined $IO::Compress::Adapter::ZSTD::VERSION && + defined &{ "IO::Compress::Adapter::ZSTD::mkRawZipCompObject" }; return 0; } @@ -566,6 +570,8 @@ sub mkFinalTrailer $z64e .= U64::pack_V64 $entries ; # entries in central dir $z64e .= U64::pack_V64 $cd_len ; # size of central dir $z64e .= *$self->{ZipData}{Offset}->getPacked_V64() ; # offset to start central dir + $z64e .= *$self->{ZipData}{extrafieldzip64} # otional extra field + if defined *$self->{ZipData}{extrafieldzip64} ; $z64e = pack("V", ZIP64_END_CENTRAL_REC_HDR_SIG) # signature . U64::pack_V64(length $z64e) @@ -638,7 +644,7 @@ sub ckParams } *$self->{ZipData}{AnyZip64} = 1 - if $got->getValue('zip64'); + if $got->getValue('zip64') || $got->getValue('extrafieldzip64') ; *$self->{ZipData}{Zip64} = $got->getValue('zip64'); *$self->{ZipData}{Stream} = $got->getValue('stream'); @@ -658,7 +664,7 @@ sub ckParams *$self->{ZipData}{ZipComment} = $got->getValue('zipcomment') ; - for my $name (qw( extrafieldlocal extrafieldcentral )) + for my $name (qw( extrafieldlocal extrafieldcentral extrafieldzip64)) { my $data = $got->getValue($name) ; if (defined $data) { @@ -667,6 +673,7 @@ sub ckParams if $bad ; $got->setValue($name, $data) ; + *$self->{ZipData}{$name} = $data; } } @@ -731,6 +738,7 @@ our %PARAMS = ( 'textflag' => [IO::Compress::Base::Common::Parse_boolean, 0], 'extrafieldlocal' => [IO::Compress::Base::Common::Parse_any, undef], 'extrafieldcentral'=> [IO::Compress::Base::Common::Parse_any, undef], + 'extrafieldzip64' => [IO::Compress::Base::Common::Parse_any, undef], # Lzma 'preset' => [IO::Compress::Base::Common::Parse_unsigned, 6], @@ -1053,12 +1061,24 @@ See L for more details. If the C<$input_filename_or_reference> parameter is any other type, C will be returned. -In addition, if C<$input_filename_or_reference> is a simple filename, -the default values for -the C, C is the I part and C is the I part. The -arithmetic with complex numbers is straightforward. You have to -keep track of the real and the imaginary parts, but otherwise the -rules used for real numbers just apply: - - (4 + 3i) + (5 - 2i) = (4 + 5) + i(3 - 2) = 9 + i - (2 + i) * (4 - i) = 2*4 + 4i -2i -i*i = 8 + 2i + 1 = 9 + 2i - -A graphical representation of complex numbers is possible in a plane -(also called the I, but it's really a 2D plane). -The number - - z = a + bi - -is the point whose coordinates are (a, b). Actually, it would -be the vector originating from (0, 0) to (a, b). It follows that the addition -of two complex numbers is a vectorial addition. - -Since there is a bijection between a point in the 2D plane and a complex -number (i.e. the mapping is unique and reciprocal), a complex number -can also be uniquely identified with polar coordinates: - - [rho, theta] - -where C is the distance to the origin, and C the angle between -the vector and the I axis. There is a notation for this using the -exponential form, which is: - - rho * exp(i * theta) - -where I is the famous imaginary number introduced above. Conversion -between this form and the cartesian form C is immediate: - - a = rho * cos(theta) - b = rho * sin(theta) - -which is also expressed by this formula: - - z = rho * exp(i * theta) = rho * (cos theta + i * sin theta) - -In other words, it's the projection of the vector onto the I and I -axes. Mathematicians call I the I or I and I -the I of the complex number. The I of C is -marked here as C. - -The polar notation (also known as the trigonometric representation) is -much more handy for performing multiplications and divisions of -complex numbers, whilst the cartesian notation is better suited for -additions and subtractions. Real numbers are on the I axis, and -therefore I or I is zero or I. - -All the common operations that can be performed on a real number have -been defined to work on complex numbers as well, and are merely -I of the operations defined on real numbers. This means -they keep their natural meaning when there is no imaginary part, provided -the number is within their definition set. - -For instance, the C routine which computes the square root of -its argument is only defined for non-negative real numbers and yields a -non-negative real number (it is an application from B to B). -If we allow it to return a complex number, then it can be extended to -negative real numbers to become an application from B to B (the -set of complex numbers): - - sqrt(x) = x >= 0 ? sqrt(x) : sqrt(-x)*i - -It can also be extended to be an application from B to B, -whilst its restriction to B behaves as defined above by using -the following definition: - - sqrt(z = [r,t]) = sqrt(r) * exp(i * t/2) - -Indeed, a negative real number can be noted C<[x,pi]> (the modulus -I is always non-negative, so C<[x,pi]> is really C<-x>, a negative -number) and the above definition states that - - sqrt([x,pi]) = sqrt(x) * exp(i*pi/2) = [sqrt(x),pi/2] = sqrt(x)*i - -which is exactly what we had defined for negative real numbers above. -The C returns only one of the solutions: if you want the both, -use the C function. - -All the common mathematical functions defined on real numbers that -are extended to complex numbers share that same property of working -I when the imaginary part is zero (otherwise, it would not -be called an extension, would it?). - -A I operation possible on a complex number that is -the identity for real numbers is called the I, and is noted -with a horizontal bar above the number, or C<~z> here. - - z = a + bi - ~z = a - bi - -Simple... Now look: - - z * ~z = (a + bi) * (a - bi) = a*a + b*b - -We saw that the norm of C was noted C and was defined as the -distance to the origin, also known as: - - rho = abs(z) = sqrt(a*a + b*b) - -so - - z * ~z = abs(z) ** 2 - -If z is a pure real number (i.e. C), then the above yields: - - a * a = abs(a) ** 2 - -which is true (C has the regular meaning for real number, i.e. stands -for the absolute value). This example explains why the norm of C is -noted C: it extends the C function to complex numbers, yet -is the regular C we know when the complex number actually has no -imaginary part... This justifies I our use of the C -notation for the norm. - -=head1 OPERATIONS - -Given the following notations: - - z1 = a + bi = r1 * exp(i * t1) - z2 = c + di = r2 * exp(i * t2) - z = - -the following (overloaded) operations are supported on complex numbers: - - z1 + z2 = (a + c) + i(b + d) - z1 - z2 = (a - c) + i(b - d) - z1 * z2 = (r1 * r2) * exp(i * (t1 + t2)) - z1 / z2 = (r1 / r2) * exp(i * (t1 - t2)) - z1 ** z2 = exp(z2 * log z1) - ~z = a - bi - abs(z) = r1 = sqrt(a*a + b*b) - sqrt(z) = sqrt(r1) * exp(i * t/2) - exp(z) = exp(a) * exp(i * b) - log(z) = log(r1) + i*t - sin(z) = 1/2i (exp(i * z1) - exp(-i * z)) - cos(z) = 1/2 (exp(i * z1) + exp(-i * z)) - atan2(y, x) = atan(y / x) # Minding the right quadrant, note the order. - -The definition used for complex arguments of atan2() is - - -i log((x + iy)/sqrt(x*x+y*y)) - -Note that atan2(0, 0) is not well-defined. - -The following extra operations are supported on both real and complex -numbers: - - Re(z) = a - Im(z) = b - arg(z) = t - abs(z) = r - - cbrt(z) = z ** (1/3) - log10(z) = log(z) / log(10) - logn(z, n) = log(z) / log(n) - - tan(z) = sin(z) / cos(z) - - csc(z) = 1 / sin(z) - sec(z) = 1 / cos(z) - cot(z) = 1 / tan(z) - - asin(z) = -i * log(i*z + sqrt(1-z*z)) - acos(z) = -i * log(z + i*sqrt(1-z*z)) - atan(z) = i/2 * log((i+z) / (i-z)) - - acsc(z) = asin(1 / z) - asec(z) = acos(1 / z) - acot(z) = atan(1 / z) = -i/2 * log((i+z) / (z-i)) - - sinh(z) = 1/2 (exp(z) - exp(-z)) - cosh(z) = 1/2 (exp(z) + exp(-z)) - tanh(z) = sinh(z) / cosh(z) = (exp(z) - exp(-z)) / (exp(z) + exp(-z)) - - csch(z) = 1 / sinh(z) - sech(z) = 1 / cosh(z) - coth(z) = 1 / tanh(z) - - asinh(z) = log(z + sqrt(z*z+1)) - acosh(z) = log(z + sqrt(z*z-1)) - atanh(z) = 1/2 * log((1+z) / (1-z)) - - acsch(z) = asinh(1 / z) - asech(z) = acosh(1 / z) - acoth(z) = atanh(1 / z) = 1/2 * log((1+z) / (z-1)) - -I, I, I, I, I, I, I, I, -I, I, I, have aliases I, I, I, -I, I, I, I, I, I, -I, I, respectively. C, C, C, C, -C, and C can be used also as mutators. The C -returns only one of the solutions: if you want all three, use the -C function. - -The I function is available to compute all the I -roots of some complex, where I is a strictly positive integer. -There are exactly I such roots, returned as a list. Getting the -number mathematicians call C such that: - - 1 + j + j*j = 0; - -is a simple matter of writing: - - $j = ((root(1, 3))[1]; - -The Ith root for C is given by: - - (root(z, n))[k] = r**(1/n) * exp(i * (t + 2*k*pi)/n) - -You can return the Ith root directly by C, -indexing starting from I and ending at I. - -The I numeric comparison operator, E=E, is also -defined. In order to ensure its restriction to real numbers is conform -to what you would expect, the comparison is run on the real part of -the complex number first, and imaginary parts are compared only when -the real parts match. - -=head1 CREATION - -To create a complex number, use either: - - $z = Math::Complex->make(3, 4); - $z = cplx(3, 4); - -if you know the cartesian form of the number, or - - $z = 3 + 4*i; - -if you like. To create a number using the polar form, use either: - - $z = Math::Complex->emake(5, pi/3); - $x = cplxe(5, pi/3); - -instead. The first argument is the modulus, the second is the angle -(in radians, the full circle is 2*pi). (Mnemonic: C is used as a -notation for complex numbers in the polar form). - -It is possible to write: - - $x = cplxe(-3, pi/4); - -but that will be silently converted into C<[3,-3pi/4]>, since the -modulus must be non-negative (it represents the distance to the origin -in the complex plane). - -It is also possible to have a complex number as either argument of the -C, C, C, and C: the appropriate component of -the argument will be used. - - $z1 = cplx(-2, 1); - $z2 = cplx($z1, 4); - -The C, C, C, C, and C will also -understand a single (string) argument of the forms - - 2-3i - -3i - [2,3] - [2,-3pi/4] - [2] - -in which case the appropriate cartesian and exponential components -will be parsed from the string and used to create new complex numbers. -The imaginary component and the theta, respectively, will default to zero. - -The C, C, C, C, and C will also -understand the case of no arguments: this means plain zero or (0, 0). - -=head1 DISPLAYING - -When printed, a complex number is usually shown under its cartesian -style I, but there are legitimate cases where the polar style -I<[r,t]> is more appropriate. The process of converting the complex -number into a string that can be displayed is known as I. - -By calling the class method C and -supplying either C<"polar"> or C<"cartesian"> as an argument, you -override the default display style, which is C<"cartesian">. Not -supplying any argument returns the current settings. - -This default can be overridden on a per-number basis by calling the -C method instead. As before, not supplying any argument -returns the current display style for this number. Otherwise whatever you -specify will be the new display style for I particular number. - -For instance: - - use Math::Complex; - - Math::Complex::display_format('polar'); - $j = (root(1, 3))[1]; - print "j = $j\n"; # Prints "j = [1,2pi/3]" - $j->display_format('cartesian'); - print "j = $j\n"; # Prints "j = -0.5+0.866025403784439i" - -The polar style attempts to emphasize arguments like I -(where I is a positive integer and I an integer within [-9, +9]), -this is called I. - -For the reverse of stringifying, see the C and C. - -=head2 CHANGED IN PERL 5.6 - -The C class method and the corresponding -C object method can now be called using -a parameter hash instead of just a one parameter. - -The old display format style, which can have values C<"cartesian"> or -C<"polar">, can be changed using the C<"style"> parameter. - - $j->display_format(style => "polar"); - -The one parameter calling convention also still works. - - $j->display_format("polar"); - -There are two new display parameters. - -The first one is C<"format">, which is a sprintf()-style format string -to be used for both numeric parts of the complex number(s). The is -somewhat system-dependent but most often it corresponds to C<"%.15g">. -You can revert to the default by setting the C to C. - - # the $j from the above example - - $j->display_format('format' => '%.5f'); - print "j = $j\n"; # Prints "j = -0.50000+0.86603i" - $j->display_format('format' => undef); - print "j = $j\n"; # Prints "j = -0.5+0.86603i" - -Notice that this affects also the return values of the -C methods: in list context the whole parameter hash -will be returned, as opposed to only the style parameter value. -This is a potential incompatibility with earlier versions if you -have been calling the C method in list context. - -The second new display parameter is C<"polar_pretty_print">, which can -be set to true or false, the default being true. See the previous -section for what this means. - -=head1 USAGE - -Thanks to overloading, the handling of arithmetics with complex numbers -is simple and almost transparent. - -Here are some examples: - - use Math::Complex; - - $j = cplxe(1, 2*pi/3); # $j ** 3 == 1 - print "j = $j, j**3 = ", $j ** 3, "\n"; - print "1 + j + j**2 = ", 1 + $j + $j**2, "\n"; - - $z = -16 + 0*i; # Force it to be a complex - print "sqrt($z) = ", sqrt($z), "\n"; - - $k = exp(i * 2*pi/3); - print "$j - $k = ", $j - $k, "\n"; - - $z->Re(3); # Re, Im, arg, abs, - $j->arg(2); # (the last two aka rho, theta) - # can be used also as mutators. - -=head1 CONSTANTS - -=head2 PI - -The constant C and some handy multiples of it (pi2, pi4, -and pip2 (pi/2) and pip4 (pi/4)) are also available if separately -exported: - - use Math::Complex ':pi'; - $third_of_circle = pi2 / 3; - -=head2 Inf - -The floating point infinity can be exported as a subroutine Inf(): - - use Math::Complex qw(Inf sinh); - my $AlsoInf = Inf() + 42; - my $AnotherInf = sinh(1e42); - print "$AlsoInf is $AnotherInf\n" if $AlsoInf == $AnotherInf; - -Note that the stringified form of infinity varies between platforms: -it can be for example any of - - inf - infinity - INF - 1.#INF - -or it can be something else. - -Also note that in some platforms trying to use the infinity in -arithmetic operations may result in Perl crashing because using -an infinity causes SIGFPE or its moral equivalent to be sent. -The way to ignore this is - - local $SIG{FPE} = sub { }; - -=head1 ERRORS DUE TO DIVISION BY ZERO OR LOGARITHM OF ZERO - -The division (/) and the following functions - - log ln log10 logn - tan sec csc cot - atan asec acsc acot - tanh sech csch coth - atanh asech acsch acoth - -cannot be computed for all arguments because that would mean dividing -by zero or taking logarithm of zero. These situations cause fatal -runtime errors looking like this - - cot(0): Division by zero. - (Because in the definition of cot(0), the divisor sin(0) is 0) - Died at ... - -or - - atanh(-1): Logarithm of zero. - Died at... - -For the C, C, C, C, C, C, C, -C, C, the argument cannot be C<0> (zero). For the -logarithmic functions and the C, C, the argument cannot -be C<1> (one). For the C, C, the argument cannot be -C<-1> (minus one). For the C, C, the argument cannot be -C (the imaginary unit). For the C, C, the argument -cannot be C<-i> (the negative imaginary unit). For the C, -C, C, the argument cannot be I, where I -is any integer. atan2(0, 0) is undefined, and if the complex arguments -are used for atan2(), a division by zero will happen if z1**2+z2**2 == 0. - -Note that because we are operating on approximations of real numbers, -these errors can happen when merely `too close' to the singularities -listed above. - -=head1 ERRORS DUE TO INDIGESTIBLE ARGUMENTS - -The C and C accept both real and complex arguments. -When they cannot recognize the arguments they will die with error -messages like the following - - Math::Complex::make: Cannot take real part of ... - Math::Complex::make: Cannot take real part of ... - Math::Complex::emake: Cannot take rho of ... - Math::Complex::emake: Cannot take theta of ... - -=head1 BUGS - -Saying C exports many mathematical routines in the -caller environment and even overrides some (C, C, C). -This is construed as a feature by the Authors, actually... ;-) - -All routines expect to be given real or complex numbers. Don't attempt to -use BigFloat, since Perl has currently no rule to disambiguate a '+' -operation (for instance) between two overloaded entities. - -In Cray UNICOS there is some strange numerical instability that results -in root(), cos(), sin(), cosh(), sinh(), losing accuracy fast. Beware. -The bug may be in UNICOS math libs, in UNICOS C compiler, in Math::Complex. -Whatever it is, it does not manifest itself anywhere else where Perl runs. - -=head1 SEE ALSO - -L - -=head1 AUTHORS - -Daniel S. Lewart >, -Jarkko Hietaniemi >, -Raphael Manfredi >, -Zefram - -=head1 LICENSE - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=cut - -1; - -# eof diff --git a/gnu/usr.bin/perl/cpan/Math-Complex/lib/Math/Trig.pm b/gnu/usr.bin/perl/cpan/Math-Complex/lib/Math/Trig.pm deleted file mode 100644 index 1d9612a41c2..00000000000 --- a/gnu/usr.bin/perl/cpan/Math-Complex/lib/Math/Trig.pm +++ /dev/null @@ -1,761 +0,0 @@ -# -# Trigonometric functions, mostly inherited from Math::Complex. -# -- Jarkko Hietaniemi, since April 1997 -# -- Raphael Manfredi, September 1996 (indirectly: because of Math::Complex) -# - -package Math::Trig; - -{ use 5.006; } -use strict; - -use Math::Complex 1.59; -use Math::Complex qw(:trig :pi); -require Exporter; - -our @ISA = qw(Exporter); - -our $VERSION = 1.23; - -my @angcnv = qw(rad2deg rad2grad - deg2rad deg2grad - grad2rad grad2deg); - -my @areal = qw(asin_real acos_real); - -our @EXPORT = (@{$Math::Complex::EXPORT_TAGS{'trig'}}, - @angcnv, @areal); - -my @rdlcnv = qw(cartesian_to_cylindrical - cartesian_to_spherical - cylindrical_to_cartesian - cylindrical_to_spherical - spherical_to_cartesian - spherical_to_cylindrical); - -my @greatcircle = qw( - great_circle_distance - great_circle_direction - great_circle_bearing - great_circle_waypoint - great_circle_midpoint - great_circle_destination - ); - -my @pi = qw(pi pi2 pi4 pip2 pip4); - -our @EXPORT_OK = (@rdlcnv, @greatcircle, @pi, 'Inf'); - -# See e.g. the following pages: -# http://www.movable-type.co.uk/scripts/LatLong.html -# http://williams.best.vwh.net/avform.htm - -our %EXPORT_TAGS = ('radial' => [ @rdlcnv ], - 'great_circle' => [ @greatcircle ], - 'pi' => [ @pi ]); - -sub _DR () { pi2/360 } -sub _RD () { 360/pi2 } -sub _DG () { 400/360 } -sub _GD () { 360/400 } -sub _RG () { 400/pi2 } -sub _GR () { pi2/400 } - -# -# Truncating remainder. -# - -sub _remt ($$) { - # Oh yes, POSIX::fmod() would be faster. Possibly. If it is available. - $_[0] - $_[1] * int($_[0] / $_[1]); -} - -# -# Angle conversions. -# - -sub rad2rad($) { _remt($_[0], pi2) } - -sub deg2deg($) { _remt($_[0], 360) } - -sub grad2grad($) { _remt($_[0], 400) } - -sub rad2deg ($;$) { my $d = _RD * $_[0]; $_[1] ? $d : deg2deg($d) } - -sub deg2rad ($;$) { my $d = _DR * $_[0]; $_[1] ? $d : rad2rad($d) } - -sub grad2deg ($;$) { my $d = _GD * $_[0]; $_[1] ? $d : deg2deg($d) } - -sub deg2grad ($;$) { my $d = _DG * $_[0]; $_[1] ? $d : grad2grad($d) } - -sub rad2grad ($;$) { my $d = _RG * $_[0]; $_[1] ? $d : grad2grad($d) } - -sub grad2rad ($;$) { my $d = _GR * $_[0]; $_[1] ? $d : rad2rad($d) } - -# -# acos and asin functions which always return a real number -# - -sub acos_real { - return 0 if $_[0] >= 1; - return pi if $_[0] <= -1; - return acos($_[0]); -} - -sub asin_real { - return &pip2 if $_[0] >= 1; - return -&pip2 if $_[0] <= -1; - return asin($_[0]); -} - -sub cartesian_to_spherical { - my ( $x, $y, $z ) = @_; - - my $rho = sqrt( $x * $x + $y * $y + $z * $z ); - - return ( $rho, - atan2( $y, $x ), - $rho ? acos_real( $z / $rho ) : 0 ); -} - -sub spherical_to_cartesian { - my ( $rho, $theta, $phi ) = @_; - - return ( $rho * cos( $theta ) * sin( $phi ), - $rho * sin( $theta ) * sin( $phi ), - $rho * cos( $phi ) ); -} - -sub spherical_to_cylindrical { - my ( $x, $y, $z ) = spherical_to_cartesian( @_ ); - - return ( sqrt( $x * $x + $y * $y ), $_[1], $z ); -} - -sub cartesian_to_cylindrical { - my ( $x, $y, $z ) = @_; - - return ( sqrt( $x * $x + $y * $y ), atan2( $y, $x ), $z ); -} - -sub cylindrical_to_cartesian { - my ( $rho, $theta, $z ) = @_; - - return ( $rho * cos( $theta ), $rho * sin( $theta ), $z ); -} - -sub cylindrical_to_spherical { - return ( cartesian_to_spherical( cylindrical_to_cartesian( @_ ) ) ); -} - -sub great_circle_distance { - my ( $theta0, $phi0, $theta1, $phi1, $rho ) = @_; - - $rho = 1 unless defined $rho; # Default to the unit sphere. - - my $lat0 = pip2 - $phi0; - my $lat1 = pip2 - $phi1; - - return $rho * - acos_real( cos( $lat0 ) * cos( $lat1 ) * cos( $theta0 - $theta1 ) + - sin( $lat0 ) * sin( $lat1 ) ); -} - -sub great_circle_direction { - my ( $theta0, $phi0, $theta1, $phi1 ) = @_; - - my $lat0 = pip2 - $phi0; - my $lat1 = pip2 - $phi1; - - return rad2rad(pi2 - - atan2(sin($theta0-$theta1) * cos($lat1), - cos($lat0) * sin($lat1) - - sin($lat0) * cos($lat1) * cos($theta0-$theta1))); -} - -*great_circle_bearing = \&great_circle_direction; - -sub great_circle_waypoint { - my ( $theta0, $phi0, $theta1, $phi1, $point ) = @_; - - $point = 0.5 unless defined $point; - - my $d = great_circle_distance( $theta0, $phi0, $theta1, $phi1 ); - - return undef if $d == pi; - - my $sd = sin($d); - - return ($theta0, $phi0) if $sd == 0; - - my $A = sin((1 - $point) * $d) / $sd; - my $B = sin( $point * $d) / $sd; - - my $lat0 = pip2 - $phi0; - my $lat1 = pip2 - $phi1; - - my $x = $A * cos($lat0) * cos($theta0) + $B * cos($lat1) * cos($theta1); - my $y = $A * cos($lat0) * sin($theta0) + $B * cos($lat1) * sin($theta1); - my $z = $A * sin($lat0) + $B * sin($lat1); - - my $theta = atan2($y, $x); - my $phi = acos_real($z); - - return ($theta, $phi); -} - -sub great_circle_midpoint { - great_circle_waypoint(@_[0..3], 0.5); -} - -sub great_circle_destination { - my ( $theta0, $phi0, $dir0, $dst ) = @_; - - my $lat0 = pip2 - $phi0; - - my $phi1 = asin_real(sin($lat0)*cos($dst) + - cos($lat0)*sin($dst)*cos($dir0)); - - my $theta1 = $theta0 + atan2(sin($dir0)*sin($dst)*cos($lat0), - cos($dst)-sin($lat0)*sin($phi1)); - - my $dir1 = great_circle_bearing($theta1, $phi1, $theta0, $phi0) + pi; - - $dir1 -= pi2 if $dir1 > pi2; - - return ($theta1, $phi1, $dir1); -} - -1; - -__END__ -=pod - -=head1 NAME - -Math::Trig - trigonometric functions - -=head1 SYNOPSIS - - use Math::Trig; - - $x = tan(0.9); - $y = acos(3.7); - $z = asin(2.4); - - $halfpi = pi/2; - - $rad = deg2rad(120); - - # Import constants pi2, pip2, pip4 (2*pi, pi/2, pi/4). - use Math::Trig ':pi'; - - # Import the conversions between cartesian/spherical/cylindrical. - use Math::Trig ':radial'; - - # Import the great circle formulas. - use Math::Trig ':great_circle'; - -=head1 DESCRIPTION - -C defines many trigonometric functions not defined by the -core Perl which defines only the C and C. The constant -B is also defined as are a few convenience functions for angle -conversions, and I for spherical movement. - -=head1 TRIGONOMETRIC FUNCTIONS - -The tangent - -=over 4 - -=item B - -=back - -The cofunctions of the sine, cosine, and tangent (cosec/csc and cotan/cot -are aliases) - -B, B, B, B, B, B - -The arcus (also known as the inverse) functions of the sine, cosine, -and tangent - -B, B, B - -The principal value of the arc tangent of y/x - -B(y, x) - -The arcus cofunctions of the sine, cosine, and tangent (acosec/acsc -and acotan/acot are aliases). Note that atan2(0, 0) is not well-defined. - -B, B, B, B, B - -The hyperbolic sine, cosine, and tangent - -B, B, B - -The cofunctions of the hyperbolic sine, cosine, and tangent (cosech/csch -and cotanh/coth are aliases) - -B, B, B, B, B - -The area (also known as the inverse) functions of the hyperbolic -sine, cosine, and tangent - -B, B, B - -The area cofunctions of the hyperbolic sine, cosine, and tangent -(acsch/acosech and acoth/acotanh are aliases) - -B, B, B, B, B - -The trigonometric constant B and some of handy multiples -of it are also defined. - -B - -=head2 ERRORS DUE TO DIVISION BY ZERO - -The following functions - - acoth - acsc - acsch - asec - asech - atanh - cot - coth - csc - csch - sec - sech - tan - tanh - -cannot be computed for all arguments because that would mean dividing -by zero or taking logarithm of zero. These situations cause fatal -runtime errors looking like this - - cot(0): Division by zero. - (Because in the definition of cot(0), the divisor sin(0) is 0) - Died at ... - -or - - atanh(-1): Logarithm of zero. - Died at... - -For the C, C, C, C, C, C, C, -C, C, the argument cannot be C<0> (zero). For the -C, C, the argument cannot be C<1> (one). For the -C, C, the argument cannot be C<-1> (minus one). For the -C, C, C, C, the argument cannot be I, where I is any integer. - -Note that atan2(0, 0) is not well-defined. - -=head2 SIMPLE (REAL) ARGUMENTS, COMPLEX RESULTS - -Please note that some of the trigonometric functions can break out -from the B into the B. For example -C has no definition for plain real numbers but it has -definition for complex numbers. - -In Perl terms this means that supplying the usual Perl numbers (also -known as scalars, please see L) as input for the -trigonometric functions might produce as output results that no more -are simple real numbers: instead they are complex numbers. - -The C handles this by using the C package -which knows how to handle complex numbers, please see L -for more information. In practice you need not to worry about getting -complex numbers as results because the C takes care of -details like for example how to display complex numbers. For example: - - print asin(2), "\n"; - -should produce something like this (take or leave few last decimals): - - 1.5707963267949-1.31695789692482i - -That is, a complex number with the real part of approximately C<1.571> -and the imaginary part of approximately C<-1.317>. - -=head1 PLANE ANGLE CONVERSIONS - -(Plane, 2-dimensional) angles may be converted with the following functions. - -=over - -=item deg2rad - - $radians = deg2rad($degrees); - -=item grad2rad - - $radians = grad2rad($gradians); - -=item rad2deg - - $degrees = rad2deg($radians); - -=item grad2deg - - $degrees = grad2deg($gradians); - -=item deg2grad - - $gradians = deg2grad($degrees); - -=item rad2grad - - $gradians = rad2grad($radians); - -=back - -The full circle is 2 I radians or I<360> degrees or I<400> gradians. -The result is by default wrapped to be inside the [0, {2pi,360,400}[ circle. -If you don't want this, supply a true second argument: - - $zillions_of_radians = deg2rad($zillions_of_degrees, 1); - $negative_degrees = rad2deg($negative_radians, 1); - -You can also do the wrapping explicitly by rad2rad(), deg2deg(), and -grad2grad(). - -=over 4 - -=item rad2rad - - $radians_wrapped_by_2pi = rad2rad($radians); - -=item deg2deg - - $degrees_wrapped_by_360 = deg2deg($degrees); - -=item grad2grad - - $gradians_wrapped_by_400 = grad2grad($gradians); - -=back - -=head1 RADIAL COORDINATE CONVERSIONS - -B are the B and the B -systems, explained shortly in more detail. - -You can import radial coordinate conversion functions by using the -C<:radial> tag: - - use Math::Trig ':radial'; - - ($rho, $theta, $z) = cartesian_to_cylindrical($x, $y, $z); - ($rho, $theta, $phi) = cartesian_to_spherical($x, $y, $z); - ($x, $y, $z) = cylindrical_to_cartesian($rho, $theta, $z); - ($rho_s, $theta, $phi) = cylindrical_to_spherical($rho_c, $theta, $z); - ($x, $y, $z) = spherical_to_cartesian($rho, $theta, $phi); - ($rho_c, $theta, $z) = spherical_to_cylindrical($rho_s, $theta, $phi); - -B. - -=head2 COORDINATE SYSTEMS - -B coordinates are the usual rectangular I<(x, y, z)>-coordinates. - -Spherical coordinates, I<(rho, theta, pi)>, are three-dimensional -coordinates which define a point in three-dimensional space. They are -based on a sphere surface. The radius of the sphere is B, also -known as the I coordinate. The angle in the I-plane -(around the I-axis) is B, also known as the I -coordinate. The angle from the I-axis is B, also known as the -I coordinate. The North Pole is therefore I<0, 0, rho>, and -the Gulf of Guinea (think of the missing big chunk of Africa) I<0, -pi/2, rho>. In geographical terms I is latitude (northward -positive, southward negative) and I is longitude (eastward -positive, westward negative). - -B: some texts define I and I the other way round, -some texts define the I to start from the horizontal plane, some -texts use I in place of I. - -Cylindrical coordinates, I<(rho, theta, z)>, are three-dimensional -coordinates which define a point in three-dimensional space. They are -based on a cylinder surface. The radius of the cylinder is B, -also known as the I coordinate. The angle in the I-plane -(around the I-axis) is B, also known as the I -coordinate. The third coordinate is the I, pointing up from the -B-plane. - -=head2 3-D ANGLE CONVERSIONS - -Conversions to and from spherical and cylindrical coordinates are -available. Please notice that the conversions are not necessarily -reversible because of the equalities like I angles being equal to -I<-pi> angles. - -=over 4 - -=item cartesian_to_cylindrical - - ($rho, $theta, $z) = cartesian_to_cylindrical($x, $y, $z); - -=item cartesian_to_spherical - - ($rho, $theta, $phi) = cartesian_to_spherical($x, $y, $z); - -=item cylindrical_to_cartesian - - ($x, $y, $z) = cylindrical_to_cartesian($rho, $theta, $z); - -=item cylindrical_to_spherical - - ($rho_s, $theta, $phi) = cylindrical_to_spherical($rho_c, $theta, $z); - -Notice that when C<$z> is not 0 C<$rho_s> is not equal to C<$rho_c>. - -=item spherical_to_cartesian - - ($x, $y, $z) = spherical_to_cartesian($rho, $theta, $phi); - -=item spherical_to_cylindrical - - ($rho_c, $theta, $z) = spherical_to_cylindrical($rho_s, $theta, $phi); - -Notice that when C<$z> is not 0 C<$rho_c> is not equal to C<$rho_s>. - -=back - -=head1 GREAT CIRCLE DISTANCES AND DIRECTIONS - -A great circle is section of a circle that contains the circle -diameter: the shortest distance between two (non-antipodal) points on -the spherical surface goes along the great circle connecting those two -points. - -=head2 great_circle_distance - -You can compute spherical distances, called B, -by importing the great_circle_distance() function: - - use Math::Trig 'great_circle_distance'; - - $distance = great_circle_distance($theta0, $phi0, $theta1, $phi1, [, $rho]); - -The I is the shortest distance between two -points on a sphere. The distance is in C<$rho> units. The C<$rho> is -optional, it defaults to 1 (the unit sphere), therefore the distance -defaults to radians. - -If you think geographically the I are longitudes: zero at the -Greenwhich meridian, eastward positive, westward negative -- and the -I are latitudes: zero at the North Pole, northward positive, -southward negative. B: this formula thinks in mathematics, not -geographically: the I zero is at the North Pole, not at the -Equator on the west coast of Africa (Bay of Guinea). You need to -subtract your geographical coordinates from I (also known as 90 -degrees). - - $distance = great_circle_distance($lon0, pi/2 - $lat0, - $lon1, pi/2 - $lat1, $rho); - -=head2 great_circle_direction - -The direction you must follow the great circle (also known as I) -can be computed by the great_circle_direction() function: - - use Math::Trig 'great_circle_direction'; - - $direction = great_circle_direction($theta0, $phi0, $theta1, $phi1); - -=head2 great_circle_bearing - -Alias 'great_circle_bearing' for 'great_circle_direction' is also available. - - use Math::Trig 'great_circle_bearing'; - - $direction = great_circle_bearing($theta0, $phi0, $theta1, $phi1); - -The result of great_circle_direction is in radians, zero indicating -straight north, pi or -pi straight south, pi/2 straight west, and --pi/2 straight east. - -=head2 great_circle_destination - -You can inversely compute the destination if you know the -starting point, direction, and distance: - - use Math::Trig 'great_circle_destination'; - - # $diro is the original direction, - # for example from great_circle_bearing(). - # $distance is the angular distance in radians, - # for example from great_circle_distance(). - # $thetad and $phid are the destination coordinates, - # $dird is the final direction at the destination. - - ($thetad, $phid, $dird) = - great_circle_destination($theta, $phi, $diro, $distance); - -or the midpoint if you know the end points: - -=head2 great_circle_midpoint - - use Math::Trig 'great_circle_midpoint'; - - ($thetam, $phim) = - great_circle_midpoint($theta0, $phi0, $theta1, $phi1); - -The great_circle_midpoint() is just a special case of - -=head2 great_circle_waypoint - - use Math::Trig 'great_circle_waypoint'; - - ($thetai, $phii) = - great_circle_waypoint($theta0, $phi0, $theta1, $phi1, $way); - -Where the $way is a value from zero ($theta0, $phi0) to one ($theta1, -$phi1). Note that antipodal points (where their distance is I -radians) do not have waypoints between them (they would have an an -"equator" between them), and therefore C is returned for -antipodal points. If the points are the same and the distance -therefore zero and all waypoints therefore identical, the first point -(either point) is returned. - -The thetas, phis, direction, and distance in the above are all in radians. - -You can import all the great circle formulas by - - use Math::Trig ':great_circle'; - -Notice that the resulting directions might be somewhat surprising if -you are looking at a flat worldmap: in such map projections the great -circles quite often do not look like the shortest routes -- but for -example the shortest possible routes from Europe or North America to -Asia do often cross the polar regions. (The common Mercator projection -does B show great circles as straight lines: straight lines in the -Mercator projection are lines of constant bearing.) - -=head1 EXAMPLES - -To calculate the distance between London (51.3N 0.5W) and Tokyo -(35.7N 139.8E) in kilometers: - - use Math::Trig qw(great_circle_distance deg2rad); - - # Notice the 90 - latitude: phi zero is at the North Pole. - sub NESW { deg2rad($_[0]), deg2rad(90 - $_[1]) } - my @L = NESW( -0.5, 51.3); - my @T = NESW(139.8, 35.7); - my $km = great_circle_distance(@L, @T, 6378); # About 9600 km. - -The direction you would have to go from London to Tokyo (in radians, -straight north being zero, straight east being pi/2). - - use Math::Trig qw(great_circle_direction); - - my $rad = great_circle_direction(@L, @T); # About 0.547 or 0.174 pi. - -The midpoint between London and Tokyo being - - use Math::Trig qw(great_circle_midpoint); - - my @M = great_circle_midpoint(@L, @T); - -or about 69 N 89 E, in the frozen wastes of Siberia. - -B: you B get from A to B like this: - - Dist = great_circle_distance(A, B) - Dir = great_circle_direction(A, B) - C = great_circle_destination(A, Dist, Dir) - -and expect C to be B, because the bearing constantly changes when -going from A to B (except in some special case like the meridians or -the circles of latitudes) and in great_circle_destination() one gives -a B bearing to follow. - -=head2 CAVEAT FOR GREAT CIRCLE FORMULAS - -The answers may be off by few percentages because of the irregular -(slightly aspherical) form of the Earth. The errors are at worst -about 0.55%, but generally below 0.3%. - -=head2 Real-valued asin and acos - -For small inputs asin() and acos() may return complex numbers even -when real numbers would be enough and correct, this happens because of -floating-point inaccuracies. You can see these inaccuracies for -example by trying theses: - - print cos(1e-6)**2+sin(1e-6)**2 - 1,"\n"; - printf "%.20f", cos(1e-6)**2+sin(1e-6)**2,"\n"; - -which will print something like this - - -1.11022302462516e-16 - 0.99999999999999988898 - -even though the expected results are of course exactly zero and one. -The formulas used to compute asin() and acos() are quite sensitive to -this, and therefore they might accidentally slip into the complex -plane even when they should not. To counter this there are two -interfaces that are guaranteed to return a real-valued output. - -=over 4 - -=item asin_real - - use Math::Trig qw(asin_real); - - $real_angle = asin_real($input_sin); - -Return a real-valued arcus sine if the input is between [-1, 1], -B the endpoints. For inputs greater than one, pi/2 -is returned. For inputs less than minus one, -pi/2 is returned. - -=item acos_real - - use Math::Trig qw(acos_real); - - $real_angle = acos_real($input_cos); - -Return a real-valued arcus cosine if the input is between [-1, 1], -B the endpoints. For inputs greater than one, zero -is returned. For inputs less than minus one, pi is returned. - -=back - -=head1 BUGS - -Saying C exports many mathematical routines in the -caller environment and even overrides some (C, C). This is -construed as a feature by the Authors, actually... ;-) - -The code is not optimized for speed, especially because we use -C and thus go quite near complex numbers while doing -the computations even when the arguments are not. This, however, -cannot be completely avoided if we want things like C to give -an answer instead of giving a fatal runtime error. - -Do not attempt navigation using these formulas. - -L - -=head1 AUTHORS - -Jarkko Hietaniemi >, -Raphael Manfredi >, -Zefram - -=head1 LICENSE - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=cut - -# eof diff --git a/gnu/usr.bin/perl/cpan/Math-Complex/t/Complex.t b/gnu/usr.bin/perl/cpan/Math-Complex/t/Complex.t deleted file mode 100755 index c4fd96f8bd4..00000000000 --- a/gnu/usr.bin/perl/cpan/Math-Complex/t/Complex.t +++ /dev/null @@ -1,1160 +0,0 @@ -#!./perl - -# -# Regression tests for the Math::Complex pacakge -# -- Raphael Manfredi since Sep 1996 -# -- Jarkko Hietaniemi since Mar 1997 -# -- Daniel S. Lewart since Sep 1997 - -use strict; -use warnings; - -use Math::Complex 1.54; - -# they are used later in the test and not exported by Math::Complex -*_stringify_cartesian = \&Math::Complex::_stringify_cartesian; -*_stringify_polar = \&Math::Complex::_stringify_polar; - -our $vax_float = (pack("d",1) =~ /^[\x80\x10]\x40/); -our $has_inf = !$vax_float; - -my ($args, $op, $target, $test, $test_set, $try, $val, $zvalue, @set, @val); -my ($bad, $z); - -$test = 0; -$| = 1; -my @script = ( - 'my ($res, $s0,$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9,$s10,$z0,$z1,$z2);' . - "\n\n" -); -my $eps = 1e-13; - -if ($^O eq 'unicos') { # For some reason root() produces very inaccurate - $eps = 1e-10; # results in Cray UNICOS, and occasionally also -} # cos(), sin(), cosh(), sinh(). The division - # of doubles is the current suspect. - -$test++; -push @script, "{ my \$t=$test; ".q{ - my $a = Math::Complex->new(1); - my $b = $a; - $a += 2; - print "not " unless "$a" eq "3" && "$b" eq "1"; - print "ok $t\n"; -}."}"; - -while () { - s/^\s+//; - next if $_ eq '' || /^\#/; - chomp; - $test_set = 0; # Assume not a test over a set of values - if (/^&(.+)/) { - $op = $1; - next; - } - elsif (/^\{(.+)\}/) { - set($1, \@set, \@val); - next; - } - elsif (s/^\|//) { - $test_set = 1; # Requests we loop over the set... - } - my @args = split(/:/); - if ($test_set == 1) { - my $i; - for ($i = 0; $i < @set; $i++) { - # complex number - $target = $set[$i]; - # textual value as found in set definition - $zvalue = $val[$i]; - test($zvalue, $target, @args); - } - } else { - test($op, undef, @args); - } -} - -# - -sub test_mutators { - my $op; - - $test++; -push(@script, <<'EOT'); -{ - my $z = cplx( 1, 1); - $z->Re(2); - $z->Im(3); - print "# $test Re(z) = ",$z->Re(), " Im(z) = ", $z->Im(), " z = $z\n"; - print 'not ' unless Re($z) == 2 and Im($z) == 3; -EOT - push(@script, qq(print "ok $test\\n"}\n)); - - $test++; -push(@script, <<'EOT'); -{ - my $z = cplx( 1, 1); - $z->abs(3 * sqrt(2)); - print "# $test Re(z) = ",$z->Re(), " Im(z) = ", $z->Im(), " z = $z\n"; - print 'not ' unless (abs($z) - 3 * sqrt(2)) < $eps and - (arg($z) - pi / 4 ) < $eps and - (Re($z) - 3 ) < $eps and - (Im($z) - 3 ) < $eps; -EOT - push(@script, qq(print "ok $test\\n"}\n)); - - $test++; -push(@script, <<'EOT'); -{ - my $z = cplx( 1, 1); - $z->arg(-3 / 4 * pi); - print "# $test Re(z) = ",$z->Re(), " Im(z) = ", $z->Im(), " z = $z\n"; - print 'not ' unless (arg($z) + 3 / 4 * pi) < $eps and - (abs($z) - sqrt(2) ) < $eps and - (Re($z) + 1 ) < $eps and - (Im($z) + 1 ) < $eps; -EOT - push(@script, qq(print "ok $test\\n"}\n)); -} - -test_mutators(); - -my $constants = ' -my $i = cplx(0, 1); -my $pi = cplx(pi, 0); -my $pii = cplx(0, pi); -my $pip2 = cplx(pi/2, 0); -my $pip4 = cplx(pi/4, 0); -my $zero = cplx(0, 0); -'; - -if ($has_inf) { - $constants .= <<'EOF'; -my $inf = 9**9**9; -EOF -} - -push(@script, $constants); - - -# test the divbyzeros - -sub test_dbz { - for my $op (@_) { - $test++; - push(@script, <display_format eq 'cartesian'; - print "ok $test\n"; -EOS - - push @script, <display_format('polar'); -EOS - - $test++; - push @script, <display_format eq 'polar'; - print "ok $test\n"; -EOS - - $test++; - push @script, <display_format; -EOS - - $test++; - push @script, <display_format('style' => 'cartesian', 'format' => '%.5f'); -EOS - - $test++; - push @script, <display_format; -EOS - - $test++; - push @script, <display_format('format' => undef); -EOS - - $test++; - push @script, <display_format('style' => 'polar', 'polar_pretty_print' => 0); -EOS - - $test++; - push @script, <display_format('style' => 'polar', 'format' => "%.4g"); -EOS - - $test++; - push @script, <display_format('style' => 'cartesian', 'format' => '(%.5g)'); -EOS - - $test++; - push @script, <display_format eq 'cartesian'; - print "ok $test\n"; -EOS -} - -test_display_format(); - -sub test_remake { - $test++; - push @script, <make(2,3); - print "ok $test\n"; -EOS - - $test++; - push @script, <make('3i'); - print "not " unless \$z == cplx(0,3); - print "ok $test\n"; -EOS - - $test++; - push @script, <emake('[2,3]'); - print "not " unless \$z == cplxe(2,3); - print "ok $test\n"; -EOS - - $test++; - push @script, <make('(2,3)'); - print "not " unless \$z == cplx(2,3); - print "ok $test\n"; -EOS - - $test++; - push @script, <emake('[2,3pi/8]'); - print "not " unless \$z == cplxe(2,3*\$pi/8); - print "ok $test\n"; -EOS - - $test++; - push @script, <emake('[2]'); - print "not " unless \$z == cplxe(2); - print "ok $test\n"; -EOS -} - -sub test_no_args { - push @script, <<'EOS'; -{ - print "# cplx, cplxe, make, emake without arguments\n"; -EOS - - $test++; - push @script, <Re() == 0) ? "ok $test\n" : "not ok $test\n"); -EOS - - $test++; - push @script, <Im() == 0) ? "ok $test\n" : "not ok $test\n"); -EOS - - $test++; - push @script, <rho() == 0) ? "ok $test\n" : "not ok $test\n"); -EOS - - $test++; - push @script, <theta() == 0) ? "ok $test\n" : "not ok $test\n"); -EOS - - $test++; - push @script, <make(); - print ((\$z2->Re() == 0) ? "ok $test\n" : "not ok $test\n"); -EOS - - $test++; - push @script, <Im() == 0) ? "ok $test\n" : "not ok $test\n"); -EOS - - $test++; - push @script, <emake(); - print ((\$z3->rho() == 0) ? "ok $test\n" : "not ok $test\n"); -EOS - - $test++; - push @script, <theta() == 0) ? "ok $test\n" : "not ok $test\n"); -} -EOS -} - -sub test_atan2 { - push @script, <<'EOS'; -print "# atan2() with some real arguments\n"; -EOS - my @real = (-1, 0, 1); - for my $x (@real) { - for my $y (@real) { - next if $x == 0 && $y == 0; - $test++; - push @script, < 2 and $baop) { # binary assignment ops - $test++; - # check the op= works - push @script, <_cartesian} : (\$z0, 0)); - - my (\$z1r, \$z1i) = ref \$z1 ? \@{\$z1->_cartesian} : (\$z1, 0); - - my \$zb = cplx(\$z1r, \$z1i); - - \$za $op= \$zb; - my (\$zbr, \$zbi) = \@{\$zb->_cartesian}; - - check($test, '\$z0 $op= \$z1', \$za, \$z$#args, $args); -EOB - $test++; - # check that the rhs has not changed - push @script, qq(print "not " unless (\$zbr == \$z1r and \$zbi == \$z1i);); - push @script, qq(print "ok $test\\n";\n); - push @script, "}\n"; - } - } -} - -sub set { - my ($set, $setref, $valref) = @_; - @{$setref} = (); - @{$valref} = (); - my @set = split(/;\s*/, $set); - my @res; - my $i; - for ($i = 0; $i < @set; $i++) { - push(@{$valref}, $set[$i]); - my $val = value($set[$i]); - push @script, "\$s$i = $val;\n"; - push @{$setref}, "\$s$i"; - } -} - -sub value { - local ($_) = @_; - if (/^\s*\((.*),(.*)\)/) { - return "cplx($1,$2)"; - } - elsif (/^\s*([\-\+]?(?:\d+(\.\d+)?|\.\d+)(?:[e[\-\+]\d+])?)/) { - return "cplx($1,0)"; - } - elsif (/^\s*\[(.*),(.*)\]/) { - return "cplxe($1,$2)"; - } - elsif (/^\s*'(.*)'/) { - my $ex = $1; - $ex =~ s/\bz\b/$target/g; - $ex =~ s/\br\b/abs($target)/g; - $ex =~ s/\bt\b/arg($target)/g; - $ex =~ s/\ba\b/Re($target)/g; - $ex =~ s/\bb\b/Im($target)/g; - return $ex; - } - elsif (/^\s*"(.*)"/) { - return "\"$1\""; - } - return $_; -} - -sub check { - my ($test, $try, $got, $expected, @z) = @_; - - print "# @_\n"; - - if ("$got" eq "$expected" - || - ($expected =~ /^-?\d/ && $got == $expected) - || - (abs(Math::Complex->make($got) - Math::Complex->make($expected)) < $eps) - || - (abs($got - $expected) < $eps) - ) { - print "ok $test\n"; - } else { - print "not ok $test\n"; - my $args = (@z == 1) ? "z = $z[0]" : "z0 = $z[0], z1 = $z[1]"; - print "# '$try' expected: '$expected' got: '$got' for $args\n"; - } -} - -sub addsq { - my ($z1, $z2) = @_; - return ($z1 + i*$z2) * ($z1 - i*$z2); -} - -sub subsq { - my ($z1, $z2) = @_; - return ($z1 + $z2) * ($z1 - $z2); -} - -__END__ -&+;= -(3,4):(3,4):(6,8) -(-3,4):(3,-4):(0,0) -(3,4):-3:(0,4) -1:(4,2):(5,2) -[2,0]:[2,pi]:(0,0) - -&++ -(2,1):(3,1) - -&-;= -(2,3):(-2,-3) -[2,pi/2]:[2,-(pi)/2] -2:[2,0]:(0,0) -[3,0]:2:(1,0) -3:(4,5):(-1,-5) -(4,5):3:(1,5) -(2,1):(3,5):(-1,-4) - -&-- -(1,2):(0,2) -[2,pi]:[3,pi] - -&*;= -(0,1):(0,1):(-1,0) -(4,5):(1,0):(4,5) -[2,2*pi/3]:(1,0):[2,2*pi/3] -2:(0,1):(0,2) -(0,1):3:(0,3) -(0,1):(4,1):(-1,4) -(2,1):(4,-1):(9,2) - -&/;= -(3,4):(3,4):(1,0) -(4,-5):1:(4,-5) -1:(0,1):(0,-1) -(0,6):(0,2):(3,0) -(9,2):(4,-1):(2,1) -[4,pi]:[2,pi/2]:[2,pi/2] -[2,pi/2]:[4,pi]:[0.5,-(pi)/2] - -&**;= -(2,0):(3,0):(8,0) -(3,0):(2,0):(9,0) -(2,3):(4,0):(-119,-120) -(0,0):(1,0):(0,0) -(0,0):(2,3):(0,0) -(1,0):(0,0):(1,0) -(1,0):(1,0):(1,0) -(1,0):(2,3):(1,0) -(2,3):(0,0):(1,0) -(2,3):(1,0):(2,3) -(0,0):(0,0):(1,0) - -&Re -(3,4):3 -(-3,4):-3 -[1,pi/2]:0 - -&Im -(3,4):4 -(3,-4):-4 -[1,pi/2]:1 - -&abs -(3,4):5 -(-3,4):5 - -&arg -[2,0]:0 -[-2,0]:pi - -&~ -(4,5):(4,-5) -(-3,4):(-3,-4) -[2,pi/2]:[2,-(pi)/2] - -&< -(3,4):(1,2):0 -(3,4):(3,2):0 -(3,4):(3,8):1 -(4,4):(5,129):1 - -&== -(3,4):(4,5):0 -(3,4):(3,5):0 -(3,4):(2,4):0 -(3,4):(3,4):1 - -&sqrt --9:(0,3) -(-100,0):(0,10) -(16,-30):(5,-3) - -&_stringify_cartesian -(-100,0):"-100" -(0,1):"i" -(4,-3):"4-3i" -(4,0):"4" -(-4,0):"-4" -(-2,4):"-2+4i" -(-2,-1):"-2-i" - -&_stringify_polar -[-1, 0]:"[1,pi]" -[1, pi/3]:"[1,pi/3]" -[6, -2*pi/3]:"[6,-2pi/3]" -[0.5, -9*pi/11]:"[0.5,-9pi/11]" -[1, 0.5]:"[1, 0.5]" - -{ (4,3); [3,2]; (-3,4); (0,2); [2,1] } - -|'z + ~z':'2*Re(z)' -|'z - ~z':'2*i*Im(z)' -|'z * ~z':'abs(z) * abs(z)' - -{ (0.5, 0); (-0.5, 0); (2,3); [3,2]; (-3,2); (0,2); 3; 1.2; (-3, 0); (-2, -1); [2,1] } - -|'(root(z, 4))[1] ** 4':'z' -|'(root(z, 5))[3] ** 5':'z' -|'(root(z, 8))[7] ** 8':'z' -|'(root(z, 8, 0)) ** 8':'z' -|'(root(z, 8, 7)) ** 8':'z' -|'abs(z)':'r' -|'acot(z)':'acotan(z)' -|'acsc(z)':'acosec(z)' -|'acsc(z)':'asin(1 / z)' -|'asec(z)':'acos(1 / z)' -|'cbrt(z)':'cbrt(r) * exp(i * t/3)' -|'cos(acos(z))':'z' -|'addsq(cos(z), sin(z))':1 -|'cos(z)':'cosh(i*z)' -|'subsq(cosh(z), sinh(z))':1 -|'cot(acot(z))':'z' -|'cot(z)':'1 / tan(z)' -|'cot(z)':'cotan(z)' -|'csc(acsc(z))':'z' -|'csc(z)':'1 / sin(z)' -|'csc(z)':'cosec(z)' -|'exp(log(z))':'z' -|'exp(z)':'exp(a) * exp(i * b)' -|'ln(z)':'log(z)' -|'log(exp(z))':'z' -|'log(z)':'log(r) + i*t' -|'log10(z)':'log(z) / log(10)' -|'logn(z, 2)':'log(z) / log(2)' -|'logn(z, 3)':'log(z) / log(3)' -|'sec(asec(z))':'z' -|'sec(z)':'1 / cos(z)' -|'sin(asin(z))':'z' -|'sin(i * z)':'i * sinh(z)' -|'sqrt(z) * sqrt(z)':'z' -|'sqrt(z)':'sqrt(r) * exp(i * t/2)' -|'tan(atan(z))':'z' -|'z**z':'exp(z * log(z))' - -{ (1,1); [1,0.5]; (-2, -1); 2; -3; (-1,0.5); (0,0.5); 0.5; (2, 0); (-1, -2) } - -|'cosh(acosh(z))':'z' -|'coth(acoth(z))':'z' -|'coth(z)':'1 / tanh(z)' -|'coth(z)':'cotanh(z)' -|'csch(acsch(z))':'z' -|'csch(z)':'1 / sinh(z)' -|'csch(z)':'cosech(z)' -|'sech(asech(z))':'z' -|'sech(z)':'1 / cosh(z)' -|'sinh(asinh(z))':'z' -|'tanh(atanh(z))':'z' - -{ (0.2,-0.4); [1,0.5]; -1.2; (-1,0.5); 0.5; (1.1, 0) } - -|'acos(cos(z)) ** 2':'z * z' -|'acosh(cosh(z)) ** 2':'z * z' -|'acoth(z)':'acotanh(z)' -|'acoth(z)':'atanh(1 / z)' -|'acsch(z)':'acosech(z)' -|'acsch(z)':'asinh(1 / z)' -|'asech(z)':'acosh(1 / z)' -|'asin(sin(z))':'z' -|'asinh(sinh(z))':'z' -|'atan(tan(z))':'z' -|'atanh(tanh(z))':'z' - -&log -(-2.0,0):( 0.69314718055995, 3.14159265358979) -(-1.0,0):( 0 , 3.14159265358979) -(-0.5,0):( -0.69314718055995, 3.14159265358979) -( 0.5,0):( -0.69314718055995, 0 ) -( 1.0,0):( 0 , 0 ) -( 2.0,0):( 0.69314718055995, 0 ) - -&log -( 2, 3):( 1.28247467873077, 0.98279372324733) -(-2, 3):( 1.28247467873077, 2.15879893034246) -(-2,-3):( 1.28247467873077, -2.15879893034246) -( 2,-3):( 1.28247467873077, -0.98279372324733) - -&sin -(-2.0,0):( -0.90929742682568, 0 ) -(-1.0,0):( -0.84147098480790, 0 ) -(-0.5,0):( -0.47942553860420, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.47942553860420, 0 ) -( 1.0,0):( 0.84147098480790, 0 ) -( 2.0,0):( 0.90929742682568, 0 ) - -&sin -( 2, 3):( 9.15449914691143, -4.16890695996656) -(-2, 3):( -9.15449914691143, -4.16890695996656) -(-2,-3):( -9.15449914691143, 4.16890695996656) -( 2,-3):( 9.15449914691143, 4.16890695996656) - -&cos -(-2.0,0):( -0.41614683654714, 0 ) -(-1.0,0):( 0.54030230586814, 0 ) -(-0.5,0):( 0.87758256189037, 0 ) -( 0.0,0):( 1 , 0 ) -( 0.5,0):( 0.87758256189037, 0 ) -( 1.0,0):( 0.54030230586814, 0 ) -( 2.0,0):( -0.41614683654714, 0 ) - -&cos -( 2, 3):( -4.18962569096881, -9.10922789375534) -(-2, 3):( -4.18962569096881, 9.10922789375534) -(-2,-3):( -4.18962569096881, -9.10922789375534) -( 2,-3):( -4.18962569096881, 9.10922789375534) - -&tan -(-2.0,0):( 2.18503986326152, 0 ) -(-1.0,0):( -1.55740772465490, 0 ) -(-0.5,0):( -0.54630248984379, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.54630248984379, 0 ) -( 1.0,0):( 1.55740772465490, 0 ) -( 2.0,0):( -2.18503986326152, 0 ) - -&tan -( 2, 3):( -0.00376402564150, 1.00323862735361) -(-2, 3):( 0.00376402564150, 1.00323862735361) -(-2,-3):( 0.00376402564150, -1.00323862735361) -( 2,-3):( -0.00376402564150, -1.00323862735361) - -&sec -(-2.0,0):( -2.40299796172238, 0 ) -(-1.0,0):( 1.85081571768093, 0 ) -(-0.5,0):( 1.13949392732455, 0 ) -( 0.0,0):( 1 , 0 ) -( 0.5,0):( 1.13949392732455, 0 ) -( 1.0,0):( 1.85081571768093, 0 ) -( 2.0,0):( -2.40299796172238, 0 ) - -&sec -( 2, 3):( -0.04167496441114, 0.09061113719624) -(-2, 3):( -0.04167496441114, -0.09061113719624) -(-2,-3):( -0.04167496441114, 0.09061113719624) -( 2,-3):( -0.04167496441114, -0.09061113719624) - -&csc -(-2.0,0):( -1.09975017029462, 0 ) -(-1.0,0):( -1.18839510577812, 0 ) -(-0.5,0):( -2.08582964293349, 0 ) -( 0.5,0):( 2.08582964293349, 0 ) -( 1.0,0):( 1.18839510577812, 0 ) -( 2.0,0):( 1.09975017029462, 0 ) - -&csc -( 2, 3):( 0.09047320975321, 0.04120098628857) -(-2, 3):( -0.09047320975321, 0.04120098628857) -(-2,-3):( -0.09047320975321, -0.04120098628857) -( 2,-3):( 0.09047320975321, -0.04120098628857) - -&cot -(-2.0,0):( 0.45765755436029, 0 ) -(-1.0,0):( -0.64209261593433, 0 ) -(-0.5,0):( -1.83048772171245, 0 ) -( 0.5,0):( 1.83048772171245, 0 ) -( 1.0,0):( 0.64209261593433, 0 ) -( 2.0,0):( -0.45765755436029, 0 ) - -&cot -( 2, 3):( -0.00373971037634, -0.99675779656936) -(-2, 3):( 0.00373971037634, -0.99675779656936) -(-2,-3):( 0.00373971037634, 0.99675779656936) -( 2,-3):( -0.00373971037634, 0.99675779656936) - -&asin -(-2.0,0):( -1.57079632679490, 1.31695789692482) -(-1.0,0):( -1.57079632679490, 0 ) -(-0.5,0):( -0.52359877559830, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.52359877559830, 0 ) -( 1.0,0):( 1.57079632679490, 0 ) -( 2.0,0):( 1.57079632679490, -1.31695789692482) - -&asin -( 2, 3):( 0.57065278432110, 1.98338702991654) -(-2, 3):( -0.57065278432110, 1.98338702991654) -(-2,-3):( -0.57065278432110, -1.98338702991654) -( 2,-3):( 0.57065278432110, -1.98338702991654) - -&acos -(-2.0,0):( 3.14159265358979, -1.31695789692482) -(-1.0,0):( 3.14159265358979, 0 ) -(-0.5,0):( 2.09439510239320, 0 ) -( 0.0,0):( 1.57079632679490, 0 ) -( 0.5,0):( 1.04719755119660, 0 ) -( 1.0,0):( 0 , 0 ) -( 2.0,0):( 0 , 1.31695789692482) - -&acos -( 2, 3):( 1.00014354247380, -1.98338702991654) -(-2, 3):( 2.14144911111600, -1.98338702991654) -(-2,-3):( 2.14144911111600, 1.98338702991654) -( 2,-3):( 1.00014354247380, 1.98338702991654) - -&atan -(-2.0,0):( -1.10714871779409, 0 ) -(-1.0,0):( -0.78539816339745, 0 ) -(-0.5,0):( -0.46364760900081, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.46364760900081, 0 ) -( 1.0,0):( 0.78539816339745, 0 ) -( 2.0,0):( 1.10714871779409, 0 ) - -&atan -( 2, 3):( 1.40992104959658, 0.22907268296854) -(-2, 3):( -1.40992104959658, 0.22907268296854) -(-2,-3):( -1.40992104959658, -0.22907268296854) -( 2,-3):( 1.40992104959658, -0.22907268296854) - -&asec -(-2.0,0):( 2.09439510239320, 0 ) -(-1.0,0):( 3.14159265358979, 0 ) -(-0.5,0):( 3.14159265358979, -1.31695789692482) -( 0.5,0):( 0 , 1.31695789692482) -( 1.0,0):( 0 , 0 ) -( 2.0,0):( 1.04719755119660, 0 ) - -&asec -( 2, 3):( 1.42041072246703, 0.23133469857397) -(-2, 3):( 1.72118193112276, 0.23133469857397) -(-2,-3):( 1.72118193112276, -0.23133469857397) -( 2,-3):( 1.42041072246703, -0.23133469857397) - -&acsc -(-2.0,0):( -0.52359877559830, 0 ) -(-1.0,0):( -1.57079632679490, 0 ) -(-0.5,0):( -1.57079632679490, 1.31695789692482) -( 0.5,0):( 1.57079632679490, -1.31695789692482) -( 1.0,0):( 1.57079632679490, 0 ) -( 2.0,0):( 0.52359877559830, 0 ) - -&acsc -( 2, 3):( 0.15038560432786, -0.23133469857397) -(-2, 3):( -0.15038560432786, -0.23133469857397) -(-2,-3):( -0.15038560432786, 0.23133469857397) -( 2,-3):( 0.15038560432786, 0.23133469857397) - -&acot -(-2.0,0):( -0.46364760900081, 0 ) -(-1.0,0):( -0.78539816339745, 0 ) -(-0.5,0):( -1.10714871779409, 0 ) -( 0.5,0):( 1.10714871779409, 0 ) -( 1.0,0):( 0.78539816339745, 0 ) -( 2.0,0):( 0.46364760900081, 0 ) - -&acot -( 2, 3):( 0.16087527719832, -0.22907268296854) -(-2, 3):( -0.16087527719832, -0.22907268296854) -(-2,-3):( -0.16087527719832, 0.22907268296854) -( 2,-3):( 0.16087527719832, 0.22907268296854) - -&sinh -(-2.0,0):( -3.62686040784702, 0 ) -(-1.0,0):( -1.17520119364380, 0 ) -(-0.5,0):( -0.52109530549375, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.52109530549375, 0 ) -( 1.0,0):( 1.17520119364380, 0 ) -( 2.0,0):( 3.62686040784702, 0 ) - -&sinh -( 2, 3):( -3.59056458998578, 0.53092108624852) -(-2, 3):( 3.59056458998578, 0.53092108624852) -(-2,-3):( 3.59056458998578, -0.53092108624852) -( 2,-3):( -3.59056458998578, -0.53092108624852) - -&cosh -(-2.0,0):( 3.76219569108363, 0 ) -(-1.0,0):( 1.54308063481524, 0 ) -(-0.5,0):( 1.12762596520638, 0 ) -( 0.0,0):( 1 , 0 ) -( 0.5,0):( 1.12762596520638, 0 ) -( 1.0,0):( 1.54308063481524, 0 ) -( 2.0,0):( 3.76219569108363, 0 ) - -&cosh -( 2, 3):( -3.72454550491532, 0.51182256998738) -(-2, 3):( -3.72454550491532, -0.51182256998738) -(-2,-3):( -3.72454550491532, 0.51182256998738) -( 2,-3):( -3.72454550491532, -0.51182256998738) - -&tanh -(-2.0,0):( -0.96402758007582, 0 ) -(-1.0,0):( -0.76159415595576, 0 ) -(-0.5,0):( -0.46211715726001, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.46211715726001, 0 ) -( 1.0,0):( 0.76159415595576, 0 ) -( 2.0,0):( 0.96402758007582, 0 ) - -&tanh -( 2, 3):( 0.96538587902213, -0.00988437503832) -(-2, 3):( -0.96538587902213, -0.00988437503832) -(-2,-3):( -0.96538587902213, 0.00988437503832) -( 2,-3):( 0.96538587902213, 0.00988437503832) - -&sech -(-2.0,0):( 0.26580222883408, 0 ) -(-1.0,0):( 0.64805427366389, 0 ) -(-0.5,0):( 0.88681888397007, 0 ) -( 0.0,0):( 1 , 0 ) -( 0.5,0):( 0.88681888397007, 0 ) -( 1.0,0):( 0.64805427366389, 0 ) -( 2.0,0):( 0.26580222883408, 0 ) - -&sech -( 2, 3):( -0.26351297515839, -0.03621163655877) -(-2, 3):( -0.26351297515839, 0.03621163655877) -(-2,-3):( -0.26351297515839, -0.03621163655877) -( 2,-3):( -0.26351297515839, 0.03621163655877) - -&csch -(-2.0,0):( -0.27572056477178, 0 ) -(-1.0,0):( -0.85091812823932, 0 ) -(-0.5,0):( -1.91903475133494, 0 ) -( 0.5,0):( 1.91903475133494, 0 ) -( 1.0,0):( 0.85091812823932, 0 ) -( 2.0,0):( 0.27572056477178, 0 ) - -&csch -( 2, 3):( -0.27254866146294, -0.04030057885689) -(-2, 3):( 0.27254866146294, -0.04030057885689) -(-2,-3):( 0.27254866146294, 0.04030057885689) -( 2,-3):( -0.27254866146294, 0.04030057885689) - -&coth -(-2.0,0):( -1.03731472072755, 0 ) -(-1.0,0):( -1.31303528549933, 0 ) -(-0.5,0):( -2.16395341373865, 0 ) -( 0.5,0):( 2.16395341373865, 0 ) -( 1.0,0):( 1.31303528549933, 0 ) -( 2.0,0):( 1.03731472072755, 0 ) - -&coth -( 2, 3):( 1.03574663776500, 0.01060478347034) -(-2, 3):( -1.03574663776500, 0.01060478347034) -(-2,-3):( -1.03574663776500, -0.01060478347034) -( 2,-3):( 1.03574663776500, -0.01060478347034) - -&asinh -(-2.0,0):( -1.44363547517881, 0 ) -(-1.0,0):( -0.88137358701954, 0 ) -(-0.5,0):( -0.48121182505960, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.48121182505960, 0 ) -( 1.0,0):( 0.88137358701954, 0 ) -( 2.0,0):( 1.44363547517881, 0 ) - -&asinh -( 2, 3):( 1.96863792579310, 0.96465850440760) -(-2, 3):( -1.96863792579310, 0.96465850440761) -(-2,-3):( -1.96863792579310, -0.96465850440761) -( 2,-3):( 1.96863792579310, -0.96465850440760) - -&acosh -(-2.0,0):( 1.31695789692482, 3.14159265358979) -(-1.0,0):( 0, 3.14159265358979) -(-0.5,0):( 0, 2.09439510239320) -( 0.0,0):( 0, 1.57079632679490) -( 0.5,0):( 0, 1.04719755119660) -( 1.0,0):( 0 , 0 ) -( 2.0,0):( 1.31695789692482, 0 ) - -&acosh -( 2, 3):( 1.98338702991654, 1.00014354247380) -(-2, 3):( 1.98338702991653, 2.14144911111600) -(-2,-3):( 1.98338702991653, -2.14144911111600) -( 2,-3):( 1.98338702991654, -1.00014354247380) - -&atanh -(-2.0,0):( -0.54930614433405, 1.57079632679490) -(-0.5,0):( -0.54930614433405, 0 ) -( 0.0,0):( 0 , 0 ) -( 0.5,0):( 0.54930614433405, 0 ) -( 2.0,0):( 0.54930614433405, 1.57079632679490) - -&atanh -( 2, 3):( 0.14694666622553, 1.33897252229449) -(-2, 3):( -0.14694666622553, 1.33897252229449) -(-2,-3):( -0.14694666622553, -1.33897252229449) -( 2,-3):( 0.14694666622553, -1.33897252229449) - -&asech -(-2.0,0):( 0 , 2.09439510239320) -(-1.0,0):( 0 , 3.14159265358979) -(-0.5,0):( 1.31695789692482, 3.14159265358979) -( 0.5,0):( 1.31695789692482, 0 ) -( 1.0,0):( 0 , 0 ) -( 2.0,0):( 0 , 1.04719755119660) - -&asech -( 2, 3):( 0.23133469857397, -1.42041072246703) -(-2, 3):( 0.23133469857397, -1.72118193112276) -(-2,-3):( 0.23133469857397, 1.72118193112276) -( 2,-3):( 0.23133469857397, 1.42041072246703) - -&acsch -(-2.0,0):( -0.48121182505960, 0 ) -(-1.0,0):( -0.88137358701954, 0 ) -(-0.5,0):( -1.44363547517881, 0 ) -( 0.5,0):( 1.44363547517881, 0 ) -( 1.0,0):( 0.88137358701954, 0 ) -( 2.0,0):( 0.48121182505960, 0 ) - -&acsch -( 2, 3):( 0.15735549884499, -0.22996290237721) -(-2, 3):( -0.15735549884499, -0.22996290237721) -(-2,-3):( -0.15735549884499, 0.22996290237721) -( 2,-3):( 0.15735549884499, 0.22996290237721) - -&acoth -(-2.0,0):( -0.54930614433405, 0 ) -(-0.5,0):( -0.54930614433405, 1.57079632679490) -( 0.5,0):( 0.54930614433405, 1.57079632679490) -( 2.0,0):( 0.54930614433405, 0 ) - -&acoth -( 2, 3):( 0.14694666622553, -0.23182380450040) -(-2, 3):( -0.14694666622553, -0.23182380450040) -(-2,-3):( -0.14694666622553, 0.23182380450040) -( 2,-3):( 0.14694666622553, 0.23182380450040) - -# eof diff --git a/gnu/usr.bin/perl/cpan/Math-Complex/t/Trig.t b/gnu/usr.bin/perl/cpan/Math-Complex/t/Trig.t deleted file mode 100755 index a9a12556b65..00000000000 --- a/gnu/usr.bin/perl/cpan/Math-Complex/t/Trig.t +++ /dev/null @@ -1,387 +0,0 @@ -#!./perl - -# -# Regression tests for the Math::Trig package -# -# The tests here are quite modest as the Math::Complex tests exercise -# these interfaces quite vigorously. -# -# -- Jarkko Hietaniemi, April 1997 - -use strict; -use warnings; -use Test::More tests => 153; - -use Math::Trig 1.18; -use Math::Trig 1.18 qw(:pi Inf); - -our $vax_float = (pack("d",1) =~ /^[\x80\x10]\x40/); -our $has_inf = !$vax_float; - -my $pip2 = pi / 2; - -use strict; - -our($x, $y, $z); - -my $eps = 1e-11; - -if ($^O eq 'unicos') { # See lib/Math/Complex.pm and t/lib/complex.t. - $eps = 1e-10; -} - -sub near { - my $e = defined $_[2] ? $_[2] : $eps; - my $d = $_[1] ? abs($_[0]/$_[1] - 1) : abs($_[0]); - print "# near? $_[0] $_[1] : $d : $e\n"; - $_[1] ? ($d < $e) : abs($_[0]) < $e; -} - -print "# Sanity checks\n"; - -ok(near(sin(1), 0.841470984807897)); -ok(near(cos(1), 0.54030230586814)); -ok(near(tan(1), 1.5574077246549)); - -ok(near(sec(1), 1.85081571768093)); -ok(near(csc(1), 1.18839510577812)); -ok(near(cot(1), 0.642092615934331)); - -ok(near(asin(1), 1.5707963267949)); -ok(near(acos(1), 0)); -ok(near(atan(1), 0.785398163397448)); - -ok(near(asec(1), 0)); -ok(near(acsc(1), 1.5707963267949)); -ok(near(acot(1), 0.785398163397448)); - -ok(near(sinh(1), 1.1752011936438)); -ok(near(cosh(1), 1.54308063481524)); -ok(near(tanh(1), 0.761594155955765)); - -ok(near(sech(1), 0.648054273663885)); -ok(near(csch(1), 0.850918128239322)); -ok(near(coth(1), 1.31303528549933)); - -ok(near(asinh(1), 0.881373587019543)); -ok(near(acosh(1), 0)); -ok(near(atanh(0.9), 1.47221948958322)); # atanh(1.0) would be an error. - -ok(near(asech(0.9), 0.467145308103262)); -ok(near(acsch(2), 0.481211825059603)); -ok(near(acoth(2), 0.549306144334055)); - -print "# Basics\n"; - -$x = 0.9; -ok(near(tan($x), sin($x) / cos($x))); - -ok(near(sinh(2), 3.62686040784702)); - -ok(near(acsch(0.1), 2.99822295029797)); - -$x = asin(2); -is(ref $x, 'Math::Complex'); - -# avoid using Math::Complex here -$x =~ /^([^-]+)(-[^i]+)i$/; -($y, $z) = ($1, $2); -ok(near($y, 1.5707963267949)); -ok(near($z, -1.31695789692482)); - -ok(near(deg2rad(90), pi/2)); - -ok(near(rad2deg(pi), 180)); - -use Math::Trig ':radial'; - -{ - my ($r,$t,$z) = cartesian_to_cylindrical(1,1,1); - - ok(near($r, sqrt(2))); - ok(near($t, deg2rad(45))); - ok(near($z, 1)); - - ($x,$y,$z) = cylindrical_to_cartesian($r, $t, $z); - - ok(near($x, 1)); - ok(near($y, 1)); - ok(near($z, 1)); - - ($r,$t,$z) = cartesian_to_cylindrical(1,1,0); - - ok(near($r, sqrt(2))); - ok(near($t, deg2rad(45))); - ok(near($z, 0)); - - ($x,$y,$z) = cylindrical_to_cartesian($r, $t, $z); - - ok(near($x, 1)); - ok(near($y, 1)); - ok(near($z, 0)); -} - -{ - my ($r,$t,$f) = cartesian_to_spherical(1,1,1); - - ok(near($r, sqrt(3))); - ok(near($t, deg2rad(45))); - ok(near($f, atan2(sqrt(2), 1))); - - ($x,$y,$z) = spherical_to_cartesian($r, $t, $f); - - ok(near($x, 1)); - ok(near($y, 1)); - ok(near($z, 1)); - - ($r,$t,$f) = cartesian_to_spherical(1,1,0); - - ok(near($r, sqrt(2))); - ok(near($t, deg2rad(45))); - ok(near($f, deg2rad(90))); - - ($x,$y,$z) = spherical_to_cartesian($r, $t, $f); - - ok(near($x, 1)); - ok(near($y, 1)); - ok(near($z, 0)); -} - -{ - my ($r,$t,$z) = cylindrical_to_spherical(spherical_to_cylindrical(1,1,1)); - - ok(near($r, 1)); - ok(near($t, 1)); - ok(near($z, 1)); - - ($r,$t,$z) = spherical_to_cylindrical(cylindrical_to_spherical(1,1,1)); - - ok(near($r, 1)); - ok(near($t, 1)); - ok(near($z, 1)); -} - -{ - use Math::Trig 'great_circle_distance'; - - ok(near(great_circle_distance(0, 0, 0, pi/2), pi/2)); - - ok(near(great_circle_distance(0, 0, pi, pi), pi)); - - # London to Tokyo. - my @L = (deg2rad(-0.5), deg2rad(90 - 51.3)); - my @T = (deg2rad(139.8), deg2rad(90 - 35.7)); - - my $km = great_circle_distance(@L, @T, 6378); - - ok(near($km, 9605.26637021388)); -} - -{ - my $R2D = 57.295779513082320876798154814169; - - sub frac { $_[0] - int($_[0]) } - - my $lotta_radians = deg2rad(1E+20, 1); - ok(near($lotta_radians, 1E+20/$R2D)); - - my $negat_degrees = rad2deg(-1E20, 1); - ok(near($negat_degrees, -1E+20*$R2D)); - - my $posit_degrees = rad2deg(-10000, 1); - ok(near($posit_degrees, -10000*$R2D)); -} - -{ - use Math::Trig 'great_circle_direction'; - - ok(near(great_circle_direction(0, 0, 0, pi/2), pi)); - -# Retired test: Relies on atan2(0, 0), which is not portable. -# ok(near(great_circle_direction(0, 0, pi, pi), -pi()/2)); - - my @London = (deg2rad( -0.167), deg2rad(90 - 51.3)); - my @Tokyo = (deg2rad( 139.5), deg2rad(90 - 35.7)); - my @Berlin = (deg2rad ( 13.417), deg2rad(90 - 52.533)); - my @Paris = (deg2rad ( 2.333), deg2rad(90 - 48.867)); - - ok(near(rad2deg(great_circle_direction(@London, @Tokyo)), - 31.791945393073)); - - ok(near(rad2deg(great_circle_direction(@Tokyo, @London)), - 336.069766430326)); - - ok(near(rad2deg(great_circle_direction(@Berlin, @Paris)), - 246.800348034667)); - - ok(near(rad2deg(great_circle_direction(@Paris, @Berlin)), - 58.2079877553156)); - - use Math::Trig 'great_circle_bearing'; - - ok(near(rad2deg(great_circle_bearing(@Paris, @Berlin)), - 58.2079877553156)); - - use Math::Trig 'great_circle_waypoint'; - use Math::Trig 'great_circle_midpoint'; - - my ($lon, $lat); - - ($lon, $lat) = great_circle_waypoint(@London, @Tokyo, 0.0); - - ok(near($lon, $London[0])); - - ok(near($lat, $London[1])); - - ($lon, $lat) = great_circle_waypoint(@London, @Tokyo, 1.0); - - ok(near($lon, $Tokyo[0])); - - ok(near($lat, $Tokyo[1])); - - ($lon, $lat) = great_circle_waypoint(@London, @Tokyo, 0.5); - - ok(near($lon, 1.55609593577679)); # 89.16 E - - ok(near($lat, 0.36783532946162)); # 68.93 N - - ($lon, $lat) = great_circle_midpoint(@London, @Tokyo); - - ok(near($lon, 1.55609593577679)); # 89.16 E - - ok(near($lat, 0.367835329461615)); # 68.93 N - - ($lon, $lat) = great_circle_waypoint(@London, @Tokyo, 0.25); - - ok(near($lon, 0.516073562850837)); # 29.57 E - - ok(near($lat, 0.400231313403387)); # 67.07 N - - ($lon, $lat) = great_circle_waypoint(@London, @Tokyo, 0.75); - - ok(near($lon, 2.17494903805952)); # 124.62 E - - ok(near($lat, 0.617809294053591)); # 54.60 N - - use Math::Trig 'great_circle_destination'; - - my $dir1 = great_circle_direction(@London, @Tokyo); - my $dst1 = great_circle_distance(@London, @Tokyo); - - ($lon, $lat) = great_circle_destination(@London, $dir1, $dst1); - - ok(near($lon, $Tokyo[0])); - - ok(near($lat, $pip2 - $Tokyo[1])); - - my $dir2 = great_circle_direction(@Tokyo, @London); - my $dst2 = great_circle_distance(@Tokyo, @London); - - ($lon, $lat) = great_circle_destination(@Tokyo, $dir2, $dst2); - - ok(near($lon, $London[0])); - - ok(near($lat, $pip2 - $London[1])); - - my $dir3 = (great_circle_destination(@London, $dir1, $dst1))[2]; - - ok(near($dir3, 2.69379263839118)); # about 154.343 deg - - my $dir4 = (great_circle_destination(@Tokyo, $dir2, $dst2))[2]; - - ok(near($dir4, 3.6993902625701)); # about 211.959 deg - - ok(near($dst1, $dst2)); -} - -SKIP: { -# With netbsd-vax (or any vax) there is neither Inf, nor 1e40. -skip("different float range", 42) if $vax_float; -skip("no inf", 42) unless $has_inf; - -print "# Infinity\n"; - -my $BigDouble = eval '1e40'; - -# E.g. netbsd-alpha core dumps on Inf arith without this. -local $SIG{FPE} = sub { }; - -ok(Inf() > $BigDouble); # This passes in netbsd-alpha. -ok(Inf() + $BigDouble > $BigDouble); # This coredumps in netbsd-alpha. -ok(Inf() + $BigDouble == Inf()); -ok(Inf() - $BigDouble > $BigDouble); -ok(Inf() - $BigDouble == Inf()); -ok(Inf() * $BigDouble > $BigDouble); -ok(Inf() * $BigDouble == Inf()); -ok(Inf() / $BigDouble > $BigDouble); -ok(Inf() / $BigDouble == Inf()); - -ok(-Inf() < -$BigDouble); -ok(-Inf() + $BigDouble < $BigDouble); -ok(-Inf() + $BigDouble == -Inf()); -ok(-Inf() - $BigDouble < -$BigDouble); -ok(-Inf() - $BigDouble == -Inf()); -ok(-Inf() * $BigDouble < -$BigDouble); -ok(-Inf() * $BigDouble == -Inf()); -ok(-Inf() / $BigDouble < -$BigDouble); -ok(-Inf() / $BigDouble == -Inf()); - -print "# sinh/sech/cosh/csch/tanh/coth unto infinity\n"; - -ok(near(sinh(100), eval '1.3441e+43', 1e-3)); -ok(near(sech(100), eval '7.4402e-44', 1e-3)); -ok(near(cosh(100), eval '1.3441e+43', 1e-3)); -ok(near(csch(100), eval '7.4402e-44', 1e-3)); -ok(near(tanh(100), 1)); -ok(near(coth(100), 1)); - -ok(near(sinh(-100), eval '-1.3441e+43', 1e-3)); -ok(near(sech(-100), eval ' 7.4402e-44', 1e-3)); -ok(near(cosh(-100), eval ' 1.3441e+43', 1e-3)); -ok(near(csch(-100), eval '-7.4402e-44', 1e-3)); -ok(near(tanh(-100), -1)); -ok(near(coth(-100), -1)); - -cmp_ok(sinh(1e5), '==', Inf()); -cmp_ok(sech(1e5), '==', 0); -cmp_ok(cosh(1e5), '==', Inf()); -cmp_ok(csch(1e5), '==', 0); -cmp_ok(tanh(1e5), '==', 1); -cmp_ok(coth(1e5), '==', 1); - -cmp_ok(sinh(-1e5), '==', -Inf()); -cmp_ok(sech(-1e5), '==', 0); -cmp_ok(cosh(-1e5), '==', Inf()); -cmp_ok(csch(-1e5), '==', 0); -cmp_ok(tanh(-1e5), '==', -1); -cmp_ok(coth(-1e5), '==', -1); - -} - -print "# great_circle_distance with small angles\n"; - -for my $e (qw(1e-2 1e-3 1e-4 1e-5)) { - # Can't assume == 0 because of floating point fuzz, - # but let's hope for at least < $e. - cmp_ok(great_circle_distance(0, $e, 0, $e), '<', $e); -} - -print "# asin_real, acos_real\n"; - -is(acos_real(-2.0), pi); -is(acos_real(-1.0), pi); -is(acos_real(-0.5), acos(-0.5)); -is(acos_real( 0.0), acos( 0.0)); -is(acos_real( 0.5), acos( 0.5)); -is(acos_real( 1.0), 0); -is(acos_real( 2.0), 0); - -is(asin_real(-2.0), -&pip2); -is(asin_real(-1.0), -&pip2); -is(asin_real(-0.5), asin(-0.5)); -is(asin_real( 0.0), asin( 0.0)); -is(asin_real( 0.5), asin( 0.5)); -is(asin_real( 1.0), pip2); -is(asin_real( 2.0), pip2); - -# eof diff --git a/gnu/usr.bin/perl/cpan/Math-Complex/t/underbar.t b/gnu/usr.bin/perl/cpan/Math-Complex/t/underbar.t deleted file mode 100755 index 809e8805a05..00000000000 --- a/gnu/usr.bin/perl/cpan/Math-Complex/t/underbar.t +++ /dev/null @@ -1,28 +0,0 @@ -# -# Tests that the standard Perl 5 functions that we override -# that operate on the $_ will work correctly [perl #62412] -# - -use Test::More; - -use strict; -use warnings; - -my @f = qw(abs cos exp log sin sqrt); - -plan tests => scalar @f; - -use Math::Complex; - -my %CORE; - -for my $f (@f) { - local $_ = 0.5; - $CORE{$f} = eval "CORE::$f"; -} - -for my $f (@f) { - local $_ = 0.5; - is(eval "Math::Complex::$f", $CORE{$f}, $f); -} - diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize.pm index f4e6522d483..845e0b06952 100644 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize.pm +++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize.pm @@ -1,207 +1,120 @@ # -*- mode: perl; perl-indent-level: 2; -*- +# vim: ts=8 sw=2 sts=2 noexpandtab + # Memoize.pm # -# Transparent memoization of idempotent functions -# # Copyright 1998, 1999, 2000, 2001, 2012 M. J. Dominus. # You may copy and distribute this program under the -# same terms as Perl itself. If in doubt, -# write to mjd-perl-memoize+@plover.com for a license. - -package Memoize; -$VERSION = '1.03_01'; - -# Compile-time constants -sub SCALAR () { 0 } -sub LIST () { 1 } +# same terms as Perl itself. +use strict; use warnings; -# -# Usage memoize(functionname/ref, -# { NORMALIZER => coderef, INSTALL => name, -# LIST_CACHE => descriptor, SCALAR_CACHE => descriptor } -# +package Memoize; +our $VERSION = '1.16'; use Carp; -use Exporter; -use vars qw($DEBUG); -use Config; # Dammit. -@ISA = qw(Exporter); -@EXPORT = qw(memoize); -@EXPORT_OK = qw(unmemoize flush_cache); -use strict; +use Scalar::Util 1.11 (); # for set_prototype -my %memotable; -my %revmemotable; -my @CONTEXT_TAGS = qw(MERGE TIE MEMORY FAULT HASH); -my %IS_CACHE_TAG = map {($_ => 1)} @CONTEXT_TAGS; +BEGIN { require Exporter; *import = \&Exporter::import } +our @EXPORT = qw(memoize); +our @EXPORT_OK = qw(unmemoize flush_cache); -# Raise an error if the user tries to specify one of thesepackage as a -# tie for LIST_CACHE +my %memotable; -my %scalar_only = map {($_ => 1)} qw(DB_File GDBM_File SDBM_File ODBM_File NDBM_File); +sub CLONE { + my @info = values %memotable; + %memotable = map +($_->{WRAPPER} => $_), @info; +} sub memoize { my $fn = shift; my %options = @_; - my $options = \%options; - + unless (defined($fn) && (ref $fn eq 'CODE' || ref $fn eq '')) { croak "Usage: memoize 'functionname'|coderef {OPTIONS}"; } my $uppack = caller; # TCL me Elmo! - my $cref; # Code reference to original function my $name = (ref $fn ? undef : $fn); - - # Convert function names to code references - $cref = &_make_cref($fn, $uppack); - - # Locate function prototype, if any - my $proto = prototype $cref; - if (defined $proto) { $proto = "($proto)" } - else { $proto = "" } - - # I would like to get rid of the eval, but there seems not to be any - # other way to set the prototype properly. The switch here for - # 'usethreads' works around a bug in threadperl having to do with - # magic goto. It would be better to fix the bug and use the magic - # goto version everywhere. - my $wrapper = - $Config{usethreads} - ? eval "sub $proto { &_memoizer(\$cref, \@_); }" - : eval "sub $proto { unshift \@_, \$cref; goto &_memoizer; }"; + my $cref = _make_cref($fn, $uppack); my $normalizer = $options{NORMALIZER}; if (defined $normalizer && ! ref $normalizer) { $normalizer = _make_cref($normalizer, $uppack); } - - my $install_name; - if (defined $options->{INSTALL}) { - # INSTALL => name - $install_name = $options->{INSTALL}; - } elsif (! exists $options->{INSTALL}) { - # No INSTALL option provided; use original name if possible - $install_name = $name; - } else { - # INSTALL => undef means don't install - } + + my $install_name = exists $options{INSTALL} + ? $options{INSTALL} # use given name (or, if undef: do not install) + : $name; # no INSTALL option provided: default to original name if possible if (defined $install_name) { $install_name = $uppack . '::' . $install_name unless $install_name =~ /::/; - no strict; - local($^W) = 0; # ``Subroutine $install_name redefined at ...'' - *{$install_name} = $wrapper; # Install memoized version } - $revmemotable{$wrapper} = "" . $cref; # Turn code ref into hash key + # convert LIST_CACHE => MERGE to SCALAR_CACHE => MERGE + # to ensure TIE/HASH will always be checked by _check_suitable + if (($options{LIST_CACHE} || '') eq 'MERGE') { + $options{LIST_CACHE} = $options{SCALAR_CACHE}; + $options{SCALAR_CACHE} = 'MERGE'; + } # These will be the caches my %caches; - for my $context (qw(SCALAR LIST)) { - # suppress subsequent 'uninitialized value' warnings - $options{"${context}_CACHE"} ||= ''; - - my $cache_opt = $options{"${context}_CACHE"}; - my @cache_opt_args; - if (ref $cache_opt) { - @cache_opt_args = @$cache_opt; - $cache_opt = shift @cache_opt_args; - } + for my $context (qw(LIST SCALAR)) { # SCALAR_CACHE must be last, to process MERGE + my $fullopt = $options{"${context}_CACHE"} ||= 'MEMORY'; + my ($cache_opt, @cache_opt_args) = ref $fullopt ? @$fullopt : $fullopt; if ($cache_opt eq 'FAULT') { # no cache $caches{$context} = undef; } elsif ($cache_opt eq 'HASH') { # user-supplied hash my $cache = $cache_opt_args[0]; - my $package = ref(tied %$cache); - if ($context eq 'LIST' && $scalar_only{$package}) { - croak("You can't use $package for LIST_CACHE because it can only store scalars"); - } + _check_suitable($context, ref tied %$cache); $caches{$context} = $cache; - } elsif ($cache_opt eq '' || $IS_CACHE_TAG{$cache_opt}) { - # default is that we make up an in-memory hash + } elsif ($cache_opt eq 'TIE') { + carp("TIE option to memoize() is deprecated; use HASH instead") + if warnings::enabled('all'); + my $module = shift(@cache_opt_args) || ''; + _check_suitable($context, $module); + my $hash = $caches{$context} = {}; + (my $modulefile = $module . '.pm') =~ s{::}{/}g; + require $modulefile; + tie(%$hash, $module, @cache_opt_args) + or croak "Couldn't tie memoize hash to `$module': $!"; + } elsif ($cache_opt eq 'MEMORY') { $caches{$context} = {}; - # (this might get tied later, or MERGEd away) + } elsif ($cache_opt eq 'MERGE' and not ref $fullopt) { # ['MERGE'] was never supported + die "cannot MERGE $context\_CACHE" if $context ne 'SCALAR'; # should never happen + die 'bad cache setup order' if not exists $caches{LIST}; # should never happen + $options{MERGED} = 1; + $caches{SCALAR} = $caches{LIST}; } else { - croak "Unrecognized option to `${context}_CACHE': `$cache_opt' should be one of (@CONTEXT_TAGS); aborting"; + croak "Unrecognized option to `${context}_CACHE': `$cache_opt' should be one of (MERGE TIE MEMORY FAULT HASH)"; } } - # Perhaps I should check here that you didn't supply *both* merge - # options. But if you did, it does do something reasonable: They - # both get merged to the same in-memory hash. - if ($options{SCALAR_CACHE} eq 'MERGE' || $options{LIST_CACHE} eq 'MERGE') { - $options{MERGED} = 1; - $caches{SCALAR} = $caches{LIST}; - } + my $wrapper = _wrap($install_name, $cref, $normalizer, $options{MERGED}, \%caches); - # Now deal with the TIE options - { - my $context; - foreach $context (qw(SCALAR LIST)) { - # If the relevant option wasn't `TIE', this call does nothing. - _my_tie($context, $caches{$context}, $options); # Croaks on failure - } + if (defined $install_name) { + no strict; + no warnings 'redefine'; + *{$install_name} = $wrapper; } - - # We should put some more stuff in here eventually. - # We've been saying that for serveral versions now. - # And you know what? More stuff keeps going in! - $memotable{$cref} = - { - O => $options, # Short keys here for things we need to access frequently - N => $normalizer, + + $memotable{$wrapper} = { + L => $caches{LIST}, + S => $caches{SCALAR}, U => $cref, - MEMOIZED => $wrapper, - PACKAGE => $uppack, NAME => $install_name, - S => $caches{SCALAR}, - L => $caches{LIST}, + WRAPPER => $wrapper, }; $wrapper # Return just memoized version } -# This function tries to load a tied hash class and tie the hash to it. -sub _my_tie { - my ($context, $hash, $options) = @_; - my $fullopt = $options->{"${context}_CACHE"}; - - # We already checked to make sure that this works. - my $shortopt = (ref $fullopt) ? $fullopt->[0] : $fullopt; - - return unless defined $shortopt && $shortopt eq 'TIE'; - carp("TIE option to memoize() is deprecated; use HASH instead") - if $^W; - - my @args = ref $fullopt ? @$fullopt : (); - shift @args; - my $module = shift @args; - if ($context eq 'LIST' && $scalar_only{$module}) { - croak("You can't use $module for LIST_CACHE because it can only store scalars"); - } - my $modulefile = $module . '.pm'; - $modulefile =~ s{::}{/}g; - eval { - local @INC = @INC; - pop @INC if $INC[-1] eq '.'; - require $modulefile - }; - if ($@) { - croak "Memoize: Couldn't load hash tie module `$module': $@; aborting"; - } - my $rc = (tie %$hash => $module, @args); - unless ($rc) { - croak "Memoize: Couldn't tie hash to `$module': $!; aborting"; - } - 1; -} - sub flush_cache { my $func = _make_cref($_[0], scalar caller); - my $info = $memotable{$revmemotable{$func}}; + my $info = $memotable{$func}; die "$func not memoized" unless defined $info; for my $context (qw(S L)) { my $cache = $info->{$context}; @@ -216,58 +129,39 @@ sub flush_cache { } } -# This is the function that manages the memo tables. -sub _memoizer { - my $orig = shift; # stringized version of ref to original func. - my $info = $memotable{$orig}; - my $normalizer = $info->{N}; - - my $argstr; - my $context = (wantarray() ? LIST : SCALAR); - - if (defined $normalizer) { - no strict; - if ($context == SCALAR) { - $argstr = &{$normalizer}(@_); - } elsif ($context == LIST) { - ($argstr) = &{$normalizer}(@_); - } else { - croak "Internal error \#41; context was neither LIST nor SCALAR\n"; - } - } else { # Default normalizer - local $^W = 0; - $argstr = join chr(28),@_; - } - - if ($context == SCALAR) { - my $cache = $info->{S}; - _crap_out($info->{NAME}, 'scalar') unless $cache; - if (exists $cache->{$argstr}) { - return $info->{O}{MERGED} - ? $cache->{$argstr}[0] : $cache->{$argstr}; - } else { - my $val = &{$info->{U}}(@_); - # Scalars are considered to be lists; store appropriately - if ($info->{O}{MERGED}) { - $cache->{$argstr} = [$val]; - } else { - $cache->{$argstr} = $val; - } - $val; - } - } elsif ($context == LIST) { - my $cache = $info->{L}; - _crap_out($info->{NAME}, 'list') unless $cache; - if (exists $cache->{$argstr}) { - return @{$cache->{$argstr}}; +sub _wrap { + my ($name, $orig, $normalizer, $merged, $caches) = @_; + my ($cache_L, $cache_S) = @$caches{qw(LIST SCALAR)}; + undef $caches; # keep the pad from keeping the hash alive forever + Scalar::Util::set_prototype(sub { + my $argstr = do { + no warnings 'uninitialized'; + defined $normalizer + ? ( wantarray ? ( $normalizer->( @_ ) )[0] : $normalizer->( @_ ) ) + . '' # coerce undef to string while the warning is off + : join chr(28), @_; + }; + + if (wantarray) { + _crap_out($name, 'list') unless $cache_L; + exists $cache_L->{$argstr} ? ( + @{$cache_L->{$argstr}} + ) : do { + my @q = do { no warnings 'recursion'; &$orig }; + $cache_L->{$argstr} = \@q; + @q; + }; } else { - my @q = &{$info->{U}}(@_); - $cache->{$argstr} = \@q; - @q; + _crap_out($name, 'scalar') unless $cache_S; + exists $cache_S->{$argstr} ? ( + $merged ? $cache_S->{$argstr}[0] : $cache_S->{$argstr} + ) : do { + my $val = do { no warnings 'recursion'; &$orig }; + $cache_S->{$argstr} = $merged ? [$val] : $val; + $val; + }; } - } else { - croak "Internal error \#42; context was neither LIST nor SCALAR\n"; - } + }, prototype $orig); } sub unmemoize { @@ -275,35 +169,21 @@ sub unmemoize { my $uppack = caller; my $cref = _make_cref($f, $uppack); - unless (exists $revmemotable{$cref}) { + unless (exists $memotable{$cref}) { croak "Could not unmemoize function `$f', because it was not memoized to begin with"; } - - my $tabent = $memotable{$revmemotable{$cref}}; + + my $tabent = $memotable{$cref}; unless (defined $tabent) { croak "Could not figure out how to unmemoize function `$f'"; } my $name = $tabent->{NAME}; if (defined $name) { no strict; - local($^W) = 0; # ``Subroutine $install_name redefined at ...'' + no warnings 'redefine'; *{$name} = $tabent->{U}; # Replace with original function } - undef $memotable{$revmemotable{$cref}}; - undef $revmemotable{$cref}; - - # This removes the last reference to the (possibly tied) memo tables - # my ($old_function, $memotabs) = @{$tabent}{'U','S','L'}; - # undef $tabent; - -# # Untie the memo tables if they were tied. -# my $i; -# for $i (0,1) { -# if (tied %{$memotabs->[$i]}) { -# warn "Untying hash #$i\n"; -# untie %{$memotabs->[$i]}; -# } -# } + delete $memotable{$cref}; $tabent->{U}; } @@ -332,7 +212,7 @@ sub _make_cref { my $parent = (caller(1))[3]; # Function that called _make_cref croak "Usage: argument 1 to `$parent' must be a function name or reference.\n"; } - $DEBUG and warn "${name}($fn) => $cref in _make_cref\n"; + our $DEBUG and warn "${name}($fn) => $cref in _make_cref\n"; $cref; } @@ -345,11 +225,20 @@ sub _crap_out { } } -1; - +# Raise an error if the user tries to specify one of these packages as a +# tie for LIST_CACHE +my %scalar_only = map {($_ => 1)} qw(DB_File GDBM_File SDBM_File ODBM_File), map +($_, "Memoize::$_"), qw(AnyDBM_File NDBM_File); +sub _check_suitable { + my ($context, $package) = @_; + croak "You can't use $package for LIST_CACHE because it can only store scalars" + if $context eq 'LIST' and $scalar_only{$package}; +} +1; +__END__ +=pod =head1 NAME @@ -357,7 +246,6 @@ Memoize - Make functions faster by trading space for time =head1 SYNOPSIS - # This is the documentation for Memoize 1.03 use Memoize; memoize('slow_function'); slow_function(arguments); # Is faster than it was before @@ -384,12 +272,14 @@ Options include: =head1 DESCRIPTION -`Memoizing' a function makes it faster by trading space for time. It +I a function makes it faster by trading space for time. It does this by caching the return values of the function in a table. If you call the function again with the same arguments, C jumps in and gives you the value out of the table, instead of letting the function compute the value all over again. +=head1 EXAMPLE + Here is an extreme example. Consider the Fibonacci sequence, defined by the following function: @@ -412,14 +302,14 @@ run---fib(14) makes 1,200 extra recursive calls to itself, to compute and recompute things that it already computed. This function is a good candidate for memoization. If you memoize the -`fib' function above, it will compute fib(14) exactly once, the first +C function above, it will compute fib(14) exactly once, the first time it needs to, and then save the result in a table. Then if you ask for fib(14) again, it gives you the result out of the table. While computing fib(14), instead of computing fib(12) twice, it does it once; the second time it needs the value it gets it from the table. It doesn't compute fib(11) four times; it computes it once, getting it from the table the next three times. Instead of making 1,200 -recursive calls to `fib', it makes 15. This makes the function about +recursive calls to C, it makes 15. This makes the function about 150 times faster. You could do the memoization yourself, by rewriting the function, like @@ -446,8 +336,8 @@ This makes it easy to turn memoizing on and off. Here's an even simpler example: I wrote a simple ray tracer; the program would look in a certain direction, figure out what it was -looking at, and then convert the `color' value (typically a string -like `red') of that object to a red, green, and blue pixel value, like +looking at, and then convert the C value (typically a string +like C) of that object to a red, green, and blue pixel value, like this: for ($direction = 0; $direction < 300; $direction++) { @@ -718,7 +608,7 @@ should abort the program. The error message is one of =item C C normally means that the memoized function does not -distinguish between list and sclar context, and that return values in +distinguish between list and scalar context, and that return values in both contexts should be stored together. Both C MERGE> and C MERGE> mean the same thing. @@ -740,7 +630,7 @@ if C is memoized: $z = complicated(142); The first call will cache the result, say 37, in the scalar cache; the -second will cach the list C<(37)> in the list cache. The third call +second will cache the list C<(37)> in the list cache. The third call doesn't call the real C function; it gets the value 37 from the scalar cache. @@ -749,9 +639,11 @@ storing its return value is a waste of space. Specifying C MERGE> will make C use the same cache for scalar and list context return values, so that the second call uses the scalar cache that was populated by the first call. C ends up -being called only once, and both subsequent calls return C<3> from the +being called only once, and both subsequent calls return C<37> from the cache, regardless of the calling context. +=back + =head3 List values in scalar context Consider this function: @@ -783,7 +675,8 @@ stored in the same disk file; this saves you from having to deal with two disk files instead of one. You can use a normalizer function to keep the two sets of return values separate. For example: - tie my %cache => 'MLDBM', 'DB_File', $filename, ...; + local $MLDBM::UseDB = 'DB_File'; + tie my %cache => 'MLDBM', $filename, ...; memoize 'myfunc', NORMALIZER => 'n', @@ -801,8 +694,6 @@ This normalizer function will store scalar context return values in the disk file under keys that begin with C, and list context return values under keys that begin with C. -=back - =head1 OTHER FACILITIES =head2 C @@ -877,7 +768,7 @@ Do not memoize a function with side effects. } This function accepts two arguments, adds them, and prints their sum. -Its return value is the numuber of characters it printed, but you +Its return value is the number of characters it printed, but you probably didn't care about that. But C doesn't understand that. If you memoize this function, you will get the result you expect the first time you ask it to print the sum of 2 and 3, but @@ -984,8 +875,8 @@ function (or when your program exits): tie my %cache => 'Memoize::Storable', $filename, 'nstore'; memoize 'function', SCALAR_CACHE => [HASH => \%cache]; -Include the `nstore' option to have the C database written -in `network order'. (See L for more details about this.) +Include the C option to have the C database written +in I. (See L for more details about this.) The C function will raise a run-time error unless the tied package provides a C method. @@ -1016,38 +907,17 @@ C (C called with no arguments) will not be memoized. If this is a big problem, you can supply a normalizer function that prepends C<"x"> to every key. -=head1 MAILING LIST - -To join a very low-traffic mailing list for announcements about -C, send an empty note to C. - -=head1 AUTHOR +=head1 SEE ALSO -Mark-Jason Dominus (C), Plover Systems co. - -See the C Page at http://perl.plover.com/Memoize/ -for news and upgrades. Near this page, at -http://perl.plover.com/MiniMemoize/ there is an article about +At L there is an article about memoization and about the internals of Memoize that appeared in The -Perl Journal, issue #13. (This article is also included in the -Memoize distribution as `article.html'.) +Perl Journal, issue #13. -The author's book I (2005, ISBN 1558607013, published +Mark-Jason Dominus's book I (2005, ISBN 1558607013, +published by Morgan Kaufmann) discusses memoization (and many other topics) in tremendous detail. It is available on-line for free. -For more information, visit http://hop.perl.plover.com/ . - -To join a mailing list for announcements about C, send an -empty message to C. This mailing -list is for announcements only and has extremely low traffic---fewer than -two messages per year. - -=head1 COPYRIGHT AND LICENSE - -Copyright 1998, 1999, 2000, 2001, 2012 by Mark Jason Dominus - -This library is free software; you may redistribute it and/or modify -it under the same terms as Perl itself. +For more information, visit L. =head1 THANK YOU @@ -1074,4 +944,15 @@ Special thanks to Jarkko Hietaniemi, the 5.8.0 pumpking, for including this module in the core and for his patient and helpful guidance during the integration process. +=head1 AUTHOR + +Mark Jason Dominus + +=head1 COPYRIGHT AND LICENSE + +This software is copyright (c) 2012 by Mark Jason Dominus. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + =cut diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm index cf5f7f5bc21..c0aa5e6d360 100644 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm +++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/AnyDBM_File.pm @@ -1,31 +1,37 @@ +use strict; use warnings; + package Memoize::AnyDBM_File; +our $VERSION = '1.16'; -=head1 NAME +our @ISA = qw(DB_File GDBM_File Memoize::NDBM_File SDBM_File ODBM_File) unless @ISA; -Memoize::AnyDBM_File - glue to provide EXISTS for AnyDBM_File for Storable use +for my $mod (@ISA) { + if (eval "require $mod") { + $mod = 'NDBM_File' + if $mod eq 'Memoize::NDBM_File' + and eval { NDBM_File->VERSION( '1.16' ) }; + print STDERR "AnyDBM_File => Selected $mod.\n" if our $Verbose; + @ISA = $mod; + return 1; + } +} -=head1 DESCRIPTION +die "No DBM package was successfully found or installed"; -See L. +__END__ -=cut +=pod -use vars qw(@ISA $VERSION); -$VERSION = '1.03'; -@ISA = qw(DB_File GDBM_File Memoize::NDBM_File Memoize::SDBM_File ODBM_File) unless @ISA; +=head1 NAME -my $verbose = 1; +Memoize::AnyDBM_File - glue to provide EXISTS for AnyDBM_File for Storable use -my $mod; -for $mod (@ISA) { -# (my $truemod = $mod) =~ s/^Memoize:://; -# my $file = "$mod.pm"; -# $file =~ s{::}{/}g; - if (eval "require $mod") { - print STDERR "AnyDBM_File => Selected $mod.\n" if $Verbose; - @ISA = ($mod); # if we leave @ISA alone, warnings abound - return 1; - } -} +=head1 DESCRIPTION -die "No DBM package was successfully found or installed"; +This class does the same thing as L, except that instead of +L itself it loads L if L lacks +L> support. + +Code which requires perl 5.37.3 or newer should simply use L directly. + +=cut diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm index 9b3b94444c1..0683ecd711d 100644 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm +++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Expire.pm @@ -1,23 +1,16 @@ +use strict; use warnings; package Memoize::Expire; -# require 5.00556; +our $VERSION = '1.16'; + use Carp; -$DEBUG = 0; -$VERSION = '1.03'; +our $DEBUG; -# This package will implement expiration by prepending a fixed-length header -# to the font of the cached data. The format of the header will be: +# The format of the metadata is: # (4-byte number of last-access-time) (For LRU when I implement it) # (4-byte expiration time: unsigned seconds-since-unix-epoch) # (2-byte number-of-uses-before-expire) -sub _header_fmt () { "N N n" } -sub _header_size () { length(_header_fmt) } - -# Usage: memoize func -# TIE => [Memoize::Expire, LIFETIME => sec, NUM_USES => n, -# TIE => [...] ] - BEGIN { eval {require Time::HiRes}; unless ($@) { @@ -43,7 +36,7 @@ sub TIEHASH { } $args{LIFETIME} ||= 0; $args{NUM_USES} ||= 0; - $args{C} = \%cache; + $args{C} = delete $args{HASH} || \%cache; bless \%args => $package; } @@ -54,27 +47,25 @@ sub STORE { # The call that results in a value to store into the cache is the # first of the NUM_USES allowed calls. my $header = _make_header(time, $expire_time, $self->{NUM_USES}-1); - $self->{C}{$key} = $header . $value; + @{$self->{C}}{"H$key", "V$key"} = ($header, $value); $value; } sub FETCH { $DEBUG and print STDERR " >> Fetch cached value for $_[1]\n"; - my ($data, $last_access, $expire_time, $num_uses_left) = _get_item($_[0]{C}{$_[1]}); + my ($last_access, $expire_time, $num_uses_left) = _get_header($_[0]{C}{"H$_[1]"}); $DEBUG and print STDERR " >> (ttl: ", ($expire_time-time()), ", nuses: $num_uses_left)\n"; - $num_uses_left--; - $last_access = time; - _set_header(@_, $data, $last_access, $expire_time, $num_uses_left); - $data; + $_[0]{C}{"H$_[1]"} = _make_header(time, $expire_time, --$num_uses_left); + $_[0]{C}{"V$_[1]"}; } sub EXISTS { $DEBUG and print STDERR " >> Exists $_[1]\n"; - unless (exists $_[0]{C}{$_[1]}) { + unless (exists $_[0]{C}{"V$_[1]"}) { $DEBUG and print STDERR " Not in underlying hash at all.\n"; return 0; } - my $item = $_[0]{C}{$_[1]}; + my $item = $_[0]{C}{"H$_[1]"}; my ($last_access, $expire_time, $num_uses_left) = _get_header($item); my $ttl = $expire_time - time; if ($DEBUG) { @@ -91,26 +82,21 @@ sub EXISTS { } } -# Arguments: last access time, expire time, number of uses remaining -sub _make_header { - pack "N N n", @_; +sub FIRSTKEY { + scalar keys %{$_[0]{C}}; + &NEXTKEY; } -sub _strip_header { - substr($_[0], 10); +sub NEXTKEY { + while (defined(my $key = each %{$_[0]{C}})) { + return substr $key, 1 if 'V' eq substr $key, 0, 1; + } + undef; } # Arguments: last access time, expire time, number of uses remaining -sub _set_header { - my ($self, $key, $data, @header) = @_; - $self->{C}{$key} = _make_header(@header) . $data; -} - -sub _get_item { - my $data = substr($_[0], 10); - my @header = unpack "N N n", substr($_[0], 0, 10); -# print STDERR " >> _get_item: $data => $data @header\n"; - ($data, @header); +sub _make_header { + pack "N N n", @_; } # Return last access time, expire time, number of uses remaining @@ -120,6 +106,10 @@ sub _get_header { 1; +__END__ + +=pod + =head1 NAME Memoize::Expire - Plug-in module for automatic expiration of memoized values @@ -249,7 +239,7 @@ the cache, and it should return the cache object to the caller. For example, MyExpirePolicy::TIEHASH might create an object that contains a regular Perl hash (which it will to store the cached values) and some extra information about the arguments and how old the -data is and things like that. Let us call this object `C'. +data is and things like that. Let us call this object I>. When Memoize needs to check to see if an entry is in the cache already, it will invoke C<< C->EXISTS(key) >>. C is the normalized @@ -282,7 +272,7 @@ cache item after ten seconds. $cache->{$key}{EXPIRE_TIME} > time) { return 1 } else { - return 0; # Do NOT return `undef' here. + return 0; # Do NOT return undef here } } @@ -318,11 +308,10 @@ See the documentation for details. =head1 ALTERNATIVES -Brent Powers has a C module that was designed to +Brent Powers has a L module that was designed to work with Memoize and provides expiration of least-recently-used data. The cache is held at a fixed number of entries, and when new data -comes in, the least-recently used data is expired. See -L. +comes in, the least-recently used data is expired. Joshua Chamas's Tie::Cache module may be useful as an expiration manager. (If you try this, let me know how it works out.) @@ -349,7 +338,7 @@ C installed. =head1 AUTHOR -Mark-Jason Dominus (mjd-perl-memoize+@plover.com) +Mark-Jason Dominus Mike Cariaso provided valuable insight into the best way to solve this problem. @@ -360,11 +349,4 @@ perl(1) The Memoize man page. -http://www.plover.com/~mjd/perl/Memoize/ (for news and updates) - -I maintain a mailing list on which I occasionally announce new -versions of Memoize. The list is for announcements only, not -discussion. To join, send an empty message to -mjd-perl-memoize-request@Plover.com. - =cut diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm deleted file mode 100644 index 06b72f8ef2a..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireFile.pm +++ /dev/null @@ -1,52 +0,0 @@ -package Memoize::ExpireFile; - -=head1 NAME - -Memoize::ExpireFile - test for Memoize expiration semantics - -=head1 DESCRIPTION - -See L. - -=cut - -$VERSION = '1.03'; -use Carp; - -my $Zero = pack("N", 0); - -sub TIEHASH { - my ($package, %args) = @_; - my $cache = $args{HASH} || {}; - bless {ARGS => \%args, C => $cache} => $package; -} - - -sub STORE { -# print "Expiry manager STORE handler\n"; - my ($self, $key, $data) = @_; - my $cache = $self->{C}; - my $cur_date = pack("N", (stat($key))[9]); - $cache->{"C$key"} = $data; - $cache->{"T$key"} = $cur_date; -} - -sub FETCH { - my ($self, $key) = @_; - $self->{C}{"C$key"}; -} - -sub EXISTS { -# print "Expiry manager EXISTS handler\n"; - my ($self, $key) = @_; - my $cache_date = $self->{C}{"T$key"} || $Zero; - my $file_date = pack("N", (stat($key))[9]);# -# if ($self->{ARGS}{CHECK_DATE} && $old_date gt $cur_date) { -# return $self->{ARGS}{CHECK_DATE}->($key, $old_date, $cur_date); -# } - my $res = $cache_date ge $file_date; -# print $res ? "... still good\n" : "... expired\n"; - $res; -} - -1; diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm deleted file mode 100644 index 7f7dd28af6f..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/ExpireTest.pm +++ /dev/null @@ -1,49 +0,0 @@ -package Memoize::ExpireTest; - -=head1 NAME - -Memoize::ExpireTest - test for Memoize expiration semantics - -=head1 DESCRIPTION - -This module is just for testing expiration semantics. It's not a very -good example of how to write an expiration module. - -If you are looking for an example, I recommend that you look at the -simple example in the Memoize::Expire documentation, or at the code -for Memoize::Expire itself. - -If you have questions, I will be happy to answer them if you send them -to mjd-perl-memoize+@plover.com. - -=cut - -$VERSION = '1.03'; -my %cache; - -sub TIEHASH { - my ($pack) = @_; - bless \%cache => $pack; -} - -sub EXISTS { - my ($cache, $key) = @_; - exists $cache->{$key} ? 1 : 0; -} - -sub FETCH { - my ($cache, $key) = @_; - $cache->{$key}; -} - -sub STORE { - my ($cache, $key, $val) = @_; - $cache->{$key} = $val; -} - -sub expire { - my ($key) = @_; - delete $cache{$key}; -} - -1; diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm index ff934c656bc..fc29f799866 100644 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm +++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/NDBM_File.pm @@ -1,77 +1,38 @@ -package Memoize::NDBM_File; - -=head1 NAME - -Memoize::NDBM_File - glue to provide EXISTS for NDBM_File for Storable use - -=head1 DESCRIPTION +use strict; use warnings; -See L. - -=cut +package Memoize::NDBM_File; +our $VERSION = '1.16'; use NDBM_File; -@ISA = qw(NDBM_File); -$VERSION = '1.03'; - -$Verbose = 0; +our @ISA = qw(NDBM_File); -sub AUTOLOAD { - warn "Nonexistent function $AUTOLOAD invoked in Memoize::NDBM_File\n"; -} - -sub import { - warn "Importing Memoize::NDBM_File\n" if $Verbose; +# NDBM_File cannot store undef and will store an empty string if you try +# but it does return undef if you try to read a non-existent key +# so we can emulate exists() using defined() +sub EXISTS { + defined shift->FETCH(@_); } +# Perl 5.37.3 adds this EXISTS emulation to NDBM_File itself +delete $Memoize::NDBM_File::{'EXISTS'} + if eval { NDBM_File->VERSION( '1.16' ) }; -my %keylist; - -# This is so ridiculous... -sub _backhash { - my $self = shift; - my %fakehash; - my $k; - for ($k = $self->FIRSTKEY(); defined $k; $k = $self->NEXTKEY($k)) { - $fakehash{$k} = undef; - } - $keylist{$self} = \%fakehash; -} - -sub EXISTS { - warn "Memoize::NDBM_File EXISTS (@_)\n" if $Verbose; - my $self = shift; - _backhash($self) unless exists $keylist{$self}; - my $r = exists $keylist{$self}{$_[0]}; - warn "Memoize::NDBM_File EXISTS (@_) ==> $r\n" if $Verbose; - $r; -} +1; -sub DEFINED { - warn "Memoize::NDBM_File DEFINED (@_)\n" if $Verbose; - my $self = shift; - _backhash($self) unless exists $keylist{$self}; - defined $keylist{$self}{$_[0]}; -} +__END__ -sub DESTROY { - warn "Memoize::NDBM_File DESTROY (@_)\n" if $Verbose; - my $self = shift; - delete $keylist{$self}; # So much for reference counting... - $self->SUPER::DESTROY(@_); -} +=pod -# Maybe establish the keylist at TIEHASH time instead? +=head1 NAME -sub STORE { - warn "Memoize::NDBM_File STORE (@_)\n" if $VERBOSE; - my $self = shift; - $keylist{$self}{$_[0]} = undef; - $self->SUPER::STORE(@_); -} +Memoize::NDBM_File - glue to provide EXISTS for NDBM_File for Storable use +=head1 DESCRIPTION +This class provides L> support for L. -# Inherit FETCH and TIEHASH +L, +support for C was added to L itself. +Code which requires such a perl should simply use L directly. -1; +=cut diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm index 7cfaa4afb98..87ef28e1ef0 100644 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm +++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/SDBM_File.pm @@ -1,75 +1,27 @@ -package Memoize::SDBM_File; - -=head1 NAME - -Memoize::SDBM_File - glue to provide EXISTS for SDBM_File for Storable use - -=head1 DESCRIPTION - -See L. - -=cut +use strict; use warnings; -use SDBM_File; -@ISA = qw(SDBM_File); -$VERSION = '1.03'; - -$Verbose = 0; - -sub AUTOLOAD { - warn "Nonexistent function $AUTOLOAD invoked in Memoize::SDBM_File\n"; -} - -sub import { - warn "Importing Memoize::SDBM_File\n" if $Verbose; -} +package Memoize::SDBM_File; +our $VERSION = '1.16'; +use SDBM_File 1.01; # for EXISTS support +our @ISA = qw(SDBM_File); -my %keylist; +1; -# This is so ridiculous... -sub _backhash { - my $self = shift; - my %fakehash; - my $k; - for ($k = $self->FIRSTKEY(); defined $k; $k = $self->NEXTKEY($k)) { - $fakehash{$k} = undef; - } - $keylist{$self} = \%fakehash; -} +__END__ -sub EXISTS { - warn "Memoize::SDBM_File EXISTS (@_)\n" if $Verbose; - my $self = shift; - _backhash($self) unless exists $keylist{$self}; - my $r = exists $keylist{$self}{$_[0]}; - warn "Memoize::SDBM_File EXISTS (@_) ==> $r\n" if $Verbose; - $r; -} +=pod -sub DEFINED { - warn "Memoize::SDBM_File DEFINED (@_)\n" if $Verbose; - my $self = shift; - _backhash($self) unless exists $keylist{$self}; - defined $keylist{$self}{$_[0]}; -} +=head1 NAME -sub DESTROY { - warn "Memoize::SDBM_File DESTROY (@_)\n" if $Verbose; - my $self = shift; - delete $keylist{$self}; # So much for reference counting... - $self->SUPER::DESTROY(@_); -} +Memoize::SDBM_File - DEPRECATED compability shim -# Maybe establish the keylist at TIEHASH time instead? +=head1 DESCRIPTION -sub STORE { - warn "Memoize::SDBM_File STORE (@_)\n" if $VERBOSE; - my $self = shift; - $keylist{$self}{$_[0]} = undef; - $self->SUPER::STORE(@_); -} +This class used to provide L> support for L +before support for C was added to L itself +L. -# Inherit FETCH and TIEHASH +Any code still using this class should be rewritten to use L directly. -1; +=cut diff --git a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm index 13147972972..923e57dc572 100644 --- a/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm +++ b/gnu/usr.bin/perl/cpan/Memoize/Memoize/Storable.pm @@ -1,27 +1,19 @@ -package Memoize::Storable; - -=head1 NAME - -Memoize::Storable - store Memoized data in Storable database - -=head1 DESCRIPTION +use strict; use warnings; -See L. +package Memoize::Storable; +our $VERSION = '1.16'; -=cut +use Storable 1.002 (); # for lock_* function variants -use Storable (); -$VERSION = '1.03'; -$Verbose = 0; +our $Verbose; sub TIEHASH { - require Carp if $Verbose; my $package = shift; my $filename = shift; - my $truehash = (-e $filename) ? Storable::retrieve($filename) : {}; + my $truehash = (-e $filename) ? Storable::lock_retrieve($filename) : {}; my %options; print STDERR "Memoize::Storable::TIEHASH($filename, @_)\n" if $Verbose; - @options{@_} = (); + @options{@_} = (1) x @_; my $self = {FILENAME => $filename, H => $truehash, @@ -31,34 +23,30 @@ sub TIEHASH { } sub STORE { - require Carp if $Verbose; my $self = shift; print STDERR "Memoize::Storable::STORE(@_)\n" if $Verbose; $self->{H}{$_[0]} = $_[1]; } sub FETCH { - require Carp if $Verbose; my $self = shift; print STDERR "Memoize::Storable::FETCH(@_)\n" if $Verbose; $self->{H}{$_[0]}; } sub EXISTS { - require Carp if $Verbose; my $self = shift; print STDERR "Memoize::Storable::EXISTS(@_)\n" if $Verbose; exists $self->{H}{$_[0]}; } sub DESTROY { - require Carp if $Verbose; my $self= shift; print STDERR "Memoize::Storable::DESTROY(@_)\n" if $Verbose; if ($self->{OPTIONS}{'nstore'}) { - Storable::nstore($self->{H}, $self->{FILENAME}); + Storable::lock_nstore($self->{H}, $self->{FILENAME}); } else { - Storable::store($self->{H}, $self->{FILENAME}); + Storable::lock_store($self->{H}, $self->{FILENAME}); } } @@ -69,4 +57,19 @@ sub FIRSTKEY { sub NEXTKEY { undef; } + 1; + +__END__ + +=pod + +=head1 NAME + +Memoize::Storable - store Memoized data in Storable database + +=head1 DESCRIPTION + +See L. + +=cut diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/array.t b/gnu/usr.bin/perl/cpan/Memoize/t/array.t deleted file mode 100755 index b7057ea58ab..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/array.t +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize; - - -print "1..11\n"; - -sub timelist { - return (time) x $_[0]; -} - -memoize('timelist'); - -@t1 = &timelist(1); -sleep 2; -@u1 = &timelist(1); -print ((("@t1" eq "@u1") ? '' : 'not '), "ok 1\n"); - -@t7 = &timelist(7); -print (((@t7 == 7) ? '' : 'not '), "ok 2\n"); -$BAD = 0; -for ($i = 1; $i < 7; $i++) { - $BAD++ unless $t7[$i-1] == $t7[$i]; -} -print (($BAD ? 'not ' : ''), "ok 3\n"); - -sleep 2; -@u7 = &timelist(7); -print (((@u7 == 7) ? '' : 'not '), "ok 4\n"); -$BAD = 0; -for ($i = 1; $i < 7; $i++) { - $BAD++ unless $u7[$i-1] == $u7[$i]; -} -print (($BAD ? 'not ' : ''), "ok 5\n"); -# Properly memoized? -print ((("@t7" eq "@u7") ? '' : 'not '), "ok 6\n"); - -sub con { - return wantarray() -} - -# Same arguments yield different results in different contexts? -memoize('con'); -$s = con(1); -@a = con(1); -print ((($s == $a[0]) ? 'not ' : ''), "ok 7\n"); - -# Context propagated correctly? -print ((($s eq '') ? '' : 'not '), "ok 8\n"); # Scalar context -print ((("@a" eq '1' && @a == 1) ? '' : 'not '), "ok 9\n"); # List context - -# Context propagated correctly to normalizer? -sub n { - my $arg = shift; - my $test = shift; - if (wantarray) { - print ((($arg eq ARRAY) ? '' : 'not '), "ok $test\n"); # List context - } else { - print ((($arg eq SCALAR) ? '' : 'not '), "ok $test\n"); # Scalar context - } -} - -sub f { 1 } -memoize('f', NORMALIZER => 'n'); -$s = f('SCALAR', 10); # Test 10 -@a = f('ARRAY' , 11); # Test 11 - diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t b/gnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t deleted file mode 100755 index 4ad6c960ef7..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/array_confusion.t +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize 'memoize', 'unmemoize'; -use Test::More; - -sub reff { - return [1,2,3]; - -} - -sub listf { - return (1,2,3); -} - -sub f17 { return 17 } - -plan tests => 7; - -memoize 'reff', LIST_CACHE => 'MERGE'; -memoize 'listf'; - -$s = reff(); -@a = reff(); -is(scalar(@a), 1, "reff list context"); - -$s = listf(); -@a = listf(); -is(scalar(@a), 3, "listf list context"); - -unmemoize 'reff'; -memoize 'reff', LIST_CACHE => 'MERGE'; -unmemoize 'listf'; -memoize 'listf'; - -@a = reff(); -$s = reff(); -is(scalar @a, 1, "reff list context"); - -@a = listf(); -$s = listf(); -is(scalar @a, 3, "listf list context"); - -memoize 'f17', SCALAR_CACHE => 'MERGE'; -is(f17(), 17, "f17 first call"); -is(f17(), 17, "f17 second call"); -is(scalar(f17()), 17, "f17 scalar context call"); diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/errors.t b/gnu/usr.bin/perl/cpan/Memoize/t/errors.t deleted file mode 100755 index 90bc29826b8..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/errors.t +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize; -use Config; - -$|=1; -print "1..11\n"; - -eval { memoize({}) }; -print $@ ? "ok 1\n" : "not ok 1 # $@\n"; - -eval { memoize([]) }; -print $@ ? "ok 2\n" : "not ok 2 # $@\n"; - -eval { my $x; memoize(\$x) }; -print $@ ? "ok 3\n" : "not ok 3 # $@\n"; - -# 4--8 -$n = 4; -my $dummyfile = './dummydb'; -use Fcntl; -my %args = ( DB_File => [], - GDBM_File => [$dummyfile, \&GDBM_File::GDBM_NEWDB, 0666], - ODBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666], - NDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666], - SDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666], - ); -for $mod (qw(DB_File GDBM_File SDBM_File ODBM_File NDBM_File)) { - eval { - require "$mod.pm"; - tie my %cache => $mod, map { (ref($_) eq 'CODE') ? &$_ : $_ } @{$args{$mod}}; - memoize(sub {}, LIST_CACHE => [HASH => \%cache ]); - }; - print $@ =~ /can only store scalars/ - || $@ =~ /Can't locate.*in \@INC/ - || $@ =~ /Can't load '.*?' for module/ ? "ok $n\n" : "not ok $n # $@\n"; - 1 while unlink $dummyfile, "$dummyfile.dir", "$dummyfile.pag", "$dummyfile.db"; - $n++; -} - -# 9 -eval { local $^W = 0; - memoize(sub {}, LIST_CACHE => ['TIE', 'WuggaWugga']) - }; -print $@ ? "ok 9\n" : "not ok 9 # $@\n"; - -# 10 -eval { memoize(sub {}, LIST_CACHE => 'YOB GORGLE') }; -print $@ ? "ok 10\n" : "not ok 10 # $@\n"; - -# 11 -eval { memoize(sub {}, SCALAR_CACHE => ['YOB GORGLE']) }; -print $@ ? "ok 11\n" : "not ok 11 # $@\n"; - diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/expfile.t b/gnu/usr.bin/perl/cpan/Memoize/t/expfile.t deleted file mode 100755 index c81bfd494f1..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/expfile.t +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize; - -my $n = 0; -$|=1; - - -if (-e '.fast') { - print "1..0\n"; - exit 0; -} - -print "1..12\n"; -# (1) -++$n; print "ok $n\n"; - -my $READFILE_CALLS = 0; -my $FILE = './TESTFILE'; - -sub writefile { - my $FILE = shift; - open F, "> $FILE" or die "Couldn't write temporary file $FILE: $!"; - print F scalar(localtime), "\n"; - close F; -} - -sub readfile { - $READFILE_CALLS++; - my $FILE = shift; - open F, "< $FILE" or die "Couldn't write temporary file $FILE: $!"; - my $data = ; - close F; - $data; -} - -require Memoize::ExpireFile; -# (2) -++$n; print "ok $n\n"; - -tie my %cache => 'Memoize::ExpireFile'; -memoize 'readfile', - SCALAR_CACHE => [HASH => \%cache], - LIST_CACHE => 'FAULT' - ; - -# (3) -++$n; print "ok $n\n"; - -# (4) -writefile($FILE); -++$n; print "ok $n\n"; -sleep 4; - -# (5-6) -my $t1 = readfile($FILE); -++$n; print "ok $n\n"; -++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n"); - -# (7-9) -my $t2 = readfile($FILE); -++$n; print "ok $n\n"; -++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n"); -++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n"); - -# (10-12) -sleep 4; -writefile($FILE); -my $t3 = readfile($FILE); -++$n; print "ok $n\n"; -++$n; print ((($READFILE_CALLS == 2) ? '' : 'not '), "ok $n\n"); -++$n; print ((($t1 ne $t3) ? '' : 'not '), "ok $n\n"); - -END { 1 while unlink $FILE } diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/expire.t b/gnu/usr.bin/perl/cpan/Memoize/t/expire.t deleted file mode 100755 index 497e7a9fdd7..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/expire.t +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize; -use Memoize::ExpireTest; - -my $n = 0; - -print "1..17\n"; - -$n++; print "ok $n\n"; - -my %CALLS; -sub id { - my($arg) = @_; - ++$CALLS{$arg}; - $arg; -} - -tie my %cache => 'Memoize::ExpireTest'; -memoize 'id', - SCALAR_CACHE => [HASH => \%cache], - LIST_CACHE => 'FAULT'; -$n++; print "ok $n\n"; - -for $i (1, 2, 3, 1, 2, 1) { - $n++; - unless ($i == id($i)) { - print "not "; - } - print "ok $n\n"; -} - -for $i (1, 2, 3) { - $n++; - unless ($CALLS{$i} == 1) { - print "not "; - } - print "ok $n\n"; -} - -Memoize::ExpireTest::expire(1); - -for $i (1, 2, 3) { - my $v = id($i); -} - -for $i (1, 2, 3) { - $n++; - unless ($CALLS{$i} == 1 + ($i == 1)) { - print "not "; - } - print "ok $n\n"; -} - -Memoize::ExpireTest::expire(1); -Memoize::ExpireTest::expire(2); - -for $i (1, 2, 3) { - my $v = id($i); -} - -for $i (1, 2, 3) { - $n++; - unless ($CALLS{$i} == 4 - $i) { - print "not "; - } - print "ok $n\n"; -} - -exit 0; - diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/expmod_n.t b/gnu/usr.bin/perl/cpan/Memoize/t/expmod_n.t deleted file mode 100755 index 7e5505a8710..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/expmod_n.t +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize; - -my $n = 0; - - -print "1..22\n"; - -++$n; print "ok $n\n"; - -$RETURN = 1; - -%CALLS = (); -sub call { -# print "CALL $_[0] => $RETURN\n"; - ++$CALLS{$_[0]}; - $RETURN; -} - -require Memoize::Expire; -++$n; print "ok $n\n"; - -tie my %cache => 'Memoize::Expire', NUM_USES => 2; -memoize 'call', - SCALAR_CACHE => [HASH => \%cache], - LIST_CACHE => 'FAULT'; - -# $Memoize::Expire::DEBUG = 1; -++$n; print "ok $n\n"; - -# 3--6 -for (0,1,2,3) { - print "not " unless call($_) == 1; - ++$n; print "ok $n\n"; -} - -# 7--10 -for (keys %CALLS) { - print "not " unless $CALLS{$_} == (1,1,1,1)[$_]; - ++$n; print "ok $n\n"; -} - -# 11--13 -$RETURN = 2; -++$n; print ((call(1) == 1 ? '' : 'not '), "ok $n\n"); # 1 expires -++$n; print ((call(1) == 2 ? '' : 'not '), "ok $n\n"); # 1 gets new val -++$n; print ((call(2) == 1 ? '' : 'not '), "ok $n\n"); # 2 expires - -# 14--17 -$RETURN = 3; -for (0,1,2,3) { - # 0 expires, 1 expires, 2 gets new val, 3 expires - print "not " unless call($_) == (1,2,3,1)[$_]; - ++$n; print "ok $n\n"; -} - -for (0,1,2,3) { - print "not " unless $CALLS{$_} == (1,2,2,1)[$_]; - ++$n; print "ok $n\n"; -} diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/prototype.t b/gnu/usr.bin/perl/cpan/Memoize/t/prototype.t deleted file mode 100755 index f3859e329de..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/prototype.t +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize; -$EXPECTED_WARNING = '(no warning expected)'; - - -print "1..4\n"; - -sub q1 ($) { $_[0] + 1 } -sub q2 () { time } -sub q3 { join "--", @_ } - -$SIG{__WARN__} = \&handle_warnings; - -$RES = 'ok'; -memoize 'q1'; -print "$RES 1\n"; - -$RES = 'ok'; -memoize 'q2'; -print "$RES 2\n"; - -$RES = 'ok'; -memoize 'q3'; -print "$RES 3\n"; - -# Let's see if the prototype is actually honored -@q = (1..5); -$r = q1(@q); -print (($r == 6) ? '' : 'not ', "ok 4\n"); - -sub handle_warnings { - print $_[0]; - $RES = 'not ok' unless $_[0] eq $EXPECTED_WARNING; -} diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/speed.t b/gnu/usr.bin/perl/cpan/Memoize/t/speed.t deleted file mode 100755 index c4b838192d8..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/speed.t +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/perl - -use lib '..'; -use Memoize; - -if (-e '.fast') { - print "1..0\n"; - exit 0; -} -$| = 1; - -# If we don't say anything, maybe nobody will notice. -# print STDERR "\nWarning: I'm testing the speedup. This might take up to thirty seconds.\n "; - -my $COARSE_TIME = 1; - -sub times_to_time { my ($u) = times; $u; } -if ($^O eq 'riscos') { - eval {require Time::HiRes; *my_time = \&Time::HiRes::time }; - if ($@) { *my_time = sub { time }; $COARSE_TIME = 1 } -} else { - *my_time = \×_to_time; -} - - -print "1..6\n"; - - - -# This next test finds an example that takes a long time to run, then -# checks to make sure that the run is actually speeded up by memoization. -# In some sense, this is the most essential correctness test in the package. -# -# We do this by running the fib() function with successfily larger -# arguments until we find one that tales at least $LONG_RUN seconds -# to execute. Then we memoize fib() and run the same call cagain. If -# it doesn't produce the same test in less than one-tenth the time, -# something is seriously wrong. -# -# $LONG_RUN is the number of seconds that the function call must last -# in order for the call to be considered sufficiently long. - - -sub fib { - my $n = shift; - $COUNT++; - return $n if $n < 2; - fib($n-1) + fib($n-2); -} - -sub max { $_[0] > $_[1] ? - $_[0] : $_[1] - } - -$N = 1; - -$ELAPSED = 0; - -my $LONG_RUN = 11; - -while (1) { - my $start = time; - $COUNT=0; - $RESULT = fib($N); - $ELAPSED = time - $start; - last if $ELAPSED >= $LONG_RUN; - if ($ELAPSED > 1) { - print "# fib($N) took $ELAPSED seconds.\n" if $N % 1 == 0; - # we'd expect that fib(n+1) takes about 1.618 times as long as fib(n) - # so now that we have a longish run, let's estimate the value of $N - # that will get us a sufficiently long run. - $N += 1 + int(log($LONG_RUN/$ELAPSED)/log(1.618)); - print "# OK, N=$N ought to do it.\n"; - # It's important not to overshoot here because the running time - # is exponential in $N. If we increase $N too aggressively, - # the user will be forced to wait a very long time. - } else { - $N++; - } -} - -print "# OK, fib($N) was slow enough; it took $ELAPSED seconds.\n"; -print "# Total calls: $COUNT.\n"; - -&memoize('fib'); - -$COUNT=0; -$start = time; -$RESULT2 = fib($N); -$ELAPSED2 = time - $start + .001; # prevent division by 0 errors -print (($RESULT == $RESULT2) ? "ok 1\n" : "not ok 1\n"); -# If it's not ten times as fast, something is seriously wrong. -print "# ELAPSED2=$ELAPSED2 seconds.\n"; -print (($ELAPSED/$ELAPSED2 > 10) ? "ok 2\n" : "not ok 2\n"); - -# If it called the function more than $N times, it wasn't memoized properly -print (($COUNT > $N) ? "ok 3\n" : "not ok 3\n"); - -# Do it again. Should be even faster this time. -$COUNT = 0; -$start = time; -$RESULT2 = fib($N); -$ELAPSED2 = time - $start + .001; # prevent division by 0 errors -print (($RESULT == $RESULT2) ? "ok 4\n" : "not ok 4\n"); -print "# ELAPSED2=$ELAPSED2 seconds.\n"; -print (($ELAPSED/$ELAPSED2 > 10) ? "ok 5\n" : "not ok 5\n"); -# This time it shouldn't have called the function at all. -print ($COUNT == 0 ? "ok 6\n" : "not ok 6\n"); diff --git a/gnu/usr.bin/perl/cpan/Memoize/t/tiefeatures.t b/gnu/usr.bin/perl/cpan/Memoize/t/tiefeatures.t deleted file mode 100755 index 7306d9f4f8f..00000000000 --- a/gnu/usr.bin/perl/cpan/Memoize/t/tiefeatures.t +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/perl - -use lib 'blib/lib'; -use Memoize 0.45 qw(memoize unmemoize); -use Fcntl; - -# print STDERR $INC{'Memoize.pm'}, "\n"; - -print "1..10\n"; - -# Test MERGE -sub xx { - wantarray(); -} - -my $s = xx(); -print ((!$s) ? "ok 1\n" : "not ok 1\n"); -my ($a) = xx(); -print (($a) ? "ok 2\n" : "not ok 2\n"); -memoize 'xx', LIST_CACHE => MERGE; -$s = xx(); -print ((!$s) ? "ok 3\n" : "not ok 3\n"); -($a) = xx(); # Should return cached false value from previous invocation -print ((!$a) ? "ok 4\n" : "not ok 4\n"); - - -# Test FAULT -sub ns {} -sub na {} -memoize 'ns', SCALAR_CACHE => FAULT; -memoize 'na', LIST_CACHE => FAULT; -eval { my $s = ns() }; # Should fault -print (($@) ? "ok 5\n" : "not ok 5\n"); -eval { my ($a) = na() }; # Should fault -print (($@) ? "ok 6\n" : "not ok 6\n"); - - -# Test HASH -my (%s, %l); -sub nul {} -memoize 'nul', SCALAR_CACHE => [HASH => \%s], LIST_CACHE => [HASH => \%l]; -nul('x'); -nul('y'); -print ((join '', sort keys %s) eq 'xy' ? "ok 7\n" : "not ok 7\n"); -print ((join '', sort keys %l) eq '' ? "ok 8\n" : "not ok 8\n"); -() = nul('p'); -() = nul('q'); -print ((join '', sort keys %s) eq 'xy' ? "ok 9\n" : "not ok 9\n"); -print ((join '', sort keys %l) eq 'pq' ? "ok 10\n" : "not ok 10\n"); - diff --git a/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm b/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm index d02ec682ae5..6a407da2771 100644 --- a/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm +++ b/gnu/usr.bin/perl/cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm @@ -12,7 +12,7 @@ use 5.008001; # be as strict as possible use strict; -our $VERSION = '0.09'; +our $VERSION = '0.10'; # modules that we need use MIME::QuotedPrint (); # no need to pollute this namespace @@ -163,11 +163,11 @@ Public License or the Artistic License, as specified in the F file. =head1 VERSION -Version 0.09 +Version 0.10 =head1 DATE -08 Dec 2020 +22 May 2022 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm index 42ed4b49d54..bb6ffc83efb 100644 --- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm +++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm @@ -486,8 +486,6 @@ sub init_formatter_class_list { $self->opt_M_with('Pod::Perldoc::ToPod'); # the always-there fallthru $self->opt_o_with('text'); - $self->opt_o_with('man') - if $ENV{TERM} && $ENV{TERM} !~ /dumb|emacs|none|unknown/i; return; } diff --git a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm index d8e42b1703b..bfcb5c40ee6 100644 --- a/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm +++ b/gnu/usr.bin/perl/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm @@ -144,9 +144,7 @@ sub _get_podman_switches { # # See RT #77465 # - # Then again, do *not* comment it out on OpenBSD: - # mandoc handles UTF-8 input just fine. - push @switches, 'utf8' => 1; + #push @switches, 'utf8' => 1; $self->debug( "Pod::Man switches are [@switches]\n" ); @@ -211,6 +209,12 @@ sub _have_groff_with_utf8 { $version ge $minimum_groff_version; } +sub _have_mandoc_with_utf8 { + my( $self ) = @_; + + $self->_is_mandoc and not system 'mandoc -Tlocale -V > /dev/null 2>&1'; + } + sub _collect_nroff_switches { my( $self ) = shift; @@ -223,10 +227,6 @@ sub _collect_nroff_switches { push @render_switches, '-rLL=' . (int $c) . 'n' if $cols > 80; } - if( $self->_is_mandoc ) { - push @render_switches, '-Owidth=' . $self->_get_columns; - } - # I hear persistent reports that adding a -c switch to $render # solves many people's problems. But I also hear that some mans # don't have a -c switch, so that unconditionally adding it here @@ -242,6 +242,7 @@ sub _get_device_switches { if( $self->_is_nroff ) { qw() } elsif( $self->_have_groff_with_utf8 ) { qw(-Kutf8 -Tutf8) } elsif( $self->_is_ebcdic ) { qw(-Tcp1047) } + elsif( $self->_have_mandoc_with_utf8 ) { qw(-Tlocale) } elsif( $self->_is_mandoc ) { qw() } else { qw(-Tlatin1) } } @@ -357,9 +358,6 @@ sub _filter_through_nroff { length $done ); - # wait for it to exit - waitpid( $pid, 0 ); - if( $? ) { $self->warn( "Error from pipe to $render!\n" ); $self->debug( 'Error: ' . do { local $/; <$err> } ); diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm b/gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm index c290f2baf1e..0ed3a60315a 100644 --- a/gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm +++ b/gnu/usr.bin/perl/cpan/Pod-Usage/lib/Pod/Usage.pm @@ -18,7 +18,7 @@ use Config; use Exporter; use File::Spec; -our $VERSION = '2.01'; +our $VERSION = '2.03'; our @EXPORT = qw(&pod2usage); our @ISA; diff --git a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t index 8616422c94e..0ed928c3d8f 100644 --- a/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t +++ b/gnu/usr.bin/perl/cpan/Pod-Usage/t/pod/pod2usage2.t @@ -361,6 +361,7 @@ like ($text, qr/frobnicate - do what I mean/, "Output test pod2usage with relati *Pod::Usage::initialize = sub { 1; }; } +our $TODO; SKIP: { my $perldoc = $^X . 'doc'; skip "Missing perldoc binary", 2 unless -x $perldoc; @@ -378,8 +379,10 @@ SKIP: { } ); is ($exit, 0, "Exit status pod2usage with special perldoc case"); # output went to devnull - like ($text, qr/^\s*$/s, "Output test pod2usage with special perldoc case") or diag "Got:\n$text\n"; - + TODO: { + local $TODO = q[Can get output from stty view #14]; + is( length($text), 0, "Output test pod2usage with special perldoc case") or diag "Got:\n$text\n"; + } } # bad regexp syntax diff --git a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/ListUtil.xs b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/ListUtil.xs index 16a34ec748f..a4790ddd0f0 100644 --- a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/ListUtil.xs +++ b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/ListUtil.xs @@ -800,12 +800,12 @@ PPCODE: } } - if ( end < start ) { + if ( end <= start ) { XSRETURN(0); } else { EXTEND( SP, end - start ); - for ( i = start; i <= end; i++ ) { + for ( i = start; i < end; i++ ) { PUSHs( sv_2mortal( newSVsv( ST(i) ) ) ); } XSRETURN( end - start ); diff --git a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util.pm b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util.pm index a03b2983146..3766b06d89f 100644 --- a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util.pm +++ b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util.pm @@ -16,7 +16,7 @@ our @EXPORT_OK = qw( sample shuffle uniq uniqint uniqnum uniqstr zip zip_longest zip_shortest mesh mesh_longest mesh_shortest head tail pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst ); -our $VERSION = "1.62"; +our $VERSION = "1.63"; our $XS_VERSION = $VERSION; $VERSION =~ tr/_//d; diff --git a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util/XS.pm b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util/XS.pm index 1be196073c6..28cf6928f4f 100644 --- a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util/XS.pm +++ b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/List/Util/XS.pm @@ -3,7 +3,7 @@ use strict; use warnings; use List::Util; -our $VERSION = "1.62"; # FIXUP +our $VERSION = "1.63"; # FIXUP $VERSION =~ tr/_//d; # FIXUP 1; diff --git a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Scalar/Util.pm b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Scalar/Util.pm index 984ccdde918..760e641ebf2 100644 --- a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Scalar/Util.pm +++ b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Scalar/Util.pm @@ -17,7 +17,7 @@ our @EXPORT_OK = qw( dualvar isdual isvstring looks_like_number openhandle readonly set_prototype tainted ); -our $VERSION = "1.62"; +our $VERSION = "1.63"; $VERSION =~ tr/_//d; require List::Util; # List::Util loads the XS @@ -145,7 +145,7 @@ on these but C will return the underlying C structure type of C<"REGEXP"> in all capitals. I an equivalent function is available as -C. +C. =head2 weaken @@ -230,7 +230,7 @@ B: Copying a weak reference creates a normal, strong, reference. $weak = isweak($copy); # false I an equivalent function is available as -C. +C. =head1 OTHER FUNCTIONS diff --git a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Sub/Util.pm b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Sub/Util.pm index 573d920a765..f96e857c281 100644 --- a/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Sub/Util.pm +++ b/gnu/usr.bin/perl/cpan/Scalar-List-Utils/lib/Sub/Util.pm @@ -15,7 +15,7 @@ our @EXPORT_OK = qw( subname set_subname ); -our $VERSION = "1.62"; +our $VERSION = "1.63"; $VERSION =~ tr/_//d; require List::Util; # as it has the XS diff --git a/gnu/usr.bin/perl/cpan/Socket/Makefile.PL b/gnu/usr.bin/perl/cpan/Socket/Makefile.PL index f7c6bd2c9f7..d241fd5e58c 100644 --- a/gnu/usr.bin/perl/cpan/Socket/Makefile.PL +++ b/gnu/usr.bin/perl/cpan/Socket/Makefile.PL @@ -219,13 +219,14 @@ my @names = ( SO_ACCEPTCONN SO_ATTACH_FILTER SO_BACKLOG SO_BINDTODEVICE SO_BROADCAST SO_BSDCOMPAT SO_BUSY_POLL SO_CHAMELEON SO_DEBUG SO_DETACH_FILTER SO_DGRAM_ERRIND SO_DOMAIN SO_DONTLINGER SO_DONTROUTE SO_ERROR SO_FAMILY - SO_KEEPALIVE SO_LINGER SO_LOCK_FILTER SO_MARK SO_OOBINLINE SO_PASSCRED - SO_PASSIFNAME SO_PEEK_OFF SO_PEERCRED SO_PRIORITY SO_PROTOCOL - SO_PROTOTYPE SO_RCVBUF SO_RCVBUFFORCE SO_RCVLOWAT SO_RCVTIMEO - SO_REUSEADDR SO_REUSEPORT SO_RXQ_OVFL SO_SECURITY_AUTHENTICATION - SO_SECURITY_ENCRYPTION_NETWORK SO_SECURITY_ENCRYPTION_TRANSPORT - SO_SNDBUF SO_SNDBUFFORCE SO_SNDLOWAT SO_SNDTIMEO SO_STATE SO_TIMESTAMP - SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE + SO_INCOMING_CPU SO_INCOMING_NAPI_ID SO_KEEPALIVE SO_LINGER + SO_LOCK_FILTER SO_MARK SO_OOBINLINE SO_PASSCRED SO_PASSIFNAME + SO_PEEK_OFF SO_PEERCRED SO_PRIORITY SO_PROTOCOL SO_PROTOTYPE SO_RCVBUF + SO_RCVBUFFORCE SO_RCVLOWAT SO_RCVTIMEO SO_REUSEADDR SO_REUSEPORT + SO_RXQ_OVFL SO_SECURITY_AUTHENTICATION SO_SECURITY_ENCRYPTION_NETWORK + SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDBUFFORCE SO_SNDLOWAT + SO_SNDTIMEO SO_STATE SO_TIMESTAMP SO_TYPE SO_USELOOPBACK SO_XOPEN + SO_XSE TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_FASTOPEN TCP_INFO TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT diff --git a/gnu/usr.bin/perl/cpan/Socket/Socket.pm b/gnu/usr.bin/perl/cpan/Socket/Socket.pm index 5087ffc60cc..6b012565231 100644 --- a/gnu/usr.bin/perl/cpan/Socket/Socket.pm +++ b/gnu/usr.bin/perl/cpan/Socket/Socket.pm @@ -3,7 +3,7 @@ package Socket; use strict; { use v5.6.1; } -our $VERSION = '2.033'; +our $VERSION = '2.036'; =head1 NAME @@ -793,7 +793,8 @@ our @EXPORT_OK = qw( IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_RECVERR IPV6_ROUTER_ALERT IPV6_UNICAST_HOPS IPV6_V6ONLY - SO_LOCK_FILTER SO_RCVBUFFORCE SO_SNDBUFFORCE + SO_INCOMING_CPU SO_INCOMING_NAPI_ID SO_LOCK_FILTER SO_RCVBUFFORCE + SO_SNDBUFFORCE pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source diff --git a/gnu/usr.bin/perl/cpan/Socket/Socket.xs b/gnu/usr.bin/perl/cpan/Socket/Socket.xs index b4bccb796d4..d14d83a77ea 100644 --- a/gnu/usr.bin/perl/cpan/Socket/Socket.xs +++ b/gnu/usr.bin/perl/cpan/Socket/Socket.xs @@ -98,6 +98,14 @@ struct sockaddr_un #endif +/* + * The Windows implementations of inet_ntop and inet_pton are available + * whenever (and only when) InetNtopA is defined. + * Use those implementations whenever they are available. + * Else use the implementations provided below. +*/ +#ifndef InetNtopA + static int inet_pton(int af, const char *src, void *dst) { struct sockaddr_storage ss; @@ -146,6 +154,8 @@ static const char *inet_ntop(int af, const void *src, char *dst, socklen_t size) return dst; } +#endif /* InetNtopA not defined */ + #define HAS_INETPTON #define HAS_INETNTOP #endif @@ -224,10 +234,6 @@ static SV *my_newSVpvn_flags(pTHX_ const char *s, STRLEN len, U32 flags) } #endif /* !newSVpvn_flags */ -#ifndef SvRV_set -# define SvRV_set(sv, val) (SvRV(sv) = (val)) -#endif /* !SvRV_set */ - #ifndef SvPVbyte_nomg # define SvPVbyte_nomg SvPV #endif /* !SvPVbyte_nomg */ @@ -1191,13 +1197,14 @@ inet_ntop(af, ip_address_sv) break; #endif default: - croak("Bad address family for %s, got %d, should be" #ifdef AF_INET6 - " either AF_INET or AF_INET6", +# define WANT_FAMILY "either AF_INET or AF_INET6" #else - " AF_INET", +# define WANT_FAMILY "AF_INET" #endif + croak("Bad address family for %s, got %d, should be " WANT_FAMILY, "Socket::inet_ntop", af); +#undef WANT_FAMILY } if(addrlen < sizeof(addr)) { @@ -1240,13 +1247,13 @@ inet_pton(af, host) break; #endif default: - croak("Bad address family for %s, got %d, should be" #ifdef AF_INET6 - " either AF_INET or AF_INET6", +# define WANT_FAMILY "either AF_INET or AF_INET6" #else - " AF_INET", +# define WANT_FAMILY "AF_INET" #endif - "Socket::inet_pton", af); + croak("Bad address family for %s, got %d, should be " WANT_FAMILY, "Socket::inet_pton", af); +#undef WANT_FAMILY } ok = (*host != '\0') && inet_pton(af, host, &ip_address); diff --git a/gnu/usr.bin/perl/cpan/Socket/t/getnameinfo.t b/gnu/usr.bin/perl/cpan/Socket/t/getnameinfo.t index 9441fb48eb0..9bc0ab198db 100644 --- a/gnu/usr.bin/perl/cpan/Socket/t/getnameinfo.t +++ b/gnu/usr.bin/perl/cpan/Socket/t/getnameinfo.t @@ -19,8 +19,8 @@ is( $host, undef, '$host is undef for NIx_NOHOST' ); is( $service, "80", '$service is 80 for NS, NIx_NOHOST' ); ( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST|NI_NUMERICSERV, NIx_NOSERV ); -is( $host, "127.0.0.1", '$host is undef for NIx_NOSERV' ); -is( $service, undef, '$service is 80 for NS, NIx_NOSERV' ); +is( $host, "127.0.0.1", '$host is 127.0.0.1 for NIx_NOSERV' ); +is( $service, undef, '$service is undef for NS, NIx_NOSERV' ); ( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICSERV ); cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICSERV' ); diff --git a/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL b/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL index c76963d0b96..d09ba69fc90 100644 --- a/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL +++ b/gnu/usr.bin/perl/cpan/Sys-Syslog/Makefile.PL @@ -14,7 +14,7 @@ if ($] < 5.008) { } # create a lib/ dir in order to avoid warnings in Test::Distribution -mkdir "lib", $ENV{PERL_CORE} ? 0770 : 0755; +mkdir "lib", 0755; # virtual paths given to EU::MM my %virtual_path = ( 'Syslog.pm' => '$(INST_LIBDIR)/Syslog.pm' ); diff --git a/gnu/usr.bin/perl/cpan/Term-Cap/Cap.pm b/gnu/usr.bin/perl/cpan/Term-Cap/Cap.pm index fa1a9a8859b..54ee1784849 100644 --- a/gnu/usr.bin/perl/cpan/Term-Cap/Cap.pm +++ b/gnu/usr.bin/perl/cpan/Term-Cap/Cap.pm @@ -17,6 +17,7 @@ sub croak use strict; use vars qw($VERSION $VMS_TERMCAP); +use vars qw($termpat $state $first $entry); $VERSION = '1.18'; @@ -169,8 +170,8 @@ sub Tgetent $self = {} unless defined $self; bless $self, $class; - my ( $term, $cap, $search, $field, $tmp_term, $TERMCAP ); - my ( $state, $first, $entry ); + my ( $term, $cap, $search, $field, $max, $tmp_term, $TERMCAP ); + local ( $termpat, $state, $first, $entry ); # used inside eval local $_; # Compute PADDING factor from OSPEED (to be used by Tpad) @@ -220,25 +221,67 @@ sub Tgetent # $tmp_term is always the next term (possibly :tc=...:) we are looking for $tmp_term = $self->{TERM}; - my $seen = {}; - if (exists $ENV{TERMCAP}) { - local $_ = $ENV{TERMCAP}; - if ( !m:^/:s && m/(^|\|)\Q$tmp_term\E[:|]/s ) { - $entry = $_; - $seen->{$tmp_term} = 1; - } + # protect any pattern metacharacters in $tmp_term + $termpat = $tmp_term; + $termpat =~ s/(\W)/\\$1/g; + + my $foo = ( exists $ENV{TERMCAP} ? $ENV{TERMCAP} : '' ); + + # $entry is the extracted termcap entry + if ( ( $foo !~ m:^/:s ) && ( $foo =~ m/(^|\|)${termpat}[:|]/s ) ) + { + $entry = $foo; } my @termcap_path = termcap_path(); + if ( !@termcap_path && !$entry ) + { + + # last resort--fake up a termcap from terminfo + local $ENV{TERM} = $term; + + if ( $^O eq 'VMS' ) + { + $entry = $VMS_TERMCAP; + } + else + { + if ( grep { -x "$_/infocmp" } split /:/, $ENV{PATH} ) + { + eval { + my $tmp = `infocmp -C 2>/dev/null`; + $tmp =~ s/^#.*\n//gm; # remove comments + if ( ( $tmp !~ m%^/%s ) + && ( $tmp =~ /(^|\|)${termpat}[:|]/s ) ) + { + $entry = $tmp; + } + }; + warn "Can't run infocmp to get a termcap entry: $@" if $@; + } + else + { + # this is getting desperate now + if ( $self->{TERM} eq 'dumb' ) + { + $entry = 'dumb|80-column dumb tty::am::co#80::bl=^G:cr=^M:do=^J:sf=^J:'; + } + } + } + } + + croak "Can't find a valid termcap file" unless @termcap_path || $entry; + $state = 1; # 0 == finished # 1 == next file # 2 == search again - # 3 == try infocmp $first = 0; # first entry (keeps term name) + $max = 32; # max :tc=...:'s + if ($entry) { @@ -248,6 +291,10 @@ sub Tgetent if ( $entry =~ s/:tc=([^:]+):/:/ ) { $tmp_term = $1; + + # protect any pattern metacharacters in $tmp_term + $termpat = $tmp_term; + $termpat =~ s/(\W)/\\$1/g; } else { @@ -255,76 +302,57 @@ sub Tgetent } } - - while ( $state != 0 ) - { - if ( $state == 1 ) { - # get the next TERMCAP - $TERMCAP = shift @termcap_path or $state = 3; - } elsif ($state == 3) { - croak "failed termcap lookup on $tmp_term"; - } else { - # do the same file again - $state = 1; # ok, maybe do a new file next time - } - - my ($fh, $child); - if ($state == 3) { - # need to do a proper fork, so that we can pass tmp_term - # without having to quote it. - $child = open($fh, "-|"); - warn "cannot run infocmp: $!" if !defined $child; - if (!$child) { - open(STDERR, ">", "/dev/null"); - exec('infocmp', '-CTrx', '--', $tmp_term); - exit(1); - } - } else { - open($fh, '<', $TERMCAP) || croak "open $TERMCAP: $!"; - } - while (<$fh>) { - next if /^\t/ || /^#/; - if (m/(^|\|)\Q$tmp_term\E[:|]/) { + # This is eval'ed inside the while loop for each file + $search = q{ + while () { + next if /^\\t/ || /^#/; + if ($_ =~ m/(^|\\|)${termpat}[:|]/o) { chomp; s/^[^:]*:// if $first++; $state = 0; - $seen->{$tmp_term} = 1; - while (s/\\$//) { - defined(my $x = <$fh>) or last; + while ($_ =~ s/\\\\$//) { + defined(my $x = ) or last; $_ .= $x; chomp; } - if (defined $entry) { - $entry .= $_; - } else { - $entry = $_; - } last; } } - close $fh; - waitpid($child, 0) if defined $child; + defined $entry or $entry = ''; + $entry .= $_ if $_; + }; - next if $state != 0; + while ( $state != 0 ) + { + if ( $state == 1 ) + { + + # get the next TERMCAP + $TERMCAP = shift @termcap_path + || croak "failed termcap lookup on $tmp_term"; + } + else + { + + # do the same file again + # prevent endless recursion + $max-- || croak "failed termcap loop at $tmp_term"; + $state = 1; # ok, maybe do a new file next time + } + + open( TERMCAP, "< $TERMCAP\0" ) || croak "open $TERMCAP: $!"; + eval $search; + die $@ if $@; + close TERMCAP; # If :tc=...: found then search this file again - while ($entry =~ s/:tc=([^:]+):/:/) { - $tmp_term = $1; - next if $seen->{$tmp_term}; - $state = 2; - last; - } - } + $entry =~ s/:tc=([^:]+):/:/ && ( $tmp_term = $1, $state = 2 ); - if ( !defined $entry ) { - if ( $^O eq 'VMS' ) { - $entry = $VMS_TERMCAP; - # this is getting desperate now - } elsif ( $self->{TERM} eq 'dumb' ){ - $entry = 'dumb|80-column dumb tty::am::co#80::bl=^G:cr=^M:do=^J:sf=^J:'; - } + # protect any pattern metacharacters in $tmp_term + $termpat = $tmp_term; + $termpat =~ s/(\W)/\\$1/g; } - croak "Can't find $term" if !defined $entry; + croak "Can't find $term" if $entry eq ''; $entry =~ s/:+\s*:+/:/g; # cleanup $entry $entry =~ s/:+/:/g; # cleanup $entry $self->{TERMCAP} = $entry; # save it diff --git a/gnu/usr.bin/perl/cpan/Term-Cap/test.pl b/gnu/usr.bin/perl/cpan/Term-Cap/test.pl index 59782fe2851..60059abd575 100755 --- a/gnu/usr.bin/perl/cpan/Term-Cap/test.pl +++ b/gnu/usr.bin/perl/cpan/Term-Cap/test.pl @@ -25,7 +25,7 @@ unless( $files || $terminfo || $^O eq 'VMS' ) { plan skip_all => 'no termcap available to test'; } else { - plan tests => 44; + plan tests => 45; } use_ok( 'Term::Cap' ); @@ -135,10 +135,10 @@ SKIP: { # it shouldn't try to read one file more than 32(!) times # see __END__ for a really awful termcap example -# $ENV{TERMPATH} = join(' ', ('tcout') x 33); -# $vals->{TERM} = 'bar'; -# eval { $t = Term::Cap->Tgetent($vals) }; -# like( $@, qr/failed termcap loop/, 'Tgetent() should catch deep recursion'); + $ENV{TERMPATH} = join(' ', ('tcout') x 33); + $vals->{TERM} = 'bar'; + eval { $t = Term::Cap->Tgetent($vals) }; + like( $@, qr/failed termcap loop/, 'Tgetent() should catch deep recursion'); # now let it read a fake termcap file, and see if it sets properties $ENV{TERMPATH} = 'tcout'; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder.pm index 4e630f8dc8b..4c14dc4817b 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder.pm @@ -4,7 +4,7 @@ use 5.006; use strict; use warnings; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; BEGIN { if( $] < 5.008 ) { @@ -1002,15 +1002,7 @@ END $self->_is_diag( $got, $type, $expect ); } elsif( $type =~ /^(ne|!=)$/ ) { - no warnings; - my $eq = ($got eq $expect || $got == $expect) - && ( - (defined($got) xor defined($expect)) - || (length($got) != length($expect)) - ); - use warnings; - - if ($eq) { + if (defined($got) xor defined($expect)) { $self->_cmp_diag( $got, $type, $expect ); } else { diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Module.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Module.pm index 0123188cee8..c5a24e60716 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Module.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Module.pm @@ -7,7 +7,7 @@ use Test::Builder; require Exporter; our @ISA = qw(Exporter); -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; =head1 NAME diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester.pm index bbd61404332..a171b01eaf3 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester.pm @@ -1,7 +1,7 @@ package Test::Builder::Tester; use strict; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; use Test::Builder; use Symbol; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm index 9252488ef63..31a4c28a328 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm @@ -1,7 +1,7 @@ package Test::Builder::Tester::Color; use strict; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; require Test::Builder::Tester; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/More.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/More.pm index 488a1f102ca..f1f9e37e8de 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/More.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/More.pm @@ -17,7 +17,7 @@ sub _carp { return warn @_, " at $file line $line\n"; } -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); @@ -394,8 +394,13 @@ different from some other value: isnt $obj, $clone, "clone() produces a different object"; -For those grammatical pedants out there, there's an C -function which is an alias of C. +Historically we supported an C function as an alias of +C, however in Perl 5.37.9 support for the use of aprostrophe as +a package separator was deprecated and by Perl 5.42.0 support for it +will have been removed completely. Accordingly use of C is also +deprecated, and will produce warnings when used unless 'deprecated' +warnings are specifically disabled in the scope where it is used. You +are strongly advised to migrate to using C instead. =cut @@ -411,8 +416,25 @@ sub isnt ($$;$) { return $tb->isnt_eq(@_); } -# make this available as isn't() -*isn::t = \&isnt; +# Historically it was possible to use apostrophes as a package +# separator. make this available as isn't() for perl's that support it. +# However in 5.37.9 the apostrophe as a package separator was +# deprecated, so warn users of isn't() that they should use isnt() +# instead. We assume that if they are calling isn::t() they are doing so +# via isn't() as we have no way to be sure that they aren't spelling it +# with a double colon. We only trigger the warning if deprecation +# warnings are enabled, so the user can silence the warning if they +# wish. +sub isn::t { + local ($@, $!, $?); + if (warnings::enabled("deprecated")) { + _carp + "Use of apostrophe as package separator was deprecated in Perl 5.37.9,\n", + "and will be removed in Perl 5.42.0. You should change code that uses\n", + "Test::More::isn't() to use Test::More::isnt() as a replacement"; + } + goto &isnt; +} =item B @@ -1770,8 +1792,8 @@ sub eq_set { Sometimes the Test::More interface isn't quite enough. Fortunately, Test::More is built on top of L which provides a single, unified backend for any test library to use. This means two test -libraries which both use B be used together in the -same program>. +libraries which both use L B be used together in the +same program. If you simply want to do a little tweaking of how the tests behave, you can access the underlying L object like so: diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Simple.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Simple.pm index 210f86704d5..a7649f47875 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Simple.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Simple.pm @@ -4,7 +4,7 @@ use 5.006; use strict; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester.pm index 7ddc3cfe2be..9e91222ab7c 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester.pm @@ -18,7 +18,7 @@ require Exporter; use vars qw( @ISA @EXPORT ); -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; @EXPORT = qw( run_tests check_tests check_test cmp_results show_space ); @ISA = qw( Exporter ); diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Capture.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Capture.pm index 846f1d23ab4..7c7e8545f8c 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Capture.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Capture.pm @@ -2,7 +2,7 @@ use strict; package Test::Tester::Capture; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; use Test::Builder; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm index dff28a6f491..574de86cdaf 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm @@ -3,7 +3,7 @@ use strict; package Test::Tester::CaptureRunner; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; use Test::Tester::Capture; diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Delegate.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Delegate.pm index 20738f8da96..1c8d873cdd3 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Delegate.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/Tester/Delegate.pm @@ -3,7 +3,7 @@ use warnings; package Test::Tester::Delegate; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; use Scalar::Util(); diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/use/ok.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/use/ok.pm index 5f0e686dc83..757e1684aac 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/use/ok.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/Test/use/ok.pm @@ -1,7 +1,7 @@ package Test::use::ok; use 5.005; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; __END__ diff --git a/gnu/usr.bin/perl/cpan/Test-Simple/lib/ok.pm b/gnu/usr.bin/perl/cpan/Test-Simple/lib/ok.pm index a300a73d8bf..437c938ce6f 100644 --- a/gnu/usr.bin/perl/cpan/Test-Simple/lib/ok.pm +++ b/gnu/usr.bin/perl/cpan/Test-Simple/lib/ok.pm @@ -1,5 +1,5 @@ package ok; -our $VERSION = '1.302190'; +our $VERSION = '1.302194'; use strict; use Test::More (); diff --git a/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm b/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm index 324a023f385..49f3d8926c7 100644 --- a/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm +++ b/gnu/usr.bin/perl/cpan/Text-Balanced/lib/Text/Balanced.pm @@ -1,6 +1,7 @@ # Copyright (C) 1997-2001 Damian Conway. All rights reserved. # Copyright (C) 2009 Adam Kennedy. -# Copyright (C) 2015 Steve Hay. All rights reserved. +# Copyright (C) 2015, 2022 Steve Hay and other contributors. All rights +# reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General @@ -17,7 +18,7 @@ use Exporter (); use vars qw { $VERSION @ISA %EXPORT_TAGS }; BEGIN { - $VERSION = '2.04'; + $VERSION = '2.06'; @ISA = 'Exporter'; %EXPORT_TAGS = ( ALL => [ qw{ @@ -37,14 +38,22 @@ BEGIN { Exporter::export_ok_tags('ALL'); -## no critic (Subroutines::ProhibitSubroutinePrototypes) - -# PROTOTYPES - -sub _match_bracketed($$$$$$); -sub _match_variable($$); -sub _match_codeblock($$$$$$$); -sub _match_quotelike($$$$); +our $RE_PREREGEX_PAT = qr#( + [!=]~ + | split|grep|map + | not|and|or|xor +)#x; +our $RE_EXPR_PAT = qr#( + (?:\*\*|&&|\|\||<<|>>|//|[-+*x%^&|.])=? + | /(?:[^/]) + | =(?!>) + | return + | [\(\[] +)#x; +our $RE_NUM = qr/\s*[+\-.0-9][+\-.0-9e]*/i; # numerical constant + +our %ref2slashvalid; # is quotelike /.../ pattern valid here for given textref? +our %ref2qmarkvalid; # is quotelike ?...? pattern valid here for given textref? # HANDLE RETURN VALUES IN VARIOUS CONTEXTS @@ -99,6 +108,7 @@ sub _succeed { } # BUILD A PATTERN MATCHING A SIMPLE DELIMITED STRING +## no critic (Subroutines::ProhibitSubroutinePrototypes) sub gen_delimited_pat($;$) # ($delimiters;$escapes) { @@ -132,6 +142,7 @@ sub gen_delimited_pat($;$) # ($delimiters;$escapes) sub extract_delimited (;$$$$) { my $textref = defined $_[0] ? \$_[0] : \$_; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset my $wantarray = wantarray; my $del = defined $_[1] ? $_[1] : qq{\'\"\`}; my $pre = defined $_[2] ? $_[2] : '\s*'; @@ -149,33 +160,45 @@ sub extract_delimited (;$$$$) $startpos, $prelen; # PREFIX } -sub extract_bracketed (;$$$) -{ - my $textref = defined $_[0] ? \$_[0] : \$_; - my $ldel = defined $_[1] ? $_[1] : '{([<'; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my $wantarray = wantarray; +my %eb_delim_cache; +sub _eb_delims { + my ($ldel_orig) = @_; + return @{ $eb_delim_cache{$ldel_orig} } if $eb_delim_cache{$ldel_orig}; my $qdel = ""; my $quotelike; + my $ldel = $ldel_orig; $ldel =~ s/'//g and $qdel .= q{'}; $ldel =~ s/"//g and $qdel .= q{"}; $ldel =~ s/`//g and $qdel .= q{`}; $ldel =~ s/q//g and $quotelike = 1; $ldel =~ tr/[](){}<>\0-\377/[[(({{</) + return @{ $eb_delim_cache{$ldel_orig} = [] } unless $rdel =~ tr/[({/; + my $posbug = pos; + $ldel = join('|', map { quotemeta $_ } split('', $ldel)); + $rdel = join('|', map { quotemeta $_ } split('', $rdel)); + pos = $posbug; + @{ $eb_delim_cache{$ldel_orig} = [ + qr/\G($ldel)/, $qdel && qr/\G([$qdel])/, $quotelike, qr/\G($rdel)/ + ] }; +} +sub extract_bracketed (;$$$) +{ + my $textref = defined $_[0] ? \$_[0] : \$_; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset + my $ldel = defined $_[1] ? $_[1] : '{([<'; + my $pre = defined $_[2] ? qr/\G$_[2]/ : qr/\G\s*/; + my $wantarray = wantarray; + my @ret = _eb_delims($ldel); + unless (@ret) { return _fail $wantarray, $textref, "Did not find a suitable bracket in delimiter: \"$_[1]\"", 0; } - my $posbug = pos; - $ldel = join('|', map { quotemeta $_ } split('', $ldel)); - $rdel = join('|', map { quotemeta $_ } split('', $rdel)); - pos = $posbug; my $startpos = pos $$textref || 0; - my @match = _match_bracketed($textref,$pre, $ldel, $qdel, $quotelike, $rdel); + my @match = _match_bracketed($textref, $pre, @ret); return _fail ($wantarray, $textref) unless @match; @@ -186,11 +209,11 @@ sub extract_bracketed (;$$$) ); } -sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rdel +sub _match_bracketed # $textref, $pre, $ldel, $qdel, $quotelike, $rdel { my ($textref, $pre, $ldel, $qdel, $quotelike, $rdel) = @_; my ($startpos, $ldelpos, $endpos) = (pos $$textref = pos $$textref||0); - unless ($$textref =~ m/\G$pre/gc) + unless ($$textref =~ m/$pre/gc) { _failmsg "Did not find prefix: /$pre/", $startpos; return; @@ -198,7 +221,7 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde $ldelpos = pos $$textref; - unless ($$textref =~ m/\G($ldel)/gc) + unless ($$textref =~ m/$ldel/gc) { _failmsg "Did not find opening bracket after prefix: \"$pre\"", pos $$textref; @@ -212,11 +235,11 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde { next if $$textref =~ m/\G\\./gcs; - if ($$textref =~ m/\G($ldel)/gc) + if ($$textref =~ m/$ldel/gc) { push @nesting, $1; } - elsif ($$textref =~ m/\G($rdel)/gc) + elsif ($$textref =~ m/$rdel/gc) { my ($found, $brackettype) = ($1, $1); if ($#nesting < 0) @@ -237,7 +260,7 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde } last if $#nesting < 0; } - elsif ($qdel && $$textref =~ m/\G([$qdel])/gc) + elsif ($qdel && $$textref =~ m/$qdel/gc) { $$textref =~ m/\G[^\\$1]*(?:\\.[^\\$1]*)*(\Q$1\E)/gsc and next; _failmsg "Unmatched embedded quote ($1)", @@ -245,8 +268,9 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde pos $$textref = $startpos; return; } - elsif ($quotelike && _match_quotelike($textref,"",1,0)) + elsif ($quotelike && _match_quotelike($textref,qr/\G()/,$ref2slashvalid{$textref},$ref2qmarkvalid{$textref})) { + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1; # back-compat next; } @@ -281,12 +305,14 @@ sub _revbracket($) my $XMLNAME = q{[a-zA-Z_:][a-zA-Z0-9_:.-]*}; +my $et_default_ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options) { my $textref = defined $_[0] ? \$_[0] : \$_; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset my $ldel = $_[1]; my $rdel = $_[2]; - my $pre = defined $_[3] ? $_[3] : '\s*'; + my $pre = defined $_[3] ? qr/\G$_[3]/ : qr/\G\s*/; my %options = defined $_[4] ? %{$_[4]} : (); my $omode = defined $options{fail} ? $options{fail} : ''; my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) @@ -298,7 +324,7 @@ sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options) : '' ; - if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } + $ldel = $et_default_ldel if !defined $ldel; $@ = undef; my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); @@ -316,7 +342,7 @@ sub _match_tagged # ($$$$$$$) my ($startpos, $opentagpos, $textpos, $parapos, $closetagpos, $endpos) = ( pos($$textref) = pos($$textref)||0 ); - unless ($$textref =~ m/\G($pre)/gc) + unless ($$textref =~ m/$pre/gc) { _failmsg "Did not find prefix: /$pre/", pos $$textref; goto failed; @@ -433,7 +459,8 @@ sub extract_variable (;$$) { my $textref = defined $_[0] ? \$_[0] : \$_; return ("","","") unless defined $$textref; - my $pre = defined $_[1] ? $_[1] : '\s*'; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset + my $pre = defined $_[1] ? qr/\G$_[1]/ : qr/\G\s*/; my @match = _match_variable($textref,$pre); @@ -443,14 +470,14 @@ sub extract_variable (;$$) @match[2..3,4..5,0..1]; # MATCH, REMAINDER, PREFIX } -sub _match_variable($$) +sub _match_variable { # $# # $^ # $$ my ($textref, $pre) = @_; my $startpos = pos($$textref) = pos($$textref)||0; - unless ($$textref =~ m/\G($pre)/gc) + unless ($$textref =~ m/$pre/gc) { _failmsg "Did not find prefix: /$pre/", pos $$textref; return; @@ -467,8 +494,9 @@ sub _match_variable($$) my $deref = $1; unless ($$textref =~ m/\G\s*(?:::|')?(?:[_a-z]\w*(?:::|'))*[_a-z]\w*/gci - or _match_codeblock($textref, "", '\{', '\}', '\{', '\}', 0) - or $deref eq '$#' or $deref eq '$$' ) + or _match_codeblock($textref, qr/\G()/, '\{', qr/\G\s*(\})/, '\{', '\}', 0, 1) + or $deref eq '$#' or $deref eq '$$' + or pos($$textref) == length $$textref ) { _failmsg "Bad identifier after dereferencer", pos $$textref; pos $$textref = $startpos; @@ -480,16 +508,17 @@ sub _match_variable($$) { next if $$textref =~ m/\G\s*(?:->)?\s*[{]\w+[}]/gc; next if _match_codeblock($textref, - qr/\s*->\s*(?:[_a-zA-Z]\w+\s*)?/, - qr/[({[]/, qr/[)}\]]/, - qr/[({[]/, qr/[)}\]]/, 0); + qr/\G\s*->\s*(?:[_a-zA-Z]\w+\s*)?/, + qr/[({[]/, qr/\G\s*([)}\]])/, + qr/[({[]/, qr/[)}\]]/, 0, 1); next if _match_codeblock($textref, - qr/\s*/, qr/[{[]/, qr/[}\]]/, - qr/[{[]/, qr/[}\]]/, 0); - next if _match_variable($textref,'\s*->\s*'); + qr/\G\s*/, qr/[{[]/, qr/\G\s*([}\]])/, + qr/[{[]/, qr/[}\]]/, 0, 1); + next if _match_variable($textref,qr/\G\s*->\s*/); next if $$textref =~ m/\G\s*->\s*\w+(?![{([])/gc; last; } + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0; my $endpos = pos($$textref); return ($startpos, $varpos-$startpos, @@ -498,14 +527,11 @@ sub _match_variable($$) ); } -sub extract_codeblock (;$$$$$) -{ - my $textref = defined $_[0] ? \$_[0] : \$_; - my $wantarray = wantarray; - my $ldel_inner = defined $_[1] ? $_[1] : '{'; - my $pre = defined $_[2] ? $_[2] : '\s*'; - my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner; - my $rd = $_[4]; +my %ec_delim_cache; +sub _ec_delims { + my ($ldel_inner, $ldel_outer) = @_; + return @{ $ec_delim_cache{$ldel_outer}{$ldel_inner} } + if $ec_delim_cache{$ldel_outer}{$ldel_inner}; my $rdel_inner = $ldel_inner; my $rdel_outer = $ldel_outer; my $posbug = pos; @@ -516,23 +542,34 @@ sub extract_codeblock (;$$$$$) $_ = '('.join('|',map { quotemeta $_ } split('',$_)).')' } pos = $posbug; + @{ $ec_delim_cache{$ldel_outer}{$ldel_inner} = [ + $ldel_outer, qr/\G\s*($rdel_outer)/, $ldel_inner, $rdel_inner + ] }; +} +sub extract_codeblock (;$$$$$) +{ + my $textref = defined $_[0] ? \$_[0] : \$_; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset + my $wantarray = wantarray; + my $ldel_inner = defined $_[1] ? $_[1] : '{'; + my $pre = !defined $_[2] ? qr/\G\s*/ : qr/\G$_[2]/; + my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner; + my $rd = $_[4]; + my @delims = _ec_delims($ldel_inner, $ldel_outer); - my @match = _match_codeblock($textref, $pre, - $ldel_outer, $rdel_outer, - $ldel_inner, $rdel_inner, - $rd); + my @match = _match_codeblock($textref, $pre, @delims, $rd, 1); return _fail($wantarray, $textref) unless @match; return _succeed($wantarray, $textref, @match[2..3,4..5,0..1] # MATCH, REMAINDER, PREFIX ); - } -sub _match_codeblock($$$$$$$) +sub _match_codeblock { - my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd) = @_; + my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd, $no_backcompat) = @_; + $rdel_outer = qr/\G\s*($rdel_outer)/ if !$no_backcompat; # Switch calls this func directly my $startpos = pos($$textref) = pos($$textref) || 0; - unless ($$textref =~ m/\G($pre)/gc) + unless ($$textref =~ m/$pre/gc) { _failmsg qq{Did not match prefix /$pre/ at"} . substr($$textref,pos($$textref),20) . @@ -553,13 +590,13 @@ sub _match_codeblock($$$$$$$) my $closing = $1; $closing =~ tr/([<{/)]>}/; my $matched; - my $patvalid = 1; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 + if !pos($$textref) or !defined $ref2slashvalid{$textref}; # default, or reset while (pos($$textref) < length($$textref)) { - $matched = ''; if ($rd && $$textref =~ m#\G(\Q(?)\E|\Q(s?)\E|\Q(s)\E)#gc) { - $patvalid = 0; + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0; next; } @@ -568,7 +605,7 @@ sub _match_codeblock($$$$$$$) next; } - if ($$textref =~ m/\G\s*($rdel_outer)/gc) + if ($$textref =~ m/$rdel_outer/gc) { unless ($matched = ($closing && $1 eq $closing) ) { @@ -581,31 +618,22 @@ sub _match_codeblock($$$$$$$) last; } - if (_match_variable($textref,'\s*') || - _match_quotelike($textref,'\s*',$patvalid,$patvalid) ) + if (_match_variable($textref,qr/\G\s*/) || + _match_quotelike($textref,qr/\G\s*/,$ref2slashvalid{$textref},$ref2qmarkvalid{$textref}) ) { - $patvalid = 0; + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0; next; } - - # NEED TO COVER MANY MORE CASES HERE!!! - if ($$textref =~ m#\G\s*(?!$ldel_inner) - ( [-+*x/%^&|.]=? - | [!=]~ - | =(?!>) - | (\*\*|&&|\|\||<<|>>)=? - | split|grep|map|return - | [([] - )#gcx) + if ($$textref =~ m#\G\s*(?!$ldel_inner)(?:$RE_PREREGEX_PAT|$RE_EXPR_PAT)#gc) { - $patvalid = 1; + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1; next; } - if ( _match_codeblock($textref, '\s*', $ldel_inner, $rdel_inner, $ldel_inner, $rdel_inner, $rd) ) + if ( _match_codeblock($textref, qr/\G\s*/, $ldel_inner, qr/\G\s*($rdel_inner)/, $ldel_inner, $rdel_inner, $rd, 1) ) { - $patvalid = 1; + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1; next; } @@ -618,7 +646,7 @@ sub _match_codeblock($$$$$$$) last; } - $patvalid = 0; + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0; $$textref =~ m/\G\s*(\w+|[-=>]>|.|\Z)/gc; } continue { $@ = undef } @@ -630,6 +658,7 @@ sub _match_codeblock($$$$$$$) return; } + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = undef; my $endpos = pos($$textref); return ( $startpos, $codepos-$startpos, $codepos, $endpos-$codepos, @@ -654,10 +683,11 @@ my %mods = ( sub extract_quotelike (;$$) { my $textref = $_[0] ? \$_[0] : \$_; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset my $wantarray = wantarray; - my $pre = defined $_[1] ? $_[1] : '\s*'; + my $pre = defined $_[1] ? qr/\G$_[1]/ : qr/\G\s*/; - my @match = _match_quotelike($textref,$pre,1,0); + my @match = _match_quotelike($textref,$pre,$ref2slashvalid{$textref},$ref2qmarkvalid{$textref}); return _fail($wantarray, $textref) unless @match; return _succeed($wantarray, $textref, $match[2], $match[18]-$match[2], # MATCH @@ -668,17 +698,19 @@ sub extract_quotelike (;$$) ); }; -sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) +my %maybe_quote = map +($_=>1), qw(" ' `); +sub _match_quotelike { - my ($textref, $pre, $rawmatch, $qmark) = @_; + my ($textref, $pre, $allow_slash_match, $allow_qmark_match) = @_; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 + if !pos($$textref) or !defined $ref2slashvalid{$textref}; # default, or reset my ($textlen,$startpos, - $oppos, $preld1pos,$ld1pos,$str1pos,$rd1pos, $preld2pos,$ld2pos,$str2pos,$rd2pos, $modpos) = ( length($$textref), pos($$textref) = pos($$textref) || 0 ); - unless ($$textref =~ m/\G($pre)/gc) + unless ($$textref =~ m/$pre/gc) { _failmsg qq{Did not find prefix /$pre/ at "} . substr($$textref, pos($$textref), 20) . @@ -686,15 +718,13 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) pos $$textref; return; } - $oppos = pos($$textref); - + my $oppos = pos($$textref); my $initial = substr($$textref,$oppos,1); - - if ($initial && $initial =~ m|^[\"\'\`]| - || $rawmatch && $initial =~ m|^/| - || $qmark && $initial =~ m|^\?|) + if ($initial && $maybe_quote{$initial} + || $allow_slash_match && $initial eq '/' + || $allow_qmark_match && $initial eq '?') { - unless ($$textref =~ m/ \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx) + unless ($$textref =~ m/\G \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx) { _failmsg qq{Did not find closing delimiter to match '$initial' at "} . substr($$textref, $oppos, 20) . @@ -712,6 +742,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) } my $endpos = pos($$textref); + $ref2qmarkvalid{$textref} = $ref2slashvalid{$textref} = 0; return ( $startpos, $oppos-$startpos, # PREFIX $oppos, 0, # NO OPERATOR @@ -726,7 +757,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) ); } - unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<)}gc) + unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<(?=[a-zA-Z]|\s*['"`;,]))}gc) { _failmsg q{No quotelike operator found after prefix at "} . substr($$textref, pos($$textref), 20) . @@ -767,6 +798,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) $rd1pos = pos($$textref); $$textref =~ m{\Q$label\E\n}gc; $ld2pos = pos($$textref); + $ref2qmarkvalid{$textref} = $ref2slashvalid{$textref} = 0; return ( $startpos, $oppos-$startpos, # PREFIX $oppos, length($op), # OPERATOR @@ -786,19 +818,26 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) $ld1pos = pos($$textref); $str1pos = $ld1pos+1; - unless ($$textref =~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD + if ($$textref !~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD { _failmsg "No block delimiter found after quotelike $op", pos $$textref; pos $$textref = $startpos; return; } + elsif (substr($$textref, $ld1pos, 2) eq '=>') + { + _failmsg "quotelike $op was actually quoted by '=>'", + pos $$textref; + pos $$textref = $startpos; + return; + } pos($$textref) = $ld1pos; # HAVE TO DO THIS BECAUSE LOOKAHEAD BROKEN my ($ldel1, $rdel1) = ("\Q$1","\Q$1"); if ($ldel1 =~ /[[(<{]/) { $rdel1 =~ tr/[({/; - defined(_match_bracketed($textref,"",$ldel1,"","",$rdel1)) + defined(_match_bracketed($textref,qr/\G/,qr/\G($ldel1)/,"","",qr/\G($rdel1)/)) || do { pos $$textref = $startpos; return }; $ld2pos = pos($$textref); $rd1pos = $ld2pos-1; @@ -835,7 +874,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) if ($ldel2 =~ /[[(<{]/) { pos($$textref)--; # OVERCOME BROKEN LOOKAHEAD - defined(_match_bracketed($textref,"",$ldel2,"","",$rdel2)) + defined(_match_bracketed($textref,qr/\G/,qr/\G($ldel2)/,"","",qr/\G($rdel2)/)) || do { pos $$textref = $startpos; return }; } else @@ -854,6 +893,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match) $$textref =~ m/\G($mods{$op})/gc; my $endpos = pos $$textref; + $ref2qmarkvalid{$textref} = $ref2slashvalid{$textref} = undef; return ( $startpos, $oppos-$startpos, # PREFIX @@ -874,10 +914,26 @@ my $def_func = [ sub { extract_quotelike($_[0],'') }, sub { extract_codeblock($_[0],'{}','') }, ]; +my %ref_not_regex = map +($_=>1), qw(CODE Text::Balanced::Extractor); +sub _update_patvalid { + my ($textref, $text) = @_; + if ($ref2slashvalid{$textref} && $text =~ m/(?:$RE_NUM|[\)\]])\s*$/) + { + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0; + } elsif (!$ref2slashvalid{$textref} && $text =~ m/$RE_PREREGEX_PAT\s*$/) + { + $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1; + } elsif (!$ref2slashvalid{$textref} && $text =~ m/$RE_EXPR_PAT\s*$/) + { + $ref2slashvalid{$textref} = 1; + $ref2qmarkvalid{$textref} = 0; + } +} sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunknown) { my $textref = defined($_[0]) ? \$_[0] : \$_; + $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset my $posbug = pos; my ($lastpos, $firstpos); my @fields = (); @@ -898,39 +954,28 @@ sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreun $max = 1 } - my $unkpos; - my $class; - my @class; foreach my $func ( @func ) { - if (ref($func) eq 'HASH') - { - push @class, (keys %$func)[0]; - $func = (values %$func)[0]; - } - else - { - push @class, undef; - } + push @class, undef; + ($class[-1], $func) = %$func if ref($func) eq 'HASH'; + $func = qr/\G$func/ if !$ref_not_regex{ref $func}; } + my $unkpos; FIELD: while (pos($$textref) < length($$textref)) { - my ($field, $rem); - my @bits; foreach my $i ( 0..$#func ) { - my $pref; - my $func = $func[$i]; - $class = $class[$i]; + my ($field, $pref); + my ($class, $func) = ($class[$i], $func[$i]); $lastpos = pos $$textref; if (ref($func) eq 'CODE') - { ($field,$rem,$pref) = @bits = $func->($$textref) } + { ($field,undef,$pref) = $func->($$textref) } elsif (ref($func) eq 'Text::Balanced::Extractor') - { @bits = $field = $func->extract($$textref) } - elsif( $$textref =~ m/\G$func/gc ) - { @bits = $field = defined($1) + { $field = $func->extract($$textref) } + elsif( $$textref =~ m/$func[$i]/gc ) + { $field = defined($1) ? $1 : substr($$textref, $-[0], $+[0] - $-[0]) } @@ -948,9 +993,8 @@ sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreun last FIELD if @fields == $max; } } - push @fields, $class - ? bless (\$field, $class) - : $field; + push @fields, $class ? bless(\$field, $class) : $field; + _update_patvalid($textref, $fields[-1]); $firstpos = $lastpos unless defined $firstpos; $lastpos = pos $$textref; last FIELD if @fields == $max; @@ -961,6 +1005,7 @@ sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreun { $unkpos = pos($$textref)-1 unless $igunk || defined $unkpos; + _update_patvalid($textref, substr $$textref, $unkpos, pos($$textref)-$unkpos); } } @@ -986,7 +1031,7 @@ sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options) { my $ldel = $_[0]; my $rdel = $_[1]; - my $pre = defined $_[2] ? $_[2] : '\s*'; + my $pre = defined $_[2] ? qr/\G$_[2]/ : qr/\G\s*/; my %options = defined $_[3] ? %{$_[3]} : (); my $omode = defined $options{fail} ? $options{fail} : ''; my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}}) @@ -998,16 +1043,16 @@ sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options) : '' ; - if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; } + $ldel = $et_default_ldel if !defined $ldel; my $posbug = pos; - for ($ldel, $pre, $bad, $ignore) { $_ = qr/$_/ if $_ } + for ($ldel, $bad, $ignore) { $_ = qr/$_/ if $_ } pos = $posbug; my $closure = sub { my $textref = defined $_[0] ? \$_[0] : \$_; - my @match = Text::Balanced::_match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); + my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore); return _fail(wantarray, $textref) unless @match; return _succeed wantarray, $textref, @@ -1027,7 +1072,9 @@ sub extract($$) # ($self, $text) package Text::Balanced::ErrorMsg; -use overload '""' => sub { "$_[0]->{error}, detected at offset $_[0]->{pos}" }; +use overload + '""' => sub { "$_[0]->{error}, detected at offset $_[0]->{pos}" }, + fallback => 1; 1; @@ -1450,7 +1497,7 @@ A string to be processed (C<$_> if the string is omitted or C) =item 2. -A string specifying a pattern to be matched as the opening tag. +A string specifying a pattern (i.e. regex) to be matched as the opening tag. If the pattern string is omitted (or C) then a pattern that matches any standard XML tag is used. @@ -1854,7 +1901,8 @@ C<"extract_quotelike">. C takes the same initial three parameters as C: a text to process, a set of delimiter brackets to look for, and a prefix to match first. It also takes an optional fourth parameter, which allows the -outermost delimiter brackets to be specified separately (see below). +outermost delimiter brackets to be specified separately (see below), +and a fifth parameter used only by L. Omitting the first argument (input text) means process C<$_> instead. Omitting the second argument (delimiter brackets) indicates that only C<'{'> is to be used. @@ -2063,12 +2111,14 @@ operator (and removes it from $text): Finally, here is yet another way to do comma-separated value parsing: + $csv_text = "a,'x b',c"; @fields = extract_multiple($csv_text, [ sub { extract_delimited($_[0],q{'"}) }, - qr/([^,]+)(.*)/, + qr/([^,]+)/, ], undef,1); + # @fields is now ('a', "'x b'", 'c') The list in the second argument means: I<"Try and extract a ' or " delimited string, otherwise extract anything up to a comma...">. @@ -2084,7 +2134,7 @@ just make the last parameter undefined (or remove it). =item C The C subroutine takes a single (string) argument and - > builds a Friedl-style optimized regex that matches a string delimited +builds a Friedl-style optimized regex that matches a string delimited by any one of the characters in the single argument. For example: gen_delimited_pat(q{'"}) @@ -2360,7 +2410,8 @@ Copyright (C) 1997-2001 Damian Conway. All rights reserved. Copyright (C) 2009 Adam Kennedy. -Copyright (C) 2015, 2020 Steve Hay. All rights reserved. +Copyright (C) 2015, 2020, 2022 Steve Hay and other contributors. All rights +reserved. =head1 LICENCE @@ -2370,11 +2421,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 2.04 +Version 2.06 =head1 DATE -11 Dec 2020 +05 Jun 2022 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/Time-Piece/Piece.pm b/gnu/usr.bin/perl/cpan/Time-Piece/Piece.pm index f5d87cd0316..58dc5af0efe 100644 --- a/gnu/usr.bin/perl/cpan/Time-Piece/Piece.pm +++ b/gnu/usr.bin/perl/cpan/Time-Piece/Piece.pm @@ -19,7 +19,7 @@ our %EXPORT_TAGS = ( ':override' => 'internal', ); -our $VERSION = '1.3401'; +our $VERSION = '1.3401_01'; XSLoader::load( 'Time::Piece', $VERSION ); diff --git a/gnu/usr.bin/perl/cpan/Time-Piece/Piece.xs b/gnu/usr.bin/perl/cpan/Time-Piece/Piece.xs index 8164cdd73a9..757c1af765a 100644 --- a/gnu/usr.bin/perl/cpan/Time-Piece/Piece.xs +++ b/gnu/usr.bin/perl/cpan/Time-Piece/Piece.xs @@ -1,15 +1,8 @@ -#ifdef __cplusplus -extern "C" { -#endif #define PERL_NO_GET_CONTEXT #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include -#ifdef __cplusplus -} -#endif - #define DAYS_PER_YEAR 365 #define DAYS_PER_QYEAR (4*DAYS_PER_YEAR+1) diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm b/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm index 744ca7228b8..debfc2d1af9 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/Fatal.pm @@ -55,7 +55,7 @@ use constant ERROR_58_HINTS => q{Non-subroutine %s hints for %s are not supporte use constant MIN_IPC_SYS_SIMPLE_VER => 0.12; -our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg::Version +our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg::Version our $Debug ||= 0; @@ -170,6 +170,8 @@ my %TAGS = ( ':2.32' => [qw(:default)], ':2.33' => [qw(:default)], ':2.34' => [qw(:default)], + ':2.35' => [qw(:default)], + ':2.36' => [qw(:default)], ); @@ -1088,6 +1090,7 @@ sub _one_invocation { my $code = qq[ no warnings qw(unopened uninitialized numeric); no if \$\] >= 5.017011, warnings => "experimental::smartmatch"; + no if \$warnings::Offsets{"deprecated::smartmatch"}, warnings => "deprecated"; if (wantarray) { my \@results = $call(@argv); diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm index 0c1b9ac04c4..61e894066d6 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie.pm @@ -9,7 +9,7 @@ our $VERSION; # ABSTRACT: Replace functions with ones that succeed or die with lexical scope BEGIN { - our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg::Version + our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg::Version } use constant ERROR_WRONG_FATAL => q{ diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/Guard.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/Guard.pm index 2be221d410b..1ee8a466817 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/Guard.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/Guard.pm @@ -4,7 +4,7 @@ use strict; use warnings; # ABSTRACT: Wrapper class for calling subs at end of scope -our $VERSION = '2.34'; # VERSION +our $VERSION = '2.36'; # VERSION # This code schedules the cleanup of subroutines at the end of # scope. It's directly inspired by chocolateboy's excellent diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/GuardStack.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/GuardStack.pm index 8cb1be1fa21..8365b161f4d 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/GuardStack.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Scope/GuardStack.pm @@ -6,7 +6,7 @@ use warnings; use autodie::Scope::Guard; # ABSTRACT: Hook stack for managing scopes via %^H -our $VERSION = '2.34'; # VERSION +our $VERSION = '2.36'; # VERSION my $H_KEY_STEM = __PACKAGE__ . '/guard'; my $COUNTER = 0; diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Util.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Util.pm index 95de13eb224..9988b59ae10 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Util.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/Util.pm @@ -14,7 +14,7 @@ our @EXPORT_OK = qw( on_end_of_compile_scope ); -our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version +our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Internal Utility subroutines for autodie and Fatal @@ -179,7 +179,7 @@ autodie::Util - Internal Utility subroutines for autodie and Fatal =head1 DESCRIPTION -Interal Utilities for autodie and Fatal! This module is not a part of +Internal Utilities for autodie and Fatal! This module is not a part of autodie's public API. This module contains utility subroutines for abstracting away the @@ -237,7 +237,7 @@ this subroutine. Given a package name and a hashref mapping names to a subroutine reference (or C), this subroutine will install said subroutines on their given name in that module. If a name mapes to C, any -subroutine with that name in the target module will be remove +subroutine with that name in the target module will be removed (possibly "unshadowing" a CORE sub of same name). =head1 AUTHOR diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm index f4035d28c7f..36439d2b811 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception.pm @@ -6,7 +6,7 @@ use Carp qw(croak); use Scalar::Util qw(blessed); -our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version +our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Exceptions from autodying functions. our $DEBUG = 0; diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm index afe1617c84a..0a1ada68dfd 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/exception/system.pm @@ -5,7 +5,7 @@ use warnings; use parent 'autodie::exception'; use Carp qw(croak); -our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version +our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Exceptions from autodying system(). diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm index 3778cc75dd4..42e6e9b4dae 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/hints.pm @@ -5,7 +5,7 @@ use warnings; use constant PERL58 => ( $] < 5.009 ); -our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version +our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version # ABSTRACT: Provide hints about user subroutines to autodie diff --git a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/skip.pm b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/skip.pm index 32aba04fa51..4df68914979 100644 --- a/gnu/usr.bin/perl/cpan/autodie/lib/autodie/skip.pm +++ b/gnu/usr.bin/perl/cpan/autodie/lib/autodie/skip.pm @@ -2,7 +2,7 @@ package autodie::skip; use strict; use warnings; -our $VERSION = '2.34'; # VERSION +our $VERSION = '2.36'; # VERSION # This package exists purely so people can inherit from it, # which isn't at all how roles are supposed to work, but it's diff --git a/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t b/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t index ab6f07de44e..54d3b16ccbc 100755 --- a/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t +++ b/gnu/usr.bin/perl/cpan/autodie/t/exceptions.t @@ -8,8 +8,11 @@ BEGIN { plan skip_all => "Perl 5.10 only tests" if $] < 5.010; } # Basic tests should go in basic_exceptions.t use 5.010; +use warnings (); use constant NO_SUCH_FILE => 'this_file_had_better_not_exist_xyzzy'; no if $] >= 5.017011, warnings => "experimental::smartmatch"; +no if exists $warnings::Offsets{"deprecated::smartmatch"}, + warnings => "deprecated"; plan 'no_plan'; diff --git a/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach.pm b/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach.pm index 530c7815dfb..82bc732c450 100644 --- a/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach.pm +++ b/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach.pm @@ -1,4 +1,4 @@ -package pujHa'ghach; +package pujHa::ghach; # Translator notes: reH Hegh is Kligon for "always dying". # It was the original name for this testing pragma, but @@ -20,7 +20,7 @@ use warnings; use parent qw(autodie); sub exception_class { - return "pujHa'ghach::Dotlh"; # Dotlh - status + return "pujHa::ghach::Dotlh"; # Dotlh - status } 1; diff --git a/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm b/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm index 2fbf3db455d..b55bee55e6e 100644 --- a/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm +++ b/gnu/usr.bin/perl/cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm @@ -1,4 +1,4 @@ -package pujHa'ghach::Dotlh; +package pujHa::ghach::Dotlh; # Translator notes: Dotlh = status diff --git a/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigFloat/Trace.pm b/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigFloat/Trace.pm index 8fc67e95c9f..14baa9f292b 100644 --- a/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigFloat/Trace.pm +++ b/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigFloat/Trace.pm @@ -10,7 +10,7 @@ use Math::BigFloat; our @ISA = qw(Exporter Math::BigFloat); -our $VERSION = '0.65'; +our $VERSION = '0.66'; use overload; # inherit overload from Math::BigFloat diff --git a/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigInt/Trace.pm b/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigInt/Trace.pm index 8808ee69b65..16ac187abbf 100644 --- a/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigInt/Trace.pm +++ b/gnu/usr.bin/perl/cpan/bignum/lib/Math/BigInt/Trace.pm @@ -10,7 +10,7 @@ use Math::BigInt; our @ISA = qw(Exporter Math::BigInt); -our $VERSION = '0.65'; +our $VERSION = '0.66'; use overload; # inherit overload from Math::BigInt diff --git a/gnu/usr.bin/perl/cpan/bignum/lib/bigint.pm b/gnu/usr.bin/perl/cpan/bignum/lib/bigint.pm index bb68d5183ac..d5038f42a03 100644 --- a/gnu/usr.bin/perl/cpan/bignum/lib/bigint.pm +++ b/gnu/usr.bin/perl/cpan/bignum/lib/bigint.pm @@ -5,7 +5,7 @@ use warnings; use Carp qw< carp croak >; -our $VERSION = '0.65'; +our $VERSION = '0.66'; use Exporter; our @ISA = qw( Exporter ); @@ -553,8 +553,8 @@ Load a different math lib, see L. Override the built-in hex() method with a version that can handle big numbers. This overrides it by exporting it to the current package. Under Perl v5.10.0 and -higher, this is not so necessary, as hex() is lexically overridden in the -current scope whenever the C pragma is active. +higher, this is not necessary, as hex() is lexically overridden in the current +scope whenever the C pragma is active. =item oct @@ -800,8 +800,8 @@ Some cool command line examples to impress the Python crowd ;) You might want to compare them to the results under -Mbigfloat or -Mbigrat: perl -Mbigint -le 'print sqrt(33)' - perl -Mbigint -le 'print 2*255' - perl -Mbigint -le 'print 4.5+2*255' + perl -Mbigint -le 'print 2**255' + perl -Mbigint -le 'print 4.5+2**255' perl -Mbigint -le 'print 123->is_odd()' perl -Mbigint=l,GMP -le 'print 7 ** 7777' diff --git a/gnu/usr.bin/perl/cpan/bignum/lib/bignum.pm b/gnu/usr.bin/perl/cpan/bignum/lib/bignum.pm index a0ef30bdbec..d738d6dc987 100644 --- a/gnu/usr.bin/perl/cpan/bignum/lib/bignum.pm +++ b/gnu/usr.bin/perl/cpan/bignum/lib/bignum.pm @@ -5,7 +5,7 @@ use warnings; use Carp qw< carp croak >; -our $VERSION = '0.65'; +our $VERSION = '0.66'; use Exporter; our @ISA = qw( Exporter ); diff --git a/gnu/usr.bin/perl/cpan/bignum/lib/bigrat.pm b/gnu/usr.bin/perl/cpan/bignum/lib/bigrat.pm index 371138d2b02..8dabb93f11a 100644 --- a/gnu/usr.bin/perl/cpan/bignum/lib/bigrat.pm +++ b/gnu/usr.bin/perl/cpan/bignum/lib/bigrat.pm @@ -5,7 +5,7 @@ use warnings; use Carp qw< carp croak >; -our $VERSION = '0.65'; +our $VERSION = '0.66'; use Exporter; our @ISA = qw( Exporter ); diff --git a/gnu/usr.bin/perl/cpan/bignum/t/infnan-bignum.t b/gnu/usr.bin/perl/cpan/bignum/t/infnan-bignum.t deleted file mode 100644 index 9224b823afa..00000000000 --- a/gnu/usr.bin/perl/cpan/bignum/t/infnan-bignum.t +++ /dev/null @@ -1,100 +0,0 @@ -# -*- mode: perl; -*- - -use strict; -use warnings; - -use Test::More tests => 66; - -use bignum downgrade => undef; - -my $class = "Math::BigInt"; -my $x; - -############################################################################### - -note("inf tests"); - -$x = 1 + inf; -note("\n\n" . $x . "\n\n"); - -$x = 1 + inf; -is(ref($x), $class, "\$x = 1 + inf makes a $class"); -is($x->bstr(), "inf", '$x = 1 + inf; $x->bstr() = "inf"'); - -$x = 1 * inf; -is(ref($x), $class, "\$x = 1 * inf makes a $class"); -is($x->bstr(), "inf", '$x = 1 * inf; $x->bstr() = "inf"'); - -# these don't work without exporting inf() -$x = inf; -is(ref($x), $class, "\$x = inf makes a $class"); -is($x->bstr(), "inf", '$x = inf; $x->bstr() = "inf"'); - -$x = inf + inf; -is(ref($x), $class, "\$x = inf + inf makes a $class"); -is($x->bstr(), "inf", '$x = inf + inf; $x->bstr() = "inf"'); - -$x = inf * inf; -is(ref($x), $class, "\$x = inf * inf makes a $class"); -is($x->bstr(), "inf", '$x = inf * inf; $x->bstr() = "inf"'); - -############################################################################### - -note("NaN tests"); - -$x = 1 + NaN; -is(ref($x), $class, "\$x = 1 + NaN makes a $class"); -is($x->bstr(), "NaN", '$x = 1 + NaN; $x->bstr() = "NaN"'); - -$x = 1 * NaN; -is(ref($x), $class, "\$x = 1 * NaN makes a $class"); -is($x->bstr(), "NaN", '$x = 1 * NaN; $x->bstr() = "NaN"'); - -# these don't work without exporting NaN() -$x = NaN; -is(ref($x), $class, "\$x = NaN makes a $class"); -is($x->bstr(), "NaN", '$x = NaN; $x->bstr() = "NaN"'); - -$x = NaN + NaN; -is(ref($x), $class, "\$x = NaN + NaN makes a $class"); -is($x->bstr(), "NaN", '$x = NaN + NaN; $x->bstr() = "NaN"'); - -$x = NaN * NaN; -is(ref($x), $class, "\$x = NaN * NaN makes a $class"); -is($x->bstr(), "NaN", '$x = NaN * NaN; $x->bstr() = "NaN"'); - -############################################################################### - -note("mixed tests"); - -# these don't work without exporting NaN() or inf() - -$x = NaN + inf; -is(ref($x), $class, "\$x = NaN + inf makes a $class"); -is($x->bstr(), "NaN", '$x = NaN + inf; $x->bstr() = "NaN"'); - -$x = NaN * inf; -is(ref($x), $class, "\$x = NaN * inf makes a $class"); -is($x->bstr(), "NaN", '$x = NaN * inf; $x->bstr() = "NaN"'); - -$x = inf * NaN; -is(ref($x), $class, "\$x = inf * NaN makes a $class"); -is($x->bstr(), "NaN", '$x = inf * NaN; $x->bstr() = "NaN"'); - -############################################################################### -# inf and NaN as strings. - -for my $nan (qw/ nan naN nAn nAN Nan NaN NAn NAN /) { - my $x = 1 + $nan; - is($x->bstr(), "NaN", qq|\$x = 1 + "$nan"|); - is(ref($x), $class, "\$x is a $class"); -} - -for my $inf (qw/ inf inF iNf iNF Inf InF INf INF - infinity Infinity InFiNiTy iNfInItY - /) -{ - my $x = 1 + $inf; - is($x->bstr(), "inf", qq|\$x = 1 + "$inf"|); - is(ref($x), $class, "\$x is a $class"); -} diff --git a/gnu/usr.bin/perl/cpan/experimental/lib/experimental.pm b/gnu/usr.bin/perl/cpan/experimental/lib/experimental.pm index ab8a2f06ac0..3d89cbd5b11 100644 --- a/gnu/usr.bin/perl/cpan/experimental/lib/experimental.pm +++ b/gnu/usr.bin/perl/cpan/experimental/lib/experimental.pm @@ -1,5 +1,5 @@ package experimental; -$experimental::VERSION = '0.028'; +$experimental::VERSION = '0.031'; use strict; use warnings; use version (); @@ -8,6 +8,7 @@ BEGIN { eval { require feature } }; use Carp qw/croak carp/; my %warnings = map { $_ => 1 } grep { /^experimental::/ } keys %warnings::Offsets; +my %removed_warnings = map { $_ => 1 } grep { /^experimental::/ } keys %warnings::NoOp; my %features = map { $_ => 1 } $] > 5.015006 ? keys %feature::feature : do { my @features; if ($] >= 5.010) { @@ -28,7 +29,7 @@ my %min_version = ( declared_refs => '5.26.0', defer => '5.35.4', evalbytes => '5.16.0', - extra_paired_delims => '5.35.9', + extra_paired_delimiters => '5.35.9', fc => '5.16.0', for_list => '5.35.5', isa => '5.31.7', @@ -73,6 +74,9 @@ sub _enable { feature->import($pragma); _enable(@{ $additional{$pragma} }) if $additional{$pragma}; } + elsif ($removed_warnings{"experimental::$pragma"}) { + _enable(@{ $additional{$pragma} }) if $additional{$pragma}; + } elsif (not exists $min_version{$pragma}) { croak "Can't enable unknown feature $pragma"; } @@ -136,7 +140,7 @@ experimental - Experimental features made easy =head1 VERSION -version 0.027 +version 0.031 =head1 SYNOPSIS @@ -201,6 +205,11 @@ This was added in perl 5.26.0. This was added in perl 5.36.0 +=item * C - enables the use of more paired string delimiters than the +traditional four, S >>>, S>, S>, and S>. + +This was added in perl 5.36. + =item * C - allows iterating over multiple values at a time with C This was added in perl 5.36.0 @@ -215,7 +224,7 @@ This was added in perl 5.10.0 and removed in perl 5.24.0. =item * C - allow the use of lexical subroutines. -This was added in 5.18.0. +This was added in 5.18.0, and became non-experimental (and always enabled) in 5.26.0. =item * C - allow the use of postfix dereferencing expressions @@ -246,10 +255,14 @@ This was added in perl 5.20.0. This was added in perl 5.10.0, but it should be noted there are significant incompatibilities between 5.10.0 and 5.10.1. +The feature is going to be deprecated in perl 5.38.0, and removed in 5.42.0. + =item * C - allow the use of C<~~>, given, and when This was added in perl 5.10.0. +The feature is going to be deprecated in perl 5.38.0, and removed in 5.42.0. + =item * C - allow the use of C and C This was added in perl 5.34.0 diff --git a/gnu/usr.bin/perl/cpan/experimental/t/basic.t b/gnu/usr.bin/perl/cpan/experimental/t/basic.t index 248b56c5015..50a2c3d276b 100644 --- a/gnu/usr.bin/perl/cpan/experimental/t/basic.t +++ b/gnu/usr.bin/perl/cpan/experimental/t/basic.t @@ -18,7 +18,9 @@ if ($] >= 5.010000) { END } -if ($] >= 5.010001) { +use warnings (); +if ( $] >= 5.010001 + && ( $] < 5.017011 || exists $warnings::Offsets{"experimental::smartmatch"} ) ) { is (eval <<'END', 1, 'switch compiles') or diag $@; use experimental 'switch'; sub bar { 1 }; @@ -34,7 +36,8 @@ if ($] >= 5.010001) { END } -if ($] >= 5.010001) { +if ( $] >= 5.010001 + && ( $] < 5.017011 || exists $warnings::Offsets{"experimental::smartmatch"} ) ) { is (eval <<'END', 1, 'smartmatch compiles') or diag $@; use experimental 'smartmatch'; sub baz { 1 }; diff --git a/gnu/usr.bin/perl/cpan/libnet/Makefile.PL b/gnu/usr.bin/perl/cpan/libnet/Makefile.PL index df525269b21..141b27635e1 100644 --- a/gnu/usr.bin/perl/cpan/libnet/Makefile.PL +++ b/gnu/usr.bin/perl/cpan/libnet/Makefile.PL @@ -66,7 +66,7 @@ MAIN: { ABSTRACT => 'Collection of network protocol modules', AUTHOR => 'Graham Barr , Steve Hay ', LICENSE => 'perl_5', - VERSION => '3.13', + VERSION => '3.15', META_MERGE => { 'meta-spec' => { diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Cmd.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Cmd.pm index b8dc7289377..f10df74354f 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Cmd.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Cmd.pm @@ -1,7 +1,7 @@ # Net::Cmd.pm # # Copyright (C) 1995-2006 Graham Barr. All rights reserved. -# Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. +# Copyright (C) 2013-2016, 2020, 2022 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -26,7 +26,7 @@ BEGIN { } } -our $VERSION = "3.14"; +our $VERSION = "3.15"; our @ISA = qw(Exporter); our @EXPORT = qw(CMD_INFO CMD_OK CMD_MORE CMD_REJECT CMD_ERROR CMD_PENDING); @@ -887,7 +887,7 @@ libnet as of version 1.22_02. Copyright (C) 1995-2006 Graham Barr. All rights reserved. -Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved. +Copyright (C) 2013-2016, 2020, 2022 Steve Hay. All rights reserved. =head1 LICENCE @@ -897,11 +897,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Config.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Config.pm index b9eb82792bc..bdbd0034d87 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Config.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Config.pm @@ -18,7 +18,7 @@ use Socket qw(inet_aton inet_ntoa); our @EXPORT = qw(%NetConfig); our @ISA = qw(Net::LocalCfg Exporter); -our $VERSION = "3.14"; +our $VERSION = "3.15"; our($CONFIGURE, $LIBNET_CFG); @@ -368,11 +368,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Domain.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Domain.pm index 7c017f24357..bf1ad2547bd 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Domain.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Domain.pm @@ -19,7 +19,7 @@ use Net::Config; our @ISA = qw(Exporter); our @EXPORT_OK = qw(hostname hostdomain hostfqdn domainname); -our $VERSION = "3.14"; +our $VERSION = "3.15"; my ($host, $domain, $fqdn) = (undef, undef, undef); @@ -395,11 +395,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP.pm index b6b220df1f3..cee0b2846be 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP.pm @@ -1,7 +1,7 @@ # Net::FTP.pm # # Copyright (C) 1995-2004 Graham Barr. All rights reserved. -# Copyright (C) 2013-2017, 2020 Steve Hay. All rights reserved. +# Copyright (C) 2013-2017, 2020, 2022 Steve Hay. All rights reserved. # This module is free software; you can redistribute it and/or modify it under # the same terms as Perl itself, i.e. under the terms of either the GNU General # Public License or the Artistic License, as specified in the F file. @@ -23,7 +23,7 @@ use Net::Config; use Socket; use Time::Local; -our $VERSION = '3.14'; +our $VERSION = '3.15'; our $IOCLASS; my $family_key; @@ -1052,14 +1052,7 @@ sub _dataconn { Timeout => $ftp->timeout, can_ssl() ? ( SSL_startHandshake => 0, - $ftp->is_SSL ? ( - SSL_reuse_ctx => $ftp, - SSL_verifycn_name => ${*$ftp}{net_ftp_tlsargs}{SSL_verifycn_name}, - # This will cause the use of SNI if supported by IO::Socket::SSL. - $ftp->can_client_sni ? ( - SSL_hostname => ${*$ftp}{net_ftp_tlsargs}{SSL_hostname} - ):(), - ) :( %{${*$ftp}{net_ftp_tlsargs}} ), + %{${*$ftp}{net_ftp_tlsargs}}, ):(), ) or return; } elsif (my $listen = delete ${*$ftp}{net_ftp_listen}) { @@ -1966,19 +1959,6 @@ Reinitialize the connection, flushing all I/O and account information. =back -=head1 EXAMPLES - -For an example of the use of Net::FTP see - -=over 4 - -=item L - -C is a program that can retrieve, send, or list files via -the FTP protocol in a non-interactive manner. - -=back - =head1 EXPORTS I. @@ -2034,7 +2014,7 @@ libnet as of version 1.22_02. Copyright (C) 1995-2004 Graham Barr. All rights reserved. -Copyright (C) 2013-2017, 2020 Steve Hay. All rights reserved. +Copyright (C) 2013-2017, 2020, 2022 Steve Hay. All rights reserved. =head1 LICENCE @@ -2044,11 +2024,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/A.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/A.pm index 1ea48310237..9b93e16cbc8 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/A.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/A.pm @@ -13,7 +13,7 @@ use Carp; use Net::FTP::dataconn; our @ISA = qw(Net::FTP::dataconn); -our $VERSION = "3.14"; +our $VERSION = "3.15"; our $buf; diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/E.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/E.pm index 7b8c2ea8b13..a10b9729f00 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/E.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/E.pm @@ -8,6 +8,6 @@ use warnings; use Net::FTP::I; our @ISA = qw(Net::FTP::I); -our $VERSION = "3.14"; +our $VERSION = "3.15"; 1; diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/I.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/I.pm index afcc51f71e2..1c2b8a60882 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/I.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/I.pm @@ -13,7 +13,7 @@ use Carp; use Net::FTP::dataconn; our @ISA = qw(Net::FTP::dataconn); -our $VERSION = "3.14"; +our $VERSION = "3.15"; our $buf; diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/L.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/L.pm index 9dfe4912c94..d04fd920aac 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/L.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/L.pm @@ -8,6 +8,6 @@ use warnings; use Net::FTP::I; our @ISA = qw(Net::FTP::I); -our $VERSION = "3.14"; +our $VERSION = "3.15"; 1; diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/dataconn.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/dataconn.pm index 979be7c9c28..3db008df957 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/dataconn.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/FTP/dataconn.pm @@ -13,7 +13,7 @@ use Carp; use Errno; use Net::Cmd; -our $VERSION = '3.14'; +our $VERSION = '3.15'; $Net::FTP::IOCLASS or die "please load Net::FTP before Net::FTP::dataconn"; our @ISA = $Net::FTP::IOCLASS; @@ -224,11 +224,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/NNTP.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/NNTP.pm index bbdc8843d26..59ed0ef5b39 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/NNTP.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/NNTP.pm @@ -19,7 +19,7 @@ use Net::Cmd; use Net::Config; use Time::Local; -our $VERSION = "3.14"; +our $VERSION = "3.15"; # Code for detecting if we can use SSL my $ssl_class = eval { @@ -1308,11 +1308,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Netrc.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Netrc.pm index 3dec11e733f..fe9abb9ddd3 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Netrc.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Netrc.pm @@ -16,7 +16,7 @@ use warnings; use Carp; use FileHandle; -our $VERSION = "3.14"; +our $VERSION = "3.15"; our $TESTING; @@ -353,11 +353,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/POP3.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/POP3.pm index a4ed8ebbe70..e6239c7c86b 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/POP3.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/POP3.pm @@ -18,7 +18,7 @@ use IO::Socket; use Net::Cmd; use Net::Config; -our $VERSION = "3.14"; +our $VERSION = "3.15"; # Code for detecting if we can use SSL my $ssl_class = eval { @@ -869,11 +869,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/SMTP.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/SMTP.pm index c04a362d195..e592bb53e45 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/SMTP.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/SMTP.pm @@ -19,7 +19,7 @@ use Net::Cmd; use Net::Config; use Socket; -our $VERSION = "3.14"; +our $VERSION = "3.15"; # Code for detecting if we can use SSL my $ssl_class = eval { @@ -1052,11 +1052,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Time.pm b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Time.pm index 7906c1ad228..237c1747a48 100644 --- a/gnu/usr.bin/perl/cpan/libnet/lib/Net/Time.pm +++ b/gnu/usr.bin/perl/cpan/libnet/lib/Net/Time.pm @@ -22,7 +22,7 @@ use Net::Config; our @ISA = qw(Exporter); our @EXPORT_OK = qw(inet_time inet_daytime); -our $VERSION = "3.14"; +our $VERSION = "3.15"; our $TIMEOUT = 120; @@ -190,11 +190,11 @@ License or the Artistic License, as specified in the F file. =head1 VERSION -Version 3.14 +Version 3.15 =head1 DATE -23 Dec 2020 +20 March 2023 =head1 HISTORY diff --git a/gnu/usr.bin/perl/cpan/parent/lib/parent.pm b/gnu/usr.bin/perl/cpan/parent/lib/parent.pm index f2405efe7ee..483aa3e0257 100644 --- a/gnu/usr.bin/perl/cpan/parent/lib/parent.pm +++ b/gnu/usr.bin/perl/cpan/parent/lib/parent.pm @@ -1,7 +1,7 @@ package parent; use strict; -our $VERSION = '0.238'; +our $VERSION = '0.241'; sub import { my $class = shift; diff --git a/gnu/usr.bin/perl/cpan/parent/t/parent.t b/gnu/usr.bin/perl/cpan/parent/t/parent.t index a29a3f32837..51fee125085 100755 --- a/gnu/usr.bin/perl/cpan/parent/t/parent.t +++ b/gnu/usr.bin/perl/cpan/parent/t/parent.t @@ -56,8 +56,8 @@ is( $Eval1::VERSION, '1.01' ); is( $Eval2::VERSION, '1.02' ); -my $expected= q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(\@INC contains:/}; -$expected= q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(you may need to install the reallyReAlLyNotexists module\) \(\@INC contains:/} +my $expected= q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(\@INC[\w ]+:/}; +$expected= q{/^Can't locate reallyReAlLyNotexists.pm in \@INC \(you may need to install the reallyReAlLyNotexists module\) \(\@INC[\w ]+:/} if 5.017005 <= $]; eval q{use parent 'reallyReAlLyNotexists'}; @@ -74,4 +74,3 @@ like( $@, $expected, ' still failing on 2nd load'); use parent -norequire, 'Has::Version_0'; ::is( $Has::Version_0::VERSION, 0, '$VERSION==0 preserved' ); } - diff --git a/gnu/usr.bin/perl/cpan/podlators/Makefile.PL b/gnu/usr.bin/perl/cpan/podlators/Makefile.PL index ff76df5f9f7..36e47ab18dc 100644 --- a/gnu/usr.bin/perl/cpan/podlators/Makefile.PL +++ b/gnu/usr.bin/perl/cpan/podlators/Makefile.PL @@ -4,7 +4,7 @@ # which only supports that build method, and because it is a dependency of # other build systems like Module::Build. # -# Copyright 1999-2001, 2008, 2010, 2012, 2014-2016, 2018-2019 +# Copyright 1999-2001, 2008, 2010, 2012, 2014-2016, 2018-2019, 2022 # Russ Allbery # # This program is free software; you may redistribute it and/or modify it @@ -30,7 +30,7 @@ sub dist_version { open(my $fh, '<', File::Spec->catfile('lib', 'Pod', 'Man.pm')) or die "$0: cannot open lib/Pod/Man.pm: $!\n"; while (defined(my $line = <$fh>)) { - if ($line =~ m{ \A \$VERSION \s+ = \s+ '([^\']+)' }xms) { + if ($line =~ m{ \A (?:our \s+)? \$VERSION \s+ = \s+ '([^\']+)' }xms) { close($fh) or die "$0: cannot close lib/Pod/Man.pm\n"; return $1; } @@ -81,7 +81,8 @@ sub man1pod { # The hash of all the metadata. This will be modified before WriteMakefile to # remove keys not supported by the local version of ExtUtils::MakeMaker. my $dist_version = dist_version(); -my %metadata = ( +my %metadata = ( + #<<< NAME => 'Pod', DISTNAME => 'podlators', ABSTRACT => 'Convert POD data to various other formats', @@ -89,7 +90,8 @@ my %metadata = ( LICENSE => 'perl_5', EXE_FILES => [scripts('pod2text', 'pod2man')], VERSION_FROM => 'lib/Pod/Man.pm', - MIN_PERL_VERSION => '5.008', + MIN_PERL_VERSION => '5.010', + #>>> # Use *.PL files to generate the driver scripts so that we get the correct # invocation of Perl on non-UNIX platforms. @@ -107,11 +109,11 @@ my %metadata = ( }, # Clean some additional files. - clean => { FILES => File::Spec->catdir('t', 'tmp') }, + clean => { FILES => File::Spec->catdir('t', 'tmp') }, realclean => { FILES => scalar(scripts('pod2text', 'pod2man')) }, # Dependencies on other modules. - PREREQ_PM => { 'Pod::Simple' => 3.06 }, + PREREQ_PM => { 'Pod::Simple' => 3.26 }, # Older versions of ExtUtils::MakeMaker don't pick up nested test # directories by default. @@ -125,41 +127,40 @@ my %metadata = ( # Additional metadata. META_ADD => { 'meta-spec' => { version => 2 }, - provides => { + provides => { 'Pod::Man' => { - file => 'lib/Pod/Man.pm', + file => 'lib/Pod/Man.pm', version => $dist_version, }, 'Pod::ParseLink' => { - file => 'lib/Pod/ParseLink.pm', + file => 'lib/Pod/ParseLink.pm', version => $dist_version, }, 'Pod::Text' => { - file => 'lib/Pod/Text.pm', + file => 'lib/Pod/Text.pm', version => $dist_version, }, 'Pod::Text::Color' => { - file => 'lib/Pod/Text/Color.pm', + file => 'lib/Pod/Text/Color.pm', version => $dist_version, }, 'Pod::Text::Overstrike' => { - file => 'lib/Pod/Text/Overstrike.pm', + file => 'lib/Pod/Text/Overstrike.pm', version => $dist_version, }, 'Pod::Text::Termcap' => { - file => 'lib/Pod/Text/Termcap.pm', + file => 'lib/Pod/Text/Termcap.pm', version => $dist_version, }, }, resources => { bugtracker => { - mailto => 'bug-podlators@rt.cpan.org', - web => 'https://rt.cpan.org/Dist/Display.html?Name=podlators', + web => 'https://github.com/rra/podlators/issues', }, - homepage => 'https://www.eyrie.org/~eagle/software/podlators/', + homepage => 'https://www.eyrie.org/~eagle/software/podlators/', repository => { - url => 'https://github.com/rra/podlators.git', - web => 'https://github.com/rra/podlators', + url => 'https://github.com/rra/podlators.git', + web => 'https://github.com/rra/podlators', type => 'git', }, }, @@ -169,8 +170,8 @@ my %metadata = ( # Remove keys that aren't supported by this version of ExtUtils::MakeMaker. # This hash maps keys to the minimum supported version. my %supported = ( - LICENSE => 6.31, - META_ADD => 6.46, + LICENSE => 6.31, + META_ADD => 6.46, MIN_PERL_VERSION => 6.48, ); for my $key (keys(%supported)) { 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 45fd9bc0527..5ed95bbc90d 100644 --- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm +++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Man.pm @@ -14,36 +14,33 @@ package Pod::Man; -use 5.008; +use 5.010; use strict; use warnings; -use subs qw(makespace); -use vars qw(@ISA %ESCAPES $PREAMBLE $VERSION); - use Carp qw(carp croak); use Pod::Simple (); # Conditionally import Encode and set $HAS_ENCODE if it is available. This is # required to support building as part of Perl core, since podlators is built # before Encode is. -our $HAS_ENCODE; +my $HAS_ENCODE; BEGIN { $HAS_ENCODE = eval { require Encode }; } -@ISA = qw(Pod::Simple); - -$VERSION = '4.14'; - -# Set the debugging level. If someone has inserted a debug function into this -# class already, use that. Otherwise, use any Pod::Simple debug function -# that's defined, and failing that, define a debug level of 10. -BEGIN { - my $parent = defined (&Pod::Simple::DEBUG) ? \&Pod::Simple::DEBUG : undef; - unless (defined &DEBUG) { - *DEBUG = $parent || sub () { 10 }; - } +our @ISA = qw(Pod::Simple); +our $VERSION = '5.01'; + +# Ensure that $Pod::Simple::nbsp and $Pod::Simple::shy are available. Code +# taken from Pod::Simple 3.32, but was only added in 3.30. +my ($NBSP, $SHY); +if ($Pod::Simple::VERSION ge 3.30) { + $NBSP = $Pod::Simple::nbsp; + $SHY = $Pod::Simple::shy; +} else { + $NBSP = chr utf8::unicode_to_native(0xA0); + $SHY = chr utf8::unicode_to_native(0xAD); } # Import the ASCII constant from Pod::Simple. This is true iff we're in an @@ -51,15 +48,12 @@ BEGIN { # generally only false for EBCDIC. BEGIN { *ASCII = \&Pod::Simple::ASCII } -# Pretty-print a data structure. Only used for debugging. -BEGIN { *pretty = \&Pod::Simple::pretty } - # Formatting instructions for various types of blocks. cleanup makes hyphens # hard, adds spaces between consecutive underscores, and escapes backslashes. # convert translates characters into escapes. guesswork means to apply the -# transformations done by the guesswork sub. literal says to protect literal -# quotes from being turned into UTF-8 quotes. By default, all transformations -# are on except literal, but some elements override. +# transformations done by the guesswork sub (if enabled). literal says to +# protect literal quotes from being turned into UTF-8 quotes. By default, all +# transformations are on except literal, but some elements override. # # DEFAULT specifies the default settings. All other elements should list only # those settings that they are overriding. Data indicates =for roff blocks, @@ -75,6 +69,98 @@ my %FORMATTING = ( X => { cleanup => 0, guesswork => 0 }, ); +# Try to map an encoding as understood by Perl Encode to an encoding +# understood by groff's preconv. Encode doesn't care about hyphens or +# capitalization, but preconv does. The key is the canonicalized Encode +# encoding, and the value is something preconv might understand. +# +# FreeBSD mandoc only understands utf-8 and iso-latin-1 as of 2022-09-24. +# groff preconv prefers iso-8859-1, but also understands iso-latin-1, so +# convert ISO-8859-1 to iso-latin-1 for FreeBSD. +my %ENCODINGS = ( + ascii => 'us-ascii', + big5 => 'big5', + big5eten => 'big5', + cp950 => 'big5', + cp1047 => 'cp1047', + euccn => 'gb2312', + eucjp => 'euc-jp', + euckr => 'euc-kr', + gb2312 => 'gb2312', + gb2312raw => 'gb2312', + iso88591 => 'iso-latin-1', + iso88592 => 'iso-8859-2', + iso88595 => 'iso-8859-5', + iso88597 => 'iso-8859-7', + iso88599 => 'iso-8859-9', + iso885913 => 'iso-8859-13', + iso885915 => 'iso-8859-15', + koi8r => 'koi8-r', + latin1 => 'iso-8859-1', + usascii => 'us-ascii', + utf8 => 'utf-8', + utf16 => 'utf-16', + utf16be => 'utf-16be', + utf16le => 'utf-16le', +); + +############################################################################## +# Translation tables +############################################################################## + +# The following table is adapted from Tom Christiansen's pod2man. It is only +# used with roff output. It assumes that the standard preamble has already +# been printed, since that's what defines all of the accent marks. We really +# want to do something better than this when *roff actually supports other +# character sets itself, since these results are pretty poor. +# +# This only works in an ASCII world. What to do in a non-ASCII world is very +# unclear, so we just output what we get and hope for the best. +my %ESCAPES; +@ESCAPES{0xA0 .. 0xFF} = ( + $NBSP, undef, undef, undef, undef, undef, undef, undef, + undef, undef, undef, undef, undef, $SHY, undef, undef, + + undef, undef, undef, undef, undef, undef, undef, undef, + undef, undef, undef, undef, undef, undef, undef, undef, + + "A\\*`", "A\\*'", "A\\*^", "A\\*~", "A\\*:", "A\\*o", "\\*(Ae", "C\\*,", + "E\\*`", "E\\*'", "E\\*^", "E\\*:", "I\\*`", "I\\*'", "I\\*^", "I\\*:", + + "\\*(D-", "N\\*~", "O\\*`", "O\\*'", "O\\*^", "O\\*~", "O\\*:", undef, + "O\\*/", "U\\*`", "U\\*'", "U\\*^", "U\\*:", "Y\\*'", "\\*(Th", "\\*8", + + "a\\*`", "a\\*'", "a\\*^", "a\\*~", "a\\*:", "a\\*o", "\\*(ae", "c\\*,", + "e\\*`", "e\\*'", "e\\*^", "e\\*:", "i\\*`", "i\\*'", "i\\*^", "i\\*:", + + "\\*(d-", "n\\*~", "o\\*`", "o\\*'", "o\\*^", "o\\*~", "o\\*:", undef, + "o\\*/" , "u\\*`", "u\\*'", "u\\*^", "u\\*:", "y\\*'", "\\*(th", "y\\*:", +) if ASCII; + +############################################################################## +# Utility functions +############################################################################## + +# Quote an argument to a macro. +# +# $arg - Intended argument to the macro +# +# Returns: $arg suitably escaped and quoted +sub _quote_macro_argument { + my ($arg) = @_; + if (length($arg) > 0 && $arg !~ m{ [\s\"] }xms) { + return $arg; + } + $arg =~ s{ \" }{""}xmsg; + return qq("$arg"); +} + +# Returns whether the given encoding needs a call to Encode::encode. +sub _needs_encode { + my ($encoding) = @_; + return $encoding ne 'roff' && $encoding ne 'groff'; +} + ############################################################################## # Object initialization ############################################################################## @@ -88,9 +174,6 @@ sub new { my $class = shift; my $self = $class->SUPER::new; - # Tell Pod::Simple not to handle S<> by automatically inserting  . - $self->nbsp_for_S (1); - # Tell Pod::Simple to keep whitespace whenever possible. if (my $preserve_whitespace = $self->can ('preserve_whitespace')) { $self->$preserve_whitespace (1); @@ -109,63 +192,84 @@ sub new { # to put them in our object as hash keys and values. This could cause # problems if we ever clash with Pod::Simple's own internal class # variables. - %$self = (%$self, @_); + my %opts = @_; + my @opts = map { ("opt_$_", $opts{$_}) } keys %opts; + %$self = (%$self, @opts); + + # Pod::Simple uses encoding internally, so we need to store it as + # ENCODING. Set the default to UTF-8 if not specified. + # + # Degrade to the old roff encoding if Encode is not available. + # + # Suppress the warning message when PERL_CORE is set, indicating this is + # running as part of the core Perl build. Perl builds podlators (and all + # pure Perl modules) before Encode and other XS modules, so Encode won't + # yet be available. Rely on the Perl core build to generate man pages + # later, after all the modules are available, so that UTF-8 handling will + # be correct. + my %options = @_; + if (defined $self->{opt_encoding}) { + $$self{ENCODING} = $self->{opt_encoding}; + } elsif (ASCII) { + $$self{ENCODING} = 'UTF-8'; + } else { + $$self{ENCODING} = 'groff'; + } + if (_needs_encode($$self{ENCODING}) && !$HAS_ENCODE) { + if (!$ENV{PERL_CORE}) { + carp ('encoding requested but Encode module not available,' + . ' falling back to groff escapes'); + } + $$self{ENCODING} = 'groff'; + } # Send errors to stderr if requested. - if ($$self{stderr} and not $$self{errors}) { - $$self{errors} = 'stderr'; + if ($self->{opt_stderr} and not $self->{opt_errors}) { + $self->{opt_errors} = 'stderr'; } - delete $$self{stderr}; + delete $self->{opt_stderr}; # Validate the errors parameter and act on it. - if (not defined $$self{errors}) { - $$self{errors} = 'pod'; - } - if ($$self{errors} eq 'stderr' || $$self{errors} eq 'die') { + $self->{opt_errors} //= 'pod'; + if ($self->{opt_errors} eq 'stderr' || $self->{opt_errors} eq 'die') { $self->no_errata_section (1); $self->complain_stderr (1); - if ($$self{errors} eq 'die') { - $$self{complain_die} = 1; + if ($self->{opt_errors} eq 'die') { + $self->{complain_die} = 1; } - } elsif ($$self{errors} eq 'pod') { + } elsif ($self->{opt_errors} eq 'pod') { $self->no_errata_section (0); $self->complain_stderr (0); - } elsif ($$self{errors} eq 'none') { + } elsif ($self->{opt_errors} eq 'none') { $self->no_errata_section (1); $self->no_whining (1); } else { - croak (qq(Invalid errors setting: "$$self{errors}")); - } - delete $$self{errors}; - - # Degrade back to non-utf8 if Encode is not available. - # - # Suppress the warning message when PERL_CORE is set, indicating this is - # running as part of the core Perl build. Perl builds podlators (and all - # pure Perl modules) before Encode and other XS modules, so Encode won't - # yet be available. Rely on the Perl core build to generate man pages - # later, after all the modules are available, so that UTF-8 handling will - # be correct. - if ($$self{utf8} and !$HAS_ENCODE) { - if (!$ENV{PERL_CORE}) { - carp ('utf8 mode requested but Encode module not available,' - . ' falling back to non-utf8'); - } - delete $$self{utf8}; + croak (qq(Invalid errors setting: "$self->{opt_errors}")); } + delete $self->{opt_errors}; # Initialize various other internal constants based on our arguments. $self->init_fonts; $self->init_quotes; $self->init_page; - # For right now, default to turning on all of the magic. - $$self{MAGIC_CPP} = 1; - $$self{MAGIC_EMDASH} = 1; - $$self{MAGIC_FUNC} = 1; - $$self{MAGIC_MANREF} = 1; - $$self{MAGIC_SMALLCAPS} = 1; - $$self{MAGIC_VARS} = 1; + # Configure guesswork based on options. + my $guesswork = $self->{opt_guesswork} || q{}; + my %guesswork = map { $_ => 1 } split(m{,}xms, $guesswork); + if (!%guesswork || $guesswork{all}) { + #<<< + $$self{GUESSWORK} = { + functions => 1, + manref => 1, + quoting => 1, + variables => 1, + }; + #>>> + } elsif ($guesswork{none}) { + $$self{GUESSWORK} = {}; + } else { + $$self{GUESSWORK} = {%guesswork}; + } return $self; } @@ -182,29 +286,41 @@ sub init_fonts { # Figure out the fixed-width font. If user-supplied, make sure that they # are the right length. - for (qw/fixed fixedbold fixeditalic fixedbolditalic/) { - my $font = $$self{$_}; - if (defined ($font) && (length ($font) < 1 || length ($font) > 2)) { - croak qq(roff font should be 1 or 2 chars, not "$font"); + for (qw(fixed fixedbold fixeditalic fixedbolditalic)) { + my $font = $self->{"opt_$_"}; + if (defined($font) && (length($font) < 1 || length($font) > 2)) { + croak(qq(roff font should be 1 or 2 chars, not "$font")); } } # Set the default fonts. We can't be sure portably across different # implementations what fixed bold-italic may be called (if it's even # available), so default to just bold. - $$self{fixed} ||= 'CW'; - $$self{fixedbold} ||= 'CB'; - $$self{fixeditalic} ||= 'CI'; - $$self{fixedbolditalic} ||= 'CB'; + #<<< + $self->{opt_fixed} ||= 'CW'; + $self->{opt_fixedbold} ||= 'CB'; + $self->{opt_fixeditalic} ||= 'CI'; + $self->{opt_fixedbolditalic} ||= 'CB'; + #>>> # Set up a table of font escapes. First number is fixed-width, second is # bold, third is italic. - $$self{FONTS} = { '000' => '\fR', '001' => '\fI', - '010' => '\fB', '011' => '\f(BI', - '100' => toescape ($$self{fixed}), - '101' => toescape ($$self{fixeditalic}), - '110' => toescape ($$self{fixedbold}), - '111' => toescape ($$self{fixedbolditalic}) }; + $self->{FONTS} = { + '000' => '\fR', + '001' => '\fI', + '010' => '\fB', + '011' => '\f(BI', + '100' => toescape($self->{opt_fixed}), + '101' => toescape($self->{opt_fixeditalic}), + '110' => toescape($self->{opt_fixedbold}), + '111' => toescape($self->{opt_fixedbolditalic}), + }; + + # Precalculate a regex that matches all fixed-width fonts, which will be + # used later by switchquotes. + my @fixedpat = map { quotemeta($self->{FONTS}{$_}) } qw(100 101 110 111); + my $fixedpat = join('|', @fixedpat); + $self->{FIXEDPAT} = qr{ $fixedpat }xms; } # Initialize the quotes that we'll be using for C<> text. This requires some @@ -215,32 +331,28 @@ sub init_quotes { my ($self) = (@_); # Handle the quotes option first, which sets both quotes at once. - $$self{quotes} ||= '"'; - if ($$self{quotes} eq 'none') { + $self->{opt_quotes} ||= '"'; + if ($self->{opt_quotes} eq 'none') { $$self{LQUOTE} = $$self{RQUOTE} = ''; - } elsif (length ($$self{quotes}) == 1) { - $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes}; - } elsif (length ($$self{quotes}) % 2 == 0) { - my $length = length ($$self{quotes}) / 2; - $$self{LQUOTE} = substr ($$self{quotes}, 0, $length); - $$self{RQUOTE} = substr ($$self{quotes}, $length); + } elsif (length ($self->{opt_quotes}) == 1) { + $$self{LQUOTE} = $$self{RQUOTE} = $self->{opt_quotes}; + } elsif (length ($self->{opt_quotes}) % 2 == 0) { + my $length = length ($self->{opt_quotes}) / 2; + $$self{LQUOTE} = substr ($self->{opt_quotes}, 0, $length); + $$self{RQUOTE} = substr ($self->{opt_quotes}, $length); } else { - croak(qq(Invalid quote specification "$$self{quotes}")) + croak(qq(Invalid quote specification "$self->{opt_quotes}")) } # Now handle the lquote and rquote options. - if (defined $$self{lquote}) { - $$self{LQUOTE} = $$self{lquote} eq 'none' ? q{} : $$self{lquote}; + if (defined($self->{opt_lquote})) { + $self->{opt_lquote} = q{} if $self->{opt_lquote} eq 'none'; + $$self{LQUOTE} = $self->{opt_lquote}; } - if (defined $$self{rquote}) { - $$self{RQUOTE} = $$self{rquote} eq 'none' ? q{} : $$self{rquote}; + if (defined $self->{opt_rquote}) { + $self->{opt_rquote} = q{} if $self->{opt_rquote} eq 'none'; + $$self{RQUOTE} = $self->{opt_rquote}; } - - # Double the first quote; note that this should not be s///g as two double - # quotes is represented in *roff as three double quotes, not four. Weird, - # I know. - $$self{LQUOTE} =~ s/\"/\"\"/; - $$self{RQUOTE} =~ s/\"/\"\"/; } # Initialize the page title information and indentation from our arguments. @@ -254,17 +366,9 @@ sub init_page { # Set the defaults for page titles and indentation if the user didn't # override anything. - $$self{center} = 'User Contributed Perl Documentation' - unless defined $$self{center}; - $$self{release} = 'perl v' . $version - unless defined $$self{release}; - $$self{indent} = 4 - unless defined $$self{indent}; - - # Double quotes in things that will be quoted. - for (qw/center release/) { - $$self{$_} =~ s/\"/\"\"/g if $$self{$_}; - } + $self->{opt_center} //= 'User Contributed Perl Documentation'; + $self->{opt_release} //= 'perl v' . $version; + $self->{opt_indent} //= 4; } ############################################################################## @@ -289,7 +393,6 @@ sub init_page { # according to the current formatting instructions as we do. sub _handle_text { my ($self, $text) = @_; - DEBUG > 3 and print "== $text\n"; my $tag = $$self{PENDING}[-1]; $$tag[2] .= $self->format_text ($$tag[1], $text); } @@ -308,7 +411,6 @@ sub method_for_element { # text and nested elements. Otherwise, if start_element is defined, call it. sub _handle_element_start { my ($self, $element, $attrs) = @_; - DEBUG > 3 and print "++ $element (<", join ('> <', %$attrs), ">)\n"; my $method = $self->method_for_element ($element); # If we have a command handler, we need to accumulate the contents of the @@ -316,7 +418,6 @@ sub _handle_element_start { # and the formatting codes so that IN_NAME isn't still set for the # first heading after the NAME heading. if ($self->can ("cmd_$method")) { - DEBUG > 2 and print "<$element> starts saving a tag\n"; $$self{IN_NAME} = 0 if ($element ne 'Para' && length ($element) > 1); # How we're going to format embedded text blocks depends on the tag @@ -328,11 +429,8 @@ sub _handle_element_start { %{ $FORMATTING{$element} || {} }, }; push (@{ $$self{PENDING} }, [ $attrs, $formatting, '' ]); - DEBUG > 4 and print "Pending: [", pretty ($$self{PENDING}), "]\n"; } elsif (my $start_method = $self->can ("start_$method")) { $self->$start_method ($attrs, ''); - } else { - DEBUG > 2 and print "No $method start method, skipping\n"; } } @@ -341,16 +439,12 @@ sub _handle_element_start { # an end_ method for the element, call that. sub _handle_element_end { my ($self, $element) = @_; - DEBUG > 3 and print "-- $element\n"; my $method = $self->method_for_element ($element); # If we have a command handler, pull off the pending text and pass it to # the handler along with the saved attribute hash. if (my $cmd_method = $self->can ("cmd_$method")) { - DEBUG > 2 and print " stops saving a tag\n"; my $tag = pop @{ $$self{PENDING} }; - DEBUG > 4 and print "Popped: [", pretty ($tag), "]\n"; - DEBUG > 4 and print "Pending: [", pretty ($$self{PENDING}), "]\n"; my $text = $self->$cmd_method ($$tag[0], $$tag[2]); if (defined $text) { if (@{ $$self{PENDING} } > 1) { @@ -361,8 +455,6 @@ sub _handle_element_end { } } elsif (my $end_method = $self->can ("end_$method")) { $self->$end_method (); - } else { - DEBUG > 2 and print "No $method end method, skipping\n"; } } @@ -381,31 +473,40 @@ sub format_text { my $literal = $$options{literal}; # Cleanup just tidies up a few things, telling *roff that the hyphens are - # hard, putting a bit of space between consecutive underscores, and - # escaping backslashes. Be careful not to mangle our character - # translations by doing this before processing character translation. + # hard, putting a bit of space between consecutive underscores, escaping + # backslashes, and converting zero-width spaces to zero-width break + # points. if ($cleanup) { $text =~ s/\\/\\e/g; $text =~ s/-/\\-/g; $text =~ s/_(?=_)/_\\|/g; + $text =~ s/\x{200B}/\\:/g; } - # Normally we do character translation, but we won't even do that in - # blocks or if UTF-8 output is desired. - if ($convert && !$$self{utf8} && ASCII) { - $text =~ s/([^\x00-\x7F])/$ESCAPES{ord ($1)} || "X"/eg; + # Except in blocks, if groff or roff encoding is requested and + # we're in an ASCII environment, do the encoding. For EBCDIC, we just + # write what we get and hope for the best. Leave non-breaking spaces and + # soft hyphens alone; we'll convert those at the last minute. + if ($convert) { + if (ASCII) { + if ($$self{ENCODING} eq 'groff') { + $text =~ s{ ([^\x00-\x7F\xA0\xAD]) }{ + '\\[u' . sprintf('%04X', ord($1)) . ']' + }xmsge; + } elsif ($$self{ENCODING} eq 'roff') { + $text =~ s/([^\x00-\x7F\xA0\xAD])/$ESCAPES{ord ($1)} || "X"/eg; + } + } } # Ensure that *roff doesn't convert literal quotes to UTF-8 single quotes, - # but don't mess up our accept escapes. + # but don't mess up accent escapes. if ($literal) { $text =~ s/(?guesswork ($text); } @@ -420,31 +521,45 @@ sub quote_literal { my $self = shift; local $_ = shift; + # If in NAME section, just return an ASCII quoted string to avoid + # confusing tools like whatis. + if ($$self{IN_NAME}) { + return $self->{LQUOTE} . $_ . $self->{RQUOTE}; + } + # A regex that matches the portion of a variable reference that's the # array or hash index, separated out just because we want to use it in # several places in the following regex. - my $index = '(?: \[.*\] | \{.*\} )?'; - - # If in NAME section, just return an ASCII quoted string to avoid - # confusing tools like whatis. - return qq{"$_"} if $$self{IN_NAME}; + my $index = '(?: \[[^]]+\] | \{[^}]+\} )?'; # Check for things that we don't want to quote, and if we find any of # them, return the string with just a font change and no quoting. + # + # Traditionally, Pod::Man has not quoted Perl variables, functions, + # numbers, or hex constants, but this is not always desirable. Make this + # optional on the quoting guesswork flag. + my $extra = qr{(?!)}xms; # never matches + if ($$self{GUESSWORK}{quoting}) { + $extra = qr{ + \$+ [\#^]? \S $index # special ($^F, $") + | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func + | [\$\@%&*]* [:\'\w]+ + (?: \\-> )? \(\s*[^\s,\)]*\s*\) # 0/1-arg func call + | (?: [+] || \\- )? ( \d[\d.]* | \.\d+ ) + (?: [eE] (?: [+] || \\- )? \d+ )? # a number + | 0x [a-fA-F\d]+ # a hex constant + }xms; + } m{ ^\s* (?: - ( [\'\`\"] ) .* \1 # already quoted - | \\\*\(Aq .* \\\*\(Aq # quoted and escaped - | \\?\` .* ( \' | \\\*\(Aq ) # `quoted' - | \$+ [\#^]? \S $index # special ($^Foo, $") - | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func - | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call - | [-+]? ( \d[\d.]* | \.\d+ ) (?: [eE][-+]?\d+ )? # a number - | 0x [a-fA-F\d]+ # a hex constant + ( [\'\"] ) .* \1 # already quoted + | \\\*\(Aq .* \\\*\(Aq # quoted and escaped + | \\?\` .* ( \' | \\?\` | \\\*\(Aq ) # `quoted' or `quoted` + | $extra ) \s*\z - }xso and return '\f(FS' . $_ . '\f(FE'; + }xms and return '\f(FS' . $_ . '\f(FE'; # If we didn't return, go ahead and quote the text. return '\f(FS\*(C`' . $_ . "\\*(C'\\f(FE"; @@ -453,10 +568,8 @@ sub quote_literal { # Takes a text block to perform guesswork on. Returns the text block with # formatting codes added. This is the code that marks up various Perl # constructs and things commonly used in man pages without requiring the user -# to add any explicit markup, and is applied to all non-literal text. We're -# guaranteed that the text we're applying guesswork to does not contain any -# *roff formatting codes. Note that the inserted font sequences must be -# treated later with mapfonts or textmapfonts. +# to add any explicit markup, and is applied to all non-literal text. Note +# that the inserted font sequences must be treated later with mapfonts. # # This method is very fragile, both in the regular expressions it uses and in # the ordering of those modifications. Care and testing is required when @@ -464,7 +577,6 @@ sub quote_literal { sub guesswork { my $self = shift; local $_ = shift; - DEBUG > 5 and print " Guesswork called on [$_]\n"; # By the time we reach this point, all hyphens will be escaped by adding a # backslash. We want to undo that escaping if they're part of regular @@ -475,9 +587,9 @@ sub guesswork { # Note that this is not user-controllable; we pretty much have to do this # transformation or *roff will mangle the output in unacceptable ways. s{ - ( (?:\G|^|\s) [\(\"]* [a-zA-Z] ) ( \\- )? + ( (?:\G|^|\s|$NBSP) [\(\"]* [a-zA-Z] ) ( \\- )? ( (?: [a-zA-Z\']+ \\-)+ ) - ( [a-zA-Z\']+ ) (?= [\)\".?!,;:]* (?:\s|\Z|\\\ ) ) + ( [a-zA-Z\']+ ) (?= [\)\".?!,;:]* (?:\s|$NBSP|\Z|\\\ ) ) \b } { my ($prefix, $hyphen, $main, $suffix) = ($1, $2, $3, $4); @@ -486,52 +598,17 @@ sub guesswork { $prefix . $hyphen . $main . $suffix; }egx; - # Translate "--" into a real em-dash if it's used like one. This means - # that it's either surrounded by whitespace, it follows a regular word, or - # it occurs between two regular words. - if ($$self{MAGIC_EMDASH}) { - s{ (\s) \\-\\- (\s) } { $1 . '\*(--' . $2 }egx; - s{ (\b[a-zA-Z]+) \\-\\- (\s|\Z|[a-zA-Z]+\b) } { $1 . '\*(--' . $2 }egx; - } - - # Make words in all-caps a little bit smaller; they look better that way. - # However, we don't want to change Perl code (like @ARGV), nor do we want - # to fix the MIME in MIME-Version since it looks weird with the - # full-height V. - # - # We change only a string of all caps (2) either at the beginning of the - # line or following regular punctuation (like quotes) or whitespace (1), - # and followed by either similar punctuation, an em-dash, or the end of - # the line (3). - # - # Allow the text we're changing to small caps to include double quotes, - # commas, newlines, and periods as long as it doesn't otherwise interrupt - # the string of small caps and still fits the criteria. This lets us turn - # entire warranty disclaimers in man page output into small caps. - if ($$self{MAGIC_SMALLCAPS}) { - s{ - ( ^ | [\s\(\"\'\`\[\{<>] | \\[ ] ) # (1) - ( [A-Z] [A-Z] (?: \s? [/A-Z+:\d_\$&] | \\- | \s? [.,\"] )* ) # (2) - (?= [\s>\}\]\(\)\'\".?!,;] | \\*\(-- | \\[ ] | $ ) # (3) - } { - $1 . '\s-1' . $2 . '\s0' - }egx; - } - - # Note that from this point forward, we have to adjust for \s-1 and \s-0 - # strings inserted around things that we've made small-caps if later - # transforms should work on those strings. - # Embolden functions in the form func(), including functions that are in - # all capitals, but don't embolden if there's anything between the parens. + # all capitals, but don't embolden if there's anything inside the parens. # The function must start with an alphabetic character or underscore and # then consist of word characters or colons. - if ($$self{MAGIC_FUNC}) { + if ($$self{GUESSWORK}{functions}) { s{ - ( \b | \\s-1 ) - ( [A-Za-z_] ([:\w] | \\s-?[01])+ \(\) ) + (? 5 and print " Guesswork returning [$_]\n"; return $_; } @@ -592,111 +657,106 @@ sub guesswork { # the right start and end codes. # # We add this level of complexity because the old pod2man didn't get code like -# B else> right; after I<> it switched back to normal text rather -# than bold. We take care of this by using variables that state whether bold, -# italic, or fixed are turned on as a combined pointer to our current font -# sequence, and set each to the number of current nestings of start tags for -# that font. +# B<< someI else>> right. After I<> it switched back to normal text +# rather than bold. We take care of this by using variables that state +# whether bold, italic, or fixed are turned on as a combined pointer to our +# current font sequence, and set each to the number of current nestings of +# start tags for that font. +# +# The base font must be either \fP or \fR. \fP changes to the previous font, +# but only one previous font is kept. Unfortunately, there is a bug in +# Solaris 2.6 nroff (not present in GNU groff) where the sequence +# \fB\fP\f(CW\fP leaves the font set to B rather than R, presumably because +# \f(CW doesn't actually do a font change. Because of this, we prefer to use +# \fR where possible. # -# \fP changes to the previous font, but only one previous font is kept. We -# don't know what the outside level font is; normally it's R, but if we're -# inside a heading it could be something else. So arrange things so that the -# outside font is always the "previous" font and end with \fP instead of \fR. -# Idea from Zack Weinberg. +# Unfortunately, this isn't possible for arguments to heading macros, since +# there we don't know what the outside level font is. In that case, arrange +# things so that the outside font is always the "previous" font and end with +# \fP instead of \fR. Idea from Zack Weinberg. +# +# This function used to be much simpler outside of macro arguments because it +# went directly from \fB to \f(CW and relied on \f(CW clearing bold since it +# wasn't \f(CB. Unfortunately, while this works for mandoc, this is not how +# groff works; \fBfoo\f(CWbar still prints bar in bold. Therefore, we force +# the font back to the base font before each font change. sub mapfonts { - my ($self, $text) = @_; + my ($self, $text, $base) = @_; + + # The closure used to process each font escape, expected to be called from + # the right-hand side of an s/// expression. my ($fixed, $bold, $italic) = (0, 0, 0); my %magic = (F => \$fixed, B => \$bold, I => \$italic); my $last = '\fR'; - $text =~ s< - \\f\((.)(.) - > < - my $sequence = ''; - my $f; - if ($last ne '\fR') { $sequence = '\fP' } - ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1; - $f = $$self{FONTS}{ ($fixed && 1) . ($bold && 1) . ($italic && 1) }; - if ($f eq $last) { - ''; - } else { - if ($f ne '\fR') { $sequence .= $f } - $last = $f; - $sequence; + my $process = sub { + my ($style, $start_stop) = @_; + my $sequence = ($last ne '\fR') ? $base : q{}; + ${ $magic{$style} } += ($start_stop eq 'S') ? 1 : -1; + my $f = $self->{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)}; + return q{} if ($f eq $last); + if ($f ne '\fR') { + $sequence .= $f; } - >gxe; - return $text; -} + $last = $f; + return $sequence; + }; + + # Now, do the actual work. + $text =~ s{ \\f\((.)(.) }{$process->($1, $2)}xmsge; + + # We can do a bit of cleanup by collapsing sequences like \fR\fB\fR\fI + # into just \fI. + $text =~ s{ (?: \\fR )? (?: \\f (.|\(..) \\fR )+ }{\\fR}xms; -# Unfortunately, there is a bug in Solaris 2.6 nroff (not present in GNU -# groff) where the sequence \fB\fP\f(CW\fP leaves the font set to B rather -# than R, presumably because \f(CW doesn't actually do a font change. To work -# around this, use a separate textmapfonts for text blocks where the default -# font is always R and only use the smart mapfonts for headings. -sub textmapfonts { - my ($self, $text) = @_; - my ($fixed, $bold, $italic) = (0, 0, 0); - my %magic = (F => \$fixed, B => \$bold, I => \$italic); - $text =~ s< - \\f\((.)(.) - > < - ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1; - $$self{FONTS}{ ($fixed && 1) . ($bold && 1) . ($italic && 1) }; - >gxe; return $text; } # Given a command and a single argument that may or may not contain double -# quotes, handle double-quote formatting for it. If there are no double -# quotes, just return the command followed by the argument in double quotes. -# If there are double quotes, use an if statement to test for nroff, and for -# nroff output the command followed by the argument in double quotes with -# embedded double quotes doubled. For other formatters, remap paired double -# quotes to LQUOTE and RQUOTE. +# quotes and fixed-width text, handle double-quote formatting for it. If +# there is no fixed-width text, just return the command followed by the +# argument with proper quoting. If there is fixed-width text, work around a +# Solaris nroff bug with fixed-width fonts by converting fixed-width to +# regular fonts (nroff sees no difference). sub switchquotes { my ($self, $command, $text, $extra) = @_; - $text =~ s/\\\*\([LR]\"/\"/g; - - # We also have to deal with \*C` and \*C', which are used to add the - # quotes around C<> text, since they may expand to " and if they do this - # confuses the .SH macros and the like no end. Expand them ourselves. - # Also separate troff from nroff if there are any fixed-width fonts in use - # to work around problems with Solaris nroff. - my $c_is_quote = ($$self{LQUOTE} =~ /\"/) || ($$self{RQUOTE} =~ /\"/); - my $fixedpat = join '|', @{ $$self{FONTS} }{'100', '101', '110', '111'}; - $fixedpat =~ s/\\/\\\\/g; - $fixedpat =~ s/\(/\\\(/g; - if ($text =~ m/\"/ || $text =~ m/$fixedpat/) { - $text =~ s/\"/\"\"/g; + + # Separate troff from nroff if there are any fixed-width fonts in use to + # work around problems with Solaris nroff. + if ($text =~ $self->{FIXEDPAT}) { my $nroff = $text; my $troff = $text; - $troff =~ s/\"\"([^\"]*)\"\"/\`\`$1\'\'/g; - if ($c_is_quote and $text =~ m/\\\*\(C[\'\`]/) { - $nroff =~ s/\\\*\(C\`/$$self{LQUOTE}/g; - $nroff =~ s/\\\*\(C\'/$$self{RQUOTE}/g; - $troff =~ s/\\\*\(C[\'\`]//g; - } - $nroff = qq("$nroff") . ($extra ? " $extra" : ''); - $troff = qq("$troff") . ($extra ? " $extra" : ''); # Work around the Solaris nroff bug where \f(CW\fP leaves the font set # to Roman rather than the actual previous font when used in headings. # troff output may still be broken, but at least we can fix nroff by # just switching the font changes to the non-fixed versions. - my $font_end = "(?:\\f[PR]|\Q$$self{FONTS}{100}\E)"; - $nroff =~ s/\Q$$self{FONTS}{100}\E(.*?)\\f([PR])/$1/g; - $nroff =~ s/\Q$$self{FONTS}{101}\E(.*?)$font_end/\\fI$1\\fP/g; - $nroff =~ s/\Q$$self{FONTS}{110}\E(.*?)$font_end/\\fB$1\\fP/g; - $nroff =~ s/\Q$$self{FONTS}{111}\E(.*?)$font_end/\\f\(BI$1\\fP/g; + my $font_end = qr{ (?: \\f[PR] | \Q$self->{FONTS}{100}\E ) }xms; + $nroff =~ s{\Q$self->{FONTS}{100}\E(.*?)\\f([PR])}{$1}xmsg; + $nroff =~ s{\Q$self->{FONTS}{101}\E}{\\fI}xmsg; + $nroff =~ s{\Q$self->{FONTS}{110}\E}{\\fB}xmsg; + $nroff =~ s{\Q$self->{FONTS}{111}\E}{\\f\(BI}xmsg; + + # We have to deal with \*C` and \*C', which are used to add the quotes + # around C<> text, since they may expand to " and if they do this + # confuses the .SH macros and the like no end. Expand them ourselves. + my $c_is_quote = index("$self->{LQUOTE}$self->{RQUOTE}", qq(\")) != -1; + if ($c_is_quote && $text =~ m{ \\[*]\(C[\'\`] }xms) { + $nroff =~ s{ \\[*]\(C\` }{$self->{LQUOTE}}xmsg; + $nroff =~ s{ \\[*]\(C\' }{$self->{RQUOTE}}xmsg; + $troff =~ s{ \\[*]\(C[\'\`] }{}xmsg; + } # Now finally output the command. Bother with .ie only if the nroff # and troff output aren't the same. + $nroff = _quote_macro_argument($nroff) . ($extra ? " $extra" : ''); + $troff = _quote_macro_argument($troff) . ($extra ? " $extra" : ''); if ($nroff ne $troff) { return ".ie n $command $nroff\n.el $command $troff\n"; } else { return "$command $nroff\n"; } } else { - $text = qq("$text") . ($extra ? " $extra" : ''); + $text = _quote_macro_argument($text) . ($extra ? " $extra" : ''); return "$command $text\n"; } } @@ -761,10 +821,22 @@ sub outindex { # Output some text, without any additional changes. sub output { my ($self, @text) = @_; - if ($$self{ENCODE}) { - print { $$self{output_fh} } Encode::encode ('UTF-8', join ('', @text)); + my $text = join('', @text); + $text =~ s{$NBSP}{\\ }g; + $text =~ s{$SHY}{\\%}g; + + if ($$self{ENCODE} && _needs_encode($$self{ENCODING})) { + my $check = sub { + my ($char) = @_; + my $display = '"\x{' . hex($char) . '}"'; + my $error = "$display does not map to $$self{ENCODING}"; + $self->whine ($self->line_count(), $error); + return Encode::encode ($$self{ENCODING}, chr($char)); + }; + my $output = Encode::encode ($$self{ENCODING}, $text, $check); + print { $$self{output_fh} } $output; } else { - print { $$self{output_fh} } @text; + print { $$self{output_fh} } $text; } } @@ -777,21 +849,20 @@ sub output { sub start_document { my ($self, $attrs) = @_; if ($$attrs{contentless} && !$$self{ALWAYS_EMIT_SOMETHING}) { - DEBUG and print "Document is contentless\n"; $$self{CONTENTLESS} = 1; } else { delete $$self{CONTENTLESS}; } - # When UTF-8 output is set, check whether our output file handle already - # has a PerlIO encoding layer set. If it does not, we'll need to encode - # our output before printing it (handled in the output() sub). Wrap the - # check in an eval to handle versions of Perl without PerlIO. + # When an encoding is requested, check whether our output file handle + # already has a PerlIO encoding layer set. If it does not, we'll need to + # encode our output before printing it (handled in the output() sub). + # Wrap the check in an eval to handle versions of Perl without PerlIO. # # PerlIO::get_layers still requires its argument be a glob, so coerce the # file handle to a glob. $$self{ENCODE} = 0; - if ($$self{utf8}) { + if ($$self{ENCODING}) { $$self{ENCODE} = 1; eval { my @options = (output => 1, details => 1); @@ -806,15 +877,15 @@ sub start_document { # document was content-free. if (!$$self{CONTENTLESS}) { my ($name, $section); - if (defined $$self{name}) { - $name = $$self{name}; - $section = $$self{section} || 1; + if (defined $self->{opt_name}) { + $name = $self->{opt_name}; + $section = $self->{opt_section} || 1; } else { ($name, $section) = $self->devise_title; } - my $date = defined($$self{date}) ? $$self{date} : $self->devise_date; + my $date = $self->{opt_date} // $self->devise_date(); $self->preamble ($name, $section, $date) - unless $self->bare_output or DEBUG > 9; + unless $self->bare_output; } # Initialize a few per-document variables. @@ -839,7 +910,6 @@ sub end_document { } return if $self->bare_output; return if ($$self{CONTENTLESS} && !$$self{ALWAYS_EMIT_SOMETHING}); - $self->output (q(.\" [End document]) . "\n") if DEBUG; } # Try to figure out the name and section from the file name and return them as @@ -848,8 +918,8 @@ sub end_document { sub devise_title { my ($self) = @_; my $name = $self->source_filename || ''; - my $section = $$self{section} || 1; - $section = 3 if (!$$self{section} && $name =~ /\.pm\z/i); + my $section = $self->{opt_section} || 1; + $section = 3 if (!$self->{opt_section} && $name =~ /\.pm\z/i); $name =~ s/\.p(od|[lm])\z//i; # If Pod::Parser gave us an IO::File reference as the source file name, @@ -900,8 +970,6 @@ sub devise_title { $cut = $i + 1; $cut++ if ($dirs[$i + 1] && $dirs[$i + 1] eq 'lib'); last; - } elsif ($dirs[$i] eq 'lib' && $dirs[$i + 1] && $dirs[0] eq 'ext') { - $cut = $i + 1; } } if ($cut > 0) { @@ -983,34 +1051,53 @@ sub devise_date { # module, but this order is correct for both Solaris and Linux. sub preamble { my ($self, $name, $section, $date) = @_; - my $preamble = $self->preamble_template (!$$self{utf8}); + my $preamble = $self->preamble_template(); - # Build the index line and make sure that it will be syntactically valid. - my $index = "$name $section"; - $index =~ s/\"/\"\"/g; - - # If name or section contain spaces, quote them (section really never - # should, but we may as well be cautious). - for ($name, $section) { - if (/\s/) { - s/\"/\"\"/g; - $_ = '"' . $_ . '"'; + # groff's preconv script will use this line to correctly determine the + # input encoding if the encoding is one of the ones it recognizes. It + # must be the first or second line. + # + # If the output encoding is some version of Unicode, we could also add a + # Unicode Byte Order Mark to the start of the file, but the BOM is now + # deprecated and I am concerned that may break a *roff implementation that + # might otherwise cope with Unicode. Revisit this if someone files a bug + # report about it. + if (_needs_encode($$self{ENCODING})) { + my $normalized = lc($$self{ENCODING}); + $normalized =~ s{-}{}g; + my $coding = $ENCODINGS{$normalized} || lc($$self{ENCODING}); + if ($coding ne 'us-ascii') { + $self->output(qq{.\\\" -*- mode: troff; coding: $coding -*-\n}); } } - # Double quotes in date, since it will be quoted. - $date =~ s/\"/\"\"/g; - - # Substitute into the preamble the configuration options. - $preamble =~ s/\@CFONT\@/$$self{fixed}/; - $preamble =~ s/\@LQUOTE\@/$$self{LQUOTE}/; - $preamble =~ s/\@RQUOTE\@/$$self{RQUOTE}/; - chomp $preamble; + # Substitute into the preamble the configuration options. Because it's + # used as the argument to defining a string, any leading double quote (but + # no other double quotes) in LQUOTE and RQUOTE has to be doubled. + $preamble =~ s{ [@] CFONT [@] }{$self->{opt_fixed}}xms; + my $lquote = $self->{LQUOTE}; + my $rquote = $self->{RQUOTE}; + $lquote =~ s{ \A \" }{""}xms; + $rquote =~ s{ \A \" }{""}xms; + $preamble =~ s{ [@] LQUOTE [@] }{$lquote}xms; + $preamble =~ s{ [@] RQUOTE [@] }{$rquote}xms; + chomp($preamble); # Get the version information. - my $version = $self->version_report; + my $version = $self->version_report(); - # Finally output everything. + # Build the index line and make sure that it will be syntactically valid. + my $index = _quote_macro_argument("$name $section"); + + # Quote the arguments to the .TH macro. (Section should never require + # this, but we may as well be cautious.) + $name = _quote_macro_argument($name); + $section = _quote_macro_argument($section); + $date = _quote_macro_argument($date); + my $center = _quote_macro_argument($self->{opt_center}); + my $release = _quote_macro_argument($self->{opt_release}); + + # Output the majority of the preamble. $self->output (<<"----END OF HEADER----"); .\\" Automatically generated by $version .\\" @@ -1019,14 +1106,19 @@ sub preamble { $preamble .\\" ======================================================================== .\\" -.IX Title "$index" -.TH $name $section "$date" "$$self{release}" "$$self{center}" +.IX Title $index +.TH $name $section $date $release $center .\\" For nroff, turn off justification. Always turn off hyphenation; it makes .\\" way too many mistakes in technical documents. .if n .ad l .nh ----END OF HEADER---- - $self->output (".\\\" [End of preamble]\n") if DEBUG; + + # If the language was specified, output the language configuration. + if ($self->{opt_language}) { + $self->output(".mso $self->{opt_language}.tmac\n"); + $self->output(".hla $self->{opt_language}\n"); + } } ############################################################################## @@ -1051,11 +1143,6 @@ sub cmd_para { $$self{SHIFTWAIT} = 0; } - # Add the line number for debugging, but not in the NAME section just in - # case the comment would confuse apropos. - $self->output (".\\\" [At source line $line]\n") - if defined ($line) && DEBUG && !$$self{IN_NAME}; - # Force exactly one newline at the end and strip unwanted trailing # whitespace at the end, but leave "\ " backslashed space from an S< > at # the end of a line. Reverse the text first, to avoid having to scan the @@ -1065,8 +1152,8 @@ sub cmd_para { $text = reverse $text; # Output the paragraph. - $self->output ($self->protect ($self->textmapfonts ($text))); - $self->outindex; + $self->output($self->protect($self->mapfonts($text, '\fR'))); + $self->outindex(); $$self{NEEDSPACE} = 1; return ''; } @@ -1078,45 +1165,44 @@ sub cmd_verbatim { my ($self, $attrs, $text) = @_; # Ignore an empty verbatim paragraph. - return unless $text =~ /\S/; + return if $text !~ m{ \S }xms; # Force exactly one newline at the end and strip unwanted trailing - # whitespace at the end. Reverse the text first, to avoid having to scan - # the entire paragraph. - $text = reverse $text; - $text =~ s/\A\s*/\n/; - $text = reverse $text; + # whitespace at the end. + $text =~ s{ \s* \z }{\n}xms; # Get a count of the number of lines before the first blank line, which # we'll pass to .Vb as its parameter. This tells *roff to keep that many # lines together. We don't want to tell *roff to keep huge blocks # together. - my @lines = split (/\n/, $text); + my @lines = split (m{ \n }xms, $text); my $unbroken = 0; - for (@lines) { - last if /^\s*$/; + for my $line (@lines) { + last if $line =~ m{ \A \s* \z }xms; $unbroken++; } - $unbroken = 10 if ($unbroken > 12 && !$$self{MAGIC_VNOPAGEBREAK_LIMIT}); + if ($unbroken > 12) { + $unbroken = 10; + } - # Prepend a null token to each line. - $text =~ s/^/\\&/gm; + # Prepend a null token to each line to preserve indentation. + $text =~ s{ ^ }{\\&}xmsg; # Output the results. - $self->makespace; - $self->output (".Vb $unbroken\n$text.Ve\n"); + $self->makespace(); + $self->output(".Vb $unbroken\n$text.Ve\n"); $$self{NEEDSPACE} = 1; - return ''; + return q{}; } # Handle literal text (produced by =for and similar constructs). Just output # it with the minimum of changes. sub cmd_data { my ($self, $attrs, $text) = @_; - $text =~ s/^\n+//; - $text =~ s/\n{0,2}$/\n/; - $self->output ($text); - return ''; + $text =~ s{ \A \n+ }{}xms; + $text =~ s{ \n{0,2} \z }{\n}xms; + $self->output($text); + return q{}; } ############################################################################## @@ -1138,9 +1224,6 @@ sub heading_common { $self->output (".PD\n"); } - # Output the current source line. - $self->output ( ".\\\" [At source line $line]\n" ) - if defined ($line) && DEBUG; return $text; } @@ -1153,7 +1236,7 @@ sub cmd_head1 { $text =~ s/\\s-?\d//g; $text = $self->heading_common ($text, $$attrs{start_line}); my $isname = ($text eq 'NAME' || $text =~ /\(NAME\)/); - $self->output ($self->switchquotes ('.SH', $self->mapfonts ($text))); + $self->output($self->switchquotes('.SH', $self->mapfonts($text, '\fP'))); $self->outindex ('Header', $text) unless $isname; $$self{NEEDSPACE} = 0; $$self{IN_NAME} = $isname; @@ -1164,7 +1247,7 @@ sub cmd_head1 { sub cmd_head2 { my ($self, $attrs, $text) = @_; $text = $self->heading_common ($text, $$attrs{start_line}); - $self->output ($self->switchquotes ('.SS', $self->mapfonts ($text))); + $self->output($self->switchquotes('.SS', $self->mapfonts($text, '\fP'))); $self->outindex ('Subsection', $text); $$self{NEEDSPACE} = 0; return ''; @@ -1176,7 +1259,7 @@ sub cmd_head3 { my ($self, $attrs, $text) = @_; $text = $self->heading_common ($text, $$attrs{start_line}); $self->makespace; - $self->output ($self->textmapfonts ('\f(IS' . $text . '\f(IE') . "\n"); + $self->output($self->mapfonts('\f(IS' . $text . '\f(IE', '\fR') . "\n"); $self->outindex ('Subsection', $text); $$self{NEEDSPACE} = 1; return ''; @@ -1188,7 +1271,7 @@ sub cmd_head4 { my ($self, $attrs, $text) = @_; $text = $self->heading_common ($text, $$attrs{start_line}); $self->makespace; - $self->output ($self->textmapfonts ($text) . "\n"); + $self->output($self->mapfonts($text, '\fR') . "\n"); $self->outindex ('Subsection', $text); $$self{NEEDSPACE} = 1; return ''; @@ -1205,6 +1288,13 @@ sub cmd_i { return $_[0]->{IN_NAME} ? $_[2] : '\f(IS' . $_[2] . '\f(IE' } sub cmd_f { return $_[0]->{IN_NAME} ? $_[2] : '\f(IS' . $_[2] . '\f(IE' } sub cmd_c { return $_[0]->quote_literal ($_[2]) } +# Convert all internal whitespace to $NBSP. +sub cmd_s { + my ($self, $attrs, $text) = @_; + $text =~ s{ \s }{$NBSP}xmsg; + return $text; +} + # Index entries are just added to the pending entries. sub cmd_x { my ($self, $attrs, $text) = @_; @@ -1226,7 +1316,7 @@ sub cmd_l { } if (not defined ($to) or $to eq $text) { return "<$text>"; - } elsif ($$self{nourls}) { + } elsif ($self->{opt_nourls}) { return $text; } else { return "$text <$$attrs{to}>"; @@ -1247,12 +1337,10 @@ sub over_common_start { my ($self, $type, $attrs) = @_; my $line = $$attrs{start_line}; my $indent = $$attrs{indent}; - DEBUG > 3 and print " Starting =over $type (line $line, indent ", - ($indent || '?'), "\n"; # Find the indentation level. unless (defined ($indent) && $indent =~ /^[-+]?\d{1,4}\s*$/) { - $indent = $$self{indent}; + $indent = $self->{opt_indent}; } # If we've gotten multiple indentations in a row, we need to emit the @@ -1281,7 +1369,6 @@ sub over_common_start { # .RE and then a new .RS to unconfuse *roff. sub over_common_end { my ($self) = @_; - DEBUG > 3 and print " Ending =over\n"; $$self{INDENT} = pop @{ $$self{INDENTS} }; pop @{ $$self{ITEMTYPES} }; @@ -1320,7 +1407,6 @@ sub end_over_block { $_[0]->over_common_end } sub item_common { my ($self, $type, $attrs, $text) = @_; my $line = $$attrs{start_line}; - DEBUG > 3 and print " $type item (line $line): $text\n"; # Clean up the text. We want to end up with two variables, one ($text) # which contains any body text after taking out the item portion, and @@ -1352,8 +1438,8 @@ sub item_common { $self->output (".PD 0\n") if ($$self{ITEMS} == 1); # Now, output the item tag itself. - $item = $self->textmapfonts ($item); - $self->output ($self->switchquotes ('.IP', $item, $$self{INDENT})); + $item = $self->mapfonts($item, '\fR'); + $self->output($self->switchquotes('.IP', $item, $$self{INDENT})); $$self{NEEDSPACE} = 0; $$self{ITEMS}++; $$self{SHIFTWAIT} = 0; @@ -1362,7 +1448,7 @@ sub item_common { if ($text) { $text =~ s/\s*$/\n/; $self->makespace; - $self->output ($self->protect ($self->textmapfonts ($text))); + $self->output($self->protect($self->mapfonts($text, '\fR'))); $$self{NEEDSPACE} = 1; } $self->outindex ($index ? ('Item', $index) : ()); @@ -1449,49 +1535,16 @@ sub parse_string_document { return $self->SUPER::parse_string_document ($doc); } -############################################################################## -# Translation tables -############################################################################## - -# The following table is adapted from Tom Christiansen's pod2man. It assumes -# that the standard preamble has already been printed, since that's what -# defines all of the accent marks. We really want to do something better than -# this when *roff actually supports other character sets itself, since these -# results are pretty poor. -# -# This only works in an ASCII world. What to do in a non-ASCII world is very -# unclear -- hopefully we can assume UTF-8 and just leave well enough alone. -@ESCAPES{0xA0 .. 0xFF} = ( - "\\ ", undef, undef, undef, undef, undef, undef, undef, - undef, undef, undef, undef, undef, "\\%", undef, undef, - - undef, undef, undef, undef, undef, undef, undef, undef, - undef, undef, undef, undef, undef, undef, undef, undef, - - "A\\*`", "A\\*'", "A\\*^", "A\\*~", "A\\*:", "A\\*o", "\\*(Ae", "C\\*,", - "E\\*`", "E\\*'", "E\\*^", "E\\*:", "I\\*`", "I\\*'", "I\\*^", "I\\*:", - - "\\*(D-", "N\\*~", "O\\*`", "O\\*'", "O\\*^", "O\\*~", "O\\*:", undef, - "O\\*/", "U\\*`", "U\\*'", "U\\*^", "U\\*:", "Y\\*'", "\\*(Th", "\\*8", - - "a\\*`", "a\\*'", "a\\*^", "a\\*~", "a\\*:", "a\\*o", "\\*(ae", "c\\*,", - "e\\*`", "e\\*'", "e\\*^", "e\\*:", "i\\*`", "i\\*'", "i\\*^", "i\\*:", - - "\\*(d-", "n\\*~", "o\\*`", "o\\*'", "o\\*^", "o\\*~", "o\\*:", undef, - "o\\*/" , "u\\*`", "u\\*'", "u\\*^", "u\\*:", "y\\*'", "\\*(th", "y\\*:", -) if ASCII; - ############################################################################## # Premable ############################################################################## -# The following is the static preamble which starts all *roff output we -# generate. Most is static except for the font to use as a fixed-width font, -# which is designed by @CFONT@, and the left and right quotes to use for C<> -# text, designated by @LQOUTE@ and @RQUOTE@. However, the second part, which -# defines the accent marks, is only used if $escapes is set to true. +# The preamble which starts all *roff output we generate. Most is static +# except for the font to use as a fixed-width font (designed by @CFONT@), and +# the left and right quotes to use for C<> text (designated by @LQOUTE@ and +# @RQUOTE@). Accent marks are only defined if the output encoding is roff. sub preamble_template { - my ($self, $accents) = @_; + my ($self) = @_; my $preamble = <<'----END OF PREAMBLE----'; .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v @@ -1506,29 +1559,12 @@ sub preamble_template { .ft R .fi .. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. \*(C+ will -.\" give a nicer C++. Capital omega is used to do unbreakable dashes and -.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, -.\" nothing in troff, for use with C<>. -.tr \(*W- -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" . ds C` @LQUOTE@ . ds C' @RQUOTE@ 'br\} .el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' . ds C` . ds C' 'br\} @@ -1562,7 +1598,7 @@ sub preamble_template { ----END OF PREAMBLE---- #'# for cperl-mode - if ($accents) { + if ($$self{ENCODING} eq 'roff') { $preamble .= <<'----END OF PREAMBLE----' .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). @@ -1592,7 +1628,7 @@ sub preamble_template { . ds / .\} .if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h'|\\n:u' . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' @@ -1639,10 +1675,13 @@ sub preamble_template { 1; __END__ +=encoding UTF-8 + =for stopwords en em ALLCAPS teeny fixedbold fixeditalic fixedbolditalic stderr utf8 UTF-8 Allbery Sean Burke Ossanna Solaris formatters troff uppercased Christiansen -nourls parsers Kernighan lquote rquote +nourls parsers Kernighan lquote rquote unrepresentable mandoc NetBSD PostScript +SMP macOS EBCDIC fallbacks manref reflowed reflowing FH overridable =head1 NAME @@ -1668,100 +1707,197 @@ using L, normally via L, or printing using L. It is conventionally invoked using the driver script B, but it can also be used directly. -As a derived class from Pod::Simple, Pod::Man supports the same methods and -interfaces. See L for all the details. - -new() can take options, in the form of key/value pairs that control the -behavior of the parser. See below for details. - -If no options are given, Pod::Man uses the name of the input file with any -trailing C<.pod>, C<.pm>, or C<.pl> stripped as the man page title, to -section 1 unless the file ended in C<.pm> in which case it defaults to -section 3, to a centered title of "User Contributed Perl Documentation", to -a centered footer of the Perl version it is run with, and to a left-hand -footer of the modification date of its input (or the current date if given -C for input). - -Pod::Man assumes that your *roff formatters have a fixed-width font named -C. If yours is called something else (like C), use the C -option to specify it. This generally only matters for troff output for -printing. Similarly, you can set the fonts used for bold, italic, and -bold italic fixed-width output. - -Besides the obvious pod conversions, Pod::Man also takes care of -formatting func(), func(3), and simple variable references like $foo or -@bar so you don't have to use code escapes for them; complex expressions -like C<$fred{'stuff'}> will still need to be escaped, though. It also -translates dashes that aren't used as hyphens into en dashes, makes long -dashes--like this--into proper em dashes, fixes "paired quotes," makes C++ -look right, puts a little space between double underscores, makes ALLCAPS -a teeny bit smaller in B, and escapes stuff that *roff treats as -special so that you don't have to. - -The recognized options to new() are as follows. All options take a single -argument. +By default (on non-EBCDIC systems), Pod::Man outputs UTF-8. Its output should +work with the B program on systems that use B (most Linux +distributions) or B (most BSD variants), but may result in mangled +output on older UNIX systems. To choose a different, possibly more +backward-compatible output mangling on such systems, set the C +option to C (the default in earlier Pod::Man versions). See the +C option and L for more details. + +See L for the versions of Pod::Man with significant +backward-incompatible changes (other than constructor options, whose versions +are documented below), and the versions of Perl that included them. + +=head1 CLASS METHODS + +=over 4 + +=item new(ARGS) + +Create a new Pod::Man object. ARGS should be a list of key/value pairs, where +the keys are chosen from the following. Each option is annotated with the +version of Pod::Man in which that option was added with its current meaning. =over 4 =item center -Sets the centered page header for the C<.TH> macro. The default, if this -option is not specified, is "User Contributed Perl Documentation". +[1.00] Sets the centered page header for the C<.TH> macro. The default, if +this option is not specified, is C. =item date -Sets the left-hand footer for the C<.TH> macro. If this option is not set, -the contents of the environment variable POD_MAN_DATE, if set, will be used. -Failing that, the value of SOURCE_DATE_EPOCH, the modification date of the -input file, or the current time if stat() can't find that file (which will be -the case if the input is from C) will be used. If obtained from the -file modification date or the current time, the date will be formatted as -C and will be based on UTC (so that the output will be -reproducible regardless of local time zone). +[4.00] Sets the left-hand footer for the C<.TH> macro. If this option is not +set, the contents of the environment variable POD_MAN_DATE, if set, will be +used. Failing that, the value of SOURCE_DATE_EPOCH, the modification date of +the input file, or the current time if stat() can't find that file (which will +be the case if the input is from C) will be used. If taken from any +source other than POD_MAN_DATE (which is used verbatim), the date will be +formatted as C and will be based on UTC (so that the output will +be reproducible regardless of local time zone). + +=item encoding + +[5.00] Specifies the encoding of the output. The value must be an encoding +recognized by the L module (see L), or the special +values C or C. The default on non-EBCDIC systems is UTF-8. + +If the output contains characters that cannot be represented in this encoding, +that is an error that will be reported as configured by the C option. +If error handling is other than C, the unrepresentable character will be +replaced with the Encode substitution character (normally C). + +If the C option is set to the special value C (the default on +EBCDIC systems), or if the Encode module is not available and the encoding is +set to anything other than C, Pod::Man will translate all non-ASCII +characters to C<\[uNNNN]> Unicode escapes. These are not traditionally part +of the *roff language, but are supported by B and B and thus by +the majority of manual page processors in use today. + +If the C option is set to the special value C, Pod::Man will +do its historic transformation of (some) ISO 8859-1 characters into *roff +escapes that may be adequate in troff and may be readable (if ugly) in nroff. +This was the default behavior of versions of Pod::Man before 5.00. With this +encoding, all other non-ASCII characters will be replaced with C. It may +be required for very old troff and nroff implementations that do not support +UTF-8, but its representation of any non-ASCII character is very poor and +often specific to European languages. + +If the output file handle has a PerlIO encoding layer set, setting C +to anything other than C or C will be ignored and no encoding +will be done by Pod::Man. It will instead rely on the encoding layer to make +whatever output encoding transformations are desired. + +WARNING: The input encoding of the POD source is independent from the output +encoding, and setting this option does not affect the interpretation of the +POD input. Unless your POD source is US-ASCII, its encoding should be +declared with the C<=encoding> command in the source. If this is not done, +Pod::Simple will will attempt to guess the encoding and may be successful if +it's Latin-1 or UTF-8, but it will produce warnings. See L for +more information. =item errors -How to report errors. C says to throw an exception on any POD -formatting error. C says to report errors on standard error, but -not to throw an exception. C says to include a POD ERRORS section -in the resulting documentation summarizing the errors. C ignores -POD errors entirely, as much as possible. +[2.27] How to report errors. C says to throw an exception on any POD +formatting error. C says to report errors on standard error, but not +to throw an exception. C says to include a POD ERRORS section in the +resulting documentation summarizing the errors. C ignores POD errors +entirely, as much as possible. The default is C. =item fixed -The fixed-width font to use for verbatim text and code. Defaults to -C. Some systems may want C instead. Only matters for B -output. +[1.00] The fixed-width font to use for verbatim text and code. Defaults to +C. Some systems prefer C instead. Only matters for B output. =item fixedbold -Bold version of the fixed-width font. Defaults to C. Only matters +[1.00] Bold version of the fixed-width font. Defaults to C. Only matters for B output. =item fixeditalic -Italic version of the fixed-width font (actually, something of a misnomer, -since most fixed-width fonts only have an oblique version, not an italic -version). Defaults to C. Only matters for B output. +[1.00] Italic version of the fixed-width font (something of a misnomer, since +most fixed-width fonts only have an oblique version, not an italic version). +Defaults to C. Only matters for B output. =item fixedbolditalic -Bold italic (probably actually oblique) version of the fixed-width font. -Pod::Man doesn't assume you have this, and defaults to C. Some -systems (such as Solaris) have this font available as C. Only matters -for B output. +[1.00] Bold italic (in theory, probably oblique in practice) version of the +fixed-width font. Pod::Man doesn't assume you have this, and defaults to +C. Some systems (such as Solaris) have this font available as C. +Only matters for B output. + +=item guesswork + +[5.00] By default, Pod::Man applies some default formatting rules based on +guesswork and regular expressions that are intended to make writing Perl +documentation easier and require less explicit markup. These rules may not +always be appropriate, particularly for documentation that isn't about Perl. +This option allows turning all or some of it off. + +The special value C enables all guesswork. This is also the default for +backward compatibility reasons. The special value C disables all +guesswork. Otherwise, the value of this option should be a comma-separated +list of one or more of the following keywords: + +=over 4 + +=item functions + +Convert function references like C to bold even if they have no markup. +The function name accepts valid Perl characters for function names (including +C<:>), and the trailing parentheses must be present and empty. + +=item manref + +Make the first part (before the parentheses) of manual page references like +C bold even if they have no markup. The section must be a single +number optionally followed by lowercase letters. + +=item quoting + +If no guesswork is enabled, any text enclosed in CZ<><> is surrounded by +double quotes in nroff (terminal) output unless the contents are already +quoted. When this guesswork is enabled, quote marks will also be suppressed +for Perl variables, function names, function calls, numbers, and hex +constants. + +=item variables + +Convert Perl variable names to a fixed-width font even if they have no markup. +This transformation will only be apparent in troff output, or some other +output format (unlike nroff terminal output) that supports fixed-width fonts. + +=back + +Any unknown guesswork name is silently ignored (for potential future +compatibility), so be careful about spelling. + +=item language + +[5.00] Add commands telling B that the input file is in the given +language. The value of this setting must be a language abbreviation for which +B provides supplemental configuration, such as C (for Japanese) or +C (for Chinese). + +Specifically, this adds: + + .mso .tmac + .hla + +to the start of the file, which configure correct line breaking for the +specified language. Without these commands, groff may not know how to add +proper line breaks for Chinese and Japanese text if the manual page is +installed into the normal manual page directory, such as F. + +On many systems, this will be done automatically if the manual page is +installed into a language-specific manual page directory, such as +F. In that case, this option is not required. + +Unfortunately, the commands added with this option are specific to B +and will not work with other B and B implementations. =item lquote =item rquote -Sets the quote marks used to surround CE> text. C sets the -left quote mark and C sets the right quote mark. Either may also -be set to the special value C, in which case no quote mark is added -on that side of CE> text (but the font is still changed for troff -output). +[4.08] Sets the quote marks used to surround CE> text. C sets the +left quote mark and C sets the right quote mark. Either may also be +set to the special value C, in which case no quote mark is added on that +side of CE> text (but the font is still changed for troff output). Also see the C option, which can be used to set both quotes at once. If both C and one of the other options is set, C or C @@ -1769,21 +1905,21 @@ overrides C. =item name -Set the name of the manual page for the C<.TH> macro. Without this -option, the manual name is set to the uppercased base name of the file -being converted unless the manual section is 3, in which case the path is -parsed to see if it is a Perl module path. If it is, a path like -C<.../lib/Pod/Man.pm> is converted into a name like C. This -option, if given, overrides any automatic determination of the name. +[4.08] Set the name of the manual page for the C<.TH> macro. Without this +option, the manual name is set to the uppercased base name of the file being +converted unless the manual section is 3, in which case the path is parsed to +see if it is a Perl module path. If it is, a path like C<.../lib/Pod/Man.pm> +is converted into a name like C. This option, if given, overrides +any automatic determination of the name. If generating a manual page from standard input, the name will be set to -C if this option is not provided. Providing this option is strongly -recommended to set a meaningful manual page name. +C if this option is not provided. In this case, providing this option +is strongly recommended to set a meaningful manual page name. =item nourls -Normally, LZ<><> formatting codes with a URL but anchor text are formatted -to show both the anchor text and the URL. In other words: +[2.27] Normally, LZ<><> formatting codes with a URL but anchor text are +formatted to show both the anchor text and the URL. In other words: L @@ -1798,10 +1934,10 @@ important. =item quotes -Sets the quote marks used to surround CE> text. If the value is a -single character, it is used as both the left and right quote. Otherwise, -it is split in half, and the first half of the string is used as the left -quote and the second is used as the right quote. +[4.00] Sets the quote marks used to surround CE> text. If the value is a +single character, it is used as both the left and right quote. Otherwise, it +is split in half, and the first half of the string is used as the left quote +and the second is used as the right quote. This may also be set to the special value C, in which case no quote marks are added around CE> text (but the font is still changed for troff @@ -1813,82 +1949,258 @@ options is set, C or C overrides C. =item release -Set the centered footer for the C<.TH> macro. By default, this is set to -the version of Perl you run Pod::Man under. Setting this to the empty -string will cause some *roff implementations to use the system default -value. +[1.00] Set the centered footer for the C<.TH> macro. By default, this is set +to the version of Perl you run Pod::Man under. Setting this to the empty +string will cause some *roff implementations to use the system default value. -Note that some system C macro sets assume that the centered footer -will be a modification date and will prepend something like "Last -modified: ". If this is the case for your target system, you may want to -set C to the last modified date and C to the version -number. +Note that some system C macro sets assume that the centered footer will be +a modification date and will prepend something like C. If +this is the case for your target system, you may want to set C to the +last modified date and C to the version number. =item section -Set the section for the C<.TH> macro. The standard section numbering -convention is to use 1 for user commands, 2 for system calls, 3 for -functions, 4 for devices, 5 for file formats, 6 for games, 7 for -miscellaneous information, and 8 for administrator commands. There is a lot -of variation here, however; some systems (like Solaris) use 4 for file -formats, 5 for miscellaneous information, and 7 for devices. Still others -use 1m instead of 8, or some mix of both. About the only section numbers -that are reliably consistent are 1, 2, and 3. +[1.00] Set the section for the C<.TH> macro. The standard section numbering +convention is to use 1 for user commands, 2 for system calls, 3 for functions, +4 for devices, 5 for file formats, 6 for games, 7 for miscellaneous +information, and 8 for administrator commands. There is a lot of variation +here, however; some systems (like Solaris) use 4 for file formats, 5 for +miscellaneous information, and 7 for devices. Still others use 1m instead of +8, or some mix of both. About the only section numbers that are reliably +consistent are 1, 2, and 3. By default, section 1 will be used unless the file ends in C<.pm> in which case section 3 will be selected. =item stderr -Send error messages about invalid POD to standard error instead of -appending a POD ERRORS section to the generated *roff output. This is -equivalent to setting C to C if C is not already -set. It is supported for backward compatibility. +[2.19] If set to a true value, send error messages about invalid POD to +standard error instead of appending a POD ERRORS section to the generated +*roff output. This is equivalent to setting C to C if +C is not already set. + +This option is for backward compatibility with Pod::Man versions that did not +support C. Normally, the C option should be used instead. =item utf8 -By default, Pod::Man produces the most conservative possible *roff output -to try to ensure that it will work with as many different *roff -implementations as possible. Many *roff implementations cannot handle -non-ASCII characters, so this means all non-ASCII characters are converted -either to a *roff escape sequence that tries to create a properly accented -character (at least for troff output) or to C. - -If this option is set, Pod::Man will instead output UTF-8. If your *roff -implementation can handle it, this is the best output format to use and -avoids corruption of documents containing non-ASCII characters. However, -be warned that *roff source with literal UTF-8 characters is not supported -by many implementations and may even result in segfaults and other bad -behavior. - -Be aware that, when using this option, the input encoding of your POD -source should be properly declared unless it's US-ASCII. Pod::Simple will -attempt to guess the encoding and may be successful if it's Latin-1 or -UTF-8, but it will produce warnings. Use the C<=encoding> command to -declare the encoding. See L for more information. +[2.21] This option used to set the output encoding to UTF-8. Since this is +now the default, it is ignored and does nothing. + +=back =back -The standard Pod::Simple method parse_file() takes one argument naming the -POD file to read from. By default, the output is sent to C, but -this can be changed with the output_fh() method. +=head1 INSTANCE METHODS + +As a derived class from Pod::Simple, Pod::Man supports the same methods and +interfaces. See L for all the details. This section summarizes +the most-frequently-used methods and the ones added by Pod::Man. + +=over 4 + +=item output_fh(FH) + +Direct the output from parse_file(), parse_lines(), or parse_string_document() +to the file handle FH instead of C. + +=item output_string(REF) + +Direct the output from parse_file(), parse_lines(), or parse_string_document() +to the scalar variable pointed to by REF, rather than C. For example: + + my $man = Pod::Man->new(); + my $output; + $man->output_string(\$output); + $man->parse_file('/some/input/file'); -The standard Pod::Simple method parse_from_file() takes up to two -arguments, the first being the input file to read POD from and the second -being the file to write the formatted output to. +Be aware that the output in that variable will already be encoded in UTF-8. -You can also call parse_lines() to parse an array of lines or -parse_string_document() to parse a document already in memory. As with -parse_file(), parse_lines() and parse_string_document() default to sending -their output to C unless changed with the output_fh() method. Be -aware that parse_lines() and parse_string_document() both expect raw bytes, -not decoded characters. +=item parse_file(PATH) -To put the output from any parse method into a string instead of a file -handle, call the output_string() method instead of output_fh(). +Read the POD source from PATH and format it. By default, the output is sent +to C, but this can be changed with the output_fh() or output_string() +methods. -See L for more specific details on the methods available to -all derived parsers. +=item parse_from_file(INPUT, OUTPUT) + +=item parse_from_filehandle(FH, OUTPUT) + +Read the POD source from INPUT, format it, and output the results to OUTPUT. + +parse_from_filehandle() is provided for backward compatibility with older +versions of Pod::Man. parse_from_file() should be used instead. + +=item parse_lines(LINES[, ...[, undef]]) + +Parse the provided lines as POD source, writing the output to either C +or the file handle set with the output_fh() or output_string() methods. This +method can be called repeatedly to provide more input lines. An explicit +C should be passed to indicate the end of input. + +This method expects raw bytes, not decoded characters. + +=item parse_string_document(INPUT) + +Parse the provided scalar variable as POD source, writing the output to either +C or the file handle set with the output_fh() or output_string() +methods. + +This method expects raw bytes, not decoded characters. + +=back + +=head1 ENCODING + +As of Pod::Man 5.00, the default output encoding for Pod::Man is UTF-8. This +should work correctly on any modern system that uses either B (most +Linux distributions) or B (Alpine Linux and most BSD variants, +including macOS). + +The user will probably have to use a UTF-8 locale to see correct output. This +may be done by default; if not, set the LANG or LC_CTYPE environment variables +to an appropriate local. The locale C is available on most systems +if one wants correct output without changing the other things locales affect, +such as collation. + +The backward-compatible output format used in Pod::Man versions before 5.00 is +available by setting the C option to C. This may produce +marginally nicer results on older UNIX versions that do not use B or +B, but none of the available options will correctly render Unicode +characters on those systems. + +Below are some additional details about how this choice was made and some +discussion of alternatives. + +=head2 History + +The default output encoding for Pod::Man has been a long-standing problem. +B and B predate Unicode by a significant margin, and their +implementations for many UNIX systems reflect that legacy. It's common for +Unicode to not be supported in any form. + +Because of this, versions of Pod::Man prior to 5.00 maintained the highly +conservative output of the original pod2man, which output pure ASCII with +complex macros to simulate common western European accented characters when +processed with troff. The nroff output was awkward and sometimes incorrect, +and characters not used in western European scripts were replaced with C. +This choice maximized backwards compatibility with B and +B/B implementations at the cost of incorrect rendering of many +POD documents, particularly those containing people's names. + +The modern implementations, B (used in most Linux distributions) and +B (used by most BSD variants), do now support Unicode. Other UNIX +systems often do not, but they're now a tiny minority of the systems people +use on a daily basis. It's increasingly common (for very good reasons) to use +Unicode characters for POD documents rather than using ASCII conversions of +people's names or avoiding non-English text, making the limitations in the old +output format more apparent. + +Four options have been proposed to fix this: + +=over 2 + +=item * + +Optionally support UTF-8 output but don't change the default. This is the +approach taken since Pod::Man 2.1.0, which added the C option. Some +Pod::Man users use this option for better output on platforms known to support +Unicode, but since the defaults have not changed, people continued to +encounter (and file bug reports about) the poor default rendering. + +=item * + +Convert characters to troff C<\(xx> escapes. This requires maintaining a +large translation table and addresses only a tiny part of the problem, since +many Unicode characters have no standard troff name. B has the largest +list, but if one is willing to assume B is the formatter, the next +option is better. + +=item * + +Convert characters to groff C<\[uNNNN]> escapes. This is implemented as the +C encoding for those who want to use it, and is supported by both +B and B. However, it is no better than UTF-8 output for +portability to other implementations. See L for more +details. + +=item * + +Change the default output format to UTF-8 and ask those who want maximum +backward compatibility to explicitly select the old encoding. This fixes the +issue for most users at the cost of backwards compatibility. While the +rendering of non-ASCII characters is different on older systems that don't +support UTF-8, it's not always worse than the old output. + +=back + +Pod::Man 5.00 and later makes the last choice. This arguably produces worse +output when manual pages are formatted with B into PostScript or PDF, +but doing this is rare and normally manual, so the encoding can be changed in +those cases. The older output encoding is available by setting C to +C. + +=head2 Testing results + +Here is the results of testing C values of C and C on +various operating systems. The testing methodology was to create F +in the current directory, copy F or F from the +podlators 5.00 distribution to F, and then run: + + LANG=C.UTF-8 MANPATH=$(pwd)/man man 1 encoding + +If the locale is not explicitly set to one that includes UTF-8, the Unicode +characters were usually converted to ASCII (by, for example, dropping an +accent) or deleted or replaced with C<< >> if there was no conversion. + +Tested on 2022-09-25. Many thanks to the GCC Compile Farm project for access +to testing hosts. + + OS UTF-8 groff + ------------------ ------- ------- + AIX 7.1 no [1] no [2] + Alpine 3.15.0 yes yes + CentOS 7.9 yes yes + Debian 7 yes yes + FreeBSD 13.0 yes yes + NetBSD 9.2 yes yes + OpenBSD 7.1 yes yes + openSUSE Leap 15.4 yes yes + Solaris 10 yes no [2] + Solaris 11 no [3] no [3] + +I did not have access to a macOS system for testing, but since it uses +B, it's behavior is probably the same as the BSD hosts. + +Notes: + +=over 4 + +=item [1] + +Unicode characters were converted to one or two random ASCII characters +unrelated to the original character. + +=item [2] + +Unicode characters were shown as the body of the groff escape rather than the +indicated character (in other words, text like C<[u00EF]>). + +=item [3] + +Unicode characters were deleted entirely, as if they weren't there. Using +C instead of B to format the page showed the same results as +Solaris 10. Using C to format the page produced the +correct output. + +=back + +PostScript and PDF output using groff on a Debian 12 system do not support +combining accent marks or SMP characters due to a lack of support in the +default output font. + +Testing on additional platforms is welcome. Please let the author know if you +have additional results. =head1 DIAGNOSTICS @@ -1924,9 +2236,9 @@ option was set to C. =item PERL_CORE -If set and Encode is not available, silently fall back to non-UTF-8 mode -without complaining to standard error. This environment variable is set -during Perl core builds, which build Encode after podlators. Encode is +If set and Encode is not available, silently fall back to an encoding of +C without complaining to standard error. This environment variable is +set during Perl core builds, which build Encode after podlators. Encode is expected to not (yet) be available in that case. =item POD_MAN_DATE @@ -1955,65 +2267,104 @@ reliable if this variable overrode the timestamp of the input file.) =back -=head1 BUGS +=head1 COMPATIBILITY -Encoding handling assumes that PerlIO is available and does not work -properly if it isn't. The C option is therefore not supported -unless Perl is built with PerlIO support. +Pod::Man 1.02 (based on L) was the first version included with +Perl, in Perl 5.6.0. -There is currently no way to turn off the guesswork that tries to format -unmarked text appropriately, and sometimes it isn't wanted (particularly -when using POD to document something other than Perl). Most of the work -toward fixing this has now been done, however, and all that's still needed -is a user interface. +The current API based on L was added in Pod::Man 2.00. Pod::Man +2.04 was included in Perl 5.9.3, the first version of Perl to incorporate +those changes. This is the first version that correctly supports all modern +POD syntax. The parse_from_filehandle() method was re-added for backward +compatibility in Pod::Man 2.09, included in Perl 5.9.4. -The NAME section should be recognized specially and index entries emitted -for everything in that section. This would have to be deferred until the -next section, since extraneous things in NAME tends to confuse various man -page processors. Currently, no index entries are emitted for anything in -NAME. +Support for anchor text in LZ<><> links of type URL was added in Pod::Man +2.23, included in Perl 5.11.5. -Pod::Man doesn't handle font names longer than two characters. Neither do -most B implementations, but GNU troff does as an extension. It would -be nice to support as an option for those who want to use it. +parse_lines(), parse_string_document(), and parse_file() set a default output +file handle of C if one was not already set as of Pod::Man 2.28, +included in Perl 5.19.5. + +Support for SOURCE_DATE_EPOCH and POD_MAN_DATE was added in Pod::Man 4.00, +included in Perl 5.23.7, and generated dates were changed to use UTC instead +of the local time zone. This is also the first release that aligned the +module version and the version of the podlators distribution. All modules +included in podlators, and the podlators distribution itself, share the same +version number from this point forward. -The preamble added to each output file is rather verbose, and most of it -is only necessary in the presence of non-ASCII characters. It would -ideally be nice if all of those definitions were only output if needed, -perhaps on the fly as the characters are used. +Pod::Man 4.10, included in Perl 5.27.8, changed the formatting for manual page +references and function names to bold instead of italic, following the current +Linux manual page standard. -Pod::Man is excessively slow. +Pod::Man 5.00 changed the default output encoding to UTF-8, overridable with +the new C option. It also fixed problems with bold or italic +extending too far when used with CZ<><> escapes, and began converting Unicode +zero-width spaces (U+200B) to the C<\:> *roff escape. It also dropped +attempts to add subtle formatting corrections in the output that would only be +visible when typeset with B, which had previously been a significant +source of bugs. + +=head1 BUGS + +There are numerous bugs and language-specific assumptions in the nroff +fallbacks for accented characters in the C encoding. Since the point of +this encoding is backward compatibility with the output from earlier versions +of Pod::Man, and it is deprecated except when necessary to support old +systems, those bugs are unlikely to ever be fixed. + +Pod::Man doesn't handle font names longer than two characters. Neither do +most B implementations, but groff does as an extension. It would be +nice to support as an option for those who want to use it. =head1 CAVEATS -If Pod::Man is given the C option, the encoding of its output file -handle will be forced to UTF-8 if possible, overriding any existing -encoding. This will be done even if the file handle is not created by -Pod::Man and was passed in from outside. This maintains consistency -regardless of PERL_UNICODE and other settings. +=head2 Sentence spacing + +Pod::Man copies the input spacing verbatim to the output *roff document. This +means your output will be affected by how B generally handles sentence +spacing. + +B dates from an era in which it was standard to use two spaces after +sentences, and will always add two spaces after a line-ending period (or +similar punctuation) when reflowing text. For example, the following input: + + =pod -The handling of hyphens and em dashes is somewhat fragile, and one may get -the wrong one under some circumstances. This should only matter for -B output. + One sentence. + Another sentence. -When and whether to use small caps is somewhat tricky, and Pod::Man doesn't -necessarily get it right. +will result in two spaces after the period when the text is reflowed. If you +use two spaces after sentences anyway, this will be consistent, although you +will have to be careful to not end a line with an abbreviation such as C +or C. Output will also be consistent if you use the *roff style guide +(and L) recommendation of putting a line +break after each sentence, although that will consistently produce two spaces +after each sentence, which may not be what you want. -Converting neutral double quotes to properly matched double quotes doesn't -work unless there are no formatting codes between the quote marks. This -only matters for troff output. +If you prefer one space after sentences (which is the more modern style), you +will unfortunately need to ensure that no line in the middle of a paragraph +ends in a period or similar sentence-ending paragraph. Otherwise, B +will add a two spaces after that sentence when reflowing, and your output +document will have inconsistent spacing. + +=head2 Hyphens + +The handling of hyphens versus dashes is somewhat fragile, and one may get a +the wrong one under some circumstances. This will normally only matter for +line breaking and possibly for troff output. =head1 AUTHOR -Russ Allbery , based I heavily on the original B -by Tom Christiansen . The modifications to work with -Pod::Simple instead of Pod::Parser were originally contributed by Sean Burke - (but I've since hacked them beyond recognition and all bugs -are mine). +Written by Russ Allbery , based on the original B by +Tom Christiansen . + +The modifications to work with Pod::Simple instead of Pod::Parser were +contributed by Sean Burke , but I've since hacked them beyond +recognition and all bugs are mine. =head1 COPYRIGHT AND LICENSE -Copyright 1999-2010, 2012-2019 Russ Allbery +Copyright 1999-2010, 2012-2020, 2022 Russ Allbery Substantial contributions by Sean Burke . @@ -2022,18 +2373,19 @@ under the same terms as Perl itself. =head1 SEE ALSO -L, L, L, L, L, -L, L +L, L, L, L, +L, L, L, L Ossanna, Joseph F., and Brian W. Kernighan. "Troff User's Manual," Computing Science Technical Report No. 54, AT&T Bell Laboratories. This is the best documentation of standard B and B. At the time of this writing, it's available at L. -The man page documenting the man macro set may be L instead of -L on your system. Also, please see L for extensive -documentation on writing manual pages if you've not done it before and -aren't familiar with the conventions. +The manual page documenting the man macro set may be L instead of +L on your system. + +See L for documentation on writing manual pages in POD if +you've not done it before and aren't familiar with the conventions. The current version of this module is always available from its web site at L. It is also part of the diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/ParseLink.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/ParseLink.pm index 273c95847ac..83bc3f7565b 100644 --- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/ParseLink.pm +++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/ParseLink.pm @@ -13,17 +13,15 @@ package Pod::ParseLink; -use 5.008; +use 5.010; use strict; use warnings; -use vars qw(@EXPORT @ISA $VERSION); - use Exporter; -@ISA = qw(Exporter); -@EXPORT = qw(parselink); -$VERSION = '4.14'; +our @ISA = qw(Exporter); +our @EXPORT = qw(parselink); +our $VERSION = '5.01'; ############################################################################## # Implementation @@ -171,7 +169,7 @@ Russ Allbery =head1 COPYRIGHT AND LICENSE -Copyright 2001, 2008, 2009, 2014, 2018-2019 Russ Allbery +Copyright 2001, 2008, 2009, 2014, 2018-2019, 2022 Russ Allbery This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text.pm index 56e6e78a86c..83a7ce22a82 100644 --- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text.pm +++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text.pm @@ -14,23 +14,20 @@ package Pod::Text; -use 5.008; +use 5.010; use strict; use warnings; -use vars qw(@ISA @EXPORT %ESCAPES $VERSION); - use Carp qw(carp croak); use Encode qw(encode); use Exporter (); use Pod::Simple (); -@ISA = qw(Pod::Simple Exporter); +our @ISA = qw(Pod::Simple Exporter); +our $VERSION = '5.01'; # We have to export pod2text for backward compatibility. -@EXPORT = qw(pod2text); - -$VERSION = '4.14'; +our @EXPORT = qw(pod2text); # Ensure that $Pod::Simple::nbsp and $Pod::Simple::shy are available. Code # taken from Pod::Simple 3.32, but was only added in 3.30. @@ -43,6 +40,11 @@ if ($Pod::Simple::VERSION ge 3.30) { $SHY = chr utf8::unicode_to_native(0xAD); } +# Import the ASCII constant from Pod::Simple. This is true iff we're in an +# ASCII-based universe (including such things as ISO 8859-1 and UTF-8), and is +# generally only false for EBCDIC. +BEGIN { *ASCII = \&Pod::Simple::ASCII } + ############################################################################## # Initialization ############################################################################## @@ -64,9 +66,6 @@ sub new { my $class = shift; my $self = $class->SUPER::new; - # Tell Pod::Simple to handle S<> by automatically inserting  . - $self->nbsp_for_S (1); - # Tell Pod::Simple to keep whitespace whenever possible. if ($self->can ('preserve_whitespace')) { $self->preserve_whitespace (1); @@ -89,16 +88,20 @@ sub new { my @opts = map { ("opt_$_", $opts{$_}) } keys %opts; %$self = (%$self, @opts); - # Send errors to stderr if requested. + # Backwards-compatibility support for the stderr option. if ($$self{opt_stderr} and not $$self{opt_errors}) { $$self{opt_errors} = 'stderr'; } delete $$self{opt_stderr}; - # Validate the errors parameter and act on it. - if (not defined $$self{opt_errors}) { - $$self{opt_errors} = 'pod'; + # Backwards-compatibility support for the utf8 option. + if ($$self{opt_utf8} && !$$self{opt_encoding}) { + $$self{opt_encoding} = 'UTF-8'; } + delete $$self{opt_utf8}; + + # Validate the errors parameter and act on it. + $$self{opt_errors} //= 'pod'; if ($$self{opt_errors} eq 'stderr' || $$self{opt_errors} eq 'die') { $self->no_errata_section (1); $self->complain_stderr (1); @@ -117,12 +120,12 @@ sub new { delete $$self{errors}; # Initialize various things from our parameters. - $$self{opt_alt} = 0 unless defined $$self{opt_alt}; - $$self{opt_indent} = 4 unless defined $$self{opt_indent}; - $$self{opt_margin} = 0 unless defined $$self{opt_margin}; - $$self{opt_loose} = 0 unless defined $$self{opt_loose}; - $$self{opt_sentence} = 0 unless defined $$self{opt_sentence}; - $$self{opt_width} = 76 unless defined $$self{opt_width}; + $$self{opt_alt} //= 0; + $$self{opt_indent} //= 4; + $$self{opt_margin} //= 0; + $$self{opt_loose} //= 0; + $$self{opt_sentence} //= 0; + $$self{opt_width} //= 76; # Figure out what quotes we'll be using for C<> text. $$self{opt_quotes} ||= '"'; @@ -138,6 +141,17 @@ sub new { croak qq(Invalid quote specification "$$self{opt_quotes}"); } + # Configure guesswork based on options. + my $guesswork = $self->{opt_guesswork} || q{}; + my %guesswork = map { $_ => 1 } split(m{,}xms, $guesswork); + if (!%guesswork || $guesswork{all}) { + $$self{GUESSWORK} = {quoting => 1}; + } elsif ($guesswork{none}) { + $$self{GUESSWORK} = {}; + } else { + $$self{GUESSWORK} = {%guesswork}; + } + # If requested, do something with the non-POD text. $self->code_handler (\&handle_code) if $$self{opt_code}; @@ -272,9 +286,7 @@ sub reformat { } # Output text to the output device. Replace non-breaking spaces with spaces -# and soft hyphens with nothing, and then try to fix the output encoding if -# necessary to match the input encoding unless UTF-8 output is forced. This -# preserves the traditional pass-through behavior of Pod::Text. +# and soft hyphens with nothing, and then determine the output encoding. sub output { my ($self, @text) = @_; my $text = join ('', @text); @@ -284,15 +296,39 @@ sub output { if ($SHY) { $text =~ s/$SHY//g; } - unless ($$self{opt_utf8}) { - my $encoding = $$self{encoding} || ''; - if ($encoding && $encoding ne $$self{ENCODING}) { - $$self{ENCODING} = $encoding; - eval { binmode ($$self{output_fh}, ":encoding($encoding)") }; - } - } + + # The logic used here is described in the POD documentation. Prefer the + # configured encoding, then the pass-through option of using the same + # encoding as the input, and then UTF-8, but commit to an encoding for the + # document. + # + # ENCODE says whether to encode or not and is turned off if there is a + # PerlIO encoding layer (in start_document). ENCODING is the encoding + # that we previously committed to and is cleared at the start of each + # document. if ($$self{ENCODE}) { - print { $$self{output_fh} } encode ('UTF-8', $text); + my $encoding = $$self{ENCODING}; + if (!$encoding) { + $encoding = $self->encoding(); + if (!$encoding && ASCII && $text =~ /[^\x00-\x7F]/) { + $encoding = 'UTF-8'; + } + if ($encoding) { + $$self{ENCODING} = $encoding; + } + } + if ($encoding) { + my $check = sub { + my ($char) = @_; + my $display = '"\x{' . hex($char) . '}"'; + my $error = "$display does not map to $$self{ENCODING}"; + $self->whine ($self->line_count(), $error); + return Encode::encode ($$self{ENCODING}, chr($char)); + }; + print { $$self{output_fh} } encode ($encoding, $text, $check); + } else { + print { $$self{output_fh} } $text; + } } else { print { $$self{output_fh} } $text; } @@ -322,24 +358,18 @@ sub start_document { $$self{MARGIN} = $margin; # Default left margin. $$self{PENDING} = [[]]; # Pending output. - # We have to redo encoding handling for each document. - $$self{ENCODING} = ''; - - # When UTF-8 output is set, check whether our output file handle already - # has a PerlIO encoding layer set. If it does not, we'll need to encode - # our output before printing it (handled in the output() sub). - $$self{ENCODE} = 0; - if ($$self{opt_utf8}) { - $$self{ENCODE} = 1; - eval { - my @options = (output => 1, details => 1); - my $flag = (PerlIO::get_layers ($$self{output_fh}, @options))[-1]; - if ($flag && ($flag & PerlIO::F_UTF8 ())) { - $$self{ENCODE} = 0; - $$self{ENCODING} = 'UTF-8'; - } - }; - } + # We have to redo encoding handling for each document. Check whether the + # output file handle already has a PerlIO encoding layer set and, if so, + # disable encoding. + $$self{ENCODE} = 1; + eval { + my @options = (output => 1, details => 1); + my $flag = (PerlIO::get_layers ($$self{output_fh}, @options))[-1]; + if ($flag && ($flag & PerlIO::F_UTF8 ())) { + $$self{ENCODE} = 0; + } + }; + $$self{ENCODING} = $$self{opt_encoding}; return ''; } @@ -383,8 +413,7 @@ sub item { # Calculate the indentation and margin. $fits is set to true if the tag # will fit into the margin of the paragraph given our indentation level. - my $indent = $$self{INDENTS}[-1]; - $indent = $$self{opt_indent} unless defined $indent; + my $indent = $$self{INDENTS}[-1] // $$self{opt_indent}; my $margin = ' ' x $$self{opt_margin}; my $tag_length = length ($self->strip_format ($tag)); my $fits = ($$self{MARGIN} - $indent >= $tag_length + 1); @@ -588,6 +617,13 @@ sub cmd_f { return $_[0]{alt} ? "\"$_[2]\"" : $_[2] } sub cmd_i { return '*' . $_[2] . '*' } sub cmd_x { return '' } +# Convert all internal whitespace to $NBSP. +sub cmd_s { + my ($self, $attrs, $text) = @_; + $text =~ s{ \s }{$NBSP}xmsg; + return $text; +} + # Apply a whole bunch of messy heuristics to not quote things that don't # benefit from being quoted. These originally come from Barrie Slaymaker and # largely duplicate code in Pod::Man. @@ -597,23 +633,35 @@ sub cmd_c { # A regex that matches the portion of a variable reference that's the # array or hash index, separated out just because we want to use it in # several places in the following regex. - my $index = '(?: \[.*\] | \{.*\} )?'; + my $index = '(?: \[[^]]+\] | \{[^}]+\} )?'; # Check for things that we don't want to quote, and if we find any of # them, return the string with just a font change and no quoting. + # + # Traditionally, Pod::Text has not quoted Perl variables, functions, + # numbers, or hex constants, but this is not always desirable. Make this + # optional on the quoting guesswork flag. + my $extra = qr{(?!)}xms; # never matches + if ($$self{GUESSWORK}{quoting}) { + $extra = qr{ + \$+ [\#^]? \S $index # special ($^F, $") + | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func + | [\$\@%&*]* [:\'\w]+ + (?: -> )? \(\s*[^\s,\)]*\s*\) # 0/1-arg func call + | [+-]? ( \d[\d.]* | \.\d+ ) + (?: [eE][+-]?\d+ )? # a number + | 0x [a-fA-F\d]+ # a hex constant + }xms; + } $text =~ m{ ^\s* (?: - ( [\'\`\"] ) .* \1 # already quoted - | \` .* \' # `quoted' - | \$+ [\#^]? \S $index # special ($^Foo, $") - | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func - | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call - | [+-]? ( \d[\d.]* | \.\d+ ) (?: [eE][+-]?\d+ )? # a number - | 0x [a-fA-F\d]+ # a hex constant + ( [\'\`\"] ) .* \1 # already quoted + | \` .* \' # `quoted' + | $extra ) \s*\z - }xo && return $text; + }xms and return $text; # If we didn't return, go ahead and quote the text. return $$self{opt_alt} @@ -766,7 +814,7 @@ __END__ =for stopwords alt stderr Allbery Sean Burke's Christiansen UTF-8 pre-Unicode utf8 nourls -parsers +parsers EBCDIC autodetecting superset unrepresentable FH NNN =head1 NAME @@ -785,67 +833,180 @@ Pod::Text - Convert POD data to formatted text =head1 DESCRIPTION -Pod::Text is a module that can convert documentation in the POD format -(the preferred language for documenting Perl) into formatted text. It -uses no special formatting controls or codes whatsoever, and its output is -therefore suitable for nearly any device. +Pod::Text is a module that can convert documentation in the POD format (the +preferred language for documenting Perl) into formatted text. It uses no +special formatting controls or codes, and its output is therefore suitable for +nearly any device. -As a derived class from Pod::Simple, Pod::Text supports the same methods and -interfaces. See L for all the details; briefly, one creates a -new parser with C<< Pod::Text->new() >> and then normally calls parse_file(). +=head2 Encoding -new() can take options, in the form of key/value pairs, that control the -behavior of the parser. The currently recognized options are: +Pod::Text uses the following logic to choose an output encoding, in order: + +=over 4 + +=item 1. + +If a PerlIO encoding layer is set on the output file handle, do not do any +output encoding and will instead rely on the PerlIO encoding layer. + +=item 2. + +If the C or C options are set, use the output encoding +specified by those options. + +=item 3. + +If the input encoding of the POD source file was explicitly specified (using +C<=encoding>) or automatically detected by Pod::Simple, use that as the output +encoding as well. + +=item 4. + +Otherwise, if running on a non-EBCDIC system, use UTF-8 as the output +encoding. Since this is a superset of ASCII, this will result in ASCII output +unless the POD input contains non-ASCII characters without declaring or +autodetecting an encoding (usually via EZ<><> escapes). + +=item 5. + +Otherwise, for EBCDIC systems, output without doing any encoding and hope +this works. + +=back + +One caveat: Pod::Text has to commit to an output encoding the first time it +outputs a non-ASCII character, and then has to stick with it for consistency. +However, C<=encoding> commands don't have to be at the beginning of a POD +document. If someone uses a non-ASCII character early in a document with an +escape, such as EZ<><0xEF>, and then puts C<=encoding iso-8859-1> later, +ideally Pod::Text would follow rule 3 and output the entire document as ISO +8859-1. Instead, it will commit to UTF-8 following rule 4 as soon as it sees +that escape, and then stick with that encoding for the rest of the document. + +Unfortunately, there's no universally good choice for an output encoding. +Each choice will be incorrect in some circumstances. This approach was chosen +primarily for backwards compatibility. Callers should consider forcing the +output encoding via C if they have any knowledge about what encoding +the user may expect. + +In particular, consider importing the L module, if available, +and setting C to C to use an output encoding appropriate to +the user's locale. But be aware that if the user is not using locales or is +using a locale of C, Encode::Locale will set the output encoding to +US-ASCII. This will cause all non-ASCII characters will be replaced with C +and produce a flurry of warnings about unsupported characters, which may or +may not be what you want. + +=head1 CLASS METHODS + +=over 4 + +=item new(ARGS) + +Create a new Pod::Text object. ARGS should be a list of key/value pairs, +where the keys are chosen from the following. Each option is annotated with +the version of Pod::Text in which that option was added with its current +meaning. =over 4 =item alt -If set to a true value, selects an alternate output format that, among other -things, uses a different heading style and marks C<=item> entries with a +[2.00] If set to a true value, selects an alternate output format that, among +other things, uses a different heading style and marks C<=item> entries with a colon in the left margin. Defaults to false. =item code -If set to a true value, the non-POD parts of the input file will be included -in the output. Useful for viewing code documented with POD blocks with the -POD rendered and the code left intact. +[2.13] If set to a true value, the non-POD parts of the input file will be +included in the output. Useful for viewing code documented with POD blocks +with the POD rendered and the code left intact. + +=item encoding + +[5.00] Specifies the encoding of the output. The value must be an encoding +recognized by the L module (see L). If the output +contains characters that cannot be represented in this encoding, that is an +error that will be reported as configured by the C option. If error +handling is other than C, the unrepresentable character will be replaced +with the Encode substitution character (normally C). + +If the output file handle has a PerlIO encoding layer set, this parameter will +be ignored and no encoding will be done by Pod::Man. It will instead rely on +the encoding layer to make whatever output encoding transformations are +desired. + +WARNING: The input encoding of the POD source is independent from the output +encoding, and setting this option does not affect the interpretation of the +POD input. Unless your POD source is US-ASCII, its encoding should be +declared with the C<=encoding> command in the source, as near to the top of +the file as possible. If this is not done, Pod::Simple will will attempt to +guess the encoding and may be successful if it's Latin-1 or UTF-8, but it will +produce warnings. See L for more information. =item errors -How to report errors. C says to throw an exception on any POD -formatting error. C says to report errors on standard error, but -not to throw an exception. C says to include a POD ERRORS section -in the resulting documentation summarizing the errors. C ignores -POD errors entirely, as much as possible. +[3.17] How to report errors. C says to throw an exception on any POD +formatting error. C says to report errors on standard error, but not +to throw an exception. C says to include a POD ERRORS section in the +resulting documentation summarizing the errors. C ignores POD errors +entirely, as much as possible. The default is C. +=item guesswork + +[5.01] By default, Pod::Text applies some default formatting rules based on +guesswork and regular expressions that are intended to make writing Perl +documentation easier and require less explicit markup. These rules may not +always be appropriate, particularly for documentation that isn't about Perl. +This option allows turning all or some of it off. + +The special value C enables all guesswork. This is also the default for +backward compatibility reasons. The special value C disables all +guesswork. Otherwise, the value of this option should be a comma-separated +list of one or more of the following keywords: + +=over 4 + +=item quoting + +If no guesswork is enabled, any text enclosed in CZ<><> is surrounded by +double quotes in nroff (terminal) output unless the contents are already +quoted. When this guesswork is enabled, quote marks will also be suppressed +for Perl variables, function names, function calls, numbers, and hex +constants. + +=back + +Any unknown guesswork name is silently ignored (for potential future +compatibility), so be careful about spelling. + =item indent -The number of spaces to indent regular text, and the default indentation for -C<=over> blocks. Defaults to 4. +[2.00] The number of spaces to indent regular text, and the default +indentation for C<=over> blocks. Defaults to 4. =item loose -If set to a true value, a blank line is printed after a C<=head1> heading. -If set to false (the default), no blank line is printed after C<=head1>, -although one is still printed after C<=head2>. This is the default because -it's the expected formatting for manual pages; if you're formatting +[2.00] If set to a true value, a blank line is printed after a C<=head1> +heading. If set to false (the default), no blank line is printed after +C<=head1>, although one is still printed after C<=head2>. This is the default +because it's the expected formatting for manual pages; if you're formatting arbitrary text documents, setting this to true may result in more pleasing output. =item margin -The width of the left margin in spaces. Defaults to 0. This is the margin -for all text, including headings, not the amount by which regular text is -indented; for the latter, see the I option. To set the right +[2.21] The width of the left margin in spaces. Defaults to 0. This is the +margin for all text, including headings, not the amount by which regular text +is indented; for the latter, see the I option. To set the right margin, see the I option. =item nourls -Normally, LZ<><> formatting codes with a URL but anchor text are formatted -to show both the anchor text and the URL. In other words: +[3.17] Normally, LZ<><> formatting codes with a URL but anchor text are +formatted to show both the anchor text and the URL. In other words: L @@ -853,74 +1014,131 @@ is formatted as: foo -This option, if set to a true value, suppresses the URL when anchor text -is given, so this example would be formatted as just C. This can -produce less cluttered output in cases where the URLs are not particularly -important. +This option, if set to a true value, suppresses the URL when anchor text is +given, so this example would be formatted as just C. This can produce +less cluttered output in cases where the URLs are not particularly important. =item quotes -Sets the quote marks used to surround CE> text. If the value is a -single character, it is used as both the left and right quote. Otherwise, -it is split in half, and the first half of the string is used as the left -quote and the second is used as the right quote. +[4.00] Sets the quote marks used to surround CE> text. If the value is a +single character, it is used as both the left and right quote. Otherwise, it +is split in half, and the first half of the string is used as the left quote +and the second is used as the right quote. This may also be set to the special value C, in which case no quote marks are added around CE> text. =item sentence -If set to a true value, Pod::Text will assume that each sentence ends in two -spaces, and will try to preserve that spacing. If set to false, all -consecutive whitespace in non-verbatim paragraphs is compressed into a -single space. Defaults to false. +[3.00] If set to a true value, Pod::Text will assume that each sentence ends +in two spaces, and will try to preserve that spacing. If set to false, all +consecutive whitespace in non-verbatim paragraphs is compressed into a single +space. Defaults to false. =item stderr -Send error messages about invalid POD to standard error instead of -appending a POD ERRORS section to the generated output. This is -equivalent to setting C to C if C is not already -set. It is supported for backward compatibility. +[3.10] Send error messages about invalid POD to standard error instead of +appending a POD ERRORS section to the generated output. This is equivalent to +setting C to C if C is not already set. It is +supported for backward compatibility. =item utf8 -By default, Pod::Text uses the same output encoding as the input encoding -of the POD source (provided that Perl was built with PerlIO; otherwise, it -doesn't encode its output). If this option is given, the output encoding -is forced to UTF-8. - -Be aware that, when using this option, the input encoding of your POD -source should be properly declared unless it's US-ASCII. Pod::Simple will -attempt to guess the encoding and may be successful if it's Latin-1 or -UTF-8, but it will produce warnings. Use the C<=encoding> command to -declare the encoding. See L for more information. +[3.12] If this option is set to a true value, the output encoding is set to +UTF-8. This is equivalent to setting C to C if C +is not already set. It is supported for backward compatibility. =item width -The column at which to wrap text on the right-hand side. Defaults to 76. +[2.00] The column at which to wrap text on the right-hand side. Defaults to +76. + +=back + +=back + +=head1 INSTANCE METHODS + +As a derived class from Pod::Simple, Pod::Text supports the same methods and +interfaces. See L for all the details. This section summarizes +the most-frequently-used methods and the ones added by Pod::Text. + +=over 4 + +=item output_fh(FH) + +Direct the output from parse_file(), parse_lines(), or parse_string_document() +to the file handle FH instead of C. + +=item output_string(REF) + +Direct the output from parse_file(), parse_lines(), or parse_string_document() +to the scalar variable pointed to by REF, rather than C. For example: + + my $man = Pod::Man->new(); + my $output; + $man->output_string(\$output); + $man->parse_file('/some/input/file'); + +Be aware that the output in that variable will already be encoded (see +L). + +=item parse_file(PATH) + +Read the POD source from PATH and format it. By default, the output is sent +to C, but this can be changed with the output_fh() or output_string() +methods. + +=item parse_from_file(INPUT, OUTPUT) + +=item parse_from_filehandle(FH, OUTPUT) + +Read the POD source from INPUT, format it, and output the results to OUTPUT. + +parse_from_filehandle() is provided for backward compatibility with older +versions of Pod::Man. parse_from_file() should be used instead. + +=item parse_lines(LINES[, ...[, undef]]) + +Parse the provided lines as POD source, writing the output to either C +or the file handle set with the output_fh() or output_string() methods. This +method can be called repeatedly to provide more input lines. An explicit +C should be passed to indicate the end of input. + +This method expects raw bytes, not decoded characters. + +=item parse_string_document(INPUT) + +Parse the provided scalar variable as POD source, writing the output to either +C or the file handle set with the output_fh() or output_string() +methods. + +This method expects raw bytes, not decoded characters. =back -The standard Pod::Simple method parse_file() takes one argument naming the -POD file to read from. By default, the output is sent to C, but -this can be changed with the output_fh() method. +=head1 FUNCTIONS -The standard Pod::Simple method parse_from_file() takes up to two -arguments, the first being the input file to read POD from and the second -being the file to write the formatted output to. +Pod::Text exports one function for backward compatibility with older versions. +This function is deprecated; instead, use the object-oriented interface +described above. -You can also call parse_lines() to parse an array of lines or -parse_string_document() to parse a document already in memory. As with -parse_file(), parse_lines() and parse_string_document() default to sending -their output to C unless changed with the output_fh() method. Be -aware that parse_lines() and parse_string_document() both expect raw bytes, -not decoded characters. +=over 4 + +=item pod2text([[-a,] [-NNN,]] INPUT[, OUTPUT]) + +Convert the POD source from INPUT to text and write it to OUTPUT. If OUTPUT +is not given, defaults to C. INPUT can be any expression supported as +the second argument to two-argument open(). -To put the output from any parse method into a string instead of a file -handle, call the output_string() method instead of output_fh(). +If C<-a> is given as an initial argument, pass the C option to the +Pod::Text constructor. This enables alternative formatting. -See L for more specific details on the methods available to -all derived parsers. +If C<-NNN> is given as an initial argument, pass the C option to the +Pod::Text constructor with the number C as its argument. This sets the +wrap line width to NNN. + +=back =head1 DIAGNOSTICS @@ -955,61 +1173,66 @@ option was set to C. =back -=head1 BUGS +=head1 COMPATIBILITY -Encoding handling assumes that PerlIO is available and does not work -properly if it isn't. The C option is therefore not supported -unless Perl is built with PerlIO support. +Pod::Text 2.03 (based on L) was the first version of this module +included with Perl, in Perl 5.6.0. Earlier versions of Perl had a different +Pod::Text module, with a different API. -=head1 CAVEATS +The current API based on L was added in Pod::Text 3.00. +Pod::Text 3.01 was included in Perl 5.9.3, the first version of Perl to +incorporate those changes. This is the first version that correctly supports +all modern POD syntax. The parse_from_filehandle() method was re-added for +backward compatibility in Pod::Text 3.07, included in Perl 5.9.4. -If Pod::Text is given the C option, the encoding of its output file -handle will be forced to UTF-8 if possible, overriding any existing -encoding. This will be done even if the file handle is not created by -Pod::Text and was passed in from outside. This maintains consistency -regardless of PERL_UNICODE and other settings. +Pod::Text 3.12, included in Perl 5.10.1, first implemented the current +practice of attempting to match the default output encoding with the input +encoding of the POD source, unless overridden by the C option or (added +later) the C option. -If the C option is not given, the encoding of its output file handle -will be forced to the detected encoding of the input POD, which preserves -whatever the input text is. This ensures backward compatibility with -earlier, pre-Unicode versions of this module, without large numbers of -Perl warnings. +Support for anchor text in LZ<><> links of type URL was added in Pod::Text +3.14, included in Perl 5.11.5. -This is not ideal, but it seems to be the best compromise. If it doesn't -work for you, please let me know the details of how it broke. +parse_lines(), parse_string_document(), and parse_file() set a default output +file handle of C if one was not already set as of Pod::Text 3.18, +included in Perl 5.19.5. -=head1 NOTES +Pod::Text 4.00, included in Perl 5.23.7, aligned the module version and the +version of the podlators distribution. All modules included in podlators, and +the podlators distribution itself, share the same version number from this +point forward. -This is a replacement for an earlier Pod::Text module written by Tom -Christiansen. It has a revamped interface, since it now uses Pod::Simple, -but an interface roughly compatible with the old Pod::Text::pod2text() -function is still available. Please change to the new calling convention, -though. +Pod::Text 4.09, included in Perl 5.25.7, fixed a serious bug on EBCDIC +systems, present in all versions back to 3.00, that would cause opening +brackets to disappear. -The original Pod::Text contained code to do formatting via termcap -sequences, although it wasn't turned on by default and it was problematic to -get it to work at all. This rewrite doesn't even try to do that, but a -subclass of it does. Look for L. +Pod::Text 5.00 now defaults, on non-EBCDIC systems, to UTF-8 encoding if it +sees a non-ASCII character in the input and the input encoding is not +specified. It also commits to an encoding with the first non-ASCII character +and does not change the output encoding if the input encoding changes. The +L module is now used for all output encoding rather than PerlIO +layers, which fixes earlier problems with output to scalars. =head1 AUTHOR -Russ Allbery , based I heavily on the original -Pod::Text by Tom Christiansen and its conversion to -Pod::Parser by Brad Appleton . Sean Burke's initial -conversion of Pod::Man to use Pod::Simple provided much-needed guidance on -how to use Pod::Simple. +Russ Allbery , based I heavily on the original Pod::Text +by Tom Christiansen and its conversion to Pod::Parser +by Brad Appleton . Sean Burke's initial conversion of +Pod::Man to use Pod::Simple provided much-needed guidance on how to use +Pod::Simple. =head1 COPYRIGHT AND LICENSE -Copyright 1999-2002, 2004, 2006, 2008-2009, 2012-2016, 2018-2019 Russ Allbery - +Copyright 1999-2002, 2004, 2006, 2008-2009, 2012-2016, 2018-2019, 2022 Russ +Allbery This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO -L, L, L, L +L, L, L, +L, L, L The current version of this module is always available from its web site at L. It is also part of the diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm index 5d47c5ecb3b..2d656d6a3dc 100644 --- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm +++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Color.pm @@ -12,18 +12,15 @@ package Pod::Text::Color; -use 5.008; +use 5.010; use strict; use warnings; use Pod::Text (); use Term::ANSIColor qw(color colored); -use vars qw(@ISA $VERSION); - -@ISA = qw(Pod::Text); - -$VERSION = '4.14'; +our @ISA = qw(Pod::Text); +our $VERSION = '5.01'; ############################################################################## # Overrides @@ -170,11 +167,22 @@ options. Term::ANSIColor is used to get colors and therefore must be installed to use this module. -=head1 BUGS +=head1 COMPATIBILITY + +Pod::Text::Color 0.05 (based on L) was the first version of this +module included with Perl, in Perl 5.6.0. + +The current API based on L was added in Pod::Text::Color 2.00. +Pod::Text::Color 2.01 was included in Perl 5.9.3, the first version of Perl to +incorporate those changes. + +Several problems with wrapping and line length were fixed as recently as +Pod::Text::Color 4.11, included in Perl 5.29.1. -This is just a basic proof of concept. It should be seriously expanded to -support configurable coloration via options passed to the constructor, and -B should be taught about those. +This module inherits its API and most behavior from Pod::Text, so the details +in L also apply. Pod::Text and Pod::Text::Color have +had the same module version since 4.00, included in Perl 5.23.7. (They +unfortunately diverge in confusing ways prior to that.) =head1 AUTHOR @@ -182,7 +190,7 @@ Russ Allbery . =head1 COPYRIGHT AND LICENSE -Copyright 1999, 2001, 2004, 2006, 2008, 2009, 2018-2019 Russ Allbery +Copyright 1999, 2001, 2004, 2006, 2008, 2009, 2018-2019, 2022 Russ Allbery This program is free software; you may redistribute it and/or modify it diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm index 53bc6afef23..3135c8863cb 100644 --- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm +++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Overstrike.pm @@ -19,17 +19,14 @@ package Pod::Text::Overstrike; -use 5.008; +use 5.010; use strict; use warnings; -use vars qw(@ISA $VERSION); - use Pod::Text (); -@ISA = qw(Pod::Text); - -$VERSION = '4.14'; +our @ISA = qw(Pod::Text); +our $VERSION = '5.01'; ############################################################################## # Overrides @@ -176,6 +173,22 @@ Currently, the outermost formatting instruction wins, so for example underlined text inside a region of bold text is displayed as simply bold. There may be some better approach possible. +=head1 COMPATIBILITY + +Pod::Text::Overstrike 1.01 (based on L) was the first version of +this module included with Perl, in Perl 5.6.1. + +The current API based on L was added in Pod::Text::Overstrike +2.00, included in Perl 5.9.3. + +Several problems with wrapping and line length were fixed as recently as +Pod::Text::Overstrike 2.04, included in Perl 5.11.5. + +This module inherits its API and most behavior from Pod::Text, so the details +in L also apply. Pod::Text and Pod::Text::Overstrike +have had the same module version since 4.00, included in Perl 5.23.7. (They +unfortunately diverge in confusing ways prior to that.) + =head1 AUTHOR Originally written by Joe Smith , using the framework @@ -185,7 +198,7 @@ created by Russ Allbery . Subsequently updated by Russ Allbery. Copyright 2000 by Joe Smith -Copyright 2001, 2004, 2008, 2014, 2018-2019 by Russ Allbery +Copyright 2001, 2004, 2008, 2014, 2018-2019, 2022 by Russ Allbery This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm index be218f0bf04..d4b74874d87 100644 --- a/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm +++ b/gnu/usr.bin/perl/cpan/podlators/lib/Pod/Text/Termcap.pm @@ -12,7 +12,7 @@ package Pod::Text::Termcap; -use 5.008; +use 5.010; use strict; use warnings; @@ -20,11 +20,8 @@ use Pod::Text (); use POSIX (); use Term::Cap; -use vars qw(@ISA $VERSION); - -@ISA = qw(Pod::Text); - -$VERSION = '4.14'; +our @ISA = qw(Pod::Text); +our $VERSION = '5.01'; ############################################################################## # Overrides @@ -204,13 +201,13 @@ sub wrap { 1; __END__ +=for stopwords +ECMA-48 VT100 Allbery Solaris TERMPATH unformatted + =head1 NAME Pod::Text::Termcap - Convert POD data to ASCII text with format escapes -=for stopwords -ECMA-48 VT100 Allbery Solaris TERMPATH - =head1 SYNOPSIS use Pod::Text::Termcap; @@ -235,14 +232,37 @@ and how to override that behavior if necessary. If unable to find control strings for bold and underscore formatting, that formatting is skipped, resulting in the same output as Pod::Text. +=head1 COMPATIBILITY + +Pod::Text::Termcap 0.04 (based on L) was the first version of +this module included with Perl, in Perl 5.6.0. + +The current API based on L was added in Pod::Text::Termcap 2.00. +Pod::Text::Termcap 2.01 was included in Perl 5.9.3, the first version of Perl +to incorporate those changes. + +Several problems with wrapping and line length were fixed as recently as +Pod::Text::Termcap 4.11, included in Perl 5.29.1. + +Pod::Text::Termcap 4.13 stopped setting the TERMPATH environment variable +during module load. It also stopped falling back on VT100 escape sequences if +Term::Cap was not able to find usable escape sequences, instead producing +unformatted output for better results on dumb terminals. The next version to +be incorporated into Perl, 4.14, was included in Perl 5.31.8. + +This module inherits its API and most behavior from Pod::Text, so the details +in L also apply. Pod::Text and Pod::Text::Termcap +have had the same module version since 4.00, included in Perl 5.23.7. (They +unfortunately diverge in confusing ways prior to that.) + =head1 AUTHOR Russ Allbery =head1 COPYRIGHT AND LICENSE -Copyright 1999, 2001-2002, 2004, 2006, 2008-2009, 2014-2015, 2018-2019 Russ -Allbery +Copyright 1999, 2001-2002, 2004, 2006, 2008-2009, 2014-2015, 2018-2019, 2022 +Russ Allbery This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. diff --git a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL index abaa1083b7b..ba3de2398fe 100644 --- a/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL +++ b/gnu/usr.bin/perl/cpan/podlators/scripts/pod2man.PL @@ -38,7 +38,7 @@ print "Extracting $file (with variable substitutions)\n"; print {$out} <<"PREAMBLE" or die "Cannot write to $file: $!\n"; $Config{startperl} eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' - if \$running_under_some_shell; + if 0; # ^ Run only under a shell PREAMBLE # In the following, Perl variables are not expanded during extraction. @@ -71,13 +71,12 @@ my $stdin; # Parse our options, trying to retain backward compatibility with pod2man but # allowing short forms as well. --lax is currently ignored. my %options; -$options{utf8} = 1; Getopt::Long::config ('bundling_override'); -GetOptions (\%options, 'center|c=s', 'date|d=s', 'errors=s', 'fixed=s', - 'fixedbold=s', 'fixeditalic=s', 'fixedbolditalic=s', 'help|h', - 'lax|l', 'lquote=s', 'name|n=s', 'nourls', 'official|o', - 'quotes|q=s', 'release|r=s', 'rquote=s', 'section|s=s', 'stderr', - 'verbose|v', 'utf8|u!') +GetOptions (\%options, 'center|c=s', 'date|d=s', 'encoding|e=s', 'errors=s', + 'fixed=s', 'fixedbold=s', 'fixeditalic=s', 'fixedbolditalic=s', + 'guesswork=s', 'help|h', 'lax|l', 'language=s', 'lquote=s', + 'name|n=s', 'nourls', 'official|o', 'quotes|q=s', 'release|r=s', + 'rquote=s', 'section|s=s', 'stderr', 'verbose|v', 'utf8|u') or exit 1; pod2usage (0) if $options{help}; @@ -127,9 +126,9 @@ exit $status; __END__ =for stopwords -en em --stderr stderr --no-utf8 UTF-8 overdo markup MT-LEVEL Allbery Solaris URL +en em --stderr stderr --utf8 UTF-8 overdo markup MT-LEVEL Allbery Solaris URL troff troff-specific formatters uppercased Christiansen --nourls UTC prepend -lquote rquote +lquote rquote unrepresentable mandoc manref EBCDIC =head1 NAME @@ -137,118 +136,221 @@ pod2man - Convert POD data to formatted *roff input =head1 SYNOPSIS -pod2man [B<--center>=I] [B<--date>=I] [B<--errors>=I module supplies classes which allow a Perl program to delve into its own innards. It is the module used to implement the "backends" of the Perl compiler. Usage of the compiler does not -require knowledge of this module: see the F module for the +require knowledge of this module: see the L module for the user-visible part. The C module is of use to those who want to write new compiler backends. This documentation assumes that the reader knows a fair amount about perl's internals including such @@ -593,6 +600,26 @@ C (corresponding to the C function C). =item FLAGS +=item IsBOOL + +Returns true if the SV is a boolean (true or false). +You can then use C to check if the value is true or false. + + my $something = ( 1 == 1 ) # boolean true + || ( 1 == 0 ) # boolean false + || 42 # IV true + || 0; # IV false + my $sv = B::svref_2object(\$something); + + say q[Not a boolean value] + if ! $sv->IsBOOL; + + say q[This is a boolean with value: true] + if $sv->IsBOOL && $sv->TRUE_nomg; + + say q[This is a boolean with value: false] + if $sv->IsBOOL && ! $sv->TRUE_nomg; + =item object_2svref Returns a reference to the regular scalar corresponding to this @@ -601,6 +628,24 @@ to the svref_2object() subroutine. This scalar and other data it points at should be considered read-only: modifying them is neither safe nor guaranteed to have a sensible effect. +=item TRUE + +Returns a boolean indicating hether Perl would evaluate the SV as true or +false. + +B this call performs 'get' magic. If you only want to check the +nature of this SV use C helper. + +This is an alias for C. + +=item TRUE_nomg + +Check if the value is true (do not perform 'get' magic). +Returns a boolean indicating whether Perl would evaluate the SV as true or +false. + +This is an alias for C. + =back =head2 B::IV Methods @@ -1313,6 +1358,8 @@ pointers and B::PADNAME objects otherwise. =item REFCNT +=item GEN + =item FLAGS For backward-compatibility, if the PADNAMEt_OUTER flag is set, the FLAGS @@ -1349,6 +1396,10 @@ Only meaningful if PADNAMEt_OUTER is set. Only meaningful if PADNAMEt_OUTER is set. +=item IsUndef + +Returns a boolean value to check if the padname is PL_padname_undef. + =back =head2 $B::overlay diff --git a/gnu/usr.bin/perl/ext/B/B.xs b/gnu/usr.bin/perl/ext/B/B.xs index 7cdd0f9c6a9..49b35cbf2fa 100644 --- a/gnu/usr.bin/perl/ext/B/B.xs +++ b/gnu/usr.bin/perl/ext/B/B.xs @@ -40,6 +40,7 @@ static const char* const svclassnames[] = { "B::CV", "B::FM", "B::IO", + "B::OBJ", }; @@ -188,7 +189,7 @@ make_temp_object(pTHX_ SV *temp) static SV * make_warnings_object(pTHX_ const COP *const cop) { - const STRLEN *const warnings = cop->cop_warnings; + const char *const warnings = cop->cop_warnings; const char *type = 0; dMY_CXT; IV iv = sizeof(specialsv_list)/sizeof(SV*); @@ -210,7 +211,7 @@ make_warnings_object(pTHX_ const COP *const cop) } else { /* B assumes that warnings are a regular SV. Seems easier to keep it happy by making them into a regular SV. */ - return make_temp_object(aTHX_ newSVpvn((char *)(warnings + 1), *warnings)); + return make_temp_object(aTHX_ newSVpvn(warnings, RCPV_LEN(warnings))); } } @@ -547,7 +548,7 @@ static const struct OP_methods { #ifdef USE_ITHREADS { STR_WITH_LEN("pmoffset"),IVp, STRUCT_OFFSET(struct pmop, op_pmoffset),},/*20*/ { STR_WITH_LEN("filegv"), op_offset_special, 0, },/*21*/ - { STR_WITH_LEN("file"), char_pp, STRUCT_OFFSET(struct cop, cop_file), },/*22*/ + { STR_WITH_LEN("file"), char_pp, STRUCT_OFFSET(struct cop, cop_file), }, /*22*/ { STR_WITH_LEN("stash"), op_offset_special, 0, },/*23*/ { STR_WITH_LEN("stashpv"), op_offset_special, 0, },/*24*/ { STR_WITH_LEN("stashoff"),PADOFFSETp,STRUCT_OFFSET(struct cop,cop_stashoff),},/*25*/ @@ -703,8 +704,8 @@ walkoptree_debug(...) CODE: dMY_CXT; RETVAL = walkoptree_debug; - if (items > 0 && SvTRUE(ST(1))) - walkoptree_debug = 1; + if (items > 0) + walkoptree_debug = SvTRUE(ST(0)); OUTPUT: RETVAL @@ -902,11 +903,9 @@ next(o) ret = make_sv_object(aTHX_ (SV *)CopFILEGV((COP*)o)); break; #endif -#ifndef USE_ITHREADS case 22: /* B::COP::file */ ret = sv_2mortal(newSVpv(CopFILE((COP*)o), 0)); break; -#endif #ifdef USE_ITHREADS case 23: /* B::COP::stash */ ret = make_sv_object(aTHX_ (SV *)CopSTASH((COP*)o)); @@ -1072,13 +1071,13 @@ next(o) */ ret = make_op_object(aTHX_ o->op_type == OP_METHOD - ? cMETHOPx(o)->op_u.op_first : NULL); + ? cMETHOPo->op_u.op_first : NULL); break; case 54: /* B::METHOP::meth_sv */ /* see comment above about METHOP */ ret = make_sv_object(aTHX_ o->op_type == OP_METHOD - ? NULL : cMETHOPx(o)->op_u.op_meth_sv); + ? NULL : cMETHOPo->op_u.op_meth_sv); break; case 55: /* B::PMOP::pmregexp */ ret = make_sv_object(aTHX_ (SV *)PM_GETRE(cPMOPo)); @@ -1088,13 +1087,13 @@ next(o) ret = sv_2mortal(newSVuv( (o->op_type == OP_METHOD_REDIR || o->op_type == OP_METHOD_REDIR_SUPER) ? - cMETHOPx(o)->op_rclass_targ : 0 + cMETHOPo->op_rclass_targ : 0 )); #else ret = make_sv_object(aTHX_ (o->op_type == OP_METHOD_REDIR || o->op_type == OP_METHOD_REDIR_SUPER) ? - cMETHOPx(o)->op_rclass_sv : NULL + cMETHOPo->op_rclass_sv : NULL ); #endif break; @@ -1398,12 +1397,12 @@ aux_list(o, cv) -MODULE = B PACKAGE = B::SV +MODULE = B PACKAGE = B::SV PREFIX = Sv #define MAGICAL_FLAG_BITS (SVs_GMG|SVs_SMG|SVs_RMG) U32 -REFCNT(sv) +SvREFCNT(sv) B::SV sv ALIAS: FLAGS = 0xFFFFFFFF @@ -1417,11 +1416,23 @@ REFCNT(sv) RETVAL void -object_2svref(sv) +Svobject_2svref(sv) B::SV sv PPCODE: ST(0) = sv_2mortal(newRV(sv)); XSRETURN(1); + +bool +SvIsBOOL(sv) + B::SV sv + +bool +SvTRUE(sv) + B::SV sv + +bool +SvTRUE_nomg(sv) + B::SV sv MODULE = B PACKAGE = B::IV PREFIX = Sv @@ -2252,6 +2263,8 @@ MODULE = B PACKAGE = B::PADNAME PREFIX = Padname sv_U32p | STRUCT_OFFSET(struct padname, xpadn_low) #define PN_cop_seq_range_high_ix \ sv_U32p | STRUCT_OFFSET(struct padname, xpadn_high) +#define PN_xpadn_gen_ix \ + sv_I32p | STRUCT_OFFSET(struct padname, xpadn_gen) #define PNL_refcnt_ix \ sv_U32p | STRUCT_OFFSET(struct padnamelist, xpadnl_refcnt) #define PL_id_ix \ @@ -2259,7 +2272,6 @@ MODULE = B PACKAGE = B::PADNAME PREFIX = Padname #define PL_outid_ix \ sv_U32p | STRUCT_OFFSET(struct padlist, xpadl_outid) - void PadnameTYPE(pn) B::PADNAME pn @@ -2270,6 +2282,7 @@ PadnameTYPE(pn) B::PADNAME::REFCNT = PN_refcnt_ix B::PADNAME::COP_SEQ_RANGE_LOW = PN_cop_seq_range_low_ix B::PADNAME::COP_SEQ_RANGE_HIGH = PN_cop_seq_range_high_ix + B::PADNAME::GEN = PN_xpadn_gen_ix B::PADNAMELIST::REFCNT = PNL_refcnt_ix B::PADLIST::id = PL_id_ix B::PADLIST::outid = PL_outid_ix @@ -2305,6 +2318,14 @@ PadnamePV(pn) SvUTF8_on(TARG); XPUSHTARG; +bool +PadnameIsUndef(padn) + B::PADNAME padn + CODE: + RETVAL = padn == &PL_padname_undef; + OUTPUT: + RETVAL + BOOT: { /* Uses less memory than an ALIAS. */ @@ -2329,7 +2350,7 @@ PadnameFLAGS(pn) RETVAL = PadnameFLAGS(pn); /* backward-compatibility hack, which should be removed if the flags field becomes large enough to hold SVf_FAKE (and - PADNAMEt_OUTER should be renumbered to match SVf_FAKE) */ + PADNAMEf_OUTER should be renumbered to match SVf_FAKE) */ STATIC_ASSERT_STMT(SVf_FAKE >= 1<<(sizeof(PadnameFLAGS((B__PADNAME)NULL)) * 8)); if (PadnameOUTER(pn)) RETVAL |= SVf_FAKE; diff --git a/gnu/usr.bin/perl/ext/B/B/Concise.pm b/gnu/usr.bin/perl/ext/B/B/Concise.pm index a7419d75e04..73d4045a63c 100644 --- a/gnu/usr.bin/perl/ext/B/B/Concise.pm +++ b/gnu/usr.bin/perl/ext/B/B/Concise.pm @@ -14,7 +14,7 @@ use warnings; # uses #3 and #4, since warnings uses Carp use Exporter 'import'; # use #5 -our $VERSION = "1.006"; +our $VERSION = "1.007"; our @EXPORT_OK = qw( set_style set_style_standard add_callback concise_subref concise_cv concise_main add_style walk_output compile reset_sequence ); @@ -1489,6 +1489,11 @@ They're opcode specific, and occur less often than the public ones, so they're represented by short mnemonics instead of single-chars; see B::Op_private and F for more details. +Note that a number after a '/' often indicates the number of arguments. +In the I example above, the OP takes 2 arguments. These values +are sometimes used at runtime: in particular, the MAXARG macro makes use +of them. + =head1 FORMATTING SPECIFICATIONS For each line-style ('concise', 'terse', 'linenoise', etc.) there are diff --git a/gnu/usr.bin/perl/ext/B/Makefile.PL b/gnu/usr.bin/perl/ext/B/Makefile.PL index 1b30ffd08f7..0ff4f4e2e66 100644 --- a/gnu/usr.bin/perl/ext/B/Makefile.PL +++ b/gnu/usr.bin/perl/ext/B/Makefile.PL @@ -30,7 +30,7 @@ foreach my $tuple (['cop.h'], ['op.h'], ['opcode.h', 'OPp'], ['op_reg_common.h','(?:(?:RXf_)?PMf_)'], - ['pad.h','PADNAMEt_'], + ['pad.h','PADNAMEf_'], ['regexp.h','RXf_'], ['sv.h', 'SV(?:[fps]|pad)_'], ) { diff --git a/gnu/usr.bin/perl/ext/B/t/b.t b/gnu/usr.bin/perl/ext/B/t/b.t index aa67fd37558..bdf831881d3 100644 --- a/gnu/usr.bin/perl/ext/B/t/b.t +++ b/gnu/usr.bin/perl/ext/B/t/b.t @@ -306,7 +306,7 @@ is(B::opnumber("pp_null"), 0, "Testing opnumber with opname (pp_null)"); is(B::class(bless {}, "Wibble::Bibble"), "Bibble", "Testing B::class()"); is(B::cast_I32(3.14), 3, "Testing B::cast_I32()"); -is(B::opnumber("chop"), 38, "Testing opnumber with opname (chop)"); +is(B::opnumber("chop"), 39, "Testing opnumber with opname (chop)"); { no warnings 'once'; diff --git a/gnu/usr.bin/perl/ext/B/t/optree_concise.t b/gnu/usr.bin/perl/ext/B/t/optree_concise.t index cf93bd10565..b3227c62bc6 100755 --- a/gnu/usr.bin/perl/ext/B/t/optree_concise.t +++ b/gnu/usr.bin/perl/ext/B/t/optree_concise.t @@ -178,13 +178,13 @@ checkOptree ( name => "terse basic", UNOP (0x82b0918) leavesub [1] LISTOP (0x82b08d8) lineseq COP (0x82b0880) nextstate - UNOP (0x82b0860) null [14] + UNOP (0x82b0860) null [15] PADOP (0x82b0840) gvsv GV (0x82a818c) *a EOT_EOT # UNOP (0x8282310) leavesub [1] # LISTOP (0x82822f0) lineseq # COP (0x82822b8) nextstate -# UNOP (0x812fc20) null [14] +# UNOP (0x812fc20) null [15] # SVOP (0x812fc00) gvsv GV (0x814692c) *a EONT_EONT diff --git a/gnu/usr.bin/perl/ext/B/t/optree_samples.t b/gnu/usr.bin/perl/ext/B/t/optree_samples.t index 5e489d698d7..329a85b34d8 100755 --- a/gnu/usr.bin/perl/ext/B/t/optree_samples.t +++ b/gnu/usr.bin/perl/ext/B/t/optree_samples.t @@ -67,49 +67,49 @@ checkOptree ( name => '-basic (see above, with my $a = shift)', }, strip_open_hints => 1, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); -# b <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->b +# a <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->a # 1 <;> nextstate(main 666 optree_samples.t:70) v:>,<,% ->2 -# 4 <2> sassign vKS/2 ->5 +# 3 <1> padsv_store[$a:666,670] vKS/LVINTRO ->4 # 2 <0> shift s* ->3 -# 3 <0> padsv[$a:666,670] sRM*/LVINTRO ->4 -# 5 <;> nextstate(main 670 optree_samples.t:71) v:>,<,% ->6 +# - <0> ex-padsv sRM*/LVINTRO ->3 +# 4 <;> nextstate(main 670 optree_samples.t:71) v:>,<,% ->5 # - <1> null K/1 ->- -# 7 <|> cond_expr(other->8) K/1 ->c -# 6 <0> padsv[$a:666,670] s ->7 +# 6 <|> cond_expr(other->7) K/1 ->b +# 5 <0> padsv[$a:666,670] s ->6 # - <@> scope K ->- -# - <;> ex-nextstate(main 1603 optree_samples.t:70) v:>,<,% ->8 -# a <@> print sK ->b -# 8 <0> pushmark s ->9 -# 9 <$> const[PV "foo"] s ->a -# h <@> leave KP ->b -# c <0> enter ->d -# d <;> nextstate(main 668 optree_samples.t:72) v:>,<,% ->e -# g <@> print sK ->h -# e <0> pushmark s ->f -# f <$> const[PV "bar"] s ->g +# - <;> ex-nextstate(main 1510 optree_samples.t:66) v:>,<,% ->7 +# 9 <@> print sK ->a +# 7 <0> pushmark s ->8 +# 8 <$> const[PV "foo"] s ->9 +# g <@> leave KP ->a +# b <0> enter ->c +# c <;> nextstate(main 1510 optree_samples.t:66) v:>,<,% ->d +# f <@> print sK ->g +# d <0> pushmark s ->e +# e <$> const[PV "bar"] s ->f EOT_EOT -# b <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->b -# 1 <;> nextstate(main 666 optree_samples.t:72) v:>,<,% ->2 -# 4 <2> sassign vKS/2 ->5 +# a <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->a +# 1 <;> nextstate(main 666 optree_samples.t:70) v:>,<,% ->2 +# 3 <1> padsv_store[$a:666,670] vKS/LVINTRO ->4 # 2 <0> shift s* ->3 -# 3 <0> padsv[$a:666,670] sRM*/LVINTRO ->4 -# 5 <;> nextstate(main 670 optree_samples.t:73) v:>,<,% ->6 +# - <0> ex-padsv sRM*/LVINTRO ->3 +# 4 <;> nextstate(main 670 optree_samples.t:71) v:>,<,% ->5 # - <1> null K/1 ->- -# 7 <|> cond_expr(other->8) K/1 ->c -# 6 <0> padsv[$a:666,670] s ->7 +# 6 <|> cond_expr(other->7) K/1 ->b +# 5 <0> padsv[$a:666,670] s ->6 # - <@> scope K ->- -# - <;> ex-nextstate(main 1603 optree_samples.t:70) v:>,<,% ->8 -# a <@> print sK ->b -# 8 <0> pushmark s ->9 -# 9 <$> const(PV "foo") s ->a -# h <@> leave KP ->b -# c <0> enter ->d -# d <;> nextstate(main 668 optree_samples.t:74) v:>,<,% ->e -# g <@> print sK ->h -# e <0> pushmark s ->f -# f <$> const(PV "bar") s ->g +# - <;> ex-nextstate(main 1510 optree_samples.t:70) v:>,<,% ->7 +# 9 <@> print sK ->a +# 7 <0> pushmark s ->8 +# 8 <$> const(PV "foo") s ->9 +# g <@> leave KP ->a +# b <0> enter ->c +# c <;> nextstate(main 668 optree_samples.t:72) v:>,<,% ->d +# f <@> print sK ->g +# d <0> pushmark s ->e +# e <$> const(PV "bar") s ->f EONT_EONT checkOptree ( name => '-exec sub {if shift print then,else}', @@ -160,41 +160,39 @@ checkOptree ( name => '-exec (see above, with my $a = shift)', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <;> nextstate(main 675 optree_samples.t:165) v:>,<,% # 2 <0> shift s* -# 3 <0> padsv[$a:675,679] sRM*/LVINTRO -# 4 <2> sassign vKS/2 -# 5 <;> nextstate(main 679 optree_samples.t:166) v:>,<,% -# 6 <0> padsv[$a:675,679] s -# 7 <|> cond_expr(other->8) K/1 -# 8 <0> pushmark s -# 9 <$> const[PV "foo"] s -# a <@> print sK -# goto b -# c <0> enter -# d <;> nextstate(main 677 optree_samples.t:167) v:>,<,% -# e <0> pushmark s -# f <$> const[PV "bar"] s -# g <@> print sK -# h <@> leave KP -# b <1> leavesub[1 ref] K/REFC,1 +# 3 <1> padsv_store[$a:1522,1529] vKS/LVINTRO +# 4 <;> nextstate(main 679 optree_samples.t:166) v:>,<,% +# 5 <0> padsv[$a:675,679] s +# 6 <|> cond_expr(other->7) K/1 +# 7 <0> pushmark s +# 8 <$> const[PV "foo"] s +# 9 <@> print sK +# goto a +# b <0> enter +# c <;> nextstate(main 677 optree_samples.t:167) v:>,<,% +# d <0> pushmark s +# e <$> const[PV "bar"] s +# f <@> print sK +# g <@> leave KP +# a <1> leavesub[1 ref] K/REFC,1 EOT_EOT # 1 <;> nextstate(main 675 optree_samples.t:171) v:>,<,% # 2 <0> shift s* -# 3 <0> padsv[$a:675,679] sRM*/LVINTRO -# 4 <2> sassign vKS/2 -# 5 <;> nextstate(main 679 optree_samples.t:172) v:>,<,% -# 6 <0> padsv[$a:675,679] s -# 7 <|> cond_expr(other->8) K/1 -# 8 <0> pushmark s -# 9 <$> const(PV "foo") s -# a <@> print sK -# goto b -# c <0> enter -# d <;> nextstate(main 677 optree_samples.t:173) v:>,<,% -# e <0> pushmark s -# f <$> const(PV "bar") s -# g <@> print sK -# h <@> leave KP -# b <1> leavesub[1 ref] K/REFC,1 +# 3 <1> padsv_store[$a:1522,1529] vKS/LVINTRO +# 4 <;> nextstate(main 679 optree_samples.t:172) v:>,<,% +# 5 <0> padsv[$a:675,679] s +# 6 <|> cond_expr(other->7) K/1 +# 7 <0> pushmark s +# 8 <$> const(PV "foo") s +# 9 <@> print sK +# goto a +# b <0> enter +# c <;> nextstate(main 677 optree_samples.t:173) v:>,<,% +# d <0> pushmark s +# e <$> const(PV "bar") s +# f <@> print sK +# g <@> leave KP +# a <1> leavesub[1 ref] K/REFC,1 EONT_EONT checkOptree ( name => '-exec sub { print (shift) ? "foo" : "bar" }', diff --git a/gnu/usr.bin/perl/ext/B/t/optree_specials.t b/gnu/usr.bin/perl/ext/B/t/optree_specials.t index a6dc206a4b6..6207ab6dada 100755 --- a/gnu/usr.bin/perl/ext/B/t/optree_specials.t +++ b/gnu/usr.bin/perl/ext/B/t/optree_specials.t @@ -53,7 +53,7 @@ checkOptree ( name => 'BEGIN', # - <;> ex-nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ ->4 # - <@> lineseq K ->- # 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ ->5 -# 9 <1> entersub[t1] KRS*/TARG,STRICT ->a +# 9 <1> entersub[t1] KRS/TARG,STRICT ->a # 5 <0> pushmark s ->6 # 6 <$> const[PV "strict"] sM ->7 # 7 <$> const[PV "refs"] sM ->8 @@ -67,7 +67,7 @@ checkOptree ( name => 'BEGIN', # - <;> ex-nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ ->e # - <@> lineseq K ->- # e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ ->f -# j <1> entersub[t1] KRS*/TARG ->k +# j <1> entersub[t1] KRS/TARG ->k # f <0> pushmark s ->g # g <$> const[PV "warnings"] sM ->h # h <$> const[PV "once"] sM ->i @@ -92,7 +92,7 @@ checkOptree ( name => 'BEGIN', # - <;> ex-nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ ->v # - <@> lineseq K ->- # v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ ->w -# 10 <1> entersub[t1] KRS*/TARG,STRICT ->11 +# 10 <1> entersub[t1] KRS/TARG,STRICT ->11 # w <0> pushmark s ->x # x <$> const[PV "strict"] sM ->y # y <$> const[PV "refs"] sM ->z @@ -106,7 +106,7 @@ checkOptree ( name => 'BEGIN', # - <;> ex-nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ ->15 # - <@> lineseq K ->- # 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ ->16 -# 1a <1> entersub[t1] KRS*/TARG,STRICT ->1b +# 1a <1> entersub[t1] KRS/TARG,STRICT ->1b # 16 <0> pushmark s ->17 # 17 <$> const[PV "strict"] sM ->18 # 18 <$> const[PV "refs"] sM ->19 @@ -120,7 +120,7 @@ checkOptree ( name => 'BEGIN', # - <;> ex-nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ ->1f # - <@> lineseq K ->- # 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ ->1g -# 1k <1> entersub[t1] KRS*/TARG,STRICT ->1l +# 1k <1> entersub[t1] KRS/TARG,STRICT ->1l # 1g <0> pushmark s ->1h # 1h <$> const[PV "strict"] sM ->1i # 1i <$> const[PV "refs"] sM ->1j @@ -134,7 +134,7 @@ checkOptree ( name => 'BEGIN', # - <;> ex-nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ ->1p # - <@> lineseq K ->- # 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ ->1q -# 1u <1> entersub[t1] KRS*/TARG,STRICT ->1v +# 1u <1> entersub[t1] KRS/TARG,STRICT ->1v # 1q <0> pushmark s ->1r # 1r <$> const[PV "strict"] sM ->1s # 1s <$> const[PV "refs"] sM ->1t @@ -148,7 +148,7 @@ checkOptree ( name => 'BEGIN', # - <;> ex-nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ ->1z # - <@> lineseq K ->- # 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ ->20 -# 24 <1> entersub[t1] KRS*/TARG,STRICT ->25 +# 24 <1> entersub[t1] KRS/TARG,STRICT ->25 # 20 <0> pushmark s ->21 # 21 <$> const[PV "warnings"] sM ->22 # 22 <$> const[PV "qw"] sM ->23 @@ -170,7 +170,7 @@ EOT_EOT # - <;> ex-nextstate(Exporter::Heavy -1410 Heavy.pm:4) v:*,&,{,x*,x&,x$,$ ->4 # - <@> lineseq K ->- # 4 <;> nextstate(Exporter::Heavy -1410 Heavy.pm:4) :*,&,{,x*,x&,x$,$ ->5 -# 9 <1> entersub[t1] KRS*/TARG,STRICT ->a +# 9 <1> entersub[t1] KRS/TARG,STRICT ->a # 5 <0> pushmark s ->6 # 6 <$> const(PV "strict") sM ->7 # 7 <$> const(PV "refs") sM ->8 @@ -184,7 +184,7 @@ EOT_EOT # - <;> ex-nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ ->e # - <@> lineseq K ->- # e <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) :*,&,{,x*,x&,x$ ->f -# j <1> entersub[t1] KRS*/TARG ->k +# j <1> entersub[t1] KRS/TARG ->k # f <0> pushmark s ->g # g <$> const(PV "warnings") sM ->h # h <$> const(PV "once") sM ->i @@ -209,7 +209,7 @@ EOT_EOT # - <;> ex-nextstate(B::Concise -1134 Concise.pm:183) v:*,&,x*,x&,x$,$ ->v # - <@> lineseq K ->- # v <;> nextstate(B::Concise -1134 Concise.pm:183) :*,&,x*,x&,x$,$ ->w -# 10 <1> entersub[t1] KRS*/TARG,STRICT ->11 +# 10 <1> entersub[t1] KRS/TARG,STRICT ->11 # w <0> pushmark s ->x # x <$> const(PV "strict") sM ->y # y <$> const(PV "refs") sM ->z @@ -223,7 +223,7 @@ EOT_EOT # - <;> ex-nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ ->15 # - <@> lineseq K ->- # 15 <;> nextstate(B::Concise -1031 Concise.pm:305) :*,&,x*,x&,x$,$ ->16 -# 1a <1> entersub[t1] KRS*/TARG,STRICT ->1b +# 1a <1> entersub[t1] KRS/TARG,STRICT ->1b # 16 <0> pushmark s ->17 # 17 <$> const(PV "strict") sM ->18 # 18 <$> const(PV "refs") sM ->19 @@ -237,7 +237,7 @@ EOT_EOT # - <;> ex-nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ ->1f # - <@> lineseq K ->- # 1f <;> nextstate(B::Concise -984 Concise.pm:370) :*,&,{,x*,x&,x$,$ ->1g -# 1k <1> entersub[t1] KRS*/TARG,STRICT ->1l +# 1k <1> entersub[t1] KRS/TARG,STRICT ->1l # 1g <0> pushmark s ->1h # 1h <$> const(PV "strict") sM ->1i # 1i <$> const(PV "refs") sM ->1j @@ -251,7 +251,7 @@ EOT_EOT # - <;> ex-nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ ->1p # - <@> lineseq K ->- # 1p <;> nextstate(B::Concise -959 Concise.pm:390) :*,&,x*,x&,x$,$ ->1q -# 1u <1> entersub[t1] KRS*/TARG,STRICT ->1v +# 1u <1> entersub[t1] KRS/TARG,STRICT ->1v # 1q <0> pushmark s ->1r # 1r <$> const(PV "strict") sM ->1s # 1s <$> const(PV "refs") sM ->1t @@ -265,7 +265,7 @@ EOT_EOT # - <;> ex-nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ ->1z # - <@> lineseq K ->- # 1z <;> nextstate(B::Concise -945 Concise.pm:410) :*,&,{,x*,x&,x$,$ ->20 -# 24 <1> entersub[t1] KRS*/TARG,STRICT ->25 +# 24 <1> entersub[t1] KRS/TARG,STRICT ->25 # 20 <0> pushmark s ->21 # 21 <$> const(PV "warnings") sM ->22 # 22 <$> const(PV "qw") sM ->23 @@ -382,7 +382,7 @@ checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec', # 6 <$> const[PV "strict"] sM # 7 <$> const[PV "refs"] sM # 8 <.> method_named[PV "unimport"] -# 9 <1> entersub[t1] KRS*/TARG,STRICT +# 9 <1> entersub[t1] KRS/TARG,STRICT # a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: # b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ @@ -393,7 +393,7 @@ checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec', # g <$> const[PV "warnings"] sM # h <$> const[PV "once"] sM # i <.> method_named[PV "unimport"] -# j <1> entersub[t1] KRS*/TARG +# j <1> entersub[t1] KRS/TARG # k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: # l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ @@ -412,7 +412,7 @@ checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec', # x <$> const[PV "strict"] sM # y <$> const[PV "refs"] sM # z <.> method_named[PV "unimport"] -# 10 <1> entersub[t1] KRS*/TARG,STRICT +# 10 <1> entersub[t1] KRS/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: # 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ @@ -423,7 +423,7 @@ checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec', # 17 <$> const[PV "strict"] sM # 18 <$> const[PV "refs"] sM # 19 <.> method_named[PV "unimport"] -# 1a <1> entersub[t1] KRS*/TARG,STRICT +# 1a <1> entersub[t1] KRS/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: # 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ @@ -434,7 +434,7 @@ checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec', # 1h <$> const[PV "strict"] sM # 1i <$> const[PV "refs"] sM # 1j <.> method_named[PV "unimport"] -# 1k <1> entersub[t1] KRS*/TARG,STRICT +# 1k <1> entersub[t1] KRS/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 # BEGIN 7: # 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ @@ -445,7 +445,7 @@ checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec', # 1r <$> const[PV "strict"] sM # 1s <$> const[PV "refs"] sM # 1t <.> method_named[PV "unimport"] -# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1u <1> entersub[t1] KRS/TARG,STRICT # 1v <1> leavesub[1 ref] K/REFC,1 # BEGIN 8: # 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ @@ -456,7 +456,7 @@ checkOptree ( name => 'all of BEGIN END INIT CHECK UNITCHECK -exec', # 21 <$> const[PV "warnings"] sM # 22 <$> const[PV "qw"] sM # 23 <.> method_named[PV "unimport"] -# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 24 <1> entersub[t1] KRS/TARG,STRICT # 25 <1> leavesub[1 ref] K/REFC,1 # BEGIN 9: # 26 <;> nextstate(main 3 -e:1) v:{ @@ -493,7 +493,7 @@ EOT_EOT # 6 <$> const(PV "strict") sM # 7 <$> const(PV "refs") sM # 8 <.> method_named(PV "unimport") -# 9 <1> entersub[t1] KRS*/TARG,STRICT +# 9 <1> entersub[t1] KRS/TARG,STRICT # a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: # b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ @@ -504,7 +504,7 @@ EOT_EOT # g <$> const(PV "warnings") sM # h <$> const(PV "once") sM # i <.> method_named(PV "unimport") -# j <1> entersub[t1] KRS*/TARG +# j <1> entersub[t1] KRS/TARG # k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: # l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ @@ -523,7 +523,7 @@ EOT_EOT # x <$> const(PV "strict") sM # y <$> const(PV "refs") sM # z <.> method_named(PV "unimport") -# 10 <1> entersub[t1] KRS*/TARG,STRICT +# 10 <1> entersub[t1] KRS/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: # 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ @@ -534,7 +534,7 @@ EOT_EOT # 17 <$> const(PV "strict") sM # 18 <$> const(PV "refs") sM # 19 <.> method_named(PV "unimport") -# 1a <1> entersub[t1] KRS*/TARG,STRICT +# 1a <1> entersub[t1] KRS/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: # 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ @@ -545,7 +545,7 @@ EOT_EOT # 1h <$> const(PV "strict") sM # 1i <$> const(PV "refs") sM # 1j <.> method_named(PV "unimport") -# 1k <1> entersub[t1] KRS*/TARG,STRICT +# 1k <1> entersub[t1] KRS/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 # BEGIN 7: # 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ @@ -556,7 +556,7 @@ EOT_EOT # 1r <$> const(PV "strict") sM # 1s <$> const(PV "refs") sM # 1t <.> method_named(PV "unimport") -# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1u <1> entersub[t1] KRS/TARG,STRICT # 1v <1> leavesub[1 ref] K/REFC,1 # BEGIN 8: # 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ @@ -567,7 +567,7 @@ EOT_EOT # 21 <$> const(PV "warnings") sM # 22 <$> const(PV "qw") sM # 23 <.> method_named(PV "unimport") -# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 24 <1> entersub[t1] KRS/TARG,STRICT # 25 <1> leavesub[1 ref] K/REFC,1 # BEGIN 9: # 26 <;> nextstate(main 3 -e:1) v:{ @@ -611,7 +611,7 @@ checkOptree ( name => 'regression test for patch 25352', # 6 <$> const[PV "strict"] sM # 7 <$> const[PV "refs"] sM # 8 <.> method_named[PV "unimport"] -# 9 <1> entersub[t1] KRS*/TARG,STRICT +# 9 <1> entersub[t1] KRS/TARG,STRICT # a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: # b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ @@ -622,7 +622,7 @@ checkOptree ( name => 'regression test for patch 25352', # g <$> const[PV "warnings"] sM # h <$> const[PV "once"] sM # i <.> method_named[PV "unimport"] -# j <1> entersub[t1] KRS*/TARG +# j <1> entersub[t1] KRS/TARG # k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: # l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ @@ -641,7 +641,7 @@ checkOptree ( name => 'regression test for patch 25352', # x <$> const[PV "strict"] sM # y <$> const[PV "refs"] sM # z <.> method_named[PV "unimport"] -# 10 <1> entersub[t1] KRS*/TARG,STRICT +# 10 <1> entersub[t1] KRS/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: # 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ @@ -652,7 +652,7 @@ checkOptree ( name => 'regression test for patch 25352', # 17 <$> const[PV "strict"] sM # 18 <$> const[PV "refs"] sM # 19 <.> method_named[PV "unimport"] -# 1a <1> entersub[t1] KRS*/TARG,STRICT +# 1a <1> entersub[t1] KRS/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: # 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ @@ -663,7 +663,7 @@ checkOptree ( name => 'regression test for patch 25352', # 1h <$> const[PV "strict"] sM # 1i <$> const[PV "refs"] sM # 1j <.> method_named[PV "unimport"] -# 1k <1> entersub[t1] KRS*/TARG,STRICT +# 1k <1> entersub[t1] KRS/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 # BEGIN 7: # 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ @@ -674,7 +674,7 @@ checkOptree ( name => 'regression test for patch 25352', # 1r <$> const[PV "strict"] sM # 1s <$> const[PV "refs"] sM # 1t <.> method_named[PV "unimport"] -# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1u <1> entersub[t1] KRS/TARG,STRICT # 1v <1> leavesub[1 ref] K/REFC,1 # BEGIN 8: # 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ @@ -685,7 +685,7 @@ checkOptree ( name => 'regression test for patch 25352', # 21 <$> const[PV "warnings"] sM # 22 <$> const[PV "qw"] sM # 23 <.> method_named[PV "unimport"] -# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 24 <1> entersub[t1] KRS/TARG,STRICT # 25 <1> leavesub[1 ref] K/REFC,1 EOT_EOT # BEGIN 1: @@ -697,7 +697,7 @@ EOT_EOT # 6 <$> const(PV "strict") sM # 7 <$> const(PV "refs") sM # 8 <.> method_named(PV "unimport") -# 9 <1> entersub[t1] KRS*/TARG,STRICT +# 9 <1> entersub[t1] KRS/TARG,STRICT # a <1> leavesub[1 ref] K/REFC,1 # BEGIN 2: # b <;> nextstate(Exporter::Heavy -1251 Heavy.pm:202) v:*,&,{,x*,x&,x$ @@ -708,7 +708,7 @@ EOT_EOT # g <$> const(PV "warnings") sM # h <$> const(PV "once") sM # i <.> method_named(PV "unimport") -# j <1> entersub[t1] KRS*/TARG +# j <1> entersub[t1] KRS/TARG # k <1> leavesub[1 ref] K/REFC,1 # BEGIN 3: # l <;> nextstate(B::Concise -1175 Concise.pm:117) v:*,&,{,x*,x&,x$,$ @@ -727,7 +727,7 @@ EOT_EOT # x <$> const(PV "strict") sM # y <$> const(PV "refs") sM # z <.> method_named(PV "unimport") -# 10 <1> entersub[t1] KRS*/TARG,STRICT +# 10 <1> entersub[t1] KRS/TARG,STRICT # 11 <1> leavesub[1 ref] K/REFC,1 # BEGIN 5: # 12 <;> nextstate(B::Concise -1031 Concise.pm:305) v:*,&,x*,x&,x$,$ @@ -738,7 +738,7 @@ EOT_EOT # 17 <$> const(PV "strict") sM # 18 <$> const(PV "refs") sM # 19 <.> method_named(PV "unimport") -# 1a <1> entersub[t1] KRS*/TARG,STRICT +# 1a <1> entersub[t1] KRS/TARG,STRICT # 1b <1> leavesub[1 ref] K/REFC,1 # BEGIN 6: # 1c <;> nextstate(B::Concise -984 Concise.pm:370) v:*,&,{,x*,x&,x$,$ @@ -749,7 +749,7 @@ EOT_EOT # 1h <$> const(PV "strict") sM # 1i <$> const(PV "refs") sM # 1j <.> method_named(PV "unimport") -# 1k <1> entersub[t1] KRS*/TARG,STRICT +# 1k <1> entersub[t1] KRS/TARG,STRICT # 1l <1> leavesub[1 ref] K/REFC,1 # BEGIN 7: # 1m <;> nextstate(B::Concise -959 Concise.pm:390) v:*,&,x*,x&,x$,$ @@ -760,7 +760,7 @@ EOT_EOT # 1r <$> const(PV "strict") sM # 1s <$> const(PV "refs") sM # 1t <.> method_named(PV "unimport") -# 1u <1> entersub[t1] KRS*/TARG,STRICT +# 1u <1> entersub[t1] KRS/TARG,STRICT # 1v <1> leavesub[1 ref] K/REFC,1 # BEGIN 8: # 1w <;> nextstate(B::Concise -945 Concise.pm:410) v:*,&,{,x*,x&,x$,$ @@ -771,6 +771,6 @@ EOT_EOT # 21 <$> const(PV "warnings") sM # 22 <$> const(PV "qw") sM # 23 <.> method_named(PV "unimport") -# 24 <1> entersub[t1] KRS*/TARG,STRICT +# 24 <1> entersub[t1] KRS/TARG,STRICT # 25 <1> leavesub[1 ref] K/REFC,1 EONT_EONT diff --git a/gnu/usr.bin/perl/ext/B/t/optree_varinit.t b/gnu/usr.bin/perl/ext/B/t/optree_varinit.t index d89afc24f33..393160205e4 100755 --- a/gnu/usr.bin/perl/ext/B/t/optree_varinit.t +++ b/gnu/usr.bin/perl/ext/B/t/optree_varinit.t @@ -129,19 +129,19 @@ checkOptree ( name => 'sub {my $a=undef}', bcopts => '-basic', strip_open_hints => 1, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); -5 <1> leavesub[1 ref] K/REFC,1 ->(end) -- <@> lineseq KP ->5 -1 <;> nextstate(main 641 optree_varinit.t:130) v:>,<,% ->2 -4 <2> sassign sKS/2 ->5 -2 <0> undef s ->3 -3 <0> padsv[$a:641,642] sRM*/LVINTRO ->4 +3 <1> leavesub[1 ref] K/REFC,1 ->(end) +- <@> lineseq KP ->3 +1 <;> nextstate(main 1517 optree_varinit.t:128) v ->2 +- <1> ex-sassign sKS/2 ->- +2 <0> undef[$a:1517,1518] s/LVINTRO,KEEP_PV,TARGMY ->3 +- <0> ex-padsv sRM*/LVINTRO ->- EOT_EOT -# 5 <1> leavesub[1 ref] K/REFC,1 ->(end) -# - <@> lineseq KP ->5 -# 1 <;> nextstate(main 641 optree_varinit.t:130) v:>,<,% ->2 -# 4 <2> sassign sKS/2 ->5 -# 2 <0> undef s ->3 -# 3 <0> padsv[$a:641,642] sRM*/LVINTRO ->4 +# 3 <1> leavesub[1 ref] K/REFC,1 ->(end) +# - <@> lineseq KP ->3 +# 1 <;> nextstate(main 1517 optree_varinit.t:128) v ->2 +# - <1> ex-sassign sKS/2 ->- +# 2 <0> undef[$a:1517,1518] s/LVINTRO,KEEP_PV,TARGMY ->3 +# - <0> ex-padsv sRM*/LVINTRO ->- EONT_EONT checkOptree ( name => 'sub {our $a=undef}', @@ -152,7 +152,7 @@ checkOptree ( name => 'sub {our $a=undef}', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); 5 <1> leavesub[1 ref] K/REFC,1 ->(end) - <@> lineseq KP ->5 -1 <;> nextstate(main 26 optree.t:109) v:>,<,%,{ ->2 +1 <;> nextstate(main 1520 optree_varinit.t:148) v:{ ->2 4 <2> sassign sKS/2 ->5 2 <0> undef s ->3 - <1> ex-rv2sv sKRM*/OURINTR,1 ->4 @@ -160,7 +160,7 @@ checkOptree ( name => 'sub {our $a=undef}', EOT_EOT # 5 <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->5 -# 1 <;> nextstate(main 446 optree_varinit.t:137) v:>,<,%,{ ->2 +# 1 <;> nextstate(main 1520 optree_varinit.t:148) v:{ ->2 # 4 <2> sassign sKS/2 ->5 # 2 <0> undef s ->3 # - <1> ex-rv2sv sKRM*/OURINTR,1 ->4 @@ -175,7 +175,7 @@ checkOptree ( name => 'sub {local $a=undef}', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); 5 <1> leavesub[1 ref] K/REFC,1 ->(end) - <@> lineseq KP ->5 -1 <;> nextstate(main 28 optree.t:122) v:>,<,%,{ ->2 +1 <;> nextstate(main 1523 optree_varinit.t:171) v:{ ->2 4 <2> sassign sKS/2 ->5 2 <0> undef s ->3 - <1> ex-rv2sv sKRM*/LVINTRO,1 ->4 @@ -183,7 +183,7 @@ checkOptree ( name => 'sub {local $a=undef}', EOT_EOT # 5 <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->5 -# 1 <;> nextstate(main 58 optree.t:141) v:>,<,%,{ ->2 +# 1 <;> nextstate(main 1523 optree_varinit.t:171) v:{ ->2 # 4 <2> sassign sKS/2 ->5 # 2 <0> undef s ->3 # - <1> ex-rv2sv sKRM*/LVINTRO,1 ->4 @@ -195,19 +195,19 @@ checkOptree ( name => 'my $a=undef', bcopts => '-basic', strip_open_hints => 1, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); -6 <@> leave[1 ref] vKP/REFC ->(end) +4 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter v ->2 -2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3 -5 <2> sassign vKS/2 ->6 -3 <0> undef s ->4 -4 <0> padsv[$a:1,2] sRM*/LVINTRO ->5 +2 <;> nextstate(main 1 -e:1) v:{ ->3 +- <1> ex-sassign vKS/2 ->4 +3 <0> undef[$a:1,2] s/LVINTRO,KEEP_PV,TARGMY ->4 +- <0> ex-padsv sRM*/LVINTRO ->- EOT_EOT -# 6 <@> leave[1 ref] vKP/REFC ->(end) +# 4 <@> leave[1 ref] vKP/REFC ->(end) # 1 <0> enter v ->2 -# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3 -# 5 <2> sassign vKS/2 ->6 -# 3 <0> undef s ->4 -# 4 <0> padsv[$a:1,2] sRM*/LVINTRO ->5 +# 2 <;> nextstate(main 1 -e:1) v:{ ->3 +# - <1> ex-sassign vKS/2 ->4 +# 3 <0> undef[$a:1,2] s/LVINTRO,KEEP_PV,TARGMY ->4 +# - <0> ex-padsv sRM*/LVINTRO ->- EONT_EONT checkOptree ( name => 'our $a=undef', @@ -218,7 +218,7 @@ checkOptree ( name => 'our $a=undef', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); 6 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter v ->2 -2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3 +2 <;> nextstate(main 1 -e:1) v:{ ->3 5 <2> sassign vKS/2 ->6 3 <0> undef s ->4 - <1> ex-rv2sv sKRM*/OURINTR,1 ->5 @@ -226,7 +226,7 @@ checkOptree ( name => 'our $a=undef', EOT_EOT # 6 <@> leave[1 ref] vKP/REFC ->(end) # 1 <0> enter v ->2 -# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3 +# 2 <;> nextstate(main 1 -e:1) v:{ ->3 # 5 <2> sassign vKS/2 ->6 # 3 <0> undef s ->4 # - <1> ex-rv2sv sKRM*/OURINTR,1 ->5 @@ -242,7 +242,7 @@ checkOptree ( name => 'local $c=undef', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); 6 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter v ->2 -2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3 +2 <;> nextstate(main 1 -e:1) v:{ ->3 5 <2> sassign vKS/2 ->6 3 <0> undef s ->4 - <1> ex-rv2sv sKRM*/LVINTRO,1 ->5 @@ -250,7 +250,7 @@ checkOptree ( name => 'local $c=undef', EOT_EOT # 6 <@> leave[1 ref] vKP/REFC ->(end) # 1 <0> enter v ->2 -# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3 +# 2 <;> nextstate(main 1 -e:1) v:{ ->3 # 5 <2> sassign vKS/2 ->6 # 3 <0> undef s ->4 # - <1> ex-rv2sv sKRM*/LVINTRO,1 ->5 @@ -264,15 +264,13 @@ checkOptree ( name => 'sub {my $a=()}', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); 1 <;> nextstate(main -439 optree.t:105) v:>,<,% 2 <0> stub sP -3 <0> padsv[$a:-439,-438] sRM*/LVINTRO -4 <2> sassign sKS/2 -5 <1> leavesub[1 ref] K/REFC,1 +3 <1> padsv_store[$a:1516,1517] sKS/LVINTRO +4 <1> leavesub[1 ref] K/REFC,1 EOT_EOT # 1 <;> nextstate(main 438 optree_varinit.t:247) v:>,<,% # 2 <0> stub sP -# 3 <0> padsv[$a:438,439] sRM*/LVINTRO -# 4 <2> sassign sKS/2 -# 5 <1> leavesub[1 ref] K/REFC,1 +# 3 <1> padsv_store[$a:1516,1517] sKS/LVINTRO +# 4 <1> leavesub[1 ref] K/REFC,1 EONT_EONT checkOptree ( name => 'sub {our $a=()}', @@ -321,16 +319,14 @@ checkOptree ( name => 'my $a=()', 1 <0> enter v 2 <;> nextstate(main 1 -e:1) v:>,<,%,{ 3 <0> stub sP -4 <0> padsv[$a:1,2] sRM*/LVINTRO -5 <2> sassign vKS/2 -6 <@> leave[1 ref] vKP/REFC +4 <1> padsv_store[$a:1516,1517] vKS/LVINTRO +5 <@> leave[1 ref] vKP/REFC EOT_EOT # 1 <0> enter v # 2 <;> nextstate(main 1 -e:1) v:>,<,%,{ # 3 <0> stub sP -# 4 <0> padsv[$a:1,2] sRM*/LVINTRO -# 5 <2> sassign vKS/2 -# 6 <@> leave[1 ref] vKP/REFC +# 4 <1> padsv_store[$a:1516,1517] vKS/LVINTRO +# 5 <@> leave[1 ref] vKP/REFC EONT_EONT checkOptree ( name => 'our $a=()', diff --git a/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm b/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm index 68e6768ebf0..f539650efb8 100644 --- a/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm +++ b/gnu/usr.bin/perl/ext/Devel-Peek/Peek.pm @@ -3,7 +3,7 @@ package Devel::Peek; -$VERSION = '1.32'; +$VERSION = '1.33'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; diff --git a/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t b/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t index 6ad108754f9..d6267e158b2 100755 --- a/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t +++ b/gnu/usr.bin/perl/ext/Devel-Peek/t/Peek.t @@ -392,7 +392,6 @@ do_test('reference to named subroutine without prototype', \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$dump2" OUTSIDE = $ADDR \\(MAIN\\)'); -if ($] >= 5.011) { # note the conditionals on ENGINE and INTFLAGS were introduced in 5.19.9 do_test('reference to regexp', qr(tic), @@ -406,14 +405,16 @@ do_test('reference to regexp', PV = $ADDR "\\(\\?\\^:tic\\)" CUR = 8 LEN = 0 - STASH = $ADDR\\t"Regexp"' -. ($] < 5.013 ? '' : -' - COMPFLAGS = 0x0 \(\) - EXTFLAGS = 0x680000 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\) -(?: ENGINE = $ADDR \(STANDARD\) -)? INTFLAGS = 0x0(?: \(\))? + STASH = $ADDR\\s+"Regexp" + COMPFLAGS = 0x0 \\(\\) + EXTFLAGS = 0x680000 \\(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\\) + ENGINE = $ADDR \\(STANDARD\\) + INTFLAGS = 0x0 \\(\\) NPARENS = 0 + LOGICAL_NPARENS = 0 + LOGICAL_TO_PARNO = 0x0 + PARNO_TO_LOGICAL = 0x0 + PARNO_TO_LOGICAL_NEXT = 0x0 LASTPAREN = 0 LASTCLOSEPAREN = 0 MINLEN = 3 @@ -424,20 +425,29 @@ do_test('reference to regexp', SUBOFFSET = 0 SUBCOFFSET = 0 SUBBEG = 0x0 -(?: ENGINE = $ADDR -)? MOTHER_RE = $ADDR' -. ($] < 5.019003 ? '' : ' - SV = REGEXP\($ADDR\) at $ADDR + PAREN_NAMES = 0x0 + SUBSTRS = $ADDR + PPRIVATE = $ADDR + OFFS = $ADDR + \\[ 0:0 \\] + QR_ANONCV = 0x0 + SAVED_COPY = 0x0 + MOTHER_RE = $ADDR + SV = REGEXP\\($ADDR\\) at $ADDR REFCNT = 2 - FLAGS = \(POK,pPOK\) - PV = $ADDR "\(\?\^:tic\)" + FLAGS = \\(POK,pPOK\\) + PV = $ADDR "\\(\\?\\^:tic\\)" CUR = 8 - LEN = \d+ - COMPFLAGS = 0x0 \(\) - EXTFLAGS = 0x680000 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\) -(?: ENGINE = $ADDR \(STANDARD\) -)? INTFLAGS = 0x0(?: \(\))? + LEN = \\d+ + COMPFLAGS = 0x0 \\(\\) + EXTFLAGS = 0x680000 \\(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\\) + ENGINE = $ADDR \\(STANDARD\\) + INTFLAGS = 0x0 \\(\\) NPARENS = 0 + LOGICAL_NPARENS = 0 + LOGICAL_TO_PARNO = 0x0 + PARNO_TO_LOGICAL = 0x0 + PARNO_TO_LOGICAL_NEXT = 0x0 LASTPAREN = 0 LASTCLOSEPAREN = 0 MINLEN = 3 @@ -448,42 +458,15 @@ do_test('reference to regexp', SUBOFFSET = 0 SUBCOFFSET = 0 SUBBEG = 0x0 -(?: ENGINE = $ADDR -)? MOTHER_RE = 0x0 PAREN_NAMES = 0x0 SUBSTRS = $ADDR PPRIVATE = $ADDR OFFS = $ADDR - QR_ANONCV = 0x0(?: - SAVED_COPY = 0x0)?') . ' - PAREN_NAMES = 0x0 - SUBSTRS = $ADDR - PPRIVATE = $ADDR - OFFS = $ADDR - QR_ANONCV = 0x0(?: - SAVED_COPY = 0x0)?' -)); -} else { -do_test('reference to regexp', - qr(tic), -'SV = $RV\\($ADDR\\) at $ADDR - REFCNT = 1 - FLAGS = \\(ROK\\) - RV = $ADDR - SV = PVMG\\($ADDR\\) at $ADDR - REFCNT = 1 - FLAGS = \\(OBJECT,SMG\\) - IV = 0 - NV = 0 - PV = 0 - MAGIC = $ADDR - MG_VIRTUAL = $ADDR - MG_TYPE = PERL_MAGIC_qr\(r\) - MG_OBJ = $ADDR - PAT = "\(\?^:tic\)" - REFCNT = 2 - STASH = $ADDR\\t"Regexp"'); -} + \\[ 0:0 \\] + QR_ANONCV = 0x0 + SAVED_COPY = 0x0 + MOTHER_RE = 0x0 +'); do_test('reference to blessed hash', (bless {}, "Tac"), @@ -1200,22 +1183,26 @@ unless ($Config{useithreads}) { # note the conditionals on ENGINE and INTFLAGS were introduced in 5.19.9 do_test('UTF-8 in a regular expression', qr/\x{100}/, -'SV = IV\($ADDR\) at $ADDR +'SV = IV\\($ADDR\\) at $ADDR REFCNT = 1 - FLAGS = \(ROK\) + FLAGS = \\(ROK\\) RV = $ADDR - SV = REGEXP\($ADDR\) at $ADDR + SV = REGEXP\\($ADDR\\) at $ADDR REFCNT = 1 FLAGS = \(OBJECT,POK,FAKE,pPOK,UTF8\) - PV = $ADDR "\(\?\^u:\\\\\\\\x\{100\}\)" \[UTF8 "\(\?\^u:\\\\\\\\x\{100\}\)"\] + PV = $ADDR "\\(\\?\\^u:\\\\\\\\x\\{100\\}\\)" \\[UTF8 "\\(\\?\\^u:\\\\\\\\x\\{100\\}\\)"\\] CUR = 13 LEN = 0 - STASH = $ADDR "Regexp" - COMPFLAGS = 0x0 \(\) - EXTFLAGS = $ADDR \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\) -(?: ENGINE = $ADDR \(STANDARD\) -)? INTFLAGS = 0x0(?: \(\))? + STASH = $ADDR\\s+"Regexp" + COMPFLAGS = 0x0 \\(\\) + EXTFLAGS = $ADDR \\(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\\) +(?: ENGINE = $ADDR \\(STANDARD\\) +)? INTFLAGS = 0x0(?: \\(\\))? NPARENS = 0 + LOGICAL_NPARENS = 0 + LOGICAL_TO_PARNO = 0x0 + PARNO_TO_LOGICAL = 0x0 + PARNO_TO_LOGICAL_NEXT = 0x0 LASTPAREN = 0 LASTCLOSEPAREN = 0 MINLEN = 1 @@ -1226,20 +1213,29 @@ do_test('UTF-8 in a regular expression', SUBOFFSET = 0 SUBCOFFSET = 0 SUBBEG = 0x0 -(?: ENGINE = $ADDR -)? MOTHER_RE = $ADDR' -. ($] < 5.019003 ? '' : ' - SV = REGEXP\($ADDR\) at $ADDR + PAREN_NAMES = 0x0 + SUBSTRS = $ADDR + PPRIVATE = $ADDR + OFFS = $ADDR + \\[ 0:0 \\] + QR_ANONCV = 0x0 + SAVED_COPY = 0x0 + MOTHER_RE = $ADDR + SV = REGEXP\\($ADDR\\) at $ADDR REFCNT = 2 - FLAGS = \(POK,pPOK,UTF8\) - PV = $ADDR "\(\?\^u:\\\\\\\\x\{100\}\)" \[UTF8 "\(\?\^u:\\\\\\\\x\{100\}\)"\] + FLAGS = \\(POK,pPOK,UTF8\\) + PV = $ADDR "\\(\\?\\^u:\\\\\\\\x\\{100\\}\\)" \\[UTF8 "\\(\\?\\^u:\\\\\\\\x\\{100\\}\\)"\\] CUR = 13 - LEN = \d+ - COMPFLAGS = 0x0 \(\) - EXTFLAGS = $ADDR \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\) -(?: ENGINE = $ADDR \(STANDARD\) -)? INTFLAGS = 0x0(?: \(\))? + LEN = \\d+ + COMPFLAGS = 0x0 \\(\\) + EXTFLAGS = 0x680100 \\(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\\) + ENGINE = $ADDR \\(STANDARD\\) + INTFLAGS = 0x0 \\(\\) NPARENS = 0 + LOGICAL_NPARENS = 0 + LOGICAL_TO_PARNO = 0x0 + PARNO_TO_LOGICAL = 0x0 + PARNO_TO_LOGICAL_NEXT = 0x0 LASTPAREN = 0 LASTCLOSEPAREN = 0 MINLEN = 1 @@ -1250,22 +1246,98 @@ do_test('UTF-8 in a regular expression', SUBOFFSET = 0 SUBCOFFSET = 0 SUBBEG = 0x0 -(?: ENGINE = $ADDR -)? MOTHER_RE = 0x0 PAREN_NAMES = 0x0 SUBSTRS = $ADDR PPRIVATE = $ADDR OFFS = $ADDR - QR_ANONCV = 0x0(?: - SAVED_COPY = 0x0)?') . ' + \\[ 0:0 \\] + QR_ANONCV = 0x0 + SAVED_COPY = 0x0 + MOTHER_RE = 0x0 +'); + +do_test('Branch Reset regexp', + qr/(?|(foo)|(bar))(?|(baz)|(bop))/, +'SV = IV\\($ADDR\\) at $ADDR + REFCNT = 1 + FLAGS = \\(ROK\\) + RV = $ADDR + SV = REGEXP\\($ADDR\\) at $ADDR + REFCNT = 1 + FLAGS = \\(OBJECT,POK,FAKE,pPOK\\) + PV = $ADDR "\\(\\?\\^:\\(\\?\\|\\(foo\\)\\|\\(bar\\)\\)\\(\\?\\|\\(baz\\)\\|\\(bop\\)\\)\\)" + CUR = 35 + LEN = 0 + STASH = $ADDR\\s+"Regexp" + COMPFLAGS = 0x0 \\(\\) + EXTFLAGS = 0x0 \\(\\) + ENGINE = $ADDR \\(STANDARD\\) + INTFLAGS = 0x0 \\(\\) + NPARENS = 4 + LOGICAL_NPARENS = 2 + LOGICAL_TO_PARNO = $ADDR + \\{ 0, 1, 3 \\} + PARNO_TO_LOGICAL = $ADDR + \\{ 0, 1, 1, 2, 2 \\} + PARNO_TO_LOGICAL_NEXT = $ADDR + \\{ 0, 2, 0, 4, 0 \\} + LASTPAREN = 0 + LASTCLOSEPAREN = 0 + MINLEN = 6 + MINLENRET = 6 + GOFS = 0 + PRE_PREFIX = 4 + SUBLEN = 0 + SUBOFFSET = 0 + SUBCOFFSET = 0 + SUBBEG = 0x0 PAREN_NAMES = 0x0 SUBSTRS = $ADDR PPRIVATE = $ADDR OFFS = $ADDR - QR_ANONCV = 0x0(?: - SAVED_COPY = 0x0)? + \\[ 0:0, 0:0, 0:0, 0:0, 0:0 \\] + QR_ANONCV = 0x0 + SAVED_COPY = 0x0 + MOTHER_RE = $ADDR + SV = REGEXP\\($ADDR\\) at $ADDR + REFCNT = 2 + FLAGS = \\(POK,pPOK\\) + PV = $ADDR "\\(\\?\\^:\\(\\?\\|\\(foo\\)\\|\\(bar\\)\\)\\(\\?\\|\\(baz\\)\\|\\(bop\\)\\)\\)" + CUR = 35 + LEN = \\d+ + COMPFLAGS = 0x0 \\(\\) + EXTFLAGS = 0x0 \\(\\) + ENGINE = $ADDR \\(STANDARD\\) + INTFLAGS = 0x0 \\(\\) + NPARENS = 4 + LOGICAL_NPARENS = 2 + LOGICAL_TO_PARNO = $ADDR + \\{ 0, 1, 3 \\} + PARNO_TO_LOGICAL = $ADDR + \\{ 0, 1, 1, 2, 2 \\} + PARNO_TO_LOGICAL_NEXT = $ADDR + \\{ 0, 2, 0, 4, 0 \\} + LASTPAREN = 0 + LASTCLOSEPAREN = 0 + MINLEN = 6 + MINLENRET = 6 + GOFS = 0 + PRE_PREFIX = 4 + SUBLEN = 0 + SUBOFFSET = 0 + SUBCOFFSET = 0 + SUBBEG = 0x0 + PAREN_NAMES = 0x0 + SUBSTRS = $ADDR + PPRIVATE = $ADDR + OFFS = $ADDR + \\[ 0:0, 0:0, 0:0, 0:0, 0:0 \\] + QR_ANONCV = 0x0 + SAVED_COPY = 0x0 + MOTHER_RE = 0x0 '); + { # perl #117793: Extend SvREFCNT* to work on any perl variable type my %hash; my $base_count = Devel::Peek::SvREFCNT(%hash); @@ -1516,6 +1588,7 @@ dumpindent is 4 at -e line 1. | FLAGS = (VOID,SLABBED,MORESIB) | LINE = 1 | PACKAGE = "t" + | HINTS = 00000100 | | 5 +--entersub UNOP(0xNNN) ===> 1 [leave 0xNNN] TARG = 1 diff --git a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL index 93a858a0b34..f428472c7c4 100644 --- a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL +++ b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL @@ -90,7 +90,7 @@ package DynaLoader; # Tim.Bunce@ig.co.uk, August 1994 BEGIN { - our $VERSION = '1.52'; + our $VERSION = '1.54'; } # Note: in almost any other piece of code "our" would have been a better diff --git a/gnu/usr.bin/perl/ext/DynaLoader/dl_dyld.xs b/gnu/usr.bin/perl/ext/DynaLoader/dl_dyld.xs index 38a38400d45..716c6ea421d 100644 --- a/gnu/usr.bin/perl/ext/DynaLoader/dl_dyld.xs +++ b/gnu/usr.bin/perl/ext/DynaLoader/dl_dyld.xs @@ -104,7 +104,7 @@ static void TranslateError sv_setpv(MY_CXT.x_dl_last_error, error); } -static char *dlopen(char *path, int mode /* mode is ignored */) +static char *dlopen(char *path) { int dyld_result; NSObjectFileImage ofile; @@ -159,13 +159,11 @@ void * dl_load_file(filename, flags=0) char * filename int flags - PREINIT: - int mode = 1; CODE: DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); if (flags & 0x01) Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); - RETVAL = dlopen(filename, mode) ; + RETVAL = dlopen(filename); DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) diff --git a/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs b/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs index b076f2141cb..32249c9d2ab 100644 --- a/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs +++ b/gnu/usr.bin/perl/ext/DynaLoader/dl_win32.xs @@ -188,7 +188,7 @@ void dl_install_xsub(perl_name, symref, filename="$Package") char * perl_name void * symref - char * filename + const char * filename CODE: DLDEBUG(2,PerlIO_printf(Perl_debug_log,"dl_install_xsub(name=%s, symref=%x)\n", perl_name, symref)); diff --git a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL index ee2f4a3a928..ae647d5f06c 100644 --- a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL +++ b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL @@ -2,7 +2,7 @@ use ExtUtils::MakeMaker; use Config; use strict; -our $VERSION = "1.36"; +our $VERSION = "1.37"; my %err = (); @@ -18,18 +18,11 @@ if ($Config{gccversion} ne '' && $^O eq 'MSWin32') { # MinGW complains "warning: #pragma system_header ignored outside include # file" if the header files are processed individually, so include them # all in .c file and process that instead. - my %seen; open INCS, '>', 'includes.c' or die "Cannot open includes.c"; foreach $file (@files) { next if $file eq 'errno.c'; next unless -f $file; - if ( $file eq 'avx512vpopcntdqvlintrin.h' || $file eq 'avx512bwintrin.h' ) { - # "Never use directly; include instead." - # "Never use directly; include instead." - $file = 'immintrin.h'; - } - next if ++$seen{$file} > 1; print INCS qq[#include "$file"\n]; } close INCS; @@ -114,7 +107,7 @@ sub default_cpp { } sub get_files { - my %file = (); + my @file; # When cross-compiling we may store a path for gcc's "sysroot" option: my $sysroot = $Config{sysroot} || ''; my $linux_errno_h; @@ -128,19 +121,19 @@ sub get_files { # VMS keeps its include files in system libraries if ($^O eq 'VMS') { - $file{'Sys$Library:DECC$RTLDEF.TLB'} = 1; + push(@file, 'Sys$Library:DECC$RTLDEF.TLB'); } elsif ($^O eq 'os390') { # OS/390 C compiler doesn't generate #file or #line directives # and it does not tag the header as 1047 (EBCDIC), so make a local # copy and tag it my $cp = `cp /usr/include/errno.h ./errno.h`; my $chtag = `chtag -t -cIBM-1047 ./errno.h`; - $file{'./errno.h'} = 1; + push(@file, './errno.h'); } elsif ($Config{archname} eq 'arm-riscos') { # Watch out for cross compiling for RISC OS my $dep = `echo "#include " | gcc -E -M -`; if ($dep =~ /(\S+errno\.h)/) { - $file{$1} = 1; + push(@file, $1); } } elsif ($^O eq 'linux' && $Config{gccversion} ne '' && @@ -148,14 +141,14 @@ sub get_files { # might be using, say, Intel's icc $linux_errno_h ) { - $file{$linux_errno_h} = 1; + push(@file, $linux_errno_h); } elsif ($^O eq 'haiku') { # hidden in a special place - $file{'/boot/system/develop/headers/posix/errno.h'} = 1; + push(@file, '/boot/system/develop/headers/posix/errno.h'); } elsif ($^O eq 'vos') { # avoid problem where cpp returns non-POSIX pathnames - $file{'/system/include_library/errno.h'} = 1; + push(@file, '/system/include_library/errno.h'); } else { open(CPPI, '>', 'errno.c') or die "Cannot open errno.c"; @@ -183,16 +176,28 @@ sub get_files { if (/$pat/o) { my $f = $1; $f =~ s,\\\\,/,g; - $file{$f} = 1; + push(@file, $f); } } else { - $file{$1} = 1 if /$pat/o; + push(@file, $1) if /$pat/o; } } close(CPPO); } - return keys %file; + return uniq(@file); +} + +# +# +sub uniq +{ + # At this point List::Util::uniq appears not to be usable so + # roll our own. + # + # Returns a list with unique values, while keeping the order + # + return do { my %seen; grep { !$seen{$_}++ } @_ }; } sub write_errno_pm { @@ -364,7 +369,7 @@ ESQ if ($IsMSWin32) { print " WINSOCK => [qw(\n"; - $k = join(" ", grep { /^WSAE/ } keys %err); + $k = join(" ", grep { /^WSAE/ } sort keys %err); $k =~ s/(.{50,70})\s/$1\n\t/g; print "\t",$k,"\n )],\n"; } diff --git a/gnu/usr.bin/perl/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm b/gnu/usr.bin/perl/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm index e90b4aeb092..18627f8a5e8 100644 --- a/gnu/usr.bin/perl/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm +++ b/gnu/usr.bin/perl/ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm @@ -5,7 +5,7 @@ use Exporter 'import'; use ExtUtils::Embed 1.31, qw(xsi_header xsi_protos xsi_body); our @EXPORT = qw(writemain); -our $VERSION = '1.11'; +our $VERSION = '1.13'; # blead will run this with miniperl, hence we can't use autodie or File::Temp my $temp; @@ -99,9 +99,6 @@ main(int argc, char **argv, char **env) #ifndef NO_ENV_ARRAY_IN_MAIN PERL_UNUSED_ARG(env); #endif -#ifndef PERL_USE_SAFE_PUTENV - PL_use_safe_putenv = FALSE; -#endif /* PERL_USE_SAFE_PUTENV */ /* if user wants control of gprof profiling off by default */ /* noop unless Configure is given -Accflags=-DPERL_GPROF_CONTROL */ @@ -138,8 +135,29 @@ main(int argc, char **argv, char **env) PL_perl_destruct_level = 0; } PL_exit_flags |= PERL_EXIT_DESTRUCT_END; - if (!perl_parse(my_perl, xs_init, argc, argv, (char **)NULL)) + if (!perl_parse(my_perl, xs_init, argc, argv, (char **)NULL)) { + + /* perl_parse() may end up starting its own run loops, which + * might end up "leaking" PL_restartop from the parse phase into + * the run phase which then ends up confusing run_body(). This + * leakage shouldn't happen and if it does its a bug. + * + * Note we do not do this assert in perl_run() or perl_parse() + * as there are modules out there which explicitly set + * PL_restartop before calling perl_run() directly from XS code + * (Coro), and it is conceivable PL_restartop could be set prior + * to calling perl_parse() by XS code as well. + * + * What we want to check is that the top level perl_parse(), + * perl_run() pairing does not allow a leaking PL_restartop, as + * that indicates a bug in perl. By putting the assert here we + * can validate that Perl itself is operating correctly without + * risking breakage to XS code under DEBUGGING. - Yves + */ + assert(!PL_restartop); + perl_run(my_perl); + } #ifndef PERL_MICRO /* Unregister our signal handler before destroying my_perl */ @@ -154,19 +172,6 @@ main(int argc, char **argv, char **env) perl_free(my_perl); -#if defined(USE_ENVIRON_ARRAY) && defined(PERL_TRACK_MEMPOOL) && !defined(NO_ENV_ARRAY_IN_MAIN) - /* - * The old environment may have been freed by perl_free() - * when PERL_TRACK_MEMPOOL is defined, but without having - * been restored by perl_destruct() before (this is only - * done if destruct_level > 0). - * - * It is important to have a valid environment for atexit() - * routines that are eventually called. - */ - environ = env; -#endif - PERL_SYS_TERM(); exit(exitstatus); diff --git a/gnu/usr.bin/perl/ext/File-Find/lib/File/Find.pm b/gnu/usr.bin/perl/ext/File-Find/lib/File/Find.pm index ae58d00b71e..a41a6f5a566 100644 --- a/gnu/usr.bin/perl/ext/File-Find/lib/File/Find.pm +++ b/gnu/usr.bin/perl/ext/File-Find/lib/File/Find.pm @@ -3,7 +3,7 @@ use 5.006; use strict; use warnings; use warnings::register; -our $VERSION = '1.40'; +our $VERSION = '1.43'; use Exporter 'import'; require Cwd; @@ -43,25 +43,35 @@ sub contract_name { return $abs_name; } +sub _is_absolute { + return $_[0] =~ m|^(?:[A-Za-z]:)?/| if $Is_Win32; + return substr($_[0], 0, 1) eq '/'; +} + +sub _is_root { + return $_[0] =~ m|^(?:[A-Za-z]:)?/\z| if $Is_Win32; + return $_[0] eq '/'; +} + sub PathCombine($$) { my ($Base,$Name) = @_; my $AbsName; - if (substr($Name,0,1) eq '/') { - $AbsName= $Name; + if (_is_absolute($Name)) { + $AbsName= $Name; } else { - $AbsName= contract_name($Base,$Name); + $AbsName= contract_name($Base,$Name); } # (simple) check for recursion my $newlen= length($AbsName); if ($newlen <= length($Base)) { - if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/') - && $AbsName eq substr($Base,0,$newlen)) - { - return undef; - } + if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/') + && $AbsName eq substr($Base,0,$newlen)) + { + return undef; + } } return $AbsName; } @@ -73,37 +83,40 @@ sub Follow_SymLink($) { ($DEV, $INO)= lstat $AbsName; while (-l _) { - if ($SLnkSeen{$DEV, $INO}++) { - if ($follow_skip < 2) { - die "$AbsName is encountered a second time"; - } - else { - return undef; - } - } - $NewName= PathCombine($AbsName, readlink($AbsName)); - unless(defined $NewName) { - if ($follow_skip < 2) { - die "$AbsName is a recursive symbolic link"; - } - else { - return undef; - } - } - else { - $AbsName= $NewName; - } - ($DEV, $INO) = lstat($AbsName); - return undef unless defined $DEV; # dangling symbolic link + if ($SLnkSeen{$DEV, $INO}++) { + if ($follow_skip < 2) { + die "$AbsName is encountered a second time"; + } + else { + return undef; + } + } + my $Link = readlink($AbsName); + # canonicalize directory separators + $Link =~ s|\\|/|g if $Is_Win32; + $NewName= PathCombine($AbsName, $Link); + unless(defined $NewName) { + if ($follow_skip < 2) { + die "$AbsName is a recursive symbolic link"; + } + else { + return undef; + } + } + else { + $AbsName= $NewName; + } + ($DEV, $INO) = lstat($AbsName); + return undef unless defined $DEV; # dangling symbolic link } if ($full_check && defined $DEV && $SLnkSeen{$DEV, $INO}++) { - if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) { - die "$AbsName encountered a second time"; - } - else { - return undef; - } + if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) { + die "$AbsName encountered a second time"; + } + else { + return undef; + } } return $AbsName; @@ -123,6 +136,7 @@ sub is_tainted_pp { return length($@) != 0; } + sub _find_opt { my $wanted = shift; return unless @_; @@ -133,25 +147,25 @@ sub _find_opt { local %SLnkSeen; local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, - $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, - $pre_process, $post_process, $dangling_symlinks); + $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, + $pre_process, $post_process, $dangling_symlinks); local($dir, $name, $fullname, $prune); local *_ = \my $a; my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd(); if ($Is_VMS) { - # VMS returns this by default in VMS format which just doesn't - # work for the rest of this module. - $cwd = VMS::Filespec::unixpath($cwd); - - # Apparently this is not expected to have a trailing space. - # To attempt to make VMS/UNIX conversions mostly reversible, - # a trailing slash is needed. The run-time functions ignore the - # resulting double slash, but it causes the perl tests to fail. + # VMS returns this by default in VMS format which just doesn't + # work for the rest of this module. + $cwd = VMS::Filespec::unixpath($cwd); + + # Apparently this is not expected to have a trailing space. + # To attempt to make VMS/UNIX conversions mostly reversible, + # a trailing slash is needed. The run-time functions ignore the + # resulting double slash, but it causes the perl tests to fail. $cwd =~ s#/\z##; - # This comes up in upper case now, but should be lower. - # In the future this could be exact case, no need to change. + # This comes up in upper case now, but should be lower. + # In the future this could be exact case, no need to change. } my $cwd_untainted = $cwd; my $check_t_cwd = 1; @@ -178,109 +192,107 @@ sub _find_opt { Proc_Top_Item: foreach my $TOP (@_) { - my $top_item = $TOP; - $top_item = VMS::Filespec::unixify($top_item) if $Is_VMS; - - ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item; - - if ($Is_Win32) { - $top_item =~ s|[/\\]\z|| - unless $top_item =~ m{^(?:\w:)?[/\\]$}; - } - else { - $top_item =~ s|/\z|| unless $top_item eq '/'; - } - - $Is_Dir= 0; - - if ($follow) { - - if (substr($top_item,0,1) eq '/') { - $abs_dir = $top_item; - } - elsif ($top_item eq $File::Find::current_dir) { - $abs_dir = $cwd; - } - else { # care about any ../ - $top_item =~ s/\.dir\z//i if $Is_VMS; - $abs_dir = contract_name("$cwd/",$top_item); - } - $abs_dir= Follow_SymLink($abs_dir); - unless (defined $abs_dir) { - if ($dangling_symlinks) { - if (ref $dangling_symlinks eq 'CODE') { - $dangling_symlinks->($top_item, $cwd); - } else { - warnings::warnif "$top_item is a dangling symbolic link\n"; - } - } - next Proc_Top_Item; - } - - if (-d _) { - $top_item =~ s/\.dir\z//i if $Is_VMS; - _find_dir_symlnk($wanted, $abs_dir, $top_item); - $Is_Dir= 1; - } - } - else { # no follow - $topdir = $top_item; - unless (defined $topnlink) { - warnings::warnif "Can't stat $top_item: $!\n"; - next Proc_Top_Item; - } - if (-d _) { - $top_item =~ s/\.dir\z//i if $Is_VMS; - _find_dir($wanted, $top_item, $topnlink); - $Is_Dir= 1; - } - else { - $abs_dir= $top_item; - } - } - - unless ($Is_Dir) { - unless (($_,$dir) = File::Basename::fileparse($abs_dir)) { - ($dir,$_) = ('./', $top_item); - } - - $abs_dir = $dir; - if (( $untaint ) && (is_tainted($dir) )) { - ( $abs_dir ) = $dir =~ m|$untaint_pat|; - unless (defined $abs_dir) { - if ($untaint_skip == 0) { - die "directory $dir is still tainted"; - } - else { - next Proc_Top_Item; - } - } - } - - unless ($no_chdir || chdir $abs_dir) { - warnings::warnif "Couldn't chdir $abs_dir: $!\n"; - next Proc_Top_Item; - } - - $name = $abs_dir . $_; # $File::Find::name - $_ = $name if $no_chdir; - - { $wanted_callback->() }; # protect against wild "next" - - } - - unless ( $no_chdir ) { - if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) { - ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|; - unless (defined $cwd_untainted) { - die "insecure cwd in find(depth)"; - } - $check_t_cwd = 0; - } - unless (chdir $cwd_untainted) { - die "Can't cd to $cwd: $!\n"; - } - } + my $top_item = $TOP; + $top_item = VMS::Filespec::unixify($top_item) if $Is_VMS; + + ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item; + + # canonicalize directory separators + $top_item =~ s|[/\\]|/|g if $Is_Win32; + + # no trailing / unless path is root + $top_item =~ s|/\z|| unless _is_root($top_item); + + $Is_Dir= 0; + + if ($follow) { + + if (_is_absolute($top_item)) { + $abs_dir = $top_item; + } + elsif ($top_item eq $File::Find::current_dir) { + $abs_dir = $cwd; + } + else { # care about any ../ + $top_item =~ s/\.dir\z//i if $Is_VMS; + $abs_dir = contract_name("$cwd/",$top_item); + } + $abs_dir= Follow_SymLink($abs_dir); + unless (defined $abs_dir) { + if ($dangling_symlinks) { + if (ref $dangling_symlinks eq 'CODE') { + $dangling_symlinks->($top_item, $cwd); + } else { + warnings::warnif "$top_item is a dangling symbolic link\n"; + } + } + next Proc_Top_Item; + } + + if (-d _) { + $top_item =~ s/\.dir\z//i if $Is_VMS; + _find_dir_symlnk($wanted, $abs_dir, $top_item); + $Is_Dir= 1; + } + } + else { # no follow + $topdir = $top_item; + unless (defined $topnlink) { + warnings::warnif "Can't stat $top_item: $!\n"; + next Proc_Top_Item; + } + if (-d _) { + $top_item =~ s/\.dir\z//i if $Is_VMS; + _find_dir($wanted, $top_item, $topnlink); + $Is_Dir= 1; + } + else { + $abs_dir= $top_item; + } + } + + unless ($Is_Dir) { + unless (($_,$dir) = File::Basename::fileparse($abs_dir)) { + ($dir,$_) = ('./', $top_item); + } + + $abs_dir = $dir; + if (( $untaint ) && (is_tainted($dir) )) { + ( $abs_dir ) = $dir =~ m|$untaint_pat|; + unless (defined $abs_dir) { + if ($untaint_skip == 0) { + die "directory $dir is still tainted"; + } + else { + next Proc_Top_Item; + } + } + } + + unless ($no_chdir || chdir $abs_dir) { + warnings::warnif "Couldn't chdir $abs_dir: $!\n"; + next Proc_Top_Item; + } + + $name = $abs_dir . $_; # $File::Find::name + $_ = $name if $no_chdir; + + { $wanted_callback->() }; # protect against wild "next" + + } + + unless ( $no_chdir ) { + if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) { + ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|; + unless (defined $cwd_untainted) { + die "insecure cwd in find(depth)"; + } + $check_t_cwd = 0; + } + unless (chdir $cwd_untainted) { + die "Can't cd to $cwd: $!\n"; + } + } } } @@ -304,179 +316,170 @@ sub _find_dir($$$) { my $tainted = 0; my $no_nlink; - if ($Is_Win32) { - $dir_pref - = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$} ? $p_dir : "$p_dir/" ); - } elsif ($Is_VMS) { - - # VMS is returning trailing .dir on directories - # and trailing . on files and symbolic links - # in UNIX syntax. - # + if ($Is_VMS) { + # VMS is returning trailing .dir on directories + # and trailing . on files and symbolic links + # in UNIX syntax. + # - $p_dir =~ s/\.(dir)?$//i unless $p_dir eq '.'; + $p_dir =~ s/\.(dir)?$//i unless $p_dir eq '.'; - $dir_pref = ($p_dir =~ m/[\]>]+$/ ? $p_dir : "$p_dir/" ); + $dir_pref = ($p_dir =~ m/[\]>]+$/ ? $p_dir : "$p_dir/" ); } else { - $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" ); + $dir_pref = _is_root($p_dir) ? $p_dir : "$p_dir/"; } local ($dir, $name, $prune); unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) { - my $udir = $p_dir; - if (( $untaint ) && (is_tainted($p_dir) )) { - ( $udir ) = $p_dir =~ m|$untaint_pat|; - unless (defined $udir) { - if ($untaint_skip == 0) { - die "directory $p_dir is still tainted"; - } - else { - return; - } - } - } - unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { - warnings::warnif "Can't cd to $udir: $!\n"; - return; - } + my $udir = $p_dir; + if (( $untaint ) && (is_tainted($p_dir) )) { + ( $udir ) = $p_dir =~ m|$untaint_pat|; + unless (defined $udir) { + if ($untaint_skip == 0) { + die "directory $p_dir is still tainted"; + } + else { + return; + } + } + } + unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { + warnings::warnif "Can't cd to $udir: $!\n"; + return; + } } # push the starting directory push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { - unless ($bydepth) { - $dir= $p_dir; # $File::Find::dir - $name= $dir_name; # $File::Find::name - $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ - # prune may happen here - $prune= 0; - { $wanted_callback->() }; # protect against wild "next" - next if $prune; - } - - # change to that directory - unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { - my $udir= $dir_rel; - if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) { - ( $udir ) = $dir_rel =~ m|$untaint_pat|; - unless (defined $udir) { - if ($untaint_skip == 0) { - die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted"; - } else { # $untaint_skip == 1 - next; - } - } - } - unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { - warnings::warnif "Can't cd to (" . - ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n"; - next; - } - $CdLvl++; - } - - $dir= $dir_name; # $File::Find::dir - - # Get the list of files in the current directory. - my $dh; - unless (opendir $dh, ($no_chdir ? $dir_name : $File::Find::current_dir)) { - warnings::warnif "Can't opendir($dir_name): $!\n"; - next; - } - @filenames = readdir $dh; - closedir($dh); - @filenames = $pre_process->(@filenames) if $pre_process; - push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process; - - # default: use whatever was specified + unless ($bydepth) { + $dir= $p_dir; # $File::Find::dir + $name= $dir_name; # $File::Find::name + $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ + # prune may happen here + $prune= 0; + { $wanted_callback->() }; # protect against wild "next" + next if $prune; + } + + # change to that directory + unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { + my $udir= $dir_rel; + if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) { + ( $udir ) = $dir_rel =~ m|$untaint_pat|; + unless (defined $udir) { + if ($untaint_skip == 0) { + die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted"; + } else { # $untaint_skip == 1 + next; + } + } + } + unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { + warnings::warnif "Can't cd to (" . + ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n"; + next; + } + $CdLvl++; + } + + $dir= $dir_name; # $File::Find::dir + + # Get the list of files in the current directory. + my $dh; + unless (opendir $dh, ($no_chdir ? $dir_name : $File::Find::current_dir)) { + warnings::warnif "Can't opendir($dir_name): $!\n"; + next; + } + @filenames = readdir $dh; + closedir($dh); + @filenames = $pre_process->(@filenames) if $pre_process; + push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process; + + # default: use whatever was specified # (if $nlink >= 2, and $avoid_nlink == 0, this will switch back) $no_nlink = $avoid_nlink; # if dir has wrong nlink count, force switch to slower stat method $no_nlink = 1 if ($nlink < 2); - if ($nlink == 2 && !$no_nlink) { - # This dir has no subdirectories. - for my $FN (@filenames) { - if ($Is_VMS) { - # Big hammer here - Compensate for VMS trailing . and .dir - # No win situation until this is changed, but this - # will handle the majority of the cases with breaking the fewest - - $FN =~ s/\.dir\z//i; - $FN =~ s#\.$## if ($FN ne '.'); - } - next if $FN =~ $File::Find::skip_pattern; - - $name = $dir_pref . $FN; # $File::Find::name - $_ = ($no_chdir ? $name : $FN); # $_ - { $wanted_callback->() }; # protect against wild "next" - } - - } - else { - # This dir has subdirectories. - $subcount = $nlink - 2; - - # HACK: insert directories at this position, so as to preserve - # the user pre-processed ordering of files (thus ensuring - # directory traversal is in user sorted order, not at random). + if ($nlink == 2 && !$no_nlink) { + # This dir has no subdirectories. + for my $FN (@filenames) { + if ($Is_VMS) { + # Big hammer here - Compensate for VMS trailing . and .dir + # No win situation until this is changed, but this + # will handle the majority of the cases with breaking the fewest + + $FN =~ s/\.dir\z//i; + $FN =~ s#\.$## if ($FN ne '.'); + } + next if $FN =~ $File::Find::skip_pattern; + + $name = $dir_pref . $FN; # $File::Find::name + $_ = ($no_chdir ? $name : $FN); # $_ + { $wanted_callback->() }; # protect against wild "next" + } + + } + else { + # This dir has subdirectories. + $subcount = $nlink - 2; + + # HACK: insert directories at this position, so as to preserve + # the user pre-processed ordering of files (thus ensuring + # directory traversal is in user sorted order, not at random). my $stack_top = @Stack; - for my $FN (@filenames) { - next if $FN =~ $File::Find::skip_pattern; - if ($subcount > 0 || $no_nlink) { - # Seen all the subdirs? - # check for directoriness. - # stat is faster for a file in the current directory - $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3]; - - if (-d _) { - --$subcount; - $FN =~ s/\.dir\z//i if $Is_VMS; - # HACK: replace push to preserve dir traversal order - #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink]; - splice @Stack, $stack_top, 0, - [$CdLvl,$dir_name,$FN,$sub_nlink]; - } - else { - $name = $dir_pref . $FN; # $File::Find::name - $_= ($no_chdir ? $name : $FN); # $_ - { $wanted_callback->() }; # protect against wild "next" - } - } - else { - $name = $dir_pref . $FN; # $File::Find::name - $_= ($no_chdir ? $name : $FN); # $_ - { $wanted_callback->() }; # protect against wild "next" - } - } - } + for my $FN (@filenames) { + next if $FN =~ $File::Find::skip_pattern; + if ($subcount > 0 || $no_nlink) { + # Seen all the subdirs? + # check for directoriness. + # stat is faster for a file in the current directory + $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3]; + + if (-d _) { + --$subcount; + $FN =~ s/\.dir\z//i if $Is_VMS; + # HACK: replace push to preserve dir traversal order + #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink]; + splice @Stack, $stack_top, 0, + [$CdLvl,$dir_name,$FN,$sub_nlink]; + } + else { + $name = $dir_pref . $FN; # $File::Find::name + $_= ($no_chdir ? $name : $FN); # $_ + { $wanted_callback->() }; # protect against wild "next" + } + } + else { + $name = $dir_pref . $FN; # $File::Find::name + $_= ($no_chdir ? $name : $FN); # $_ + { $wanted_callback->() }; # protect against wild "next" + } + } + } } continue { - while ( defined ($SE = pop @Stack) ) { - ($Level, $p_dir, $dir_rel, $nlink) = @$SE; - if ($CdLvl > $Level && !$no_chdir) { - my $tmp; - if ($Is_VMS) { - $tmp = '[' . ('-' x ($CdLvl-$Level)) . ']'; - } - else { - $tmp = join('/',('..') x ($CdLvl-$Level)); - } - die "Can't cd to $tmp from $dir_name: $!" - unless chdir ($tmp); - $CdLvl = $Level; - } - - if ($Is_Win32) { - $dir_name = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$} - ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"); - $dir_pref = "$dir_name/"; - } - elsif ($^O eq 'VMS') { + while ( defined ($SE = pop @Stack) ) { + ($Level, $p_dir, $dir_rel, $nlink) = @$SE; + if ($CdLvl > $Level && !$no_chdir) { + my $tmp; + if ($Is_VMS) { + $tmp = '[' . ('-' x ($CdLvl-$Level)) . ']'; + } + else { + $tmp = join('/',('..') x ($CdLvl-$Level)); + } + die "Can't cd to $tmp from $dir_name: $!" + unless chdir ($tmp); + $CdLvl = $Level; + } + + if ($^O eq 'VMS') { if ($p_dir =~ m/[\]>]+$/) { $dir_name = $p_dir; $dir_name =~ s/([\]>]+)$/.$dir_rel$1/; @@ -486,34 +489,34 @@ sub _find_dir($$$) { $dir_name = "$p_dir/$dir_rel"; $dir_pref = "$dir_name/"; } - } - else { - $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); - $dir_pref = "$dir_name/"; - } - - if ( $nlink == -2 ) { - $name = $dir = $p_dir; # $File::Find::name / dir + } + else { + $dir_name = _is_root($p_dir) ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"; + $dir_pref = "$dir_name/"; + } + + if ( $nlink == -2 ) { + $name = $dir = $p_dir; # $File::Find::name / dir $_ = $File::Find::current_dir; - $post_process->(); # End-of-directory processing - } - elsif ( $nlink < 0 ) { # must be finddepth, report dirname now - $name = $dir_name; - if ( substr($name,-2) eq '/.' ) { - substr($name, length($name) == 2 ? -1 : -2) = ''; - } - $dir = $p_dir; - $_ = ($no_chdir ? $dir_name : $dir_rel ); - if ( substr($_,-2) eq '/.' ) { - substr($_, length($_) == 2 ? -1 : -2) = ''; - } - { $wanted_callback->() }; # protect against wild "next" - } - else { - push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; - last; - } - } + $post_process->(); # End-of-directory processing + } + elsif ( $nlink < 0 ) { # must be finddepth, report dirname now + $name = $dir_name; + if ( substr($name,-2) eq '/.' ) { + substr($name, length($name) == 2 ? -1 : -2) = ''; + } + $dir = $p_dir; + $_ = ($no_chdir ? $dir_name : $dir_rel ); + if ( substr($_,-2) eq '/.' ) { + substr($_, length($_) == 2 ? -1 : -2) = ''; + } + { $wanted_callback->() }; # protect against wild "next" + } + else { + push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; + last; + } + } } } @@ -540,172 +543,172 @@ sub _find_dir_symlnk($$$) { my $tainted = 0; my $ok = 1; - $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" ); - $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" ); + $dir_pref = _is_root($p_dir) ? $p_dir : "$p_dir/"; + $loc_pref = _is_root($dir_loc) ? $dir_loc : "$dir_loc/"; local ($dir, $name, $fullname, $prune); unless ($no_chdir) { - # untaint the topdir - if (( $untaint ) && (is_tainted($dir_loc) )) { - ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted - # once untainted, $updir_loc is pushed on the stack (as parent directory); - # hence, we don't need to untaint the parent directory every time we chdir - # to it later - unless (defined $updir_loc) { - if ($untaint_skip == 0) { - die "directory $dir_loc is still tainted"; - } - else { - return; - } - } - } - $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir); - unless ($ok) { - warnings::warnif "Can't cd to $updir_loc: $!\n"; - return; - } + # untaint the topdir + if (( $untaint ) && (is_tainted($dir_loc) )) { + ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted + # once untainted, $updir_loc is pushed on the stack (as parent directory); + # hence, we don't need to untaint the parent directory every time we chdir + # to it later + unless (defined $updir_loc) { + if ($untaint_skip == 0) { + die "directory $dir_loc is still tainted"; + } + else { + return; + } + } + } + $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir); + unless ($ok) { + warnings::warnif "Can't cd to $updir_loc: $!\n"; + return; + } } push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { - unless ($bydepth) { - # change (back) to parent directory (always untainted) - unless ($no_chdir) { - unless (chdir $updir_loc) { - warnings::warnif "Can't cd to $updir_loc: $!\n"; - next; - } - } - $dir= $p_dir; # $File::Find::dir - $name= $dir_name; # $File::Find::name - $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ - $fullname= $dir_loc; # $File::Find::fullname - # prune may happen here - $prune= 0; - lstat($_); # make sure file tests with '_' work - { $wanted_callback->() }; # protect against wild "next" - next if $prune; - } - - # change to that directory - unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { - $updir_loc = $dir_loc; - if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) { - # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir - ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; - unless (defined $updir_loc) { - if ($untaint_skip == 0) { - die "directory $dir_loc is still tainted"; - } - else { - next; - } - } - } - unless (chdir $updir_loc) { - warnings::warnif "Can't cd to $updir_loc: $!\n"; - next; - } - } - - $dir = $dir_name; # $File::Find::dir - - # Get the list of files in the current directory. - my $dh; - unless (opendir $dh, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { - warnings::warnif "Can't opendir($dir_loc): $!\n"; - next; - } - @filenames = readdir $dh; - closedir($dh); - - for my $FN (@filenames) { - if ($Is_VMS) { - # Big hammer here - Compensate for VMS trailing . and .dir - # No win situation until this is changed, but this - # will handle the majority of the cases with breaking the fewest. - - $FN =~ s/\.dir\z//i; - $FN =~ s#\.$## if ($FN ne '.'); - } - next if $FN =~ $File::Find::skip_pattern; - - # follow symbolic links / do an lstat - $new_loc = Follow_SymLink($loc_pref.$FN); - - # ignore if invalid symlink - unless (defined $new_loc) { - if (!defined -l _ && $dangling_symlinks) { + unless ($bydepth) { + # change (back) to parent directory (always untainted) + unless ($no_chdir) { + unless (chdir $updir_loc) { + warnings::warnif "Can't cd to $updir_loc: $!\n"; + next; + } + } + $dir= $p_dir; # $File::Find::dir + $name= $dir_name; # $File::Find::name + $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ + $fullname= $dir_loc; # $File::Find::fullname + # prune may happen here + $prune= 0; + lstat($_); # make sure file tests with '_' work + { $wanted_callback->() }; # protect against wild "next" + next if $prune; + } + + # change to that directory + unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { + $updir_loc = $dir_loc; + if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) { + # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir + ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; + unless (defined $updir_loc) { + if ($untaint_skip == 0) { + die "directory $dir_loc is still tainted"; + } + else { + next; + } + } + } + unless (chdir $updir_loc) { + warnings::warnif "Can't cd to $updir_loc: $!\n"; + next; + } + } + + $dir = $dir_name; # $File::Find::dir + + # Get the list of files in the current directory. + my $dh; + unless (opendir $dh, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { + warnings::warnif "Can't opendir($dir_loc): $!\n"; + next; + } + @filenames = readdir $dh; + closedir($dh); + + for my $FN (@filenames) { + if ($Is_VMS) { + # Big hammer here - Compensate for VMS trailing . and .dir + # No win situation until this is changed, but this + # will handle the majority of the cases with breaking the fewest. + + $FN =~ s/\.dir\z//i; + $FN =~ s#\.$## if ($FN ne '.'); + } + next if $FN =~ $File::Find::skip_pattern; + + # follow symbolic links / do an lstat + $new_loc = Follow_SymLink($loc_pref.$FN); + + # ignore if invalid symlink + unless (defined $new_loc) { + if (!defined -l _ && $dangling_symlinks) { $fullname = undef; - if (ref $dangling_symlinks eq 'CODE') { - $dangling_symlinks->($FN, $dir_pref); - } else { - warnings::warnif "$dir_pref$FN is a dangling symbolic link\n"; - } - } + if (ref $dangling_symlinks eq 'CODE') { + $dangling_symlinks->($FN, $dir_pref); + } else { + warnings::warnif "$dir_pref$FN is a dangling symbolic link\n"; + } + } else { $fullname = $loc_pref . $FN; } - $name = $dir_pref . $FN; - $_ = ($no_chdir ? $name : $FN); - { $wanted_callback->() }; - next; - } - - if (-d _) { - if ($Is_VMS) { - $FN =~ s/\.dir\z//i; - $FN =~ s#\.$## if ($FN ne '.'); - $new_loc =~ s/\.dir\z//i; - $new_loc =~ s#\.$## if ($new_loc ne '.'); - } - push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1]; - } - else { - $fullname = $new_loc; # $File::Find::fullname - $name = $dir_pref . $FN; # $File::Find::name - $_ = ($no_chdir ? $name : $FN); # $_ - { $wanted_callback->() }; # protect against wild "next" - } - } + $name = $dir_pref . $FN; + $_ = ($no_chdir ? $name : $FN); + { $wanted_callback->() }; + next; + } + + if (-d _) { + if ($Is_VMS) { + $FN =~ s/\.dir\z//i; + $FN =~ s#\.$## if ($FN ne '.'); + $new_loc =~ s/\.dir\z//i; + $new_loc =~ s#\.$## if ($new_loc ne '.'); + } + push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1]; + } + else { + $fullname = $new_loc; # $File::Find::fullname + $name = $dir_pref . $FN; # $File::Find::name + $_ = ($no_chdir ? $name : $FN); # $_ + { $wanted_callback->() }; # protect against wild "next" + } + } } continue { - while (defined($SE = pop @Stack)) { - ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE; - $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); - $dir_pref = "$dir_name/"; - $loc_pref = "$dir_loc/"; - if ( $byd_flag < 0 ) { # must be finddepth, report dirname now - unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { - unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted - warnings::warnif "Can't cd to $updir_loc: $!\n"; - next; - } - } - $fullname = $dir_loc; # $File::Find::fullname - $name = $dir_name; # $File::Find::name - if ( substr($name,-2) eq '/.' ) { - substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name - } - $dir = $p_dir; # $File::Find::dir - $_ = ($no_chdir ? $dir_name : $dir_rel); # $_ - if ( substr($_,-2) eq '/.' ) { - substr($_, length($_) == 2 ? -1 : -2) = ''; - } - - lstat($_); # make sure file tests with '_' work - { $wanted_callback->() }; # protect against wild "next" - } - else { - push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth; - last; - } - } + while (defined($SE = pop @Stack)) { + ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE; + $dir_name = _is_root($p_dir) ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"; + $dir_pref = "$dir_name/"; + $loc_pref = "$dir_loc/"; + if ( $byd_flag < 0 ) { # must be finddepth, report dirname now + unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { + unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted + warnings::warnif "Can't cd to $updir_loc: $!\n"; + next; + } + } + $fullname = $dir_loc; # $File::Find::fullname + $name = $dir_name; # $File::Find::name + if ( substr($name,-2) eq '/.' ) { + substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name + } + $dir = $p_dir; # $File::Find::dir + $_ = ($no_chdir ? $dir_name : $dir_rel); # $_ + if ( substr($_,-2) eq '/.' ) { + substr($_, length($_) == 2 ? -1 : -2) = ''; + } + + lstat($_); # make sure file tests with '_' work + { $wanted_callback->() }; # protect against wild "next" + } + else { + push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth; + last; + } + } } } @@ -913,8 +916,6 @@ a dangling symbolic link, then fullname will be set to C. =back -This is a no-op on Win32. - =item C This is similar to I except that it may report some files more @@ -923,8 +924,6 @@ have to be hashed, this is much cheaper both in space and time. If processing a file more than once (by the user's C function) is worse than just taking time, the option I should be used. -This is also a no-op on Win32. - =item C C, which is the default, causes all files which are diff --git a/gnu/usr.bin/perl/ext/File-Find/t/find.t b/gnu/usr.bin/perl/ext/File-Find/t/find.t index add20c26839..b6359d86ae8 100644 --- a/gnu/usr.bin/perl/ext/File-Find/t/find.t +++ b/gnu/usr.bin/perl/ext/File-Find/t/find.t @@ -33,15 +33,21 @@ use Testing qw( symlink_ok dir_path file_path + _cleanup_start ); use Errno (); +use File::Temp qw(tempdir); my %Expect_File = (); # what we expect for $_ my %Expect_Name = (); # what we expect for $File::Find::name/fullname my %Expect_Dir = (); # what we expect for $File::Find::dir my (@files); -my $orig_dir = cwd(); +my $test_root_dir = cwd(); +ok($test_root_dir,"We were able to determine our starting directory"); +my $test_temp_dir = tempdir("FF_find_t_XXXXXX",CLEANUP=>1); +ok($test_temp_dir,"We were able to set up a temp directory"); + # Uncomment this to see where File::Find is chdir-ing to. Helpful for # debugging its little jaunts around the filesystem. @@ -59,8 +65,6 @@ my $orig_dir = cwd(); # }; # } -cleanup(); - ##### Sanity checks ##### # Do find() and finddepth() work correctly with an empty list of # directories? @@ -73,23 +77,34 @@ cleanup(); } # Do find() and finddepth() work correctly in the directory -# from which we start? (Test presumes the presence of 'taint.t' in same +# from which we start? (Test presumes the presence of 'find.t' in same # directory as this test file.) -$::count_taint = 0; -find({wanted => sub { ++$::count_taint if $_ eq 'taint.t'; } }, +my $count_found = 0; +find({wanted => sub { ++$count_found if $_ eq 'find.t'; } }, File::Spec->curdir); -is($::count_taint, 1, "'find' found exactly 1 file named 'taint.t'"); +is($count_found, 1, "'find' found exactly 1 file named 'find.t'"); -$::count_taint = 0; -finddepth({wanted => sub { ++$::count_taint if $_ eq 'taint.t'; } }, +$count_found = 0; +finddepth({wanted => sub { ++$count_found if $_ eq 'find.t'; } }, File::Spec->curdir); -is($::count_taint, 1, "'finddepth' found exactly 1 file named 'taint.t'"); +is($count_found, 1, "'finddepth' found exactly 1 file named 'find.t'"); my $FastFileTests_OK = 0; +my $chdir_error = ""; +chdir($test_temp_dir) + or $chdir_error = "Failed to chdir to '$test_temp_dir': $!"; +is($chdir_error,"","chdir to temp dir '$test_temp_dir' successful") + or die $chdir_error; + sub cleanup { - chdir($orig_dir); + # the following chdirs into $test_root_dir/$test_temp_dir but + # handles various possible edge case errors cleanly. If it returns + # false then we bail out of the cleanup. + _cleanup_start($test_root_dir, $test_temp_dir) + or return; + my $need_updir = 0; if (-d dir_path('for_find')) { $need_updir = 1 if chdir(dir_path('for_find')); @@ -138,6 +153,7 @@ sub cleanup { if (-d dir_path('for_find')) { rmdir dir_path('for_find') or print "# Can't rmdir for_find: $!\n"; } + chdir($test_root_dir) or die "Failed to chdir to '$test_root_dir': $!"; } END { @@ -235,7 +251,6 @@ sub my_postprocess { *file_path_name = \&file_path; ##### Create directories, files and symlinks used in testing ##### - mkdir_ok( dir_path('for_find'), 0770 ); ok( chdir( dir_path('for_find')), "Able to chdir to 'for_find'") or die("Unable to chdir to 'for_find'"); @@ -865,7 +880,7 @@ if ( $symlink_exists ) { if ($^O eq 'MSWin32') { require File::Spec::Win32; - my ($volume) = File::Spec::Win32->splitpath($orig_dir, 1); + my ($volume) = File::Spec::Win32->splitpath($test_root_dir, 1); print STDERR "VOLUME = $volume\n"; ##### ##### @@ -1023,7 +1038,7 @@ if ($^O eq 'MSWin32') { # Check F:F:f correctly handles a root directory path. # Rather than processing the entire drive (!), simply test that the # first file passed to the wanted routine is correct and then bail out. - $orig_dir =~ /^(\w:)/ or die "expected a drive: $orig_dir"; + $test_root_dir =~ /^(\w:)/ or die "expected a drive: $test_root_dir"; my $drive = $1; # Determine the file in the root directory which would be @@ -1050,7 +1065,7 @@ if ($^O eq 'MSWin32') { # Run F:F:f with/without no_chdir for each possible style of root path. # NB. If HOME were "/", then an inadvertent chdir('') would fluke the # expected result, so ensure it is something else: - local $ENV{HOME} = $orig_dir; + local $ENV{HOME} = $test_root_dir; foreach my $no_chdir (0, 1) { foreach my $root_dir ("/", "\\", "$drive/", "$drive\\") { eval { @@ -1060,7 +1075,7 @@ if ($^O eq 'MSWin32') { 'wanted' => sub { -f or return; # the first call is for $root_dir itself. my $got = $File::Find::name; - my $exp = "$root_dir$expected_first_file"; + (my $exp = "$root_dir$expected_first_file") =~ s|\\|/|g; print "# no_chdir=$no_chdir $root_dir '$got'\n"; is($got, $exp, "Win32: Run 'find' with 'no_chdir' set to $no_chdir" ); @@ -1111,5 +1126,4 @@ if ($^O eq 'MSWin32') { like($@, qr/invalid top directory/, "find() correctly died due to undefined top directory"); } - done_testing(); diff --git a/gnu/usr.bin/perl/ext/File-Glob/Glob.pm b/gnu/usr.bin/perl/ext/File-Glob/Glob.pm index 74b6af7504e..f7b89f490a4 100644 --- a/gnu/usr.bin/perl/ext/File-Glob/Glob.pm +++ b/gnu/usr.bin/perl/ext/File-Glob/Glob.pm @@ -33,7 +33,7 @@ $EXPORT_TAGS{bsd_glob} = [@{$EXPORT_TAGS{glob}}]; our @EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob'); -our $VERSION = '1.37'; +our $VERSION = '1.40'; sub import { require Exporter; diff --git a/gnu/usr.bin/perl/ext/File-Glob/Glob.xs b/gnu/usr.bin/perl/ext/File-Glob/Glob.xs index 4e1ae80b722..a65337e9796 100644 --- a/gnu/usr.bin/perl/ext/File-Glob/Glob.xs +++ b/gnu/usr.bin/perl/ext/File-Glob/Glob.xs @@ -99,7 +99,7 @@ iterate(pTHX_ bool(*globber)(pTHX_ AV *entries, const char *pat, STRLEN len, boo } else { pat = SvPV_nomg(patsv,len); - is_utf8 = !!SvUTF8(patsv); + is_utf8 = cBOOL(SvUTF8(patsv)); /* the lower-level code expects a null-terminated string */ if (!SvPOK(patsv) || pat != SvPVX(patsv) || pat[len] != '\0') { SV *newpatsv = newSVpvn_flags(pat, len, SVs_TEMP); @@ -451,11 +451,13 @@ BOOT: { dMY_CXT; MY_CXT.x_GLOB_ENTRIES = NULL; - MY_CXT.x_GLOB_OLD_OPHOOK = PL_opfreehook; #ifdef USE_ITHREADS MY_CXT.interp = aTHX; #endif - PL_opfreehook = glob_ophook; + if(!MY_CXT.x_GLOB_OLD_OPHOOK) { + MY_CXT.x_GLOB_OLD_OPHOOK = PL_opfreehook; + PL_opfreehook = glob_ophook; + } } } diff --git a/gnu/usr.bin/perl/ext/File-Glob/bsd_glob.c b/gnu/usr.bin/perl/ext/File-Glob/bsd_glob.c index 8fab443d2c6..3d402e0b457 100644 --- a/gnu/usr.bin/perl/ext/File-Glob/bsd_glob.c +++ b/gnu/usr.bin/perl/ext/File-Glob/bsd_glob.c @@ -81,9 +81,9 @@ static char sscsid[]= "$OpenBSD: glob.c,v 1.8.10.1 2001/04/10 jason Exp $"; #ifndef MAXPATHLEN # ifdef PATH_MAX -# define MAXPATHLEN PATH_MAX +# define MAXPATHLEN PATH_MAX # else -# define MAXPATHLEN 1024 +# define MAXPATHLEN 1024 # endif #endif @@ -91,71 +91,71 @@ static char sscsid[]= "$OpenBSD: glob.c,v 1.8.10.1 2001/04/10 jason Exp $"; #ifndef ARG_MAX # ifdef _SC_ARG_MAX -# define ARG_MAX (sysconf(_SC_ARG_MAX)) +# define ARG_MAX (sysconf(_SC_ARG_MAX)) # else # ifdef _POSIX_ARG_MAX -# define ARG_MAX _POSIX_ARG_MAX +# define ARG_MAX _POSIX_ARG_MAX # else # ifdef WIN32 -# define ARG_MAX 14500 /* from VC's limits.h */ +# define ARG_MAX 14500 /* from VC's limits.h */ # else -# define ARG_MAX 4096 /* from POSIX, be conservative */ +# define ARG_MAX 4096 /* from POSIX, be conservative */ # endif # endif # endif #endif -#define BG_DOLLAR '$' -#define BG_DOT '.' -#define BG_EOS '\0' -#define BG_LBRACKET '[' -#define BG_NOT '!' -#define BG_QUESTION '?' -#define BG_QUOTE '\\' -#define BG_RANGE '-' -#define BG_RBRACKET ']' -#define BG_SEP '/' +#define BG_DOLLAR '$' +#define BG_DOT '.' +#define BG_EOS '\0' +#define BG_LBRACKET '[' +#define BG_NOT '!' +#define BG_QUESTION '?' +#define BG_QUOTE '\\' +#define BG_RANGE '-' +#define BG_RBRACKET ']' +#define BG_SEP '/' #ifdef DOSISH #define BG_SEP2 '\\' #endif -#define BG_STAR '*' -#define BG_TILDE '~' -#define BG_UNDERSCORE '_' -#define BG_LBRACE '{' -#define BG_RBRACE '}' -#define BG_SLASH '/' -#define BG_COMMA ',' +#define BG_STAR '*' +#define BG_TILDE '~' +#define BG_UNDERSCORE '_' +#define BG_LBRACE '{' +#define BG_RBRACE '}' +#define BG_SLASH '/' +#define BG_COMMA ',' #ifndef GLOB_DEBUG -#define M_QUOTE 0x8000 -#define M_PROTECT 0x4000 -#define M_MASK 0xffff -#define M_ASCII 0x00ff +#define M_QUOTE 0x8000 +#define M_PROTECT 0x4000 +#define M_MASK 0xffff +#define M_ASCII 0x00ff typedef U16 Char; #else -#define M_QUOTE 0x80 -#define M_PROTECT 0x40 -#define M_MASK 0xff -#define M_ASCII 0x7f +#define M_QUOTE 0x80 +#define M_PROTECT 0x40 +#define M_MASK 0xff +#define M_ASCII 0x7f typedef U8 Char; #endif /* !GLOB_DEBUG */ -#define CHAR(c) ((Char)((c)&M_ASCII)) -#define META(c) ((Char)((c)|M_QUOTE)) -#define M_ALL META('*') -#define M_END META(']') -#define M_NOT META('!') -#define M_ONE META('?') -#define M_RNG META('-') -#define M_SET META('[') -#define ismeta(c) (((c)&M_QUOTE) != 0) +#define CHAR(c) ((Char)((c)&M_ASCII)) +#define META(c) ((Char)((c)|M_QUOTE)) +#define M_ALL META('*') +#define M_END META(']') +#define M_NOT META('!') +#define M_ONE META('?') +#define M_RNG META('-') +#define M_SET META('[') +#define ismeta(c) (((c)&M_QUOTE) != 0) static int compare(const void *, const void *); @@ -204,7 +204,7 @@ my_readdir(DIR *d) } # else -# define my_readdir readdir +# define my_readdir readdir # endif diff --git a/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.pm b/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.pm index fe422a592ae..45a1a93cd5d 100644 --- a/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.pm +++ b/gnu/usr.bin/perl/ext/GDBM_File/GDBM_File.pm @@ -733,7 +733,7 @@ require XSLoader; ); # This module isn't dual life, so no need for dev version numbers. -$VERSION = '1.23'; +$VERSION = '1.24'; our $gdbm_errno; diff --git a/gnu/usr.bin/perl/ext/Hash-Util/Util.xs b/gnu/usr.bin/perl/ext/Hash-Util/Util.xs index 4e49a095e32..b266f4a81c1 100644 --- a/gnu/usr.bin/perl/ext/Hash-Util/Util.xs +++ b/gnu/usr.bin/perl/ext/Hash-Util/Util.xs @@ -115,7 +115,7 @@ hash_traversal_mask(rhv, ...) if (items>1) { hv_rand_set(hv, SvUV(ST(1))); } - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { XSRETURN_UV(HvRAND_get(hv)); } else { XSRETURN_UNDEF; diff --git a/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm b/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm index 0b42922c966..a0da8ba1b0b 100644 --- a/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm +++ b/gnu/usr.bin/perl/ext/Hash-Util/lib/Hash/Util.pm @@ -42,7 +42,7 @@ our @EXPORT_OK = qw( BEGIN { # make sure all our XS routines are available early so their prototypes # are correctly applied in the following code. - our $VERSION = '0.28'; + our $VERSION = '0.30'; require XSLoader; XSLoader::load(); } @@ -92,7 +92,7 @@ Hash::Util - A selection of general-utility hash subroutines hash_traversal_mask ); - %hash = (foo => 42, bar => 23); + my %hash = (foo => 42, bar => 23); # Ways to restrict a hash lock_keys(%hash); lock_keys(%hash, @keyset); diff --git a/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm b/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm index fd34a8a29ff..8ff6eda2d73 100644 --- a/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm +++ b/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.pm @@ -70,7 +70,7 @@ our @EXPORT_OK = qw( YESSTR ); -our $VERSION = '0.21'; +our $VERSION = '0.22'; XSLoader::load(); @@ -180,8 +180,11 @@ For the eras based on typically some ruler, such as the Japanese Emperor =head2 For systems without C -Starting in Perl 5.28, this module is available even on systems that lack a -native C. On such systems, it uses various methods to construct +This module originally was just a wrapper for the libc C +function, and did not work on systems lacking it, such as Windows. + +Starting in Perl 5.28, this module works on all platforms. When +C is not available, it uses various methods to construct what that function, if present, would return. But there are potential glitches. These are the items that could be different: @@ -193,8 +196,11 @@ Unimplemented, so returns C<"">. =item C -Unimplemented, except on Windows, due to the vagaries of vendor locale names, -returning C<""> on non-Windows. +This should work properly for Windows platforms. On almost all other modern +platforms, it will reliably return "UTF-8" if that is the code set. +Otherwise, it depends on the locale's name. If that is of the form +C, it will assume C is the code set; and it also knows about the +two locales "C" and "POSIX". If none of those apply it returns C<"">. =item C @@ -272,8 +278,6 @@ workaround for this; patches welcome: see L. L, L, L, L. -The langinfo() function is just a wrapper for the C nl_langinfo() interface. - =head1 AUTHOR Jarkko Hietaniemi, Ejhi@hut.fiE. Now maintained by Perl 5 porters. diff --git a/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.xs b/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.xs index 904b424b192..3b05e9f7917 100644 --- a/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.xs +++ b/gnu/usr.bin/perl/ext/I18N-Langinfo/Langinfo.xs @@ -25,8 +25,8 @@ SV* langinfo(code) int code PREINIT: - const char * value; - STRLEN len; + const char * value; + utf8ness_t is_utf8; PROTOTYPE: _ CODE: #ifdef HAS_NL_LANGINFO @@ -36,64 +36,8 @@ langinfo(code) } else #endif { - value = Perl_langinfo(code); - len = strlen(value); - RETVAL = newSVpvn(Perl_langinfo(code), len); - - /* Now see if the UTF-8 flag should be turned on */ -#ifdef USE_LOCALE_CTYPE /* No utf8 strings if not using LC_CTYPE */ - - /* If 'value' is ASCII or not legal UTF-8, the flag doesn't get - * turned on, so skip the followin code */ - if (is_utf8_non_invariant_string((U8 *) value, len)) { - int category; - - /* Check if the locale is a UTF-8 one. The returns from - * Perl_langinfo() are in different locale categories, so check the - * category corresponding to this item */ - switch (code) { - - /* This should always return ASCII, so we could instead - * legitimately panic here, but soldier on */ - case CODESET: - category = LC_CTYPE; - break; - - case RADIXCHAR: - case THOUSEP: -# ifdef USE_LOCALE_NUMERIC - category = LC_NUMERIC; -# else - /* Not ideal, but the best we can do on such a platform */ - category = LC_CTYPE; -# endif - break; - - case CRNCYSTR: -# ifdef USE_LOCALE_MONETARY - category = LC_MONETARY; -# else - category = LC_CTYPE; -# endif - break; - - default: -# ifdef USE_LOCALE_TIME - category = LC_TIME; -# else - category = LC_CTYPE; -# endif - break; - } - - /* Here the return is legal UTF-8. Turn on that flag if the - * locale is UTF-8. (Otherwise, could just be a coincidence.) - * */ - if (_is_cur_LC_category_utf8(category)) { - SvUTF8_on(RETVAL); - } - } -#endif /* USE_LOCALE_CTYPE */ + value = Perl_langinfo8(code, &is_utf8); + RETVAL = newSVpvn_utf8(value, strlen(value), is_utf8 == UTF8NESS_YES); } OUTPUT: diff --git a/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL b/gnu/usr.bin/perl/ext/NDBM_File/Makefile.PL index 539a377488f..fe2cb407f57 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', ); diff --git a/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.pm b/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.pm index ead745da24b..316c92df0bd 100644 --- a/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.pm +++ b/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.pm @@ -7,7 +7,7 @@ require Tie::Hash; require XSLoader; our @ISA = qw(Tie::Hash); -our $VERSION = "1.15"; +our $VERSION = "1.16"; XSLoader::load(); diff --git a/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.xs b/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.xs index eed671a6fcc..243a618a36d 100644 --- a/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.xs +++ b/gnu/usr.bin/perl/ext/NDBM_File/NDBM_File.xs @@ -97,6 +97,12 @@ ndbm_FETCH(db, key) NDBM_File db datum_key key +#define ndbm_EXISTS(db,key) dbm_fetch(db->dbp,key).dptr +bool +ndbm_EXISTS(db, key) + NDBM_File db + datum_key key + #define ndbm_STORE(db,key,value,flags) dbm_store(db->dbp,key,value,flags) int ndbm_STORE(db, key, value, flags = DBM_REPLACE) diff --git a/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.pm b/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.pm index 1b49440f3a0..874ccf0e4de 100644 --- a/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.pm +++ b/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.pm @@ -7,7 +7,7 @@ require Tie::Hash; require XSLoader; our @ISA = qw(Tie::Hash); -our $VERSION = "1.17"; +our $VERSION = "1.18"; XSLoader::load(); diff --git a/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.xs b/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.xs index 38e6dbf446a..2675f7e9e33 100644 --- a/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.xs +++ b/gnu/usr.bin/perl/ext/ODBM_File/ODBM_File.xs @@ -28,13 +28,13 @@ datum nextkey(datum key); #ifdef DBM_BUG_DUPLICATE_FREE /* - * DBM on at least Ultrix and HPUX call dbmclose() from dbminit(), + * DBM on at least HPUX call dbmclose() from dbminit(), * resulting in duplicate free() because dbmclose() does *not* * check if it has already been called for this DBM. * If some malloc/free calls have been done between dbmclose() and * the next dbminit(), the memory might be used for something else when * it is freed. - * Verified to work on ultrix4.3. Probably will work on HP/UX. + * Probably will work on HP/UX. * Set DBM_BUG_DUPLICATE_FREE in the extension hint file. */ /* Close the previous dbm, and fail to open a new dbm */ diff --git a/gnu/usr.bin/perl/ext/ODBM_File/hints/ultrix.pl b/gnu/usr.bin/perl/ext/ODBM_File/hints/ultrix.pl deleted file mode 100644 index b9b99ab8b5b..00000000000 --- a/gnu/usr.bin/perl/ext/ODBM_File/hints/ultrix.pl +++ /dev/null @@ -1,4 +0,0 @@ -# Try to work around "bad free" messages. See note in ODBM_File.xs. -# Andy Dougherty -# Sun Sep 8 12:57:52 EDT 1996 -$self->{CCFLAGS} = $Config{ccflags} . ' -DDBM_BUG_DUPLICATE_FREE' ; diff --git a/gnu/usr.bin/perl/ext/Opcode/Opcode.pm b/gnu/usr.bin/perl/ext/Opcode/Opcode.pm index 051fad78912..b4aead9e401 100644 --- a/gnu/usr.bin/perl/ext/Opcode/Opcode.pm +++ b/gnu/usr.bin/perl/ext/Opcode/Opcode.pm @@ -1,31 +1,21 @@ -package Opcode; - -use 5.006_001; +package Opcode 1.64; use strict; -our($VERSION, @ISA, @EXPORT_OK); - -$VERSION = "1.57"; - use Carp; use Exporter 'import'; use XSLoader; -BEGIN { - @EXPORT_OK = qw( +sub opset (;@); +sub opset_to_hex ($); +sub opdump (;$); +use subs our @EXPORT_OK = qw( opset ops_to_opset opset_to_ops opset_to_hex invert_opset empty_opset full_opset opdesc opcodes opmask define_optag opmask_add verify_opset opdump - ); -} - -sub opset (;@); -sub opset_to_hex ($); -sub opdump (;$); -use subs @EXPORT_OK; +); XSLoader::load(); @@ -312,10 +302,10 @@ invert_opset function. null stub scalar pushmark wantarray const defined undef - rv2sv sassign + rv2sv sassign padsv_store rv2av aassign aelem aelemfast aelemfast_lex aslice kvaslice - av2arylen + av2arylen aelemfastlex_store rv2hv helem hslice kvhslice each values keys exists delete aeach akeys avalues multideref argelem argdefelem argcheck @@ -342,10 +332,12 @@ invert_opset function. list lslice splice push pop shift unshift reverse cond_expr flip flop andassign orassign dorassign and or dor xor + helemexistsor warn die lineseq nextstate scope enter leave rv2cv anoncode prototype coreargs avhvswitch anonconst + emptyavhv entersub leavesub leavesublv return method method_named method_super method_redir method_redir_super @@ -359,6 +351,8 @@ invert_opset function. leaveeval -- needed for Safe to operate, is safe without entereval + methstart initfield + =item :base_mem These memory related ops are not included in :base_core because they @@ -451,6 +445,8 @@ These are a hotchpotch of opcodes still waiting to be considered ceil floor + is_tainted + =item :base_math These ops are not included in :base_core because of the risk of them being diff --git a/gnu/usr.bin/perl/ext/Opcode/Opcode.xs b/gnu/usr.bin/perl/ext/Opcode/Opcode.xs index 44a6d7c3543..bdd192f7633 100644 --- a/gnu/usr.bin/perl/ext/Opcode/Opcode.xs +++ b/gnu/usr.bin/perl/ext/Opcode/Opcode.xs @@ -12,7 +12,6 @@ typedef struct { HV * x_op_named_bits; /* cache shared for whole process */ SV * x_opset_all; /* mask with all bits set */ - IV x_opset_len; /* length of opmasks in bytes */ #ifdef OPCODE_DEBUG int x_opcode_debug; /* unused warn() emitting debugging code */ #endif @@ -20,9 +19,11 @@ typedef struct { START_MY_CXT +/* length of opmasks in bytes */ +static const STRLEN opset_len = (PL_maxo + 7) / 8; + #define op_named_bits (MY_CXT.x_op_named_bits) #define opset_all (MY_CXT.x_opset_all) -#define opset_len (MY_CXT.x_opset_len) #ifdef OPCODE_DEBUG # define opcode_debug (MY_CXT.x_opcode_debug) #else @@ -50,13 +51,13 @@ op_names_init(pTHX) { int i; STRLEN len; - char **op_names; + const char *const *op_names; U8 *bitmap; dMY_CXT; op_named_bits = newHV(); hv_ksplit(op_named_bits, PL_maxo); - op_names = get_op_names(); + op_names = PL_op_name; for(i=0; i < PL_maxo; ++i) { SV * const sv = newSViv(i); SvREADONLY_on(sv); @@ -128,7 +129,6 @@ static SV * new_opset(pTHX_ SV *old_opset) { SV *opset; - dMY_CXT; if (old_opset) { verify_opset(aTHX_ old_opset,1); @@ -149,11 +149,10 @@ static int verify_opset(pTHX_ SV *opset, int fatal) { const char *err = NULL; - dMY_CXT; if (!SvOK(opset)) err = "undefined"; else if (!SvPOK(opset)) err = "wrong type"; - else if (SvCUR(opset) != (STRLEN)opset_len) err = "wrong size"; + else if (SvCUR(opset) != opset_len) err = "wrong size"; if (err && fatal) { croak("Invalid opset: %s", err); } @@ -164,8 +163,6 @@ verify_opset(pTHX_ SV *opset, int fatal) static void set_opset_bits(pTHX_ char *bitmap, SV *bitspec, int on, const char *opname) { - dMY_CXT; - if (SvIOK(bitspec)) { const int myopcode = SvIV(bitspec); const int offset = myopcode >> 3; @@ -180,7 +177,7 @@ set_opset_bits(pTHX_ char *bitmap, SV *bitspec, int on, const char *opname) else bitmap[offset] &= ~(1 << bit); } - else if (SvPOK(bitspec) && SvCUR(bitspec) == (STRLEN)opset_len) { + else if (SvPOK(bitspec) && SvCUR(bitspec) == opset_len) { STRLEN len; const char * const specbits = SvPV(bitspec, len); @@ -200,11 +197,10 @@ set_opset_bits(pTHX_ char *bitmap, SV *bitspec, int on, const char *opname) static void opmask_add(pTHX_ SV *opset) /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF */ { - int i,j; + int j; char *bitmask; STRLEN len; int myopcode = 0; - dMY_CXT; verify_opset(aTHX_ opset,1); /* croaks on bad opset */ @@ -214,7 +210,7 @@ opmask_add(pTHX_ SV *opset) /* THE ONLY FUNCTION TO EDIT PL_op_mask ITSELF */ /* OPCODES ALREADY MASKED ARE NEVER UNMASKED. See opmask_addlocal() */ bitmask = SvPV(opset, len); - for (i=0; i < opset_len; i++) { + for (STRLEN i=0; i < opset_len; i++) { const U16 bits = bitmask[i]; if (!bits) { /* optimise for sparse masks */ myopcode += 8; @@ -258,7 +254,6 @@ BOOT: { MY_CXT_INIT; STATIC_ASSERT_STMT(PL_maxo < OP_MASK_BUF_SIZE); - opset_len = (PL_maxo + 7) / 8; if (opcode_debug >= 1) warn("opset_len %ld\n", (long)opset_len); op_names_init(aTHX); @@ -353,7 +348,6 @@ invert_opset(opset) CODE: { char *bitmap; - dMY_CXT; STRLEN len = opset_len; opset = sv_2mortal(new_opset(aTHX_ opset)); /* verify and clone opset */ @@ -374,10 +368,10 @@ opset_to_ops(opset, desc = 0) PPCODE: { STRLEN len; - int i, j, myopcode; + STRLEN i; + int j, myopcode; const char * const bitmap = SvPV(opset, len); - char **names = (desc) ? get_op_descs() : get_op_names(); - dMY_CXT; + const char *const *names = (desc) ? PL_op_desc : PL_op_name; verify_opset(aTHX_ opset,1); for (myopcode=0, i=0; i < opset_len; i++) { @@ -467,8 +461,7 @@ PPCODE: int i; STRLEN len; SV **args; - char **op_desc = get_op_descs(); - dMY_CXT; + const char *const *op_desc = PL_op_desc; /* copy args to a scratch area since we may push output values onto */ /* the stack faster than we read values off it if masks are used. */ @@ -483,8 +476,9 @@ PPCODE: XPUSHs(newSVpvn_flags(op_desc[myopcode], strlen(op_desc[myopcode]), SVs_TEMP)); } - else if (SvPOK(bitspec) && SvCUR(bitspec) == (STRLEN)opset_len) { - int b, j; + else if (SvPOK(bitspec) && SvCUR(bitspec) == opset_len) { + STRLEN b; + int j; const char * const bitmap = SvPV_nolen_const(bitspec); int myopcode = 0; for (b=0; b < opset_len; b++) { diff --git a/gnu/usr.bin/perl/ext/POSIX/Makefile.PL b/gnu/usr.bin/perl/ext/POSIX/Makefile.PL index 462b8ede017..cc6011d7b86 100644 --- a/gnu/usr.bin/perl/ext/POSIX/Makefile.PL +++ b/gnu/usr.bin/perl/ext/POSIX/Makefile.PL @@ -51,7 +51,7 @@ my @names = EUSERS EWOULDBLOCK EXDEV FILENAME_MAX F_OK HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR INLCR INPCK INT_MAX INT_MIN ISIG ISTRIP IXOFF IXON LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION LC_MEASUREMENT - LC_MESSAGES LC_MONETARY LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME + LC_MESSAGES LC_MONETARY LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_NAME LINK_MAX LONG_MAX LONG_MIN L_ctermid L_cuserid MAX_CANON MAX_INPUT MB_LEN_MAX MSG_CTRUNC MSG_DONTROUTE MSG_EOR MSG_OOB MSG_PEEK MSG_TRUNC MSG_WAITALL NAME_MAX NCCS NGROUPS_MAX NOFLSH OPEN_MAX OPOST diff --git a/gnu/usr.bin/perl/ext/POSIX/POSIX.xs b/gnu/usr.bin/perl/ext/POSIX/POSIX.xs index 0f004cbbcfd..90c8fcf50d4 100644 --- a/gnu/usr.bin/perl/ext/POSIX/POSIX.xs +++ b/gnu/usr.bin/perl/ext/POSIX/POSIX.xs @@ -1,6 +1,9 @@ #define PERL_EXT_POSIX #define PERL_EXT +#if defined(_WIN32) && defined(__GNUC__) /* mingw compiler */ +#define _POSIX_ +#endif #define PERL_NO_GET_CONTEXT #include "EXTERN.h" @@ -1018,7 +1021,7 @@ static NV my_log2(NV x) /* XXX nexttoward */ /* GCC's FLT_ROUNDS is (wrongly) hardcoded to 1 (at least up to 11.x) */ -#if defined(PERL_IS_GCC) /* && __GNUC__ < XXX */ +#if defined(PERL_IS_GCC) /* && __GNUC__ < XXX */ || (defined(__clang__) && defined(__s390x__)) # define BROKEN_FLT_ROUNDS #endif @@ -1341,9 +1344,6 @@ static NV_PAYLOAD_TYPE S_getpayload(NV nv) #include #endif #include -#ifndef __ultrix__ -#include -#endif #include #include #include @@ -1560,77 +1560,6 @@ END_EXTERN_C #endif #endif -#if ! defined(HAS_LOCALECONV) && ! defined(HAS_LOCALECONV_L) -# define localeconv() not_here("localeconv") -#else -struct lconv_offset { - const char *name; - size_t offset; -}; - -static const struct lconv_offset lconv_strings[] = { -#ifdef USE_LOCALE_NUMERIC - {"decimal_point", STRUCT_OFFSET(struct lconv, decimal_point)}, - {"thousands_sep", STRUCT_OFFSET(struct lconv, thousands_sep)}, -# ifndef NO_LOCALECONV_GROUPING - {"grouping", STRUCT_OFFSET(struct lconv, grouping)}, -# endif -#endif -#ifdef USE_LOCALE_MONETARY - {"int_curr_symbol", STRUCT_OFFSET(struct lconv, int_curr_symbol)}, - {"currency_symbol", STRUCT_OFFSET(struct lconv, currency_symbol)}, - {"mon_decimal_point", STRUCT_OFFSET(struct lconv, mon_decimal_point)}, -# ifndef NO_LOCALECONV_MON_THOUSANDS_SEP - {"mon_thousands_sep", STRUCT_OFFSET(struct lconv, mon_thousands_sep)}, -# endif -# ifndef NO_LOCALECONV_MON_GROUPING - {"mon_grouping", STRUCT_OFFSET(struct lconv, mon_grouping)}, -# endif - {"positive_sign", STRUCT_OFFSET(struct lconv, positive_sign)}, - {"negative_sign", STRUCT_OFFSET(struct lconv, negative_sign)}, -#endif - {NULL, 0} -}; - -#ifdef USE_LOCALE_NUMERIC - -/* The Linux man pages say these are the field names for the structure - * components that are LC_NUMERIC; the rest being LC_MONETARY */ -# define isLC_NUMERIC_STRING(name) ( strEQ(name, "decimal_point") \ - || strEQ(name, "thousands_sep") \ - \ - /* There should be no harm done \ - * checking for this, even if \ - * NO_LOCALECONV_GROUPING */ \ - || strEQ(name, "grouping")) -#else -# define isLC_NUMERIC_STRING(name) (0) -#endif - -static const struct lconv_offset lconv_integers[] = { -#ifdef USE_LOCALE_MONETARY - {"int_frac_digits", STRUCT_OFFSET(struct lconv, int_frac_digits)}, - {"frac_digits", STRUCT_OFFSET(struct lconv, frac_digits)}, - {"p_cs_precedes", STRUCT_OFFSET(struct lconv, p_cs_precedes)}, - {"p_sep_by_space", STRUCT_OFFSET(struct lconv, p_sep_by_space)}, - {"n_cs_precedes", STRUCT_OFFSET(struct lconv, n_cs_precedes)}, - {"n_sep_by_space", STRUCT_OFFSET(struct lconv, n_sep_by_space)}, - {"p_sign_posn", STRUCT_OFFSET(struct lconv, p_sign_posn)}, - {"n_sign_posn", STRUCT_OFFSET(struct lconv, n_sign_posn)}, -#ifdef HAS_LC_MONETARY_2008 - {"int_p_cs_precedes", STRUCT_OFFSET(struct lconv, int_p_cs_precedes)}, - {"int_p_sep_by_space", STRUCT_OFFSET(struct lconv, int_p_sep_by_space)}, - {"int_n_cs_precedes", STRUCT_OFFSET(struct lconv, int_n_cs_precedes)}, - {"int_n_sep_by_space", STRUCT_OFFSET(struct lconv, int_n_sep_by_space)}, - {"int_p_sign_posn", STRUCT_OFFSET(struct lconv, int_p_sign_posn)}, - {"int_n_sign_posn", STRUCT_OFFSET(struct lconv, int_n_sign_posn)}, -#endif -#endif - {NULL, 0} -}; - -#endif /* HAS_LOCALECONV */ - #ifdef HAS_LONG_DOUBLE # if LONG_DOUBLESIZE > NVSIZE # undef HAS_LONG_DOUBLE /* XXX until we figure out how to use them */ @@ -1819,7 +1748,12 @@ my_tzset(pTHX) #endif fix_win32_tzenv(); #endif + TZSET_LOCK; tzset(); + TZSET_UNLOCK; + /* After the unlock, another thread could change things, but this is a + * problem with the Posix API generally, not Perl; and the result will be + * self-consistent */ } MODULE = SigSet PACKAGE = POSIX::SigSet PREFIX = sig @@ -2124,138 +2058,10 @@ HV * localeconv() CODE: #ifndef HAS_LOCALECONV - localeconv(); /* A stub to call not_here(). */ -#else - struct lconv *lcbuf; -# if defined(USE_ITHREADS) \ - && defined(HAS_POSIX_2008_LOCALE) \ - && defined(HAS_LOCALECONV_L) /* Prefer this thread-safe version */ - bool do_free = FALSE; - locale_t cur = NULL; -# elif defined(TS_W32_BROKEN_LOCALECONV) - const char * save_global; - const char * save_thread; -# endif - DECLARATION_FOR_LC_NUMERIC_MANIPULATION; - - /* localeconv() deals with both LC_NUMERIC and LC_MONETARY, but - * LC_MONETARY is already in the correct locale */ -# ifdef USE_LOCALE_MONETARY - - const bool is_monetary_utf8 = _is_cur_LC_category_utf8(LC_MONETARY); -# endif -# ifdef USE_LOCALE_NUMERIC - - bool is_numeric_utf8; - - STORE_LC_NUMERIC_FORCE_TO_UNDERLYING(); - - is_numeric_utf8 = _is_cur_LC_category_utf8(LC_NUMERIC); -# endif - - RETVAL = newHV(); - sv_2mortal((SV*)RETVAL); -# if defined(USE_ITHREADS) \ - && defined(HAS_POSIX_2008_LOCALE) \ - && defined(HAS_LOCALECONV_L) - - cur = uselocale((locale_t) 0); - if (cur == LC_GLOBAL_LOCALE) { - cur = duplocale(LC_GLOBAL_LOCALE); - do_free = TRUE; - } - - lcbuf = localeconv_l(cur); -# else - LOCALECONV_LOCK; /* Prevent interference with other threads using - localeconv() */ -# ifdef TS_W32_BROKEN_LOCALECONV - /* This is a workaround for a Windows bug prior to VS 15, in which - * localeconv only looks at the global locale. We toggle to the global - * locale; populate the return; then toggle back. We have to use - * LC_ALL instead of the individual ones because of another bug in - * Windows */ - - save_thread = savepv(Perl_setlocale(LC_NUMERIC, NULL)); - - _configthreadlocale(_DISABLE_PER_THREAD_LOCALE); - - save_global = savepv(Perl_setlocale(LC_ALL, NULL)); - - Perl_setlocale(LC_ALL, save_thread); -# endif - lcbuf = localeconv(); -# endif - if (lcbuf) { - const struct lconv_offset *strings = lconv_strings; - const struct lconv_offset *integers = lconv_integers; - const char *ptr = (const char *) lcbuf; - - while (strings->name) { - /* This string may be controlled by either LC_NUMERIC, or - * LC_MONETARY */ - const bool is_utf8_locale = -# if defined(USE_LOCALE_NUMERIC) && defined(USE_LOCALE_MONETARY) - (isLC_NUMERIC_STRING(strings->name)) - ? is_numeric_utf8 - : is_monetary_utf8; -# elif defined(USE_LOCALE_NUMERIC) - is_numeric_utf8; -# elif defined(USE_LOCALE_MONETARY) - is_monetary_utf8; -# else - FALSE; -# endif - - const char *value = *((const char **)(ptr + strings->offset)); - - if (value && *value) { - const STRLEN value_len = strlen(value); - - /* We mark it as UTF-8 if a utf8 locale and is valid and - * variant under UTF-8 */ - const bool is_utf8 = is_utf8_locale - && is_utf8_non_invariant_string( - (U8*) value, - value_len); - (void) hv_store(RETVAL, - strings->name, - strlen(strings->name), - newSVpvn_utf8(value, value_len, is_utf8), - 0); - } - strings++; - } - - while (integers->name) { - const char value = *((const char *)(ptr + integers->offset)); - - if (value != CHAR_MAX) - (void) hv_store(RETVAL, integers->name, - strlen(integers->name), newSViv(value), 0); - integers++; - } - } -# if defined(USE_ITHREADS) \ - && defined(HAS_POSIX_2008_LOCALE) \ - && defined(HAS_LOCALECONV_L) - if (do_free) { - freelocale(cur); - } -# else -# ifdef TS_W32_BROKEN_LOCALECONV - Perl_setlocale(LC_ALL, save_global); - - _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); - - Perl_setlocale(LC_ALL, save_thread); - - Safefree(save_global); - Safefree(save_thread); -# endif - LOCALECONV_UNLOCK; -# endif - RESTORE_LC_NUMERIC(); + RETVAL = NULL; + not_here("localeconv"); +#else + RETVAL = Perl_localeconv(aTHX); #endif /* HAS_LOCALECONV */ OUTPUT: RETVAL @@ -3383,9 +3189,9 @@ mblen(s, n = ~0) memzero(&PL_mbrlen_ps, sizeof(PL_mbrlen_ps)); RETVAL = 0; #else - MBLEN_LOCK; + MBLEN_LOCK_; RETVAL = mblen(NULL, 0); - MBLEN_UNLOCK; + MBLEN_UNLOCK_; #endif } else { /* Not resetting state */ @@ -3396,51 +3202,45 @@ mblen(s, n = ~0) } else { size_t len; - char * string = SvPV(byte_s, len); + char * string = SvPVbyte(byte_s, len); if (n < len) len = n; #ifdef USE_MBRLEN + MBRLEN_LOCK_; RETVAL = (SSize_t) mbrlen(string, len, &PL_mbrlen_ps); + MBRLEN_UNLOCK_; if (RETVAL < 0) RETVAL = -1; /* Use mblen() ret code for transparency */ #else /* Locking prevents races, but locales can be switched out * without locking, so this isn't a cure all */ - MBLEN_LOCK; + MBLEN_LOCK_; RETVAL = mblen(string, len); - MBLEN_UNLOCK; + MBLEN_UNLOCK_; #endif } } OUTPUT: RETVAL -#if defined(HAS_MBRTOWC) && (defined(USE_ITHREADS) || ! defined(HAS_MBTOWC)) -# define USE_MBRTOWC -#else -# undef USE_MBRTOWC -#endif - int mbtowc(pwc, s, n = ~0) SV * pwc SV * s size_t n CODE: + RETVAL = -1; +#if ! defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC) + PERL_UNUSED_ARG(pwc); + PERL_UNUSED_ARG(s); + PERL_UNUSED_ARG(n); +#else errno = 0; SvGETMAGIC(s); if (! SvOK(s)) { /* Initialize state */ -#ifdef USE_MBRTOWC - /* Initialize the shift state to all zeros in PL_mbrtowc_ps. */ - memzero(&PL_mbrtowc_ps, sizeof(PL_mbrtowc_ps)); - RETVAL = 0; -#else - MBTOWC_LOCK; - RETVAL = mbtowc(NULL, NULL, 0); - MBTOWC_UNLOCK; -#endif + mbtowc_(NULL, NULL, 0); } else { /* Not resetting state */ - wchar_t wc; + wchar_t wc = 0; SV * byte_s = sv_2mortal(newSVsv_nomg(s)); if (! sv_utf8_downgrade_nomg(byte_s, TRUE)) { SETERRNO(EINVAL, LIB_INVARG); @@ -3448,17 +3248,9 @@ mbtowc(pwc, s, n = ~0) } else { size_t len; - char * string = SvPV(byte_s, len); + char * string = SvPVbyte(byte_s, len); if (n < len) len = n; -#ifdef USE_MBRTOWC - RETVAL = (SSize_t) mbrtowc(&wc, string, len, &PL_mbrtowc_ps); -#else - /* Locking prevents races, but locales can be switched out - * without locking, so this isn't a cure all */ - MBTOWC_LOCK; - RETVAL = mbtowc(&wc, string, len); - MBTOWC_UNLOCK; -#endif + RETVAL = mbtowc_(&wc, string, len); if (RETVAL >= 0) { sv_setiv_mg(pwc, wc); } @@ -3467,6 +3259,7 @@ mbtowc(pwc, s, n = ~0) } } } +#endif OUTPUT: RETVAL @@ -3487,23 +3280,27 @@ wctomb(s, wchar) #ifdef USE_WCRTOMB /* The man pages khw looked at are in agreement that this works. * But probably memzero would too */ + WCRTOMB_LOCK_; RETVAL = wcrtomb(NULL, L'\0', &PL_wcrtomb_ps); + WCRTOMB_UNLOCK_; #else - WCTOMB_LOCK; + WCTOMB_LOCK_; RETVAL = wctomb(NULL, L'\0'); - WCTOMB_UNLOCK; + WCTOMB_UNLOCK_; #endif } else { /* Not resetting state */ char buffer[MB_LEN_MAX]; #ifdef USE_WCRTOMB + WCRTOMB_LOCK_; RETVAL = wcrtomb(buffer, wchar, &PL_wcrtomb_ps); + WCRTOMB_UNLOCK_; #else /* Locking prevents races, but locales can be switched out without * locking, so this isn't a cure all */ - WCTOMB_LOCK; + WCTOMB_LOCK_; RETVAL = wctomb(buffer, wchar); - WCTOMB_UNLOCK; + WCTOMB_UNLOCK_; #endif if (RETVAL >= 0) { sv_setpvn_mg(s, buffer, RETVAL); @@ -3516,6 +3313,12 @@ int strcoll(s1, s2) char * s1 char * s2 + CODE: + LC_COLLATE_LOCK; + RETVAL = strcoll(s1, s2); + LC_COLLATE_UNLOCK; + OUTPUT: + RETVAL void strtod(str) @@ -3631,24 +3434,11 @@ void strxfrm(src) SV * src CODE: - { - STRLEN srclen; - STRLEN dstlen; - STRLEN buflen; - char *p = SvPV(src,srclen); - srclen++; - buflen = srclen * 4 + 1; - ST(0) = sv_2mortal(newSV(buflen)); - dstlen = strxfrm(SvPVX(ST(0)), p, (size_t)buflen); - if (dstlen >= buflen) { - dstlen++; - SvGROW(ST(0), dstlen); - strxfrm(SvPVX(ST(0)), p, (size_t)dstlen); - dstlen--; - } - SvCUR_set(ST(0), dstlen); - SvPOK_only(ST(0)); - } +#ifdef USE_LOCALE_COLLATE + ST(0) = Perl_strxfrm(aTHX_ src); +#else + ST(0) = src; +#endif SysRet mkfifo(filename, mode) @@ -3730,7 +3520,10 @@ asctime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1) mytm.tm_yday = yday; mytm.tm_isdst = isdst; if (ix) { - const time_t result = mktime(&mytm); + time_t result; + MKTIME_LOCK; + result = mktime(&mytm); + MKTIME_UNLOCK; if (result == (time_t)-1) SvOK_off(TARG); else if (result == 0) @@ -3738,7 +3531,9 @@ asctime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1) else sv_setiv(TARG, (IV)result); } else { + ASCTIME_LOCK; sv_setpv(TARG, asctime(&mytm)); + ASCTIME_UNLOCK; } ST(0) = TARG; XSRETURN(1); @@ -3788,29 +3583,19 @@ strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1) { char *buf; SV *sv; + utf8ness_t is_utf8; /* allowing user-supplied (rather than literal) formats * is normally frowned upon as a potential security risk; * but this is part of the API so we have to allow it */ GCC_DIAG_IGNORE_STMT(-Wformat-nonliteral); - buf = my_strftime(SvPV_nolen(fmt), sec, min, hour, mday, mon, year, wday, yday, isdst); + buf = my_strftime8_temp(SvPV_nolen(fmt), sec, min, hour, mday, mon, year, wday, yday, isdst, &is_utf8); GCC_DIAG_RESTORE_STMT; sv = sv_newmortal(); if (buf) { STRLEN len = strlen(buf); sv_usepvn_flags(sv, buf, len, SV_HAS_TRAILING_NUL); - if ( SvUTF8(fmt) - || ( is_utf8_non_invariant_string((U8*) buf, len) -#ifdef USE_LOCALE_TIME - && _is_cur_LC_category_utf8(LC_TIME) -#else /* If can't check directly, at least can see if script is consistent, - under UTF-8, which gives us an extra measure of confidence. */ - - && isSCRIPT_RUN((const U8 *) buf, - (const U8 *) buf + len, - TRUE) /* Means assume UTF-8 */ -#endif - )) { + if (SvUTF8(fmt) || is_utf8 == UTF8NESS_YES) { SvUTF8_on(sv); } } @@ -3835,8 +3620,12 @@ void tzname() PPCODE: EXTEND(SP,2); + /* It is undefined behavior if another thread is changing this while + * its being read */ + ENVr_LOCALEr_LOCK; PUSHs(newSVpvn_flags(tzname[0], strlen(tzname[0]), SVs_TEMP)); PUSHs(newSVpvn_flags(tzname[1], strlen(tzname[1]), SVs_TEMP)); + ENVr_LOCALEr_UNLOCK; char * ctermid(s = 0) diff --git a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm index b8a6257944f..48b224a36ec 100644 --- a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm +++ b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pm @@ -4,7 +4,7 @@ use warnings; our ($AUTOLOAD, %SIGRT); -our $VERSION = '2.03'; +our $VERSION = '2.13'; require XSLoader; @@ -12,7 +12,7 @@ use Fcntl qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC O_WRONLY SEEK_CUR SEEK_END SEEK_SET - S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG + S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISLNK S_ISREG S_ISSOCK S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISGID S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR); @@ -278,7 +278,7 @@ my %default_export_tags = ( # cf. exports policy below creat SEEK_CUR SEEK_END SEEK_SET S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU - S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID + S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISLNK S_ISREG S_ISSOCK S_ISUID S_IWGRP S_IWOTH S_IWUSR)], float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG @@ -307,7 +307,7 @@ my %default_export_tags = ( # cf. exports policy below locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME LC_IDENTIFICATION - LC_MEASUREMENT LC_PAPER LC_TELEPHONE LC_ADDRESS + LC_MEASUREMENT LC_PAPER LC_TELEPHONE LC_ADDRESS LC_NAME LC_SYNTAX LC_TOD NULL localeconv setlocale)], @@ -357,7 +357,7 @@ my %default_export_tags = ( # cf. exports policy below strtok strxfrm)], sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU - S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG + S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISLNK S_ISREG S_ISSOCK S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR fstat mkfifo)], diff --git a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod index 75113b1e47b..d3720da9b50 100644 --- a/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod +++ b/gnu/usr.bin/perl/ext/POSIX/lib/POSIX.pod @@ -10,9 +10,9 @@ POSIX - Perl interface to IEEE Std 1003.1 printf "EINTR is %d\n", EINTR; - $sess_id = POSIX::setsid(); + my $sess_id = POSIX::setsid(); - $fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644); + my $fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644); # note: that's a filedescriptor, *NOT* a filehandle =head1 DESCRIPTION @@ -501,7 +501,7 @@ than the explicit two operations [C99]. Added in Perl v5.22. Maximum of C and C, except when either is C, returns the other [C99]. Added in Perl v5.22. - my $min = POSIX::fmax($x, $y); + my $max = POSIX::fmax($x, $y); =item C @@ -1015,6 +1015,18 @@ Here is how to query the database for the B (Deutsch or German) locale. The members whose names begin with C and C were added by POSIX.1-2008 and are only available on systems that support them. +A value of -1 returned for numeric entries indicates that the field is +not applicable to the locale. This is rare except in the C and related +locales, which don't have most monetary values defined. It can also +happen, quirkily, in fields that are otherwise boolean to indicate that +the value is kind of neither true nor false. This happens in C +and C when the currency symbol neither precedes nor +succeeds a positive value but is infixed, by replacing the radix +character. + +Prior to Perl v5.37.7, empty string fields and numeric fields with value +-1 were omittted from the returned hash. + =item C This is identical to Perl's builtin C function for @@ -1134,9 +1146,10 @@ parameter is stored. The optional third parameter is ignored if it is larger than the actual length of the second parameter string. Use C as the second parameter to this function to get the effect -of passing NULL as the second parameter to C. This resets any -shift state to its initial value. The return value is undefined if -C was substituted, so you should never rely on it. +of passing NULL as the second parameter to C. This ignores the +first parameter, and resets any shift state to its initial value. The +return value is undefined if C was substituted, so you should +never rely on it. When the second parameter is a scalar containing a value that either is a PV string or can be forced into one, the return value is the number of @@ -1827,7 +1840,7 @@ about these and the other arguments. If you want your code to be portable, your format (C) argument should use only the conversion specifiers defined by the ANSI C -standard (C89, to play safe). These are C. +standard (C99, to play safe). These are C. But even then, the B of some of the conversion specifiers are non-portable. For example, the specifiers C change according to the locale settings of the user, and both how to set locales (the @@ -1972,9 +1985,14 @@ Used with C or C as an alternative to C>. Not really needed since Perl can do this transparently, see L. -Beware that in a UTF-8 locale, anything you pass to this function must -be in UTF-8; and when not in a UTF-8 locale, anything passed must not be -UTF-8 encoded. +Unlike the libc C, this allows NUL characters in the input +C<$src>. + +It doesn't make sense for a string to be encoded in one locale (say, +ISO-8859-6, Arabic) and to collate it based on another (like ISO-8859-7, +Greek). Perl assumes that the current C locale correctly +represents the encoding of C<$src>, and ignores the value of +C. =item C @@ -2197,9 +2215,10 @@ L and L may be used to roll your own decoding/encoding of other types of multi-byte locales. Use C as the first parameter to this function to get the effect -of passing NULL as the first parameter to C. This resets any -shift state to its initial value. The return value is undefined if -C was substituted, so you should never rely on it. +of passing NULL as the first parameter to C. This ignores the +second parameter, and resets any shift state to its initial value. The +return value is undefined if C was substituted, so you should +never rely on it. When the first parameter is a scalar, the code point contained in the scalar second parameter is converted into a multi-byte string and stored @@ -2740,7 +2759,7 @@ C C C C =item Macros -C C C C C +C C C C C C C =back diff --git a/gnu/usr.bin/perl/ext/POSIX/t/export.t b/gnu/usr.bin/perl/ext/POSIX/t/export.t index 12eac2d2113..1f9ff7b0421 100644 --- a/gnu/usr.bin/perl/ext/POSIX/t/export.t +++ b/gnu/usr.bin/perl/ext/POSIX/t/export.t @@ -48,7 +48,7 @@ my %expect = ( INT_MAX INT_MIN ISIG ISTRIP IXOFF IXON LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NUMERIC LC_PAPER - LC_TELEPHONE LC_TIME LC_SYNTAX LC_TOD LDBL_DIG + LC_TELEPHONE LC_TIME LC_NAME LC_SYNTAX LC_TOD LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP LINK_MAX LONG_MAX LONG_MIN L_ctermid L_cuserid MAX_CANON @@ -66,7 +66,7 @@ my %expect = ( SIG_IGN SIG_SETMASK SIG_UNBLOCK SSIZE_MAX STDERR_FILENO STDIN_FILENO STDOUT_FILENO STREAM_MAX S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISBLK S_ISCHR S_ISDIR S_ISFIFO - S_ISGID S_ISREG S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP + S_ISGID S_ISLNK S_ISREG S_ISSOCK S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR TCIFLUSH TCIOFF TCIOFLUSH TCION TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW TMP_MAX TOSTOP TZNAME_MAX UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX VEOF VEOL diff --git a/gnu/usr.bin/perl/ext/POSIX/t/posix.t b/gnu/usr.bin/perl/ext/POSIX/t/posix.t index f200a895bde..117fa5e138d 100644 --- a/gnu/usr.bin/perl/ext/POSIX/t/posix.t +++ b/gnu/usr.bin/perl/ext/POSIX/t/posix.t @@ -373,10 +373,9 @@ SKIP: { currency_symbol mon_decimal_point mon_thousands_sep mon_grouping positive_sign negative_sign)) { SKIP: { - skip("localeconv has no result for $_", 1) - unless exists $conv->{$_}; - unlike(delete $conv->{$_}, qr/\A\z/, - "localeconv returned a non-empty string for $_"); + my $value = delete $conv->{$_}; + skip("localeconv '$_' may be empty", 1) if $_ ne 'decimal_point'; + isnt($value, "", "localeconv returned a non-empty string for $_"); } } @@ -399,8 +398,6 @@ SKIP: { foreach (@lconv) { SKIP: { - skip("localeconv has no result for $_", 1) - unless exists $conv->{$_}; like(delete $conv->{$_}, qr/\A-?\d+\z/, "localeconv returned an integer for $_"); } diff --git a/gnu/usr.bin/perl/ext/Pod-Functions/t/Functions.t b/gnu/usr.bin/perl/ext/Pod-Functions/t/Functions.t index 959bff45a74..089569d44bf 100644 --- a/gnu/usr.bin/perl/ext/Pod-Functions/t/Functions.t +++ b/gnu/usr.bin/perl/ext/Pod-Functions/t/Functions.t @@ -115,10 +115,11 @@ Functions for filehandles, files, or directories: Keywords related to the control flow of your Perl program: __FILE__, __LINE__, __PACKAGE__, __SUB__, break, caller, continue, die, do, dump, eval, evalbytes, exit, goto, - last, next, redo, return, sub, wantarray + last, method, next, redo, return, sub, wantarray Keywords related to scoping: - caller, import, local, my, our, package, state, use + caller, class, field, import, local, my, our, package, + state, use Miscellaneous functions: defined, formline, lock, prototype, reset, scalar, undef @@ -132,8 +133,8 @@ Keywords related to Perl modules: do, import, no, package, require, use Keywords related to classes and object-orientation: - bless, dbmclose, dbmopen, package, ref, tie, tied, untie, - use + bless, class, dbmclose, dbmopen, field, method, package, + ref, tie, tied, untie, use Low-level socket functions: accept, bind, connect, getpeername, getsockname, diff --git a/gnu/usr.bin/perl/ext/Pod-Html/bin/pod2html b/gnu/usr.bin/perl/ext/Pod-Html/bin/pod2html index 7d1d23268b9..e93b102e2af 100644 --- a/gnu/usr.bin/perl/ext/Pod-Html/bin/pod2html +++ b/gnu/usr.bin/perl/ext/Pod-Html/bin/pod2html @@ -25,6 +25,43 @@ pod2html takes the following arguments: =over 4 +=item backlink + + --backlink + --nobacklink + +Turn =head1 directives into links pointing to the top of the HTML file. +--nobacklink (which is the default behavior) does not create these backlinks. + +=item cachedir + + --cachedir=name + +Specify which directory is used for storing cache. Default directory is the +current working directory. + +=item css + + --css=URL + +Specify the URL of cascading style sheet to link from resulting HTML file. +Default is none style sheet. + +=item flush + + --flush + +Flush the cache. + +=item header + + --header + --noheader + +Create header and footer blocks containing the text of the "NAME" section. +--noheader -- which is the default behavior -- does not create header or footer +blocks. + =item help --help @@ -53,6 +90,22 @@ Do not use this if relative links are desired: use --htmldir instead. Do not pass both this and --htmldir to pod2html; they are mutually exclusive. +=item index + + --index + +Generate an index at the top of the HTML file (default behaviour). + +=over 4 + +=item noindex + + --noindex + +Do not generate an index at the top of the HTML file. + +=back + =item infile --infile=name @@ -67,11 +120,14 @@ infile is specified. Specify the HTML file to create. Output goes to STDOUT if no outfile is specified. -=item podroot +=item poderrors - --podroot=name + --poderrors + --nopoderrors -Specify the base directory for finding library pods. +Include a "POD ERRORS" section in the outfile if there were any POD errors in +the infile (default behaviour). --nopoderrors does not create this "POD +ERRORS" section. =item podpath @@ -80,90 +136,28 @@ Specify the base directory for finding library pods. Specify which subdirectories of the podroot contain pod files whose HTML converted forms can be linked-to in cross-references. -=item cachedir - - --cachedir=name - -Specify which directory is used for storing cache. Default directory is the -current working directory. - -=item flush - - --flush - -Flush the cache. - -=item backlink - - --backlink - -Turn =head1 directives into links pointing to the top of the HTML file. - -=item nobacklink - - --nobacklink - -Do not turn =head1 directives into links pointing to the top of the HTML file -(default behaviour). - -=item header - - --header - -Create header and footer blocks containing the text of the "NAME" section. - -=item noheader - - --noheader - -Do not create header and footer blocks containing the text of the "NAME" -section (default behaviour). - -=item poderrors - - --poderrors - -Include a "POD ERRORS" section in the outfile if there were any POD errors in -the infile (default behaviour). - -=item nopoderrors - - --nopoderrors - -Do not include a "POD ERRORS" section in the outfile if there were any POD -errors in the infile. - -=item index - - --index +=item podroot -Generate an index at the top of the HTML file (default behaviour). + --podroot=name -=item noindex +Specify the base directory for finding library pods. - --noindex +=item quiet -Do not generate an index at the top of the HTML file. + --quiet + --noquiet +Don't display mostly harmless warning messages. --noquiet -- which is the +default behavior -- I display these mostly harmless warning messages (but +this is not the same as "verbose" mode). =item recurse --recurse - -Recurse into subdirectories specified in podpath (default behaviour). - -=item norecurse - --norecurse -Do not recurse into subdirectories specified in podpath. - -=item css - - --css=URL - -Specify the URL of cascading style sheet to link from resulting HTML file. -Default is none style sheet. +Recurse into subdirectories specified in podpath (default behaviour). +--norecurse does not recurse into these subdirectories. =item title @@ -171,30 +165,13 @@ Default is none style sheet. Specify the title of the resulting HTML file. -=item quiet - - --quiet - -Don't display mostly harmless warning messages. - -=item noquiet - - --noquiet - -Display mostly harmless warning messages (default behaviour). But this is not -the same as "verbose" mode. - =item verbose --verbose - -Display progress messages. - -=item noverbose - --noverbose -Do not display progress messages (default behaviour). +Display progress messages. --noverbose -- which is the default behavior -- +does not display these progress messages. =back diff --git a/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm b/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm index a9b0d5e77c3..7c568f9e913 100644 --- a/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm +++ b/gnu/usr.bin/perl/ext/Pod-Html/lib/Pod/Html.pm @@ -2,10 +2,9 @@ package Pod::Html; use strict; use Exporter 'import'; -our $VERSION = 1.33; +our $VERSION = 1.34; $VERSION = eval $VERSION; -our @EXPORT = qw(pod2html htmlify); -our @EXPORT_OK = qw(anchorify relativize_url); +our @EXPORT = qw(pod2html); use Config; use Cwd; @@ -195,7 +194,7 @@ Display progress messages. By default, they won't be displayed. =back -=head2 Auxiliary Functions +=head2 Formerly Exported Auxiliary Functions Prior to perl-5.36, the following three functions were exported by F, either by default or on request: @@ -213,10 +212,8 @@ F, either by default or on request: The definition and documentation of these functions have been moved to F, viewable via C. -In perl-5.36, these functions will be importable from either F or -F. However, beginning with perl-5.38 they will only be -importable, upon request, from F. Please modify your code as -needed. +Beginning with perl-5.38 these functions must be explicitly imported from +F. Please modify your code as needed. =head1 ENVIRONMENT diff --git a/gnu/usr.bin/perl/ext/Pod-Html/t/anchorify-536.t b/gnu/usr.bin/perl/ext/Pod-Html/t/anchorify-536.t deleted file mode 100644 index e8e01ea9c54..00000000000 --- a/gnu/usr.bin/perl/ext/Pod-Html/t/anchorify-536.t +++ /dev/null @@ -1,114 +0,0 @@ -use strict; -use warnings; -use Pod::Html qw( anchorify relativize_url ); -my ($revision,$version,$subversion) = split /\./, sprintf("%vd",$^V); -use Test::More; -unless ($version == 35 or $version == 36) { - plan skip_all => "Needed only during 5.36"; -} - -my @filedata; -{ - local $/ = ''; - @filedata = ; -} - -my (@poddata, $i, $j); -for ($i = 0, $j = -1; $i <= $#filedata; $i++) { - $j++ if ($filedata[$i] =~ /^\s*=head[1-6]/); - if ($j >= 0) { - $poddata[$j] = "" unless defined $poddata[$j]; - $poddata[$j] .= "\n$filedata[$i]" if $j >= 0; - } -} - -my %heads = (); -foreach $i (0..$#poddata) { - $heads{anchorify($1)} = 1 if $poddata[$i] =~ /=head[1-6]\s+(.*)/; -} -my %expected = map { $_ => 1 } qw( - NAME - DESCRIPTION - Subroutine - Error - Method - Has_A_Wordspace - HasTrailingWordspace - HasLeadingWordspace - Has_Extra_InternalWordspace - Has_Quotes - Has_QuestionMark - Has_Hyphen_And_Space -); -is_deeply( - \%heads, - \%expected, - "Got expected POD heads" -); - -{ - # adapted from 'installhtml' - my $file = '/home/username/tmp/installhtml/pod/perlipc'; - my $capture = 'NAME'; - my $expected_url = '/home/username/tmp/installhtml/pod/perlipc/NAME.html'; - my $expected_relativized_url = 'perlipc/NAME.html'; - my $url = "$file/@{[anchorify(qq($capture))]}.html" ; - is($url, $expected_url, "anchorify() returned expected value"); - my $relativized_url = relativize_url( $url, "$file.html" ); - is($relativized_url, $expected_relativized_url, "relativize_url() returned expected value"); -} - -done_testing; - -__DATA__ -=head1 NAME - -anchorify - Test C - -=head1 DESCRIPTION - -alpha - -=head2 Subroutine - -beta - -=head3 Error - -gamma - -=head4 Method - -delta - -=head4 Has A Wordspace - -delta - -=head4 HasTrailingWordspace - -epsilon - -=head4 HasLeadingWordspace - -zeta - -=head4 Has Extra InternalWordspace - -eta - -=head4 Has"Quotes" - -theta - -=head4 Has?QuestionMark - -iota - -=head4 Has-Hyphen And Space - -kappa - -=cut - -__END__ diff --git a/gnu/usr.bin/perl/ext/SDBM_File/SDBM_File.pm b/gnu/usr.bin/perl/ext/SDBM_File/SDBM_File.pm index 30e380a6bb8..6ba1ab8aadf 100644 --- a/gnu/usr.bin/perl/ext/SDBM_File/SDBM_File.pm +++ b/gnu/usr.bin/perl/ext/SDBM_File/SDBM_File.pm @@ -7,7 +7,7 @@ require Tie::Hash; require XSLoader; our @ISA = qw(Tie::Hash); -our $VERSION = "1.15"; +our $VERSION = "1.17"; our @EXPORT_OK = qw(PAGFEXT DIRFEXT PAIRMAX); use Exporter "import"; diff --git a/gnu/usr.bin/perl/ext/SDBM_File/dbu.c b/gnu/usr.bin/perl/ext/SDBM_File/dbu.c index 9cf48fa3977..9962e0cc9af 100644 --- a/gnu/usr.bin/perl/ext/SDBM_File/dbu.c +++ b/gnu/usr.bin/perl/ext/SDBM_File/dbu.c @@ -20,7 +20,7 @@ static char *usage = "%s [-R] cat | look |... dbmname"; #define DLOOK 1 #define DINSERT 2 #define DDELETE 3 -#define DCAT 4 +#define DCAT 4 #define DBUILD 5 #define DPRESS 6 #define DCREAT 7 diff --git a/gnu/usr.bin/perl/ext/SDBM_File/sdbm.c b/gnu/usr.bin/perl/ext/SDBM_File/sdbm.c index 7cf07d7599c..c27c535da0c 100644 --- a/gnu/usr.bin/perl/ext/SDBM_File/sdbm.c +++ b/gnu/usr.bin/perl/ext/SDBM_File/sdbm.c @@ -43,6 +43,11 @@ extern Free_t free(Malloc_t); const datum nullitem = {0, 0}; +#ifdef WIN32 +# undef lseek +# define lseek _lseeki64 +#endif + /* * forward */ @@ -59,8 +64,8 @@ static int makroom(DBM *, long, int); #define exhash(item) sdbm_hash((item).dptr, (item).dsize) #define ioerr(db) ((db)->flags |= DBM_IOERR) -#define OFF_PAG(off) (long) (off) * PBLKSIZ -#define OFF_DIR(off) (long) (off) * DBLKSIZ +#define OFF_PAG(off) (Off_t) (off) * PBLKSIZ +#define OFF_DIR(off) (Off_t) (off) * DBLKSIZ static const long masks[] = { 000000000000, 000000000001, 000000000003, 000000000007, @@ -291,7 +296,7 @@ makroom(DBM *db, long int hash, int need) char twin[PBLKSIZ]; #if defined(DOSISH) || defined(WIN32) char zer[PBLKSIZ]; - long oldtail; + Off_t oldtail; #endif char *pag = db->pagbuf; char *New = twin; diff --git a/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm b/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm index ffecefd59fd..8e4f41f72f2 100644 --- a/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm +++ b/gnu/usr.bin/perl/ext/Sys-Hostname/Hostname.pm @@ -15,7 +15,7 @@ use warnings (); our $host; BEGIN { - $VERSION = '1.24'; + $VERSION = '1.25'; { local $SIG{__DIE__}; eval { @@ -131,7 +131,7 @@ Sys::Hostname - Try every conceivable way to get hostname =head1 SYNOPSIS use Sys::Hostname; - $host = hostname; + my $host = hostname; =head1 DESCRIPTION diff --git a/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm b/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm index 85787d1c949..fb0aa471ca4 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm +++ b/gnu/usr.bin/perl/ext/XS-APItest/APItest.pm @@ -4,7 +4,7 @@ use strict; use warnings; use Carp; -our $VERSION = '1.22'; +our $VERSION = '1.32'; require XSLoader; diff --git a/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs b/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs index 4cdcc2abc78..bb6eaa12acd 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs +++ b/gnu/usr.bin/perl/ext/XS-APItest/APItest.xs @@ -23,6 +23,16 @@ typedef PerlIO * OutputStream; #define croak_fail_nep(h, w) croak("fail %p!=%p at " __FILE__ " line %d", (h), (w), __LINE__) #define croak_fail_nei(h, w) croak("fail %d!=%d at " __FILE__ " line %d", (int)(h), (int)(w), __LINE__) +/* assumes that there is a 'failed' variable in scope */ +#define TEST_EXPR(s) STMT_START { \ + if (s) { \ + printf("# ok: %s\n", #s); \ + } else { \ + printf("# not ok: %s\n", #s); \ + failed++; \ + } \ +} STMT_END + #if IVSIZE == 8 # define TEST_64BIT 1 #else @@ -115,8 +125,19 @@ S_myset_set(pTHX_ SV* sv, MAGIC* mg) return 0; } +static int +S_myset_set_dies(pTHX_ SV* sv, MAGIC* mg) +{ + PERL_UNUSED_ARG(sv); + PERL_UNUSED_ARG(mg); + croak("in S_myset_set_dies"); + return 0; +} + + static MGVTBL vtbl_foo, vtbl_bar; static MGVTBL vtbl_myset = { 0, S_myset_set, 0, 0, 0, 0, 0, 0 }; +static MGVTBL vtbl_myset_dies = { 0, S_myset_set_dies, 0, 0, 0, 0, 0, 0 }; static int S_mycopy_copy(pTHX_ SV *sv, MAGIC* mg, SV *nsv, const char *name, I32 namlen) { @@ -1443,8 +1464,62 @@ my_ck_rv2cv(pTHX_ OP *o) return old_ck_rv2cv(aTHX_ o); } +#define test_bool_internals_macro(true_sv, false_sv) \ + test_bool_internals_func(true_sv, false_sv,\ + #true_sv " and " #false_sv) + +U32 +test_bool_internals_func(SV *true_sv, SV *false_sv, const char *msg) { + U32 failed = 0; + printf("# Testing '%s'\n", msg); + TEST_EXPR(SvCUR(true_sv) == 1); + TEST_EXPR(SvCUR(false_sv) == 0); + TEST_EXPR(SvLEN(true_sv) == 0); + TEST_EXPR(SvLEN(false_sv) == 0); + TEST_EXPR(SvIV(true_sv) == 1); + TEST_EXPR(SvIV(false_sv) == 0); + TEST_EXPR(SvIsCOW(true_sv)); + TEST_EXPR(SvIsCOW(false_sv)); + TEST_EXPR(strEQ(SvPV_nolen(true_sv),"1")); + TEST_EXPR(strEQ(SvPV_nolen(false_sv),"")); + TEST_EXPR(SvIOK(true_sv)); + TEST_EXPR(SvIOK(false_sv)); + TEST_EXPR(SvPOK(true_sv)); + TEST_EXPR(SvPOK(false_sv)); + TEST_EXPR(SvBoolFlagsOK(true_sv)); + TEST_EXPR(SvBoolFlagsOK(false_sv)); + TEST_EXPR(SvTYPE(true_sv) >= SVt_PVNV); + TEST_EXPR(SvTYPE(false_sv) >= SVt_PVNV); + TEST_EXPR(SvBoolFlagsOK(true_sv) && BOOL_INTERNALS_sv_isbool(true_sv)); + TEST_EXPR(SvBoolFlagsOK(false_sv) && BOOL_INTERNALS_sv_isbool(false_sv)); + TEST_EXPR(SvBoolFlagsOK(true_sv) && BOOL_INTERNALS_sv_isbool_true(true_sv)); + TEST_EXPR(SvBoolFlagsOK(false_sv) && BOOL_INTERNALS_sv_isbool_false(false_sv)); + TEST_EXPR(SvBoolFlagsOK(true_sv) && !BOOL_INTERNALS_sv_isbool_false(true_sv)); + TEST_EXPR(SvBoolFlagsOK(false_sv) && !BOOL_INTERNALS_sv_isbool_true(false_sv)); + TEST_EXPR(SvTRUE(true_sv)); + TEST_EXPR(!SvTRUE(false_sv)); + if (failed) { + PerlIO_printf(Perl_debug_log, "# '%s' the tested true_sv:\n", msg); + sv_dump(true_sv); + PerlIO_printf(Perl_debug_log, "# PL_sv_yes:\n"); + sv_dump(&PL_sv_yes); + PerlIO_printf(Perl_debug_log, "# '%s' tested false_sv:\n",msg); + sv_dump(false_sv); + PerlIO_printf(Perl_debug_log, "# PL_sv_no:\n"); + sv_dump(&PL_sv_no); + } + fflush(stdout); + SvREFCNT_dec(true_sv); + SvREFCNT_dec(false_sv); + return failed; +} #include "const-c.inc" +void +destruct_test(pTHX_ void *p) { + warn("In destruct_test: %" SVf "\n", (SV*)p); +} + MODULE = XS::APItest PACKAGE = XS::APItest INCLUDE: const-xs.inc @@ -1657,6 +1732,18 @@ test_uvchr_to_utf8_flags_msgs(uv, flags) MODULE = XS::APItest:Overload PACKAGE = XS::APItest::Overload +void +does_amagic_apply(sv, method, flags) + SV *sv + int method + int flags + PPCODE: + if(Perl_amagic_applies(aTHX_ sv, method, flags)) + XSRETURN_YES; + else + XSRETURN_NO; + + void amagic_deref_call(sv, what) SV *sv @@ -2404,7 +2491,7 @@ mpushp() EXTEND(SP, 3); mPUSHp("one", 3); mPUSHp("two", 3); - mPUSHp("three", 5); + mPUSHpvs("three"); XSRETURN(3); void @@ -2439,7 +2526,7 @@ mxpushp() PPCODE: mXPUSHp("one", 3); mXPUSHp("two", 3); - mXPUSHp("three", 5); + mXPUSHpvs("three"); XSRETURN(3); void @@ -2484,19 +2571,27 @@ test_EXTEND(max_offset, nsv, use_ss) SV *nsv; bool use_ss; PREINIT: - SV **sp = PL_stack_max + max_offset; + SV **new_sp = PL_stack_max + max_offset; + SSize_t new_offset = new_sp - PL_stack_base; PPCODE: if (use_ss) { SSize_t n = (SSize_t)SvIV(nsv); - EXTEND(sp, n); - *(sp + n) = NULL; + EXTEND(new_sp, n); + new_sp = PL_stack_base + new_offset; + assert(new_sp + n <= PL_stack_max); + if ((new_sp + n) > PL_stack_sp) + *(new_sp + n) = NULL; } else { IV n = SvIV(nsv); - EXTEND(sp, n); - *(sp + n) = NULL; + EXTEND(new_sp, n); + new_sp = PL_stack_base + new_offset; + assert(new_sp + n <= PL_stack_max); + if ((new_sp + n) > PL_stack_sp) + *(new_sp + n) = NULL; } - *PL_stack_max = NULL; + if (PL_stack_max > PL_stack_sp) + *PL_stack_max = NULL; void @@ -4251,7 +4346,7 @@ CODE: SV * HvENAME(HV *hv) CODE: - RETVAL = hv && HvENAME(hv) + RETVAL = hv && HvHasENAME(hv) ? newSVpvn_flags( HvENAME(hv),HvENAMELEN(hv), (HvENAMEUTF8(hv) ? SVf_UTF8 : 0) @@ -4281,30 +4376,44 @@ OUTPUT: RETVAL char * -SvPVbyte(SV *sv) +SvPVbyte(SV *sv, OUT STRLEN len) +CODE: + RETVAL = SvPVbyte(sv, len); +OUTPUT: + RETVAL + +char * +SvPVbyte_nolen(SV *sv) CODE: RETVAL = SvPVbyte_nolen(sv); OUTPUT: RETVAL char * -SvPVbyte_nomg(SV *sv) +SvPVbyte_nomg(SV *sv, OUT STRLEN len) +CODE: + RETVAL = SvPVbyte_nomg(sv, len); +OUTPUT: + RETVAL + +char * +SvPVutf8(SV *sv, OUT STRLEN len) CODE: - RETVAL = SvPVbyte_nomg(sv, PL_na); + RETVAL = SvPVutf8(sv, len); OUTPUT: RETVAL char * -SvPVutf8(SV *sv) +SvPVutf8_nolen(SV *sv) CODE: RETVAL = SvPVutf8_nolen(sv); OUTPUT: RETVAL char * -SvPVutf8_nomg(SV *sv) +SvPVutf8_nomg(SV *sv, OUT STRLEN len) CODE: - RETVAL = SvPVutf8_nomg(sv, PL_na); + RETVAL = SvPVutf8_nomg(sv, len); OUTPUT: RETVAL @@ -4418,6 +4527,20 @@ sv_mortalcopy(SV *sv) SV * newRV(SV *sv) +SV * +newAVav(AV *av) + CODE: + RETVAL = newRV_noinc((SV *)newAVav(av)); + OUTPUT: + RETVAL + +SV * +newAVhv(HV *hv) + CODE: + RETVAL = newRV_noinc((SV *)newAVhv(hv)); + OUTPUT: + RETVAL + void alias_av(AV *av, IV ix, SV *sv) CODE: @@ -4577,6 +4700,27 @@ test_MAX_types() OUTPUT: RETVAL +SV * +test_HvNAMEf(sv) + SV *sv + CODE: + if (!sv_isobject(sv)) XSRETURN_UNDEF; + HV *pkg = SvSTASH(SvRV(sv)); + RETVAL = newSVpvf("class='%" HvNAMEf "'", pkg); + OUTPUT: + RETVAL + +SV * +test_HvNAMEf_QUOTEDPREFIX(sv) + SV *sv + CODE: + if (!sv_isobject(sv)) XSRETURN_UNDEF; + HV *pkg = SvSTASH(SvRV(sv)); + RETVAL = newSVpvf("class=%" HvNAMEf_QUOTEDPREFIX, pkg); + OUTPUT: + RETVAL + + bool sv_numeq(SV *sv1, SV *sv2) CODE: @@ -4637,16 +4781,22 @@ void sv_magic_foo(SV *sv, SV *thingy) ALIAS: sv_magic_bar = 1 + sv_magic_baz = 2 CODE: - sv_magicext(SvRV(sv), NULL, PERL_MAGIC_ext, ix ? &vtbl_bar : &vtbl_foo, (const char *)thingy, 0); + sv_magicext(sv, NULL, ix == 2 ? PERL_MAGIC_extvalue : PERL_MAGIC_ext, ix ? &vtbl_bar : &vtbl_foo, (const char *)thingy, 0); SV * mg_find_foo(SV *sv) ALIAS: mg_find_bar = 1 + mg_find_baz = 2 CODE: - MAGIC *mg = mg_findext(SvRV(sv), PERL_MAGIC_ext, ix ? &vtbl_bar : &vtbl_foo); - RETVAL = mg ? SvREFCNT_inc((SV *)mg->mg_ptr) : &PL_sv_undef; + RETVAL = &PL_sv_undef; + if (SvTYPE(sv) >= SVt_PVMG) { + MAGIC *mg = mg_findext(sv, ix == 2 ? PERL_MAGIC_extvalue : PERL_MAGIC_ext, ix ? &vtbl_bar : &vtbl_foo); + if (mg) + RETVAL = SvREFCNT_inc((SV *)mg->mg_ptr); + } OUTPUT: RETVAL @@ -4654,13 +4804,14 @@ void sv_unmagic_foo(SV *sv) ALIAS: sv_unmagic_bar = 1 + sv_unmagic_baz = 2 CODE: - sv_unmagicext(SvRV(sv), PERL_MAGIC_ext, ix ? &vtbl_bar : &vtbl_foo); + sv_unmagicext(sv, ix == 2 ? PERL_MAGIC_extvalue : PERL_MAGIC_ext, ix ? &vtbl_bar : &vtbl_foo); void sv_magic(SV *sv, SV *thingy) CODE: - sv_magic(SvRV(sv), NULL, PERL_MAGIC_ext, (const char *)thingy, 0); + sv_magic(sv, NULL, PERL_MAGIC_ext, (const char *)thingy, 0); UV test_get_vtbl() @@ -4711,6 +4862,13 @@ test_get_vtbl() # attach ext magic to the SV pointed to by rsv that only has set magic, # where that magic's job is to increment thingy +void +sv_magic_myset_dies(SV *rsv, SV *thingy) +CODE: + sv_magicext(SvRV(rsv), NULL, PERL_MAGIC_ext, &vtbl_myset_dies, + (const char *)thingy, 0); + + void sv_magic_myset(SV *rsv, SV *thingy) CODE: @@ -4736,6 +4894,43 @@ sv_magic_mycopy_count(SV *rsv) OUTPUT: RETVAL +int +my_av_store(SV *rsv, IV i, SV *sv) + CODE: + if (av_store((AV*)SvRV(rsv), i, sv)) { + SvREFCNT_inc(sv); + RETVAL = 1; + } else { + RETVAL = 0; + } + OUTPUT: + RETVAL + +STRLEN +sv_refcnt(SV *sv) + CODE: + RETVAL = SvREFCNT(sv); + OUTPUT: + RETVAL + +void +test_mortal_destructor_sv(SV *coderef, SV *args) + CODE: + MORTALDESTRUCTOR_SV(coderef,args); + +void +test_mortal_destructor_av(SV *coderef, AV *args) + CODE: + /* passing in an AV cast to SV is different from a SV ref to an AV */ + MORTALDESTRUCTOR_SV(coderef, (SV *)args); + +void +test_mortal_svfunc_x(SV *args) + CODE: + MORTALSVFUNC_X(&destruct_test,args); + + + MODULE = XS::APItest PACKAGE = XS::APItest @@ -6553,14 +6748,14 @@ test_is_utf8_fixed_width_buf_loclen_flags(char *s, STRLEN len, U32 flags) RETVAL IV -test_utf8_hop_safe(SV *s_sv, STRLEN s_off, IV off) +test_utf8_hop_safe(SV *s_sv, STRLEN s_off, IV hop) PREINIT: STRLEN len; U8 *p; U8 *r; CODE: p = (U8 *)SvPV(s_sv, len); - r = utf8_hop_safe(p + s_off, off, p, p + len); + r = utf8_hop_safe(p + s_off, hop, p, p + len); RETVAL = r - p; OUTPUT: RETVAL @@ -6992,6 +7187,19 @@ test_Perl_langinfo(SV * item) OUTPUT: RETVAL +SV * +gimme() + CODE: + /* facilitate tests that GIMME_V gives the right result + * in XS calls */ + int gimme = GIMME_V; + SV* sv = get_sv("XS::APItest::GIMME_V", GV_ADD); + sv_setiv_mg(sv, (IV)gimme); + RETVAL = &PL_sv_undef; + OUTPUT: + RETVAL + + MODULE = XS::APItest PACKAGE = XS::APItest::Backrefs void @@ -7432,9 +7640,9 @@ test_siphash24() if (hash32 != vectors_32[i]) { failed++; printf( "Error in 32 bit result on test vector of length %d for siphash24\n" - " have: 0x%08x\n" - " want: 0x%08x\n", - i, hash32, vectors_32[i]); + " have: 0x%08" UVxf "\n" + " want: 0x%08" UVxf "\n", + i, (UV)hash32, (UV)vectors_32[i]); } } RETVAL= failed; @@ -7653,9 +7861,9 @@ test_siphash13() if (hash32 != vectors_32[i]) { failed++; printf( "Error in 32 bit result on test vector of length %d for siphash13\n" - " have: 0x%08x\n" - " want: 0x%08x\n", - i, hash32, vectors_32[i]); + " have: 0x%08" UVxf"\n" + " want: 0x%08" UVxf"\n", + i, (UV)hash32, (UV)vectors_32[i]); } } RETVAL= failed; @@ -7663,4 +7871,103 @@ test_siphash13() OUTPUT: RETVAL -#endif +#endif /* END 64 BIT SIPHASH TESTS */ + +MODULE = XS::APItest PACKAGE = XS::APItest::BoolInternals + +UV +test_bool_internals() + CODE: + { + U32 failed = 0; + SV *true_sv_setsv = newSV(0); + SV *false_sv_setsv = newSV(0); + SV *true_sv_set_true = newSV(0); + SV *false_sv_set_false = newSV(0); + SV *true_sv_set_bool = newSV(0); + SV *false_sv_set_bool = newSV(0); + SV *sviv = newSViv(1); + SV *svpv = newSVpvs("whatever"); + TEST_EXPR(SvIOK(sviv) && !SvIandPOK(sviv)); + TEST_EXPR(SvPOK(svpv) && !SvIandPOK(svpv)); + TEST_EXPR(SvIOK(sviv) && !SvBoolFlagsOK(sviv)); + TEST_EXPR(SvPOK(svpv) && !SvBoolFlagsOK(svpv)); + sv_setsv(true_sv_setsv, &PL_sv_yes); + sv_setsv(false_sv_setsv, &PL_sv_no); + sv_set_true(true_sv_set_true); + sv_set_false(false_sv_set_false); + sv_set_bool(true_sv_set_bool, true); + sv_set_bool(false_sv_set_bool, false); + /* note that test_bool_internals_macro() SvREFCNT_dec's its arguments + * after the tests */ + failed += test_bool_internals_macro(newSVsv(&PL_sv_yes), newSVsv(&PL_sv_no)); + failed += test_bool_internals_macro(newSV_true(), newSV_false()); + failed += test_bool_internals_macro(newSVbool(1), newSVbool(0)); + failed += test_bool_internals_macro(true_sv_setsv, false_sv_setsv); + failed += test_bool_internals_macro(true_sv_set_true, false_sv_set_false); + failed += test_bool_internals_macro(true_sv_set_bool, false_sv_set_bool); + SvREFCNT_dec(sviv); + SvREFCNT_dec(svpv); + RETVAL = failed; + } + OUTPUT: + RETVAL + +MODULE = XS::APItest PACKAGE = XS::APItest::CvREFCOUNTED_ANYSV + +UV +test_CvREFCOUNTED_ANYSV() + CODE: + { + U32 failed = 0; + + /* Doesn't matter what actual function we wrap because we're never + * actually going to call it. */ + CV *cv = newXS("XS::APItest::(test-cv-1)", XS_XS__APItest__XSUB_XS_VERSION_undef, __FILE__); + SV *sv = newSV(0); + CvXSUBANY(cv).any_sv = SvREFCNT_inc(sv); + CvREFCOUNTED_ANYSV_on(cv); + TEST_EXPR(SvREFCNT(sv) == 2); + + SvREFCNT_dec((SV *)cv); + TEST_EXPR(SvREFCNT(sv) == 1); + + SvREFCNT_dec(sv); + + RETVAL = failed; + } + OUTPUT: + RETVAL + +MODULE = XS::APItest PACKAGE = XS::APItest::global_locale + +char * +switch_to_global_and_setlocale(int category, const char * locale) + CODE: + switch_to_global_locale(); + RETVAL = setlocale(category, locale); + OUTPUT: + RETVAL + +bool +sync_locale() + CODE: + RETVAL = sync_locale(); + OUTPUT: + RETVAL + +NV +newSvNV(const char * string) + CODE: + RETVAL = SvNV(newSVpv(string, 0)); + OUTPUT: + RETVAL + +MODULE = XS::APItest PACKAGE = XS::APItest::savestack + +IV +get_savestack_ix() + CODE: + RETVAL = PL_savestack_ix; + OUTPUT: + RETVAL diff --git a/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc b/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc index 074fe60d310..d942f90598a 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc +++ b/gnu/usr.bin/perl/ext/XS-APItest/core_or_not.inc @@ -24,7 +24,7 @@ CAT2(sv_setsv_cow_hashkey_, SUFFIX) () { sv_setsv(destination, source); - result = !!SvIsCOW(destination); + result = cBOOL(SvIsCOW(destination)); SvREFCNT_dec(source); SvREFCNT_dec(destination); diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/call.t b/gnu/usr.bin/perl/ext/XS-APItest/t/call.t index 390ed8de938..1116f286fb2 100755 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/call.t +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/call.t @@ -14,7 +14,7 @@ BEGIN { plan(538); use_ok('XS::APItest') }; - +use Config; ######################### # f(): general test sub to be called by call_sv() etc. @@ -343,8 +343,11 @@ for my $fn_type (qw(eval_pv eval_sv call_sv)) { # DAPM 9-Aug-04. A taint test in eval_sv() could die after setting up # a new jump level but before pushing an eval context, leading to # stack corruption +SKIP: { + skip("Your perl was built without taint support", 1) + unless $Config{taint_support}; -fresh_perl_is(<<'EOF', "x=2", { switches => ['-T', '-I../../lib'] }, 'eval_sv() taint'); + fresh_perl_is(<<'EOF', "x=2", { switches => ['-T', '-I../../lib'] }, 'eval_sv() taint'); use XS::APItest; my $x = 0; @@ -357,4 +360,4 @@ sub f { eval { my @a = sort f 2, 1; $x++}; print "x=$x\n"; EOF - +} diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/locale.t b/gnu/usr.bin/perl/ext/XS-APItest/t/locale.t index 2827b3602ae..c727df12982 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/locale.t +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/locale.t @@ -6,30 +6,61 @@ BEGIN { use XS::APItest; use Config; -skip_all("locales not available") unless locales_enabled('LC_NUMERIC'); +skip_all("locales not available") unless locales_enabled(); my @locales = eval { find_locales( &LC_NUMERIC ) }; -skip_all("no LC_NUMERIC locales available") unless @locales; - -my $non_dot_locale; -for (@locales) { +my $comma_locale; +for my $locale (@locales) { + use POSIX; use locale; - setlocale(LC_NUMERIC, $_) or next; + setlocale(LC_NUMERIC, $locale) or next; my $in = 4.2; # avoid any constant folding bugs - if (sprintf("%g", $in) ne "4.2") { - $non_dot_locale = $_; + my $s = sprintf("%g", $in); + if ($s eq "4,2") { + $comma_locale = $locale; last; } } - SKIP: { - if ($Config{usequadmath}) { - skip "no gconvert with usequadmath", 2; + if ($Config{usequadmath}) { + skip "no gconvert with usequadmath", 2; + } + is(test_Gconvert(4.179, 2), "4.2", "Gconvert doesn't recognize underlying locale outside 'use locale'"); + use locale; + is(test_Gconvert(4.179, 2), "4.2", "Gconvert doesn't recognize underlying locale inside 'use locale'"); } - is(test_Gconvert(4.179, 2), "4.2", "Gconvert doesn't recognize underlying locale outside 'use locale'"); - use locale; - is(test_Gconvert(4.179, 2), "4.2", "Gconvert doesn't recognize underlying locale inside 'use locale'"); + +sub check_in_bounds($$$) { + my ($value, $lower, $upper) = @_; + + $value >= $lower && $value <= $upper +} + +SKIP: { + # This checks that when switching to the global locale, the service that + # Perl provides of transparently dealing with locales that have a non-dot + # radix is turned off, but gets turned on again after a sync_locale(); + + skip "no locale with a comma radix available", 5 unless $comma_locale; + + my $global_locale = switch_to_global_and_setlocale(LC_NUMERIC, + $comma_locale); + # Can't do a compare of $global_locale and $comma_locale because what the + # system returns may be an alias. ALl we can do is test for + # success/failure + ok($global_locale, "Successfully switched to $comma_locale"); + is(newSvNV("4.888"), 4, "dot not recognized in global comma locale for SvNV"); + + no warnings 'numeric'; # Otherwise get "Argument isn't numeric in + # subroutine entry" + + is(check_in_bounds(newSvNV("4,888"), 4.88, 4.89), 1, + "comma recognized in global comma locale for SvNV"); + isnt(sync_locale, 0, "sync_locale() returns that was in the global locale"); + + is(check_in_bounds(newSvNV("4.888"), 4.88, 4.89), 1, + "dot recognized in perl-controlled comma locale for SvNV"); } my %correct_C_responses = ( @@ -98,7 +129,7 @@ open my $fh, "<", $hdr; $|=1; SKIP: { - skip "No LC_ALL", 1 unless find_locales( &LC_ALL ); + skip "No LC_ALL", 1 unless locales_enabled('LC_ALL'); use POSIX; setlocale(LC_ALL, "C"); @@ -118,7 +149,7 @@ SKIP: { chomp; next unless / - \d+ $ /x; s/ ^ \# \s* define \s*//x; - m/ (.*) \ (.*) /x; + m/ (\S+) \s+ (.*) /x; $items{$1} = ($has_nl_langinfo) ? $1 # Yields 'YESSTR' : $2; # Yields -54 @@ -148,4 +179,25 @@ SKIP: { } } +@locales = eval { find_locales( &LC_TIME ) }; + +SKIP: { + skip("no LC_TIME locales available") unless @locales; + + for my $locale (@locales) { + use POSIX 'strftime'; + use locale; + setlocale(LC_TIME, $locale) or next; + + # This isn't guaranteed to find failing locales, as it is impractical + # to test all possible dates. But it is much better than no test at + # all + if (strftime('%c', 0, 0, , 12, 18, 11, 87) eq "") { + fail('strftime() built-in expansion factor works for all locales'); + diag("Failed for locale $locale"); + last; + } + } +} + done_testing(); diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/magic.t b/gnu/usr.bin/perl/ext/XS-APItest/t/magic.t index 46feb7ab074..18e0d3e6266 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/magic.t +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/magic.t @@ -4,7 +4,7 @@ use Test::More; use XS::APItest; -my $sv = bless {}, 'Moo'; +our $sv = 'Moo'; my $foo = 'affe'; my $bar = 'tiger'; @@ -15,6 +15,13 @@ sv_magic_foo($sv, $foo); is mg_find_foo($sv), $foo, 'foo magic attached'; ok !mg_find_bar($sv), '... but still no bar magic'; +{ + local $sv = 'Emu'; + sv_magic_foo($sv, $foo); + is mg_find_foo($sv), $foo, 'foo magic attached to localized value'; + ok !mg_find_bar($sv), '... but still no bar magic to localized value'; +} + sv_magic_bar($sv, $bar); is mg_find_foo($sv), $foo, 'foo magic still attached'; is mg_find_bar($sv), $bar, '... and bar magic is there too'; @@ -27,6 +34,14 @@ sv_unmagic_bar($sv); ok !mg_find_foo($sv), 'foo magic still removed'; ok !mg_find_bar($sv), '... and bar magic is removed too'; +sv_magic_baz($sv, $bar); +is mg_find_baz($sv), $bar, 'baz magic attached'; +ok !mg_find_bar($sv), ''; +{ + local $sv = 'Emu'; + ok !mg_find_baz($sv), ''; +} + is(test_get_vtbl(), 0, 'get_vtbl(-1) returns NULL'); eval { sv_magic(\!0, $foo) }; @@ -61,4 +76,59 @@ is $@, "", 'PERL_MAGIC_ext is permitted on read-only things'; is($i, 0, "hash () with set magic"); } +{ + # check if set magic triggered by av_store() via aassign results in + # unreferenced scalars being freed. IOW, results in a double store + # without a corresponding refcount bump. If things work properly this + # should not warn. If there is an issue it will. + my @warn; + local $SIG{__WARN__}= sub { push @warn, $_[0] }; + { + my (@a, $i); + sv_magic_myset_dies(\@a, $i); + eval { + $i = 0; + @a = (1); + }; + } + is(0+@warn, 0, + "If AV set magic dies via aassign it should not warn about double free"); + @warn = (); + { + my (@a, $i, $j); + sv_magic_myset_dies(\@a, $i); + eval { + $j = "blorp"; + my_av_store(\@a,0,$j); + }; + + # Evaluate this boolean as a separate statement, so the two + # temporary \ refs are freed before we start comparing reference + # counts + my $is_same_SV = \$a[0] == \$j; + + if ($is_same_SV) { + # in this case we expect to have 2 refcounts, + # one from $a[0] and one from $j itself. + is( sv_refcnt($j), 2, + "\$a[0] is \$j, so refcount(\$j) should be 2"); + } else { + # Note this branch isn't exercised. Whether by design + # or not. I leave it here because it is a possible valid + # outcome. It is marked TODO so if we start going down + # this path we do so knowingly. + diag "av_store has changed behavior - please review this test"; + TODO:{ + local $TODO = "av_store bug stores even if it dies during magic"; + # in this case we expect to have only 1 refcount, + # from $j itself. + is( sv_refcnt($j), 1, + "\$a[0] is not \$j, so refcount(\$j) should be 1"); + } + } + } + is(0+@warn, 0, + "AV set magic that dies via av_store should not warn about double free"); +} + done_testing; diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/svcatpvf.t b/gnu/usr.bin/perl/ext/XS-APItest/t/svcatpvf.t index 865020da301..b6cce124155 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/svcatpvf.t +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/svcatpvf.t @@ -1,7 +1,7 @@ use strict; use warnings; -use Test::More tests => 4; +use Test::More tests => 6; use XS::APItest; @@ -19,3 +19,13 @@ for my $case (@cases) { like($exn, qr/\b\QCannot yet reorder sv_vcatpvfn() arguments from va_list\E\b/, "explicit $what index forbidden in va_list arguments"); } + +# these actually test newSVpvf() but it is the same underlying logic. +is(test_HvNAMEf(bless {}, "Whatever::You::Like"), + "class='Whatever::You::Like'"); +is(test_HvNAMEf_QUOTEDPREFIX(bless {}, "x" x 1000), + 'class="xxxxxxxxxxxxxxxxxxxxxxxxxx'. + 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'. + 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..."xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'. + 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'. + 'xxxxxxxxxxxxxxxxxxxxx"'); diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/svpv_magic.t b/gnu/usr.bin/perl/ext/XS-APItest/t/svpv_magic.t index 00edb91504b..ed109b9a8bd 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/svpv_magic.t +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/svpv_magic.t @@ -33,7 +33,7 @@ is(eval { XS::APItest::first_byte($1) } || $@, 0303, sub TIESCALAR { bless [], shift } sub FETCH { ++$f; *{chr utf8::unicode_to_native(255)} } tie $t, "main"; -is SvPVutf8($t), "*main::" . byte_utf8a_to_utf8n("\xc3\xbf"), +is SvPVutf8_nolen($t), "*main::" . byte_utf8a_to_utf8n("\xc3\xbf"), 'SvPVutf8 works with get-magic changing the SV type'; is $f, 1, 'SvPVutf8 calls get-magic once'; @@ -44,7 +44,7 @@ package t { } tie $t, "t"; undef $f; -is SvPVutf8($t), byte_utf8a_to_utf8n("\xc3\xbf"), +is SvPVutf8_nolen($t), byte_utf8a_to_utf8n("\xc3\xbf"), 'SvPVutf8 works with get-magic downgrading the SV'; is $f, 1, 'SvPVutf8 calls get-magic once'; ()="$t"; diff --git a/gnu/usr.bin/perl/ext/XS-APItest/t/utf8.t b/gnu/usr.bin/perl/ext/XS-APItest/t/utf8.t index 50d1a4e0fd6..f4af4c42983 100644 --- a/gnu/usr.bin/perl/ext/XS-APItest/t/utf8.t +++ b/gnu/usr.bin/perl/ext/XS-APItest/t/utf8.t @@ -1183,10 +1183,9 @@ for my $restriction (sort keys %restriction_types) { SKIP: { - isASCII - or skip "These tests probably break on non-ASCII", 1; my $simple = join "", "A" .. "J"; - my $utf_ch = "\x{7fffffff}"; + my $utf_ch = "\x{3f_ffff}"; # Highest code point that is same number + # of bytes on ASCII and EBCDIC: 5 utf8::encode($utf_ch); my $utf_ch_len = length $utf_ch; note "utf_ch_len $utf_ch_len"; @@ -1195,10 +1194,9 @@ SKIP: # $bad_end ends with a start byte and a single continuation my $bad_end = substr($utf, 0, length($utf)-$utf_ch_len+2); - # WARNING: all offsets are *byte* offsets my @hop_tests = - ( - # string s off expected name + ( # start byte chars + # string in 'string' to hop expected name [ $simple, 0, 5, 5, "simple in range, forward" ], [ $simple, 10, -5, 5, "simple in range, backward" ], [ $simple, 5, 10, 10, "simple out of range, forward" ], @@ -1209,9 +1207,10 @@ SKIP: [ $utf, $utf_ch_len * 5, -4, $utf_ch_len, "utf in range b, backward" ], [ $utf, $utf_ch_len * 5, 6, length($utf), "utf out of range, forward" ], [ $utf, $utf_ch_len * 5, -6, 0, "utf out of range, backward" ], - [ $bad_start, 0, 1, 1, "bad start, forward 1 from 0" ], - [ $bad_start, 0, $utf_ch_len-1, $utf_ch_len-1, "bad start, forward ch_len-1 from 0" ], - [ $bad_start, 0, $utf_ch_len, $utf_ch_len*2-1, "bad start, forward ch_len from 0" ], + [ $bad_start, 0, 1, $utf_ch_len-1, "bad start, forward 1 from 0" ], + [ $bad_start, 0, 5, 5 * $utf_ch_len-1, "bad start, forward 5 chars from 0" ], + [ $bad_start, 0, 9, length($bad_start)-$utf_ch_len, "bad start, forward 9 chars from 0" ], + [ $bad_start, 0, 10, length $bad_start, "bad start, forward 10 chars from 0" ], [ $bad_start, $utf_ch_len-1, -1, 0, "bad start, back 1 from first start byte" ], [ $bad_start, $utf_ch_len-2, -1, 0, "bad start, back 1 from before first start byte" ], [ $bad_start, 0, -1, 0, "bad start, back 1 from 0" ], @@ -1221,8 +1220,8 @@ SKIP: ); for my $test (@hop_tests) { - my ($str, $s_off, $off, $want, $name) = @$test; - my $result = test_utf8_hop_safe($str, $s_off, $off); + my ($str, $s_off, $hop, $want, $name) = @$test; + my $result = test_utf8_hop_safe($str, $s_off, $hop); is($result, $want, "utf8_hop_safe: $name"); } } diff --git a/gnu/usr.bin/perl/ext/attributes/attributes.pm b/gnu/usr.bin/perl/ext/attributes/attributes.pm index 4f613f40847..313763c6acd 100644 --- a/gnu/usr.bin/perl/ext/attributes/attributes.pm +++ b/gnu/usr.bin/perl/ext/attributes/attributes.pm @@ -1,6 +1,6 @@ package attributes; -our $VERSION = 0.34; +our $VERSION = 0.35; @EXPORT_OK = qw(get reftype); @EXPORT = (); diff --git a/gnu/usr.bin/perl/ext/attributes/attributes.xs b/gnu/usr.bin/perl/ext/attributes/attributes.xs index f2f28df9380..e7d4ee4c7e6 100644 --- a/gnu/usr.bin/perl/ext/attributes/attributes.xs +++ b/gnu/usr.bin/perl/ext/attributes/attributes.xs @@ -78,9 +78,9 @@ modify_SV_attributes(pTHX_ SV *sv, SV **retlist, SV **attrlist, int numattrs) case 'h': if (memEQs(name, 6, "method")) { if (negated) - CvFLAGS(MUTABLE_CV(sv)) &= ~CVf_METHOD; + CvFLAGS(MUTABLE_CV(sv)) &= ~CVf_NOWARN_AMBIGUOUS; else - CvFLAGS(MUTABLE_CV(sv)) |= CVf_METHOD; + CvFLAGS(MUTABLE_CV(sv)) |= CVf_NOWARN_AMBIGUOUS; continue; } break; @@ -173,7 +173,7 @@ usage: cvflags = CvFLAGS((const CV *)sv); if (cvflags & CVf_LVALUE) XPUSHs(newSVpvs_flags("lvalue", SVs_TEMP)); - if (cvflags & CVf_METHOD) + if (cvflags & CVf_NOWARN_AMBIGUOUS) XPUSHs(newSVpvs_flags("method", SVs_TEMP)); break; default: diff --git a/gnu/usr.bin/perl/ext/mro/mro.pm b/gnu/usr.bin/perl/ext/mro/mro.pm index 39ade22efe8..6637ea8eb7e 100644 --- a/gnu/usr.bin/perl/ext/mro/mro.pm +++ b/gnu/usr.bin/perl/ext/mro/mro.pm @@ -12,7 +12,7 @@ use warnings; # mro.pm versions < 1.00 reserved for MRO::Compat # for partial back-compat to 5.[68].x -our $VERSION = '1.26'; +our $VERSION = '1.28'; require XSLoader; XSLoader::load('mro'); diff --git a/gnu/usr.bin/perl/ext/mro/mro.xs b/gnu/usr.bin/perl/ext/mro/mro.xs index 6bedd039a13..ba9921f4697 100644 --- a/gnu/usr.bin/perl/ext/mro/mro.xs +++ b/gnu/usr.bin/perl/ext/mro/mro.xs @@ -14,7 +14,8 @@ static const struct mro_alg c3_alg = =for apidoc mro_get_linear_isa_c3 Returns the C3 linearization of C<@ISA> -the given stash. The return value is a read-only AV*. +the given stash. The return value is a read-only AV* +whose values are string SVs giving class names. C should be 0 (it is used internally in this function's recursion). @@ -504,7 +505,6 @@ mro__nextcan(...) cxix = __dopoptosub_at(ccstack, cxix); for (;;) { GV* cvgv; - STRLEN fq_subname_len; /* we may be in a higher stacklevel, so dig down deeper */ while (cxix < 0) { @@ -545,19 +545,14 @@ mro__nextcan(...) if(SvPOK(sv)) { fq_subname = SvPVX(sv); - fq_subname_len = SvCUR(sv); - - subname_utf8 = SvUTF8(sv) ? 1 : 0; subname = strrchr(fq_subname, ':'); - } else { - subname = NULL; - } - + } if(!subname) Perl_croak(aTHX_ "next::method/next::can/maybe::next::method cannot find enclosing method"); + subname_utf8 = SvUTF8(sv) ? 1 : 0; subname++; - subname_len = fq_subname_len - (subname - fq_subname); + subname_len = SvCUR(sv) - (subname - fq_subname); if(memEQs(subname, subname_len, "__ANON__")) { cxix = __dopoptosub_at(ccstack, cxix - 1); continue; diff --git a/gnu/usr.bin/perl/ext/re/Makefile.PL b/gnu/usr.bin/perl/ext/re/Makefile.PL index f3bdcfdc69f..8d4a576e4c8 100644 --- a/gnu/usr.bin/perl/ext/re/Makefile.PL +++ b/gnu/usr.bin/perl/ext/re/Makefile.PL @@ -1,8 +1,31 @@ +use strict; +use warnings; use ExtUtils::MakeMaker; use File::Spec; use Config; +# [ src => @deps ] +our @files = ( + # compiler files ######################################## + ['regcomp.c' => 'dquote.c', 'invlist_inline.h' ], + ['regcomp_invlist.c' => 'invlist_inline.h' ], + ['regcomp_study.c' ], + ['regcomp_trie.c' ], + ['regcomp_debug.c' ], + # execution engine files ################################ + ['regexec.c' => 'invlist_inline.h' ], + # misc files ############################################ + ['dquote.c' ], + ['invlist_inline.h' ], + ######################################################### +); -my $object = 're_exec$(OBJ_EXT) re_comp$(OBJ_EXT) re$(OBJ_EXT)'; +my @objects = 're$(OBJ_EXT)'; +foreach my $tuple (@files) { + my $src_file = $tuple->[0]; + if ($src_file=~s/reg/re_/ and $src_file=~s/\.c/\$(OBJ_EXT)/) { + push @objects, $src_file; + } +} my $defines = '-DPERL_EXT_RE_BUILD -DPERL_EXT_RE_DEBUG -DPERL_EXT'; @@ -15,45 +38,41 @@ WriteMakefile( @libs ? ( 'LIBS' => [ join(" ", map { "-l$_" } @libs) ] ) : (), VERSION_FROM => 're.pm', XSPROTOARG => '-noprototypes', - OBJECT => $object, + OBJECT => "@objects", DEFINE => $defines, clean => { FILES => '*$(OBJ_EXT) invlist_inline.h *.c ../../lib/re.pm' }, ); package MY; - sub upupfile { File::Spec->catfile(File::Spec->updir, File::Spec->updir, $_[0]); } sub postamble { - my $regcomp_c = upupfile('regcomp.c'); - my $regexec_c = upupfile('regexec.c'); - my $dquote_c = upupfile('dquote.c'); - my $invlist_inline_h = upupfile('invlist_inline.h'); + my $postamble = ""; + foreach my $tuple (@::files) { + my ($file, @deps) = @$tuple; + my $src_file = upupfile($file); + my $target = $file; + $target =~ s/^reg/re_/; + $postamble .= < "t/lexical_debug.pl", stderr => 1 ); diff --git a/gnu/usr.bin/perl/feature.h b/gnu/usr.bin/perl/feature.h index 53be5b3a720..c862864a063 100644 --- a/gnu/usr.bin/perl/feature.h +++ b/gnu/usr.bin/perl/feature.h @@ -1,4 +1,4 @@ -/* -*- buffer-read-only: t -*- +/* -*- mode: C; buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! This file is built by regen/feature.pl. Any changes made here will be lost! @@ -14,24 +14,26 @@ #define FEATURE_BAREWORD_FILEHANDLES_BIT 0x0001 #define FEATURE_BITWISE_BIT 0x0002 -#define FEATURE___SUB___BIT 0x0004 -#define FEATURE_MYREF_BIT 0x0008 -#define FEATURE_DEFER_BIT 0x0010 -#define FEATURE_EVALBYTES_BIT 0x0020 -#define FEATURE_MORE_DELIMS_BIT 0x0040 -#define FEATURE_FC_BIT 0x0080 -#define FEATURE_INDIRECT_BIT 0x0100 -#define FEATURE_ISA_BIT 0x0200 -#define FEATURE_MULTIDIMENSIONAL_BIT 0x0400 -#define FEATURE_POSTDEREF_QQ_BIT 0x0800 -#define FEATURE_REFALIASING_BIT 0x1000 -#define FEATURE_SAY_BIT 0x2000 -#define FEATURE_SIGNATURES_BIT 0x4000 -#define FEATURE_STATE_BIT 0x8000 -#define FEATURE_SWITCH_BIT 0x10000 -#define FEATURE_TRY_BIT 0x20000 -#define FEATURE_UNIEVAL_BIT 0x40000 -#define FEATURE_UNICODE_BIT 0x80000 +#define FEATURE_CLASS_BIT 0x0004 +#define FEATURE___SUB___BIT 0x0008 +#define FEATURE_MYREF_BIT 0x0010 +#define FEATURE_DEFER_BIT 0x0020 +#define FEATURE_EVALBYTES_BIT 0x0040 +#define FEATURE_MORE_DELIMS_BIT 0x0080 +#define FEATURE_FC_BIT 0x0100 +#define FEATURE_INDIRECT_BIT 0x0200 +#define FEATURE_ISA_BIT 0x0400 +#define FEATURE_MODULE_TRUE_BIT 0x0800 +#define FEATURE_MULTIDIMENSIONAL_BIT 0x1000 +#define FEATURE_POSTDEREF_QQ_BIT 0x2000 +#define FEATURE_REFALIASING_BIT 0x4000 +#define FEATURE_SAY_BIT 0x8000 +#define FEATURE_SIGNATURES_BIT 0x10000 +#define FEATURE_STATE_BIT 0x20000 +#define FEATURE_SWITCH_BIT 0x40000 +#define FEATURE_TRY_BIT 0x80000 +#define FEATURE_UNIEVAL_BIT 0x100000 +#define FEATURE_UNICODE_BIT 0x200000 #define FEATURE_BUNDLE_DEFAULT 0 #define FEATURE_BUNDLE_510 1 @@ -40,10 +42,16 @@ #define FEATURE_BUNDLE_523 4 #define FEATURE_BUNDLE_527 5 #define FEATURE_BUNDLE_535 6 +#define FEATURE_BUNDLE_537 7 #define FEATURE_BUNDLE_CUSTOM (HINT_FEATURE_MASK >> HINT_FEATURE_SHIFT) -#define CURRENT_HINTS \ +/* this is preserved for testing and asserts */ +#define OLD_CURRENT_HINTS \ (PL_curcop == &PL_compiling ? PL_hints : PL_curcop->cop_hints) +/* this is the same thing, but simpler (no if) as PL_hints expands + to PL_compiling.cop_hints */ +#define CURRENT_HINTS \ + PL_curcop->cop_hints #define CURRENT_FEATURE_BUNDLE \ ((CURRENT_HINTS & HINT_FEATURE_MASK) >> HINT_FEATURE_SHIFT) @@ -57,14 +65,15 @@ #define FEATURE_FC_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_FC_BIT)) \ ) #define FEATURE_ISA_IS_ENABLED \ ( \ - CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_535 \ + (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_ISA_BIT)) \ ) @@ -72,7 +81,7 @@ #define FEATURE_SAY_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_SAY_BIT)) \ ) @@ -83,6 +92,12 @@ FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT) \ ) +#define FEATURE_CLASS_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED_MASK(FEATURE_CLASS_BIT) \ + ) + #define FEATURE_DEFER_IS_ENABLED \ ( \ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ @@ -92,7 +107,7 @@ #define FEATURE_STATE_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_STATE_BIT)) \ ) @@ -108,7 +123,7 @@ #define FEATURE_BITWISE_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_527 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_BITWISE_BIT)) \ ) @@ -123,14 +138,15 @@ #define FEATURE_EVALBYTES_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_EVALBYTES_BIT)) \ ) #define FEATURE_SIGNATURES_IS_ENABLED \ ( \ - CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_535 \ + (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_SIGNATURES_BIT)) \ ) @@ -138,11 +154,18 @@ #define FEATURE___SUB___IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE___SUB___BIT)) \ ) +#define FEATURE_MODULE_TRUE_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_537 \ + || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED_MASK(FEATURE_MODULE_TRUE_BIT)) \ + ) + #define FEATURE_REFALIASING_IS_ENABLED \ ( \ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ @@ -152,7 +175,7 @@ #define FEATURE_POSTDEREF_QQ_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_523 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_POSTDEREF_QQ_BIT)) \ ) @@ -160,7 +183,7 @@ #define FEATURE_UNIEVAL_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_UNIEVAL_BIT)) \ ) @@ -174,7 +197,7 @@ #define FEATURE_UNICODE_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \ - CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535) \ + CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ FEATURE_IS_ENABLED_MASK(FEATURE_UNICODE_BIT)) \ ) @@ -222,6 +245,9 @@ S_enable_feature_bundle(pTHX_ SV *ver) SV *comp_ver = sv_newmortal(); PL_hints = (PL_hints &~ HINT_FEATURE_MASK) | ( + (sv_setnv(comp_ver, 5.037), + vcmp(ver, upg_version(comp_ver, FALSE)) >= 0) + ? FEATURE_BUNDLE_537 : (sv_setnv(comp_ver, 5.035), vcmp(ver, upg_version(comp_ver, FALSE)) >= 0) ? FEATURE_BUNDLE_535 : @@ -284,6 +310,14 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen, } return; + case 'c': + if (keylen == sizeof("feature_class")-1 + && memcmp(subf+1, "lass", keylen - sizeof("feature_")) == 0) { + mask = FEATURE_CLASS_BIT; + break; + } + return; + case 'd': if (keylen == sizeof("feature_defer")-1 && memcmp(subf+1, "efer", keylen - sizeof("feature_")) == 0) { @@ -322,7 +356,12 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen, return; case 'm': - if (keylen == sizeof("feature_more_delims")-1 + if (keylen == sizeof("feature_module_true")-1 + && memcmp(subf+1, "odule_true", keylen - sizeof("feature_")) == 0) { + mask = FEATURE_MODULE_TRUE_BIT; + break; + } + else if (keylen == sizeof("feature_more_delims")-1 && memcmp(subf+1, "ore_delims", keylen - sizeof("feature_")) == 0) { mask = FEATURE_MORE_DELIMS_BIT; break; @@ -412,4 +451,4 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen, #endif /* PERL_FEATURE_H_ */ -/* ex: set ro: */ +/* ex: set ro ft=c: */ diff --git a/gnu/usr.bin/perl/globvar.sym b/gnu/usr.bin/perl/globvar.sym index 22e353f34d3..e086612f1c2 100644 --- a/gnu/usr.bin/perl/globvar.sym +++ b/gnu/usr.bin/perl/globvar.sym @@ -19,7 +19,6 @@ PL_EXACT_REQ8_bitmask PL_extended_utf8_dfa_tab PL_fold PL_fold_latin1 -PL_fold_locale PL_hexdigit PL_inf PL_interp_size @@ -58,8 +57,8 @@ PL_phase_names PL_ppaddr PL_reg_extflags_name PL_reg_intflags_name -PL_reg_name -PL_regkind +PL_regnode_info +PL_regnode_name PL_revision PL_runops_dbg PL_runops_std diff --git a/gnu/usr.bin/perl/gv.c b/gnu/usr.bin/perl/gv.c index 8158fb478a6..6b9803b5cd2 100644 --- a/gnu/usr.bin/perl/gv.c +++ b/gnu/usr.bin/perl/gv.c @@ -79,7 +79,6 @@ Perl_gv_add_by_type(pTHX_ GV *gv, svtype type) } else { what = type == SVt_PVAV ? "array" : "scalar"; } - /* diag_listed_as: Bad symbol for filehandle */ Perl_croak(aTHX_ "Bad symbol for %s", what); } @@ -207,9 +206,6 @@ Perl_newGP(pTHX_ GV *const gv) U32 hash; const char *file; STRLEN len; -#ifndef USE_ITHREADS - GV *filegv; -#endif PERL_ARGS_ASSERT_NEWGP; Newxz(gp, 1, GP); @@ -223,19 +219,13 @@ Perl_newGP(pTHX_ GV *const gv) frees INIT before looking up DESTROY (and creating *DESTROY) */ if (PL_curcop) { + char *tmp= CopFILE(PL_curcop); gp->gp_line = CopLINE(PL_curcop); /* 0 otherwise Newxz */ -#ifdef USE_ITHREADS - if (CopFILE(PL_curcop)) { - file = CopFILE(PL_curcop); - len = strlen(file); - } -#else - filegv = CopFILEGV(PL_curcop); - if (filegv) { - file = GvNAME(filegv)+2; - len = GvNAMELEN(filegv)-2; + + if (tmp) { + file = tmp; + len = CopFILE_LEN(PL_curcop); } -#endif else goto no_file; } else { @@ -311,7 +301,7 @@ Perl_cvgv_from_hek(pTHX_ CV *cv) if (!isGV(gv)) gv_init_pvn(gv, CvSTASH(cv), HEK_KEY(CvNAME_HEK(cv)), HEK_LEN(CvNAME_HEK(cv)), - SVf_UTF8 * !!HEK_UTF8(CvNAME_HEK(cv))); + SVf_UTF8 * cBOOL(HEK_UTF8(CvNAME_HEK(cv)))); if (!CvNAMED(cv)) { /* gv_init took care of it */ assert (SvANY(cv)->xcv_gv_u.xcv_gv == gv); return gv; @@ -615,23 +605,28 @@ S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv, switch (code < 0 ? -code : code) { /* no support for \&CORE::infix; no support for funcs that do not parse like funcs */ - case KEY___DATA__: case KEY___END__: case KEY_and: case KEY_AUTOLOAD: - case KEY_BEGIN : case KEY_CHECK : case KEY_catch : case KEY_cmp: - case KEY_default : case KEY_defer : case KEY_DESTROY: + case KEY___DATA__: case KEY___END__ : + case KEY_ADJUST : case KEY_AUTOLOAD: case KEY_BEGIN : case KEY_CHECK : + case KEY_DESTROY : case KEY_END : case KEY_INIT : case KEY_UNITCHECK: + case KEY_and : case KEY_catch : case KEY_class : + case KEY_cmp : case KEY_default: case KEY_defer : case KEY_do : case KEY_dump : case KEY_else : case KEY_elsif : - case KEY_END : case KEY_eq : case KEY_eval : case KEY_finally: + case KEY_eq : case KEY_eval : case KEY_field : + case KEY_finally: case KEY_for : case KEY_foreach: case KEY_format: case KEY_ge : case KEY_given : case KEY_goto : case KEY_grep : case KEY_gt : - case KEY_if : case KEY_isa : case KEY_INIT : case KEY_last : + case KEY_if : case KEY_isa : + case KEY_last : case KEY_le : case KEY_local : case KEY_lt : case KEY_m : - case KEY_map : case KEY_my: + case KEY_map : case KEY_method : case KEY_my : case KEY_ne : case KEY_next : case KEY_no: case KEY_or: case KEY_our: case KEY_package: case KEY_print: case KEY_printf: case KEY_q : case KEY_qq : case KEY_qr : case KEY_qw : case KEY_qx : case KEY_redo : case KEY_require: case KEY_return: case KEY_s : case KEY_say : case KEY_sort : case KEY_state: case KEY_sub : - case KEY_tr : case KEY_try : case KEY_UNITCHECK: case KEY_unless: + case KEY_tr : case KEY_try : + case KEY_unless: case KEY_until: case KEY_use : case KEY_when : case KEY_while : case KEY_x : case KEY_xor : case KEY_y : return NULL; @@ -725,14 +720,56 @@ S_maybe_add_coresub(pTHX_ HV * const stash, GV *gv, } /* -=for apidoc gv_fetchmeth +=for apidoc gv_fetchmeth +=for apidoc_item gv_fetchmeth_pv +=for apidoc_item gv_fetchmeth_pvn +=for apidoc_item gv_fetchmeth_sv -Like L, but lacks a flags parameter. +These each look for a glob with name C, containing a defined subroutine, +returning the GV of that glob if found, or C if not. -=for apidoc gv_fetchmeth_sv +C is always searched (first), unless it is C. -Exactly like L, but takes the name string in the form -of an SV instead of a string/length pair. +If C is NULL, or was searched but nothing was found in it, and the +C bit is set in C, stashes accessible via C<@ISA> are searched +next. Searching is conducted according to L order|perlmroapi>. + +Finally, if no matches were found so far, and the C flag in +C is not set, C is searched. + +The argument C should be either 0 or -1. If -1, the function will +return without any side effects or caching. If 0, the function makes sure +there is a glob named C in C, creating one if necessary. +The subroutine slot in the glob will be set to any subroutine found in the +C and C search, hence caching any C result. Note that +subroutines found in C are not cached. + +The GV returned from these may be a method cache entry, which is not visible to +Perl code. So when calling C, you should not use the GV directly; +instead, you should use the method's CV, which can be obtained from the GV with +the C macro. + +The only other significant value for C is C, indicating that +C is to be treated as being encoded in UTF-8. + +Plain C lacks a C parameter, hence always searches in +C, then C, and C is never UTF-8. Otherwise it is +exactly like C. + +The other forms do have a C parameter, and differ only in how the glob +name is specified. + +In C, C is a C language NUL-terminated string. + +In C, C points to the first byte of the name, and an +additional parameter, C, specifies its length in bytes. Hence, the name +may contain embedded-NUL characters. + +In C, C<*name> is an SV, and the name is the PV extracted from +that, using L>. If the SV is marked as being in UTF-8, the extracted +PV will also be. + +=for apidoc Amnh||GV_SUPER =cut */ @@ -751,14 +788,6 @@ Perl_gv_fetchmeth_sv(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags) return gv_fetchmeth_pvn(stash, namepv, namelen, level, flags); } -/* -=for apidoc gv_fetchmeth_pv - -Exactly like L, but takes a nul-terminated string -instead of a string/length pair. - -=cut -*/ GV * Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags) @@ -767,38 +796,6 @@ Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags) return gv_fetchmeth_internal(stash, NULL, name, strlen(name), level, flags); } -/* -=for apidoc gv_fetchmeth_pvn - -Returns the glob with the given C and a defined subroutine or -C. The glob lives in the given C, or in the stashes -accessible via C<@ISA> and C. - -The argument C should be either 0 or -1. If C, as a -side-effect creates a glob with the given C in the given C -which in the case of success contains an alias for the subroutine, and sets -up caching info for this glob. - -The only significant values for C are C, C, and -C. - -C indicates that we want to look up the method in the superclasses -of the C. - -C indicates that we do not want to look up the method in -the stash accessible by C. - -The -GV returned from C may be a method cache entry, which is not -visible to Perl code. So when calling C, you should not use -the GV directly; instead, you should use the method's CV, which can be -obtained from the GV with the C macro. - -=for apidoc Amnh||GV_SUPER - -=cut -*/ - /* NOTE: No support for tied ISA */ PERL_STATIC_INLINE GV* @@ -915,8 +912,8 @@ S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, } else { Perl_ck_warner(aTHX_ packWARN(WARN_SYNTAX), "While trying to resolve method call %.*s->%.*s()" - " can not locate package \"%" SVf "\" yet it is mentioned in @%.*s::ISA" - " (perhaps you forgot to load \"%" SVf "\"?)", + " can not locate package %" SVf_QUOTEDPREFIX " yet it is mentioned in @%.*s::ISA" + " (perhaps you forgot to load %" SVf_QUOTEDPREFIX "?)", (int) hvnamelen, hvname, (int) len, name, SVfARG(linear_sv), @@ -1202,12 +1199,12 @@ Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN le } else if ( sep_len >= 7 && strBEGINs(last_separator - 7, "::SUPER")) { - /* don't autovifify if ->NoSuchStash::SUPER::method */ + /* don't autovivify if ->NoSuchStash::SUPER::method */ stash = gv_stashpvn(origname, sep_len - 7, is_utf8); if (stash) flags |= GV_SUPER; } else { - /* don't autovifify if ->NoSuchStash::method */ + /* don't autovivify if ->NoSuchStash::method */ stash = gv_stashpvn(origname, sep_len, is_utf8); } ostash = stash; @@ -1244,8 +1241,8 @@ Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN le return gv; } Perl_croak(aTHX_ - "Can't locate object method \"%" UTF8f - "\" via package \"%" HEKf "\"", + "Can't locate object method %" UTF8f_QUOTEDPREFIX "" + " via package %" HEKf_QUOTEDPREFIX, UTF8fARG(is_utf8, name_end - name, name), HEKfARG(HvNAME_HEK(stash))); } @@ -1260,9 +1257,9 @@ Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN le } Perl_croak(aTHX_ - "Can't locate object method \"%" UTF8f - "\" via package \"%" SVf "\"" - " (perhaps you forgot to load \"%" SVf "\"?)", + "Can't locate object method %" UTF8f_QUOTEDPREFIX "" + " via package %" SVf_QUOTEDPREFIX "" + " (perhaps you forgot to load %" SVf_QUOTEDPREFIX "?)", UTF8fARG(is_utf8, name_end - name, name), SVfARG(packnamesv), SVfARG(packnamesv)); } @@ -1293,6 +1290,36 @@ Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN le return gv; } + +/* +=for apidoc gv_autoload_pv +=for apidoc_item gv_autoload_pvn +=for apidoc_item gv_autoload_sv + +These each search for an C method, returning NULL if not found, or +else returning a pointer to its GV, while setting the package +L|perlobj/AUTOLOAD> variable to C (fully qualified). Also, +if found and the GV's CV is an XSUB, the CV's PV will be set to C, and +its stash will be set to the stash of the GV. + +Searching is done in L order|perlmroapi>, as specified in +L>, beginning with C if it isn't NULL. + +The forms differ only in how C is specified. + +In C, C is a C language NUL-terminated string. + +In C, C points to the first byte of the name, and an +additional parameter, C, specifies its length in bytes. Hence, C<*name> +may contain embedded-NUL characters. + +In C, C<*namesv> is an SV, and the name is the PV extracted +from that using L>. If the SV is marked as being in UTF-8, the +extracted PV will also be. + +=cut +*/ + GV* Perl_gv_autoload_sv(pTHX_ HV *stash, SV* namesv, U32 flags) { @@ -1336,7 +1363,7 @@ Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags) stash = NULL; } else - packname = sv_2mortal(newSVhek(HvNAME_HEK(stash))); + packname = newSVhek_mortal(HvNAME_HEK(stash)); if (flags & GV_SUPER) sv_catpvs(packname, "::SUPER"); } if (!(gv = gv_fetchmeth_pvn(stash, S_autoload, S_autolen, FALSE, @@ -1360,15 +1387,15 @@ Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags) UTF8fARG(is_utf8, len, name)); if (CvISXSUB(cv)) { - /* Instead of forcing the XSUB do another lookup for $AUTOLOAD + /* Instead of forcing the XSUB to do another lookup for $AUTOLOAD * and split that value on the last '::', pass along the same data * via the SvPVX field in the CV, and the stash in CvSTASH. * * Due to an unfortunate accident of history, the SvPVX field - * serves two purposes. It is also used for the subroutine's pro- - * type. Since SvPVX has been documented as returning the sub name - * for a long time, but not as returning the prototype, we have - * to preserve the SvPVX AUTOLOAD behaviour and put the prototype + * serves two purposes. It is also used for the subroutine's + * prototype. Since SvPVX has been documented as returning the sub + * name for a long time, but not as returning the prototype, we have to + * preserve the SvPVX AUTOLOAD behaviour and put the prototype * elsewhere. * * We put the prototype in the same allocated buffer, but after @@ -1606,7 +1633,7 @@ S_gv_stashpvn_internal(pTHX_ const char *name, U32 namelen, I32 flags) stash = GvHV(tmpgv); if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL; assert(stash); - if (!HvNAME_get(stash)) { + if (!HvHasNAME(stash)) { hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 ); /* FIXME: This is a repeat of logic in gv_fetchpvn_flags */ @@ -1736,6 +1763,14 @@ S_gv_magicalize_isa(pTHX_ GV *gv) GvMULTI_on(gv); sv_magic(MUTABLE_SV(av), MUTABLE_SV(gv), PERL_MAGIC_isa, NULL, 0); + + if(HvSTASH_IS_CLASS(GvSTASH(gv))) { + /* Don't permit modification of @ISA outside of the class management + * code. This is temporarily undone by class.c when fiddling with the + * array, so it knows it can be done safely. + */ + SvREADONLY_on((SV *)av); + } } /* This function grabs name and tries to split a stash and glob @@ -1812,7 +1847,7 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, if (!(*stash = GvHV(*gv))) { *stash = GvHV(*gv) = newHV(); - if (!HvNAME_get(*stash)) { + if (!HvHasNAME(*stash)) { if (GvSTASH(*gv) == PL_defstash && *len == 6 && strBEGINs(*name, "CORE")) hv_name_sets(*stash, "CORE", 0); @@ -1826,7 +1861,7 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, mro_package_moved(*stash, NULL, *gv, 1); } } - else if (!HvNAME_get(*stash)) + else if (!HvHasNAME(*stash)) hv_name_set(*stash, nambeg, name_cursor - nambeg, is_utf8); } @@ -2176,29 +2211,37 @@ S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, require_tie_mod_s(gv, '-', "Tie::Hash::NamedCapture",0); } break; - case '\005': /* $^ENCODING */ + case '\005': /* ${^ENCODING} */ if (memEQs(name, len, "\005NCODING")) goto magicalize; break; - case '\007': /* $^GLOBAL_PHASE */ + case '\007': /* ${^GLOBAL_PHASE} */ if (memEQs(name, len, "\007LOBAL_PHASE")) goto ro_magicalize; break; - case '\014': /* $^LAST_FH */ - if (memEQs(name, len, "\014AST_FH")) + case '\010': /* %{^HOOK} */ + if (memEQs(name, len, "\010OOK")) { + GvMULTI_on(gv); + HV *hv = GvHVn(gv); + hv_magic(hv, NULL, PERL_MAGIC_hook); + } + break; + case '\014': + if ( memEQs(name, len, "\014AST_FH") || /* ${^LAST_FH} */ + memEQs(name, len, "\014AST_SUCCESSFUL_PATTERN")) /* ${^LAST_SUCCESSFUL_PATTERN} */ goto ro_magicalize; break; - case '\015': /* $^MATCH */ + case '\015': /* ${^MATCH} */ if (memEQs(name, len, "\015ATCH")) { paren = RX_BUFF_IDX_CARET_FULLMATCH; goto storeparen; } break; - case '\017': /* $^OPEN */ + case '\017': /* ${^OPEN} */ if (memEQs(name, len, "\017PEN")) goto magicalize; break; - case '\020': /* $^PREMATCH $^POSTMATCH */ + case '\020': /* ${^PREMATCH} ${^POSTMATCH} */ if (memEQs(name, len, "\020REMATCH")) { paren = RX_BUFF_IDX_CARET_PREMATCH; goto storeparen; @@ -2532,8 +2575,8 @@ to C makes it behave identically to C. =for apidoc Amnh||GV_ADDMG =for apidoc Amnh||GV_ADDMULTI =for apidoc Amnh||GV_ADDWARN -=for apidoc Amnh||GV_NOADD_NOINIT =for apidoc Amnh||GV_NOINIT +=for apidoc Amnh||GV_NOADD_NOINIT =for apidoc Amnh||GV_NOTQUAL =for apidoc Amnh||GV_NO_SVGMAGIC =for apidoc Amnh||SVf_UTF8 @@ -2677,10 +2720,10 @@ Perl_gv_fetchpvn_flags(pTHX_ const char *nambeg, STRLEN full_len, I32 flags, } /* -=for apidoc gv_fullname3 -=for apidoc_item gv_fullname4 -=for apidoc_item gv_efullname3 +=for apidoc gv_efullname3 =for apidoc_item gv_efullname4 +=for apidoc_item gv_fullname3 +=for apidoc_item gv_fullname4 Place the full package name of C into C. The C forms return instead the effective package name (see L). @@ -2713,7 +2756,7 @@ Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain) } } else sv_catpvs(sv,"__ANON__::"); - sv_catsv(sv,sv_2mortal(newSVhek(GvNAME_HEK(gv)))); + sv_catsv(sv,newSVhek_mortal(GvNAME_HEK(gv))); } void @@ -2738,7 +2781,7 @@ Perl_gv_check(pTHX_ HV *stash) PERL_ARGS_ASSERT_GV_CHECK; - if (!SvOOK(stash)) + if (!HvHasAUX(stash)) return; assert(HvARRAY(stash)); @@ -2757,7 +2800,7 @@ Perl_gv_check(pTHX_ HV *stash) (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv))) { if (hv != PL_defstash && hv != stash - && !(SvOOK(hv) + && !(HvHasAUX(hv) && (HvAUX(hv)->xhv_aux_flags & HvAUXf_SCAN_STASH)) ) gv_check(hv); /* nested package */ @@ -2773,9 +2816,11 @@ Perl_gv_check(pTHX_ HV *stash) if (SvTYPE(gv) != SVt_PVGV || GvMULTI(gv)) continue; file = GvFILE(gv); + assert(PL_curcop == &PL_compiling); CopLINE_set(PL_curcop, GvLINE(gv)); #ifdef USE_ITHREADS - CopFILE(PL_curcop) = (char *)file; /* set for warning */ + SAVECOPFILE_FREE(PL_curcop); + CopFILE_set(PL_curcop, (char *)file); /* set for warning */ #else CopFILEGV(PL_curcop) = gv_fetchfile_flags(file, HEK_LEN(GvFILE_HEK(gv)), 0); @@ -2915,12 +2960,12 @@ Perl_gp_free(pTHX_ GV *gv) simple problems likely found by fuzzers but never written by humans, whilst leaving working code unchanged. */ if (sv) { - SV *referant; + SV *referent; if (SvREFCNT(sv) > 1 || SvOBJECT(sv) || UNLIKELY(in_global_destruction)) { SvREFCNT_dec_NN(sv); sv = NULL; - } else if (SvROK(sv) && (referant = SvRV(sv)) - && (SvREFCNT(referant) > 1 || SvOBJECT(referant))) { + } else if (SvROK(sv) && (referent = SvRV(sv)) + && (SvREFCNT(referent) > 1 || SvOBJECT(referent))) { SvREFCNT_dec_NN(sv); sv = NULL; } else { @@ -3110,7 +3155,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing) sv_unmagic(MUTABLE_SV(stash), PERL_MAGIC_overload_table); } - DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME_get(stash)) ); + DEBUG_o( Perl_deb(aTHX_ "Recalculating overload magic in package %s\n",HvNAME_get(stash)) ); Zero(&amt,1,AMT); amt.was_ok_sub = newgen; @@ -3152,7 +3197,7 @@ Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing) filled = 1; } - assert(SvOOK(stash)); + assert(HvHasAUX(stash)); /* initially assume the worst */ HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_NO_DEREF; @@ -3274,7 +3319,7 @@ Perl_gv_handler(pTHX_ HV *stash, I32 id) U32 newgen; struct mro_meta* stash_meta; - if (!stash || !HvNAME_get(stash)) + if (!stash || !HvHasNAME(stash)) return NULL; stash_meta = HvMROMETA(stash); @@ -3353,6 +3398,153 @@ Perl_try_amagic_un(pTHX_ int method, int flags) { } +/* +=for apidoc amagic_applies + +Check C to see if the overloaded (active magic) operation C +applies to it. If the sv is not SvROK or it is not an object then returns +false, otherwise checks if the object is blessed into a class supporting +overloaded operations, and returns true if a call to amagic_call() with +this SV and the given method would trigger an amagic operation, including +via the overload fallback rules or via nomethod. Thus a call like: + + amagic_applies(sv, string_amg, AMG_unary) + +would return true for an object with overloading set up in any of the +following ways: + + use overload q("") => sub { ... }; + use overload q(0+) => sub { ... }, fallback => 1; + +and could be used to tell if a given object would stringify to something +other than the normal default ref stringification. + +Note that the fact that this function returns TRUE does not mean you +can succesfully perform the operation with amagic_call(), for instance +any overloaded method might throw a fatal exception, however if this +function returns FALSE you can be confident that it will NOT perform +the given overload operation. + +C is an integer enum, one of the values found in F, +for instance C. + +C should be set to AMG_unary for unary operations. + +=cut +*/ +bool +Perl_amagic_applies(pTHX_ SV *sv, int method, int flags) +{ + PERL_ARGS_ASSERT_AMAGIC_APPLIES; + PERL_UNUSED_VAR(flags); + + assert(method >= 0 && method < NofAMmeth); + + if (!SvAMAGIC(sv)) + return FALSE; + + HV *stash = SvSTASH(SvRV(sv)); + if (!Gv_AMG(stash)) + return FALSE; + + MAGIC *mg = mg_find((const SV *)stash, PERL_MAGIC_overload_table); + if (!mg) + return FALSE; + + CV **cvp = NULL; + AMT *amtp = NULL; + if (AMT_AMAGIC((AMT *)mg->mg_ptr)) { + amtp = (AMT *)mg->mg_ptr; + cvp = amtp->table; + } + if (!cvp) + return FALSE; + + if (cvp[method]) + return TRUE; + + /* Note this logic should be kept in sync with amagic_call() */ + if (amtp->fallback > AMGfallNEVER && flags & AMGf_unary) { + CV *cv; /* This makes it easier to kee ... */ + int off,off1; /* ... in sync with amagic_call() */ + + /* look for substituted methods */ + /* In all the covered cases we should be called with assign==0. */ + switch (method) { + case inc_amg: + if ((cv = cvp[off=add_ass_amg]) || ((cv = cvp[off = add_amg]))) + return TRUE; + break; + case dec_amg: + if((cv = cvp[off = subtr_ass_amg]) || ((cv = cvp[off = subtr_amg]))) + return TRUE; + break; + case bool__amg: + if ((cv = cvp[off=numer_amg]) || (cv = cvp[off=string_amg])) + return TRUE; + break; + case numer_amg: + if((cv = cvp[off=string_amg]) || (cv = cvp[off=bool__amg])) + return TRUE; + break; + case string_amg: + if((cv = cvp[off=numer_amg]) || (cv = cvp[off=bool__amg])) + return TRUE; + break; + case not_amg: + if((cv = cvp[off=bool__amg]) + || (cv = cvp[off=numer_amg]) + || (cv = cvp[off=string_amg])) + return TRUE; + break; + case abs_amg: + if((cvp[off1=lt_amg] || cvp[off1=ncmp_amg]) + && ((cv = cvp[off=neg_amg]) || (cv = cvp[off=subtr_amg]))) + return TRUE; + break; + case neg_amg: + if ((cv = cvp[off=subtr_amg])) + return TRUE; + break; + } + } else if (((cvp && amtp->fallback > AMGfallNEVER)) + && !(flags & AMGf_unary)) { + /* We look for substitution for + * comparison operations and + * concatenation */ + if (method==concat_amg || method==concat_ass_amg + || method==repeat_amg || method==repeat_ass_amg) { + return FALSE; /* Delegate operation to string conversion */ + } + switch (method) { + case lt_amg: + case le_amg: + case gt_amg: + case ge_amg: + case eq_amg: + case ne_amg: + if (cvp[ncmp_amg]) + return TRUE; + break; + case slt_amg: + case sle_amg: + case sgt_amg: + case sge_amg: + case seq_amg: + case sne_amg: + if (cvp[scmp_amg]) + return TRUE; + break; + } + } + + if (cvp[nomethod_amg]) + return TRUE; + + return FALSE; +} + + /* Implement tryAMAGICbin_MG macro. Do get magic, then see if the two stack args are overloaded and if so call it. @@ -3448,7 +3640,7 @@ Perl_amagic_deref_call(pTHX_ SV *ref, int method) { return ref; /* return quickly if none of the deref ops are overloaded */ stash = SvSTASH(SvRV(ref)); - assert(SvOOK(stash)); + assert(HvHasAUX(stash)); if (HvAUX(stash)->xhv_aux_flags & HvAUXf_NO_DEREF) return ref; @@ -3560,9 +3752,11 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) #ifdef DEBUGGING fl = 1, #endif - cv = cvp[off=method])))) { + cv = cvp[off=method])))) + { lr = -1; /* Call method for left argument */ } else { + /* Note this logic should be kept in sync with amagic_applies() */ if (cvp && amtp->fallback > AMGfallNEVER && flags & AMGf_unary) { int logic; @@ -3756,7 +3950,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) "in overloaded package ": "has no overloaded magic", SvAMAGIC(left)? - SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(left)))))): + SVfARG(newSVhek_mortal(HvNAME_HEK(SvSTASH(SvRV(left))))): SVfARG(&PL_sv_no), SvAMAGIC(right)? ",\n\tright argument in overloaded package ": @@ -3764,7 +3958,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) ? "" : ",\n\tright argument has no overloaded magic"), SvAMAGIC(right)? - SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(SvSTASH(SvRV(right)))))): + SVfARG(newSVhek_mortal(HvNAME_HEK(SvSTASH(SvRV(right))))): SVfARG(&PL_sv_no))); if (use_default_op) { DEBUG_o( Perl_deb(aTHX_ "%" SVf, SVfARG(msg)) ); @@ -3850,12 +4044,12 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) flags & AMGf_unary? "" : lr==1 ? " for right argument": " for left argument", flags & AMGf_unary? " for argument" : "", - stash ? SVfARG(sv_2mortal(newSVhek(HvNAME_HEK(stash)))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)), + stash ? SVfARG(newSVhek_mortal(HvNAME_HEK(stash))) : SVfARG(newSVpvs_flags("null", SVs_TEMP)), fl? ",\n\tassignment variant used": "") ); } #endif /* Since we use shallow copy during assignment, we need - * to dublicate the contents, probably calling user-supplied + * to duplicate the contents, probably calling user-supplied * version of copy operator */ /* We need to copy in following cases: @@ -3893,7 +4087,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) { dSP; - BINOP myop; + UNOP myop; SV* res; const bool oldcatch = CATCH_GET; I32 oldmark, nret; @@ -3905,10 +4099,11 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) ? G_SCALAR : GIMME_V; CATCH_SET(TRUE); - Zero(&myop, 1, BINOP); - myop.op_last = (OP *) &myop; - myop.op_next = NULL; + Zero(&myop, 1, UNOP); myop.op_flags = OPf_STACKED; + myop.op_ppaddr = PL_ppaddr[OP_ENTERSUB]; + myop.op_type = OP_ENTERSUB; + switch (gimme) { case G_VOID: @@ -3948,9 +4143,7 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) PUSHs(MUTABLE_SV(cv)); PUTBACK; oldmark = TOPMARK; - - if ((PL_op = PL_ppaddr[OP_ENTERSUB](aTHX))) - CALLRUNOPS(aTHX); + CALLRUNOPS(aTHX); LEAVE; SPAGAIN; nret = SP - (PL_stack_base + oldmark); @@ -4022,6 +4215,18 @@ Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int flags) } } +/* +=for apidoc gv_name_set + +Set the name for GV C to C which is C bytes long. Thus it may +contain embedded NUL characters. + +If C contains C, the name is treated as being encoded in +UTF-8; otherwise not. + +=cut +*/ + void Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags) { @@ -4099,13 +4304,13 @@ Perl_gv_try_downgrade(pTHX_ GV *gv) } else if (GvMULTI(gv) && cv && SvREFCNT(cv) == 1 && !SvOBJECT(cv) && !SvMAGICAL(cv) && !SvREADONLY(cv) && CvSTASH(cv) == stash && !CvNAMED(cv) && CvGV(cv) == gv && - CvCONST(cv) && !CvMETHOD(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) && + CvCONST(cv) && !CvNOWARN_AMBIGUOUS(cv) && !CvLVALUE(cv) && !CvUNIQUE(cv) && !CvNODEBUG(cv) && !CvCLONE(cv) && !CvCLONED(cv) && !CvANON(cv) && (namehek = GvNAME_HEK(gv)) && (gvp = hv_fetchhek(stash, namehek, 0)) && *gvp == (SV*)gv) { SV *value = SvREFCNT_inc(CvXSUBANY(cv).any_ptr); - const bool imported = !!GvIMPORTED_CV(gv); + const bool imported = cBOOL(GvIMPORTED_CV(gv)); SvREFCNT(gv) = 0; sv_clear((SV*)gv); SvREFCNT(gv) = 1; diff --git a/gnu/usr.bin/perl/gv.h b/gnu/usr.bin/perl/gv.h index f3dbaab57e8..68865b99916 100644 --- a/gnu/usr.bin/perl/gv.h +++ b/gnu/usr.bin/perl/gv.h @@ -28,7 +28,7 @@ struct gp { #if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) && !defined(__INTEL_COMPILER) # define GvGP(gv) \ - (0+(*({GV *const _gvgp = (GV *) (gv); \ + ((GP *)(*({GV *const _gvgp = (GV *) (gv); \ assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \ assert(isGV_with_GP(_gvgp)); \ &((_gvgp)->sv_u.svu_gp);}))) @@ -134,7 +134,7 @@ Return the CV from the GV. GvGP(gv)->gp_hv : \ GvGP(gv_HVadd(gv))->gp_hv) -#define GvCV(gv) (0+GvGP(gv)->gp_cv) +#define GvCV(gv) ((CV*)GvGP(gv)->gp_cv) #define GvCV_set(gv,cv) (GvGP(gv)->gp_cv = (cv)) #define GvCVGEN(gv) (GvGP(gv)->gp_cvgen) #define GvCVu(gv) (GvGP(gv)->gp_cvgen ? NULL : GvGP(gv)->gp_cv) @@ -162,7 +162,7 @@ Return the CV from the GV. #define GVf_INTRO 0x01 #define GVf_MULTI 0x02 #define GVf_ASSUMECV 0x04 -/* UNUSED 0x08 */ +#define GVf_RESERVED 0x08 /* unused */ #define GVf_IMPORTED 0xF0 #define GVf_IMPORTED_SV 0x10 #define GVf_IMPORTED_AV 0x20 @@ -269,7 +269,7 @@ Return the CV from the GV. #define gv_fetchmethod(stash, name) gv_fetchmethod_autoload(stash, name, TRUE) #define gv_fetchsv_nomg(n,f,t) gv_fetchsv(n,(f)|GV_NO_SVGMAGIC,t) #define gv_init(gv,stash,name,len,multi) \ - gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*!!(multi)) + gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*cBOOL(multi)) #define gv_fetchmeth(stash,name,len,level) gv_fetchmeth_pvn(stash, name, len, level, 0) #define gv_fetchmeth_autoload(stash,name,len,level) gv_fetchmeth_pvn_autoload(stash, name, len, level, 0) #define gv_fetchmethod_flags(stash,name,flags) gv_fetchmethod_pv_flags(stash, name, flags) @@ -281,7 +281,7 @@ Equivalent to C>. =cut */ #define gv_autoload4(stash, name, len, autoload) \ - gv_autoload_pvn(stash, name, len, !!(autoload)) + gv_autoload_pvn(stash, name, len, cBOOL(autoload)) #define newGVgen(pack) newGVgen_flags(pack, 0) #define gv_method_changed(gv) \ ( \ diff --git a/gnu/usr.bin/perl/handy.h b/gnu/usr.bin/perl/handy.h index e314d337055..1714584d4fd 100644 --- a/gnu/usr.bin/perl/handy.h +++ b/gnu/usr.bin/perl/handy.h @@ -70,13 +70,13 @@ from it, and are very unlikely to change /* =for apidoc_section $SV -=for apidoc Am|void *|MUTABLE_PTR|void * p -=for apidoc_item |AV *|MUTABLE_AV|AV * p -=for apidoc_item |CV *|MUTABLE_CV|CV * p -=for apidoc_item |GV *|MUTABLE_GV|GV * p -=for apidoc_item |HV *|MUTABLE_HV|HV * p -=for apidoc_item |IO *|MUTABLE_IO|IO * p -=for apidoc_item |SV *|MUTABLE_SV|SV * p +=for apidoc Am |AV * |MUTABLE_AV |AV * p +=for apidoc_item |CV * |MUTABLE_CV |CV * p +=for apidoc_item |GV * |MUTABLE_GV |GV * p +=for apidoc_item |HV * |MUTABLE_HV |HV * p +=for apidoc_item |IO * |MUTABLE_IO |IO * p +=for apidoc_item |void *|MUTABLE_PTR|void * p +=for apidoc_item |SV * |MUTABLE_SV |SV * p The C>() macros cast pointers to the types shown, in such a way (compiler permitting) that casting away const-ness will give a warning; @@ -91,8 +91,10 @@ C is the base macro used to derive new casts. The other already-built-in ones return pointers to what their names indicate. =cut - */ +The brace group version will raise a diagnostic if 'p' is const; the other +blindly casts away const. + */ #if defined(PERL_USE_GCC_BRACE_GROUPS) # define MUTABLE_PTR(p) ({ void *p_ = (p); p_; }) #else @@ -106,6 +108,34 @@ already-built-in ones return pointers to what their names indicate. #define MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p)) #define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) +/* +=for apidoc_section $SV +=for apidoc Am |AV *|AV_FROM_REF|SV * ref +=for apidoc_item |CV *|CV_FROM_REF|SV * ref +=for apidoc_item |HV *|HV_FROM_REF|SV * ref + +The CV_FROM_REF> macros extract the C from a given reference SV +and return a suitably-cast to pointer to the referenced SV. When running +under C<-DDEBUGGING>, assertions are also applied that check that I is +definitely a reference SV that refers to an SV of the right type. + +=cut +*/ + +#if defined(DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) +# define xV_FROM_REF(XV, ref) \ + ({ SV *_ref = ref; \ + assert(SvROK(_ref)); \ + assert(SvTYPE(SvRV(_ref)) == SVt_PV ## XV); \ + (XV *)(SvRV(_ref)); }) +#else +# define xV_FROM_REF(XV, ref) ((XV *)(SvRV(ref))) +#endif + +#define AV_FROM_REF(ref) xV_FROM_REF(AV, ref) +#define CV_FROM_REF(ref) xV_FROM_REF(CV, ref) +#define HV_FROM_REF(ref) xV_FROM_REF(HV, ref) + #ifndef __cplusplus # include #endif @@ -130,10 +160,13 @@ required, but is kept for backwards compatibility. * XXX Similarly, a Configure probe for __FILE__ and __LINE__ is needed. */ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__SUNPRO_C)) /* C99 or close enough. */ # define FUNCTION__ __func__ -#elif (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tur64, -c99 not known, only -std1). */ -# define FUNCTION__ "" +# define SAFE_FUNCTION__ __func__ +#elif (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tru64, -c99 not known, only -std1). */ +# define FUNCTION__ ("") +# define SAFE_FUNCTION__ ("UNKNOWN") #else # define FUNCTION__ __FUNCTION__ /* Common extension. */ +# define SAFE_FUNCTION__ __FUNCTION__ /* Common extension. */ #endif /* XXX A note on the perl source internal type system. The @@ -270,17 +303,17 @@ don't, so that you can portably take advantage of this C99 feature. =cut */ -# ifdef I_STDINT +#ifdef I_STDINT typedef int_fast8_t PERL_INT_FAST8_T; typedef uint_fast8_t PERL_UINT_FAST8_T; typedef int_fast16_t PERL_INT_FAST16_T; typedef uint_fast16_t PERL_UINT_FAST16_T; -# else +#else typedef int PERL_INT_FAST8_T; typedef unsigned int PERL_UINT_FAST8_T; typedef int PERL_INT_FAST16_T; typedef unsigned int PERL_UINT_FAST16_T; -# endif +#endif /* log(2) (i.e., log base 10 of 2) is pretty close to 0.30103, just in case * anyone is grepping for it. So BIT_DIGITS gives the number of decimal digits @@ -395,12 +428,6 @@ string/length pair. =for apidoc Am|SV**|hv_fetchs|HV* tb|"key"|I32 lval Like C, but takes a literal string instead of a string/length pair. - -=for apidoc Am|SV**|hv_stores|HV* tb|"key"|SV* val -Like C, but takes a literal string instead of a -string/length pair -and omits the hash parameter. - =for apidoc_section $lexer =for apidoc Amx|void|lex_stuff_pvs|"pv"|U32 flags @@ -454,8 +481,6 @@ Perl_xxx(aTHX_ ...) form for any API calls where it's used. #define gv_fetchpvs(namebeg, flags, sv_type) \ Perl_gv_fetchpvn_flags(aTHX_ STR_WITH_LEN(namebeg), flags, sv_type) #define gv_fetchpvn gv_fetchpvn_flags -#define sv_catxmlpvs(dsv, str, utf8) \ - Perl_sv_catxmlpvn(aTHX_ dsv, STR_WITH_LEN(str), utf8) #define lex_stuff_pvs(pv,flags) Perl_lex_stuff_pvn(aTHX_ STR_WITH_LEN(pv), flags) @@ -491,11 +516,11 @@ Perl_xxx(aTHX_ ...) form for any API calls where it's used. /* =for apidoc_section $versioning =for apidoc AmR|bool|PERL_VERSION_EQ|const U8 major|const U8 minor|const U8 patch -=for apidoc_item PERL_VERSION_NE -=for apidoc_item PERL_VERSION_LT -=for apidoc_item PERL_VERSION_LE -=for apidoc_item PERL_VERSION_GT =for apidoc_item PERL_VERSION_GE +=for apidoc_item PERL_VERSION_GT +=for apidoc_item PERL_VERSION_LE +=for apidoc_item PERL_VERSION_LT +=for apidoc_item PERL_VERSION_NE Returns whether or not the perl currently being compiled has the specified relationship to the perl given by the parameters. For example, @@ -618,7 +643,7 @@ C gives the number of bytes in C. Returns true or false. =for apidoc Am|bool|memCHRs|"list"|char c -Returns the position of the first occurence of the byte C in the literal +Returns the position of the first occurrence of the byte C in the literal string C<"list">, or NULL if C doesn't appear in C<"list">. All bytes are treated as unsigned char. Thus this macro can be used to determine if C is in a set of particular characters. Unlike L, it works even if C @@ -725,12 +750,12 @@ based on the underlying C library functions): * it comes to /\w+/ with tainting enabled, we *must* be able * to trust our character classes. * - * Therefore, the default tests in the text of Perl will be - * independent of locale. Any code that wants to depend on - * the current locale will use the tests that begin with "lc". + * Therefore, the default tests in the text of Perl will be independent of + * locale. Any code that wants to depend on the current locale will use the + * macros that contain _LC in their names */ -#ifdef USE_LOCALE +#ifdef USE_LOCALE_CTYPE # ifndef CTYPE256 # define CTYPE256 # endif @@ -814,13 +839,13 @@ future releases. =for apidoc Am|bool|isALPHA|UV ch =for apidoc_item ||isALPHA_A|UV ch -=for apidoc_item ||isALPHA_L1|UV ch -=for apidoc_item ||isALPHA_uvchr|UV ch -=for apidoc_item ||isALPHA_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isALPHA_utf8|U8 * s|U8 * end =for apidoc_item ||isALPHA_LC|UV ch -=for apidoc_item ||isALPHA_LC_uvchr|UV ch =for apidoc_item ||isALPHA_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isALPHA_LC_uvchr|UV ch +=for apidoc_item ||isALPHA_L1|UV ch +=for apidoc_item ||isALPHA_utf8|U8 * s|U8 * end +=for apidoc_item ||isALPHA_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isALPHA_uvchr|UV ch Returns a boolean indicating whether the specified input is one of C<[A-Za-z]>, analogous to C. See the L for an explanation of @@ -833,38 +858,39 @@ that would be interested in them, such as Devel::PPPort =for apidoc Am|bool|isALPHANUMERIC|UV ch =for apidoc_item ||isALPHANUMERIC_A|UV ch -=for apidoc_item ||isALPHANUMERIC_L1|UV ch -=for apidoc_item ||isALPHANUMERIC_uvchr|UV ch -=for apidoc_item ||isALPHANUMERIC_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isALPHANUMERIC_utf8|U8 * s|U8 * end =for apidoc_item ||isALPHANUMERIC_LC|UV ch -=for apidoc_item ||isALPHANUMERIC_LC_uvchr|UV ch =for apidoc_item ||isALPHANUMERIC_LC_utf8_safe|U8 * s| U8 *end -=for apidoc_item ||isALNUMC|UV ch -=for apidoc_item ||isALNUMC_A|UV ch -=for apidoc_item ||isALNUMC_L1|UV ch -=for apidoc_item ||isALNUMC_LC|UV ch -=for apidoc_item ||isALNUMC_LC_uvchr|UV ch +=for apidoc_item ||isALPHANUMERIC_LC_uvchr|UV ch +=for apidoc_item ||isALPHANUMERIC_L1|UV ch +=for apidoc_item ||isALPHANUMERIC_utf8|U8 * s|U8 * end +=for apidoc_item ||isALPHANUMERIC_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isALPHANUMERIC_uvchr|UV ch Returns a boolean indicating whether the specified character is one of C<[A-Za-z0-9]>, analogous to C. See the L for an explanation of the variants. -A (discouraged from use) synonym is C (where the C suffix means -this corresponds to the C language alphanumeric definition). Also -there are the variants -C, C -C, and C. +=for apidoc Am|bool|isALNUMC|UV ch +=for apidoc_item ||isALNUMC_A|UV ch +=for apidoc_item ||isALNUMC_LC|UV ch +=for apidoc_item ||isALNUMC_LC_uvchr|UV ch +=for apidoc_item ||isALNUMC_L1|UV ch +These are discouraged, backward compatibility macros for L>. +That is, each returns a boolean indicating whether the specified character is +one of C<[A-Za-z0-9]>, analogous to C. + +The C suffix in the names was meant to indicate that they correspond to the +C language L>. =for apidoc Am|bool|isASCII|UV ch =for apidoc_item ||isASCII_A|UV ch -=for apidoc_item ||isASCII_L1|UV ch -=for apidoc_item ||isASCII_uvchr|UV ch -=for apidoc_item ||isASCII_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isASCII_utf8|U8 * s|U8 * end =for apidoc_item ||isASCII_LC|UV ch -=for apidoc_item ||isASCII_LC_uvchr|UV ch =for apidoc_item ||isASCII_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isASCII_LC_uvchr|UV ch +=for apidoc_item ||isASCII_L1|UV ch +=for apidoc_item ||isASCII_utf8|U8 * s|U8 * end +=for apidoc_item ||isASCII_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isASCII_uvchr|UV ch Returns a boolean indicating whether the specified character is one of the 128 characters in the ASCII character set, analogous to C. On non-ASCII platforms, it returns TRUE iff this @@ -884,13 +910,13 @@ C will work properly on any string encoded or not in UTF-8. =for apidoc Am|bool|isBLANK|UV ch =for apidoc_item ||isBLANK_A|UV ch -=for apidoc_item ||isBLANK_L1|UV ch -=for apidoc_item ||isBLANK_uvchr|UV ch -=for apidoc_item ||isBLANK_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isBLANK_utf8|U8 * s|U8 * end =for apidoc_item ||isBLANK_LC|UV ch -=for apidoc_item ||isBLANK_LC_uvchr|UV ch =for apidoc_item ||isBLANK_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isBLANK_LC_uvchr|UV ch +=for apidoc_item ||isBLANK_L1|UV ch +=for apidoc_item ||isBLANK_utf8|U8 * s|U8 * end +=for apidoc_item ||isBLANK_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isBLANK_uvchr|UV ch Returns a boolean indicating whether the specified character is a character considered to be a blank, analogous to C. See the L for an explanation of @@ -902,13 +928,13 @@ the same as the corresponding ones without. =for apidoc Am|bool|isCNTRL|UV ch =for apidoc_item ||isCNTRL_A|UV ch -=for apidoc_item ||isCNTRL_L1|UV ch -=for apidoc_item ||isCNTRL_uvchr|UV ch -=for apidoc_item ||isCNTRL_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isCNTRL_utf8|U8 * s|U8 * end =for apidoc_item ||isCNTRL_LC|UV ch -=for apidoc_item ||isCNTRL_LC_uvchr|UV ch =for apidoc_item ||isCNTRL_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isCNTRL_LC_uvchr|UV ch +=for apidoc_item ||isCNTRL_L1|UV ch +=for apidoc_item ||isCNTRL_utf8|U8 * s|U8 * end +=for apidoc_item ||isCNTRL_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isCNTRL_uvchr|UV ch Returns a boolean indicating whether the specified character is a control character, analogous to C. @@ -918,13 +944,13 @@ On EBCDIC platforms, you almost always want to use the C variant. =for apidoc Am|bool|isDIGIT|UV ch =for apidoc_item ||isDIGIT_A|UV ch -=for apidoc_item ||isDIGIT_L1|UV ch -=for apidoc_item ||isDIGIT_uvchr|UV ch -=for apidoc_item ||isDIGIT_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isDIGIT_utf8|U8 * s|U8 * end =for apidoc_item ||isDIGIT_LC|UV ch -=for apidoc_item ||isDIGIT_LC_uvchr|UV ch =for apidoc_item ||isDIGIT_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isDIGIT_LC_uvchr|UV ch +=for apidoc_item ||isDIGIT_L1|UV ch +=for apidoc_item ||isDIGIT_utf8|U8 * s|U8 * end +=for apidoc_item ||isDIGIT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isDIGIT_uvchr|UV ch Returns a boolean indicating whether the specified character is a digit, analogous to C. @@ -934,13 +960,13 @@ the variants. =for apidoc Am|bool|isGRAPH|UV ch =for apidoc_item ||isGRAPH_A|UV ch -=for apidoc_item ||isGRAPH_L1|UV ch -=for apidoc_item ||isGRAPH_uvchr|UV ch -=for apidoc_item ||isGRAPH_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isGRAPH_utf8|U8 * s|U8 * end =for apidoc_item ||isGRAPH_LC|UV ch -=for apidoc_item ||isGRAPH_LC_uvchr|UV ch =for apidoc_item ||isGRAPH_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isGRAPH_LC_uvchr|UV ch +=for apidoc_item ||isGRAPH_L1|UV ch +=for apidoc_item ||isGRAPH_utf8|U8 * s|U8 * end +=for apidoc_item ||isGRAPH_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isGRAPH_uvchr|UV ch Returns a boolean indicating whether the specified character is a graphic character, analogous to C. See the L for an explanation of @@ -948,13 +974,13 @@ the variants. =for apidoc Am|bool|isLOWER|UV ch =for apidoc_item ||isLOWER_A|UV ch -=for apidoc_item ||isLOWER_L1|UV ch -=for apidoc_item ||isLOWER_uvchr|UV ch -=for apidoc_item ||isLOWER_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isLOWER_utf8|U8 * s|U8 * end =for apidoc_item ||isLOWER_LC|UV ch -=for apidoc_item ||isLOWER_LC_uvchr|UV ch =for apidoc_item ||isLOWER_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isLOWER_LC_uvchr|UV ch +=for apidoc_item ||isLOWER_L1|UV ch +=for apidoc_item ||isLOWER_utf8|U8 * s|U8 * end +=for apidoc_item ||isLOWER_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isLOWER_uvchr|UV ch Returns a boolean indicating whether the specified character is a lowercase character, analogous to C. See the L for an explanation of @@ -970,13 +996,13 @@ C. =for apidoc Am|bool|isPUNCT|UV ch =for apidoc_item ||isPUNCT_A|UV ch -=for apidoc_item ||isPUNCT_L1|UV ch -=for apidoc_item ||isPUNCT_uvchr|UV ch -=for apidoc_item ||isPUNCT_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isPUNCT_utf8|U8 * s|U8 * end =for apidoc_item ||isPUNCT_LC|UV ch -=for apidoc_item ||isPUNCT_LC_uvchr|UV ch =for apidoc_item ||isPUNCT_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isPUNCT_LC_uvchr|UV ch +=for apidoc_item ||isPUNCT_L1|UV ch +=for apidoc_item ||isPUNCT_utf8|U8 * s|U8 * end +=for apidoc_item ||isPUNCT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isPUNCT_uvchr|UV ch Returns a boolean indicating whether the specified character is a punctuation character, analogous to C. Note that the definition of what is punctuation isn't as @@ -987,13 +1013,13 @@ the variants. =for apidoc Am|bool|isSPACE|UV ch =for apidoc_item ||isSPACE_A|UV ch -=for apidoc_item ||isSPACE_L1|UV ch -=for apidoc_item ||isSPACE_uvchr|UV ch -=for apidoc_item ||isSPACE_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isSPACE_utf8|U8 * s|U8 * end =for apidoc_item ||isSPACE_LC|UV ch -=for apidoc_item ||isSPACE_LC_uvchr|UV ch =for apidoc_item ||isSPACE_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isSPACE_LC_uvchr|UV ch +=for apidoc_item ||isSPACE_L1|UV ch +=for apidoc_item ||isSPACE_utf8|U8 * s|U8 * end +=for apidoc_item ||isSPACE_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isSPACE_uvchr|UV ch Returns a boolean indicating whether the specified character is a whitespace character. This is analogous to what C matches in a regular expression. Starting in Perl 5.18 @@ -1007,13 +1033,13 @@ the variants. =for apidoc Am|bool|isPSXSPC|UV ch =for apidoc_item ||isPSXSPC_A|UV ch -=for apidoc_item ||isPSXSPC_L1|UV ch -=for apidoc_item ||isPSXSPC_uvchr|UV ch -=for apidoc_item ||isPSXSPC_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isPSXSPC_utf8|U8 * s|U8 * end =for apidoc_item ||isPSXSPC_LC|UV ch -=for apidoc_item ||isPSXSPC_LC_uvchr|UV ch =for apidoc_item ||isPSXSPC_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isPSXSPC_LC_uvchr|UV ch +=for apidoc_item ||isPSXSPC_L1|UV ch +=for apidoc_item ||isPSXSPC_utf8|U8 * s|U8 * end +=for apidoc_item ||isPSXSPC_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isPSXSPC_uvchr|UV ch (short for Posix Space) Starting in 5.18, this is identical in all its forms to the corresponding C macros. @@ -1028,13 +1054,13 @@ the variants. =for apidoc Am|bool|isUPPER|UV ch =for apidoc_item ||isUPPER_A|UV ch -=for apidoc_item ||isUPPER_L1|UV ch -=for apidoc_item ||isUPPER_uvchr|UV ch -=for apidoc_item ||isUPPER_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isUPPER_utf8|U8 * s|U8 * end =for apidoc_item ||isUPPER_LC|UV ch -=for apidoc_item ||isUPPER_LC_uvchr|UV ch =for apidoc_item ||isUPPER_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isUPPER_LC_uvchr|UV ch +=for apidoc_item ||isUPPER_L1|UV ch +=for apidoc_item ||isUPPER_utf8|U8 * s|U8 * end +=for apidoc_item ||isUPPER_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isUPPER_uvchr|UV ch Returns a boolean indicating whether the specified character is an uppercase character, analogous to C. See the L for an explanation of @@ -1042,13 +1068,13 @@ the variants. =for apidoc Am|bool|isPRINT|UV ch =for apidoc_item ||isPRINT_A|UV ch -=for apidoc_item ||isPRINT_L1|UV ch -=for apidoc_item ||isPRINT_uvchr|UV ch -=for apidoc_item ||isPRINT_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isPRINT_utf8|U8 * s|U8 * end =for apidoc_item ||isPRINT_LC|UV ch -=for apidoc_item ||isPRINT_LC_uvchr|UV ch =for apidoc_item ||isPRINT_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isPRINT_LC_uvchr|UV ch +=for apidoc_item ||isPRINT_L1|UV ch +=for apidoc_item ||isPRINT_utf8|U8 * s|U8 * end +=for apidoc_item ||isPRINT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isPRINT_uvchr|UV ch Returns a boolean indicating whether the specified character is a printable character, analogous to C. See the L for an explanation of @@ -1056,41 +1082,48 @@ the variants. =for apidoc Am|bool|isWORDCHAR|UV ch =for apidoc_item ||isWORDCHAR_A|UV ch -=for apidoc_item ||isWORDCHAR_L1|UV ch -=for apidoc_item ||isWORDCHAR_uvchr|UV ch -=for apidoc_item ||isWORDCHAR_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isWORDCHAR_utf8|U8 * s|U8 * end =for apidoc_item ||isWORDCHAR_LC|UV ch -=for apidoc_item ||isWORDCHAR_LC_uvchr|UV ch =for apidoc_item ||isWORDCHAR_LC_utf8_safe|U8 * s| U8 *end -=for apidoc_item ||isALNUM|UV ch -=for apidoc_item ||isALNUM_A|UV ch -=for apidoc_item ||isALNUM_LC|UV ch -=for apidoc_item ||isALNUM_LC_uvchr|UV ch +=for apidoc_item ||isWORDCHAR_LC_uvchr|UV ch +=for apidoc_item ||isWORDCHAR_L1|UV ch +=for apidoc_item ||isWORDCHAR_utf8|U8 * s|U8 * end +=for apidoc_item ||isWORDCHAR_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isWORDCHAR_uvchr|UV ch Returns a boolean indicating whether the specified character is a character that is a word character, analogous to what C and C match in a regular expression. A word character is an alphabetic character, a decimal digit, a connecting punctuation character (such as an underscore), or a "mark" character that attaches to one of those (like some sort of accent). -C is a synonym provided for backward compatibility, even though a -word character includes more than the standard C language meaning of -alphanumeric. + See the L for an explanation of the variants. + C, C, C, C, C, C, and C are also as described there, but additionally include the platform's native underscore. +=for apidoc Am|bool|isALNUM |UV ch +=for apidoc_item ||isALNUM_A |UV ch +=for apidoc_item ||isALNUM_LC |UV ch +=for apidoc_item ||isALNUM_LC_uvchr|UV ch +These are each a synonym for their respectively named L> +variant. + +They are provided for backward compatibility, even though a word character +includes more than the standard C language meaning of alphanumeric. +To get the C language definition, use the corresponding L> +variant. + =for apidoc Am|bool|isXDIGIT|UV ch =for apidoc_item ||isXDIGIT_A|UV ch -=for apidoc_item ||isXDIGIT_L1|UV ch -=for apidoc_item ||isXDIGIT_uvchr|UV ch -=for apidoc_item ||isXDIGIT_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isXDIGIT_utf8|U8 * s|U8 * end =for apidoc_item ||isXDIGIT_LC|UV ch -=for apidoc_item ||isXDIGIT_LC_uvchr|UV ch =for apidoc_item ||isXDIGIT_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isXDIGIT_LC_uvchr|UV ch +=for apidoc_item ||isXDIGIT_L1|UV ch +=for apidoc_item ||isXDIGIT_utf8|U8 * s|U8 * end +=for apidoc_item ||isXDIGIT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isXDIGIT_uvchr|UV ch Returns a boolean indicating whether the specified character is a hexadecimal digit. In the ASCII range these are C<[0-9A-Fa-f]>. Variants C and C are identical to C. @@ -1099,13 +1132,13 @@ the variants. =for apidoc Am|bool|isIDFIRST|UV ch =for apidoc_item ||isIDFIRST_A|UV ch -=for apidoc_item ||isIDFIRST_L1|UV ch -=for apidoc_item ||isIDFIRST_uvchr|UV ch -=for apidoc_item ||isIDFIRST_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isIDFIRST_utf8|U8 * s|U8 * end =for apidoc_item ||isIDFIRST_LC|UV ch -=for apidoc_item ||isIDFIRST_LC_uvchr|UV ch =for apidoc_item ||isIDFIRST_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isIDFIRST_LC_uvchr|UV ch +=for apidoc_item ||isIDFIRST_L1|UV ch +=for apidoc_item ||isIDFIRST_utf8|U8 * s|U8 * end +=for apidoc_item ||isIDFIRST_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isIDFIRST_uvchr|UV ch Returns a boolean indicating whether the specified character can be the first character of an identifier. This is very close to, but not quite the same as the official Unicode property C. The difference is that this @@ -1115,13 +1148,13 @@ the variants. =for apidoc Am|bool|isIDCONT|UV ch =for apidoc_item ||isIDCONT_A|UV ch -=for apidoc_item ||isIDCONT_L1|UV ch -=for apidoc_item ||isIDCONT_uvchr|UV ch -=for apidoc_item ||isIDCONT_utf8_safe|U8 * s|U8 * end -=for apidoc_item ||isIDCONT_utf8|U8 * s|U8 * end =for apidoc_item ||isIDCONT_LC|UV ch -=for apidoc_item ||isIDCONT_LC_uvchr|UV ch =for apidoc_item ||isIDCONT_LC_utf8_safe|U8 * s| U8 *end +=for apidoc_item ||isIDCONT_LC_uvchr|UV ch +=for apidoc_item ||isIDCONT_L1|UV ch +=for apidoc_item ||isIDCONT_utf8|U8 * s|U8 * end +=for apidoc_item ||isIDCONT_utf8_safe|U8 * s|U8 * end +=for apidoc_item ||isIDCONT_uvchr|UV ch Returns a boolean indicating whether the specified character can be the second or succeeding character of an identifier. This is very close to, but not quite the same as the official Unicode property C. The @@ -1149,9 +1182,9 @@ results for the full range of possible inputs has been implemented here. =for apidoc Am|UV|toUPPER|UV cp =for apidoc_item |UV|toUPPER_A|UV cp -=for apidoc_item |UV|toUPPER_uvchr|UV cp|U8* s|STRLEN* lenp =for apidoc_item |UV|toUPPER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp =for apidoc_item |UV|toUPPER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +=for apidoc_item |UV|toUPPER_uvchr|UV cp|U8* s|STRLEN* lenp These all return the uppercase of a character. The differences are what domain they operate on, and whether the input is specified as a code point (those @@ -1198,9 +1231,9 @@ change in future releases. =for apidoc Am|UV|toFOLD|UV cp =for apidoc_item |UV|toFOLD_A|UV cp -=for apidoc_item |UV|toFOLD_uvchr|UV cp|U8* s|STRLEN* lenp =for apidoc_item |UV|toFOLD_utf8|U8* p|U8* e|U8* s|STRLEN* lenp =for apidoc_item |UV|toFOLD_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +=for apidoc_item |UV|toFOLD_uvchr|UV cp|U8* s|STRLEN* lenp These all return the foldcase of a character. "foldcase" is an internal case for C pattern matching. If the foldcase of character A and the foldcase of @@ -1252,12 +1285,12 @@ change in future releases. =for apidoc Am|UV|toLOWER|UV cp =for apidoc_item |UV|toLOWER_A|UV cp -=for apidoc_item |UV|toLOWER_L1|UV cp =for apidoc_item |UV|toLOWER_LATIN1|UV cp =for apidoc_item |UV|toLOWER_LC|UV cp -=for apidoc_item |UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp +=for apidoc_item |UV|toLOWER_L1|UV cp =for apidoc_item |UV|toLOWER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp =for apidoc_item |UV|toLOWER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +=for apidoc_item |UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp These all return the lowercase of a character. The differences are what domain they operate on, and whether the input is specified as a code point (those @@ -1309,9 +1342,9 @@ change in future releases. =for apidoc Am|UV|toTITLE|UV cp =for apidoc_item |UV|toTITLE_A|UV cp -=for apidoc_item |UV|toTITLE_uvchr|UV cp|U8* s|STRLEN* lenp =for apidoc_item |UV|toTITLE_utf8|U8* p|U8* e|U8* s|STRLEN* lenp =for apidoc_item |UV|toTITLE_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +=for apidoc_item |UV|toTITLE_uvchr|UV cp|U8* s|STRLEN* lenp These all return the titlecase of a character. The differences are what domain they operate on, and whether the input is specified as a code point (those @@ -1362,6 +1395,7 @@ change in future releases. XXX Still undocumented isVERTWS_uvchr and _utf8; it's unclear what their names really should be. Also toUPPER_LC and toFOLD_LC, which are subject to change, and aren't general purpose as they don't work on U+DF, and assert against that. +and isCASED_LC, as it really is more of an internal thing. Note that these macros are repeated in Devel::PPPort, so should also be patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc @@ -1385,11 +1419,7 @@ or casts =cut */ -#ifdef QUADKIND -# define WIDEST_UTYPE U64 -#else -# define WIDEST_UTYPE U32 -#endif +#define WIDEST_UTYPE PERL_UINTMAX_T /* Where there could be some confusion, use this as a static assert in macros * to make sure that a parameter isn't a pointer. But some compilers can't @@ -1403,7 +1433,10 @@ or casts #endif /* Likewise, this is effectively a static assert to be used to guarantee the - * parameter is a pointer */ + * parameter is a pointer + * + * NOT suitable for void* + */ #define ASSERT_IS_PTR(x) (__ASSERT_(sizeof(*(x))) (x)) /* FITS_IN_8_BITS(c) returns true if c doesn't have a bit set other than in @@ -1489,7 +1522,7 @@ or casts /* Character class numbers. For internal core Perl use only. The ones less * than 32 are used in PL_charclass[] and the ones up through the one that - * corresponds to <_HIGHEST_REGCOMP_DOT_H_SYNC> are used by regcomp.h and + * corresponds to are used by regcomp.h and * related files. PL_charclass ones use names used in l1_char_class_tab.h but * their actual definitions are here. If that file has a name not used here, * it won't compile. @@ -1503,37 +1536,37 @@ or casts * to group these which have no members that match above Latin1, (or above * ASCII in the latter case) */ -# define _CC_WORDCHAR 0 /* \w and [:word:] */ -# define _CC_DIGIT 1 /* \d and [:digit:] */ -# define _CC_ALPHA 2 /* [:alpha:] */ -# define _CC_LOWER 3 /* [:lower:] */ -# define _CC_UPPER 4 /* [:upper:] */ -# define _CC_PUNCT 5 /* [:punct:] */ -# define _CC_PRINT 6 /* [:print:] */ -# define _CC_ALPHANUMERIC 7 /* [:alnum:] */ -# define _CC_GRAPH 8 /* [:graph:] */ -# define _CC_CASED 9 /* [:lower:] or [:upper:] under /i */ -# define _CC_SPACE 10 /* \s, [:space:] */ -# define _CC_BLANK 11 /* [:blank:] */ -# define _CC_XDIGIT 12 /* [:xdigit:] */ -# define _CC_CNTRL 13 /* [:cntrl:] */ -# define _CC_ASCII 14 /* [:ascii:] */ -# define _CC_VERTSPACE 15 /* \v */ - -# define _HIGHEST_REGCOMP_DOT_H_SYNC _CC_VERTSPACE +# define CC_WORDCHAR_ 0 /* \w and [:word:] */ +# define CC_DIGIT_ 1 /* \d and [:digit:] */ +# define CC_ALPHA_ 2 /* [:alpha:] */ +# define CC_LOWER_ 3 /* [:lower:] */ +# define CC_UPPER_ 4 /* [:upper:] */ +# define CC_PUNCT_ 5 /* [:punct:] */ +# define CC_PRINT_ 6 /* [:print:] */ +# define CC_ALPHANUMERIC_ 7 /* [:alnum:] */ +# define CC_GRAPH_ 8 /* [:graph:] */ +# define CC_CASED_ 9 /* [:lower:] or [:upper:] under /i */ +# define CC_SPACE_ 10 /* \s, [:space:] */ +# define CC_BLANK_ 11 /* [:blank:] */ +# define CC_XDIGIT_ 12 /* [:xdigit:] */ +# define CC_CNTRL_ 13 /* [:cntrl:] */ +# define CC_ASCII_ 14 /* [:ascii:] */ +# define CC_VERTSPACE_ 15 /* \v */ + +# define HIGHEST_REGCOMP_DOT_H_SYNC_ CC_VERTSPACE_ /* The members of the third group below do not need to be coordinated with data * structures in regcomp.[ch] and regexec.c. */ -# define _CC_IDFIRST 16 -# define _CC_CHARNAME_CONT 17 -# define _CC_NONLATIN1_FOLD 18 -# define _CC_NONLATIN1_SIMPLE_FOLD 19 -# define _CC_QUOTEMETA 20 -# define _CC_NON_FINAL_FOLD 21 -# define _CC_IS_IN_SOME_FOLD 22 -# define _CC_BINDIGIT 23 -# define _CC_OCTDIGIT 24 -# define _CC_MNEMONIC_CNTRL 25 +# define CC_IDFIRST_ 16 +# define CC_CHARNAME_CONT_ 17 +# define CC_NONLATIN1_FOLD_ 18 +# define CC_NONLATIN1_SIMPLE_FOLD_ 19 +# define CC_QUOTEMETA_ 20 +# define CC_NON_FINAL_FOLD_ 21 +# define CC_IS_IN_SOME_FOLD_ 22 +# define CC_BINDIGIT_ 23 +# define CC_OCTDIGIT_ 24 +# define CC_MNEMONIC_CNTRL_ 25 /* Unused: 26-31 * If more bits are needed, one could add a second word for non-64bit @@ -1550,26 +1583,26 @@ or casts /* An enum version of the character class numbers, to help compilers * optimize */ typedef enum { - _CC_ENUM_ALPHA = _CC_ALPHA, - _CC_ENUM_ALPHANUMERIC = _CC_ALPHANUMERIC, - _CC_ENUM_ASCII = _CC_ASCII, - _CC_ENUM_BLANK = _CC_BLANK, - _CC_ENUM_CASED = _CC_CASED, - _CC_ENUM_CNTRL = _CC_CNTRL, - _CC_ENUM_DIGIT = _CC_DIGIT, - _CC_ENUM_GRAPH = _CC_GRAPH, - _CC_ENUM_LOWER = _CC_LOWER, - _CC_ENUM_PRINT = _CC_PRINT, - _CC_ENUM_PUNCT = _CC_PUNCT, - _CC_ENUM_SPACE = _CC_SPACE, - _CC_ENUM_UPPER = _CC_UPPER, - _CC_ENUM_VERTSPACE = _CC_VERTSPACE, - _CC_ENUM_WORDCHAR = _CC_WORDCHAR, - _CC_ENUM_XDIGIT = _CC_XDIGIT -} _char_class_number; + CC_ENUM_ALPHA_ = CC_ALPHA_, + CC_ENUM_ALPHANUMERIC_ = CC_ALPHANUMERIC_, + CC_ENUM_ASCII_ = CC_ASCII_, + CC_ENUM_BLANK_ = CC_BLANK_, + CC_ENUM_CASED_ = CC_CASED_, + CC_ENUM_CNTRL_ = CC_CNTRL_, + CC_ENUM_DIGIT_ = CC_DIGIT_, + CC_ENUM_GRAPH_ = CC_GRAPH_, + CC_ENUM_LOWER_ = CC_LOWER_, + CC_ENUM_PRINT_ = CC_PRINT_, + CC_ENUM_PUNCT_ = CC_PUNCT_, + CC_ENUM_SPACE_ = CC_SPACE_, + CC_ENUM_UPPER_ = CC_UPPER_, + CC_ENUM_VERTSPACE_ = CC_VERTSPACE_, + CC_ENUM_WORDCHAR_ = CC_WORDCHAR_, + CC_ENUM_XDIGIT_ = CC_XDIGIT_ +} char_class_number_; #endif -#define POSIX_CC_COUNT (_HIGHEST_REGCOMP_DOT_H_SYNC + 1) +#define POSIX_CC_COUNT (HIGHEST_REGCOMP_DOT_H_SYNC_ + 1) START_EXTERN_C # ifdef DOINIT @@ -1583,32 +1616,32 @@ EXTCONST U32 PL_charclass[]; END_EXTERN_C /* The 1U keeps Solaris from griping when shifting sets the uppermost bit */ -# define _CC_mask(classnum) (1U << (classnum)) +# define CC_mask_(classnum) (1U << (classnum)) /* For internal core Perl use only: the base macro for defining macros like * isALPHA */ -# define _generic_isCC(c, classnum) cBOOL(FITS_IN_8_BITS(c) \ - && (PL_charclass[(U8) (c)] & _CC_mask(classnum))) +# define generic_isCC_(c, classnum) cBOOL(FITS_IN_8_BITS(c) \ + && (PL_charclass[(U8) (c)] & CC_mask_(classnum))) /* The mask for the _A versions of the macros; it just adds in the bit for * ASCII. */ -# define _CC_mask_A(classnum) (_CC_mask(classnum) | _CC_mask(_CC_ASCII)) +# define CC_mask_A_(classnum) (CC_mask_(classnum) | CC_mask_(CC_ASCII_)) /* For internal core Perl use only: the base macro for defining macros like * isALPHA_A. The foo_A version makes sure that both the desired bit and * the ASCII bit are present */ -# define _generic_isCC_A(c, classnum) (FITS_IN_8_BITS(c) \ - && ((PL_charclass[(U8) (c)] & _CC_mask_A(classnum)) \ - == _CC_mask_A(classnum))) +# define generic_isCC_A_(c, classnum) (FITS_IN_8_BITS(c) \ + && ((PL_charclass[(U8) (c)] & CC_mask_A_(classnum)) \ + == CC_mask_A_(classnum))) /* On ASCII platforms certain classes form a single range. It's faster to * special case these. isDIGIT is a single range on all platforms */ # ifdef EBCDIC -# define isALPHA_A(c) _generic_isCC_A(c, _CC_ALPHA) -# define isGRAPH_A(c) _generic_isCC_A(c, _CC_GRAPH) -# define isLOWER_A(c) _generic_isCC_A(c, _CC_LOWER) -# define isPRINT_A(c) _generic_isCC_A(c, _CC_PRINT) -# define isUPPER_A(c) _generic_isCC_A(c, _CC_UPPER) +# define isALPHA_A(c) generic_isCC_A_(c, CC_ALPHA_) +# define isGRAPH_A(c) generic_isCC_A_(c, CC_GRAPH_) +# define isLOWER_A(c) generic_isCC_A_(c, CC_LOWER_) +# define isPRINT_A(c) generic_isCC_A_(c, CC_PRINT_) +# define isUPPER_A(c) generic_isCC_A_(c, CC_UPPER_) # else /* By folding the upper and lowercase, we can use a single range */ # define isALPHA_A(c) inRANGE((~('A' ^ 'a') & (c)), 'A', 'Z') @@ -1617,58 +1650,57 @@ END_EXTERN_C # define isPRINT_A(c) inRANGE(c, ' ', 0x7e) # define isUPPER_A(c) inRANGE(c, 'A', 'Z') # endif -# define isALPHANUMERIC_A(c) _generic_isCC_A(c, _CC_ALPHANUMERIC) -# define isBLANK_A(c) _generic_isCC_A(c, _CC_BLANK) -# define isCNTRL_A(c) _generic_isCC_A(c, _CC_CNTRL) +# define isALPHANUMERIC_A(c) generic_isCC_A_(c, CC_ALPHANUMERIC_) +# define isBLANK_A(c) generic_isCC_A_(c, CC_BLANK_) +# define isCNTRL_A(c) generic_isCC_A_(c, CC_CNTRL_) # define isDIGIT_A(c) inRANGE(c, '0', '9') -# define isPUNCT_A(c) _generic_isCC_A(c, _CC_PUNCT) -# define isSPACE_A(c) _generic_isCC_A(c, _CC_SPACE) -# define isWORDCHAR_A(c) _generic_isCC_A(c, _CC_WORDCHAR) -# define isXDIGIT_A(c) _generic_isCC(c, _CC_XDIGIT) /* No non-ASCII xdigits - */ -# define isIDFIRST_A(c) _generic_isCC_A(c, _CC_IDFIRST) -# define isALPHA_L1(c) _generic_isCC(c, _CC_ALPHA) -# define isALPHANUMERIC_L1(c) _generic_isCC(c, _CC_ALPHANUMERIC) -# define isBLANK_L1(c) _generic_isCC(c, _CC_BLANK) +# define isPUNCT_A(c) generic_isCC_A_(c, CC_PUNCT_) +# define isSPACE_A(c) generic_isCC_A_(c, CC_SPACE_) +# define isWORDCHAR_A(c) generic_isCC_A_(c, CC_WORDCHAR_) +# define isXDIGIT_A(c) generic_isCC_(c, CC_XDIGIT_) /* No non-ASCII xdigits */ +# define isIDFIRST_A(c) generic_isCC_A_(c, CC_IDFIRST_) +# define isALPHA_L1(c) generic_isCC_(c, CC_ALPHA_) +# define isALPHANUMERIC_L1(c) generic_isCC_(c, CC_ALPHANUMERIC_) +# define isBLANK_L1(c) generic_isCC_(c, CC_BLANK_) /* continuation character for legal NAME in \N{NAME} */ -# define isCHARNAME_CONT(c) _generic_isCC(c, _CC_CHARNAME_CONT) +# define isCHARNAME_CONT(c) generic_isCC_(c, CC_CHARNAME_CONT_) -# define isCNTRL_L1(c) _generic_isCC(c, _CC_CNTRL) -# define isGRAPH_L1(c) _generic_isCC(c, _CC_GRAPH) -# define isLOWER_L1(c) _generic_isCC(c, _CC_LOWER) -# define isPRINT_L1(c) _generic_isCC(c, _CC_PRINT) +# define isCNTRL_L1(c) generic_isCC_(c, CC_CNTRL_) +# define isGRAPH_L1(c) generic_isCC_(c, CC_GRAPH_) +# define isLOWER_L1(c) generic_isCC_(c, CC_LOWER_) +# define isPRINT_L1(c) generic_isCC_(c, CC_PRINT_) # define isPSXSPC_L1(c) isSPACE_L1(c) -# define isPUNCT_L1(c) _generic_isCC(c, _CC_PUNCT) -# define isSPACE_L1(c) _generic_isCC(c, _CC_SPACE) -# define isUPPER_L1(c) _generic_isCC(c, _CC_UPPER) -# define isWORDCHAR_L1(c) _generic_isCC(c, _CC_WORDCHAR) -# define isIDFIRST_L1(c) _generic_isCC(c, _CC_IDFIRST) +# define isPUNCT_L1(c) generic_isCC_(c, CC_PUNCT_) +# define isSPACE_L1(c) generic_isCC_(c, CC_SPACE_) +# define isUPPER_L1(c) generic_isCC_(c, CC_UPPER_) +# define isWORDCHAR_L1(c) generic_isCC_(c, CC_WORDCHAR_) +# define isIDFIRST_L1(c) generic_isCC_(c, CC_IDFIRST_) # ifdef EBCDIC -# define isASCII(c) _generic_isCC(c, _CC_ASCII) +# define isASCII(c) generic_isCC_(c, CC_ASCII_) # endif /* Participates in a single-character fold with a character above 255 */ -# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -# define HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE(c) \ +# if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_REGEXEC_C) +# define HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE(c) \ (( ! cBOOL(FITS_IN_8_BITS(c))) \ - || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_SIMPLE_FOLD))) + || (PL_charclass[(U8) (c)] & CC_mask_(CC_NONLATIN1_SIMPLE_FOLD_))) -# define IS_NON_FINAL_FOLD(c) _generic_isCC(c, _CC_NON_FINAL_FOLD) -# define IS_IN_SOME_FOLD_L1(c) _generic_isCC(c, _CC_IS_IN_SOME_FOLD) +# define IS_NON_FINAL_FOLD(c) generic_isCC_(c, CC_NON_FINAL_FOLD_) +# define IS_IN_SOME_FOLD_L1(c) generic_isCC_(c, CC_IS_IN_SOME_FOLD_) # endif /* Like the above, but also can be part of a multi-char fold */ # define HAS_NONLATIN1_FOLD_CLOSURE(c) \ ( (! cBOOL(FITS_IN_8_BITS(c))) \ - || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_FOLD))) + || (PL_charclass[(U8) (c)] & CC_mask_(CC_NONLATIN1_FOLD_))) -# define _isQUOTEMETA(c) _generic_isCC(c, _CC_QUOTEMETA) +# define _isQUOTEMETA(c) generic_isCC_(c, CC_QUOTEMETA_) /* is c a control character for which we have a mnemonic? */ # if defined(PERL_CORE) || defined(PERL_EXT) -# define isMNEMONIC_CNTRL(c) _generic_isCC(c, _CC_MNEMONIC_CNTRL) +# define isMNEMONIC_CNTRL(c) generic_isCC_(c, CC_MNEMONIC_CNTRL_) # endif #else /* else we don't have perl.h H_PERL */ @@ -1795,14 +1827,7 @@ END_EXTERN_C /* The following are not fully accurate in the above-ASCII range. I (khw) * don't think it's necessary to be so for the purposes where this gets * compiled */ -# define _isQUOTEMETA(c) (FITS_IN_8_BITS(c) && ! isWORDCHAR_L1(c)) -# define _IS_IN_SOME_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C(c) isALPHA_L1(c) - - /* And these aren't accurate at all. They are useful only for above - * Latin1, which utilities and bootstrapping don't deal with */ -# define _IS_NON_FINAL_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C(c) 0 -# define _HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C(c) 0 -# define _HAS_NONLATIN1_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C(c) 0 +# define isQUOTEMETA_(c) (FITS_IN_8_BITS(c) && ! isWORDCHAR_L1(c)) /* Many of the macros later in this file are defined in terms of these. By * implementing them with a function, which converts the class number into @@ -1811,9 +1836,9 @@ END_EXTERN_C * perl.h), and so a compiler error will be generated if one is attempted * to be used. And the above-Latin1 code points require Unicode tables to * be present, something unlikely to be the case when bootstrapping */ -# define _generic_isCC(c, classnum) \ +# define generic_isCC_(c, classnum) \ (FITS_IN_8_BITS(c) && S_bootstrap_ctype((U8) (c), (classnum), TRUE)) -# define _generic_isCC_A(c, classnum) \ +# define generic_isCC_A_(c, classnum) \ (FITS_IN_8_BITS(c) && S_bootstrap_ctype((U8) (c), (classnum), FALSE)) #endif /* End of no perl.h H_PERL */ @@ -1873,181 +1898,242 @@ END_EXTERN_C #define toUPPER_LATIN1_MOD(c) ((! FITS_IN_8_BITS(c)) \ ? (c) \ : PL_mod_latin1_uc[ (U8) (c) ]) -#define IN_UTF8_CTYPE_LOCALE PL_in_utf8_CTYPE_locale +#ifdef USE_LOCALE_CTYPE +# define IN_UTF8_CTYPE_LOCALE PL_in_utf8_CTYPE_locale +# define IN_UTF8_TURKIC_LOCALE PL_in_utf8_turkic_locale +#else +# define IN_UTF8_CTYPE_LOCALE false +# define IN_UTF8_TURKIC_LOCALE false +#endif /* Use foo_LC_uvchr() instead of these for beyond the Latin1 range */ /* For internal core Perl use only: the base macro for defining macros like * isALPHA_LC, which uses the current LC_CTYPE locale. 'c' is the code point * (0-255) to check. In a UTF-8 locale, the result is the same as calling - * isFOO_L1(); the 'utf8_locale_classnum' parameter is something like - * _CC_UPPER, which gives the class number for doing this. For non-UTF-8 - * locales, the code to actually do the test this is passed in 'non_utf8'. If - * 'c' is above 255, 0 is returned. For accessing the full range of possible - * code points under locale rules, use the macros based on _generic_LC_uvchr - * instead of this. */ -#define _generic_LC_base(c, utf8_locale_classnum, non_utf8) \ - (! FITS_IN_8_BITS(c) \ - ? 0 \ - : IN_UTF8_CTYPE_LOCALE \ - ? cBOOL(PL_charclass[(U8) (c)] & _CC_mask(utf8_locale_classnum)) \ - : cBOOL(non_utf8)) - -/* For internal core Perl use only: a helper macro for defining macros like - * isALPHA_LC. 'c' is the code point (0-255) to check. The function name to - * actually do this test is passed in 'non_utf8_func', which is called on 'c', - * casting 'c' to the macro _LC_CAST, which should not be parenthesized. See - * _generic_LC_base for more info */ -#define _generic_LC(c, utf8_locale_classnum, non_utf8_func) \ - _generic_LC_base(c,utf8_locale_classnum, \ - non_utf8_func( (_LC_CAST) (c))) - -/* For internal core Perl use only: like _generic_LC, but also returns TRUE if - * 'c' is the platform's native underscore character */ -#define _generic_LC_underscore(c,utf8_locale_classnum,non_utf8_func) \ - _generic_LC_base(c, utf8_locale_classnum, \ - (non_utf8_func( (_LC_CAST) (c)) \ - || (char)(c) == '_')) - -/* These next three are also for internal core Perl use only: case-change - * helper macros. The reason for using the PL_latin arrays is in case the - * system function is defective; it ensures uniform results that conform to the - * Unicod standard. It does not handle the anomalies in UTF-8 Turkic locales */ -#define _generic_toLOWER_LC(c, function, cast) (! FITS_IN_8_BITS(c) \ - ? (c) \ - : (IN_UTF8_CTYPE_LOCALE) \ - ? PL_latin1_lc[ (U8) (c) ] \ - : (cast)function((cast)(c))) - -/* Note that the result can be larger than a byte in a UTF-8 locale. It - * returns a single value, so can't adequately return the upper case of LATIN - * SMALL LETTER SHARP S in a UTF-8 locale (which should be a string of two - * values "SS"); instead it asserts against that under DEBUGGING, and - * otherwise returns its input. It does not handle the anomalies in UTF-8 - * Turkic locales. */ -#define _generic_toUPPER_LC(c, function, cast) \ - (! FITS_IN_8_BITS(c) \ - ? (c) \ - : ((! IN_UTF8_CTYPE_LOCALE) \ - ? (cast)function((cast)(c)) \ - : ((((U8)(c)) == MICRO_SIGN) \ - ? GREEK_CAPITAL_LETTER_MU \ - : ((((U8)(c)) == LATIN_SMALL_LETTER_Y_WITH_DIAERESIS) \ - ? LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS \ - : ((((U8)(c)) == LATIN_SMALL_LETTER_SHARP_S) \ - ? (__ASSERT_(0) (c)) \ - : PL_mod_latin1_uc[ (U8) (c) ]))))) - -/* Note that the result can be larger than a byte in a UTF-8 locale. It - * returns a single value, so can't adequately return the fold case of LATIN - * SMALL LETTER SHARP S in a UTF-8 locale (which should be a string of two - * values "ss"); instead it asserts against that under DEBUGGING, and - * otherwise returns its input. It does not handle the anomalies in UTF-8 - * Turkic locales */ -#define _generic_toFOLD_LC(c, function, cast) \ - ((UNLIKELY((c) == MICRO_SIGN) && IN_UTF8_CTYPE_LOCALE) \ - ? GREEK_SMALL_LETTER_MU \ - : (__ASSERT_(! IN_UTF8_CTYPE_LOCALE \ - || (c) != LATIN_SMALL_LETTER_SHARP_S) \ - _generic_toLOWER_LC(c, function, cast))) - -/* Use the libc versions for these if available. */ + * isFOO_L1(); 'classnum' is something like CC_UPPER_, which gives the class + * number for doing this. For non-UTF-8 locales, the code to actually do the + * test this is passed in 'non_utf8'. If 'c' is above 255, 0 is returned. For + * accessing the full range of possible code points under locale rules, use the + * macros based on generic_LC_uvchr_ instead of this. */ +#define generic_LC_base_(c, classnum, non_utf8_func) \ + (! FITS_IN_8_BITS(c) \ + ? 0 \ + : IN_UTF8_CTYPE_LOCALE \ + ? cBOOL(PL_charclass[(U8) (c)] & CC_mask_(classnum)) \ + : cBOOL(non_utf8_func(c))) + +/* A helper macro for defining macros like isALPHA_LC. On systems without + * proper locales, these reduce to, e.g., isALPHA_A */ +#ifdef CTYPE256 +# define generic_LC_(c, classnum, non_utf8_func) \ + generic_LC_base_(c, classnum, non_utf8_func) +#else +# define generic_LC_(c, classnum, non_utf8_func) \ + generic_isCC_A_(c, classnum) +#endif + +/* Below are the definitions for the locale-sensitive character classification + * macros whose input domain is a byte, and the locale isn't UTF-8. These are + * as close as possible to the bare versions on the platform and still yield + * POSIX Standard-compliant results. + * + * There is currently only one place these definitions should be used, in + * certain function calls like Perl_iswordchar_() in inline.h. + * + * Most likely you want to use the macros a ways below with names like + * isALPHA_LC(). Rarely, you may want isU8_ALPHA_LC(), somewhat below. + * + * The first two aren't in C89, so the fallback is to use the non-locale + * sensitive versions; these are the same for all platforms */ #if defined(HAS_ISASCII) -# define isASCII_LC(c) (FITS_IN_8_BITS(c) && isascii( (U8) (c))) +# define is_posix_ASCII(c) isascii((U8) (c)) #else -# define isASCII_LC(c) isASCII(c) +# define is_posix_ASCII(c) isASCII(c) #endif #if defined(HAS_ISBLANK) -# define isBLANK_LC(c) _generic_LC(c, _CC_BLANK, isblank) -#else /* Unlike isASCII, varies if in a UTF-8 locale */ -# define isBLANK_LC(c) ((IN_UTF8_CTYPE_LOCALE) ? isBLANK_L1(c) : isBLANK(c)) +# define is_posix_BLANK(c) isblank((U8) (c)) +#else +# define is_posix_BLANK(c) isBLANK(c) #endif -#define _LC_CAST U8 +/* The next few are the same in all platforms. */ +#define is_posix_CNTRL(c) iscntrl((U8) (c)) +#define is_posix_IDFIRST(c) (UNLIKELY((c) == '_') || is_posix_ALPHA(c)) +#define is_posix_SPACE(c) isspace((U8) (c)) +#define is_posix_WORDCHAR(c) (UNLIKELY((c) == '_') || is_posix_ALPHANUMERIC(c)) + +/* The base-level case changing macros are also the same in all platforms */ +#define to_posix_LOWER(c) tolower((U8) (c)) +#define to_posix_UPPER(c) toupper((U8) (c)) +#define to_posix_FOLD(c) to_posix_LOWER(c) #ifdef WIN32 - /* The Windows functions don't bother to follow the POSIX standard, which - * for example says that something can't both be a printable and a control. - * But Windows treats the \t control as a printable, and does such things - * as making superscripts into both digits and punctuation. This tames - * these flaws by assuming that the definitions of both controls and space - * are correct, and then making sure that other definitions don't have - * weirdnesses, by making sure that isalnum() isn't also ispunct(), etc. - * Not all possible weirdnesses are checked for, just the ones that were - * detected on actual Microsoft code pages */ - -# define isCNTRL_LC(c) _generic_LC(c, _CC_CNTRL, iscntrl) -# define isSPACE_LC(c) _generic_LC(c, _CC_SPACE, isspace) - -# define isALPHA_LC(c) (_generic_LC(c, _CC_ALPHA, isalpha) \ - && isALPHANUMERIC_LC(c)) -# define isALPHANUMERIC_LC(c) (_generic_LC(c, _CC_ALPHANUMERIC, isalnum) && \ - ! isPUNCT_LC(c)) -# define isDIGIT_LC(c) (_generic_LC(c, _CC_DIGIT, isdigit) && \ - isALPHANUMERIC_LC(c)) -# define isGRAPH_LC(c) (_generic_LC(c, _CC_GRAPH, isgraph) && isPRINT_LC(c)) -# define isIDFIRST_LC(c) (((c) == '_') \ - || (_generic_LC(c, _CC_IDFIRST, isalpha) && ! isPUNCT_LC(c))) -# define isLOWER_LC(c) (_generic_LC(c, _CC_LOWER, islower) && isALPHA_LC(c)) -# define isPRINT_LC(c) (_generic_LC(c, _CC_PRINT, isprint) && ! isCNTRL_LC(c)) -# define isPUNCT_LC(c) (_generic_LC(c, _CC_PUNCT, ispunct) && ! isCNTRL_LC(c)) -# define isUPPER_LC(c) (_generic_LC(c, _CC_UPPER, isupper) && isALPHA_LC(c)) -# define isWORDCHAR_LC(c) (((c) == '_') || isALPHANUMERIC_LC(c)) -# define isXDIGIT_LC(c) (_generic_LC(c, _CC_XDIGIT, isxdigit) \ - && isALPHANUMERIC_LC(c)) - -# define toLOWER_LC(c) _generic_toLOWER_LC((c), tolower, U8) -# define toUPPER_LC(c) _generic_toUPPER_LC((c), toupper, U8) -# define toFOLD_LC(c) _generic_toFOLD_LC((c), tolower, U8) - -#elif defined(CTYPE256) || (!defined(isascii) && !defined(HAS_ISASCII)) - /* For most other platforms */ - -# define isALPHA_LC(c) _generic_LC(c, _CC_ALPHA, isalpha) -# define isALPHANUMERIC_LC(c) _generic_LC(c, _CC_ALPHANUMERIC, isalnum) -# define isCNTRL_LC(c) _generic_LC(c, _CC_CNTRL, iscntrl) -# define isDIGIT_LC(c) _generic_LC(c, _CC_DIGIT, isdigit) -# ifdef OS390 /* This system considers NBSP to be a graph */ -# define isGRAPH_LC(c) _generic_LC(c, _CC_GRAPH, isgraph) \ - && ! isSPACE_LC(c) + +/* The Windows functions don't bother to follow the POSIX standard, which for + * example says that something can't both be a printable and a control. But + * Windows treats \t as both a control and a printable, and does such things as + * making superscripts into both digits and punctuation. These #defines tame + * these flaws by assuming that the definitions of controls (and the other few + * ones defined above) are correct, and then making sure that other definitions + * don't have weirdnesses, by adding a check that \w and its subsets aren't + * ispunct(), and things that are \W, like ispunct(), arent't controls. Not + * all possible weirdnesses are checked for, just ones that were detected on + * actual Microsoft code pages */ +# define is_posix_ALPHA(c) \ + (isalpha((U8) (c)) && ! is_posix_PUNCT(c)) +# define is_posix_ALPHANUMERIC(c) \ + (isalnum((U8) (c)) && ! is_posix_PUNCT(c)) +# define is_posix_CASED(c) \ + ((isupper((U8) (c)) || islower((U8) (c))) && ! is_posix_PUNCT(c)) +# define is_posix_DIGIT(c) \ + (isdigit((U8) (c)) && ! is_posix_PUNCT(c)) +# define is_posix_GRAPH(c) \ + (isgraph((U8) (c)) && ! is_posix_CNTRL(c)) +# define is_posix_LOWER(c) \ + (islower((U8) (c)) && ! is_posix_PUNCT(c)) +# define is_posix_PRINT(c) \ + (isprint((U8) (c)) && ! is_posix_CNTRL(c)) +# define is_posix_PUNCT(c) \ + (ispunct((U8) (c)) && ! is_posix_CNTRL(c)) +# define is_posix_UPPER(c) \ + (isupper((U8) (c)) && ! is_posix_PUNCT(c)) +# define is_posix_XDIGIT(c) \ + (isxdigit((U8) (c)) && ! is_posix_PUNCT(c)) +#else + +/* For all other platforms, as far as we know, isdigit(), etc. work sanely + * enough */ +# define is_posix_ALPHA(c) isalpha((U8) (c)) +# define is_posix_ALPHANUMERIC(c) isalnum((U8) (c)) +# define is_posix_CASED(c) (islower((U8) (c)) || isupper((U8) (c))) +# define is_posix_DIGIT(c) isdigit((U8) (c)) + + /* ... But it seems that IBM products treat NBSP as both a space and a + * graphic; these are the two platforms that we have active test beds for. + */ +# if defined(OS390) || defined(_AIX) +# define is_posix_GRAPH(c) (isgraph((U8) (c)) && ! isspace((U8) (c))) # else -# define isGRAPH_LC(c) _generic_LC(c, _CC_GRAPH, isgraph) +# define is_posix_GRAPH(c) isgraph((U8) (c)) # endif -# define isIDFIRST_LC(c) _generic_LC_underscore(c, _CC_IDFIRST, isalpha) -# define isLOWER_LC(c) _generic_LC(c, _CC_LOWER, islower) -# define isPRINT_LC(c) _generic_LC(c, _CC_PRINT, isprint) -# define isPUNCT_LC(c) _generic_LC(c, _CC_PUNCT, ispunct) -# define isSPACE_LC(c) _generic_LC(c, _CC_SPACE, isspace) -# define isUPPER_LC(c) _generic_LC(c, _CC_UPPER, isupper) -# define isWORDCHAR_LC(c) _generic_LC_underscore(c, _CC_WORDCHAR, isalnum) -# define isXDIGIT_LC(c) _generic_LC(c, _CC_XDIGIT, isxdigit) - - -# define toLOWER_LC(c) _generic_toLOWER_LC((c), tolower, U8) -# define toUPPER_LC(c) _generic_toUPPER_LC((c), toupper, U8) -# define toFOLD_LC(c) _generic_toFOLD_LC((c), tolower, U8) - -#else /* The final fallback position */ - -# define isALPHA_LC(c) (isascii(c) && isalpha(c)) -# define isALPHANUMERIC_LC(c) (isascii(c) && isalnum(c)) -# define isCNTRL_LC(c) (isascii(c) && iscntrl(c)) -# define isDIGIT_LC(c) (isascii(c) && isdigit(c)) -# define isGRAPH_LC(c) (isascii(c) && isgraph(c)) -# define isIDFIRST_LC(c) (isascii(c) && (isalpha(c) || (c) == '_')) -# define isLOWER_LC(c) (isascii(c) && islower(c)) -# define isPRINT_LC(c) (isascii(c) && isprint(c)) -# define isPUNCT_LC(c) (isascii(c) && ispunct(c)) -# define isSPACE_LC(c) (isascii(c) && isspace(c)) -# define isUPPER_LC(c) (isascii(c) && isupper(c)) -# define isWORDCHAR_LC(c) (isascii(c) && (isalnum(c) || (c) == '_')) -# define isXDIGIT_LC(c) (isascii(c) && isxdigit(c)) - -# define toLOWER_LC(c) (isascii(c) ? tolower(c) : (c)) -# define toUPPER_LC(c) (isascii(c) ? toupper(c) : (c)) -# define toFOLD_LC(c) (isascii(c) ? tolower(c) : (c)) +# define is_posix_LOWER(c) islower((U8) (c)) +# define is_posix_PRINT(c) isprint((U8) (c)) +# define is_posix_PUNCT(c) ispunct((U8) (c)) +# define is_posix_UPPER(c) isupper((U8) (c)) +# define is_posix_XDIGIT(c) isxdigit((U8) (c)) +#endif + +/* Below is the next level up, which currently expands to nothing more + * than the previous layer. These are the macros to use if you really need + * something whose input domain is a byte, and the locale isn't UTF-8; that is, + * where you normally would have to use things like bare isalnum(). + * + * But most likely you should instead use the layer defined further below which + * has names like isALPHA_LC. They deal with larger-than-byte inputs, and + * UTF-8 locales. + * + * (Note, proper general operation of the bare libc functions requires you to + * cast to U8. These do that for you automatically.) */ + +# define WRAP_U8_LC_(c, classnum, posix) posix(c) + +#define isU8_ALPHANUMERIC_LC(c) \ + WRAP_U8_LC_((c), CC_ALPHANUMERIC_, is_posix_ALPHANUMERIC) +#define isU8_ALPHA_LC(c) WRAP_U8_LC_((c), CC_ALPHA_, is_posix_ALPHA) +#define isU8_ASCII_LC(c) WRAP_U8_LC_((c), CC_ASCII_, is_posix_ASCII) +#define isU8_BLANK_LC(c) WRAP_U8_LC_((c), CC_BLANK_, is_posix_BLANK) +#define isU8_CASED_LC(c) WRAP_U8_LC_((c), CC_CASED_, is_posix_CASED) +#define isU8_CNTRL_LC(c) WRAP_U8_LC_((c), CC_CNTRL_, is_posix_CNTRL) +#define isU8_DIGIT_LC(c) WRAP_U8_LC_((c), CC_DIGIT_, is_posix_DIGIT) +#define isU8_GRAPH_LC(c) WRAP_U8_LC_((c), CC_GRAPH_, is_posix_GRAPH) +#define isU8_IDFIRST_LC(c) WRAP_U8_LC_((c), CC_IDFIRST_, is_posix_IDFIRST) +#define isU8_LOWER_LC(c) WRAP_U8_LC_((c), CC_LOWER_, is_posix_LOWER) +#define isU8_PRINT_LC(c) WRAP_U8_LC_((c), CC_PRINT_, is_posix_PRINT) +#define isU8_PUNCT_LC(c) WRAP_U8_LC_((c), CC_PUNCT_, is_posix_PUNCT) +#define isU8_SPACE_LC(c) WRAP_U8_LC_((c), CC_SPACE_, is_posix_SPACE) +#define isU8_UPPER_LC(c) WRAP_U8_LC_((c), CC_UPPER_, is_posix_UPPER) +#define isU8_WORDCHAR_LC(c) WRAP_U8_LC_((c), CC_WORDCHAR_, is_posix_WORDCHAR) +#define isU8_XDIGIT_LC(c) WRAP_U8_LC_((c), CC_XDIGIT_, is_posix_XDIGIT) + +#define toU8_LOWER_LC(c) WRAP_U8_LC_((c), CC_TOLOWER_, to_posix_LOWER) +#define toU8_UPPER_LC(c) WRAP_U8_LC_((c), CC_TOUPPER_, to_posix_UPPER) +#define toU8_FOLD_LC(c) toU8_LOWER_LC(c) + +/* The definitions below use the ones above to create versions in which the + * input domain isn't restricted to bytes (though always returning false if the + * input doesn't fit in a byte), and to behave properly should the locale be + * UTF-8. These are the documented ones, suitable for general use (though + * toUPPER_LC and toFOLD_LC aren't documented because they need special + * handling to deal with SHARP S expanding to two characters). */ + +#define isASCII_LC(c) (FITS_IN_8_BITS(c) && isU8_ASCII_LC(c)) +#define isALPHA_LC(c) generic_LC_(c, CC_ALPHA_, isU8_ALPHA_LC) +#define isALPHANUMERIC_LC(c) \ + generic_LC_(c, CC_ALPHANUMERIC_, isU8_ALPHANUMERIC_LC) +#define isBLANK_LC(c) generic_LC_(c, CC_BLANK_, isU8_BLANK_LC) +#define isCASED_LC(c) generic_LC_(c, CC_CASED_, isU8_CASED_LC) +#define isCNTRL_LC(c) generic_LC_(c, CC_CNTRL_, isU8_CNTRL_LC) +#define isDIGIT_LC(c) generic_LC_(c, CC_DIGIT_, isU8_DIGIT_LC) +#define isGRAPH_LC(c) generic_LC_(c, CC_GRAPH_, isU8_GRAPH_LC) +#define isIDFIRST_LC(c) generic_LC_(c, CC_IDFIRST_, isU8_IDFIRST_LC) +#define isLOWER_LC(c) generic_LC_(c, CC_LOWER_, isU8_LOWER_LC) +#define isPRINT_LC(c) generic_LC_(c, CC_PRINT_, isU8_PRINT_LC) +#define isPUNCT_LC(c) generic_LC_(c, CC_PUNCT_, isU8_PUNCT_LC) +#define isSPACE_LC(c) generic_LC_(c, CC_SPACE_, isU8_SPACE_LC) +#define isUPPER_LC(c) generic_LC_(c, CC_UPPER_, isU8_UPPER_LC) +#define isWORDCHAR_LC(c) generic_LC_(c, CC_WORDCHAR_, isU8_WORDCHAR_LC) +#define isXDIGIT_LC(c) generic_LC_(c, CC_XDIGIT_, isU8_XDIGIT_LC) + +#ifndef CTYPE256 +# define toLOWER_LC(c) toLOWER_A(c) +# define toUPPER_LC(c) toUPPER_A(c) +# define toFOLD_LC(c) toFOLD_A(c) +#else +/* In the next three macros, the reason for using the PL_latin arrays is in + * case the system function is defective; it ensures uniform results that + * conform to the Unicode standard. */ + +/* This does not handle the anomalies in UTF-8 Turkic locales. */ +# define toLOWER_LC(c) ((! FITS_IN_8_BITS(c)) \ + ? (c) \ + : ((IN_UTF8_CTYPE_LOCALE) \ + ? PL_latin1_lc[ (U8) (c) ] \ + : ((U8) toU8_LOWER_LC(c)))) + +/* In this macro, note that the result can be larger than a byte in a UTF-8 + * locale. It returns a single value, so can't adequately return the upper + * case of LATIN SMALL LETTER SHARP S in a UTF-8 locale (which should be a + * string of two values "SS"); instead it asserts against that under + * DEBUGGING, and otherwise returns its input. It does not handle the + * anomalies in UTF-8 Turkic locales. */ +# define toUPPER_LC(c) \ + ((! FITS_IN_8_BITS(c)) \ + ? (c) \ + : ((! IN_UTF8_CTYPE_LOCALE) \ + ? ((U8) toU8_UPPER_LC(c)) \ + : (UNLIKELY(((U8)(c)) == MICRO_SIGN) \ + ? GREEK_CAPITAL_LETTER_MU \ + : ((UNLIKELY(((U8) (c)) == LATIN_SMALL_LETTER_Y_WITH_DIAERESIS) \ + ? LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS \ + : (UNLIKELY(((U8)(c)) == LATIN_SMALL_LETTER_SHARP_S) \ + ? (__ASSERT_(0) (c)) /* Fail on Sharp S in DEBUGGING */ \ + : PL_mod_latin1_uc[ (U8) (c) ])))))) + +/* In this macro, note that the result can be larger than a byte in a UTF-8 + * locale. It returns a single value, so can't adequately return the fold case + * of LATIN SMALL LETTER SHARP S in a UTF-8 locale (which should be a string of + * two values "ss"); instead it asserts against that under DEBUGGING, and + * otherwise returns its input. It does not handle the anomalies in UTF-8 + * Turkic locales */ +# define toFOLD_LC(c) \ + ((UNLIKELY((c) == MICRO_SIGN) && IN_UTF8_CTYPE_LOCALE) \ + ? GREEK_SMALL_LETTER_MU \ + : (__ASSERT_( ! IN_UTF8_CTYPE_LOCALE \ + || LIKELY((c) != LATIN_SMALL_LETTER_SHARP_S)) \ + toLOWER_LC(c))) #endif #define isIDCONT(c) isWORDCHAR(c) @@ -2058,46 +2144,46 @@ END_EXTERN_C /* For internal core Perl use only: the base macros for defining macros like * isALPHA_uvchr. 'c' is the code point to check. 'classnum' is the POSIX class - * number defined earlier in this file. _generic_uvchr() is used for POSIX + * number defined earlier in this file. generic_uvchr_() is used for POSIX * classes where there is a macro or function 'above_latin1' that takes the * single argument 'c' and returns the desired value. These exist for those * classes which have simple definitions, avoiding the overhead of an inversion - * list binary search. _generic_invlist_uvchr() can be used + * list binary search. generic_invlist_uvchr_() can be used * for classes where that overhead is faster than a direct lookup. - * _generic_uvchr() won't compile if 'c' isn't unsigned, as it won't match the - * 'above_latin1' prototype. _generic_isCC() macro does bounds checking, so + * generic_uvchr_() won't compile if 'c' isn't unsigned, as it won't match the + * 'above_latin1' prototype. generic_isCC_() macro does bounds checking, so * have duplicate checks here, so could create versions of the macros that * don't, but experiments show that gcc optimizes them out anyway. */ /* Note that all ignore 'use bytes' */ -#define _generic_uvchr(classnum, above_latin1, c) ((c) < 256 \ - ? _generic_isCC(c, classnum) \ +#define generic_uvchr_(classnum, above_latin1, c) ((c) < 256 \ + ? generic_isCC_(c, classnum) \ : above_latin1(c)) -#define _generic_invlist_uvchr(classnum, c) ((c) < 256 \ - ? _generic_isCC(c, classnum) \ +#define generic_invlist_uvchr_(classnum, c) ((c) < 256 \ + ? generic_isCC_(c, classnum) \ : _is_uni_FOO(classnum, c)) -#define isALPHA_uvchr(c) _generic_invlist_uvchr(_CC_ALPHA, c) -#define isALPHANUMERIC_uvchr(c) _generic_invlist_uvchr(_CC_ALPHANUMERIC, c) +#define isALPHA_uvchr(c) generic_invlist_uvchr_(CC_ALPHA_, c) +#define isALPHANUMERIC_uvchr(c) generic_invlist_uvchr_(CC_ALPHANUMERIC_, c) #define isASCII_uvchr(c) isASCII(c) -#define isBLANK_uvchr(c) _generic_uvchr(_CC_BLANK, is_HORIZWS_cp_high, c) +#define isBLANK_uvchr(c) generic_uvchr_(CC_BLANK_, is_HORIZWS_cp_high, c) #define isCNTRL_uvchr(c) isCNTRL_L1(c) /* All controls are in Latin1 */ -#define isDIGIT_uvchr(c) _generic_invlist_uvchr(_CC_DIGIT, c) -#define isGRAPH_uvchr(c) _generic_invlist_uvchr(_CC_GRAPH, c) +#define isDIGIT_uvchr(c) generic_invlist_uvchr_(CC_DIGIT_, c) +#define isGRAPH_uvchr(c) generic_invlist_uvchr_(CC_GRAPH_, c) #define isIDCONT_uvchr(c) \ - _generic_uvchr(_CC_WORDCHAR, _is_uni_perl_idcont, c) + generic_uvchr_(CC_WORDCHAR_, _is_uni_perl_idcont, c) #define isIDFIRST_uvchr(c) \ - _generic_uvchr(_CC_IDFIRST, _is_uni_perl_idstart, c) -#define isLOWER_uvchr(c) _generic_invlist_uvchr(_CC_LOWER, c) -#define isPRINT_uvchr(c) _generic_invlist_uvchr(_CC_PRINT, c) + generic_uvchr_(CC_IDFIRST_, _is_uni_perl_idstart, c) +#define isLOWER_uvchr(c) generic_invlist_uvchr_(CC_LOWER_, c) +#define isPRINT_uvchr(c) generic_invlist_uvchr_(CC_PRINT_, c) -#define isPUNCT_uvchr(c) _generic_invlist_uvchr(_CC_PUNCT, c) -#define isSPACE_uvchr(c) _generic_uvchr(_CC_SPACE, is_XPERLSPACE_cp_high, c) +#define isPUNCT_uvchr(c) generic_invlist_uvchr_(CC_PUNCT_, c) +#define isSPACE_uvchr(c) generic_uvchr_(CC_SPACE_, is_XPERLSPACE_cp_high, c) #define isPSXSPC_uvchr(c) isSPACE_uvchr(c) -#define isUPPER_uvchr(c) _generic_invlist_uvchr(_CC_UPPER, c) -#define isVERTWS_uvchr(c) _generic_uvchr(_CC_VERTSPACE, is_VERTWS_cp_high, c) -#define isWORDCHAR_uvchr(c) _generic_invlist_uvchr(_CC_WORDCHAR, c) -#define isXDIGIT_uvchr(c) _generic_uvchr(_CC_XDIGIT, is_XDIGIT_cp_high, c) +#define isUPPER_uvchr(c) generic_invlist_uvchr_(CC_UPPER_, c) +#define isVERTWS_uvchr(c) generic_uvchr_(CC_VERTSPACE_, is_VERTWS_cp_high, c) +#define isWORDCHAR_uvchr(c) generic_invlist_uvchr_(CC_WORDCHAR_, c) +#define isXDIGIT_uvchr(c) generic_uvchr_(CC_XDIGIT_, is_XDIGIT_cp_high, c) #define toFOLD_uvchr(c,s,l) to_uni_fold(c,s,l) #define toLOWER_uvchr(c,s,l) to_uni_lower(c,s,l) @@ -2131,37 +2217,37 @@ END_EXTERN_C /* For internal core Perl use only: the base macros for defining macros like * isALPHA_LC_uvchr. These are like isALPHA_LC, but the input can be any code - * point, not just 0-255. Like _generic_uvchr, there are two versions, one for + * point, not just 0-255. Like generic_uvchr_, there are two versions, one for * simple class definitions; the other for more complex. These are like - * _generic_uvchr, so see it for more info. */ -#define _generic_LC_uvchr(latin1, above_latin1, c) \ + * generic_uvchr_, so see it for more info. */ +#define generic_LC_uvchr_(latin1, above_latin1, c) \ (c < 256 ? latin1(c) : above_latin1(c)) -#define _generic_LC_invlist_uvchr(latin1, classnum, c) \ +#define generic_LC_invlist_uvchr_(latin1, classnum, c) \ (c < 256 ? latin1(c) : _is_uni_FOO(classnum, c)) -#define isALPHA_LC_uvchr(c) _generic_LC_invlist_uvchr(isALPHA_LC, _CC_ALPHA, c) -#define isALPHANUMERIC_LC_uvchr(c) _generic_LC_invlist_uvchr(isALPHANUMERIC_LC, \ - _CC_ALPHANUMERIC, c) +#define isALPHA_LC_uvchr(c) generic_LC_invlist_uvchr_(isALPHA_LC, CC_ALPHA_, c) +#define isALPHANUMERIC_LC_uvchr(c) generic_LC_invlist_uvchr_(isALPHANUMERIC_LC, \ + CC_ALPHANUMERIC_, c) #define isASCII_LC_uvchr(c) isASCII_LC(c) -#define isBLANK_LC_uvchr(c) _generic_LC_uvchr(isBLANK_LC, \ +#define isBLANK_LC_uvchr(c) generic_LC_uvchr_(isBLANK_LC, \ is_HORIZWS_cp_high, c) #define isCNTRL_LC_uvchr(c) (c < 256 ? isCNTRL_LC(c) : 0) -#define isDIGIT_LC_uvchr(c) _generic_LC_invlist_uvchr(isDIGIT_LC, _CC_DIGIT, c) -#define isGRAPH_LC_uvchr(c) _generic_LC_invlist_uvchr(isGRAPH_LC, _CC_GRAPH, c) -#define isIDCONT_LC_uvchr(c) _generic_LC_uvchr(isIDCONT_LC, \ +#define isDIGIT_LC_uvchr(c) generic_LC_invlist_uvchr_(isDIGIT_LC, CC_DIGIT_, c) +#define isGRAPH_LC_uvchr(c) generic_LC_invlist_uvchr_(isGRAPH_LC, CC_GRAPH_, c) +#define isIDCONT_LC_uvchr(c) generic_LC_uvchr_(isIDCONT_LC, \ _is_uni_perl_idcont, c) -#define isIDFIRST_LC_uvchr(c) _generic_LC_uvchr(isIDFIRST_LC, \ +#define isIDFIRST_LC_uvchr(c) generic_LC_uvchr_(isIDFIRST_LC, \ _is_uni_perl_idstart, c) -#define isLOWER_LC_uvchr(c) _generic_LC_invlist_uvchr(isLOWER_LC, _CC_LOWER, c) -#define isPRINT_LC_uvchr(c) _generic_LC_invlist_uvchr(isPRINT_LC, _CC_PRINT, c) +#define isLOWER_LC_uvchr(c) generic_LC_invlist_uvchr_(isLOWER_LC, CC_LOWER_, c) +#define isPRINT_LC_uvchr(c) generic_LC_invlist_uvchr_(isPRINT_LC, CC_PRINT_, c) #define isPSXSPC_LC_uvchr(c) isSPACE_LC_uvchr(c) -#define isPUNCT_LC_uvchr(c) _generic_LC_invlist_uvchr(isPUNCT_LC, _CC_PUNCT, c) -#define isSPACE_LC_uvchr(c) _generic_LC_uvchr(isSPACE_LC, \ +#define isPUNCT_LC_uvchr(c) generic_LC_invlist_uvchr_(isPUNCT_LC, CC_PUNCT_, c) +#define isSPACE_LC_uvchr(c) generic_LC_uvchr_(isSPACE_LC, \ is_XPERLSPACE_cp_high, c) -#define isUPPER_LC_uvchr(c) _generic_LC_invlist_uvchr(isUPPER_LC, _CC_UPPER, c) -#define isWORDCHAR_LC_uvchr(c) _generic_LC_invlist_uvchr(isWORDCHAR_LC, \ - _CC_WORDCHAR, c) -#define isXDIGIT_LC_uvchr(c) _generic_LC_uvchr(isXDIGIT_LC, \ +#define isUPPER_LC_uvchr(c) generic_LC_invlist_uvchr_(isUPPER_LC, CC_UPPER_, c) +#define isWORDCHAR_LC_uvchr(c) generic_LC_invlist_uvchr_(isWORDCHAR_LC, \ + CC_WORDCHAR_, c) +#define isXDIGIT_LC_uvchr(c) generic_LC_uvchr_(isXDIGIT_LC, \ is_XDIGIT_cp_high, c) #define isBLANK_LC_uni(c) isBLANK_LC_uvchr(UNI_TO_NATIVE(c)) @@ -2189,41 +2275,41 @@ END_EXTERN_C # define _utf8_safe_assert(p,e) ((e) > (p)) #endif -#define _generic_utf8_safe(classnum, p, e, above_latin1) \ +#define generic_utf8_safe_(classnum, p, e, above_latin1) \ ((! _utf8_safe_assert(p, e)) \ ? (_force_out_malformed_utf8_message((U8 *) (p), (U8 *) (e), 0, 1), 0)\ : (UTF8_IS_INVARIANT(*(p))) \ - ? _generic_isCC(*(p), classnum) \ + ? generic_isCC_(*(p), classnum) \ : (UTF8_IS_DOWNGRADEABLE_START(*(p)) \ ? ((LIKELY((e) - (p) > 1 && UTF8_IS_CONTINUATION(*((p)+1)))) \ - ? _generic_isCC(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1 )), \ + ? generic_isCC_(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1 )), \ classnum) \ : (_force_out_malformed_utf8_message( \ (U8 *) (p), (U8 *) (e), 0, 1), 0)) \ : above_latin1)) /* Like the above, but calls 'above_latin1(p)' to get the utf8 value. * 'above_latin1' can be a macro */ -#define _generic_func_utf8_safe(classnum, above_latin1, p, e) \ - _generic_utf8_safe(classnum, p, e, above_latin1(p, e)) -#define _generic_non_invlist_utf8_safe(classnum, above_latin1, p, e) \ - _generic_utf8_safe(classnum, p, e, \ +#define generic_func_utf8_safe_(classnum, above_latin1, p, e) \ + generic_utf8_safe_(classnum, p, e, above_latin1(p, e)) +#define generic_non_invlist_utf8_safe_(classnum, above_latin1, p, e) \ + generic_utf8_safe_(classnum, p, e, \ (UNLIKELY((e) - (p) < UTF8SKIP(p)) \ ? (_force_out_malformed_utf8_message( \ (U8 *) (p), (U8 *) (e), 0, 1), 0) \ : above_latin1(p))) /* Like the above, but passes classnum to _isFOO_utf8(), instead of having an * 'above_latin1' parameter */ -#define _generic_invlist_utf8_safe(classnum, p, e) \ - _generic_utf8_safe(classnum, p, e, _is_utf8_FOO(classnum, p, e)) +#define generic_invlist_utf8_safe_(classnum, p, e) \ + generic_utf8_safe_(classnum, p, e, _is_utf8_FOO(classnum, p, e)) /* Like the above, but should be used only when it is known that there are no * characters in the upper-Latin1 range (128-255 on ASCII platforms) which the * class is TRUE for. Hence it can skip the tests for this range. * 'above_latin1' should include its arguments */ -#define _generic_utf8_safe_no_upper_latin1(classnum, p, e, above_latin1) \ +#define generic_utf8_safe_no_upper_latin1_(classnum, p, e, above_latin1) \ (__ASSERT_(_utf8_safe_assert(p, e)) \ (isASCII(*(p))) \ - ? _generic_isCC(*(p), classnum) \ + ? generic_isCC_(*(p), classnum) \ : (UTF8_IS_DOWNGRADEABLE_START(*(p))) \ ? 0 /* Note that doesn't check validity for latin1 */ \ : above_latin1) @@ -2248,15 +2334,15 @@ END_EXTERN_C #define isWORDCHAR_utf8(p, e) isWORDCHAR_utf8_safe(p, e) #define isXDIGIT_utf8(p, e) isXDIGIT_utf8_safe(p, e) -#define isALPHA_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_ALPHA, p, e) +#define isALPHA_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_ALPHA_, p, e) #define isALPHANUMERIC_utf8_safe(p, e) \ - _generic_invlist_utf8_safe(_CC_ALPHANUMERIC, p, e) + generic_invlist_utf8_safe_(CC_ALPHANUMERIC_, p, e) #define isASCII_utf8_safe(p, e) \ /* Because ASCII is invariant under utf8, the non-utf8 macro \ * works */ \ (__ASSERT_(_utf8_safe_assert(p, e)) isASCII(*(p))) #define isBLANK_utf8_safe(p, e) \ - _generic_non_invlist_utf8_safe(_CC_BLANK, is_HORIZWS_high, p, e) + generic_non_invlist_utf8_safe_(CC_BLANK_, is_HORIZWS_high, p, e) #ifdef EBCDIC /* Because all controls are UTF-8 invariants in EBCDIC, we can use this @@ -2264,14 +2350,14 @@ END_EXTERN_C # define isCNTRL_utf8_safe(p, e) \ (__ASSERT_(_utf8_safe_assert(p, e)) isCNTRL_L1(*(p))) #else -# define isCNTRL_utf8_safe(p, e) _generic_utf8_safe(_CC_CNTRL, p, e, 0) +# define isCNTRL_utf8_safe(p, e) generic_utf8_safe_(CC_CNTRL_, p, e, 0) #endif #define isDIGIT_utf8_safe(p, e) \ - _generic_utf8_safe_no_upper_latin1(_CC_DIGIT, p, e, \ - _is_utf8_FOO(_CC_DIGIT, p, e)) -#define isGRAPH_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_GRAPH, p, e) -#define isIDCONT_utf8_safe(p, e) _generic_func_utf8_safe(_CC_WORDCHAR, \ + generic_utf8_safe_no_upper_latin1_(CC_DIGIT_, p, e, \ + _is_utf8_FOO(CC_DIGIT_, p, e)) +#define isGRAPH_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_GRAPH_, p, e) +#define isIDCONT_utf8_safe(p, e) generic_func_utf8_safe_(CC_WORDCHAR_, \ _is_utf8_perl_idcont, p, e) /* To prevent S_scan_word in toke.c from hanging, we have to make sure that @@ -2281,22 +2367,22 @@ END_EXTERN_C * This used to be not the XID version, but we decided to go with the more * modern Unicode definition */ #define isIDFIRST_utf8_safe(p, e) \ - _generic_func_utf8_safe(_CC_IDFIRST, \ + generic_func_utf8_safe_(CC_IDFIRST_, \ _is_utf8_perl_idstart, (U8 *) (p), (U8 *) (e)) -#define isLOWER_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_LOWER, p, e) -#define isPRINT_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_PRINT, p, e) +#define isLOWER_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_LOWER_, p, e) +#define isPRINT_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_PRINT_, p, e) #define isPSXSPC_utf8_safe(p, e) isSPACE_utf8_safe(p, e) -#define isPUNCT_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_PUNCT, p, e) +#define isPUNCT_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_PUNCT_, p, e) #define isSPACE_utf8_safe(p, e) \ - _generic_non_invlist_utf8_safe(_CC_SPACE, is_XPERLSPACE_high, p, e) -#define isUPPER_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_UPPER, p, e) + generic_non_invlist_utf8_safe_(CC_SPACE_, is_XPERLSPACE_high, p, e) +#define isUPPER_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_UPPER_, p, e) #define isVERTWS_utf8_safe(p, e) \ - _generic_non_invlist_utf8_safe(_CC_VERTSPACE, is_VERTWS_high, p, e) + generic_non_invlist_utf8_safe_(CC_VERTSPACE_, is_VERTWS_high, p, e) #define isWORDCHAR_utf8_safe(p, e) \ - _generic_invlist_utf8_safe(_CC_WORDCHAR, p, e) + generic_invlist_utf8_safe_(CC_WORDCHAR_, p, e) #define isXDIGIT_utf8_safe(p, e) \ - _generic_utf8_safe_no_upper_latin1(_CC_XDIGIT, p, e, \ + generic_utf8_safe_no_upper_latin1_(CC_XDIGIT_, p, e, \ (UNLIKELY((e) - (p) < UTF8SKIP(p)) \ ? (_force_out_malformed_utf8_message( \ (U8 *) (p), (U8 *) (e), 0, 1), 0) \ @@ -2337,10 +2423,10 @@ END_EXTERN_C #define isXDIGIT_LC_utf8(p, e) isXDIGIT_LC_utf8_safe(p, e) /* For internal core Perl use only: the base macros for defining macros like - * isALPHA_LC_utf8_safe. These are like _generic_utf8, but if the first code + * isALPHA_LC_utf8_safe. These are like generic_utf8_, but if the first code * point in 'p' is within the 0-255 range, it uses locale rules from the * passed-in 'macro' parameter */ -#define _generic_LC_utf8_safe(macro, p, e, above_latin1) \ +#define generic_LC_utf8_safe_(macro, p, e, above_latin1) \ (__ASSERT_(_utf8_safe_assert(p, e)) \ (UTF8_IS_INVARIANT(*(p))) \ ? macro(*(p)) \ @@ -2351,56 +2437,56 @@ END_EXTERN_C (U8 *) (p), (U8 *) (e), 0, 1), 0)) \ : above_latin1)) -#define _generic_LC_invlist_utf8_safe(macro, classnum, p, e) \ - _generic_LC_utf8_safe(macro, p, e, \ +#define generic_LC_invlist_utf8_safe_(macro, classnum, p, e) \ + generic_LC_utf8_safe_(macro, p, e, \ _is_utf8_FOO(classnum, p, e)) -#define _generic_LC_func_utf8_safe(macro, above_latin1, p, e) \ - _generic_LC_utf8_safe(macro, p, e, above_latin1(p, e)) +#define generic_LC_func_utf8_safe_(macro, above_latin1, p, e) \ + generic_LC_utf8_safe_(macro, p, e, above_latin1(p, e)) -#define _generic_LC_non_invlist_utf8_safe(classnum, above_latin1, p, e) \ - _generic_LC_utf8_safe(classnum, p, e, \ +#define generic_LC_non_invlist_utf8_safe_(classnum, above_latin1, p, e) \ + generic_LC_utf8_safe_(classnum, p, e, \ (UNLIKELY((e) - (p) < UTF8SKIP(p)) \ ? (_force_out_malformed_utf8_message( \ (U8 *) (p), (U8 *) (e), 0, 1), 0) \ : above_latin1(p))) #define isALPHANUMERIC_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isALPHANUMERIC_LC, \ - _CC_ALPHANUMERIC, p, e) + generic_LC_invlist_utf8_safe_(isALPHANUMERIC_LC, \ + CC_ALPHANUMERIC_, p, e) #define isALPHA_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isALPHA_LC, _CC_ALPHA, p, e) + generic_LC_invlist_utf8_safe_(isALPHA_LC, CC_ALPHA_, p, e) #define isASCII_LC_utf8_safe(p, e) \ (__ASSERT_(_utf8_safe_assert(p, e)) isASCII_LC(*(p))) #define isBLANK_LC_utf8_safe(p, e) \ - _generic_LC_non_invlist_utf8_safe(isBLANK_LC, is_HORIZWS_high, p, e) + generic_LC_non_invlist_utf8_safe_(isBLANK_LC, is_HORIZWS_high, p, e) #define isCNTRL_LC_utf8_safe(p, e) \ - _generic_LC_utf8_safe(isCNTRL_LC, p, e, 0) + generic_LC_utf8_safe_(isCNTRL_LC, p, e, 0) #define isDIGIT_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isDIGIT_LC, _CC_DIGIT, p, e) + generic_LC_invlist_utf8_safe_(isDIGIT_LC, CC_DIGIT_, p, e) #define isGRAPH_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isGRAPH_LC, _CC_GRAPH, p, e) + generic_LC_invlist_utf8_safe_(isGRAPH_LC, CC_GRAPH_, p, e) #define isIDCONT_LC_utf8_safe(p, e) \ - _generic_LC_func_utf8_safe(isIDCONT_LC, \ + generic_LC_func_utf8_safe_(isIDCONT_LC, \ _is_utf8_perl_idcont, p, e) #define isIDFIRST_LC_utf8_safe(p, e) \ - _generic_LC_func_utf8_safe(isIDFIRST_LC, \ + generic_LC_func_utf8_safe_(isIDFIRST_LC, \ _is_utf8_perl_idstart, p, e) #define isLOWER_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isLOWER_LC, _CC_LOWER, p, e) + generic_LC_invlist_utf8_safe_(isLOWER_LC, CC_LOWER_, p, e) #define isPRINT_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isPRINT_LC, _CC_PRINT, p, e) + generic_LC_invlist_utf8_safe_(isPRINT_LC, CC_PRINT_, p, e) #define isPSXSPC_LC_utf8_safe(p, e) isSPACE_LC_utf8_safe(p, e) #define isPUNCT_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isPUNCT_LC, _CC_PUNCT, p, e) + generic_LC_invlist_utf8_safe_(isPUNCT_LC, CC_PUNCT_, p, e) #define isSPACE_LC_utf8_safe(p, e) \ - _generic_LC_non_invlist_utf8_safe(isSPACE_LC, is_XPERLSPACE_high, p, e) + generic_LC_non_invlist_utf8_safe_(isSPACE_LC, is_XPERLSPACE_high, p, e) #define isUPPER_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isUPPER_LC, _CC_UPPER, p, e) + generic_LC_invlist_utf8_safe_(isUPPER_LC, CC_UPPER_, p, e) #define isWORDCHAR_LC_utf8_safe(p, e) \ - _generic_LC_invlist_utf8_safe(isWORDCHAR_LC, _CC_WORDCHAR, p, e) + generic_LC_invlist_utf8_safe_(isWORDCHAR_LC, CC_WORDCHAR_, p, e) #define isXDIGIT_LC_utf8_safe(p, e) \ - _generic_LC_non_invlist_utf8_safe(isXDIGIT_LC, is_XDIGIT_high, p, e) + generic_LC_non_invlist_utf8_safe_(isXDIGIT_LC, is_XDIGIT_high, p, e) /* Macros for backwards compatibility and for completeness when the ASCII and * Latin1 values are identical */ @@ -2460,6 +2546,7 @@ The typedef to use to declare variables that are to hold line numbers. Line numbers are unsigned, 32 bits. */ typedef U32 line_t; +#define LINE_Tf U32uf #define NOLINE ((line_t) 4294967295UL) /* = FFFFFFFF */ /* Helpful alias for version prescan */ @@ -2585,6 +2672,10 @@ C is like C but returns C. Useful for encouraging compilers to tail-call optimise. +=for apidoc Am|void |NewCopy |void* src|void* dest|int nitems|type +Combines Newx() and Copy() into a single macro. Dest will be allocated +using Newx() and then src will be copied into it. + =for apidoc Am|void |Zero |void* dest|int nitems|type =for apidoc_item |void *|ZeroD|void* dest|int nitems|type @@ -2639,6 +2730,7 @@ PoisonWith(0xEF) for catching access to freed memory. * max(n) * sizeof(t) > MEM_SIZE_MAX */ + # define _MEM_WRAP_NEEDS_RUNTIME_CHECK(n,t) \ ( sizeof(MEM_SIZE) < sizeof(n) \ || sizeof(t) > ((MEM_SIZE)1 << 8*(sizeof(MEM_SIZE) - sizeof(n)))) @@ -2677,17 +2769,17 @@ PoisonWith(0xEF) for catching access to freed memory. ( (void) (UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \ && (Perl_croak_nocontext(ASSERT_IS_LITERAL(a)), 0))) -#define MEM_WRAP_CHECK_(n,t) MEM_WRAP_CHECK(n,t), +# define MEM_WRAP_CHECK_(n,t) MEM_WRAP_CHECK(n,t), -#define PERL_STRLEN_ROUNDUP(n) ((void)(((n) > MEM_SIZE_MAX - 2 * PERL_STRLEN_ROUNDUP_QUANTUM) ? (croak_memory_wrap(),0) : 0), _PERL_STRLEN_ROUNDUP_UNCHECKED(n)) +# define PERL_STRLEN_ROUNDUP(n) ((void)(((n) > MEM_SIZE_MAX - 2 * PERL_STRLEN_ROUNDUP_QUANTUM) ? (croak_memory_wrap(),0) : 0), _PERL_STRLEN_ROUNDUP_UNCHECKED(n)) #else -#define MEM_WRAP_CHECK(n,t) -#define MEM_WRAP_CHECK_1(n,t,a) -#define MEM_WRAP_CHECK_s(n,t,a) -#define MEM_WRAP_CHECK_(n,t) +# define MEM_WRAP_CHECK(n,t) +# define MEM_WRAP_CHECK_1(n,t,a) +# define MEM_WRAP_CHECK_s(n,t,a) +# define MEM_WRAP_CHECK_(n,t) -#define PERL_STRLEN_ROUNDUP(n) _PERL_STRLEN_ROUNDUP_UNCHECKED(n) +# define PERL_STRLEN_ROUNDUP(n) _PERL_STRLEN_ROUNDUP_UNCHECKED(n) #endif @@ -2792,6 +2884,11 @@ enum mem_log_type { #define CopyD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) #define ZeroD(d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), memzero((char*)(d), (n) * sizeof(t))) +#define NewCopy(s,d,n,t) STMT_START { \ + Newx(d,n,t); \ + Copy(s,d,n,t); \ +} STMT_END + #define PoisonWith(d,n,t,b) (MEM_WRAP_CHECK_(n,t) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))) #define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) #define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) @@ -2826,6 +2923,12 @@ last-inclusive range. #define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) #define C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a)) +#if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) +/* strlen() of a literal string constant. Restricting this to core, in part + * because it can generate compiler warnings about comparing unlike signs */ +# define STRLENs(s) (sizeof("" s "") - 1) +#endif + #ifdef NEED_VA_COPY # ifdef va_copy # define Perl_va_copy(s, d) va_copy(d, s) @@ -2853,18 +2956,53 @@ last-inclusive range. #define pTHX__VALUE #endif /* USE_ITHREADS */ -/* Perl_deprecate was not part of the public API, and did not have a deprecate() - shortcut macro defined without -DPERL_CORE. Neither codesearch.google.com nor - CPAN::Unpack show any users outside the core. */ +/* + Perl_deprecate was not part of the public API, and did not have a deprecate() + shortcut macro defined without -DPERL_CORE. Neither codesearch.google.com nor + CPAN::Unpack show any users outside the core. + +=for apidoc_section $warning +=for apidoc Cdm||deprecate|U32 category|"message" +Wrapper around Perl_ck_warner_d() to produce a deprecated warning in the +given category with an appropriate message. The C argument must +be a C string. The string " is deprecated" will automatically be added +to the end of the C. + +=for apidoc Cdm||deprecate_disappears_in|U32 category|"when"|"message" +Wrapper around Perl_ck_warner_d() to produce a deprecated warning in the +given category with an appropriate message that the construct referred +to by the message will disappear in a specific release. The C and +C arguments must be a C string. The C string is expected +to be of the form "5.40", with no minor element in the version. The actual +message output will be the result of the following expression C which is why C +and C must be literal C strings. + +=for apidoc Cdm||deprecate_fatal_in|U32 category|"when"|"message" +Wrapper around Perl_ck_warner_d() to produce a deprecated warning in the +given category with an appropriate message that the construct referred +to by the message will become fatal in a specific release. The C +and C arguments must be a C string. The C string is expected +to be of the form "5.40", with no minor element in the version. The actual +message output will be the result of the following expression C which is why C +and C must be literal C strings. + +=cut +*/ + #ifdef PERL_CORE -# define deprecate(s) Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \ - "Use of " s " is deprecated") -# define deprecate_disappears_in(when,message) \ - Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \ - message " is deprecated, and will disappear in Perl " when) -# define deprecate_fatal_in(when,message) \ - Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \ - message " is deprecated, and will become fatal in Perl " when) +# define deprecate(category,message) \ + Perl_ck_warner_d(aTHX_ packWARN(category), \ + message " is deprecated") + +# define deprecate_disappears_in(category,when,message) \ + Perl_ck_warner_d(aTHX_ packWARN(category), \ + message " is deprecated, and will disappear in Perl " when) + +# define deprecate_fatal_in(category,when,message) \ + Perl_ck_warner_d(aTHX_ packWARN(category), \ + message " is deprecated, and will become fatal in Perl " when) #endif /* Internal macros to deal with gids and uids */ @@ -2894,6 +3032,85 @@ last-inclusive range. #endif +/* These are simple Marsaglia XOR-SHIFT RNG's for 64 and 32 bits. These + * RNG's are of reasonable quality, very fast, and have the interesting + * property that provided 'x' is non-zero they create a cycle of 2^32-1 + * or 2^64-1 "random" like numbers, with the exception of 0. Thus they + * are very useful when you want an integer to "dance" in a random way, + * but you also never want it to become 0 and thus false. + * + * Obviously they leave x unchanged if it starts out as 0. + * + * We have two variants just because that can be helpful in certain + * places. There is no advantage to either, they are equally bad as each + * other as far RNG's go. Sufficiently random for many purposes, but + * insufficiently random for serious use as they fail important tests in + * the Test01 BigCrush RNG test suite by L’Ecuyer and Simard. (Note + * that Drand48 also fails BigCrush). The main point is they produce + * different sequences and in places where we want some randomlike + * behavior they are cheap and easy. + * + * Marsaglia was one of the early researchers into RNG testing and wrote + * the Diehard RNG test suite, which after his death become the + * Dieharder RNG suite, and was generally supplanted by the Test01 suite + * by L'Ecruyer and associates. + * + * There are dozens of shift parameters that create a pseudo random ring + * of integers 1..2^N-1, if you need a different sequence just read the + * paper and select a set of parameters. In fact, simply reversing the + * shift order from L/R/L to R/L/R should result in another valid + * example, but read the paper before you do that. + * + * PDF of the original paper: + * https://www.jstatsoft.org/article/download/v008i14/916 + * Wikipedia: + * https://en.wikipedia.org/wiki/Xorshift + * Criticism: + * https://www.iro.umontreal.ca/~lecuyer/myftp/papers/xorshift.pdf + * Test01: + * http://simul.iro.umontreal.ca/testu01/tu01.html + * Diehard: + * https://en.wikipedia.org/wiki/Diehard_tests + * Dieharder: + * https://webhome.phy.duke.edu/~rgb/General/rand_rate/rand_rate.abs + * + */ + +/* 32 bit version */ +#define PERL_XORSHIFT32_A(x) \ +STMT_START { \ + (x) ^= ((x) << 13); \ + (x) ^= ((x) >> 17); \ + (x) ^= ((x) << 5); \ +} STMT_END + +/* 64 bit version */ +#define PERL_XORSHIFT64_A(x) \ +STMT_START { \ + (x) ^= ((x) << 13); \ + (x) ^= ((x) >> 7); \ + (x) ^= ((x) << 17); \ +} STMT_END + +/* 32 bit version */ +#define PERL_XORSHIFT32_B(x) \ +STMT_START { \ + (x) ^= ((x) << 5); \ + (x) ^= ((x) >> 27); \ + (x) ^= ((x) << 8); \ +} STMT_END + +/* 64 bit version - currently this is unused, + * it is provided here to complement the 32 bit _B + * variant which IS used. */ +#define PERL_XORSHIFT64_B(x) \ +STMT_START { \ + (x) ^= ((x) << 15); \ + (x) ^= ((x) >> 49); \ + (x) ^= ((x) << 26); \ +} STMT_END + + #endif /* PERL_HANDY_H_ */ /* diff --git a/gnu/usr.bin/perl/hints/README.hints b/gnu/usr.bin/perl/hints/README.hints index e8ff5eee44b..56840ea20ed 100644 --- a/gnu/usr.bin/perl/hints/README.hints +++ b/gnu/usr.bin/perl/hints/README.hints @@ -1,3 +1,5 @@ +# vim: syntax=pod + =head1 NAME README.hints - hint files used by Configure diff --git a/gnu/usr.bin/perl/hints/aix.sh b/gnu/usr.bin/perl/hints/aix.sh index 9f9b32c9746..86fff48c002 100644 --- a/gnu/usr.bin/perl/hints/aix.sh +++ b/gnu/usr.bin/perl/hints/aix.sh @@ -670,7 +670,7 @@ EOF $cc -q64 -qlongdouble -o fmodl$$ fmodl$$.c -lm case `./fmodl$$` in 2147483648) - echo "The -q64 did the trick, will use it." >& 4 + echo "The -q64 did the trick, will use it." >&4 ccflags="`echo $ccflags | sed -e 's@-q32@@g'`" ldflags="`echo $ldflags | sed -e 's@-q32@@g'`" ccflags="$ccflags -q64" diff --git a/gnu/usr.bin/perl/hints/catamount.sh b/gnu/usr.bin/perl/hints/catamount.sh index a10f265f145..48c309fe5fe 100644 --- a/gnu/usr.bin/perl/hints/catamount.sh +++ b/gnu/usr.bin/perl/hints/catamount.sh @@ -31,11 +31,11 @@ # mkdir -p /opt/perl-catamount # mkdir -p /opt/perl-catamount/include # mkdir -p /opt/perl-catamount/lib -# mkdir -p /opt/perl-catamount/lib/perl5/5.36.3 +# mkdir -p /opt/perl-catamount/lib/perl5/5.38.2 # mkdir -p /opt/perl-catamount/bin # cp *.h /opt/perl-catamount/include # cp libperl.a /opt/perl-catamount/lib -# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.36.3 +# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.38.2 # cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib # # With the headers and the libperl.a you can embed Perl to your Catamount diff --git a/gnu/usr.bin/perl/hints/darwin.sh b/gnu/usr.bin/perl/hints/darwin.sh index ea521003c3b..72bdfb6a13d 100644 --- a/gnu/usr.bin/perl/hints/darwin.sh +++ b/gnu/usr.bin/perl/hints/darwin.sh @@ -357,6 +357,9 @@ EOM esac fi + # The OS is buggy with respect to this. + ccflags="$ccflags -DNO_POSIX_2008_LOCALE" + lddlflags="${ldflags} -bundle -undefined dynamic_lookup" ;; esac @@ -509,16 +512,6 @@ esac # the problem. firstmakefile=GNUmakefile; -# Parts of the system call setenv(), in particular in an atfork handler. -# This causes problems when the child tries to clean up environ[], so -# let libc manage environ[]. -cat >> config.over <<'EOOVER' -if test "$d_unsetenv" = "$define" -a \ - `expr "$ccflags" : '.*-DPERL_USE_SAFE_PUTENV'` -eq 0; then - ccflags="$ccflags -DPERL_USE_SAFE_PUTENV" -fi -EOOVER - # if you use a newer toolchain before OS X 10.9 these functions may be # incorrectly detected, so disable them # OS X 10.10.x corresponds to kernel 14.x diff --git a/gnu/usr.bin/perl/hints/dec_osf.sh b/gnu/usr.bin/perl/hints/dec_osf.sh index 4f3baef2a89..064d17c88df 100644 --- a/gnu/usr.bin/perl/hints/dec_osf.sh +++ b/gnu/usr.bin/perl/hints/dec_osf.sh @@ -487,7 +487,7 @@ esac for p in $loclibpth do if test -d $p; then - echo "Appending $p to LD_LIBRARY_PATH." >& 4 + echo "Appending $p to LD_LIBRARY_PATH." >&4 case "$LD_LIBRARY_PATH" in '') LD_LIBRARY_PATH=$p ;; *) LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$p ;; @@ -496,7 +496,7 @@ do done case "$LD_LIBRARY_PATH" in "$old_LD_LIBRARY_PATH") ;; -*) echo "LD_LIBRARY_PATH is now $LD_LIBRARY_PATH." >& 4 ;; +*) echo "LD_LIBRARY_PATH is now $LD_LIBRARY_PATH." >&4 ;; esac case "$LD_LIBRARY_PATH" in '') ;; diff --git a/gnu/usr.bin/perl/hints/freebsd.sh b/gnu/usr.bin/perl/hints/freebsd.sh index 72db521ef75..4d26835e999 100644 --- a/gnu/usr.bin/perl/hints/freebsd.sh +++ b/gnu/usr.bin/perl/hints/freebsd.sh @@ -352,3 +352,25 @@ arm|mips) test "$optimize" || optimize='-O2' ;; esac + +# don't modify a supplied -Darchname +case "$archname" in +'') + cat > UU/archname.cbu <<'EOCBU' +unamem=`uname -m` +case "$archname" in +"$unamem"-*) + arch=`uname -p` + archname=`echo "$archname" | sed -e "s/^$unamem-/$arch-/"` + ;; +esac +EOCBU + ;; +esac + +# This function on this box has weird behavior. See +# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255646 +d_querylocale='undef' + +# See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265950 +d_duplocale='undef' diff --git a/gnu/usr.bin/perl/hints/hpux.sh b/gnu/usr.bin/perl/hints/hpux.sh index da5f81dfe12..2b3cb1fd13d 100644 --- a/gnu/usr.bin/perl/hints/hpux.sh +++ b/gnu/usr.bin/perl/hints/hpux.sh @@ -805,13 +805,15 @@ case "$d_oldpthreads" in # and it seems to be buggy in HP-UX anyway. i_dbm=undef -# In HP-UXes prior to 11.23 strtold() returned a HP-UX -# specific union called long_double, not a C99 long double. -case "`grep 'double strtold.const' /usr/include/stdlib.h`" in -*"long double strtold"*) ;; # strtold should be safe. -*) echo "Looks like your strtold() is non-standard..." >&4 - d_strtold=undef ;; -esac +if [ "$xxOsRevMajor" -lt 11 ] || [ "$xxOsRevMajor" -eq 11 ] && [ "$xxOsRevMinor" -lt 23 ]; then + # In HP-UXes prior to 11.23 strtold() returned a HP-UX + # specific union called long_double, not a C99 long double. + case "`grep 'double strtold.const' /usr/include/stdlib.h`" in + *"long double strtold"*) ;; # strtold should be safe. + *) echo "Looks like your strtold() is non-standard..." >&4 + d_strtold=undef ;; + esac +fi # In pre-11 HP-UXes there really isn't isfinite(), despite what # Configure might think. (There is finite(), though.) diff --git a/gnu/usr.bin/perl/hints/linux.sh b/gnu/usr.bin/perl/hints/linux.sh index c749f0f64a8..e1508c75092 100644 --- a/gnu/usr.bin/perl/hints/linux.sh +++ b/gnu/usr.bin/perl/hints/linux.sh @@ -154,7 +154,7 @@ esac # (such as -lm) in /lib or /usr/lib. So we have to ask gcc to tell us # where to look. We don't want gcc's own libraries, however, so we # filter those out. -# This could be conditional on Unbuntu, but other distributions may +# This could be conditional on Ubuntu, but other distributions may # follow suit, and this scheme seems to work even on rather old gcc's. # This unconditionally uses gcc because even if the user is using another # compiler, we still need to find the math library and friends, and I don't diff --git a/gnu/usr.bin/perl/hints/openbsd.sh b/gnu/usr.bin/perl/hints/openbsd.sh index 05252d13bf4..dd8df2ffed8 100644 --- a/gnu/usr.bin/perl/hints/openbsd.sh +++ b/gnu/usr.bin/perl/hints/openbsd.sh @@ -31,14 +31,6 @@ case "$osvers" in d_setruid=$undef esac -# OpenBSD 5.5 on has 64 bit time_t -case "$osvers" in -[0-4].*|5.[0-4]) ;; -*) - cppflags="$cppflags -DBIG_TIME" - ;; -esac - # # Not all platforms support dynamic loading... # For the case of "$openbsd_distribution", the hints file @@ -55,11 +47,7 @@ alpha-2.[0-8]|mips-2.[0-8]|powerpc-2.[0-7]|m88k-[2-4].*|m88k-5.[0-2]|hppa-3.[0-5 test -z "$usedl" && usedl=$define # We use -fPIC here because -fpic is *NOT* enough for some of the # extensions like Tk on some OpenBSD platforms (ie: sparc) - PICFLAG=-fPIC - if [ -e /usr/share/mk/bsd.own.mk ]; then - PICFLAG=`make -f /usr/share/mk/bsd.own.mk -V PICFLAG` - fi - cccdlflags="-DPIC ${PICFLAG} $cccdlflags" + cccdlflags="-DPIC -fPIC $cccdlflags" case "$osvers" in [01].*|2.[0-7]|2.[0-7].*) lddlflags="-Bshareable $lddlflags" @@ -70,7 +58,7 @@ alpha-2.[0-8]|mips-2.[0-8]|powerpc-2.[0-7]|m88k-[2-4].*|m88k-5.[0-2]|hppa-3.[0-5 ;; *) # from 3.1 onwards ld=${cc:-cc} - lddlflags="-shared ${PICFLAG} $lddlflags" + lddlflags="-shared -fPIC $lddlflags" libswanted=`echo $libswanted | sed 's/ dl / /'` ;; esac @@ -96,9 +84,6 @@ esac # around for old NetBSD binaries. libswanted=`echo $libswanted | sed 's/ crypt / /'` -# OpenBSD hasn't ever needed linking to libutil -libswanted=`echo $libswanted | sed 's/ util / /'` - # Configure can't figure this out non-interactively d_suidsafe=$define @@ -116,25 +101,6 @@ m88k-3.4) ;; esac -# -# Unaligned access on alpha with -ftree-ter -# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59679 -# More details -# https://rt.perl.org/Public/Bug/Display.html?id=120888 -# -case "${ARCH}-${osvers}" in - alpha-*) - ccflags="-fno-tree-ter $ccflags" - ;; -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' @@ -156,9 +122,6 @@ $define|true|[yY]*) # Broken up to OpenBSD 3.6, fixed in OpenBSD 3.7 d_getservbyname_r=$undef ;; esac - ;; -*) - libswanted=`echo $libswanted | sed 's/ pthread / /'` esac EOCBU @@ -177,12 +140,12 @@ case "$openbsd_distribution" in siteprefix='/usr/local' siteprefixexp='/usr/local' # Ports installs non-std libs in /usr/local/lib so look there too - locincpth='' - loclibpth='' + locincpth='/usr/local/include' + loclibpth='/usr/local/lib' # Link perl with shared libperl - if [ "$usedl" = "$define" -a -r $src/shlib_version ]; then + if [ "$usedl" = "$define" -a -r shlib_version ]; then useshrplib=true - libperl=`. $src/shlib_version; echo libperl.so.${major}.${minor}` + libperl=`. ./shlib_version; echo libperl.so.${major}.${minor}` fi ;; esac @@ -192,9 +155,6 @@ esac # which is being fixed. In the meantime, forbid POSIX 2008 locales d_newlocale="$undef" -# OpenBSD's locale support is not that complete yet -ccflags="-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE $ccflags" - # Seems that OpenBSD returns bogus values in _Thread_local variables in code in # shared objects, so we need to disable it. See GH #19109 d_thread_local=undef diff --git a/gnu/usr.bin/perl/hints/os390.sh b/gnu/usr.bin/perl/hints/os390.sh index 8995d8c353d..56f247bfcff 100644 --- a/gnu/usr.bin/perl/hints/os390.sh +++ b/gnu/usr.bin/perl/hints/os390.sh @@ -63,8 +63,6 @@ myfirstchar=$(od -A n -N 1 -t x $me | xargs | tr [:lower:] [:upper:] | tr -d 0) if [ "${myfirstchar}" = "23" ]; then # 23 is '#' in ASCII unset ebcdic def_os390_cflags="$def_os390_cflags -qascii" - # ensure that 'safe' putenv is used and avoid direct environ manipulation - def_os390_defs="$def_os390_defs -DPERL_USE_SAFE_PUTENV"; else ebcdic=true fi diff --git a/gnu/usr.bin/perl/hints/solaris_2.sh b/gnu/usr.bin/perl/hints/solaris_2.sh index e50d9d83237..15928c7d6d9 100644 --- a/gnu/usr.bin/perl/hints/solaris_2.sh +++ b/gnu/usr.bin/perl/hints/solaris_2.sh @@ -63,6 +63,10 @@ esac set `echo " $libswanted " | sed -e 's@ ld @ @' -e 's@ malloc @ @' -e 's@ ucb @ @' -e 's@ sec @ @' -e 's@ crypt @ @'` libswanted="$*" +# Add libnsl for networking support +set `echo " $libswanted " | sed -e 's@ inet @ inet nsl @'` +libswanted="$*" + # Look for architecture name. We want to suggest a useful default. case "$archname" in '') @@ -694,21 +698,6 @@ EOM esac EOCBU -# -# If unsetenv is available, use it in conjunction with PERL_USE_SAFE_PUTENV to -# work around Sun bugid 6333830. Both unsetenv and 6333830 only appear in -# Solaris 10, so we don't need to probe explicitly for an OS version. We have -# to append this test to the end of config.over as it needs to run after -# Configure has probed for unsetenv, and this hints file is processed before -# that has happened. -# -cat >> config.over <<'EOOVER' -if test "$d_unsetenv" = "$define" -a \ - `expr "$ccflags" : '.*-DPERL_USE_SAFE_PUTENV'` -eq 0; then - ccflags="$ccflags -DPERL_USE_SAFE_PUTENV" -fi -EOOVER - rm -f try.c try.o try a.out # If using C++, the Configure scan for dlopen() will fail in Solaris diff --git a/gnu/usr.bin/perl/hints/ultrix_4.sh b/gnu/usr.bin/perl/hints/ultrix_4.sh deleted file mode 100644 index f32f06dba36..00000000000 --- a/gnu/usr.bin/perl/hints/ultrix_4.sh +++ /dev/null @@ -1,69 +0,0 @@ -# hints/ultrix_4.sh -# Last updated by Andy Dougherty -# Fri Feb 10 10:04:51 EST 1995 -# -# Use Configure -Dcc=gcc to use gcc. -# -# This used to use -g, but that pulls in -DDEBUGGING by default. -case "$optimize" in -'') - # recent versions have a working compiler. - case "$osvers" in - *4.[45]*) optimize='-O2' ;; - *) optimize='none' ;; - esac - ;; -esac - -# Some users have reported Configure runs *much* faster if you -# replace all occurrences of /bin/sh by /bin/sh5 -# Something like: -# sed 's!/bin/sh!/bin/sh5!g' Configure > Configure.sh5 -# Then run "sh5 Configure.sh5 [your options]" - -case "$myuname" in -*risc*) cat <&4 -Note that there is a bug in some versions of NFS on the DECStation that -may cause utime() to work incorrectly. If so, regression test io/fs -may fail if run under NFS. Ignore the failure. -EOF -esac - -# Compiler flags that depend on osversion: -case "$cc" in -*gcc*) ;; -*) - case "$osvers" in - *4.1*) ccflags="$ccflags -DLANGUAGE_C -Olimit 3800" ;; - *4.2*) ccflags="$ccflags -DLANGUAGE_C -Olimit 3800" - # Prototypes sometimes cause compilation errors in 4.2. - prototype=undef - *4.3*) ccflags="$ccflags -std1 -DLANGUAGE_C -Olimit 3800" ;; - *) ccflags="$ccflags -std -Olimit 3800" ;; - esac - ;; -esac - -# Other settings that depend on $osvers: -case "$osvers" in -*4.1*) ;; -*4.2*) libswanted=`echo $libswanted | sed 's/ malloc / /'` ;; -*4.3*) ;; -*) ranlib='ranlib' ;; -esac - -# Settings that don't depend on $osvers: - -util_cflags='ccflags="$ccflags -DLOCALE_ENVIRON_REQUIRED"' -groupstype='int' -# The configure test should be beefed up to try using the field when -# it can't find any of the standardly-named fields. -d_dirnamlen='define' - -# Ultrix can mmap only character devices, not regular files, -# which is rather useless state of things for Perl. -d_mmap='undef' - -# There simply isn't dynaloading in Ultrix. -usedl='undef' - diff --git a/gnu/usr.bin/perl/hv.c b/gnu/usr.bin/perl/hv.c index 93b147491bb..6d1f37f6732 100644 --- a/gnu/usr.bin/perl/hv.c +++ b/gnu/usr.bin/perl/hv.c @@ -56,20 +56,10 @@ static const char S_strtab_error[] */ #if IVSIZE == 8 /* 64 bit version */ -#define XORSHIFT_RAND_BITS(x) \ -STMT_START { \ - (x) ^= (x) << 13; \ - (x) ^= (x) >> 17; \ - (x) ^= (x) << 5; \ -} STMT_END +#define XORSHIFT_RAND_BITS(x) PERL_XORSHIFT64_A(x) #else /* 32 bit version */ -#define XORSHIFT_RAND_BITS(x) \ -STMT_START { \ - (x) ^= (x) << 13; \ - (x) ^= (x) >> 7; \ - (x) ^= (x) << 17; \ -} STMT_END +#define XORSHIFT_RAND_BITS(x) PERL_XORSHIFT32_A(x) #endif #define UPDATE_HASH_RAND_BITS_KEY(key,klen) \ @@ -337,28 +327,44 @@ S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, * contains an SV* */ /* -=for apidoc hv_store +=for apidoc hv_store +=for apidoc_item hv_stores -Stores an SV in a hash. The hash key is specified as C and the -absolute value of C is the length of the key. If C is -negative the key is assumed to be in UTF-8-encoded Unicode. The -C parameter is the precomputed hash value; if it is zero then -Perl will compute it. +These each store SV C with the specified key in hash C, returning NULL +if the operation failed or if the value did not need to be actually stored +within the hash (as in the case of tied hashes). Otherwise it can be +dereferenced to get the original C. -The return value will be -C if the operation failed or if the value did not need to be actually -stored within the hash (as in the case of tied hashes). Otherwise it can -be dereferenced to get the original C. Note that the caller is +They differ only in how the hash key is specified. + +In C, the key is a C language string literal, enclosed in double +quotes. It is never treated as being in UTF-8. + +In C, C is either NULL or points to the first byte of the string +specifying the key, and its length in bytes is given by the absolute value of +an additional parameter, C. A NULL key indicates the key is to be +treated as C, and C is ignored; otherwise the key string may +contain embedded-NUL bytes. If C is negative, the string is treated as +being encoded in UTF-8; otherwise not. + +C has another extra parameter, C, a precomputed hash of the key +string, or zero if it has not been precomputed. This parameter is omitted from +C, as it is computed automatically at compile time. + +If is NULL, NULL is returned and no action is taken. + +If C is NULL, it is treated as being C; otherwise the caller is responsible for suitably incrementing the reference count of C before the call, and decrementing it if the function returned C. Effectively a successful C takes ownership of one reference to C. This is usually what you want; a newly created SV has a reference count of one, so if all your code does is create SVs then store them in a hash, C will own the only reference to the new SV, and your code doesn't need to do -anything further to tidy up. C is not implemented as a call to -C, and does not create a temporary SV for the key, so if your -key data is not already in SV form then use C in preference to -C. +anything further to tidy up. + +C is not implemented as a call to L>, and does not +create a temporary SV for the key, so if your key data is not already in SV +form then use C in preference to C. See L for more information on how to use this function on tied hashes. @@ -474,7 +480,7 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, if (!hv) return NULL; - if (SvTYPE(hv) == (svtype)SVTYPEMASK) + if (SvIS_FREED(hv)) return NULL; assert(SvTYPE(hv) == SVt_PVHV); @@ -587,7 +593,7 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, for (i = 0; i < klen; ++i) if (isLOWER(key[i])) { /* Would be nice if we had a routine to do the - copy and upercase in a single pass through. */ + copy and uppercase in a single pass through. */ const char * const nkey = strupr(savepvn(key,klen)); /* Note that this fetch is for nkey (the uppercased key) whereas the store is for key (the original) */ @@ -1000,7 +1006,7 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, *oentry = entry; } #ifdef PERL_HASH_RANDOMIZE_KEYS - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { /* Currently this makes various tests warn in annoying ways. * So Silenced for now. - Yves | bogus end of comment =>* / if (HvAUX(hv)->xhv_riter != -1) { @@ -1416,11 +1422,11 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, else { HeVAL(entry) = NULL; *oentry = HeNEXT(entry); - if (SvOOK(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */) { + if (HvHasAUX(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */) { HvLAZYDEL_on(hv); } else { - if (SvOOK(hv) && HvLAZYDEL(hv) && + if (HvHasAUX(hv) && HvLAZYDEL(hv) && entry == HeNEXT(HvAUX(hv)->xhv_eiter)) HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); hv_free_ent(NULL, entry); @@ -1433,7 +1439,7 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, /* If this is a stash and the key ends with ::, then someone is * deleting a package. */ - if (sv && SvTYPE(sv) == SVt_PVGV && HvENAME_get(hv)) { + if (sv && SvTYPE(sv) == SVt_PVGV && HvHasENAME(hv)) { gv = (GV *)sv; if (( (klen > 1 && key[klen-2] == ':' && key[klen-1] == ':') @@ -1442,7 +1448,7 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, ) && (klen != 6 || hv!=PL_defstash || memNE(key,"main::",6)) && (stash = GvHV((GV *)gv)) - && HvENAME_get(stash)) { + && HvHasENAME(stash)) { /* A previous version of this code checked that the * GV was still in the symbol table by fetching the * GV with its name. That is not necessary (and @@ -1470,11 +1476,13 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, SV **svp, **end; strip_magic: svp = AvARRAY(isa); - end = svp + (AvFILLp(isa)+1); - while (svp < end) { - if (*svp) - mg_free_type(*svp, PERL_MAGIC_isaelem); - ++svp; + if (svp) { + end = svp + (AvFILLp(isa)+1); + while (svp < end) { + if (*svp) + mg_free_type(*svp, PERL_MAGIC_isaelem); + ++svp; + } } mg_free_type((SV*)GvAV(gv), PERL_MAGIC_isa); } @@ -1529,7 +1537,7 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, if (sv) { /* deletion of method from stash */ if (isGV(sv) && isGV_with_GP(sv) && GvCVu(sv) - && HvENAME_get(hv)) + && HvHasENAME(hv)) mro_method_changed_in(hv); if (d_flags & G_DISCARD) { @@ -1586,7 +1594,7 @@ static bool S_large_hash_heuristic(pTHX_ HV *hv, STRLEN size) { if (size > 42 && !SvOBJECT(hv) - && !(SvOOK(hv) && HvENAME_get(hv))) { + && !(HvHasAUX(hv) && HvENAME_get(hv))) { /* This hash appears to be growing quite large. We gamble that it is not sharing keys with other hashes. */ return TRUE; @@ -1679,6 +1687,19 @@ S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize) } while (i++ < oldsize); } +/* +=for apidoc hv_ksplit + +Attempt to grow the hash C so it has at least C buckets available. +Perl chooses the actual number for its convenience. + +This is the same as doing the following in Perl code: + + keys %hv = newmax; + +=cut +*/ + void Perl_hv_ksplit(pTHX_ HV *hv, IV newmax) { @@ -1716,11 +1737,11 @@ Perl_hv_ksplit(pTHX_ HV *hv, IV newmax) a = (char *) HvARRAY(hv); if (a) { #ifdef PERL_HASH_RANDOMIZE_KEYS - U32 was_ook = SvOOK(hv); + U32 was_ook = HvHasAUX(hv); #endif hsplit(hv, oldsize, newsize); #ifdef PERL_HASH_RANDOMIZE_KEYS - if (was_ook && SvOOK(hv) && HvTOTALKEYS(hv)) { + if (was_ook && HvHasAUX(hv) && HvTOTALKEYS(hv)) { MAYBE_UPDATE_HASH_RAND_BITS(); HvAUX(hv)->xhv_rand = (U32)PL_hash_rand_bits; } @@ -2018,7 +2039,7 @@ Perl_hv_clear(pTHX_ HV *hv) HvHASKFLAGS_off(hv); } - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { if(HvENAME_get(hv)) mro_isa_changed_in(hv); HvEITER_set(hv, NULL); @@ -2079,7 +2100,7 @@ S_clear_placeholders(pTHX_ HV *hv, const U32 placeholders) if (entry == HvEITER_get(hv)) HvLAZYDEL_on(hv); else { - if (SvOOK(hv) && HvLAZYDEL(hv) && + if (HvHasAUX(hv) && HvLAZYDEL(hv) && entry == HeNEXT(HvAUX(hv)->xhv_eiter)) HeNEXT(HvAUX(hv)->xhv_eiter) = HeNEXT(entry); hv_free_ent(NULL, entry); @@ -2138,7 +2159,7 @@ Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp) PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY; - if (SvOOK(hv) && ((iter = HvAUX(hv)))) { + if (HvHasAUX(hv) && ((iter = HvAUX(hv)))) { if ((entry = iter->xhv_eiter)) { /* the iterator may get resurrected after each * destructor call, so check each time */ @@ -2169,9 +2190,9 @@ Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp) array[*indexp] = HeNEXT(entry); ((XPVHV*) SvANY(hv))->xhv_keys--; - if ( PL_phase != PERL_PHASE_DESTRUCT && HvENAME(hv) + if ( PL_phase != PERL_PHASE_DESTRUCT && HvHasENAME(hv) && HeVAL(entry) && isGV(HeVAL(entry)) - && GvHV(HeVAL(entry)) && HvENAME(GvHV(HeVAL(entry))) + && GvHV(HeVAL(entry)) && HvHasENAME(GvHV(HeVAL(entry))) ) { STRLEN klen; const char * const key = HePV(entry,klen); @@ -2205,7 +2226,7 @@ void Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags) { bool save; - SSize_t orig_ix = PL_tmps_ix; /* silence compiler warning about unitialized vars */ + SSize_t orig_ix = PL_tmps_ix; /* silence compiler warning about uninitialized vars */ if (!hv) return; @@ -2222,7 +2243,7 @@ Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags) if they will be freed anyway. */ /* note that the code following prior to hv_free_entries is duplicated * in sv_clear(), and changes here should be done there too */ - if (PL_phase != PERL_PHASE_DESTRUCT && HvNAME(hv)) { + if (PL_phase != PERL_PHASE_DESTRUCT && HvHasNAME(hv)) { if (PL_stashcache) { DEBUG_o(Perl_deb(aTHX_ "hv_undef_flags clearing PL_stashcache for '%" HEKf "'\n", HEKfARG(HvNAME_HEK(hv)))); @@ -2243,7 +2264,7 @@ Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags) HE* that needs to be explicitly freed. */ hv_free_entries(hv); - /* SvOOK() is true for a hash if it has struct xpvhv_aux allocated. That + /* HvHasAUX() is true for a hash if it has struct xpvhv_aux allocated. That structure has several other pieces of allocated memory - hence those must be freed before the structure itself can be freed. Some can be freed when a hash is "undefined" (this function), but some must persist until it is @@ -2256,32 +2277,36 @@ Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags) must remain consistent, because this code can no longer clear SVf_OOK, meaning that this structure might be read again at any point in the future without further checks or reinitialisation. */ - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { + struct xpvhv_aux *aux = HvAUX(hv); struct mro_meta *meta; const char *name; - if (HvENAME_get(hv)) { + if (HvHasENAME(hv)) { if (PL_phase != PERL_PHASE_DESTRUCT) mro_isa_changed_in(hv); if (PL_stashcache) { DEBUG_o(Perl_deb(aTHX_ "hv_undef_flags clearing PL_stashcache for effective name '%" - HEKf "'\n", HEKfARG(HvENAME_HEK(hv)))); - (void)hv_deletehek(PL_stashcache, HvENAME_HEK(hv), G_DISCARD); + HEKf "'\n", HEKfARG(HvENAME_HEK_NN(hv)))); + (void)hv_deletehek(PL_stashcache, HvENAME_HEK_NN(hv), G_DISCARD); } } /* If this call originated from sv_clear, then we must check for * effective names that need freeing, as well as the usual name. */ name = HvNAME(hv); - if (flags & HV_NAME_SETALL ? !!HvAUX(hv)->xhv_name_u.xhvnameu_name : !!name) { + if (flags & HV_NAME_SETALL + ? cBOOL(aux->xhv_name_u.xhvnameu_name) + : cBOOL(name)) + { if (name && PL_stashcache) { DEBUG_o(Perl_deb(aTHX_ "hv_undef_flags clearing PL_stashcache for name '%" - HEKf "'\n", HEKfARG(HvNAME_HEK(hv)))); - (void)hv_deletehek(PL_stashcache, HvNAME_HEK(hv), G_DISCARD); + HEKf "'\n", HEKfARG(HvNAME_HEK_NN(hv)))); + (void)hv_deletehek(PL_stashcache, HvNAME_HEK_NN(hv), G_DISCARD); } hv_name_set(hv, NULL, 0, flags); } - if((meta = HvAUX(hv)->xhv_mro_meta)) { + if((meta = aux->xhv_mro_meta)) { if (meta->mro_linear_all) { SvREFCNT_dec_NN(meta->mro_linear_all); /* mro_linear_current is just acting as a shortcut pointer, @@ -2295,7 +2320,20 @@ Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags) SvREFCNT_dec(meta->isa); SvREFCNT_dec(meta->super); Safefree(meta); - HvAUX(hv)->xhv_mro_meta = NULL; + aux->xhv_mro_meta = NULL; + } + + if(HvSTASH_IS_CLASS(hv)) { + SvREFCNT_dec(aux->xhv_class_superclass); + SvREFCNT_dec(aux->xhv_class_initfields_cv); + SvREFCNT_dec(aux->xhv_class_adjust_blocks); + if(aux->xhv_class_fields) + PadnamelistREFCNT_dec(aux->xhv_class_fields); + SvREFCNT_dec(aux->xhv_class_param_map); + Safefree(aux->xhv_class_suspended_initfields_compcv); + aux->xhv_class_suspended_initfields_compcv = NULL; + + aux->xhv_aux_flags &= ~HvAUXf_IS_CLASS; } } @@ -2375,7 +2413,7 @@ S_hv_auxinit(pTHX_ HV *hv) { PERL_ARGS_ASSERT_HV_AUXINIT; - if (!SvOOK(hv)) { + if (!HvHasAUX(hv)) { char *array = (char *) HvARRAY(hv); if (!array) { Newxz(array, PERL_HV_ARRAY_ALLOC_BYTES(HvMAX(hv) + 1), char); @@ -2423,7 +2461,7 @@ Perl_hv_iterinit(pTHX_ HV *hv) { PERL_ARGS_ASSERT_HV_ITERINIT; - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { struct xpvhv_aux * iter = HvAUX(hv); HE * const entry = iter->xhv_eiter; /* HvEITER(hv) */ if (entry && HvLAZYDEL(hv)) { /* was deleted earlier? */ @@ -2457,7 +2495,7 @@ Perl_hv_riter_p(pTHX_ HV *hv) { PERL_ARGS_ASSERT_HV_RITER_P; - iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv); + iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); return &(iter->xhv_riter); } @@ -2475,7 +2513,7 @@ Perl_hv_eiter_p(pTHX_ HV *hv) { PERL_ARGS_ASSERT_HV_EITER_P; - iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv); + iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); return &(iter->xhv_eiter); } @@ -2493,7 +2531,7 @@ Perl_hv_riter_set(pTHX_ HV *hv, I32 riter) { PERL_ARGS_ASSERT_HV_RITER_SET; - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { iter = HvAUX(hv); } else { if (riter == -1) @@ -2511,7 +2549,7 @@ Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand) { PERL_ARGS_ASSERT_HV_RAND_SET; #ifdef PERL_HASH_RANDOMIZE_KEYS - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { iter = HvAUX(hv); } else { iter = hv_auxinit(hv); @@ -2536,7 +2574,7 @@ Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter) { PERL_ARGS_ASSERT_HV_EITER_SET; - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { iter = HvAUX(hv); } else { /* 0 is the default so don't go malloc()ing a new structure just to @@ -2549,6 +2587,31 @@ Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter) { iter->xhv_eiter = eiter; } +/* +=for apidoc hv_name_set +=for apidoc_item ||hv_name_sets|HV *hv|"name"|U32 flags + +These each set the name of stash C to the specified name. + +They differ only in how the name is specified. + +In C, the name is a literal C string, enclosed in double quotes. + +In C, C points to the first byte of the name, and an +additional parameter, C, specifies its length in bytes. Hence, the name +may contain embedded-NUL characters. + +If C is set in C, the name is treated as being in UTF-8; +otherwise not. + +If C is set in C, both the name and the effective name +are set. + +=for apidoc Amnh||HV_NAME_SETALL + +=cut +*/ + void Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags) { @@ -2561,7 +2624,7 @@ Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags) if (len > I32_MAX) Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); - if (SvOOK(hv)) { + if (HvHasAUX(hv)) { iter = HvAUX(hv); if (iter->xhv_name_u.xhvnameu_name) { if(iter->xhv_name_count) { @@ -2657,7 +2720,7 @@ table. void Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags) { - struct xpvhv_aux *aux = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv); + struct xpvhv_aux *aux = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); U32 hash; PERL_ARGS_ASSERT_HV_ENAME_ADD; @@ -2727,7 +2790,7 @@ Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags) if (len > I32_MAX) Perl_croak(aTHX_ "panic: hv name too long (%" UVuf ")", (UV) len); - if (!SvOOK(hv)) return; + if (!HvHasAUX(hv)) return; aux = HvAUX(hv); if (!aux->xhv_name_u.xhvnameu_name) return; @@ -2787,7 +2850,7 @@ Perl_hv_backreferences_p(pTHX_ HV *hv) { PERL_ARGS_ASSERT_HV_BACKREFERENCES_P; /* See also Perl_sv_get_backrefs in sv.c where this logic is unrolled */ { - struct xpvhv_aux * const iter = SvOOK(hv) ? HvAUX(hv) : hv_auxinit(hv); + struct xpvhv_aux * const iter = HvHasAUX(hv) ? HvAUX(hv) : hv_auxinit(hv); return &(iter->xhv_backreferences); } } @@ -2798,7 +2861,7 @@ Perl_hv_kill_backrefs(pTHX_ HV *hv) { PERL_ARGS_ASSERT_HV_KILL_BACKREFS; - if (!SvOOK(hv)) + if (!HvHasAUX(hv)) return; av = HvAUX(hv)->xhv_backreferences; @@ -2853,7 +2916,7 @@ Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS; - if (!SvOOK(hv)) { + if (!HvHasAUX(hv)) { /* Too many things (well, pp_each at least) merrily assume that you can call hv_iternext without calling hv_iterinit, so we'll have to deal with it. */ @@ -3068,7 +3131,7 @@ Perl_hv_iterkeysv(pTHX_ HE *entry) { PERL_ARGS_ASSERT_HV_ITERKEYSV; - return sv_2mortal(newSVhek(HeKEY_hek(entry))); + return newSVhek_mortal(HeKEY_hek(entry)); } /* @@ -3316,7 +3379,7 @@ S_share_hek_flags(pTHX_ const char *str, STRLEN len, U32 hash, int flags) if (!entry) { /* What used to be head of the list. If this is NULL, then we're the first entry for this slot, which - means we need to increate fill. */ + means we need to increase fill. */ struct shared_he *new_entry; HEK *hek; char *k; @@ -3521,8 +3584,8 @@ Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *chain, U32 flags) const STRLEN klen = HeKLEN(entry); const char *const key = HeKEY(entry); if (klen == chain->refcounted_he_keylen - && (!!HeKUTF8(entry) - == !!(chain->refcounted_he_data[0] & HVhek_UTF8)) + && (cBOOL(HeKUTF8(entry)) + == cBOOL((chain->refcounted_he_data[0] & HVhek_UTF8))) && memEQ(key, REF_HE_KEY(chain), klen)) goto next_please; #else @@ -3967,7 +4030,7 @@ Upon return, C<*flags> will be set to either C or 0. Alternatively, use the macro C>; or if you don't need to know if the label is UTF-8 or not, the macro C>; -or if you additionally dont need to know the length, C>. +or if you additionally don't need to know the length, C>. =cut */ diff --git a/gnu/usr.bin/perl/hv.h b/gnu/usr.bin/perl/hv.h index 82e9c833962..ba9f9e4dbc5 100644 --- a/gnu/usr.bin/perl/hv.h +++ b/gnu/usr.bin/perl/hv.h @@ -112,6 +112,9 @@ union _xhvnameu { HEK **xhvnameu_names; /* When xhv_name_count is non-0 */ }; +/* A struct defined by pad.h and used within class.c */ +struct suspended_compcv; + struct xpvhv_aux { union _xhvnameu xhv_name_u; /* name, if a symbol table */ AV *xhv_backreferences; /* back references for weak references */ @@ -132,10 +135,25 @@ struct xpvhv_aux { used to detect each() after insert for warnings */ #endif U32 xhv_aux_flags; /* assorted extra flags */ + + /* The following fields are only valid if we have the flag HvAUXf_IS_CLASS */ + HV *xhv_class_superclass; /* STASH of the :isa() base class */ + CV *xhv_class_initfields_cv; /* CV for running initfields */ + AV *xhv_class_adjust_blocks; /* CVs containing the ADJUST blocks */ + PADNAMELIST *xhv_class_fields; /* PADNAMEs with PadnameIsFIELD() */ + PADOFFSET xhv_class_next_fieldix; + HV *xhv_class_param_map; /* Maps param names to field index stored in UV */ + + struct suspended_compcv + *xhv_class_suspended_initfields_compcv; }; #define HvAUXf_SCAN_STASH 0x1 /* stash is being scanned by gv_check */ #define HvAUXf_NO_DEREF 0x2 /* @{}, %{} etc (and nomethod) not present */ +#define HvAUXf_IS_CLASS 0x4 /* the package is a 'class' */ + +#define HvSTASH_IS_CLASS(hv) \ + (HvHasAUX(hv) && HvAUX(hv)->xhv_aux_flags & HvAUXf_IS_CLASS) /* hash structure: */ /* This structure must match the beginning of struct xpvmg in sv.h. */ @@ -280,19 +298,33 @@ hash. =cut */ + #define HvFILL(hv) Perl_hv_fill(aTHX_ MUTABLE_HV(hv)) #define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max + +/* + +=for apidoc Am|bool|HvHasAUX|HV *const hv + +Returns true if the HV has a C extension. Use this to check +whether it is valid to call C. + +=cut + +*/ +#define HvHasAUX(hv) (SvFLAGS(hv) & SVphv_HasAUX) + /* This quite intentionally does no flag checking first. That's your - responsibility. */ + responsibility. Use HvHasAUX() first */ #define HvAUX(hv) (&(((struct xpvhv_with_aux*) SvANY(hv))->xhv_aux)) #define HvRITER(hv) (*Perl_hv_riter_p(aTHX_ MUTABLE_HV(hv))) #define HvEITER(hv) (*Perl_hv_eiter_p(aTHX_ MUTABLE_HV(hv))) #define HvRITER_set(hv,r) Perl_hv_riter_set(aTHX_ MUTABLE_HV(hv), r) #define HvEITER_set(hv,e) Perl_hv_eiter_set(aTHX_ MUTABLE_HV(hv), e) -#define HvRITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_riter : -1) -#define HvEITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_eiter : NULL) -#define HvRAND_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_rand : 0) -#define HvLASTRAND_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_last_rand : 0) +#define HvRITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_riter : -1) +#define HvEITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_eiter : NULL) +#define HvRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_rand : 0) +#define HvLASTRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_last_rand : 0) #define HvNAME(hv) HvNAME_get(hv) #define HvNAMELEN(hv) HvNAMELEN_get(hv) @@ -313,15 +345,16 @@ hash. ) /* This macro may go away without notice. */ #define HvNAME_HEK(hv) \ - (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL) + (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL) +#define HvHasNAME(hv) \ + (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) #define HvNAME_get(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ - ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL) + (HvHasNAME(hv) ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL) #define HvNAMELEN_get(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ + ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ ? HEK_LEN(HvNAME_HEK_NN(hv)) : 0) #define HvNAMEUTF8(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ + ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \ ? HEK_UTF8(HvNAME_HEK_NN(hv)) : 0) #define HvENAME_HEK_NN(hv) \ ( \ @@ -330,17 +363,18 @@ hash. HvAUX(hv)->xhv_name_count == -1 ? NULL : \ HvAUX(hv)->xhv_name_u.xhvnameu_name \ ) +#define HvHasENAME_HEK(hv) \ + (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name) #define HvENAME_HEK(hv) \ - (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvENAME_HEK_NN(hv) : NULL) + (HvHasENAME_HEK(hv) ? HvENAME_HEK_NN(hv) : NULL) +#define HvHasENAME(hv) \ + (HvHasENAME_HEK(hv) && HvAUX(hv)->xhv_name_count != -1) #define HvENAME_get(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \ - ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL) + (HvHasENAME(hv) ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL) #define HvENAMELEN_get(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \ - ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0) + (HvHasENAME(hv) ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0) #define HvENAMEUTF8(hv) \ - ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \ - ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0) + (HvHasENAME(hv) ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0) /* * HvKEYS gets the number of keys that actually exist(), and is provided diff --git a/gnu/usr.bin/perl/hv_func.h b/gnu/usr.bin/perl/hv_func.h index 340d94a1356..a4e70d52bc6 100644 --- a/gnu/usr.bin/perl/hv_func.h +++ b/gnu/usr.bin/perl/hv_func.h @@ -23,7 +23,19 @@ #endif #ifndef PERL_HASH_USE_SBOX32_ALSO -#define PERL_HASH_USE_SBOX32_ALSO 1 +# if defined(PERL_HASH_USE_SBOX32) || !defined(PERL_HASH_NO_SBOX32) +# define PERL_HASH_USE_SBOX32_ALSO 1 +# else +# define PERL_HASH_USE_SBOX32_ALSO 0 +# endif +#endif + +#undef PERL_HASH_USE_SBOX32 +#undef PERL_HASH_NO_SBOX32 +#if PERL_HASH_USE_SBOX32_ALSO != 0 +# define PERL_HASH_USE_SBOX32 +#else +# define PERL_HASH_NO_SBOX32 #endif #ifndef SBOX32_MAX_LEN @@ -34,40 +46,43 @@ #include "sbox32_hash.h" #if defined(PERL_HASH_FUNC_SIPHASH) -# define __PERL_HASH_FUNC "SIPHASH_2_4" -# define __PERL_HASH_WORD_TYPE U64 -# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE) -# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2) -# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4) -# define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state) -# define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_2_4_with_state((state),(U8*)(str),(len)) +# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_SIPHASH" +# define PVT__PERL_HASH_FUNC "SIPHASH_2_4" +# define PVT__PERL_HASH_WORD_TYPE U64 +# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE) +# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 2) +# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 4) +# define PVT__PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state) +# define PVT__PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_2_4_with_state((state),(U8*)(str),(len)) #elif defined(PERL_HASH_FUNC_SIPHASH13) -# define __PERL_HASH_FUNC "SIPHASH_1_3" -# define __PERL_HASH_WORD_TYPE U64 -# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE) -# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2) -# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4) -# define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state) -# define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_1_3_with_state((state),(U8*)(str),(len)) +# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_SIPHASH13" +# define PVT__PERL_HASH_FUNC "SIPHASH_1_3" +# define PVT__PERL_HASH_WORD_TYPE U64 +# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE) +# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 2) +# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 4) +# define PVT__PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state) +# define PVT__PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_1_3_with_state((state),(const U8*)(str),(len)) #elif defined(PERL_HASH_FUNC_ZAPHOD32) -# define __PERL_HASH_FUNC "ZAPHOD32" -# define __PERL_HASH_WORD_TYPE U32 -# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE) -# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 3) -# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 3) -# define __PERL_HASH_SEED_STATE(seed,state) zaphod32_seed_state(seed,state) -# define __PERL_HASH_WITH_STATE(state,str,len) (U32)zaphod32_hash_with_state((state),(U8*)(str),(len)) +# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_ZAPHOD32" +# define PVT__PERL_HASH_FUNC "ZAPHOD32" +# define PVT__PERL_HASH_WORD_TYPE U32 +# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE) +# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 3) +# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 3) +# define PVT__PERL_HASH_SEED_STATE(seed,state) zaphod32_seed_state(seed,state) +# define PVT__PERL_HASH_WITH_STATE(state,str,len) (U32)zaphod32_hash_with_state((state),(U8*)(str),(len)) # include "zaphod32_hash.h" #endif -#ifndef __PERL_HASH_WITH_STATE +#ifndef PVT__PERL_HASH_WITH_STATE #error "No hash function defined!" #endif -#ifndef __PERL_HASH_SEED_BYTES -#error "__PERL_HASH_SEED_BYTES not defined" +#ifndef PVT__PERL_HASH_SEED_BYTES +#error "PVT__PERL_HASH_SEED_BYTES not defined" #endif -#ifndef __PERL_HASH_FUNC -#error "__PERL_HASH_FUNC not defined" +#ifndef PVT__PERL_HASH_FUNC +#error "PVT__PERL_HASH_FUNC not defined" #endif /* Some siphash static functions are needed by XS::APItest even when @@ -76,56 +91,56 @@ */ #include "perl_siphash.h" -#define __PERL_HASH_SEED_roundup(x, y) ( ( ( (x) + ( (y) - 1 ) ) / (y) ) * (y) ) -#define _PERL_HASH_SEED_roundup(x) __PERL_HASH_SEED_roundup(x,__PERL_HASH_WORD_SIZE) +#define PVT__PERL_HASH_SEED_roundup(x, y) ( ( ( (x) + ( (y) - 1 ) ) / (y) ) * (y) ) +#define PVT_PERL_HASH_SEED_roundup(x) PVT__PERL_HASH_SEED_roundup(x,PVT__PERL_HASH_WORD_SIZE) #define PL_hash_seed ((U8 *)PL_hash_seed_w) #define PL_hash_state ((U8 *)PL_hash_state_w) -#if PERL_HASH_USE_SBOX32_ALSO != 1 -# define _PERL_HASH_FUNC __PERL_HASH_FUNC -# define _PERL_HASH_SEED_BYTES __PERL_HASH_SEED_BYTES -# define _PERL_HASH_STATE_BYTES __PERL_HASH_STATE_BYTES -# define _PERL_HASH_SEED_STATE(seed,state) __PERL_HASH_SEED_STATE(seed,state) -# define _PERL_HASH_WITH_STATE(state,str,len) __PERL_HASH_WITH_STATE(state,str,len) +#if PERL_HASH_USE_SBOX32_ALSO == 0 +# define PVT_PERL_HASH_FUNC PVT__PERL_HASH_FUNC +# define PVT_PERL_HASH_SEED_BYTES PVT__PERL_HASH_SEED_BYTES +# define PVT_PERL_HASH_STATE_BYTES PVT__PERL_HASH_STATE_BYTES +# define PVT_PERL_HASH_SEED_STATE(seed,state) PVT__PERL_HASH_SEED_STATE(seed,state) +# define PVT_PERL_HASH_WITH_STATE(state,str,len) PVT__PERL_HASH_WITH_STATE(state,str,len) #else -#define _PERL_HASH_FUNC "SBOX32_WITH_" __PERL_HASH_FUNC +#define PVT_PERL_HASH_FUNC "SBOX32_WITH_" PVT__PERL_HASH_FUNC /* note the 4 in the below code comes from the fact the seed to initialize the SBOX is 128 bits */ -#define _PERL_HASH_SEED_BYTES ( __PERL_HASH_SEED_BYTES + (int)( 4 * sizeof(U32)) ) +#define PVT_PERL_HASH_SEED_BYTES ( PVT__PERL_HASH_SEED_BYTES + (int)( 4 * sizeof(U32)) ) -#define _PERL_HASH_STATE_BYTES \ - ( __PERL_HASH_STATE_BYTES + ( ( 1 + ( 256 * SBOX32_MAX_LEN ) ) * sizeof(U32) ) ) +#define PVT_PERL_HASH_STATE_BYTES \ + ( PVT__PERL_HASH_STATE_BYTES + ( ( 1 + ( 256 * SBOX32_MAX_LEN ) ) * sizeof(U32) ) ) -#define _PERL_HASH_SEED_STATE(seed,state) STMT_START { \ - __PERL_HASH_SEED_STATE(seed,state); \ - sbox32_seed_state128(seed + __PERL_HASH_SEED_BYTES, state + __PERL_HASH_STATE_BYTES); \ +#define PVT_PERL_HASH_SEED_STATE(seed,state) STMT_START { \ + PVT__PERL_HASH_SEED_STATE(seed,state); \ + sbox32_seed_state128(seed + PVT__PERL_HASH_SEED_BYTES, state + PVT__PERL_HASH_STATE_BYTES); \ } STMT_END -#define _PERL_HASH_WITH_STATE(state,str,len) \ +#define PVT_PERL_HASH_WITH_STATE(state,str,len) \ (LIKELY(len <= SBOX32_MAX_LEN) \ - ? sbox32_hash_with_state((state + __PERL_HASH_STATE_BYTES),(U8*)(str),(len)) \ - : __PERL_HASH_WITH_STATE((state),(str),(len))) + ? sbox32_hash_with_state((state + PVT__PERL_HASH_STATE_BYTES),(const U8*)(str),(len)) \ + : PVT__PERL_HASH_WITH_STATE((state),(str),(len))) #endif #define PERL_HASH_WITH_SEED(seed,hash,str,len) \ (hash) = S_perl_hash_with_seed((const U8 *) seed, (const U8 *) str,len) #define PERL_HASH_WITH_STATE(state,hash,str,len) \ - (hash) = _PERL_HASH_WITH_STATE((state),(U8*)(str),(len)) + (hash) = PVT_PERL_HASH_WITH_STATE((state),(const U8*)(str),(len)) -#define PERL_HASH_SEED_STATE(seed,state) _PERL_HASH_SEED_STATE(seed,state) -#define PERL_HASH_SEED_BYTES _PERL_HASH_SEED_roundup(_PERL_HASH_SEED_BYTES) -#define PERL_HASH_STATE_BYTES _PERL_HASH_SEED_roundup(_PERL_HASH_STATE_BYTES) -#define PERL_HASH_FUNC _PERL_HASH_FUNC +#define PERL_HASH_SEED_STATE(seed,state) PVT_PERL_HASH_SEED_STATE(seed,state) +#define PERL_HASH_SEED_BYTES PVT_PERL_HASH_SEED_roundup(PVT_PERL_HASH_SEED_BYTES) +#define PERL_HASH_STATE_BYTES PVT_PERL_HASH_SEED_roundup(PVT_PERL_HASH_STATE_BYTES) +#define PERL_HASH_FUNC PVT_PERL_HASH_FUNC -#define PERL_HASH_SEED_WORDS (PERL_HASH_SEED_BYTES/__PERL_HASH_WORD_SIZE) -#define PERL_HASH_STATE_WORDS (PERL_HASH_STATE_BYTES/__PERL_HASH_WORD_SIZE) +#define PERL_HASH_SEED_WORDS (PERL_HASH_SEED_BYTES/PVT__PERL_HASH_WORD_SIZE) +#define PERL_HASH_STATE_WORDS (PERL_HASH_STATE_BYTES/PVT__PERL_HASH_WORD_SIZE) #ifdef PERL_USE_SINGLE_CHAR_HASH_CACHE #define PERL_HASH(state,str,len) \ (hash) = ((len) < 2 ? ( (len) == 0 ? PL_hash_chars[256] : PL_hash_chars[(U8)(str)[0]] ) \ - : _PERL_HASH_WITH_STATE(PL_hash_state,(U8*)(str),(len))) + : PVT_PERL_HASH_WITH_STATE(PL_hash_state,(U8*)(str),(len))) #else #define PERL_HASH(hash,str,len) \ PERL_HASH_WITH_STATE(PL_hash_state,hash,(U8*)(str),(len)) @@ -162,9 +177,9 @@ PERL_STATIC_INLINE U32 S_perl_hash_with_seed(const U8 * seed, const U8 *str, STRLEN len) { - __PERL_HASH_WORD_TYPE state[PERL_HASH_STATE_WORDS]; - _PERL_HASH_SEED_STATE(seed,(U8*)state); - return _PERL_HASH_WITH_STATE((U8*)state,str,len); + PVT__PERL_HASH_WORD_TYPE state[PERL_HASH_STATE_WORDS]; + PVT_PERL_HASH_SEED_STATE(seed,(U8*)state); + return PVT_PERL_HASH_WITH_STATE((U8*)state,str,len); } #endif /*compile once*/ diff --git a/gnu/usr.bin/perl/inline.h b/gnu/usr.bin/perl/inline.h index 436f8eb3ac4..90930184dac 100644 --- a/gnu/usr.bin/perl/inline.h +++ b/gnu/usr.bin/perl/inline.h @@ -34,6 +34,10 @@ SOFTWARE. * header files, because they depend on proto.h (included after most other * headers) or struct definitions. * + * Note also perlstatic.h for functions that can't or shouldn't be inlined, but + * whose details should be exposed to the compiler, for such things as tail + * call optimization. + * * Each section names the header file that the functions "belong" to. */ @@ -140,6 +144,78 @@ Perl_av_fetch_simple(pTHX_ AV *av, SSize_t key, I32 lval) } } +/* +=for apidoc av_push_simple + +This is a cut-down version of av_push that assumes that the array is very +straightforward - no magic, not readonly, and AvREAL - and that C is +not less than -1. This function MUST NOT be used in situations where any +of those assumptions may not hold. + +Pushes an SV (transferring control of one reference count) onto the end of the +array. The array will grow automatically to accommodate the addition. + +Perl equivalent: C. + +=cut +*/ + +PERL_STATIC_INLINE void +Perl_av_push_simple(pTHX_ AV *av, SV *val) +{ + PERL_ARGS_ASSERT_AV_PUSH_SIMPLE; + assert(SvTYPE(av) == SVt_PVAV); + assert(!SvMAGICAL(av)); + assert(!SvREADONLY(av)); + assert(AvREAL(av)); + assert(AvFILLp(av) > -2); + + (void)av_store_simple(av,AvFILLp(av)+1,val); +} + +/* +=for apidoc av_new_alloc + +This implements L> +and L>, which are the public API for this +functionality. + +Creates a new AV and allocates its SV* array. + +This is similar to, but more efficient than doing: + + AV *av = newAV(); + av_extend(av, key); + +The size parameter is used to pre-allocate a SV* array large enough to +hold at least elements C<0..(size-1)>. C must be at least 1. + +The C parameter controls whether or not the array is NULL +initialized. + +=cut +*/ + +PERL_STATIC_INLINE AV * +Perl_av_new_alloc(pTHX_ SSize_t size, bool zeroflag) +{ + AV * const av = newAV(); + SV** ary; + PERL_ARGS_ASSERT_AV_NEW_ALLOC; + assert(size > 0); + + Newx(ary, size, SV*); /* Newx performs the memwrap check */ + AvALLOC(av) = ary; + AvARRAY(av) = ary; + AvMAX(av) = size - 1; + + if (zeroflag) + Zero(ary, size, SV*); + + return av; +} + + /* ------------------------------- cv.h ------------------------------- */ /* @@ -205,6 +281,25 @@ S_strip_spaces(pTHX_ const char * orig, STRLEN * const len) } #endif +/* ------------------------------- iperlsys.h ------------------------------- */ +#if ! defined(PERL_IMPLICIT_SYS) && defined(USE_ITHREADS) + +/* Otherwise this function is implemented as macros in iperlsys.h */ + +PERL_STATIC_INLINE bool +S_PerlEnv_putenv(pTHX_ char * str) +{ + PERL_ARGS_ASSERT_PERLENV_PUTENV; + + ENV_LOCK; + bool retval = putenv(str); + ENV_UNLOCK; + + return retval; +} + +#endif + /* ------------------------------- mg.h ------------------------------- */ #if defined(PERL_CORE) || defined(PERL_EXT) @@ -314,171 +409,6 @@ Perl_ReANY(const REGEXP * const re) : (struct regexp *)p; } -/* ------------------------------- sv.h ------------------------------- */ - -PERL_STATIC_INLINE bool -Perl_SvTRUE(pTHX_ SV *sv) -{ - PERL_ARGS_ASSERT_SVTRUE; - - if (UNLIKELY(sv == NULL)) - return FALSE; - SvGETMAGIC(sv); - return SvTRUE_nomg_NN(sv); -} - -PERL_STATIC_INLINE bool -Perl_SvTRUE_nomg(pTHX_ SV *sv) -{ - PERL_ARGS_ASSERT_SVTRUE_NOMG; - - if (UNLIKELY(sv == NULL)) - return FALSE; - return SvTRUE_nomg_NN(sv); -} - -PERL_STATIC_INLINE bool -Perl_SvTRUE_NN(pTHX_ SV *sv) -{ - PERL_ARGS_ASSERT_SVTRUE_NN; - - SvGETMAGIC(sv); - return SvTRUE_nomg_NN(sv); -} - -PERL_STATIC_INLINE bool -Perl_SvTRUE_common(pTHX_ SV * sv, const bool sv_2bool_is_fallback) -{ - PERL_ARGS_ASSERT_SVTRUE_COMMON; - - if (UNLIKELY(SvIMMORTAL_INTERP(sv))) - return SvIMMORTAL_TRUE(sv); - - if (! SvOK(sv)) - return FALSE; - - if (SvPOK(sv)) - return SvPVXtrue(sv); - - if (SvIOK(sv)) - return SvIVX(sv) != 0; /* casts to bool */ - - if (SvROK(sv) && !(SvOBJECT(SvRV(sv)) && HvAMAGIC(SvSTASH(SvRV(sv))))) - return TRUE; - - if (sv_2bool_is_fallback) - return sv_2bool_nomg(sv); - - return isGV_with_GP(sv); -} - - -PERL_STATIC_INLINE SV * -Perl_SvREFCNT_inc(SV *sv) -{ - if (LIKELY(sv != NULL)) - SvREFCNT(sv)++; - return sv; -} -PERL_STATIC_INLINE SV * -Perl_SvREFCNT_inc_NN(SV *sv) -{ - PERL_ARGS_ASSERT_SVREFCNT_INC_NN; - - SvREFCNT(sv)++; - return sv; -} -PERL_STATIC_INLINE void -Perl_SvREFCNT_inc_void(SV *sv) -{ - if (LIKELY(sv != NULL)) - SvREFCNT(sv)++; -} -PERL_STATIC_INLINE void -Perl_SvREFCNT_dec(pTHX_ SV *sv) -{ - if (LIKELY(sv != NULL)) { - U32 rc = SvREFCNT(sv); - if (LIKELY(rc > 1)) - SvREFCNT(sv) = rc - 1; - else - Perl_sv_free2(aTHX_ sv, rc); - } -} - -PERL_STATIC_INLINE void -Perl_SvREFCNT_dec_NN(pTHX_ SV *sv) -{ - U32 rc = SvREFCNT(sv); - - PERL_ARGS_ASSERT_SVREFCNT_DEC_NN; - - if (LIKELY(rc > 1)) - SvREFCNT(sv) = rc - 1; - else - Perl_sv_free2(aTHX_ sv, rc); -} - -/* -=for apidoc SvAMAGIC_on - -Indicate that C has overloading (active magic) enabled. - -=cut -*/ - -PERL_STATIC_INLINE void -Perl_SvAMAGIC_on(SV *sv) -{ - PERL_ARGS_ASSERT_SVAMAGIC_ON; - assert(SvROK(sv)); - - if (SvOBJECT(SvRV(sv))) HvAMAGIC_on(SvSTASH(SvRV(sv))); -} - -/* -=for apidoc SvAMAGIC_off - -Indicate that C has overloading (active magic) disabled. - -=cut -*/ - -PERL_STATIC_INLINE void -Perl_SvAMAGIC_off(SV *sv) -{ - PERL_ARGS_ASSERT_SVAMAGIC_OFF; - - if (SvROK(sv) && SvOBJECT(SvRV(sv))) - HvAMAGIC_off(SvSTASH(SvRV(sv))); -} - -PERL_STATIC_INLINE U32 -Perl_SvPADSTALE_on(SV *sv) -{ - assert(!(SvFLAGS(sv) & SVs_PADTMP)); - return SvFLAGS(sv) |= SVs_PADSTALE; -} -PERL_STATIC_INLINE U32 -Perl_SvPADSTALE_off(SV *sv) -{ - assert(!(SvFLAGS(sv) & SVs_PADTMP)); - return SvFLAGS(sv) &= ~SVs_PADSTALE; -} -#if defined(PERL_CORE) || defined (PERL_EXT) -PERL_STATIC_INLINE STRLEN -S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp) -{ - PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B; - if (SvGAMAGIC(sv)) { - U8 *hopped = utf8_hop((U8 *)pv, pos); - if (lenp) *lenp = (STRLEN)(utf8_hop(hopped, *lenp) - hopped); - return (STRLEN)(hopped - (U8 *)pv); - } - return sv_pos_u2b_flags(sv,pos,lenp,SV_CONST_RETURN); -} -#endif - /* ------------------------------- utf8.h ------------------------------- */ /* @@ -657,7 +587,7 @@ Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep) /* Here, we know we have at least one full word to process. Process * per-word as long as we have at least a full word left */ do { - if ((* (PERL_UINTMAX_T *) x) & PERL_VARIANTS_WORD_MASK) { + if ((* (const PERL_UINTMAX_T *) x) & PERL_VARIANTS_WORD_MASK) { /* Found a variant. Just return if caller doesn't want its * exact position */ @@ -668,7 +598,7 @@ Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep) # if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678 \ || BYTEORDER == 0x4321 || BYTEORDER == 0x87654321 - *ep = x + variant_byte_number(* (PERL_UINTMAX_T *) x); + *ep = x + variant_byte_number(* (const PERL_UINTMAX_T *) x); assert(*ep >= s && *ep < send); return FALSE; @@ -1200,7 +1130,8 @@ S_variant_under_utf8_count(const U8* const s, const U8* const e) #endif -#ifndef PERL_IN_REGEXEC_C /* Keep these around for that file */ + /* Keep these around for these files */ +#if ! defined(PERL_IN_REGEXEC_C) && ! defined(PERL_IN_UTF8_C) # undef PERL_WORDSIZE # undef PERL_COUNT_MULTIPLIER # undef PERL_WORD_BOUNDARY_MASK @@ -1542,7 +1473,7 @@ Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) * This uses adaptations of the table and algorithm given in * https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive * documentation of the original version. A copyright notice for the original - * version is given at the beginning of this file. The Perl adapations are + * version is given at the beginning of this file. The Perl adaptations are * documented at the definition of PL_extended_utf8_dfa_tab[]. * * This dfa is fast. There are three exit conditions: @@ -1599,9 +1530,10 @@ Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) incomplete_char_action) \ STMT_START { \ const U8 * s = s0; \ + const U8 * e_ = e; \ UV state = 0; \ \ - PERL_NON_CORE_CHECK_EMPTY(s,e); \ + PERL_NON_CORE_CHECK_EMPTY(s, e_); \ \ do { \ state = dfa_tab[256 + state + dfa_tab[*s]]; \ @@ -1614,7 +1546,7 @@ Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) if (UNLIKELY(state == 1)) { /* Rejecting state */ \ reject_action; \ } \ - } while (s < e); \ + } while (s < e_); \ \ /* Here, dropped out of loop before end-of-char */ \ incomplete_char_action; \ @@ -1654,7 +1586,7 @@ machines) is a valid UTF-8 character. This uses an adaptation of the table and algorithm given in https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive documentation of the original version. A copyright notice for the original -version is given at the beginning of this file. The Perl adapation is +version is given at the beginning of this file. The Perl adaptation is documented at the definition of PL_extended_utf8_dfa_tab[]. */ @@ -1723,7 +1655,7 @@ C> to check entire strings. This uses an adaptation of the tables and algorithm given in https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive documentation of the original version. A copyright notice for the original -version is given at the beginning of this file. The Perl adapation is +version is given at the beginning of this file. The Perl adaptation is documented at the definition of strict_extended_utf8_dfa_tab[]. */ @@ -1778,7 +1710,7 @@ C> to check entire strings. This uses an adaptation of the tables and algorithm given in https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive documentation of the original version. A copyright notice for the original -version is given at the beginning of this file. The Perl adapation is +version is given at the beginning of this file. The Perl adaptation is documented at the definition of PL_c9_utf8_dfa_tab[]. */ @@ -2072,11 +2004,16 @@ Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b) =for apidoc utf8_hop Return the UTF-8 pointer C displaced by C characters, either -forward or backward. +forward (if C is positive) or backward (if negative). C does not need +to be pointing to the starting byte of a character. If it isn't, one count of +C will be used up to get to the start of the next character for forward +hops, and to the start of the current character for negative ones. -WARNING: do not use the following unless you *know* C is within -the UTF-8 data pointed to by C *and* that on entry C is aligned -on the first byte of character or just after the last byte of a character. +WARNING: Prefer L to this one. + +Do NOT use this function unless you B C is within +the UTF-8 data pointed to by C B that on entry C is aligned +on the first byte of a character or just after the last byte of a character. =cut */ @@ -2087,10 +2024,20 @@ Perl_utf8_hop(const U8 *s, SSize_t off) PERL_ARGS_ASSERT_UTF8_HOP; /* Note: cannot use UTF8_IS_...() too eagerly here since e.g - * the bitops (especially ~) can create illegal UTF-8. + * the XXX bitops (especially ~) can create illegal UTF-8. * In other words: in Perl UTF-8 is not just for Unicode. */ - if (off >= 0) { + if (off > 0) { + + /* Get to next non-continuation byte */ + if (UNLIKELY(UTF8_IS_CONTINUATION(*s))) { + do { + s++; + } + while (UTF8_IS_CONTINUATION(*s)); + off--; + } + while (off--) s += UTF8SKIP(s); } @@ -2101,6 +2048,7 @@ Perl_utf8_hop(const U8 *s, SSize_t off) s--; } } + GCC_DIAG_IGNORE(-Wcast-qual) return (U8 *)s; GCC_DIAG_RESTORE @@ -2110,7 +2058,9 @@ Perl_utf8_hop(const U8 *s, SSize_t off) =for apidoc utf8_hop_forward Return the UTF-8 pointer C displaced by up to C characters, -forward. +forward. C does not need to be pointing to the starting byte of a +character. If it isn't, one count of C will be used up to get to the +start of the next character. C must be non-negative. @@ -2135,6 +2085,15 @@ Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end) assert(s <= end); assert(off >= 0); + if (off && UNLIKELY(UTF8_IS_CONTINUATION(*s))) { + /* Get to next non-continuation byte */ + do { + s++; + } + while (UTF8_IS_CONTINUATION(*s)); + off--; + } + while (off--) { STRLEN skip = UTF8SKIP(s); if ((STRLEN)(end - s) <= skip) { @@ -2154,7 +2113,9 @@ Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end) =for apidoc utf8_hop_back Return the UTF-8 pointer C displaced by up to C characters, -backward. +backward. C does not need to be pointing to the starting byte of a +character. If it isn't, one count of C will be used up to get to that +start. C must be non-positive. @@ -2179,6 +2140,13 @@ Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start) assert(start <= s); assert(off <= 0); + /* Note: if we know that the input is well-formed, we can do per-word + * hop-back. Commit d6ad3b72778369a84a215b498d8d60d5b03aa1af implemented + * that. But it was reverted because doing per-word has some + * start-up/tear-down overhead, so only makes sense if the distance to be + * moved is large, and core perl doesn't currently move more than a few + * characters at a time. You can reinstate it if it does become + * advantageous. */ while (off++ && s > start) { do { s--; @@ -2194,7 +2162,10 @@ Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start) =for apidoc utf8_hop_safe Return the UTF-8 pointer C displaced by up to C characters, -either forward or backward. +either forward or backward. C does not need to be pointing to the starting +byte of a character. If it isn't, one count of C will be used up to get +to the start of the next character for forward hops, and to the start of the +current character for negative ones. When moving backward it will not move before C. @@ -2460,11 +2431,11 @@ Perl_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, PERL_STATIC_INLINE UV Perl_utf8n_to_uvchr_msgs(const U8 *s, - STRLEN curlen, - STRLEN *retlen, - const U32 flags, - U32 * errors, - AV ** msgs) + STRLEN curlen, + STRLEN *retlen, + const U32 flags, + U32 * errors, + AV ** msgs) { /* This is the inlined portion of utf8n_to_uvchr_msgs. It handles the * simple cases, and, if necessary calls a helper function to deal with the @@ -2476,7 +2447,7 @@ Perl_utf8n_to_uvchr_msgs(const U8 *s, * https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides * comprehensive documentation of the original version. A copyright notice * for the original version is given at the beginning of this file. The - * Perl adapation is documented at the definition of PL_strict_utf8_dfa_tab[]. + * Perl adaptation is documented at the definition of PL_strict_utf8_dfa_tab[]. */ const U8 * const s0 = s; @@ -2687,7 +2658,7 @@ S_lossless_NV_to_IV(const NV nv, IV *ivp) /* ------------------ pp.c, regcomp.c, toke.c, universal.c ------------ */ -#if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C) +#if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C) #define MAX_CHARSET_NAME_LENGTH 2 @@ -3086,6 +3057,8 @@ Perl_cx_poploop(pTHX_ PERL_CONTEXT *cx) cx->blk_loop.itersave = NULL; SvREFCNT_dec(cursv); } + if (cx->cx_type & (CXp_FOR_GV|CXp_FOR_LVREF)) + SvREFCNT_dec(cx->blk_loop.itervar_u.svp); } @@ -3134,6 +3107,36 @@ Perl_cx_popgiven(pTHX_ PERL_CONTEXT *cx) SvREFCNT_dec(sv); } +/* +=for apidoc newPADxVOP + +Constructs, checks and returns an op containing a pad offset. C is +the opcode, which should be one of C, C, C +or C. The returned op will have the C field set by +the C argument. + +This is convenient when constructing a large optree in nested function +calls, as it avoids needing to store the pad op directly to set the +C field as a side-effect. For example + + o = op_append_elem(OP_LINESEQ, o, + newPADxVOP(OP_PADSV, 0, padix)); + +=cut +*/ + +PERL_STATIC_INLINE OP * +Perl_newPADxVOP(pTHX_ I32 type, I32 flags, PADOFFSET padix) +{ + PERL_ARGS_ASSERT_NEWPADXVOP; + + assert(type == OP_PADSV || type == OP_PADAV || type == OP_PADHV + || type == OP_PADCV); + OP *o = newOP(type, flags); + o->op_targ = padix; + return o; +} + /* ------------------ util.h ------------------------------------------- */ /* @@ -3151,7 +3154,7 @@ range bytes match only themselves. */ PERL_STATIC_INLINE I32 -Perl_foldEQ(const char *s1, const char *s2, I32 len) +Perl_foldEQ(pTHX_ const char *s1, const char *s2, I32 len) { const U8 *a = (const U8 *)s1; const U8 *b = (const U8 *)s2; @@ -3169,7 +3172,7 @@ Perl_foldEQ(const char *s1, const char *s2, I32 len) } PERL_STATIC_INLINE I32 -Perl_foldEQ_latin1(const char *s1, const char *s2, I32 len) +Perl_foldEQ_latin1(pTHX_ const char *s1, const char *s2, I32 len) { /* Compare non-UTF-8 using Unicode (Latin1) semantics. Works on all folds * representable without UTF-8, except for LATIN_SMALL_LETTER_SHARP_S, and @@ -3203,7 +3206,7 @@ same case-insensitively in the current locale; false otherwise. */ PERL_STATIC_INLINE I32 -Perl_foldEQ_locale(const char *s1, const char *s2, I32 len) +Perl_foldEQ_locale(pTHX_ const char *s1, const char *s2, I32 len) { const U8 *a = (const U8 *)s1; const U8 *b = (const U8 *)s2; @@ -3213,8 +3216,14 @@ Perl_foldEQ_locale(const char *s1, const char *s2, I32 len) assert(len >= 0); while (len--) { - if (*a != *b && *a != PL_fold_locale[*b]) + if (*a != *b && *a != PL_fold_locale[*b]) { + DEBUG_Lv(PerlIO_printf(Perl_debug_log, + "%s:%d: Our records indicate %02x is not a fold of %02x" + " or its mate %02x\n", + __FILE__, __LINE__, *a, *b, PL_fold_locale[*b])); + return 0; + } a++,b++; } return 1; @@ -3341,7 +3350,7 @@ Perl_mortal_getenv(const char * str) * the recursive calls and calls from the logger, and treat them specially. * Let's say we want to do getenv("foo"). We first find * getenv(PERL_MEM_LOG) and save it to a fixed-length per-interpreter - * variable, so no temporary is required. Then we do getenv(foo}, and in + * variable, so no temporary is required. Then we do getenv(foo), and in * the process of creating a temporary to save it, this function will be * called recursively to do a getenv(PERL_MEM_LOG). On the recursed call, * we detect that it is such a call and return our saved value instead of @@ -3421,7 +3430,7 @@ Perl_mortal_getenv(const char * str) } } - /* Then each of the three significant characters */ + /* Then each of the four significant characters */ if (strchr(ret, 'm')) { *mem_log_meat++ = 'm'; } @@ -3431,6 +3440,9 @@ Perl_mortal_getenv(const char * str) if (strchr(ret, 't')) { *mem_log_meat++ = 't'; } + if (strchr(ret, 'c')) { + *mem_log_meat++ = 'c'; + } *mem_log_meat = '\0'; assert(mem_log_meat < PL_mem_log + sizeof(PL_mem_log)); @@ -3475,8 +3487,7 @@ Perl_mortal_getenv(const char * str) PERL_STATIC_INLINE bool Perl_sv_isbool(pTHX_ const SV *sv) { - return SvIOK(sv) && SvPOK(sv) && SvIsCOW_static(sv) && - (SvPVX_const(sv) == PL_Yes || SvPVX_const(sv) == PL_No); + return SvBoolFlagsOK(sv) && BOOL_INTERNALS_sv_isbool(sv); } #ifdef USE_ITHREADS @@ -3501,6 +3512,254 @@ Perl_cop_file_avn(pTHX_ const COP *cop) { #endif +PERL_STATIC_INLINE PADNAME * +Perl_padname_refcnt_inc(PADNAME *pn) +{ + PadnameREFCNT(pn)++; + return pn; +} + +PERL_STATIC_INLINE PADNAMELIST * +Perl_padnamelist_refcnt_inc(PADNAMELIST *pnl) +{ + PadnamelistREFCNT(pnl)++; + return pnl; +} + +/* copy a string to a safe spot */ + +/* +=for apidoc_section $string +=for apidoc savepv + +Perl's version of C. Returns a pointer to a newly allocated +string which is a duplicate of C. The size of the string is +determined by C, which means it may not contain embedded C +characters and must have a trailing C. To prevent memory leaks, the +memory allocated for the new string needs to be freed when no longer needed. +This can be done with the C> function, or +L|perlguts/SAVEFREEPV(p)>. + +On some platforms, Windows for example, all allocated memory owned by a thread +is deallocated when that thread ends. So if you need that not to happen, you +need to use the shared memory functions, such as C>. + +=cut +*/ + +PERL_STATIC_INLINE char * +Perl_savepv(pTHX_ const char *pv) +{ + PERL_UNUSED_CONTEXT; + if (!pv) + return NULL; + else { + char *newaddr; + const STRLEN pvlen = strlen(pv)+1; + Newx(newaddr, pvlen, char); + return (char*)memcpy(newaddr, pv, pvlen); + } +} + +/* same thing but with a known length */ + +/* +=for apidoc savepvn + +Perl's version of what C would be if it existed. Returns a +pointer to a newly allocated string which is a duplicate of the first +C bytes from C, plus a trailing +C byte. The memory allocated for +the new string can be freed with the C function. + +On some platforms, Windows for example, all allocated memory owned by a thread +is deallocated when that thread ends. So if you need that not to happen, you +need to use the shared memory functions, such as C>. + +=cut +*/ + +PERL_STATIC_INLINE char * +Perl_savepvn(pTHX_ const char *pv, Size_t len) +{ + char *newaddr; + PERL_UNUSED_CONTEXT; + + Newx(newaddr,len+1,char); + /* Give a meaning to NULL pointer mainly for the use in sv_magic() */ + if (pv) { + /* might not be null terminated */ + newaddr[len] = '\0'; + return (char *) CopyD(pv,newaddr,len,char); + } + else { + return (char *) ZeroD(newaddr,len+1,char); + } +} + +/* +=for apidoc savesvpv + +A version of C/C which gets the string to duplicate from +the passed in SV using C + +On some platforms, Windows for example, all allocated memory owned by a thread +is deallocated when that thread ends. So if you need that not to happen, you +need to use the shared memory functions, such as C>. + +=cut +*/ + +PERL_STATIC_INLINE char * +Perl_savesvpv(pTHX_ SV *sv) +{ + STRLEN len; + const char * const pv = SvPV_const(sv, len); + char *newaddr; + + PERL_ARGS_ASSERT_SAVESVPV; + + ++len; + Newx(newaddr,len,char); + return (char *) CopyD(pv,newaddr,len,char); +} + +/* +=for apidoc savesharedsvpv + +A version of C which allocates the duplicate string in +memory which is shared between threads. + +=cut +*/ + +PERL_STATIC_INLINE char * +Perl_savesharedsvpv(pTHX_ SV *sv) +{ + STRLEN len; + const char * const pv = SvPV_const(sv, len); + + PERL_ARGS_ASSERT_SAVESHAREDSVPV; + + return savesharedpvn(pv, len); +} + +#ifndef PERL_GET_CONTEXT_DEFINED + +/* +=for apidoc_section $embedding +=for apidoc get_context + +Implements L>, which you should use instead. + +=cut +*/ + +PERL_STATIC_INLINE void * +Perl_get_context(void) +{ +# if defined(USE_ITHREADS) +# ifdef OLD_PTHREADS_API + pthread_addr_t t; + int error = pthread_getspecific(PL_thr_key, &t); + if (error) + Perl_croak_nocontext("panic: pthread_getspecific, error=%d", error); + return (void*)t; +# elif defined(I_MACH_CTHREADS) + return (void*)cthread_data(cthread_self()); +# else + return (void*)PTHREAD_GETSPECIFIC(PL_thr_key); +# endif +# else + return (void*)NULL; +# endif +} + +#endif + +PERL_STATIC_INLINE MGVTBL* +Perl_get_vtbl(pTHX_ int vtbl_id) +{ + PERL_UNUSED_CONTEXT; + + return (vtbl_id < 0 || vtbl_id >= magic_vtable_max) + ? NULL : (MGVTBL*)PL_magic_vtables + vtbl_id; +} + +/* +=for apidoc my_strlcat + +The C library C if available, or a Perl implementation of it. +This operates on C C-terminated strings. + +C appends string C to the end of C. It will append at +most S> characters. It will then C-terminate, +unless C is 0 or the original C string was longer than C (in +practice this should not happen as it means that either C is incorrect or +that C is not a proper C-terminated string). + +Note that C is the full size of the destination buffer and +the result is guaranteed to be C-terminated if there is room. Note that +room for the C should be included in C. + +The return value is the total length that C would have if C is +sufficiently large. Thus it is the initial length of C plus the length of +C. If C is smaller than the return, the excess was not appended. + +=cut + +Description stolen from http://man.openbsd.org/strlcat.3 +*/ +#ifndef HAS_STRLCAT +PERL_STATIC_INLINE Size_t +Perl_my_strlcat(char *dst, const char *src, Size_t size) +{ + Size_t used, length, copy; + + used = strlen(dst); + length = strlen(src); + if (size > 0 && used < size - 1) { + copy = (length >= size - used) ? size - used - 1 : length; + memcpy(dst + used, src, copy); + dst[used + copy] = '\0'; + } + return used + length; +} +#endif + + +/* +=for apidoc my_strlcpy + +The C library C if available, or a Perl implementation of it. +This operates on C C-terminated strings. + +C copies up to S> characters from the string C +to C, C-terminating the result if C is not 0. + +The return value is the total length C would be if the copy completely +succeeded. If it is larger than C, the excess was not copied. + +=cut + +Description stolen from http://man.openbsd.org/strlcpy.3 +*/ +#ifndef HAS_STRLCPY +PERL_STATIC_INLINE Size_t +Perl_my_strlcpy(char *dst, const char *src, Size_t size) +{ + Size_t length, copy; + + length = strlen(src); + if (size > 0) { + copy = (length >= size) ? size - 1 : length; + memcpy(dst, src, copy); + dst[copy] = '\0'; + } + return length; +} +#endif + /* * ex: set ts=8 sts=4 sw=4 et: */ diff --git a/gnu/usr.bin/perl/install_lib.pl b/gnu/usr.bin/perl/install_lib.pl index b5e00e209cf..1c4d7defe9f 100644 --- a/gnu/usr.bin/perl/install_lib.pl +++ b/gnu/usr.bin/perl/install_lib.pl @@ -6,7 +6,7 @@ use strict; use vars qw($Is_VMS $Is_W32 $Is_OS2 $Is_Cygwin $Is_Darwin $Is_AmigaOS %opts $packlist); -use subs qw(unlink link chmod chown); +use subs qw(unlink link chmod); require File::Path; require File::Copy; @@ -98,9 +98,6 @@ sub link { unless -f $to and (chmod(0666, $to), unlink $to) and File::Copy::copy($from, $to) and ++$success; } - if (defined($opts{uid}) || defined($opts{gid})) { - chown($opts{uid}, $opts{gid}, $to) if $success; - } $packlist->{$xto} = { type => 'file' }; } $success; @@ -115,16 +112,6 @@ sub chmod { unless $opts{notify}; } -sub chown { - my($uid,$gid,$name) = @_; - - return if ($^O eq 'dos'); - printf " chown %s:%s %s\n", $uid, $gid, $name if $opts{verbose}; - CORE::chown($uid,$gid,$name) - || warn sprintf("Couldn't chown %s:%s %s: $!\n", $uid, $gid, $name) - unless $opts{notify}; -} - sub samepath { my($p1, $p2) = @_; @@ -156,8 +143,7 @@ sub safe_rename { } sub mkpath { - File::Path::make_path(shift, {owner=>$opts{uid}, group=>$opts{gid}, - mode=>0777, verbose=>$opts{verbose}}) unless $opts{notify}; + File::Path::mkpath(shift , $opts{verbose}, 0777) unless $opts{notify}; } sub unixtoamiga diff --git a/gnu/usr.bin/perl/installperl b/gnu/usr.bin/perl/installperl index 0e5f66bedec..3c8af53bef6 100644 --- a/gnu/usr.bin/perl/installperl +++ b/gnu/usr.bin/perl/installperl @@ -72,7 +72,7 @@ $opts{destdir} = ''; my $usage = 0; if (!GetOptions(\%opts, 'notify|n', 'strip|s', 'silent|S', 'skip-otherperls|o', 'force|f', 'verbose|V', 'archname|A', - 'nopods|p', 'destdir:s', 'help|h|?', 'user|u:s', 'group|g:s', + 'nopods|p', 'destdir:s', 'help|h|?', 'versiononly|v' => \$versiononly, '<>' => sub { if ($_[0] eq '+v') { $versiononly = 0; @@ -102,16 +102,12 @@ Usage $0: [switches] -A Also install perl with the architecture's name in the perl binary's name. -p Don't install the pod files. [This will break use diagnostics;] - -g group install files with the specified group - -u user install files with the specified user -destdir Prefix installation directories by this string. -h Display this help message. EOT exit $usage; } } -$opts{'uid'} = getpwnam($opts{'user'}) if exists($opts{'user'}); -$opts{'gid'} = getgrnam($opts{'group'}) if exists($opts{'group'}); $versiononly = 1 if $Config{versiononly} && !defined $versiononly; my (@scripts, @tolink); @@ -146,7 +142,7 @@ if ((-e "testcompile") && (defined($ENV{'COMPILE'}))) { } # Exclude nonxs extensions that are not architecture dependent -my @nonxs = grep(!/^(Errno|IO\/Compress)$/, split(' ', $Config{'nonxs_ext'})); +my @nonxs = grep(!/^Errno$/, split(' ', $Config{'nonxs_ext'})); my @ext_dirs = qw(cpan dist ext); foreach my $ext_dir (@ext_dirs) { @@ -192,7 +188,7 @@ my $installprivlib = "$opts{destdir}$Config{installprivlib}"; my $installarchlib = "$opts{destdir}$Config{installarchlib}"; my $installsitelib = "$opts{destdir}$Config{installsitelib}"; my $installsitearch = "$opts{destdir}$Config{installsitearch}"; -my $installman1dir = "none"; +my $installman1dir = "$opts{destdir}$Config{installman1dir}"; my $man1ext = $Config{man1ext}; my $libperl = $Config{libperl}; # Shared library and dynamic loading suffixes. @@ -224,6 +220,8 @@ if ($Is_VMS) { # Hang in there until File::Spec hits the big time $installbin || die "No installbin directory in config.sh\n"; -d $installbin || mkpath($installbin); -d $installbin || $opts{notify} || die "$installbin is not a directory\n"; +-w $installbin || $opts{notify} || die "$installbin is not writable by you\n" + unless $installbin =~ m#^/afs/# || $opts{notify}; if (!$Is_VMS) { -x 'perl' . $exe_ext || die "perl isn't executable!\n"; @@ -235,9 +233,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"; # This will be used to store the packlist $packlist = ExtUtils::Packlist->new("$installarchlib/.packlist"); @@ -262,10 +260,6 @@ if ($Is_W32 or $Is_Cygwin) { $packlist->{"$Config{installbin}/$perldll"} = { type => 'file' }; } # if ($Is_W32 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) { @@ -285,8 +279,11 @@ if ($Is_VMS) { } } else { - my $ver = ''; # don't install a versioned perl binary - install("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext", "0755"); + safe_unlink("$installbin/$perl_verbase$ver$exe_ext"); + copy("perl$exe_ext", "$installbin/$perl_verbase$ver$exe_ext"); + strip("$installbin/$perl_verbase$ver$exe_ext"); + fix_dep_names("$installbin/$perl_verbase$ver$exe_ext"); + chmod(0755, "$installbin/$perl_verbase$ver$exe_ext"); `chtag -r "$installbin/$perl_verbase$ver$exe_ext"` if ($^O eq 'os390'); } @@ -342,9 +339,7 @@ elsif ($Is_Cygwin) { # On Cygwin symlink it to CORE to make Makefile happy @corefiles = <*.h>; } else { # [als] hard-coded 'libperl' name... not good! - #@corefiles = <*.h libperl*.* perl*$Config{lib_ext}>; - @corefiles = <*.h *.inc perl*$Config{lib_ext}>; - install($libperl, "$opts{destdir}$Config{glibpth}/$libperl", "0444"); + @corefiles = <*.h libperl*.* perl*$Config{lib_ext}>; # AIX needs perl.exp installed as well. push(@corefiles,'perl.exp') if $^O eq 'aix'; @@ -374,8 +369,7 @@ if ($Is_W32) { #linking lib isn't made in root but in CORE on Win32 # Install main perl executables # Make links to ordinary names if installbin directory isn't current directory. -if (0) { # don't install a versioned perl binary -#if (! $versiononly && ! samepath($installbin, '.') && ! $Is_VMS) { +if (! $versiononly && ! samepath($installbin, '.') && ! $Is_VMS) { safe_unlink("$installbin/$perl$exe_ext", "$installbin/suid$perl$exe_ext"); if ($^O eq 'vos') { # VOS doesn't support hard links, so use a symlink. @@ -514,9 +508,6 @@ if (!$opts{nopods} && (!$versiononly || ($installprivlib =~ m/\Q$vershort/))) { $packlist->write() unless $opts{notify}; -if (defined($opts{uid}) || defined($opts{gid})) { - chown($opts{uid}, $opts{gid}, $packlist->packlist_file()); -} print " Installation complete\n" if $opts{verbose}; exit 0; @@ -555,7 +546,6 @@ sub safe_unlink { sub copy { my($from,$to) = @_; - my($success) = 0; my $xto = $to; $xto =~ s/^\Q$opts{destdir}\E//; @@ -563,32 +553,12 @@ sub copy { unless $opts{silent}; print " creating new version of $xto\n" if $Is_VMS and -e $to and !$opts{silent}; - unless ($opts{notify} or File::Copy::copy($from, $to) and ++$success) { + unless ($opts{notify} or File::Copy::copy($from, $to)) { # Might have been that F::C::c can't overwrite the target warn "Couldn't copy $from to $to: $!\n" unless -f $to and (chmod(0666, $to), unlink $to) - and File::Copy::copy($from, $to) and ++$success; + and File::Copy::copy($from, $to); } - if (defined($opts{uid}) || defined($opts{gid})) { - chown($opts{uid}, $opts{gid}, $to) if $success; - } - $packlist->{$xto} = { type => 'file' }; -} - -sub install { - my($from,$to,$mode) = @_; - - my $xto = $to; - my $cmd = join(' ', @installcmd); - $cmd .= " -m $mode" if $mode; - $cmd .= " -s" if $opts{strip}; - $cmd .= " -o $opts{uid}" if defined($opts{uid}); - $cmd .= " -g $opts{gid}" if defined($opts{gid}); - $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' }; } @@ -620,10 +590,6 @@ sub installlib { return; } - # If we have different install version, install that instead - return if -e "$_.install"; - $name =~ s/\.install$//; - # ignore patch backups, RCS files, emacs backup & temp files and the # .exists files, .PL files, and test files. return if $name =~ m{\.orig$|\.rej$|~$|^#.+#$|,v$|^\.exists|\.PL$|\.plc$|\.t$|^test\.pl$|^dbm_filter_util\.pl$|^filter-util\.pl$|^uupacktool\.pl$|^\.gitignore$} || diff --git a/gnu/usr.bin/perl/intrpvar.h b/gnu/usr.bin/perl/intrpvar.h index 94ddbf672be..f08de2f0d07 100644 --- a/gnu/usr.bin/perl/intrpvar.h +++ b/gnu/usr.bin/perl/intrpvar.h @@ -58,7 +58,10 @@ PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */ #ifdef PERL_HASH_RANDOMIZE_KEYS #ifdef USE_PERL_PERTURB_KEYS -PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == no-random, 1 == random, 2 == determinsitic */ +PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff + 0. no-random + 1. random + 2. deterministic */ #endif PERLVARI(I, hash_rand_bits, UV, 0) /* used to randomize hash stuff */ #endif @@ -83,7 +86,7 @@ PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */ * control returns to pp_push or whatever, it sees if any of those flags * have been set, and if so finally calls mg_set(). * - * NB: PL_delaymagic is automatically saved and restored by JUMPENV_PUSH + * NB: PL_delaymagic is automatically saved and restored by JMPENV_PUSH * / POP. This removes the need to do ENTER/SAVEI16(PL_delaymagic)/LEAVE * in hot code like pp_push. */ @@ -127,7 +130,8 @@ thread's copy. =cut */ -PERLVAR(I, localizing, U8) /* are we processing a local() list? */ +PERLVAR(I, localizing, U8) /* are we processing a local() list? + 0 = no, 1 = localizing, 2 = delocalizing */ PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */ PERLVAR(I, defgv, GV *) /* the *_ glob */ @@ -232,6 +236,10 @@ fallback by macros on platforms where L> is unavailable, and which would otherwise evaluate their SV parameter more than once. +B, if this is used in a situation where something that is using it +is in a call stack with something else that is using it, this variable would +get zapped, leading to hard-to-diagnose errors. + =cut */ PERLVAR(I, Sv, SV *) @@ -252,6 +260,10 @@ It is is typically used with C when one is actually planning to discard the returned length, (hence the length is "Not Applicable", which is how this variable got its name). +B, if this is used in a situation where something that is using it +is in a call stack with something else that is using it, this variable would +get zapped, leading to hard-to-diagnose errors. + It is usually more efficient to either declare a local variable and use that instead, or to use the C macro. @@ -376,16 +388,15 @@ thread's copy. PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */ PERLVAR(I, utf8locale, bool) /* utf8 locale detected */ -PERLVAR(I, in_utf8_CTYPE_locale, bool) -PERLVAR(I, in_utf8_COLLATE_locale, bool) -PERLVAR(I, in_utf8_turkic_locale, bool) -#if defined(USE_ITHREADS) && ! defined(USE_THREAD_SAFE_LOCALE) -PERLVARI(I, lc_numeric_mutex_depth, int, 0) /* Emulate general semaphore */ + +#if defined(USE_LOCALE) && defined(USE_LOCALE_THREADS) +PERLVARI(I, locale_mutex_depth, int, 0) /* Emulate general semaphore */ #endif -PERLVARA(I, locale_utf8ness, 256, char) #ifdef USE_LOCALE_CTYPE - PERLVAR(I, warn_locale, SV *) +PERLVAR(I, warn_locale, SV *) +PERLVAR(I, in_utf8_CTYPE_locale, bool) +PERLVAR(I, in_utf8_turkic_locale, bool) #endif PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */ @@ -485,11 +496,14 @@ PERLVAR(I, origfilename, char *) PERLVARI(I, xsubfilename, const char *, NULL) PERLVAR(I, diehook, SV *) PERLVAR(I, warnhook, SV *) +/* keyword hooks*/ +PERLVARI(I, hook__require__before, SV *,NULL) +PERLVARI(I, hook__require__after, SV *,NULL) /* switches */ PERLVAR(I, patchlevel, SV *) PERLVAR(I, localpatches, const char * const *) -PERLVARI(I, splitstr, const char *, " ") +PERLVARI(I, splitstr, char *, NULL) PERLVAR(I, minus_c, bool) PERLVAR(I, minus_n, bool) @@ -700,7 +714,6 @@ PERLVARI(I, cop_seqmax, U32, PERL_COP_SEQMAX) /* statement sequence number */ PERLVARI(I, evalseq, U32, 0) /* eval sequence number */ PERLVAR(I, origalen, U32) -PERLVAR(I, origenviron, char **) #ifdef PERL_USES_PL_PIDSTATUS PERLVAR(I, pidstatus, HV *) /* pid-to-status mappings for waitpid */ #endif @@ -732,20 +745,33 @@ PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */ PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */ -#if defined(USE_POSIX_2008_LOCALE) \ - && defined(USE_THREAD_SAFE_LOCALE) \ - && ! defined(HAS_QUERYLOCALE) +#if defined(USE_POSIX_2008_LOCALE) && defined(MULTIPLICITY) +PERLVARI(I, cur_locale_obj, locale_t, NULL) +#endif +#ifdef USE_PL_CURLOCALES /* This is the most number of categories we've encountered so far on any - * platform */ -PERLVARA(I, curlocales, 12, char *) + * platform, doesn't include LC_ALL */ +PERLVARA(I, curlocales, 12, const char *) + +#endif +#ifdef USE_PL_CUR_LC_ALL + +PERLVARI(I, cur_LC_ALL, const char *, NULL) #endif #ifdef USE_LOCALE_COLLATE +/* The emory needed to store the collxfrm transformation of a string with + * length 'x' is predicted by the linear equation mx+b; m=mult, b=base */ +PERLVARI(I, collxfrm_mult,Size_t, 0) /* Expansion factor in *xfrm(); + 0 => unknown or bad, depending on + base */ +PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm(); + mult == 0, base == 0 => need to compute + mult == 0, base != 0 => ill-formed; + */ PERLVAR(I, collation_name, char *) /* Name of current collation */ -PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm() */ -PERLVARI(I, collxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */ PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */ PERLVARI(I, strxfrm_NUL_replacement, U8, 0) /* Code point to replace NULs */ PERLVARI(I, strxfrm_is_behaved, bool, TRUE) @@ -753,12 +779,15 @@ PERLVARI(I, strxfrm_is_behaved, bool, TRUE) PERLVARI(I, strxfrm_max_cp, U8, 0) /* Highest collating cp in locale */ PERLVARI(I, collation_standard, bool, TRUE) /* Assume simple collation */ +PERLVAR(I, in_utf8_COLLATE_locale, bool) #endif /* USE_LOCALE_COLLATE */ -PERLVARI(I, langinfo_buf, char *, NULL) +PERLVARI(I, langinfo_buf, const char *, NULL) PERLVARI(I, langinfo_bufsize, Size_t, 0) -PERLVARI(I, setlocale_buf, char *, NULL) +PERLVARI(I, setlocale_buf, const char *, NULL) PERLVARI(I, setlocale_bufsize, Size_t, 0) +PERLVARI(I, stdize_locale_buf, const char *, NULL) +PERLVARI(I, stdize_locale_bufsize, Size_t, 0) #ifdef PERL_SAWAMPERSAND PERLVAR(I, sawampersand, U8) /* must save all match strings */ @@ -771,6 +800,8 @@ PERLVARI(I, phase, enum perl_phase, PERL_PHASE_CONSTRUCT) PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */ +PERLVARI(I, eval_begin_nest_depth, U32, 0) + PERLVAR(I, unsafe, bool) PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */ @@ -806,25 +837,33 @@ PERLVARI(I, perl_destruct_level, signed char, 0) PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */ -PERLVAR(I, srand_called, bool) - -#ifdef USE_LOCALE_NUMERIC +PERLVARI(I, srand_called, bool, false) /* has random_state been initialized yet? */ +PERLVARI(I, srand_override, U32, 0) /* Should we use a deterministic sequence? */ +PERLVARI(I, srand_override_next, U32, 0) /* Next item in the sequence */ PERLVARI(I, numeric_underlying, bool, TRUE) /* Assume underlying locale numerics */ PERLVARI(I, numeric_underlying_is_standard, bool, TRUE) -PERLVARI(I, numeric_standard, int, TRUE) - /* Assume C locale numerics */ -PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */ -PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator if not '.' */ +PERLVARI(I, numeric_standard, int, TRUE) /* Assume C locale numerics */ +PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */ +PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator */ +PERLVAR(I, underlying_radix_sv, SV *) /* The radix in the program's current underlying locale */ -# ifdef HAS_POSIX_2008_LOCALE +#if defined(USE_LOCALE_NUMERIC) && defined(USE_POSIX_2008_LOCALE) PERLVARI(I, underlying_numeric_obj, locale_t, NULL) +#endif +#ifdef USE_POSIX_2008_LOCALE +PERLVARI(I, scratch_locale_obj, locale_t, 0) +#endif + +#ifdef USE_LOCALE_CTYPE + +PERLVARI(I, ctype_name, const char *, NULL) /* Name of current ctype locale */ + # endif -#endif /* !USE_LOCALE_NUMERIC */ /* Array of signal handlers, indexed by signal number, through which the C signal handler dispatches. */ @@ -888,7 +927,12 @@ PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */ PERLVARI(I, sharehook, share_proc_t, Perl_sv_nosharing) PERLVARI(I, lockhook, share_proc_t, Perl_sv_nosharing) +#if defined(__HP_cc) || defined(__HP_aCC) +#pragma diag_suppress 3215 +#endif GCC_DIAG_IGNORE(-Wdeprecated-declarations) +MSVC_DIAG_IGNORE(4996) + #ifdef NO_MATHOMS # define PERL_UNLOCK_HOOK Perl_sv_nosharing #else @@ -897,7 +941,11 @@ GCC_DIAG_IGNORE(-Wdeprecated-declarations) #endif PERLVARI(I, unlockhook, share_proc_t, PERL_UNLOCK_HOOK) +MSVC_DIAG_RESTORE GCC_DIAG_RESTORE +#if defined(__HP_cc) || defined(__HP_aCC) +#pragma diag_default 3215 +#endif PERLVARI(I, threadhook, thrhook_proc_t, Perl_nothreadhook) @@ -925,7 +973,7 @@ PERLVAR(I, Xpv, XPV *) /* (unused) held temporary value */ /* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be present always, as -DDEBUGGING must be binary compatible with non. */ -PERLVARI(I, scopestack_name, const char * *, NULL) +PERLVARI(I, scopestack_name, const char **, NULL) PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */ @@ -966,12 +1014,11 @@ PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */ PERLVARA(I, sv_consts, SV_CONSTS_COUNT, SV*) /* constant SVs with precomputed hash value */ #ifdef PERL_TRACE_OPS -PERLVARA(I, op_exec_cnt, OP_max+2, UV) /* Counts of executed OPs of the given type. +PERLVARA(I, op_exec_cnt, OP_max+2, UV) /* Counts of executed OPs of the given type. If PERL_TRACE_OPS is enabled, we'll dump a summary count of all ops executed in the - program at perl_destruct time. For - profiling/debugging only. Works only if - DEBUGGING is enabled, too. */ + program at perl_destruct time. Used only + for profiling in DEBUGGING mode. */ #endif PERLVAR(I, random_state, PL_RANDOM_STATE_TYPE) @@ -999,6 +1046,8 @@ PERLVAR(I, SB_invlist, SV *) PERLVAR(I, SCX_invlist, SV *) PERLVAR(I, UpperLatin1, SV *) /* Code points 128 - 255 */ +PERLVARA(I, fold_locale, 256, U8) + /* List of characters that participate in any fold defined by Unicode */ PERLVAR(I, in_some_fold, SV *) @@ -1040,7 +1089,8 @@ PERLVAR(I, wcrtomb_ps, mbstate_t) /* Enough space for the reserved byte, 1 for a potential leading 0, then enough * for the longest representable integer plus an extra, the 3 flag characters, * and NUL */ -PERLVARA(I, mem_log, 1 + 1 + TYPE_DIGITS(UV) + 1 + 3 + 1, char) +#define PERL_MEM_LOG_ARYLEN (1 + 1 + TYPE_DIGITS(UV) + 1 + 3 + 1) +PERLVARA(I, mem_log, PERL_MEM_LOG_ARYLEN, char) #endif /* The most recently seen `use VERSION` declaration, encoded in a single diff --git a/gnu/usr.bin/perl/invlist_inline.h b/gnu/usr.bin/perl/invlist_inline.h index 9c6ee603afd..8b28c218852 100644 --- a/gnu/usr.bin/perl/invlist_inline.h +++ b/gnu/usr.bin/perl/invlist_inline.h @@ -10,7 +10,7 @@ #define PERL_INVLIST_INLINE_H_ #if defined(PERL_IN_UTF8_C) \ - || defined(PERL_IN_REGCOMP_C) \ + || defined(PERL_IN_REGCOMP_ANY) \ || defined(PERL_IN_REGEXEC_C) \ || defined(PERL_IN_TOKE_C) \ || defined(PERL_IN_PP_C) \ @@ -93,7 +93,7 @@ S_invlist_array(SV* const invlist) } #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) +#if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) PERL_STATIC_INLINE void S_invlist_extend(pTHX_ SV* const invlist, const UV new_max) @@ -161,8 +161,45 @@ S_invlist_highest(SV* const invlist) : array[len - 1] - 1; } +# if defined(PERL_IN_REGCOMP_ANY) + +PERL_STATIC_INLINE UV +S_invlist_highest_range_start(SV* const invlist) +{ + /* Returns the lowest code point of the highest range in the inversion + * list parameter. This API has an ambiguity: it returns 0 either when + * the lowest such point is actually 0 or when the list is empty. If this + * distinction matters to you, check for emptiness before calling this + * function. */ + + UV len = _invlist_len(invlist); + UV *array; + + PERL_ARGS_ASSERT_INVLIST_HIGHEST_RANGE_START; + + if (len == 0) { + return 0; + } + + array = invlist_array(invlist); + + /* The last element in the array in the inversion list always starts a + * range that goes to infinity. That range may be for code points that are + * matched in the inversion list, or it may be for ones that aren't + * matched. In the first case, the lowest code point in the matching range + * is that the one that started the range. If the other case, the final + * matching range begins at the next element down (which may be 0 in the + * edge case). */ + return (ELEMENT_RANGE_MATCHES_INVLIST(len - 1)) + ? array[len - 1] + : len == 1 + ? 0 + : array[len - 2]; +} + +# endif #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) +#if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_OP_C) PERL_STATIC_INLINE STRLEN* S_get_invlist_iter_addr(SV* invlist) @@ -238,11 +275,101 @@ S_invlist_iternext(SV* invlist, UV* start, UV* end) #endif -#ifndef PERL_IN_REGCOMP_C +#ifndef PERL_IN_REGCOMP_ANY /* These symbols are only needed later in regcomp.c */ # undef TO_INTERNAL_SIZE # undef FROM_INTERNAL_SIZE #endif +#ifdef PERL_IN_REGCOMP_ANY +PERL_STATIC_INLINE +bool +S_invlist_is_iterating(const SV* const invlist) +{ + PERL_ARGS_ASSERT_INVLIST_IS_ITERATING; + + /* get_invlist_iter_addr()'s sv is non-const only because it returns a + * value that can be used to modify the invlist, it doesn't modify the + * invlist itself */ + return *(get_invlist_iter_addr((SV*)invlist)) < (STRLEN) UV_MAX; +} + +PERL_STATIC_INLINE +SV * +S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style) +{ + /* Get the contents of an inversion list into a string SV so that they can + * be printed out. If 'traditional_style' is TRUE, it uses the format + * traditionally done for debug tracing; otherwise it uses a format + * suitable for just copying to the output, with blanks between ranges and + * a dash between range components */ + + UV start, end; + SV* output; + const char intra_range_delimiter = (traditional_style ? '\t' : '-'); + const char inter_range_delimiter = (traditional_style ? '\n' : ' '); + + if (traditional_style) { + output = newSVpvs("\n"); + } + else { + output = newSVpvs(""); + } + + PERL_ARGS_ASSERT_INVLIST_CONTENTS; + + assert(! invlist_is_iterating(invlist)); + + invlist_iterinit(invlist); + while (invlist_iternext(invlist, &start, &end)) { + if (end == UV_MAX) { + Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%cINFTY%c", + start, intra_range_delimiter, + inter_range_delimiter); + } + else if (end != start) { + Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%c%04" UVXf "%c", + start, + intra_range_delimiter, + end, inter_range_delimiter); + } + else { + Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%c", + start, inter_range_delimiter); + } + } + + if (SvCUR(output) && ! traditional_style) {/* Get rid of trailing blank */ + SvCUR_set(output, SvCUR(output) - 1); + } + + return output; +} + +PERL_STATIC_INLINE +UV +S_invlist_lowest(SV* const invlist) +{ + /* Returns the lowest code point that matches an inversion list. This API + * has an ambiguity, as it returns 0 under either the lowest is actually + * 0, or if the list is empty. If this distinction matters to you, check + * for emptiness before calling this function */ + + UV len = _invlist_len(invlist); + UV *array; + + PERL_ARGS_ASSERT_INVLIST_LOWEST; + + if (len == 0) { + return 0; + } + + array = invlist_array(invlist); + + return array[0]; +} + +#endif + #endif /* PERL_INVLIST_INLINE_H_ */ diff --git a/gnu/usr.bin/perl/iperlsys.h b/gnu/usr.bin/perl/iperlsys.h index b922af0e658..40ff8a31039 100644 --- a/gnu/usr.bin/perl/iperlsys.h +++ b/gnu/usr.bin/perl/iperlsys.h @@ -559,14 +559,7 @@ struct IPerlEnvInfo # endif #else /* below is ! PERL_IMPLICIT_SYS */ -# ifdef USE_ITHREADS - - /* Use the comma operator to return 0/non-zero, while avoiding putting - * this in an inline function */ -# define PerlEnv_putenv(str) (ENV_LOCK, (putenv(str) \ - ? (ENV_UNLOCK, 1) \ - : (ENV_UNLOCK, 0))) -# else +# ifndef USE_ITHREADS /* Threaded is an inline function in inline.h */ # define PerlEnv_putenv(str) putenv(str) # endif # define PerlEnv_getenv(str) mortal_getenv(str) diff --git a/gnu/usr.bin/perl/keywords.c b/gnu/usr.bin/perl/keywords.c index ed26717ba05..54f5d94fd19 100644 --- a/gnu/usr.bin/perl/keywords.c +++ b/gnu/usr.bin/perl/keywords.c @@ -978,7 +978,7 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) goto unknown; } - case 5: /* 41 tokens of length 5 */ + case 5: /* 43 tokens of length 5 */ switch (name[0]) { case 'B': @@ -1119,14 +1119,29 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) } case 'l': - if (name[2] == 'o' && - name[3] == 's' && - name[4] == 'e') - { /* close */ - return -KEY_close; - } + switch (name[2]) + { + case 'a': + if (name[3] == 's' && + name[4] == 's') + { /* class */ + return (all_keywords || FEATURE_CLASS_IS_ENABLED ? -KEY_class : 0); + } - goto unknown; + goto unknown; + + case 'o': + if (name[3] == 's' && + name[4] == 'e') + { /* close */ + return -KEY_close; + } + + goto unknown; + + default: + goto unknown; + } case 'r': if (name[2] == 'y' && @@ -1177,6 +1192,16 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) goto unknown; + case 'i': + if (name[2] == 'e' && + name[3] == 'l' && + name[4] == 'd') + { /* field */ + return (all_keywords || FEATURE_CLASS_IS_ENABLED ? -KEY_field : 0); + } + + goto unknown; + case 'l': if (name[2] == 'o' && name[3] == 'c' && @@ -1494,9 +1519,21 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) goto unknown; } - case 6: /* 33 tokens of length 6 */ + case 6: /* 35 tokens of length 6 */ switch (name[0]) { + case 'A': + if (name[1] == 'D' && + name[2] == 'J' && + name[3] == 'U' && + name[4] == 'S' && + name[5] == 'T') + { /* ADJUST */ + return (all_keywords || FEATURE_CLASS_IS_ENABLED ? KEY_ADJUST : 0); + } + + goto unknown; + case 'a': if (name[1] == 'c' && name[2] == 'c' && @@ -1650,54 +1687,71 @@ Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords) } case 'm': - if (name[1] == 's' && - name[2] == 'g') + switch (name[1]) { - switch (name[3]) - { - case 'c': - if (name[4] == 't' && - name[5] == 'l') - { /* msgctl */ - return -KEY_msgctl; - } + case 'e': + if (name[2] == 't' && + name[3] == 'h' && + name[4] == 'o' && + name[5] == 'd') + { /* method */ + return (all_keywords || FEATURE_CLASS_IS_ENABLED ? -KEY_method : 0); + } - goto unknown; + goto unknown; - case 'g': - if (name[4] == 'e' && - name[5] == 't') - { /* msgget */ - return -KEY_msgget; - } + case 's': + if (name[2] == 'g') + { + switch (name[3]) + { + case 'c': + if (name[4] == 't' && + name[5] == 'l') + { /* msgctl */ + return -KEY_msgctl; + } - goto unknown; + goto unknown; - case 'r': - if (name[4] == 'c' && - name[5] == 'v') - { /* msgrcv */ - return -KEY_msgrcv; - } + case 'g': + if (name[4] == 'e' && + name[5] == 't') + { /* msgget */ + return -KEY_msgget; + } - goto unknown; + goto unknown; - case 's': - if (name[4] == 'n' && - name[5] == 'd') - { /* msgsnd */ - return -KEY_msgsnd; + case 'r': + if (name[4] == 'c' && + name[5] == 'v') + { /* msgrcv */ + return -KEY_msgrcv; + } + + goto unknown; + + case 's': + if (name[4] == 'n' && + name[5] == 'd') + { /* msgsnd */ + return -KEY_msgsnd; + } + + goto unknown; + + default: + goto unknown; } + } - goto unknown; + goto unknown; - default: - goto unknown; - } + default: + goto unknown; } - goto unknown; - case 'p': if (name[1] == 'r' && name[2] == 'i' && @@ -3504,5 +3558,5 @@ unknown: } /* Generated from: - * b680fb3a27b173b65d9c4e534ad92897c925e336476879a6be1da18ac55cbe8b regen/keywords.pl + * eb67e851da14ede1aad67aec4a387fa250c1345407fad0a02988d2d8d3cc27f2 regen/keywords.pl * ex: set ro: */ diff --git a/gnu/usr.bin/perl/keywords.h b/gnu/usr.bin/perl/keywords.h index f2304ba9cf2..feae6f6dce7 100644 --- a/gnu/usr.bin/perl/keywords.h +++ b/gnu/usr.bin/perl/keywords.h @@ -20,260 +20,264 @@ #define KEY___DATA__ 4 #define KEY___END__ 5 #define KEY___SUB__ 6 -#define KEY_AUTOLOAD 7 -#define KEY_BEGIN 8 -#define KEY_UNITCHECK 9 -#define KEY_DESTROY 10 -#define KEY_END 11 -#define KEY_INIT 12 -#define KEY_CHECK 13 -#define KEY_abs 14 -#define KEY_accept 15 -#define KEY_alarm 16 -#define KEY_and 17 -#define KEY_atan2 18 -#define KEY_bind 19 -#define KEY_binmode 20 -#define KEY_bless 21 -#define KEY_break 22 -#define KEY_caller 23 -#define KEY_catch 24 -#define KEY_chdir 25 -#define KEY_chmod 26 -#define KEY_chomp 27 -#define KEY_chop 28 -#define KEY_chown 29 -#define KEY_chr 30 -#define KEY_chroot 31 -#define KEY_close 32 -#define KEY_closedir 33 -#define KEY_cmp 34 -#define KEY_connect 35 -#define KEY_continue 36 -#define KEY_cos 37 -#define KEY_crypt 38 -#define KEY_dbmclose 39 -#define KEY_dbmopen 40 -#define KEY_default 41 -#define KEY_defer 42 -#define KEY_defined 43 -#define KEY_delete 44 -#define KEY_die 45 -#define KEY_do 46 -#define KEY_dump 47 -#define KEY_each 48 -#define KEY_else 49 -#define KEY_elsif 50 -#define KEY_endgrent 51 -#define KEY_endhostent 52 -#define KEY_endnetent 53 -#define KEY_endprotoent 54 -#define KEY_endpwent 55 -#define KEY_endservent 56 -#define KEY_eof 57 -#define KEY_eq 58 -#define KEY_eval 59 -#define KEY_evalbytes 60 -#define KEY_exec 61 -#define KEY_exists 62 -#define KEY_exit 63 -#define KEY_exp 64 -#define KEY_fc 65 -#define KEY_fcntl 66 -#define KEY_fileno 67 -#define KEY_finally 68 -#define KEY_flock 69 -#define KEY_for 70 -#define KEY_foreach 71 -#define KEY_fork 72 -#define KEY_format 73 -#define KEY_formline 74 -#define KEY_ge 75 -#define KEY_getc 76 -#define KEY_getgrent 77 -#define KEY_getgrgid 78 -#define KEY_getgrnam 79 -#define KEY_gethostbyaddr 80 -#define KEY_gethostbyname 81 -#define KEY_gethostent 82 -#define KEY_getlogin 83 -#define KEY_getnetbyaddr 84 -#define KEY_getnetbyname 85 -#define KEY_getnetent 86 -#define KEY_getpeername 87 -#define KEY_getpgrp 88 -#define KEY_getppid 89 -#define KEY_getpriority 90 -#define KEY_getprotobyname 91 -#define KEY_getprotobynumber 92 -#define KEY_getprotoent 93 -#define KEY_getpwent 94 -#define KEY_getpwnam 95 -#define KEY_getpwuid 96 -#define KEY_getservbyname 97 -#define KEY_getservbyport 98 -#define KEY_getservent 99 -#define KEY_getsockname 100 -#define KEY_getsockopt 101 -#define KEY_given 102 -#define KEY_glob 103 -#define KEY_gmtime 104 -#define KEY_goto 105 -#define KEY_grep 106 -#define KEY_gt 107 -#define KEY_hex 108 -#define KEY_if 109 -#define KEY_index 110 -#define KEY_int 111 -#define KEY_ioctl 112 -#define KEY_isa 113 -#define KEY_join 114 -#define KEY_keys 115 -#define KEY_kill 116 -#define KEY_last 117 -#define KEY_lc 118 -#define KEY_lcfirst 119 -#define KEY_le 120 -#define KEY_length 121 -#define KEY_link 122 -#define KEY_listen 123 -#define KEY_local 124 -#define KEY_localtime 125 -#define KEY_lock 126 -#define KEY_log 127 -#define KEY_lstat 128 -#define KEY_lt 129 -#define KEY_m 130 -#define KEY_map 131 -#define KEY_mkdir 132 -#define KEY_msgctl 133 -#define KEY_msgget 134 -#define KEY_msgrcv 135 -#define KEY_msgsnd 136 -#define KEY_my 137 -#define KEY_ne 138 -#define KEY_next 139 -#define KEY_no 140 -#define KEY_not 141 -#define KEY_oct 142 -#define KEY_open 143 -#define KEY_opendir 144 -#define KEY_or 145 -#define KEY_ord 146 -#define KEY_our 147 -#define KEY_pack 148 -#define KEY_package 149 -#define KEY_pipe 150 -#define KEY_pop 151 -#define KEY_pos 152 -#define KEY_print 153 -#define KEY_printf 154 -#define KEY_prototype 155 -#define KEY_push 156 -#define KEY_q 157 -#define KEY_qq 158 -#define KEY_qr 159 -#define KEY_quotemeta 160 -#define KEY_qw 161 -#define KEY_qx 162 -#define KEY_rand 163 -#define KEY_read 164 -#define KEY_readdir 165 -#define KEY_readline 166 -#define KEY_readlink 167 -#define KEY_readpipe 168 -#define KEY_recv 169 -#define KEY_redo 170 -#define KEY_ref 171 -#define KEY_rename 172 -#define KEY_require 173 -#define KEY_reset 174 -#define KEY_return 175 -#define KEY_reverse 176 -#define KEY_rewinddir 177 -#define KEY_rindex 178 -#define KEY_rmdir 179 -#define KEY_s 180 -#define KEY_say 181 -#define KEY_scalar 182 -#define KEY_seek 183 -#define KEY_seekdir 184 -#define KEY_select 185 -#define KEY_semctl 186 -#define KEY_semget 187 -#define KEY_semop 188 -#define KEY_send 189 -#define KEY_setgrent 190 -#define KEY_sethostent 191 -#define KEY_setnetent 192 -#define KEY_setpgrp 193 -#define KEY_setpriority 194 -#define KEY_setprotoent 195 -#define KEY_setpwent 196 -#define KEY_setservent 197 -#define KEY_setsockopt 198 -#define KEY_shift 199 -#define KEY_shmctl 200 -#define KEY_shmget 201 -#define KEY_shmread 202 -#define KEY_shmwrite 203 -#define KEY_shutdown 204 -#define KEY_sin 205 -#define KEY_sleep 206 -#define KEY_socket 207 -#define KEY_socketpair 208 -#define KEY_sort 209 -#define KEY_splice 210 -#define KEY_split 211 -#define KEY_sprintf 212 -#define KEY_sqrt 213 -#define KEY_srand 214 -#define KEY_stat 215 -#define KEY_state 216 -#define KEY_study 217 -#define KEY_sub 218 -#define KEY_substr 219 -#define KEY_symlink 220 -#define KEY_syscall 221 -#define KEY_sysopen 222 -#define KEY_sysread 223 -#define KEY_sysseek 224 -#define KEY_system 225 -#define KEY_syswrite 226 -#define KEY_tell 227 -#define KEY_telldir 228 -#define KEY_tie 229 -#define KEY_tied 230 -#define KEY_time 231 -#define KEY_times 232 -#define KEY_tr 233 -#define KEY_try 234 -#define KEY_truncate 235 -#define KEY_uc 236 -#define KEY_ucfirst 237 -#define KEY_umask 238 -#define KEY_undef 239 -#define KEY_unless 240 -#define KEY_unlink 241 -#define KEY_unpack 242 -#define KEY_unshift 243 -#define KEY_untie 244 -#define KEY_until 245 -#define KEY_use 246 -#define KEY_utime 247 -#define KEY_values 248 -#define KEY_vec 249 -#define KEY_wait 250 -#define KEY_waitpid 251 -#define KEY_wantarray 252 -#define KEY_warn 253 -#define KEY_when 254 -#define KEY_while 255 -#define KEY_write 256 -#define KEY_x 257 -#define KEY_xor 258 -#define KEY_y 259 +#define KEY_ADJUST 7 +#define KEY_AUTOLOAD 8 +#define KEY_BEGIN 9 +#define KEY_UNITCHECK 10 +#define KEY_DESTROY 11 +#define KEY_END 12 +#define KEY_INIT 13 +#define KEY_CHECK 14 +#define KEY_abs 15 +#define KEY_accept 16 +#define KEY_alarm 17 +#define KEY_and 18 +#define KEY_atan2 19 +#define KEY_bind 20 +#define KEY_binmode 21 +#define KEY_bless 22 +#define KEY_break 23 +#define KEY_caller 24 +#define KEY_catch 25 +#define KEY_chdir 26 +#define KEY_chmod 27 +#define KEY_chomp 28 +#define KEY_chop 29 +#define KEY_chown 30 +#define KEY_chr 31 +#define KEY_chroot 32 +#define KEY_class 33 +#define KEY_close 34 +#define KEY_closedir 35 +#define KEY_cmp 36 +#define KEY_connect 37 +#define KEY_continue 38 +#define KEY_cos 39 +#define KEY_crypt 40 +#define KEY_dbmclose 41 +#define KEY_dbmopen 42 +#define KEY_default 43 +#define KEY_defer 44 +#define KEY_defined 45 +#define KEY_delete 46 +#define KEY_die 47 +#define KEY_do 48 +#define KEY_dump 49 +#define KEY_each 50 +#define KEY_else 51 +#define KEY_elsif 52 +#define KEY_endgrent 53 +#define KEY_endhostent 54 +#define KEY_endnetent 55 +#define KEY_endprotoent 56 +#define KEY_endpwent 57 +#define KEY_endservent 58 +#define KEY_eof 59 +#define KEY_eq 60 +#define KEY_eval 61 +#define KEY_evalbytes 62 +#define KEY_exec 63 +#define KEY_exists 64 +#define KEY_exit 65 +#define KEY_exp 66 +#define KEY_fc 67 +#define KEY_fcntl 68 +#define KEY_field 69 +#define KEY_fileno 70 +#define KEY_finally 71 +#define KEY_flock 72 +#define KEY_for 73 +#define KEY_foreach 74 +#define KEY_fork 75 +#define KEY_format 76 +#define KEY_formline 77 +#define KEY_ge 78 +#define KEY_getc 79 +#define KEY_getgrent 80 +#define KEY_getgrgid 81 +#define KEY_getgrnam 82 +#define KEY_gethostbyaddr 83 +#define KEY_gethostbyname 84 +#define KEY_gethostent 85 +#define KEY_getlogin 86 +#define KEY_getnetbyaddr 87 +#define KEY_getnetbyname 88 +#define KEY_getnetent 89 +#define KEY_getpeername 90 +#define KEY_getpgrp 91 +#define KEY_getppid 92 +#define KEY_getpriority 93 +#define KEY_getprotobyname 94 +#define KEY_getprotobynumber 95 +#define KEY_getprotoent 96 +#define KEY_getpwent 97 +#define KEY_getpwnam 98 +#define KEY_getpwuid 99 +#define KEY_getservbyname 100 +#define KEY_getservbyport 101 +#define KEY_getservent 102 +#define KEY_getsockname 103 +#define KEY_getsockopt 104 +#define KEY_given 105 +#define KEY_glob 106 +#define KEY_gmtime 107 +#define KEY_goto 108 +#define KEY_grep 109 +#define KEY_gt 110 +#define KEY_hex 111 +#define KEY_if 112 +#define KEY_index 113 +#define KEY_int 114 +#define KEY_ioctl 115 +#define KEY_isa 116 +#define KEY_join 117 +#define KEY_keys 118 +#define KEY_kill 119 +#define KEY_last 120 +#define KEY_lc 121 +#define KEY_lcfirst 122 +#define KEY_le 123 +#define KEY_length 124 +#define KEY_link 125 +#define KEY_listen 126 +#define KEY_local 127 +#define KEY_localtime 128 +#define KEY_lock 129 +#define KEY_log 130 +#define KEY_lstat 131 +#define KEY_lt 132 +#define KEY_m 133 +#define KEY_map 134 +#define KEY_method 135 +#define KEY_mkdir 136 +#define KEY_msgctl 137 +#define KEY_msgget 138 +#define KEY_msgrcv 139 +#define KEY_msgsnd 140 +#define KEY_my 141 +#define KEY_ne 142 +#define KEY_next 143 +#define KEY_no 144 +#define KEY_not 145 +#define KEY_oct 146 +#define KEY_open 147 +#define KEY_opendir 148 +#define KEY_or 149 +#define KEY_ord 150 +#define KEY_our 151 +#define KEY_pack 152 +#define KEY_package 153 +#define KEY_pipe 154 +#define KEY_pop 155 +#define KEY_pos 156 +#define KEY_print 157 +#define KEY_printf 158 +#define KEY_prototype 159 +#define KEY_push 160 +#define KEY_q 161 +#define KEY_qq 162 +#define KEY_qr 163 +#define KEY_quotemeta 164 +#define KEY_qw 165 +#define KEY_qx 166 +#define KEY_rand 167 +#define KEY_read 168 +#define KEY_readdir 169 +#define KEY_readline 170 +#define KEY_readlink 171 +#define KEY_readpipe 172 +#define KEY_recv 173 +#define KEY_redo 174 +#define KEY_ref 175 +#define KEY_rename 176 +#define KEY_require 177 +#define KEY_reset 178 +#define KEY_return 179 +#define KEY_reverse 180 +#define KEY_rewinddir 181 +#define KEY_rindex 182 +#define KEY_rmdir 183 +#define KEY_s 184 +#define KEY_say 185 +#define KEY_scalar 186 +#define KEY_seek 187 +#define KEY_seekdir 188 +#define KEY_select 189 +#define KEY_semctl 190 +#define KEY_semget 191 +#define KEY_semop 192 +#define KEY_send 193 +#define KEY_setgrent 194 +#define KEY_sethostent 195 +#define KEY_setnetent 196 +#define KEY_setpgrp 197 +#define KEY_setpriority 198 +#define KEY_setprotoent 199 +#define KEY_setpwent 200 +#define KEY_setservent 201 +#define KEY_setsockopt 202 +#define KEY_shift 203 +#define KEY_shmctl 204 +#define KEY_shmget 205 +#define KEY_shmread 206 +#define KEY_shmwrite 207 +#define KEY_shutdown 208 +#define KEY_sin 209 +#define KEY_sleep 210 +#define KEY_socket 211 +#define KEY_socketpair 212 +#define KEY_sort 213 +#define KEY_splice 214 +#define KEY_split 215 +#define KEY_sprintf 216 +#define KEY_sqrt 217 +#define KEY_srand 218 +#define KEY_stat 219 +#define KEY_state 220 +#define KEY_study 221 +#define KEY_sub 222 +#define KEY_substr 223 +#define KEY_symlink 224 +#define KEY_syscall 225 +#define KEY_sysopen 226 +#define KEY_sysread 227 +#define KEY_sysseek 228 +#define KEY_system 229 +#define KEY_syswrite 230 +#define KEY_tell 231 +#define KEY_telldir 232 +#define KEY_tie 233 +#define KEY_tied 234 +#define KEY_time 235 +#define KEY_times 236 +#define KEY_tr 237 +#define KEY_try 238 +#define KEY_truncate 239 +#define KEY_uc 240 +#define KEY_ucfirst 241 +#define KEY_umask 242 +#define KEY_undef 243 +#define KEY_unless 244 +#define KEY_unlink 245 +#define KEY_unpack 246 +#define KEY_unshift 247 +#define KEY_untie 248 +#define KEY_until 249 +#define KEY_use 250 +#define KEY_utime 251 +#define KEY_values 252 +#define KEY_vec 253 +#define KEY_wait 254 +#define KEY_waitpid 255 +#define KEY_wantarray 256 +#define KEY_warn 257 +#define KEY_when 258 +#define KEY_while 259 +#define KEY_write 260 +#define KEY_x 261 +#define KEY_xor 262 +#define KEY_y 263 /* Generated from: - * b680fb3a27b173b65d9c4e534ad92897c925e336476879a6be1da18ac55cbe8b regen/keywords.pl + * eb67e851da14ede1aad67aec4a387fa250c1345407fad0a02988d2d8d3cc27f2 regen/keywords.pl * ex: set ro: */ diff --git a/gnu/usr.bin/perl/l1_char_class_tab.h b/gnu/usr.bin/perl/l1_char_class_tab.h index ce668f04411..01d77639171 100644 --- a/gnu/usr.bin/perl/l1_char_class_tab.h +++ b/gnu/usr.bin/perl/l1_char_class_tab.h @@ -1,4 +1,4 @@ -/* -*- buffer-read-only: t -*- +/* -*- mode: C; buffer-read-only: t -*- * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by regen/mk_PL_charclass.pl from Unicode::UCD. * Any changes made here will be lost! @@ -8,262 +8,262 @@ * in the comment*/ #if 'A' == 65 /* ASCII/Latin1 */ -/* U+00 NUL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+01 SOH */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+02 STX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+03 ETX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+04 EOT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+05 ENQ */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+06 ACK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+07 BEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+08 BS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+09 HT */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE), -/* U+0A LF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE), -/* U+0B VT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE), -/* U+0C FF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE), -/* U+0D CR */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE), -/* U+0E SO */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+0F SI */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+10 DLE */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+11 DC1 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+12 DC2 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+13 DC3 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+14 DC4 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+15 NAK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+16 SYN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+17 ETB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+18 CAN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+19 EOM */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+1B ESC */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+1C FS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+1D GS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+1E RS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+1F US */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE), -/* U+21 '!' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+22 '"' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+23 '#' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+24 '$' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+25 '%' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+26 '&' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+27 "'" */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+28 '(' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+29 ')' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+2A '*' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+2B '+' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+2C ',' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+2D '-' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+2E '.' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+2F '/' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+30 '0' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+31 '1' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+32 '2' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+33 '3' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+34 '4' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+35 '5' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+36 '6' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+37 '7' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+38 '8' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+39 '9' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+3A ':' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+3B ';' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+3C '<' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+3D '=' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+3E '>' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+3F '?' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+40 '@' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+41 'A' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+42 'B' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+43 'C' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+44 'D' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+45 'E' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+46 'F' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+47 'G' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+48 'H' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+49 'I' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+4A 'J' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+4B 'K' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+4C 'L' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+4D 'M' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+4E 'N' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+4F 'O' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+50 'P' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+51 'Q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+52 'R' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+53 'S' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+54 'T' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+55 'U' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+56 'V' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+57 'W' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+58 'X' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+59 'Y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+5A 'Z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+5B '[' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+5C '\' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+5D ']' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+5E '^' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+5F '_' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_WORDCHAR), -/* U+60 '`' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+61 'a' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+62 'b' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+63 'c' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+64 'd' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+65 'e' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+66 'f' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* U+67 'g' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+68 'h' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+69 'i' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+6A 'j' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+6B 'k' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+6C 'l' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+6D 'm' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+6E 'n' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+6F 'o' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+70 'p' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+71 'q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+72 'r' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+73 's' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+74 't' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+75 'u' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+76 'v' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+77 'w' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+78 'x' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+79 'y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+7A 'z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+7B '{' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+7C '|' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+7D '}' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+7E '~' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+7F DEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+80 PAD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+81 HOP */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+82 BPH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+83 NBH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+84 IND */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+85 NEL */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE), -/* U+86 SSA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+87 ESA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+88 HTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+89 HTJ */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+8A VTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+8B PLD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+8C PLU */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+8D RI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+8E SS2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+8F SS3 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+90 DCS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+91 PU1 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+92 PU2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+93 STS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+94 CCH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+95 MW */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+96 SPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+97 EPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+98 SOS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+99 SGC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+9A SCI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+9B CSI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+9C ST */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+9D OSC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE), -/* U+A1 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+A2 CENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+A3 POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+A4 CURRENCY */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+A5 YEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+A6 BROKEN BAR */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+A7 SECTION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+A8 DIAERESIS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+A9 COPYRIGHT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+AA FEMININE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+AB LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+AC NOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+AD SOFT HYPHEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+AE REGISTERED */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+AF MACRON */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+B0 DEGREE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+B1 PLUS-MINUS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+B2 SUPERSCRIPT 2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+B3 SUPERSCRIPT 3 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+B4 ACUTE ACCENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+B5 MICRO */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+B6 PILCROW */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+B7 MIDDLE DOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT), -/* U+B8 CEDILLA */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+B9 SUPERSCRIPT 1 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+BA MASCULINE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+BB RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+BC 1/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+BD 1/2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+BE 3/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* U+BF INVERTED '?' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+C0 A with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C1 A with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C2 A with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C3 A with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C4 A with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C5 A with RING */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C6 AE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C7 C with CEDILLA */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C8 E with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+C9 E with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+CA E with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+CB E with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+CC I with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+CD I with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+CE I with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+CF I with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D0 ETH */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D1 N with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D2 O with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D3 O with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D4 O with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D5 O with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D6 O with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D7 MULTIPLICATION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+D8 O with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+D9 U with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+DA U with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+DB U with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+DC U with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+DD Y with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+DE THORN */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* U+DF sharp s */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E0 a with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E1 a with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E2 a with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E3 a with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E4 a with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E5 a with ring */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E6 ae */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E7 c with cedilla */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E8 e with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+E9 e with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+EA e with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+EB e with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+EC i with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+ED i with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+EE i with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+EF i with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F0 eth */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F1 n with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F2 o with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F3 o with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F4 o with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F5 o with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F6 o with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F7 DIVISION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* U+F8 o with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+F9 u with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+FA u with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+FB u with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+FC u with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+FD y with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+FE thorn */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* U+FF y with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR) +/* U+00 NUL */ (1U<' */ (1U<' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x6F U+3F '?' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x70 U+F8 I8=BC o with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x71 U+C9 I8=BD E with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x72 U+CA I8=BE E with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x73 U+CB I8=BF E with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x74 U+C8 I8=C0 E with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x75 U+CD I8=C1 I with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x76 U+CE I8=C2 I with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x77 U+CF I8=C3 I with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x78 U+CC I8=C4 I with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x79 U+60 '`' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7A U+3A ':' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7B U+23 '#' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7C U+40 '@' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7D U+27 "'" */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7E U+3D '=' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7F U+22 '"' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x80 U+D8 I8=C5 O with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x81 U+61 'a' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x82 U+62 'b' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x83 U+63 'c' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x84 U+64 'd' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x85 U+65 'e' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x86 U+66 'f' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x87 U+67 'g' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x88 U+68 'h' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x89 U+69 'i' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8A U+AB I8=C6 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x8B U+BB I8=C7 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x8C U+F0 I8=C8 eth */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8D U+FD I8=C9 y with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8E U+FE I8=CA thorn */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8F U+B1 I8=CB PLUS-MINUS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0x90 U+B0 I8=CC DEGREE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0x91 U+6A 'j' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x92 U+6B 'k' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x93 U+6C 'l' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x94 U+6D 'm' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x95 U+6E 'n' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x96 U+6F 'o' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x97 U+70 'p' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x98 U+71 'q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x99 U+72 'r' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9A U+AA I8=CD FEMININE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9B U+BA I8=CE MASCULINE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9C U+E6 I8=CF ae */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9D U+B8 I8=D0 CEDILLA */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0x9E U+C6 I8=D1 AE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x9F U+A4 I8=D2 CURRENCY */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xA0 U+B5 I8=D3 MICRO */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA1 U+7E '~' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xA2 U+73 's' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA3 U+74 't' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA4 U+75 'u' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA5 U+76 'v' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA6 U+77 'w' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA7 U+78 'x' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA8 U+79 'y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA9 U+7A 'z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xAA U+A1 I8=D4 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xAB U+BF I8=D5 INVERTED '?' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xAC U+D0 I8=D6 ETH */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xAD U+5B '[' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xAE U+DE I8=D7 THORN */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xAF U+AE I8=D8 REGISTERED */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB0 U+AC I8=D9 NOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB1 U+A3 I8=DA POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB2 U+A5 I8=DB YEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB3 U+B7 I8=DC MIDDLE DOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT), -/* 0xB4 U+A9 I8=DD COPYRIGHT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB5 U+A7 I8=DE SECTION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+B6 I8=DF PILCROW */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xB7 U+BC I8=E0 1/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xB8 U+BD I8=E1 1/2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xB9 U+BE I8=E2 3/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBA U+DD I8=E3 Y with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xBB U+A8 I8=E4 DIAERESIS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBC U+AF I8=E5 MACRON */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBD U+5D ']' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xC0 U+7B '{' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xC1 U+41 'A' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC2 U+42 'B' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC3 U+43 'C' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC4 U+44 'D' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC5 U+45 'E' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC6 U+46 'F' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC7 U+47 'G' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xC8 U+48 'H' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xC9 U+49 'I' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCD U+F2 I8=EB o with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCE U+F3 I8=EC o with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCF U+F5 I8=ED o with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xD0 U+7D '}' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xD1 U+4A 'J' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD2 U+4B 'K' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD3 U+4C 'L' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD4 U+4D 'M' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD5 U+4E 'N' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD6 U+4F 'O' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD7 U+50 'P' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD8 U+51 'Q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD9 U+52 'R' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xDB U+FB I8=EF u with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDD U+F9 I8=F1 u with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDE U+FA I8=F2 u with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xE0 U+5C '\' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xE2 U+53 'S' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE3 U+54 'T' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE4 U+55 'U' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE5 U+56 'V' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE6 U+57 'W' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE7 U+58 'X' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE8 U+59 'Y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE9 U+5A 'Z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEF U+D5 I8=FA O with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xF0 U+30 '0' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF1 U+31 '1' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF2 U+32 '2' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF3 U+33 '3' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF4 U+34 '4' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF5 U+35 '5' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF6 U+36 '6' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF7 U+37 '7' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF8 U+38 '8' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF9 U+39 '9' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xFB U+DB I8=FC U with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFF U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA) +/* U+00 NUL */ (1U<' */ (1U<' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x6F U+3F '?' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x70 U+F8 I8=BD o with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x71 U+C9 I8=BE E with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x72 U+CA I8=BF E with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x73 U+CB I8=C0 E with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x74 U+C8 I8=C1 E with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x75 U+CD I8=C2 I with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x76 U+CE I8=C3 I with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x77 U+CF I8=C4 I with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x78 U+CC I8=C5 I with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x79 U+60 '`' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7A U+3A ':' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7B U+23 '#' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7C U+40 '@' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7D U+27 "'" */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7E U+3D '=' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x7F U+22 '"' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x80 U+D8 I8=C6 O with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x81 U+61 'a' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x82 U+62 'b' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x83 U+63 'c' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x84 U+64 'd' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x85 U+65 'e' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x86 U+66 'f' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0x87 U+67 'g' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x88 U+68 'h' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x89 U+69 'i' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8A U+AB I8=C7 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x8B U+BB I8=C8 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0x8C U+F0 I8=C9 eth */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8D U+FD I8=CA y with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8E U+FE I8=CB thorn */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x8F U+B1 I8=CC PLUS-MINUS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0x90 U+B0 I8=CD DEGREE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0x91 U+6A 'j' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x92 U+6B 'k' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x93 U+6C 'l' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x94 U+6D 'm' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x95 U+6E 'n' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x96 U+6F 'o' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x97 U+70 'p' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x98 U+71 'q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x99 U+72 'r' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9A U+AA I8=CE FEMININE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9B U+BA I8=CF MASCULINE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9C U+E6 I8=D0 ae */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0x9D U+B8 I8=D1 CEDILLA */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0x9E U+C6 I8=D2 AE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0x9F U+A4 I8=D3 CURRENCY */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xA0 U+B5 I8=D4 MICRO */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA1 U+7E '~' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xA2 U+73 's' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA3 U+74 't' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA4 U+75 'u' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA5 U+76 'v' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA6 U+77 'w' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA7 U+78 'x' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA8 U+79 'y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xA9 U+7A 'z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xAA U+A1 I8=D5 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xAB U+BF I8=D6 INVERTED '?' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xAC U+D0 I8=D7 ETH */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xAD U+DD I8=D8 Y with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xAE U+DE I8=D9 THORN */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xAF U+AE I8=DA REGISTERED */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB0 U+5E '^' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xB1 U+A3 I8=DB POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB2 U+A5 I8=DC YEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB3 U+B7 I8=DD MIDDLE DOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT), -/* 0xB4 U+A9 I8=DE COPYRIGHT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xB5 U+A7 I8=DF SECTION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* U+B6 I8=E0 PILCROW */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xB7 U+BC I8=E1 1/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xB8 U+BD I8=E2 1/2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xB9 U+BE I8=E3 3/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBA U+5B '[' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xBB U+5D ']' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xBC U+AF I8=E4 MACRON */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBD U+A8 I8=E5 DIAERESIS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xC0 U+7B '{' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xC1 U+41 'A' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC2 U+42 'B' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC3 U+43 'C' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC4 U+44 'D' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC5 U+45 'E' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC6 U+46 'F' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xC7 U+47 'G' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xC8 U+48 'H' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xC9 U+49 'I' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCD U+F2 I8=EB o with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCE U+F3 I8=EC o with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xCF U+F5 I8=ED o with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xD0 U+7D '}' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xD1 U+4A 'J' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD2 U+4B 'K' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD3 U+4C 'L' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD4 U+4D 'M' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD5 U+4E 'N' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD6 U+4F 'O' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD7 U+50 'P' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD8 U+51 'Q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xD9 U+52 'R' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xDB U+FB I8=EF u with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDD U+F9 I8=F1 u with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDE U+FA I8=F2 u with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR), -/* 0xE0 U+5C '\' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), -/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), -/* 0xE2 U+53 'S' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE3 U+54 'T' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE4 U+55 'U' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE5 U+56 'V' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE6 U+57 'W' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE7 U+58 'X' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE8 U+59 'Y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xE9 U+5A 'Z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xEF U+D5 I8=FA O with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xF0 U+30 '0' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF1 U+31 '1' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF2 U+32 '2' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF3 U+33 '3' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF4 U+34 '4' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF5 U+35 '5' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF6 U+36 '6' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF7 U+37 '7' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF8 U+38 '8' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xF9 U+39 '9' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT), -/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT), -/* 0xFB U+DB I8=FC U with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR), -/* 0xFF U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA) +/* U+00 NUL */ (1U<' */ (1U< 1} qw( __FILE__ __LINE__ __PACKAGE__ + ADJUST AUTOLOAD BEGIN CHECK @@ -363,10 +364,12 @@ my %not_tested = map { $_ => 1} qw( INIT UNITCHECK catch + class default defer else elsif + field finally for foreach @@ -374,6 +377,7 @@ my %not_tested = map { $_ => 1} qw( given if m + method no package q diff --git a/gnu/usr.bin/perl/lib/B/Deparse.pm b/gnu/usr.bin/perl/lib/B/Deparse.pm index 7c2ecf992c0..90a36752bd7 100644 --- a/gnu/usr.bin/perl/lib/B/Deparse.pm +++ b/gnu/usr.bin/perl/lib/B/Deparse.pm @@ -7,14 +7,14 @@ # This is based on the module of the same name by Malcolm Beattie, # but essentially none of his code remains. -package B::Deparse; +package B::Deparse 1.74; use strict; use Carp; use B qw(class main_root main_start main_cv svref_2object opnumber perlstring OPf_WANT OPf_WANT_VOID OPf_WANT_SCALAR OPf_WANT_LIST OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL OPf_MOD OPf_PARENS OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpKVSLICE - OPpCONST_BARE + OPpCONST_BARE OPpEMPTYAVHV_IS_HV OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER OPpREPEAT_DOLIST OPpSORT_REVERSE OPpMULTIDEREF_EXISTS OPpMULTIDEREF_DELETE @@ -23,12 +23,13 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring OPpCONCAT_NESTED OPpMULTICONCAT_APPEND OPpMULTICONCAT_STRINGIFY OPpMULTICONCAT_FAKE OPpTRUEBOOL OPpINDEX_BOOLNEG OPpDEFER_FINALLY - SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG - SVs_PADTMP SVpad_TYPED - CVf_METHOD CVf_LVALUE + OPpARG_IF_UNDEF OPpARG_IF_FALSE + SVf_IOK SVf_NOK SVf_ROK SVf_POK SVf_FAKE SVs_RMG SVs_SMG + SVs_PADTMP + CVf_NOWARN_AMBIGUOUS CVf_LVALUE PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED PMf_EXTENDED_MORE - PADNAMEt_OUTER + PADNAMEf_OUTER PADNAMEf_OUR PADNAMEf_TYPED MDEREF_reload MDEREF_AV_pop_rv2av_aelem MDEREF_AV_gvsv_vivify_rv2av_aelem @@ -53,7 +54,6 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring MDEREF_SHIFT ); -our $VERSION = '1.64'; our $AUTOLOAD; use warnings (); require feature; @@ -450,7 +450,7 @@ sub next_todo { my $flags = $name->FLAGS; my $category = !$cv || $seq <= $name->COP_SEQ_RANGE_LOW - ? $self->keyword($flags & SVpad_OUR + ? $self->keyword($flags & PADNAMEf_OUR ? "our" : $flags & SVpad_STATE ? "state" @@ -1121,8 +1121,8 @@ sub pad_subs { if (defined $name && $name =~ /^&./) { my $low = $_->COP_SEQ_RANGE_LOW; my $flags = $_->FLAGS; - my $outer = $flags & PADNAMEt_OUTER; - if ($flags & SVpad_OUR) { + my $outer = $flags & PADNAMEf_OUTER; + if ($flags & PADNAMEf_OUR) { push @todo, [$low, undef, 0, $_] # [seq, no cv, not format, padname] unless $outer; @@ -1135,7 +1135,7 @@ sub pad_subs { my $flags = $flags; my $cv = $cv; my $name = $_; - while ($flags & PADNAMEt_OUTER && class ($protocv) ne 'CV') + while ($flags & PADNAMEf_OUTER && class ($protocv) ne 'CV') { $cv = $cv->OUTSIDE; next PADENTRY if class($cv) eq 'SPECIAL'; # XXX freed? @@ -1152,7 +1152,7 @@ sub pad_subs { my $other = $protocv->PADLIST; $$other && $other->outid == $padlist->id; }; - if ($flags & PADNAMEt_OUTER) { + if ($flags & PADNAMEf_OUTER) { next unless $defined_in_this_sub; push @todo, [$protocv->OUTSIDE_SEQ, $protocv, 0, $_]; next; @@ -1262,7 +1262,10 @@ sub deparse_argops { return unless $$kid and $kid->name eq 'argdefelem'; my $def = $self->deparse($kid->first, 7); $def = "($def)" if $kid->first->flags & OPf_PARENS; - $var .= " = $def"; + my $assign = "="; + $assign = "//=" if $kid->private & OPpARG_IF_UNDEF; + $assign = "||=" if $kid->private & OPpARG_IF_FALSE; + $var .= " $assign $def"; } push @sig, $var; } @@ -1313,7 +1316,7 @@ Carp::confess("NULL in deparse_sub") if !defined($cv) || $cv->isa("B::NULL"); Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL"); local $self->{'curcop'} = $self->{'curcop'}; - my $has_sig = $self->{hinthash}{feature_signatures}; + my $has_sig = $self->feature_enabled('signatures'); if ($cv->FLAGS & SVf_POK) { my $myproto = $cv->PV; if ($has_sig) { @@ -1323,9 +1326,9 @@ Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL"); $proto = $myproto; } } - if ($cv->CvFLAGS & (CVf_METHOD|CVf_LOCKED|CVf_LVALUE|CVf_ANONCONST)) { + if ($cv->CvFLAGS & (CVf_NOWARN_AMBIGUOUS|CVf_LOCKED|CVf_LVALUE|CVf_ANONCONST)) { push @attrs, "lvalue" if $cv->CvFLAGS & CVf_LVALUE; - push @attrs, "method" if $cv->CvFLAGS & CVf_METHOD; + push @attrs, "method" if $cv->CvFLAGS & CVf_NOWARN_AMBIGUOUS; push @attrs, "const" if $cv->CvFLAGS & CVf_ANONCONST; } @@ -1551,7 +1554,7 @@ sub maybe_parens_func { if ($prec <= $cx or substr($text, 0, 1) eq "(" or $self->{'parens'}) { return "$func($text)"; } else { - return "$func $text"; + return $func . (length($text) ? " $text" : ""); } } @@ -1561,7 +1564,7 @@ sub find_our_type { my $seq = $self->{'curcop'} ? $self->{'curcop'}->cop_seq : 0; for my $a (@{$self->{'curcvlex'}{"o$name"}}) { my ($st, undef, $padname) = @$a; - if ($st >= $seq && $padname->FLAGS & SVpad_TYPED) { + if ($st >= $seq && $padname->FLAGS & PADNAMEf_TYPED) { return $padname->SvSTASH->NAME; } } @@ -1647,7 +1650,7 @@ sub maybe_my { # because enteriter ops do not carry the flag. my $my = $self->keyword($padname->FLAGS & SVpad_STATE ? "state" : "my"); - if ($padname->FLAGS & SVpad_TYPED) { + if ($padname->FLAGS & PADNAMEf_TYPED) { $my .= ' ' . $padname->SvSTASH->NAME; } if ($need_parens) { @@ -1987,7 +1990,7 @@ sub populate_curcvlex { : ($ns[$i]->COP_SEQ_RANGE_LOW, $ns[$i]->COP_SEQ_RANGE_HIGH); push @{$self->{'curcvlex'}{ - ($ns[$i]->FLAGS & SVpad_OUR ? 'o' : 'm') . $name + ($ns[$i]->FLAGS & PADNAMEf_OUR ? 'o' : 'm') . $name }}, [$seq_st, $seq_en, $ns[$i]]; } } @@ -2331,6 +2334,7 @@ my %feature_keywords = ( catch => 'try', finally => 'try', defer => 'defer', + signatures => 'signatures', ); # keywords that are strong and also have a prototype @@ -2514,7 +2518,21 @@ sub pp_chomp { maybe_targmy(@_, \&unop, "chomp") } sub pp_schop { maybe_targmy(@_, \&unop, "chop") } sub pp_schomp { maybe_targmy(@_, \&unop, "chomp") } sub pp_defined { unop(@_, "defined") } -sub pp_undef { unop(@_, "undef") } +sub pp_undef { + if ($_[1]->private & OPpTARGET_MY) { + my $targ = $_[1]->targ; + my $var = $_[0]->maybe_my($_[1], $_[2], $_[0]->padname($targ), + $_[0]->padname_sv($targ), + 1); + my $func = unop(@_, "undef"); + if ($func =~ /\s/) { + return unop(@_, "undef").$var; + } else { + return "$var = undef"; + } + } + unop(@_, "undef") +} sub pp_study { unop(@_, "study") } sub pp_ref { unop(@_, "ref") } sub pp_pos { maybe_local(@_, unop(@_, "pos")) } @@ -2772,19 +2790,40 @@ sub pp_anonlist { *pp_anonhash = \&pp_anonlist; +sub pp_emptyavhv { + my $self = shift; + my ($op, $cx, $forbid_parens) = @_; + my $val = ($op->private & OPpEMPTYAVHV_IS_HV) ? '{}' : '[]'; + if ($op->private & OPpTARGET_MY) { + my $targ = $op->targ; + my $var = $self->maybe_my($op, $cx, $self->padname($targ), + $self->padname_sv($targ), + $forbid_parens); + return $self->maybe_parens("$var = $val", $cx, 7); + } else { + return $val; + } +} + sub pp_refgen { my $self = shift; my($op, $cx) = @_; my $kid = $op->first; if ($kid->name eq "null") { my $anoncode = $kid = $kid->first; + + # Perl no longer generates this, but XS modules might: if ($anoncode->name eq "anonconst") { $anoncode = $anoncode->first->first->sibling; } + + # Same as with `anonconst`: if ($anoncode->name eq "anoncode" or !null($anoncode = $kid->sibling) and $anoncode->name eq "anoncode") { return $self->e_anoncode({ code => $self->padval($anoncode->targ) }); + + # Perl still generates this: } elsif ($kid->name eq "pushmark") { my $sib_name = $kid->sibling->name; if ($sib_name eq 'entersub') { @@ -2806,6 +2845,18 @@ sub e_anoncode { return $self->keyword("sub") . " $text"; } +sub pp_anoncode { + my ($self, $anoncode) = @_; + + return $self->e_anoncode( { code => $self->padval($anoncode->targ) } ); +} + +sub pp_anonconst { + my ($self, $anonconst) = @_; + + return $self->pp_anoncode( $anonconst->first->first->sibling ); +} + sub pp_srefgen { pp_refgen(@_) } sub pp_readline { @@ -3093,6 +3144,18 @@ sub pp_isa { binop(@_, "isa", 15) } sub pp_sassign { binop(@_, "=", 7, SWAP_CHILDREN) } sub pp_aassign { binop(@_, "=", 7, SWAP_CHILDREN | LIST_CONTEXT) } +sub pp_padsv_store { + my $self = shift; + my ($op, $cx, $forbid_parens, @args) = @_; + my $targ = $op->targ; + my $var = $self->maybe_my($op, $cx, $self->padname($targ), + $self->padname_sv($targ), + $forbid_parens); + + my $val = $self->deparse($op->first, 7); + return $self->maybe_parens("$var = $val", $cx, 7); +} + sub pp_smartmatch { my ($self, $op, $cx) = @_; if (($op->flags & OPf_SPECIAL) && $self->{expand} < 2) { @@ -3694,7 +3757,7 @@ sub maybe_var_attr { return unless $loppriv & OPpLVAL_INTRO; my $padname = $self->padname_sv($lop->targ); - my $thisclass = ($padname->FLAGS & SVpad_TYPED) + my $thisclass = ($padname->FLAGS & PADNAMEf_TYPED) ? $padname->SvSTASH->NAME : 'main'; # all pad vars must be in the same class @@ -3813,9 +3876,12 @@ sub pp_list { $local = "my"; } my $padname = $self->padname_sv($lop->targ); - if ($padname->FLAGS & SVpad_TYPED) { + if ($padname->FLAGS & PADNAMEf_TYPED) { $newtype = $padname->SvSTASH->NAME; } + } elsif ($lopname eq 'padsv_store') { + # don't interpret as my (list) if it has an implicit assign + $local = ""; } elsif ($lopname =~ /^(?:gv|rv2)([ash])v$/ && $loppriv & OPpOUR_INTRO or $lopname eq "null" && class($lop) eq 'UNOP' @@ -4280,6 +4346,17 @@ sub pp_gv { return $self->maybe_qualify("", $self->gv_name($gv)); } +sub pp_aelemfastlex_store { + my $self = shift; + my($op, $cx) = @_; + my $name = $self->padname($op->targ); + $name =~ s/^@/\$/; + my $i = $op->private; + $i -= 256 if $i > 127; + my $val = $self->deparse($op->first, 7); + return $self->maybe_parens("${name}[$i] = $val", $cx, 7); +} + sub pp_aelemfast_lex { my $self = shift; my($op, $cx) = @_; @@ -4977,78 +5054,92 @@ sub e_method { sub check_proto { my $self = shift; return "&" if $self->{'noproto'}; - my($proto, @args) = @_; - my($arg, $real); + my ($proto, @args) = @_; my $doneok = 0; my @reals; - # An unbackslashed @ or % gobbles up the rest of the args - 1 while $proto =~ s/(?deparse($_, 6), @args); @args = (); + $proto = ''; + } elsif (!@args) { + last if $doneok; + return "&"; # too few args and no ';' } else { - $arg = shift @args; - last unless $arg; - if ($chr eq "\$" || $chr eq "_") { + my $arg = shift @args; + if ($chr eq '$' || $chr eq '_') { if (want_scalar $arg) { push @reals, $self->deparse($arg, 6); } else { return "&"; } } elsif ($chr eq "&") { - if ($arg->name =~ /^(s?refgen|undef)$/) { + if ($arg->name =~ /^(?:s?refgen|undef)\z/) { push @reals, $self->deparse($arg, 6); } else { return "&"; } } elsif ($chr eq "*") { - if ($arg->name =~ /^s?refgen$/ + if ($arg->name =~ /^s?refgen\z/ and $arg->first->first->name eq "rv2gv") - { - $real = $arg->first->first; # skip refgen, null - if ($real->first->name eq "gv") { - push @reals, $self->deparse($real, 6); - } else { - push @reals, $self->deparse($real->first, 6); - } - } else { - return "&"; - } + { + my $real = $arg->first->first; # skip refgen, null + if ($real->first->name eq "gv") { + push @reals, $self->deparse($real, 6); + } else { + push @reals, $self->deparse($real->first, 6); + } + } else { + return "&"; + } + } elsif ($chr eq "+") { + my $real; + if ($arg->name =~ /^s?refgen\z/ and + !null($real = $arg->first) and + !null($real->first) and + $real->first->name =~ /^(?:rv2|pad)[ah]v\z/) + { + push @reals, $self->deparse($real, 6); + } elsif (want_scalar $arg) { + push @reals, $self->deparse($arg, 6); + } else { + return "&"; + } } elsif (substr($chr, 0, 1) eq "\\") { $chr =~ tr/\\[]//d; - if ($arg->name =~ /^s?refgen$/ and + my $real; + if ($arg->name =~ /^s?refgen\z/ and !null($real = $arg->first) and ($chr =~ /\$/ && is_scalar($real->first) or ($chr =~ /@/ - && class($real->first->sibling) ne 'NULL' - && $real->first->sibling->name - =~ /^(rv2|pad)av$/) + && !null($real->first) + && $real->first->name =~ /^(?:rv2|pad)av\z/) or ($chr =~ /%/ - && class($real->first->sibling) ne 'NULL' - && $real->first->sibling->name - =~ /^(rv2|pad)hv$/) + && !null($real->first) + && $real->first->name =~ /^(?:rv2|pad)hv\z/) #or ($chr =~ /&/ # This doesn't work # && $real->first->name eq "rv2cv") or ($chr =~ /\*/ && $real->first->name eq "rv2gv"))) - { - push @reals, $self->deparse($real, 6); - } else { - return "&"; - } - } - } + { + push @reals, $self->deparse($real, 6); + } else { + return "&"; + } + } else { + # should not happen + return "&"; + } + } } - return "&" if $proto and !$doneok; # too few args and no ';' - return "&" if @args; # too many args + return "&" if @args; # too many args return ("", join ", ", @reals); } @@ -5093,7 +5184,7 @@ sub retscalar { |msgrcv|semop|semget|semctl|hintseval|shostent|snetent |sprotoent|sservent|ehostent|enetent|eprotoent|eservent |spwent|epwent|sgrent|egrent|getlogin|syscall|lock|runcv - |fc)\z/x + |fc|padsv_store)\z/x } sub pp_entersub { @@ -5104,9 +5195,7 @@ sub pp_entersub { my $prefix = ""; my $amper = ""; my($kid, @exprs); - if ($op->flags & OPf_SPECIAL && !($op->flags & OPf_MOD)) { - $prefix = "do "; - } elsif ($op->private & OPpENTERSUB_AMPER) { + if ($op->private & OPpENTERSUB_AMPER) { $amper = "&"; } $kid = $op->first; @@ -5230,19 +5319,23 @@ sub pp_entersub { # it back. $kid =~ s/^CORE::GLOBAL:://; - my $dproto = defined($proto) ? $proto : "undefined"; - my $scalar_proto = $dproto =~ /^;*(?:[\$*_+]|\\.|\\\[[^]]\])\z/; if (!$declared) { return "$kid(" . $args . ")"; - } elsif ($dproto =~ /^\s*\z/) { + } + + my $dproto = defined($proto) ? $proto : "undefined"; + if ($dproto =~ /^\s*\z/) { return $kid; - } elsif ($scalar_proto and is_scalar($exprs[0])) { + } + + my $scalar_proto = $dproto =~ /^ \s* (?: ;\s* )* (?: [\$*_+] |\\ \s* (?: [\$\@%&*] | \[ [^\]]+ \] ) ) \s* \z/x; + if ($scalar_proto and !@exprs || is_scalar($exprs[0])) { # is_scalar is an excessively conservative test here: # really, we should be comparing to the precedence of the # top operator of $exprs[0] (ala unop()), but that would # take some major code restructuring to do right. return $self->maybe_parens_func($kid, $args, $cx, 16); - } elsif (not $scalar_proto and defined($proto) || $simple) { #' + } elsif (not $scalar_proto and defined($proto) || $simple) { return $self->maybe_parens_func($kid, $args, $cx, 5); } else { return "$kid(" . $args . ")"; @@ -6317,9 +6410,7 @@ sub matchop { ->sibling # entersub ->first # ex-list ->first # pushmark - ->sibling # srefgen - ->first # ex-list - ->first # anoncode + ->sibling # anoncode ->targ ) : undef); @@ -6660,15 +6751,16 @@ sub builtin1 { return "builtin::$name($arg)"; } -sub pp_is_bool { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "is_bool"); } -sub pp_is_weak { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "is_weak"); } -sub pp_weaken { builtin1(@_, "weaken"); } -sub pp_unweaken { builtin1(@_, "unweaken"); } -sub pp_blessed { builtin1(@_, "blessed"); } -sub pp_refaddr { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "refaddr"); } -sub pp_reftype { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "reftype"); } -sub pp_ceil { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "ceil"); } -sub pp_floor { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "floor"); } +sub pp_is_bool { builtin1(@_, "is_bool"); } +sub pp_is_weak { builtin1(@_, "is_weak"); } +sub pp_weaken { builtin1(@_, "weaken"); } +sub pp_unweaken { builtin1(@_, "unweaken"); } +sub pp_blessed { builtin1(@_, "blessed"); } +sub pp_refaddr { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "refaddr"); } +sub pp_reftype { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "reftype"); } +sub pp_ceil { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "ceil"); } +sub pp_floor { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "floor"); } +sub pp_is_tainted { builtin1(@_, "is_tainted"); } 1; __END__ diff --git a/gnu/usr.bin/perl/lib/B/Deparse.t b/gnu/usr.bin/perl/lib/B/Deparse.t index e7a76c81fee..75dd96b7f17 100644 --- a/gnu/usr.bin/perl/lib/B/Deparse.t +++ b/gnu/usr.bin/perl/lib/B/Deparse.t @@ -307,14 +307,19 @@ x(); z() . EOCODH -is runperl(stderr => 1, switches => [ '-MO=-qq,Deparse', $path, '-T' ], +SKIP: { + skip("Your perl was built without taint support", 1) + unless $Config::Config{taint_support}; + + is runperl(stderr => 1, switches => [ '-MO=-qq,Deparse', $path, '-T' ], prog => "format =\n\@\n\$;\n.\n"), - <<'EOCODM', '$; on format line'; -format STDOUT = -@ -$; -. -EOCODM + <<~'EOCODM', '$; on format line'; + format STDOUT = + @ + $; + . + EOCODM +} is runperl(stderr => 1, switches => [ '-MO=-qq,Deparse,-l', $path ], prog => "format =\n\@\n\$foo\n.\n"), @@ -537,10 +542,14 @@ is runperl(stderr => 1, switches => [ '-MO=-qq,Deparse', $path ], "sub BEGIN {\n \$main::{'f'} = \\!0;\n}\n", '&PL_sv_yes constant (used to croak)'; -is runperl(stderr => 1, switches => [ '-MO=-qq,Deparse', $path, '-T' ], +SKIP: { + skip("Your perl was built without taint support", 1) + unless $Config::Config{taint_support}; + is runperl(stderr => 1, switches => [ '-MO=-qq,Deparse', $path, '-T' ], prog => '$x =~ (1?/$a/:0)'), - '$x =~ ($_ =~ /$a/);'."\n", - '$foo =~ under taint mode'; + '$x =~ ($_ =~ /$a/);'."\n", + '$foo =~ under taint mode'; +} unlike runperl(stderr => 1, switches => [ '-MO=-qq,Deparse', $path, '-w' ], prog => 'BEGIN { undef &foo }'), @@ -877,6 +886,13 @@ my $f = sub { +{[]}; } ; #### +# anonconst +# CONTEXT no warnings 'experimental::const_attr'; +my $f = sub : const { + 123; +} +; +#### # bug #43010 '!@$%'->(); #### @@ -1054,7 +1070,7 @@ my $c = []; my $d = \[]; #### # SKIP ?$] < 5.010 && "smartmatch and given/when not implemented on this Perl version" -# CONTEXT use feature ':5.10'; no warnings 'experimental::smartmatch'; +# CONTEXT use feature ':5.10'; no warnings 'deprecated'; # implicit smartmatch in given/when given ('foo') { when ('bar') { continue; } @@ -1617,7 +1633,7 @@ my @a; $a[0] = 1; #### # feature features without feature -# CONTEXT no warnings 'experimental::smartmatch'; +# CONTEXT no warnings 'deprecated'; CORE::state $x; CORE::say $x; CORE::given ($x) { @@ -1633,7 +1649,7 @@ CORE::evalbytes ''; () = CORE::fc $x; #### # feature features when feature has been disabled by use VERSION -# CONTEXT no warnings 'experimental::smartmatch'; +# CONTEXT no warnings 'deprecated'; use feature (sprintf(":%vd", $^V)); use 1; CORE::say $_; @@ -1663,7 +1679,7 @@ CORE::evalbytes ''; () = CORE::__SUB__; #### # (the above test with CONTEXT, and the output is equivalent but different) -# CONTEXT use feature ':5.10'; no warnings 'experimental::smartmatch'; +# CONTEXT use feature ':5.10'; no warnings 'deprecated'; # feature features when feature has been disabled by use VERSION use feature (sprintf(":%vd", $^V)); use 1; @@ -1697,7 +1713,7 @@ CORE::evalbytes ''; #### # SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version" # lexical subroutines and keywords of the same name -# CONTEXT use feature 'lexical_subs', 'switch'; no warnings 'experimental'; +# CONTEXT use feature 'lexical_subs', 'switch'; no warnings 'experimental'; no warnings 'deprecated'; my sub default; my sub else; my sub elsif; @@ -2101,7 +2117,6 @@ no warnings "experimental::lexical_subs"; my sub f {} print f(); >>>> -BEGIN {${^WARNING_BITS} = "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55\x55\x55\x55\x55"} my sub f { } @@ -2114,7 +2129,6 @@ no warnings 'experimental::lexical_subs'; state sub f {} print f(); >>>> -BEGIN {${^WARNING_BITS} = "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55\x55\x55\x55\x55"} state sub f { } @@ -2129,7 +2143,7 @@ print f(); { foo(); my sub b; - b ; + b; main::b(); &main::b; &main::b(); @@ -2145,7 +2159,7 @@ print f(); (); state sub sb2; sub sb2 { - sb2 ; + sb2; } #### # lexical subroutine with outer declaration and inner definition @@ -2231,6 +2245,14 @@ optoptwack($a = $b); wackbrack($a = $b); optwackbrack($a = $b); optoptwackbrack($a = $b); +optbar; +optoptbar; +optplus; +optoptplus; +optwack; +optoptwack; +optwackbrack; +optoptwackbrack; >>>> package prototest; dollar($a < $b); @@ -2242,15 +2264,91 @@ optoptdollar($a < $b); bar($a < $b); optbar($a < $b); optoptbar($a < $b); -&plus($a < $b); -&optplus($a < $b); -&optoptplus($a < $b); +plus($a < $b); +optplus($a < $b); +optoptplus($a < $b); &wack(\($a = $b)); &optwack(\($a = $b)); &optoptwack(\($a = $b)); &wackbrack(\($a = $b)); &optwackbrack(\($a = $b)); &optoptwackbrack(\($a = $b)); +optbar; +optoptbar; +optplus; +optoptplus; +optwack; +optoptwack; +optwackbrack; +optoptwackbrack; +#### +# enreferencing prototypes: @ +# CONTEXT sub wackat(\@) {} sub optwackat(;\@) {} sub wackbrackat(\[@]) {} sub optwackbrackat(;\[@]) {} +wackat(my @a0); +wackat(@a0); +wackat(@ARGV); +wackat(@{['t'];}); +optwackat; +optwackat(my @a1); +optwackat(@a1); +optwackat(@ARGV); +optwackat(@{['t'];}); +wackbrackat(my @a2); +wackbrackat(@a2); +wackbrackat(@ARGV); +wackbrackat(@{['t'];}); +optwackbrackat; +optwackbrackat(my @a3); +optwackbrackat(@a3); +optwackbrackat(@ARGV); +optwackbrackat(@{['t'];}); +#### +# enreferencing prototypes: % +# CONTEXT sub wackperc(\%) {} sub optwackperc(;\%) {} sub wackbrackperc(\[%]) {} sub optwackbrackperc(;\[%]) {} +wackperc(my %a0); +wackperc(%a0); +wackperc(%ARGV); +wackperc(%{+{'t', 1};}); +optwackperc; +optwackperc(my %a1); +optwackperc(%a1); +optwackperc(%ARGV); +optwackperc(%{+{'t', 1};}); +wackbrackperc(my %a2); +wackbrackperc(%a2); +wackbrackperc(%ARGV); +wackbrackperc(%{+{'t', 1};}); +optwackbrackperc; +optwackbrackperc(my %a3); +optwackbrackperc(%a3); +optwackbrackperc(%ARGV); +optwackbrackperc(%{+{'t', 1};}); +#### +# enreferencing prototypes: + +# CONTEXT sub plus(+) {} sub optplus(;+) {} +plus('hi'); +plus(my @a0); +plus(my %h0); +plus(\@a0); +plus(\%h0); +optplus; +optplus('hi'); +optplus(my @a1); +optplus(my %h1); +optplus(\@a1); +optplus(\%h1); +>>>> +plus('hi'); +plus(my @a0); +plus(my %h0); +plus(@a0); +plus(%h0); +optplus; +optplus('hi'); +optplus(my @a1); +optplus(my %h1); +optplus(@a1); +optplus(%h1); #### # ensure aelemfast works in the range -128..127 and that there's no # funky edge cases @@ -2747,6 +2845,22 @@ sub ($a, $=) { } ; #### +# defined-or default +no warnings; +use feature 'signatures'; +sub ($a //= 'default') { + $a; +} +; +#### +# logical-or default +no warnings; +use feature 'signatures'; +sub ($a ||= 'default') { + $a; +} +; +#### # padrange op within pattern code blocks /(?{ my($x, $y) = (); })/; my $a; @@ -3221,6 +3335,7 @@ $x = builtin::refaddr(undef); $x = builtin::reftype(undef); $x = builtin::ceil($x); $x = builtin::floor($x); +$x = builtin::is_tainted($x); #### # boolean true preserved my $x = !0; @@ -3230,3 +3345,10 @@ my $x = !1; #### # const NV: NV-ness preserved my(@x) = (-2.0, -1.0, -0.0, 0.0, 1.0, 2.0); +#### +# PADSV_STORE optimised my should be handled +() = (my $s = 1); +#### +# PADSV_STORE optimised state should be handled +# CONTEXT use feature "state"; +() = (state $s = 1); diff --git a/gnu/usr.bin/perl/lib/B/Op_private.pm b/gnu/usr.bin/perl/lib/B/Op_private.pm index af23d8511be..634cad2dd91 100644 --- a/gnu/usr.bin/perl/lib/B/Op_private.pm +++ b/gnu/usr.bin/perl/lib/B/Op_private.pm @@ -1,4 +1,4 @@ -# -*- buffer-read-only: t -*- +# -*- mode: Perl; buffer-read-only: t -*- # # lib/B/Op_private.pm # @@ -118,7 +118,7 @@ package B::Op_private; our %bits; -our $VERSION = "5.036003"; +our $VERSION = "5.038002"; $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv); $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv); @@ -134,7 +134,7 @@ $bits{$_}{6} = 'OPpINDEX_BOOLNEG' for qw(index rindex); $bits{$_}{1} = 'OPpITER_REVERSED' for qw(enteriter iter); $bits{$_}{7} = 'OPpLVALUE' for qw(leave leaveloop); $bits{$_}{6} = 'OPpLVAL_DEFER' for qw(aelem helem multideref); -$bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split); +$bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete emptyavhv enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv padsv_store pushmark refassign rv2av rv2gv rv2hv rv2sv split undef); $bits{$_}{2} = 'OPpLVREF_ELEM' for qw(lvref refassign); $bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign); $bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec); @@ -145,11 +145,11 @@ $bits{$_}{4} = 'OPpOPEN_IN_RAW' for qw(backtick open); $bits{$_}{7} = 'OPpOPEN_OUT_CRLF' for qw(backtick open); $bits{$_}{6} = 'OPpOPEN_OUT_RAW' for qw(backtick open); $bits{$_}{6} = 'OPpOUR_INTRO' for qw(enteriter gvsv rv2av rv2hv rv2sv split); -$bits{$_}{6} = 'OPpPAD_STATE' for qw(lvavref lvref padav padhv padsv pushmark refassign); +$bits{$_}{6} = 'OPpPAD_STATE' for qw(emptyavhv lvavref lvref padav padhv padsv padsv_store pushmark refassign undef); $bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo); $bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite); $bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv); -$bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int is_bool is_weak kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid); +$bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid); $bits{$_}{0} = 'OPpTRANS_CAN_FORCE_UTF8' for qw(trans transr); $bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr); $bits{$_}{7} = 'OPpTRANS_DELETE' for qw(trans transr); @@ -254,6 +254,7 @@ $bits{aeach}{0} = $bf[0]; @{$bits{aelem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]); @{$bits{aelemfast}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]); @{$bits{aelemfast_lex}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]); +@{$bits{aelemfastlex_store}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]); $bits{akeys}{0} = $bf[0]; $bits{alarm}{0} = $bf[0]; $bits{and}{0} = $bf[0]; @@ -262,7 +263,7 @@ $bits{anonconst}{0} = $bf[0]; @{$bits{anonhash}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @{$bits{anonlist}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); $bits{argcheck}{0} = $bf[0]; -$bits{argdefelem}{0} = $bf[0]; +@{$bits{argdefelem}}{7,6,0} = ('OPpARG_IF_UNDEF', 'OPpARG_IF_FALSE', $bf[0]); @{$bits{argelem}}{2,1,0} = ($bf[7], $bf[7], $bf[0]); @{$bits{atan2}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); $bits{av2arylen}{0} = $bf[0]; @@ -305,7 +306,8 @@ $bits{dor}{0} = $bf[0]; $bits{dorassign}{0} = $bf[0]; $bits{dump}{0} = $bf[0]; $bits{each}{0} = $bf[0]; -@{$bits{entereval}}{5,4,3,2,1,0} = ('OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]); +@{$bits{emptyavhv}}{5,3,2,1,0} = ('OPpEMPTYAVHV_IS_HV', $bf[4], $bf[4], $bf[4], $bf[4]); +@{$bits{entereval}}{6,5,4,3,2,1,0} = ('OPpEVAL_EVALSV', 'OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]); $bits{entergiven}{0} = $bf[0]; $bits{enteriter}{3} = 'OPpITER_DEF'; @{$bits{entersub}}{5,4,0} = ($bf[8], $bf[8], 'OPpENTERSUB_INARGS'); @@ -382,6 +384,7 @@ $bits{grepwhile}{0} = $bf[0]; @{$bits{gt}}{1,0} = ($bf[1], $bf[1]); $bits{gv}{5} = 'OPpEARLY_CV'; @{$bits{helem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]); +@{$bits{helemexistsor}}{7,0} = ('OPpHELEMEXISTSOR_DELETE', $bf[0]); $bits{hex}{0} = $bf[0]; @{$bits{i_add}}{1,0} = ($bf[1], $bf[1]); @{$bits{i_divide}}{1,0} = ($bf[1], $bf[1]); @@ -401,9 +404,11 @@ $bits{i_predec}{0} = $bf[0]; $bits{i_preinc}{0} = $bf[0]; @{$bits{i_subtract}}{1,0} = ($bf[1], $bf[1]); @{$bits{index}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); +@{$bits{initfield}}{2,1,0} = ('OPpINITFIELD_HV', 'OPpINITFIELD_AV', $bf[0]); $bits{int}{0} = $bf[0]; @{$bits{ioctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); $bits{is_bool}{0} = $bf[0]; +$bits{is_tainted}{0} = $bf[0]; $bits{is_weak}{0} = $bf[0]; @{$bits{isa}}{1,0} = ($bf[1], $bf[1]); @{$bits{join}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @@ -439,6 +444,7 @@ $bits{method_named}{0} = $bf[0]; $bits{method_redir}{0} = $bf[0]; $bits{method_redir_super}{0} = $bf[0]; $bits{method_super}{0} = $bf[0]; +@{$bits{methstart}}{7,0} = ('OPpINITFIELDS', $bf[0]); @{$bits{mkdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @{$bits{modulo}}{1,0} = ($bf[1], $bf[1]); @{$bits{msgctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @@ -464,6 +470,7 @@ $bits{ord}{0} = $bf[0]; $bits{padhv}{0} = 'OPpPADHV_ISKEYS'; @{$bits{padrange}}{6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]); @{$bits{padsv}}{5,4} = ($bf[8], $bf[8]); +$bits{padsv_store}{0} = $bf[0]; @{$bits{pipe_op}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); $bits{pop}{0} = $bf[0]; $bits{pos}{0} = $bf[0]; @@ -571,7 +578,7 @@ $bits{tied}{0} = $bf[0]; $bits{uc}{0} = $bf[0]; $bits{ucfirst}{0} = $bf[0]; @{$bits{umask}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); -$bits{undef}{0} = $bf[0]; +@{$bits{undef}}{5,0} = ('OPpUNDEF_KEEP_PV', $bf[0]); @{$bits{unlink}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @{$bits{unpack}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @{$bits{unshift}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]); @@ -596,6 +603,8 @@ our %defines = ( OPpARGELEM_HV => 4, OPpARGELEM_MASK => 6, OPpARGELEM_SV => 0, + OPpARG_IF_FALSE => 64, + OPpARG_IF_UNDEF => 128, OPpASSIGN_BACKWARDS => 64, OPpASSIGN_COMMON_AGG => 16, OPpASSIGN_COMMON_RC1 => 32, @@ -620,6 +629,7 @@ our %defines = ( OPpDEREF_SV => 48, OPpDONT_INIT_GV => 4, OPpEARLY_CV => 32, + OPpEMPTYAVHV_IS_HV => 32, OPpENTERSUB_AMPER => 8, OPpENTERSUB_DB => 64, OPpENTERSUB_HASTARG => 4, @@ -627,6 +637,7 @@ our %defines = ( OPpENTERSUB_NOPAREN => 128, OPpEVAL_BYTES => 8, OPpEVAL_COPHH => 16, + OPpEVAL_EVALSV => 64, OPpEVAL_HAS_HH => 2, OPpEVAL_RE_REPARSING => 32, OPpEVAL_UNICODE => 4, @@ -636,9 +647,13 @@ our %defines = ( OPpFT_AFTER_t => 16, OPpFT_STACKED => 4, OPpFT_STACKING => 8, + OPpHELEMEXISTSOR_DELETE => 128, OPpHINT_STRICT_REFS => 2, OPpHUSH_VMSISH => 32, OPpINDEX_BOOLNEG => 64, + OPpINITFIELDS => 128, + OPpINITFIELD_AV => 2, + OPpINITFIELD_HV => 4, OPpITER_DEF => 8, OPpITER_REVERSED => 2, OPpKVSLICE => 32, @@ -696,6 +711,7 @@ our %defines = ( OPpTRANS_SQUASH => 8, OPpTRANS_USE_SVOP => 2, OPpTRUEBOOL => 32, + OPpUNDEF_KEEP_PV => 32, OPpUSEINT => 4, ); @@ -704,6 +720,8 @@ our %labels = ( OPpARGELEM_AV => 'AV', OPpARGELEM_HV => 'HV', OPpARGELEM_SV => 'SV', + OPpARG_IF_FALSE => 'IF_FALSE', + OPpARG_IF_UNDEF => 'IF_UNDEF', OPpASSIGN_BACKWARDS => 'BKWARD', OPpASSIGN_COMMON_AGG => 'COM_AGG', OPpASSIGN_COMMON_RC1 => 'COM_RC1', @@ -726,6 +744,7 @@ our %labels = ( OPpDEREF_SV => 'DREFSV', OPpDONT_INIT_GV => 'NOINIT', OPpEARLY_CV => 'EARLYCV', + OPpEMPTYAVHV_IS_HV => 'ANONHASH', OPpENTERSUB_AMPER => 'AMPER', OPpENTERSUB_DB => 'DBG', OPpENTERSUB_HASTARG => 'TARG', @@ -733,6 +752,7 @@ our %labels = ( OPpENTERSUB_NOPAREN => 'NO()', OPpEVAL_BYTES => 'BYTES', OPpEVAL_COPHH => 'COPHH', + OPpEVAL_EVALSV => 'EVALSV', OPpEVAL_HAS_HH => 'HAS_HH', OPpEVAL_RE_REPARSING => 'REPARSE', OPpEVAL_UNICODE => 'UNI', @@ -742,9 +762,13 @@ our %labels = ( OPpFT_AFTER_t => 'FTAFTERt', OPpFT_STACKED => 'FTSTACKED', OPpFT_STACKING => 'FTSTACKING', + OPpHELEMEXISTSOR_DELETE => 'DELETE', OPpHINT_STRICT_REFS => 'STRICT', OPpHUSH_VMSISH => 'HUSH', OPpINDEX_BOOLNEG => 'NEG', + OPpINITFIELDS => 'INITFIELDS', + OPpINITFIELD_AV => 'INITFIELD_AV', + OPpINITFIELD_HV => 'INITFIELD_HV', OPpITER_DEF => 'DEF', OPpITER_REVERSED => 'REVERSED', OPpKVSLICE => 'KVSLICE', @@ -799,12 +823,14 @@ our %labels = ( OPpTRANS_SQUASH => 'SQUASH', OPpTRANS_USE_SVOP => 'USE_SVOP', OPpTRUEBOOL => 'BOOL', + OPpUNDEF_KEEP_PV => 'KEEP_PV', OPpUSEINT => 'USEINT', ); our %ops_using = ( OPpALLOW_FAKE => [qw(rv2gv)], + OPpARG_IF_FALSE => [qw(argdefelem)], OPpASSIGN_BACKWARDS => [qw(sassign)], OPpASSIGN_COMMON_AGG => [qw(aassign)], OPpCONCAT_NESTED => [qw(concat)], @@ -812,6 +838,7 @@ our %ops_using = ( OPpCOREARGS_DEREF1 => [qw(coreargs)], OPpDEFER_FINALLY => [qw(pushdefer)], OPpEARLY_CV => [qw(gv)], + OPpEMPTYAVHV_IS_HV => [qw(emptyavhv)], OPpENTERSUB_AMPER => [qw(entersub rv2cv)], OPpENTERSUB_INARGS => [qw(entersub)], OPpENTERSUB_NOPAREN => [qw(rv2cv)], @@ -820,16 +847,19 @@ our %ops_using = ( OPpFLIP_LINENUM => [qw(flip flop)], OPpFT_ACCESS => [qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite)], OPpFT_AFTER_t => [qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero)], + OPpHELEMEXISTSOR_DELETE => [qw(helemexistsor)], OPpHINT_STRICT_REFS => [qw(entersub multideref rv2av rv2cv rv2gv rv2hv rv2sv)], OPpHUSH_VMSISH => [qw(dbstate nextstate)], OPpINDEX_BOOLNEG => [qw(index rindex)], + OPpINITFIELDS => [qw(methstart)], + OPpINITFIELD_AV => [qw(initfield)], OPpITER_DEF => [qw(enteriter)], OPpITER_REVERSED => [qw(enteriter iter)], OPpKVSLICE => [qw(delete)], OPpLIST_GUESSED => [qw(list)], OPpLVALUE => [qw(leave leaveloop)], OPpLVAL_DEFER => [qw(aelem helem multideref)], - OPpLVAL_INTRO => [qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split)], + OPpLVAL_INTRO => [qw(aelem aslice cond_expr delete emptyavhv enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv padsv_store pushmark refassign rv2av rv2gv rv2hv rv2sv split undef)], OPpLVREF_ELEM => [qw(lvref refassign)], OPpMAYBE_LVSUB => [qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec)], OPpMAYBE_TRUEBOOL => [qw(blessed padhv ref rv2hv)], @@ -839,7 +869,7 @@ our %ops_using = ( OPpOPEN_IN_CRLF => [qw(backtick open)], OPpOUR_INTRO => [qw(enteriter gvsv rv2av rv2hv rv2sv split)], OPpPADHV_ISKEYS => [qw(padhv)], - OPpPAD_STATE => [qw(lvavref lvref padav padhv padsv pushmark refassign)], + OPpPAD_STATE => [qw(emptyavhv lvavref lvref padav padhv padsv padsv_store pushmark refassign undef)], OPpPV_IS_UTF8 => [qw(dump goto last next redo)], OPpREFCOUNTED => [qw(leave leaveeval leavesub leavesublv leavewrite)], OPpREPEAT_DOLIST => [qw(repeat)], @@ -849,12 +879,14 @@ our %ops_using = ( OPpSORT_DESCEND => [qw(sort)], OPpSPLIT_ASSIGN => [qw(split)], OPpSUBSTR_REPL_FIRST => [qw(substr)], - OPpTARGET_MY => [qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int is_bool is_weak kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid)], + OPpTARGET_MY => [qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid)], OPpTRANS_CAN_FORCE_UTF8 => [qw(trans transr)], OPpTRUEBOOL => [qw(blessed grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst)], + OPpUNDEF_KEEP_PV => [qw(undef)], OPpUSEINT => [qw(bit_and bit_or bit_xor complement left_shift nbit_and nbit_or nbit_xor ncomplement right_shift sbit_and sbit_or sbit_xor)], ); +$ops_using{OPpARG_IF_UNDEF} = $ops_using{OPpARG_IF_FALSE}; $ops_using{OPpASSIGN_COMMON_RC1} = $ops_using{OPpASSIGN_COMMON_AGG}; $ops_using{OPpASSIGN_COMMON_SCALAR} = $ops_using{OPpASSIGN_COMMON_AGG}; $ops_using{OPpASSIGN_CV_TO_GV} = $ops_using{OPpASSIGN_BACKWARDS}; @@ -870,11 +902,13 @@ $ops_using{OPpDONT_INIT_GV} = $ops_using{OPpALLOW_FAKE}; $ops_using{OPpENTERSUB_DB} = $ops_using{OPpENTERSUB_AMPER}; $ops_using{OPpENTERSUB_HASTARG} = $ops_using{OPpENTERSUB_AMPER}; $ops_using{OPpEVAL_COPHH} = $ops_using{OPpEVAL_BYTES}; +$ops_using{OPpEVAL_EVALSV} = $ops_using{OPpEVAL_BYTES}; $ops_using{OPpEVAL_HAS_HH} = $ops_using{OPpEVAL_BYTES}; $ops_using{OPpEVAL_RE_REPARSING} = $ops_using{OPpEVAL_BYTES}; $ops_using{OPpEVAL_UNICODE} = $ops_using{OPpEVAL_BYTES}; $ops_using{OPpFT_STACKED} = $ops_using{OPpFT_AFTER_t}; $ops_using{OPpFT_STACKING} = $ops_using{OPpFT_AFTER_t}; +$ops_using{OPpINITFIELD_HV} = $ops_using{OPpINITFIELD_AV}; $ops_using{OPpLVREF_ITER} = $ops_using{OPpLVREF_ELEM}; $ops_using{OPpMAY_RETURN_CONSTANT} = $ops_using{OPpENTERSUB_NOPAREN}; $ops_using{OPpMULTICONCAT_FAKE} = $ops_using{OPpMULTICONCAT_APPEND}; @@ -897,4 +931,4 @@ $ops_using{OPpTRANS_IDENTICAL} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; $ops_using{OPpTRANS_SQUASH} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; $ops_using{OPpTRANS_USE_SVOP} = $ops_using{OPpTRANS_CAN_FORCE_UTF8}; -# ex: set ro: +# ex: set ro ft=perl: diff --git a/gnu/usr.bin/perl/lib/Benchmark.pm b/gnu/usr.bin/perl/lib/Benchmark.pm index 3eeba798730..b68e96ad174 100644 --- a/gnu/usr.bin/perl/lib/Benchmark.pm +++ b/gnu/usr.bin/perl/lib/Benchmark.pm @@ -482,7 +482,7 @@ our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION); clearcache clearallcache disablecache enablecache); %EXPORT_TAGS=( all => [ @EXPORT, @EXPORT_OK ] ) ; -$VERSION = 1.23; +$VERSION = 1.24; # --- ':hireswallclock' special handling @@ -683,9 +683,9 @@ sub runloop { my($t0, $t1, $td); # before, after, difference # find package of caller so we can execute code there - my($curpack) = caller(0); + my $curpack = caller(0); my($i, $pack)= 0; - while (($pack) = caller(++$i)) { + while ($pack = caller(++$i)) { last if $pack ne $curpack; } diff --git a/gnu/usr.bin/perl/lib/Benchmark.t b/gnu/usr.bin/perl/lib/Benchmark.t index 7d9a6c8d8ec..36a3396cd8e 100644 --- a/gnu/usr.bin/perl/lib/Benchmark.t +++ b/gnu/usr.bin/perl/lib/Benchmark.t @@ -40,6 +40,89 @@ sub cmp_delta { return $max/$min <= (1+$delta); } +sub splatter { + my ($message) = @_; + my $splatter = <<~'EOF_SPLATTER'; + Please file a ticket to report this. Our bug tracker can be found at + + https://github.com/Perl/perl5/issues + + Make sure you include the full output of perl -V, also uname -a, + and the version details for the C compiler you are using are + very helpful. + + Please also try compiling and running the C program that can + be found at + + https://github.com/Perl/perl5/issues/20839#issuecomment-1439286875 + + and provide the results (or compile errors) as part of your + bug report. + + EOF_SPLATTER + + if ( $message =~ s/\.\.\.//) { + $splatter =~ s/Please/please/; + } + die $message, $splatter; +} + +{ + # Benchmark may end up "looping forever" if time() or times() are + # broken such that they do not return different values over time. + # The following crude test is intended to ensure that we can rely + # on them and be confident that we won't infinite loop in the + # following tests. + # + # You can simulate a broken time or times() function by setting + # the appropriate env var to a true value: + # + # time() -> SIMULATE_BROKEN_TIME_FUNCTION + # times() -> SIMULATE_BROKEN_TIMES_FUNCTION + # + # If you have a very fast box you may need to set the FAST_CPU env + # var to a number larger than 1 to require these tests to perform + # more iterations to see the time actually tick over. (You could + # also set it to a value between 0 and 1 to speed this up, but I + # don't see why you would...) + # + # See https://github.com/Perl/perl5/issues/20839 for the ticket + # that motivated this test. - Yves + + my @times0; + for ( 1 .. 3 ) { + my $end_time = time + 1; + my $count = 0; + my $scale = $ENV{FAST_CPU} || 1; + my $count_threshold = 20_000; + while ( $ENV{SIMULATE_BROKEN_TIME_FUNCTION} || time < $end_time ) { + my $x = 0.0; + for ( 1 .. 10_000 ) { + $x += sqrt(time); + } + if (++$count > $count_threshold * $scale) { + last; + } + } + cmp_ok($count,"<",$count_threshold * $scale, + "expecting \$count < ($count_threshold * $scale)") + or splatter(<<~'EOF_SPLATTER'); + Either this system is extremely fast, or the time() function + is broken. + + If you think this system is extremely fast you may scale up the + number of iterations allowed by this test by setting FAST_CPU=N + in the environment. Higher N will allow more ops-per-second + before we decide time() is broken. + + If setting a higher FAST_CPU value does not fix this problem then ... + EOF_SPLATTER + push @times0, $ENV{SIMULATE_BROKEN_TIMES_FUNCTION} ? 0 : (times)[0]; + } + isnt("@times0", "0 0 0", "Make sure times() does not always return 0.") + or splatter("It appears you have a broken a times() function.\n\n"); +} + my $t0 = new Benchmark; isa_ok ($t0, 'Benchmark', "Ensure we can create a benchmark object"); diff --git a/gnu/usr.bin/perl/lib/Class/Struct.pm b/gnu/usr.bin/perl/lib/Class/Struct.pm index c593dc7c390..a574734e5cb 100644 --- a/gnu/usr.bin/perl/lib/Class/Struct.pm +++ b/gnu/usr.bin/perl/lib/Class/Struct.pm @@ -14,7 +14,7 @@ require Exporter; @ISA = qw(Exporter); @EXPORT = qw(struct); -$VERSION = '0.66'; +$VERSION = '0.68'; my $print = 0; sub printem { @@ -84,7 +84,7 @@ sub struct { } else { $base_type = 'ARRAY'; - $class = (caller())[0]; + $class = caller(); @decls = @_; } @@ -275,24 +275,24 @@ Class::Struct - declare struct-like datatypes as Perl classes # declare struct with four types of elements: struct( s => '$', a => '@', h => '%', c => 'My_Other_Class' ); - $obj = new Myobj; # constructor + my $obj = Myobj->new; # constructor # scalar type accessor: - $element_value = $obj->s; # element value + my $element_value = $obj->s; # element value $obj->s('new value'); # assign to element # array type accessor: - $ary_ref = $obj->a; # reference to whole array - $ary_element_value = $obj->a(2); # array element value + my $ary_ref = $obj->a; # reference to whole array + my $ary_element_value = $obj->a(2); # array element value $obj->a(2, 'new value'); # assign to array element # hash type accessor: - $hash_ref = $obj->h; # reference to whole hash - $hash_element_value = $obj->h('x'); # hash element value + my $hash_ref = $obj->h; # reference to whole hash + my $hash_element_value = $obj->h('x'); # hash element value $obj->h('x', 'new value'); # assign to hash element # class type accessor: - $element_value = $obj->c; # object reference + my $element_value = $obj->c; # object reference $obj->c->method(...); # call method of object $obj->c(new My_Other_Class); # assign a new object diff --git a/gnu/usr.bin/perl/lib/Config.t b/gnu/usr.bin/perl/lib/Config.t index 4a07ff58af2..fa505266d16 100644 --- a/gnu/usr.bin/perl/lib/Config.t +++ b/gnu/usr.bin/perl/lib/Config.t @@ -51,6 +51,39 @@ ok( exists $Config{d_fork}, "has d_fork"); ok(!exists $Config{d_bork}, "has no d_bork"); +{ + # check taint_support and tain_disabled are set up as expected. + + ok( exists $Config{taint_support}, "has taint_support"); + + ok( exists $Config{taint_disabled}, "has taint_disabled"); + + is( $Config{taint_support}, ($Config{taint_disabled} ? "" : "define"), + "taint_support = !taint_disabled"); + + ok( ($Config{taint_support} eq "" or $Config{taint_support} eq "define"), + "taint_support is a valid value"); + + ok( ( $Config{taint_disabled} eq "" or $Config{taint_disabled} eq "silent" or + $Config{taint_disabled} eq "define"), + "taint_disabled is a valid value"); + + my @opts = Config::non_bincompat_options(); + my @want_taint_disabled = ("", "define", "silent"); + my @want_taint_support = ("define", "", ""); + my ($silent_no_taint_support) = grep $_ eq "SILENT_NO_TAINT_SUPPORT", @opts; + my ($no_taint_support) = grep $_ eq "NO_TAINT_SUPPORT", @opts; + my $no_taint_support_count = 0 + grep /NO_TAINT_SUPPORT/, @opts; + my $want_count = $silent_no_taint_support ? 2 : $no_taint_support ? 1 : 0; + + is ($no_taint_support_count, $want_count, + "non_bincompat_options info on taint support is as expected"); + is( $Config{taint_disabled}, $want_taint_disabled[$no_taint_support_count], + "taint_disabled is aligned with non_bincompat_options() data"); + is( $Config{taint_support}, $want_taint_support[$no_taint_support_count], + "taint_support is aligned with non_bincompat_options() data"); +} + like($Config{ivsize}, qr/^(4|8)$/, "ivsize is 4 or 8 (it is $Config{ivsize})"); # byteorder is virtual, but it has rules. diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t index e8c9a8c4d91..38f361d4d4f 100644 --- a/gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t @@ -38,11 +38,11 @@ BEGIN { use_ok('charnames', qw{greek})}; use charnames qw{greek}; -unlink ; -END { unlink ; } +unlink ; +END { unlink ; } my %h1 = () ; -my $db1 = tie(%h1, $db_file,'Op_dbmx', O_RDWR|O_CREAT, 0640) ; +my $db1 = tie(%h1, $db_file,'encOp_dbmx', O_RDWR|O_CREAT, 0640) ; ok $db1, "tied to $db_file"; @@ -101,7 +101,7 @@ undef $db1; # read the dbm file without the filter my %h2 = () ; -my $db2 = tie(%h2, $db_file,'Op_dbmx', O_RDWR|O_CREAT, 0640) ; +my $db2 = tie(%h2, $db_file,'encOp_dbmx', O_RDWR|O_CREAT, 0640) ; ok $db2, "tied to $db_file"; diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t index e322049d654..ff9ebf70b50 100644 --- a/gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t @@ -37,11 +37,11 @@ BEGIN { use_ok('charnames', qw{greek})}; use charnames qw{greek}; -unlink ; -END { unlink ; } +unlink ; +END { unlink ; } my %h1 = () ; -my $db1 = tie(%h1, $db_file,'Op_dbmx', O_RDWR|O_CREAT, 0640) ; +my $db1 = tie(%h1, $db_file,'utf8Op_dbmx', O_RDWR|O_CREAT, 0640) ; ok $db1, "tied to $db_file"; @@ -77,7 +77,7 @@ undef $db1; # read the dbm file without the filter my %h2 = () ; -my $db2 = tie(%h2, $db_file,'Op_dbmx', O_RDWR|O_CREAT, 0640) ; +my $db2 = tie(%h2, $db_file,'utf8Op_dbmx', O_RDWR|O_CREAT, 0640) ; ok $db2, "tied to $db_file"; diff --git a/gnu/usr.bin/perl/lib/File/Basename.pm b/gnu/usr.bin/perl/lib/File/Basename.pm index 4b4fe95cfd7..c3c611fbbc2 100644 --- a/gnu/usr.bin/perl/lib/File/Basename.pm +++ b/gnu/usr.bin/perl/lib/File/Basename.pm @@ -6,11 +6,11 @@ File::Basename - Parse file paths into directory, filename and suffix. use File::Basename; - ($name,$path,$suffix) = fileparse($fullname,@suffixlist); - $name = fileparse($fullname,@suffixlist); + my ($name, $path, $suffix) = fileparse($fullname, @suffixlist); + my $name = fileparse($fullname, @suffixlist); - $basename = basename($fullname,@suffixlist); - $dirname = dirname($fullname); + my $basename = basename($fullname, @suffixlist); + my $dirname = dirname($fullname); =head1 DESCRIPTION @@ -54,7 +54,7 @@ our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(fileparse fileparse_set_fstype basename dirname); -$VERSION = "2.85"; +$VERSION = "2.86"; fileparse_set_fstype($^O); diff --git a/gnu/usr.bin/perl/lib/File/Copy.pm b/gnu/usr.bin/perl/lib/File/Copy.pm index ce659a02035..1dc1d2d95c3 100644 --- a/gnu/usr.bin/perl/lib/File/Copy.pm +++ b/gnu/usr.bin/perl/lib/File/Copy.pm @@ -23,7 +23,7 @@ sub syscopy; sub cp; sub mv; -$VERSION = '2.39'; +$VERSION = '2.41'; require Exporter; @ISA = qw(Exporter); @@ -339,14 +339,14 @@ File::Copy - Copy files or filehandles use File::Copy; - copy("sourcefile","destinationfile") or die "Copy failed: $!"; - copy("Copy.pm",\*STDOUT); - move("/dev1/sourcefile","/dev2/destinationfile"); + copy("sourcefile", "destinationfile") or die "Copy failed: $!"; + copy("Copy.pm", \*STDOUT); + move("/dev1/sourcefile", "/dev2/destinationfile"); use File::Copy "cp"; - $n = FileHandle->new("/a/file","r"); - cp($n,"x"); + my $n = FileHandle->new("/a/file", "r"); + cp($n, "x"); =head1 DESCRIPTION @@ -395,9 +395,12 @@ You may use the syntax C to get at the C alias for this function. The syntax is I the same. The behavior is nearly the same as well: as of version 2.15, C will preserve the source file's permission bits like the shell utility -C would do, while C uses the default permissions for the -target file (which may depend on the process' C, file -ownership, inherited ACLs, etc.). If an error occurs in setting +C would do with default options, while C uses the default +permissions for the target file (which may depend on the process' +C, file ownership, inherited ACLs, etc.). That is, if the +destination file already exists, C will leave its permissions +unchanged; otherwise the permissions are taken from the source file +and modified by the C. If an error occurs in setting permissions, C will return 0, regardless of whether the file was successfully copied. diff --git a/gnu/usr.bin/perl/lib/File/stat.pm b/gnu/usr.bin/perl/lib/File/stat.pm index 7b430d79ea9..373afd22cb6 100644 --- a/gnu/usr.bin/perl/lib/File/stat.pm +++ b/gnu/usr.bin/perl/lib/File/stat.pm @@ -11,7 +11,7 @@ BEGIN { *warnif = \&warnings::warnif } our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); -our $VERSION = '1.12'; +our $VERSION = '1.13'; our @fields; our ( $st_dev, $st_ino, $st_mode, @@ -233,7 +233,7 @@ File::stat - by-name interface to Perl's built-in stat() functions =head1 SYNOPSIS use File::stat; - $st = stat($file) or die "No $file: $!"; + my $st = stat($file) or die "No $file: $!"; if ( ($st->mode & 0111) && ($st->nlink > 1) ) { print "$file is executable with lotsa links\n"; } diff --git a/gnu/usr.bin/perl/lib/FileHandle.pm b/gnu/usr.bin/perl/lib/FileHandle.pm index 133221bb6b5..a4ae1e437c6 100644 --- a/gnu/usr.bin/perl/lib/FileHandle.pm +++ b/gnu/usr.bin/perl/lib/FileHandle.pm @@ -4,7 +4,7 @@ use 5.006; use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK); -$VERSION = "2.03"; +$VERSION = "2.05"; require IO::File; @ISA = qw(IO::File); @@ -111,36 +111,36 @@ FileHandle - supply object methods for filehandles use FileHandle; - $fh = FileHandle->new; + my $fh = FileHandle->new; if ($fh->open("< file")) { print <$fh>; $fh->close; } - $fh = FileHandle->new("> FOO"); + my $fh = FileHandle->new("> FOO"); if (defined $fh) { print $fh "bar\n"; $fh->close; } - $fh = FileHandle->new("file", "r"); + my $fh = FileHandle->new("file", "r"); if (defined $fh) { print <$fh>; undef $fh; # automatically closes the file } - $fh = FileHandle->new("file", O_WRONLY|O_APPEND); + my $fh = FileHandle->new("file", O_WRONLY|O_APPEND); if (defined $fh) { print $fh "corge\n"; undef $fh; # automatically closes the file } - $pos = $fh->getpos; + my $pos = $fh->getpos; $fh->setpos($pos); - $fh->setvbuf($buffer_var, _IOLBF, 1024); + $fh->setvbuf(my $buffer_var, _IOLBF, 1024); - ($readfh, $writefh) = FileHandle::pipe; + my ($readfh, $writefh) = FileHandle::pipe; autoflush STDOUT 1; @@ -149,7 +149,7 @@ FileHandle - supply object methods for filehandles NOTE: This class is now a front-end to the IO::* classes. C creates a C, which is a reference to a -newly created symbol (see the C package). If it receives any +newly created symbol (see the L package). If it receives any parameters, they are passed to C; if the open fails, the C object is destroyed. Otherwise, it is returned to the caller. diff --git a/gnu/usr.bin/perl/lib/Net/protoent.pm b/gnu/usr.bin/perl/lib/Net/protoent.pm index cef20fbd0b0..18dc777d0fb 100644 --- a/gnu/usr.bin/perl/lib/Net/protoent.pm +++ b/gnu/usr.bin/perl/lib/Net/protoent.pm @@ -2,7 +2,7 @@ package Net::protoent; use strict; use 5.006_001; -our $VERSION = '1.01'; +our $VERSION = '1.02'; our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); our ( $p_name, @p_aliases, $p_proto ); BEGIN { @@ -51,7 +51,7 @@ Net::protoent - by-name interface to Perl's built-in getproto*() functions =head1 SYNOPSIS use Net::protoent; - $p = getprotobyname(shift || 'tcp') || die "no proto"; + my $p = getprotobyname(shift || 'tcp') || die "no proto"; printf "proto for %s is %d, aliases are %s\n", $p->name, $p->proto, "@{$p->aliases}"; diff --git a/gnu/usr.bin/perl/lib/Net/servent.pm b/gnu/usr.bin/perl/lib/Net/servent.pm index a3b2bad2c2b..3aa8389f99c 100644 --- a/gnu/usr.bin/perl/lib/Net/servent.pm +++ b/gnu/usr.bin/perl/lib/Net/servent.pm @@ -2,7 +2,7 @@ package Net::servent; use strict; use 5.006_001; -our $VERSION = '1.02'; +our $VERSION = '1.03'; our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); our ( $s_name, @s_aliases, $s_port, $s_proto ); BEGIN { @@ -53,7 +53,7 @@ Net::servent - by-name interface to Perl's built-in getserv*() functions =head1 SYNOPSIS use Net::servent; - $s = getservbyname(shift || 'ftp') || die "no service"; + my $s = getservbyname(shift || 'ftp') || die "no service"; printf "port for %s is %s, aliases are %s\n", $s->name, $s->port, "@{$s->aliases}"; diff --git a/gnu/usr.bin/perl/lib/UNIVERSAL.pm b/gnu/usr.bin/perl/lib/UNIVERSAL.pm index e73c988abaa..96ecfe6e432 100644 --- a/gnu/usr.bin/perl/lib/UNIVERSAL.pm +++ b/gnu/usr.bin/perl/lib/UNIVERSAL.pm @@ -1,6 +1,6 @@ package UNIVERSAL; -our $VERSION = '1.14'; +our $VERSION = '1.15'; # UNIVERSAL should not contain any extra subs/methods beyond those # that it exists to define. The existence of import() below is a historical @@ -24,21 +24,21 @@ UNIVERSAL - base class for ALL classes (blessed references) =head1 SYNOPSIS - $is_io = $fd->isa("IO::Handle"); - $is_io = Class->isa("IO::Handle"); + my $obj_is_io = $fd->isa("IO::Handle"); + my $cls_is_io = Class->isa("IO::Handle"); - $does_log = $obj->DOES("Logger"); - $does_log = Class->DOES("Logger"); + my $obj_does_log = $obj->DOES("Logger"); + my $cls_does_log = Class->DOES("Logger"); - $sub = $obj->can("print"); - $sub = Class->can("print"); + my $obj_sub = $obj->can("print"); + my $cls_sub = Class->can("print"); - $sub = eval { $ref->can("fandango") }; - $ver = $obj->VERSION; + my $eval_sub = eval { $ref->can("fandango") }; + my $ver = $obj->VERSION; # but never do this! - $is_io = UNIVERSAL::isa($fd, "IO::Handle"); - $sub = UNIVERSAL::can($obj, "print"); + my $is_io = UNIVERSAL::isa($fd, "IO::Handle"); + my $sub = UNIVERSAL::can($obj, "print"); =head1 DESCRIPTION diff --git a/gnu/usr.bin/perl/lib/Unicode/UCD.t b/gnu/usr.bin/perl/lib/Unicode/UCD.t index 3d391212171..a70e3bd0d71 100644 --- a/gnu/usr.bin/perl/lib/Unicode/UCD.t +++ b/gnu/usr.bin/perl/lib/Unicode/UCD.t @@ -19,7 +19,7 @@ use Test::More; use Unicode::UCD qw(charinfo charprop charprops_all); -my $expected_version = '14.0.0'; +my $expected_version = '15.0.0'; my $current_version = Unicode::UCD::UnicodeVersion; my $v_unicode_version = pack "C*", split /\./, $current_version; my $unknown_script = ($v_unicode_version lt v5.0.0) @@ -786,7 +786,7 @@ SKIP: skip("Latin range count will be wrong when using older Unicode release", 2) if $current_version lt $expected_version; my $n1 = @$r1; - is($n1, 38, "number of ranges in Latin script (Unicode $expected_version)") if $::IS_ASCII; + is($n1, 39, "number of ranges in Latin script (Unicode $expected_version)") if $::IS_ASCII; shift @$r1 while @$r1; my $r2 = charscript('Latin'); is(@$r2, $n1, "modifying results should not mess up internal caches"); diff --git a/gnu/usr.bin/perl/lib/User/grent.pm b/gnu/usr.bin/perl/lib/User/grent.pm index 9f95541729c..5774132e8f5 100644 --- a/gnu/usr.bin/perl/lib/User/grent.pm +++ b/gnu/usr.bin/perl/lib/User/grent.pm @@ -2,7 +2,7 @@ package User::grent; use strict; use 5.006_001; -our $VERSION = '1.03'; +our $VERSION = '1.04'; our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS); our ($gr_name, $gr_gid, $gr_passwd, @gr_members); BEGIN { @@ -46,7 +46,7 @@ User::grent - by-name interface to Perl's built-in getgr*() functions =head1 SYNOPSIS use User::grent; - $gr = getgrgid(0) or die "No group zero"; + my $gr = getgrgid(0) or die "No group zero"; if ( $gr->name eq 'wheel' && @{$gr->members} > 1 ) { print "gid zero name wheel, with other members"; } @@ -57,7 +57,7 @@ User::grent - by-name interface to Perl's built-in getgr*() functions print "gid zero name wheel, with other members"; } - $gr = getgr($whoever); + my $gr = getgr($whoever); =head1 DESCRIPTION diff --git a/gnu/usr.bin/perl/lib/User/pwent.pm b/gnu/usr.bin/perl/lib/User/pwent.pm index 3f82e8c8615..ff8fbd58777 100644 --- a/gnu/usr.bin/perl/lib/User/pwent.pm +++ b/gnu/usr.bin/perl/lib/User/pwent.pm @@ -1,7 +1,7 @@ package User::pwent; use 5.006; -our $VERSION = '1.01'; +our $VERSION = '1.02'; use strict; use warnings; @@ -189,14 +189,14 @@ User::pwent - by-name interface to Perl's built-in getpw*() functions =head1 SYNOPSIS use User::pwent; - $pw = getpwnam('daemon') || die "No daemon user"; + my $pw = getpwnam('daemon') || die "No daemon user"; if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?\z#s ) { print "gid 1 on root dir"; } - $real_shell = $pw->shell || '/bin/sh'; + my $real_shell = $pw->shell || '/bin/sh'; - for (($fullname, $office, $workphone, $homephone) = + for (my ($fullname, $office, $workphone, $homephone) = split /\s*,\s*/, $pw->gecos) { s/&/ucfirst(lc($pw->name))/ge; @@ -208,7 +208,7 @@ User::pwent - by-name interface to Perl's built-in getpw*() functions print "gid 1 on root dir"; } - $pw = getpw($whoever); + my $pw = getpw($whoever); use User::pwent qw/:DEFAULT pw_has/; if (pw_has(qw[gecos expire quota])) { .... } diff --git a/gnu/usr.bin/perl/lib/feature.pm b/gnu/usr.bin/perl/lib/feature.pm index a73bca6e618..44252250687 100644 --- a/gnu/usr.bin/perl/lib/feature.pm +++ b/gnu/usr.bin/perl/lib/feature.pm @@ -1,17 +1,17 @@ -# -*- buffer-read-only: t -*- +# -*- mode: Perl; buffer-read-only: t -*- # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! # This file is built by regen/feature.pl. # Any changes made here will be lost! package feature; - -our $VERSION = '1.72'; +our $VERSION = '1.82'; our %feature = ( fc => 'feature_fc', isa => 'feature_isa', say => 'feature_say', try => 'feature_try', + class => 'feature_class', defer => 'feature_defer', state => 'feature_state', switch => 'feature_switch', @@ -20,6 +20,7 @@ our %feature = ( evalbytes => 'feature_evalbytes', signatures => 'feature_signatures', current_sub => 'feature___SUB__', + module_true => 'feature_module_true', refaliasing => 'feature_refaliasing', postderef_qq => 'feature_postderef_qq', unicode_eval => 'feature_unieval', @@ -37,7 +38,8 @@ our %feature_bundle = ( "5.23" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)], "5.27" => [qw(bareword_filehandles bitwise current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)], "5.35" => [qw(bareword_filehandles bitwise current_sub evalbytes fc isa postderef_qq say signatures state unicode_eval unicode_strings)], - "all" => [qw(bareword_filehandles bitwise current_sub declared_refs defer evalbytes extra_paired_delimiters fc indirect isa multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)], + "5.37" => [qw(bitwise current_sub evalbytes fc isa module_true postderef_qq say signatures state unicode_eval unicode_strings)], + "all" => [qw(bareword_filehandles bitwise class current_sub declared_refs defer evalbytes extra_paired_delimiters fc indirect isa module_true multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)], "default" => [qw(bareword_filehandles indirect multidimensional)], ); @@ -62,6 +64,7 @@ $feature_bundle{"5.32"} = $feature_bundle{"5.27"}; $feature_bundle{"5.33"} = $feature_bundle{"5.27"}; $feature_bundle{"5.34"} = $feature_bundle{"5.27"}; $feature_bundle{"5.36"} = $feature_bundle{"5.35"}; +$feature_bundle{"5.38"} = $feature_bundle{"5.37"}; $feature_bundle{"5.9.5"} = $feature_bundle{"5.10"}; my %noops = ( postderef => 1, @@ -73,7 +76,7 @@ my %removed = ( our $hint_shift = 26; our $hint_mask = 0x3c000000; -our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 5.35 ); +our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 5.35 5.37 ); # This gets set (for now) in $^H as well as in %^H, # for runtime speed of the uc/lc/ucfirst/lcfirst functions. @@ -98,13 +101,13 @@ feature - Perl pragma to enable new features say "The case-folded version of $x is: " . fc $x; - # set features to match the :5.10 bundle, which may turn off or on - # multiple features (see below) - use feature ':5.10'; + # set features to match the :5.36 bundle, which may turn off or on + # multiple features (see "FEATURE BUNDLES" below) + use feature ':5.36'; - # implicitly loads :5.10 feature bundle - use v5.10; + # implicitly loads :5.36 feature bundle + use v5.36; =head1 DESCRIPTION @@ -146,6 +149,8 @@ disable I features (an unusual request!) use C. =head1 AVAILABLE FEATURES +Read L for the feature cheat sheet summary. + =head2 The 'say' feature C tells the compiler to enable the Raku-inspired @@ -178,6 +183,9 @@ given/when construct. See L for details. This feature is available starting with Perl 5.10. +It is deprecated starting with Perl 5.38, and using +C, C or smartmatch will throw a warning. +It will be removed in Perl 5.42. =head2 The 'unicode_strings' feature @@ -268,9 +276,10 @@ regardless of what feature declarations are in scope. =head2 The 'postderef' and 'postderef_qq' features The 'postderef_qq' feature extends the applicability of L so that postfix array -and scalar dereference are available in double-quotish interpolations. For -example, it makes the following two statements equivalent: +dereference syntax|perlref/Postfix Dereference Syntax> so that +postfix array dereference, postfix scalar dereference, and +postfix array highest index access are available in double-quotish interpolations. +For example, it makes the following two statements equivalent: my $s = "[@{ $h->{a} }]"; my $s = "[$h->{a}->@*]"; @@ -361,7 +370,7 @@ warn when you use the feature, unless you have explicitly disabled the warning: no warnings "experimental::declared_refs"; This allows a reference to a variable to be declared with C, C, -our C, or localized with C. It is intended mainly for use in +or C, or localized with C. It is intended mainly for use in conjunction with the "refaliasing" feature. See L for examples. @@ -413,7 +422,7 @@ previous versions, it was simply on all the time. You can use the L module on CPAN to disable multidimensional array emulation for older versions of Perl. -=head2 The 'bareword_filehandles' feature. +=head2 The 'bareword_filehandles' feature This feature enables bareword filehandles for builtin functions operations, a generally discouraged practice. It is enabled by @@ -429,7 +438,7 @@ previous versions it was simply on all the time. You can use the L module on CPAN to disable bareword filehandles for older versions of perl. -=head2 The 'try' feature. +=head2 The 'try' feature B: This feature is still experimental and the implementation may change or be removed in future versions of Perl. For this reason, Perl will @@ -467,6 +476,10 @@ This feature enables the use of more paired string delimiters than the traditional four, S >>>, S>, S>, and S>. When this feature is on, for example, you can say SpatE<187>>>. +As with any usage of non-ASCII delimiters in a UTF-8-encoded source file, you +will want to ensure the parser will decode the source code from UTF-8 bytes +with a declaration such as C. + This feature is available starting in Perl 5.36. The complete list of accepted paired delimiters as of Unicode 14.0 is: @@ -859,6 +872,25 @@ The complete list of accepted paired delimiters as of Unicode 14.0 is: 🢫 🢪 U+1F8AB, U+1F8AA RIGHT/LEFTWARDS FRONT-TILTED SHADOWED WHITE ARROW +=head2 The 'module_true' feature + +This feature removes the need to return a true value at the end of a module +loaded with C or C. Any errors during compilation will cause +failures, but reaching the end of the module when this feature is in effect +will prevent C from throwing an exception that the module "did not return +a true value". + +=head2 The 'class' feature + +B: This feature is still experimental and the implementation may +change or be removed in future versions of Perl. For this reason, Perl will +warn when you use the feature, unless you have explicitly disabled the warning: + + no warnings "experimental::class"; + +This feature enables the C block syntax and other associated keywords +which implement the "new" object system, previously codenamed "Corinna". + =head1 FEATURE BUNDLES It's possible to load multiple features together, using @@ -935,6 +967,10 @@ The following feature bundles are available: evalbytes fc isa postderef_qq say signatures state unicode_eval unicode_strings + :5.38 bitwise current_sub evalbytes fc isa + module_true postderef_qq say signatures + state unicode_eval unicode_strings + The C<:default> bundle represents the feature set that is enabled before any C or C declaration. @@ -964,12 +1000,12 @@ main compilation unit (that is, the one-liner that follows C<-E>). By explicitly requiring a minimum Perl version number for your program, with the C construct. That is, - use v5.10.0; + use v5.36.0; will do an implicit no feature ':all'; - use feature ':5.10'; + use feature ':5.36'; and so on. Note how the trailing sub-version is automatically stripped from the @@ -977,7 +1013,7 @@ version. But to avoid portability warnings (see L), you may prefer: - use 5.010; + use 5.036; with the same effect. @@ -1211,4 +1247,4 @@ sub feature_bundle { 1; -# ex: set ro: +# ex: set ro ft=perl: diff --git a/gnu/usr.bin/perl/lib/locale.t b/gnu/usr.bin/perl/lib/locale.t index 9aa8e1deec8..a0f1c3e3e7d 100644 --- a/gnu/usr.bin/perl/lib/locale.t +++ b/gnu/usr.bin/perl/lib/locale.t @@ -58,21 +58,18 @@ BEGIN { } use feature 'fc'; +use I18N::Langinfo qw(langinfo CODESET CRNCYSTR RADIXCHAR); # =1 adds debugging output; =2 increases the verbosity somewhat our $debug = $ENV{PERL_DEBUG_FULL_TEST} // 0; # Certain tests have been shown to be problematical for a few locales. Don't # fail them unless at least this percentage of the tested locales fail. -# On AIX machines, many locales call a no-break space a graphic. -# (There aren't 1000 locales currently in existence, so 99.9 works) # EBCDIC os390 has more locales fail than normal, because it has locales that # move various critical characters like '['. -my $acceptable_failure_percentage = ($os =~ / ^ ( aix ) $ /x) - ? 99.9 - : ($os =~ / ^ ( os390 ) $ /x) - ? 10 - : 5; +my $acceptable_failure_percentage = ($os =~ / ^ ( os390 ) $ /x) + ? 10 + : 5; # The list of test numbers of the problematic tests. my %problematical_tests; @@ -792,18 +789,24 @@ my $final_without_setlocale = $test_num; debug "Scanning for locales...\n"; require POSIX; import POSIX ':locale_h'; - my $categories = [ 'LC_CTYPE', 'LC_NUMERIC', 'LC_ALL' ]; -debug "Scanning for just compatible"; -my @Locale = find_locales($categories); -debug "Scanning for even incompatible"; -my @include_incompatible_locales = find_locales($categories, - 'even incompatible locales'); - +my @Locale; +my @include_incompatible_locales; +if ($^O eq "aix" + and version->new(($Config{osvers} =~ /^(\d+(\.\d+))/)[0]) < 7) { + # https://www.ibm.com/support/pages/apar/IV22097 + skip("setlocale broken on old AIX"); +} +else { + debug "Scanning for just compatible"; + @Locale = find_locales($categories); + debug "Scanning for even incompatible"; + @include_incompatible_locales = find_locales($categories, + 'even incompatible locales'); +} # The locales included in the incompatible list that aren't in the compatible # one. my @incompatible_locales; - if (@Locale < @include_incompatible_locales) { my %seen; @seen{@Locale} = (); @@ -1058,9 +1061,12 @@ foreach my $Locale (@Locale) { my $is_utf8_locale = is_locale_utf8($Locale); - debug "is utf8 locale? = $is_utf8_locale\n"; - - debug "radix = " . disp_str(localeconv()->{decimal_point}) . "\n"; + if ($debug) { + debug "code set = " . langinfo(CODESET); + debug "is utf8 locale? = $is_utf8_locale\n"; + debug "radix = " . disp_str(langinfo(RADIXCHAR)) . "\n"; + debug "currency = " . disp_str(langinfo(CRNCYSTR)); + } if (! $is_utf8_locale) { use locale; @@ -2136,19 +2142,22 @@ foreach my $Locale (@Locale) { } $ok19 = $ok20 = 1; - if (setlocale(&POSIX::LC_TIME, $Locale)) { # These tests aren't affected by - # :not_characters - my @times = CORE::localtime(); + if (locales_enabled('LC_TIME')) { + if (setlocale(&POSIX::LC_TIME, $Locale)) { # These tests aren't + # affected by + # :not_characters + my @times = CORE::localtime(); - use locale; - $ok19 = POSIX::strftime("%p", @times) ne "%p"; # [perl #119425] - my $date = POSIX::strftime("'%A' '%B' '%Z' '%p'", @times); - debug("'Day' 'Month' 'TZ' 'am/pm' = ", disp_str($date)); + use locale; + $ok19 = POSIX::strftime("%p", @times) ne "%p"; # [perl #119425] + my $date = POSIX::strftime("'%A' '%B' '%Z' '%p'", @times); + debug("'Day' 'Month' 'TZ' 'am/pm' = ", disp_str($date)); - # If there is any non-ascii, it better be UTF-8 in a UTF-8 locale, and - # not UTF-8 if the locale isn't UTF-8. - $ok20 = $date =~ / ^ \p{ASCII}+ $ /x - || $is_utf8_locale == utf8::is_utf8($date); + # If there is any non-ascii, it better be UTF-8 in a UTF-8 locale, + # and not UTF-8 if the locale isn't UTF-8. + $ok20 = $date =~ / ^ \p{ASCII}+ $ /x + || $is_utf8_locale == utf8::is_utf8($date); + } } $ok21 = 1; @@ -2435,7 +2444,7 @@ foreach my $Locale (@Locale) { $test_names{$locales_test_number} = 'Verify atof with locale radix and negative exponent'; $problematical_tests{$locales_test_number} = 1; - my $radix = POSIX::localeconv()->{decimal_point}; + my $radix = langinfo(RADIXCHAR); my @nums = ( "3.14e+9", "3${radix}14e+9", "3.14e-9", "3${radix}14e-9", "-3.14e+9", "-3${radix}14e+9", "-3.14e-9", "-3${radix}14e-9", diff --git a/gnu/usr.bin/perl/lib/overload.pm b/gnu/usr.bin/perl/lib/overload.pm index 77ce8f06397..d782271296c 100644 --- a/gnu/usr.bin/perl/lib/overload.pm +++ b/gnu/usr.bin/perl/lib/overload.pm @@ -2,9 +2,8 @@ package overload; use strict; no strict 'refs'; -no warnings 'experimental::builtin'; -our $VERSION = '1.35'; +our $VERSION = '1.37'; our %ops = ( with_assign => "+ - * / % ** << >> x .", @@ -30,152 +29,151 @@ my %ops_seen; sub nil {} sub OVERLOAD { - my $package = shift; - my %arg = @_; - my $sub; - *{$package . "::(("} = \&nil; # Make it findable via fetchmethod. - for (keys %arg) { - if ($_ eq 'fallback') { - for my $sym (*{$package . "::()"}) { - *$sym = \&nil; # Make it findable via fetchmethod. - $$sym = $arg{$_}; - } - } else { - warnings::warnif("overload arg '$_' is invalid") - unless exists $ops_seen{$_}; - $sub = $arg{$_}; - if (not ref $sub) { - $ {$package . "::(" . $_} = $sub; - $sub = \&nil; - } - #print STDERR "Setting '$ {'package'}::\cO$_' to \\&'$sub'.\n"; - *{$package . "::(" . $_} = \&{ $sub }; + my $package = shift; + my %arg = @_; + my $sub; + *{$package . "::(("} = \&nil; # Make it findable via fetchmethod. + for (keys %arg) { + if ($_ eq 'fallback') { + for my $sym (*{$package . "::()"}) { + *$sym = \&nil; # Make it findable via fetchmethod. + $$sym = $arg{$_}; + } + } else { + warnings::warnif("overload arg '$_' is invalid") + unless exists $ops_seen{$_}; + $sub = $arg{$_}; + if (not ref $sub) { + $ {$package . "::(" . $_} = $sub; + $sub = \&nil; + } + #print STDERR "Setting '$ {'package'}::\cO$_' to \\&'$sub'.\n"; + *{$package . "::(" . $_} = \&{ $sub }; + } } - } } sub import { - my $package = (caller())[0]; - # *{$package . "::OVERLOAD"} = \&OVERLOAD; - shift; - $package->overload::OVERLOAD(@_); + my $package = caller(); + # *{$package . "::OVERLOAD"} = \&OVERLOAD; + shift; + $package->overload::OVERLOAD(@_); } sub unimport { - my $package = (caller())[0]; - shift; - *{$package . "::(("} = \&nil; - for (@_) { - warnings::warnif("overload arg '$_' is invalid") - unless exists $ops_seen{$_}; - delete $ {$package . "::"}{$_ eq 'fallback' ? '()' : "(" .$_}; - } + my $package = caller(); + shift; + *{$package . "::(("} = \&nil; + for (@_) { + warnings::warnif("overload arg '$_' is invalid") + unless exists $ops_seen{$_}; + delete $ {$package . "::"}{$_ eq 'fallback' ? '()' : "(" .$_}; + } } sub Overloaded { - my $package = shift; - $package = ref $package if ref $package; - mycan ($package, '()') || mycan ($package, '(('); + my $package = shift; + $package = ref $package if ref $package; + mycan ($package, '()') || mycan ($package, '(('); } sub ov_method { - my $globref = shift; - return undef unless $globref; - my $sub = \&{*$globref}; - no overloading; - return $sub if $sub != \&nil; - return shift->can($ {*$globref}); + my $globref = shift; + return undef unless $globref; + my $sub = \&{*$globref}; + no overloading; + return $sub if $sub != \&nil; + return shift->can($ {*$globref}); } sub OverloadedStringify { - my $package = shift; - $package = ref $package if ref $package; - #$package->can('(""') - ov_method mycan($package, '(""'), $package - or ov_method mycan($package, '(0+'), $package - or ov_method mycan($package, '(bool'), $package - or ov_method mycan($package, '(nomethod'), $package; + my $package = shift; + $package = ref $package if ref $package; + #$package->can('(""') + ov_method mycan($package, '(""'), $package + or ov_method mycan($package, '(0+'), $package + or ov_method mycan($package, '(bool'), $package + or ov_method mycan($package, '(nomethod'), $package; } sub Method { - my $package = shift; - if(ref $package) { - local $@; - local $!; - $package = builtin::blessed($package); - return undef if !defined $package; - } - #my $meth = $package->can('(' . shift); - ov_method mycan($package, '(' . shift), $package; - #return $meth if $meth ne \&nil; - #return $ {*{$meth}}; + my $package = shift; + if (ref $package) { + no warnings 'experimental::builtin'; + $package = builtin::blessed($package); + return undef if !defined $package; + } + #my $meth = $package->can('(' . shift); + ov_method mycan($package, '(' . shift), $package; + #return $meth if $meth ne \&nil; + #return $ {*{$meth}}; } sub AddrRef { - no overloading; - "$_[0]"; + no overloading; + "$_[0]"; } *StrVal = *AddrRef; -sub mycan { # Real can would leave stubs. - my ($package, $meth) = @_; +sub mycan { # Real can would leave stubs. + my ($package, $meth) = @_; - local $@; - local $!; - require mro; + local $@; + local $!; + require mro; - my $mro = mro::get_linear_isa($package); - foreach my $p (@$mro) { - my $fqmeth = $p . q{::} . $meth; - return \*{$fqmeth} if defined &{$fqmeth}; - } + my $mro = mro::get_linear_isa($package); + foreach my $p (@$mro) { + my $fqmeth = $p . q{::} . $meth; + return \*{$fqmeth} if defined &{$fqmeth}; + } - return undef; + return undef; } my %constants = ( - 'integer' => 0x1000, # HINT_NEW_INTEGER - 'float' => 0x2000, # HINT_NEW_FLOAT - 'binary' => 0x4000, # HINT_NEW_BINARY - 'q' => 0x8000, # HINT_NEW_STRING - 'qr' => 0x10000, # HINT_NEW_RE - ); + 'integer' => 0x1000, # HINT_NEW_INTEGER + 'float' => 0x2000, # HINT_NEW_FLOAT + 'binary' => 0x4000, # HINT_NEW_BINARY + 'q' => 0x8000, # HINT_NEW_STRING + 'qr' => 0x10000, # HINT_NEW_RE +); use warnings::register; sub constant { - # Arguments: what, sub - while (@_) { - if (@_ == 1) { - warnings::warnif ("Odd number of arguments for overload::constant"); - last; - } - elsif (!exists $constants {$_ [0]}) { - warnings::warnif ("'$_[0]' is not an overloadable type"); - } - elsif (!ref $_ [1] || "$_[1]" !~ /(^|=)CODE\(0x[0-9a-f]+\)$/) { - # Can't use C above as code references can be - # blessed, and C would return the package the ref is blessed into. - if (warnings::enabled) { - $_ [1] = "undef" unless defined $_ [1]; - warnings::warn ("'$_[1]' is not a code reference"); + # Arguments: what, sub + while (@_) { + if (@_ == 1) { + warnings::warnif ("Odd number of arguments for overload::constant"); + last; } + elsif (!exists $constants {$_ [0]}) { + warnings::warnif ("'$_[0]' is not an overloadable type"); + } + elsif (!ref $_ [1] || "$_[1]" !~ /(^|=)CODE\(0x[0-9a-f]+\)$/) { + # Can't use C above as code references can be + # blessed, and C would return the package the ref is blessed into. + if (warnings::enabled) { + $_ [1] = "undef" unless defined $_ [1]; + warnings::warn ("'$_[1]' is not a code reference"); + } + } + else { + $^H{$_[0]} = $_[1]; + $^H |= $constants{$_[0]}; + } + shift, shift; } - else { - $^H{$_[0]} = $_[1]; - $^H |= $constants{$_[0]}; - } - shift, shift; - } } sub remove_constant { - # Arguments: what, sub - while (@_) { - delete $^H{$_[0]}; - $^H &= ~ $constants{$_[0]}; - shift, shift; - } + # Arguments: what, sub + while (@_) { + delete $^H{$_[0]}; + $^H &= ~ $constants{$_[0]}; + shift, shift; + } } 1; @@ -191,9 +189,9 @@ overload - Package for overloading Perl operations package SomeThing; use overload - '+' => \&myadd, - '-' => \&mysub; - # etc + '+' => \&myadd, + '-' => \&mysub; + # etc ... package main; @@ -365,21 +363,21 @@ The complete list of keys that can be specified in the C directive are given, separated by spaces, in the values of the hash C<%overload::ops>: - with_assign => '+ - * / % ** << >> x .', - assign => '+= -= *= /= %= **= <<= >>= x= .=', - num_comparison => '< <= > >= == !=', - '3way_comparison'=> '<=> cmp', - str_comparison => 'lt le gt ge eq ne', - binary => '& &= | |= ^ ^= &. &.= |. |.= ^. ^.=', - unary => 'neg ! ~ ~.', - mutators => '++ --', - func => 'atan2 cos sin exp abs log sqrt int', - conversion => 'bool "" 0+ qr', - iterators => '<>', - filetest => '-X', - dereferencing => '${} @{} %{} &{} *{}', - matching => '~~', - special => 'nomethod fallback =' + with_assign => '+ - * / % ** << >> x .', + assign => '+= -= *= /= %= **= <<= >>= x= .=', + num_comparison => '< <= > >= == !=', + '3way_comparison' => '<=> cmp', + str_comparison => 'lt le gt ge eq ne', + binary => '& &= | |= ^ ^= &. &.= |. |.= ^. ^.=', + unary => 'neg ! ~ ~.', + mutators => '++ --', + func => 'atan2 cos sin exp abs log sqrt int', + conversion => 'bool "" 0+ qr', + iterators => '<>', + filetest => '-X', + dereferencing => '${} @{} %{} &{} *{}', + matching => '~~', + special => 'nomethod fallback =', Most of the overloadable operators map one-to-one to these keys. Exceptions, including additional overloadable operations not @@ -922,7 +920,7 @@ Inheritance interacts with overloading in two ways. If C in - use overload key => value; + use overload key => value; is a string, it is interpreted as a method name - which may (in the usual way) be inherited from another class. @@ -943,7 +941,7 @@ be called to implement operation C<+> for an object in package C. =back Note that in Perl version prior to 5.18 inheritance of the C key -was not governed by the above rules. The value of C in the first +was not governed by the above rules. The value of C in the first overloaded ancestor was used. This was fixed in 5.18 to follow the usual rules of inheritance. @@ -1044,10 +1042,10 @@ and overload::remove_constant() from anywhere but import() and unimport() method From these methods they may be called as sub import { - shift; - return unless @_; - die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant'; - overload::constant integer => sub {Math::BigInt->new(shift)}; + shift; + return unless @_; + die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant'; + overload::constant integer => sub {Math::BigInt->new(shift)}; } =head1 IMPLEMENTATION @@ -1085,66 +1083,66 @@ Please add examples to what follows! Put this in F in your Perl library directory: - package two_face; # Scalars with separate string and - # numeric values. - sub new { my $p = shift; bless [@_], $p } - use overload '""' => \&str, '0+' => \&num, fallback => 1; - sub num {shift->[1]} - sub str {shift->[0]} + package two_face; # Scalars with separate string and + # numeric values. + sub new { my $p = shift; bless [@_], $p } + use overload '""' => \&str, '0+' => \&num, fallback => 1; + sub num {shift->[1]} + sub str {shift->[0]} Use it as follows: - require two_face; - my $seven = two_face->new("vii", 7); - printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1; - print "seven contains 'i'\n" if $seven =~ /i/; + require two_face; + my $seven = two_face->new("vii", 7); + printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1; + print "seven contains 'i'\n" if $seven =~ /i/; (The second line creates a scalar which has both a string value, and a numeric value.) This prints: - seven=vii, seven=7, eight=8 - seven contains 'i' + seven=vii, seven=7, eight=8 + seven contains 'i' =head2 Two-face References Suppose you want to create an object which is accessible as both an array reference and a hash reference. - package two_refs; - use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} }; - sub new { - my $p = shift; - bless \ [@_], $p; - } - sub gethash { - my %h; - my $self = shift; - tie %h, ref $self, $self; - \%h; - } - - sub TIEHASH { my $p = shift; bless \ shift, $p } - my %fields; - my $i = 0; - $fields{$_} = $i++ foreach qw{zero one two three}; - sub STORE { - my $self = ${shift()}; - my $key = $fields{shift()}; - defined $key or die "Out of band access"; - $$self->[$key] = shift; - } - sub FETCH { - my $self = ${shift()}; - my $key = $fields{shift()}; - defined $key or die "Out of band access"; - $$self->[$key]; - } + package two_refs; + use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} }; + sub new { + my $p = shift; + bless \ [@_], $p; + } + sub gethash { + my %h; + my $self = shift; + tie %h, ref $self, $self; + \%h; + } + + sub TIEHASH { my $p = shift; bless \ shift, $p } + my %fields; + my $i = 0; + $fields{$_} = $i++ foreach qw{zero one two three}; + sub STORE { + my $self = ${shift()}; + my $key = $fields{shift()}; + defined $key or die "Out of band access"; + $$self->[$key] = shift; + } + sub FETCH { + my $self = ${shift()}; + my $key = $fields{shift()}; + defined $key or die "Out of band access"; + $$self->[$key]; + } Now one can access an object using both the array and hash syntax: - my $bar = two_refs->new(3,4,5,6); - $bar->[2] = 11; - $bar->{two} == 11 or die 'bad hash fetch'; + my $bar = two_refs->new(3,4,5,6); + $bar->[2] = 11; + $bar->{two} == 11 or die 'bad hash fetch'; Note several important features of this example. First of all, the I type of $bar is a scalar reference, and we do not overload @@ -1163,51 +1161,53 @@ hash itself, the only problem one has to circumvent is how to access this I hash (as opposed to the I hash exhibited by the overloaded dereference operator). Here is one possible fetching routine: - sub access_hash { - my ($self, $key) = (shift, shift); - my $class = ref $self; - bless $self, 'overload::dummy'; # Disable overloading of %{} - my $out = $self->{$key}; - bless $self, $class; # Restore overloading - $out; - } + sub access_hash { + my ($self, $key) = (shift, shift); + my $class = ref $self; + bless $self, 'overload::dummy'; # Disable overloading of %{} + my $out = $self->{$key}; + bless $self, $class; # Restore overloading + $out; + } To remove creation of the tied hash on each access, one may an extra level of indirection which allows a non-circular structure of references: - package two_refs1; - use overload '%{}' => sub { ${shift()}->[1] }, - '@{}' => sub { ${shift()}->[0] }; - sub new { - my $p = shift; - my $a = [@_]; - my %h; - tie %h, $p, $a; - bless \ [$a, \%h], $p; - } - sub gethash { - my %h; - my $self = shift; - tie %h, ref $self, $self; - \%h; - } - - sub TIEHASH { my $p = shift; bless \ shift, $p } - my %fields; - my $i = 0; - $fields{$_} = $i++ foreach qw{zero one two three}; - sub STORE { - my $a = ${shift()}; - my $key = $fields{shift()}; - defined $key or die "Out of band access"; - $a->[$key] = shift; - } - sub FETCH { - my $a = ${shift()}; - my $key = $fields{shift()}; - defined $key or die "Out of band access"; - $a->[$key]; - } + package two_refs1; + use overload + '%{}' => sub { ${shift()}->[1] }, + '@{}' => sub { ${shift()}->[0] }; + + sub new { + my $p = shift; + my $a = [@_]; + my %h; + tie %h, $p, $a; + bless \ [$a, \%h], $p; + } + sub gethash { + my %h; + my $self = shift; + tie %h, ref $self, $self; + \%h; + } + + sub TIEHASH { my $p = shift; bless \ shift, $p } + my %fields; + my $i = 0; + $fields{$_} = $i++ foreach qw{zero one two three}; + sub STORE { + my $a = ${shift()}; + my $key = $fields{shift()}; + defined $key or die "Out of band access"; + $a->[$key] = shift; + } + sub FETCH { + my $a = ${shift()}; + my $key = $fields{shift()}; + defined $key or die "Out of band access"; + $a->[$key]; + } Now if $baz is overloaded like this, then C<$baz> is a reference to a reference to the intermediate array, which keeps a reference to an @@ -1233,15 +1233,15 @@ overloaded operations. Put this in F in your Perl library directory: - package symbolic; # Primitive symbolic calculator - use overload nomethod => \&wrap; + package symbolic; # Primitive symbolic calculator + use overload nomethod => \&wrap; - sub new { shift; bless ['n', @_] } - sub wrap { - my ($obj, $other, $inv, $meth) = @_; - ($obj, $other) = ($other, $obj) if $inv; - bless [$meth, $obj, $other]; - } + sub new { shift; bless ['n', @_] } + sub wrap { + my ($obj, $other, $inv, $meth) = @_; + ($obj, $other) = ($other, $obj) if $inv; + bless [$meth, $obj, $other]; + } This module is very unusual as overloaded modules go: it does not provide any usual overloaded operators, instead it provides an @@ -1253,20 +1253,20 @@ symbolic->new(3) >> contains C<['+', 2, ['n', 3]]>. Here is an example of the script which "calculates" the side of circumscribed octagon using the above package: - require symbolic; - my $iter = 1; # 2**($iter+2) = 8 - my $side = symbolic->new(1); - my $cnt = $iter; + require symbolic; + my $iter = 1; # 2**($iter+2) = 8 + my $side = symbolic->new(1); + my $cnt = $iter; - while ($cnt--) { - $side = (sqrt(1 + $side**2) - 1)/$side; - } - print "OK\n"; + while ($cnt--) { + $side = (sqrt(1 + $side**2) - 1)/$side; + } + print "OK\n"; The value of $side is - ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]], - undef], 1], ['n', 1]] + ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]], + undef], 1], ['n', 1]] Note that while we obtained this value using a nice little script, there is no simple way to I this value. In fact this value may @@ -1280,18 +1280,18 @@ again of type C, which will lead to an infinite loop. Add a pretty-printer method to the module F: - sub pretty { - my ($meth, $a, $b) = @{+shift}; - $a = 'u' unless defined $a; - $b = 'u' unless defined $b; - $a = $a->pretty if ref $a; - $b = $b->pretty if ref $b; - "[$meth $a $b]"; - } + sub pretty { + my ($meth, $a, $b) = @{+shift}; + $a = 'u' unless defined $a; + $b = 'u' unless defined $b; + $a = $a->pretty if ref $a; + $b = $b->pretty if ref $b; + "[$meth $a $b]"; + } Now one can finish the script by - print "side = ", $side->pretty, "\n"; + print "side = ", $side->pretty, "\n"; The method C is doing object-to-string conversion, so it is natural to overload the operator C<""> using this method. However, @@ -1302,21 +1302,21 @@ and $b. If these components use overloading, the catenation operator will look for an overloaded operator C<.>; if not present, it will look for an overloaded operator C<"">. Thus it is enough to use - use overload nomethod => \&wrap, '""' => \&str; - sub str { - my ($meth, $a, $b) = @{+shift}; - $a = 'u' unless defined $a; - $b = 'u' unless defined $b; - "[$meth $a $b]"; - } + use overload nomethod => \&wrap, '""' => \&str; + sub str { + my ($meth, $a, $b) = @{+shift}; + $a = 'u' unless defined $a; + $b = 'u' unless defined $b; + "[$meth $a $b]"; + } Now one can change the last line of the script to - print "side = $side\n"; + print "side = $side\n"; which outputs - side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]] + side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]] and one can inspect the value in debugger using all the possible methods. @@ -1335,41 +1335,42 @@ conversion routine. Here is the text of F with such a routine added (and slightly modified str()): - package symbolic; # Primitive symbolic calculator - use overload - nomethod => \&wrap, '""' => \&str, '0+' => \# - - sub new { shift; bless ['n', @_] } - sub wrap { - my ($obj, $other, $inv, $meth) = @_; - ($obj, $other) = ($other, $obj) if $inv; - bless [$meth, $obj, $other]; - } - sub str { - my ($meth, $a, $b) = @{+shift}; - $a = 'u' unless defined $a; - if (defined $b) { - "[$meth $a $b]"; - } else { - "[$meth $a]"; + package symbolic; # Primitive symbolic calculator + use overload + nomethod => \&wrap, '""' => \&str, '0+' => \# + + sub new { shift; bless ['n', @_] } + sub wrap { + my ($obj, $other, $inv, $meth) = @_; + ($obj, $other) = ($other, $obj) if $inv; + bless [$meth, $obj, $other]; + } + sub str { + my ($meth, $a, $b) = @{+shift}; + $a = 'u' unless defined $a; + if (defined $b) { + "[$meth $a $b]"; + } else { + "[$meth $a]"; + } + } + my %subr = ( + n => sub {$_[0]}, + sqrt => sub {sqrt $_[0]}, + '-' => sub {shift() - shift()}, + '+' => sub {shift() + shift()}, + '/' => sub {shift() / shift()}, + '*' => sub {shift() * shift()}, + '**' => sub {shift() ** shift()}, + ); + sub num { + my ($meth, $a, $b) = @{+shift}; + my $subr = $subr{$meth} + or die "Do not know how to ($meth) in symbolic"; + $a = $a->num if ref $a eq __PACKAGE__; + $b = $b->num if ref $b eq __PACKAGE__; + $subr->($a,$b); } - } - my %subr = ( n => sub {$_[0]}, - sqrt => sub {sqrt $_[0]}, - '-' => sub {shift() - shift()}, - '+' => sub {shift() + shift()}, - '/' => sub {shift() / shift()}, - '*' => sub {shift() * shift()}, - '**' => sub {shift() ** shift()}, - ); - sub num { - my ($meth, $a, $b) = @{+shift}; - my $subr = $subr{$meth} - or die "Do not know how to ($meth) in symbolic"; - $a = $a->num if ref $a eq __PACKAGE__; - $b = $b->num if ref $b eq __PACKAGE__; - $subr->($a,$b); - } All the work of numeric conversion is done in %subr and num(). Of course, %subr is not complete, it contains only operators used in the @@ -1378,24 +1379,24 @@ explicit recursion in num()? (Answer is at the end of this section.) Use this module like this: - require symbolic; - my $iter = symbolic->new(2); # 16-gon - my $side = symbolic->new(1); - my $cnt = $iter; + require symbolic; + my $iter = symbolic->new(2); # 16-gon + my $side = symbolic->new(1); + my $cnt = $iter; - while ($cnt) { - $cnt = $cnt - 1; # Mutator '--' not implemented - $side = (sqrt(1 + $side**2) - 1)/$side; - } - printf "%s=%f\n", $side, $side; - printf "pi=%f\n", $side*(2**($iter+2)); + while ($cnt) { + $cnt = $cnt - 1; # Mutator '--' not implemented + $side = (sqrt(1 + $side**2) - 1)/$side; + } + printf "%s=%f\n", $side, $side; + printf "pi=%f\n", $side*(2**($iter+2)); It prints (without so many line breaks) - [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] - [n 1]] 2]]] 1] - [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912 - pi=3.182598 + [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] + [n 1]] 2]]] 1] + [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912 + pi=3.182598 The above module is very primitive. It does not implement mutator methods (C<++>, C<-=> and so on), does not do deep copying @@ -1405,18 +1406,18 @@ operations which are used in the example. To implement most arithmetic operations is easy; one should just use the tables of operations, and change the code which fills %subr to - my %subr = ( 'n' => sub {$_[0]} ); - foreach my $op (split " ", $overload::ops{with_assign}) { - $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; - } - my @bins = qw(binary 3way_comparison num_comparison str_comparison); - foreach my $op (split " ", "@overload::ops{ @bins }") { - $subr{$op} = eval "sub {shift() $op shift()}"; - } - foreach my $op (split " ", "@overload::ops{qw(unary func)}") { - print "defining '$op'\n"; - $subr{$op} = eval "sub {$op shift()}"; - } + my %subr = ( 'n' => sub {$_[0]} ); + foreach my $op (split " ", $overload::ops{with_assign}) { + $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; + } + my @bins = qw(binary 3way_comparison num_comparison str_comparison); + foreach my $op (split " ", "@overload::ops{ @bins }") { + $subr{$op} = eval "sub {shift() $op shift()}"; + } + foreach my $op (split " ", "@overload::ops{qw(unary func)}") { + print "defining '$op'\n"; + $subr{$op} = eval "sub {$op shift()}"; + } Since subroutines implementing assignment operators are not required to modify their operands (see L above), @@ -1430,42 +1431,42 @@ To implement a copy constructor, add C<< '=' => \&cpy >> to C line, and code (this code assumes that mutators change things one level deep only, so recursive copying is not needed): - sub cpy { - my $self = shift; - bless [@$self], ref $self; - } + sub cpy { + my $self = shift; + bless [@$self], ref $self; + } To make C<++> and C<--> work, we need to implement actual mutators, either directly, or in C. We continue to do things inside C, thus add if ($meth eq '++' or $meth eq '--') { - @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference - return $obj; + @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference + return $obj; } after the first line of wrap(). This is not a most effective implementation, one may consider - sub inc { $_[0] = bless ['++', shift, 1]; } + sub inc { $_[0] = bless ['++', shift, 1]; } instead. As a final remark, note that one can fill %subr by - my %subr = ( 'n' => sub {$_[0]} ); - foreach my $op (split " ", $overload::ops{with_assign}) { - $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; - } - my @bins = qw(binary 3way_comparison num_comparison str_comparison); - foreach my $op (split " ", "@overload::ops{ @bins }") { - $subr{$op} = eval "sub {shift() $op shift()}"; - } - foreach my $op (split " ", "@overload::ops{qw(unary func)}") { - $subr{$op} = eval "sub {$op shift()}"; - } - $subr{'++'} = $subr{'+'}; - $subr{'--'} = $subr{'-'}; + my %subr = ( 'n' => sub {$_[0]} ); + foreach my $op (split " ", $overload::ops{with_assign}) { + $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}"; + } + my @bins = qw(binary 3way_comparison num_comparison str_comparison); + foreach my $op (split " ", "@overload::ops{ @bins }") { + $subr{$op} = eval "sub {shift() $op shift()}"; + } + foreach my $op (split " ", "@overload::ops{qw(unary func)}") { + $subr{$op} = eval "sub {$op shift()}"; + } + $subr{'++'} = $subr{'+'}; + $subr{'--'} = $subr{'-'}; This finishes implementation of a primitive symbolic calculator in 50 lines of Perl code. Since the numeric values of subexpressions @@ -1494,21 +1495,21 @@ until the value is I. To see it in action, add a method - sub STORE { - my $obj = shift; - $#$obj = 1; - @$obj->[0,1] = ('=', shift); - } + sub STORE { + my $obj = shift; + $#$obj = 1; + @$obj->[0,1] = ('=', shift); + } to the package C. After this change one can do - my $a = symbolic->new(3); - my $b = symbolic->new(4); - my $c = sqrt($a**2 + $b**2); + my $a = symbolic->new(3); + my $b = symbolic->new(4); + my $c = sqrt($a**2 + $b**2); and the numeric value of $c becomes 5. However, after calling - $a->STORE(12); $b->STORE(5); + $a->STORE(12); $b->STORE(5); the numeric value of $c becomes 13. There is no doubt now that the module symbolic provides a I calculator indeed. @@ -1516,35 +1517,35 @@ symbolic provides a I calculator indeed. To hide the rough edges under the hood, provide a tie()d interface to the package C. Add methods - sub TIESCALAR { my $pack = shift; $pack->new(@_) } - sub FETCH { shift } - sub nop { } # Around a bug + sub TIESCALAR { my $pack = shift; $pack->new(@_) } + sub FETCH { shift } + sub nop { } # Around a bug (the bug, fixed in Perl 5.14, is described in L<"BUGS">). One can use this new interface as - tie $a, 'symbolic', 3; - tie $b, 'symbolic', 4; - $a->nop; $b->nop; # Around a bug + tie $a, 'symbolic', 3; + tie $b, 'symbolic', 4; + $a->nop; $b->nop; # Around a bug - my $c = sqrt($a**2 + $b**2); + my $c = sqrt($a**2 + $b**2); Now numeric value of $c is 5. After C<$a = 12; $b = 5> the numeric value of $c becomes 13. To insulate the user of the module add a method - sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; } + sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; } Now - my ($a, $b); - symbolic->vars($a, $b); - my $c = sqrt($a**2 + $b**2); + my ($a, $b); + symbolic->vars($a, $b); + my $c = sqrt($a**2 + $b**2); - $a = 3; $b = 4; - printf "c5 %s=%f\n", $c, $c; + $a = 3; $b = 4; + printf "c5 %s=%f\n", $c, $c; - $a = 12; $b = 5; - printf "c13 %s=%f\n", $c, $c; + $a = 12; $b = 5; + printf "c13 %s=%f\n", $c, $c; shows that the numeric value of $c follows changes to the values of $a and $b. @@ -1607,11 +1608,11 @@ A pitfall when fallback is TRUE and Perl resorts to a built-in implementation of an operator is that some operators have more than one semantic, for example C<|>: - use overload '0+' => sub { $_[0]->{n}; }, - fallback => 1; - my $x = bless { n => 4 }, "main"; - my $y = bless { n => 8 }, "main"; - print $x | $y, "\n"; + use overload '0+' => sub { $_[0]->{n}; }, + fallback => 1; + my $x = bless { n => 4 }, "main"; + my $y = bless { n => 8 }, "main"; + print $x | $y, "\n"; You might expect this to output "12". In fact, it prints "<": the ASCII result of treating "|" @@ -1697,3 +1698,4 @@ The range operator C<..> cannot be overloaded. =cut +# ex: set ts=8 sts=4 sw=4 et: diff --git a/gnu/usr.bin/perl/lib/overload.t b/gnu/usr.bin/perl/lib/overload.t index b1a75e513a4..adb57d3ee20 100644 --- a/gnu/usr.bin/perl/lib/overload.t +++ b/gnu/usr.bin/perl/lib/overload.t @@ -1100,7 +1100,7 @@ is("a$utfvar", "a".200.2.1); # 224 - overload via sv_2pv_flags # were to eval the overload code in the caller's namespace, the privatisation # would be quite transparent. package Hderef; -use overload '%{}' => sub { (caller(0))[0] eq 'Foo' ? $_[0] : die "zap" }; +use overload '%{}' => sub { caller(0) eq 'Foo' ? $_[0] : die "zap" }; package Foo; @Foo::ISA = 'Hderef'; sub new { bless {}, shift } @@ -1906,11 +1906,11 @@ foreach my $op (qw(<=> == != < <= > >=)) { # eval should do tie, overload on its arg before checking taint */ push @tests, [ '1;', 'eval q(eval %s); $@ =~ /Insecure/', - '("")', '("")', [ 1, 2, 0 ], 0 ]; + '("")', '("")', [ 1, 1, 0 ], 0 ]; for my $sub (keys %subs) { - no warnings 'experimental::smartmatch'; + no warnings 'deprecated'; my $term = $subs{$sub}; my $t = sprintf $term, '$_[0][0]'; my $e ="sub { \$funcs .= '($sub)'; my \$r; if (\$use_int) {" @@ -1952,7 +1952,7 @@ foreach my $op (qw(<=> == != < <= > >=)) { ? "-\$_[0][0]" : "$_[3](\$_[0][0])"; my $r; - no warnings 'experimental::smartmatch'; + no warnings 'deprecated'; if ($use_int) { use integer; $r = eval $e; } @@ -1999,7 +1999,7 @@ foreach my $op (qw(<=> == != < <= > >=)) { $use_int = ($int ne ''); my $plain = $tainted_val; my $plain_term = $int . sprintf $sub_term, '$plain'; - my $exp = do {no warnings 'experimental::smartmatch'; eval $plain_term }; + my $exp = do {no warnings 'deprecated'; eval $plain_term }; diag("eval of plain_term <$plain_term> gave <$@>") if $@; SKIP: { is_if_taint_supported(tainted($exp), $exp_taint, @@ -2029,7 +2029,7 @@ foreach my $op (qw(<=> == != < <= > >=)) { my $res_term = $int . sprintf $sub_term, $var; my $desc = "<$res_term> $ov_pkg" ; - my $res = do { no warnings 'experimental::smartmatch'; eval $res_term }; + my $res = do { no warnings 'deprecated'; eval $res_term }; diag("eval of res_term $desc gave <$@>") if $@; # uniquely, the inc/dec ops return the original # ref rather than a copy, so stringify it to diff --git a/gnu/usr.bin/perl/lib/overload/numbers.pm b/gnu/usr.bin/perl/lib/overload/numbers.pm index ccea9e17bc8..9a6f457e529 100644 --- a/gnu/usr.bin/perl/lib/overload/numbers.pm +++ b/gnu/usr.bin/perl/lib/overload/numbers.pm @@ -1,4 +1,4 @@ -# -*- buffer-read-only: t -*- +# -*- mode: Perl; buffer-read-only: t -*- # # lib/overload/numbers.pm # @@ -173,4 +173,4 @@ our @enums = qw# { my $i = 0; our %enums = map { $_ => $i++ } @enums } -# ex: set ro: +# ex: set ro ft=perl: diff --git a/gnu/usr.bin/perl/lib/perl5db.pl b/gnu/usr.bin/perl/lib/perl5db.pl index 436437a6cab..51da5740f80 100644 --- a/gnu/usr.bin/perl/lib/perl5db.pl +++ b/gnu/usr.bin/perl/lib/perl5db.pl @@ -532,7 +532,7 @@ BEGIN { use vars qw($VERSION $header); # bump to X.XX in blead, only use X.XX_XX in maint -$VERSION = '1.73'; +$VERSION = '1.77'; $header = "perl5db.pl version $VERSION"; @@ -1799,17 +1799,6 @@ our ( @old_watch, ); -sub _DB__use_full_path -{ - # If running in the perl test suite, don't use old system libs - return &{$_[0]} if $ENV{PERL_CORE}; - local @INC = @INC; - eval { require Config; }; - unshift(@INC, - @Config::Config{qw(archlibexp privlibexp sitearchexp sitelibexp)}); - &{$_[0]}; -} - sub _DB__determine_if_we_should_break { # if we have something here, see if we should break. @@ -1972,10 +1961,7 @@ sub _DB__handle_y_command { if (!eval { local @INC = @INC; pop @INC if $INC[-1] eq '.'; - _DB__use_full_path(sub { - require PadWalker; - }); - PadWalker->VERSION(0.08) }) { + require PadWalker; PadWalker->VERSION(0.08) }) { my $Err = $@; _db_warn( $Err =~ /locate/ @@ -3272,7 +3258,7 @@ deal with them instead of processing them in-line. =head4 C - List lexicals in higher scope Uses C to find the lexicals supplied as arguments in a scope -above the current one and then displays then using C. +above the current one and then displays them using F. =head3 COMMANDS NOT WORKING AFTER PROGRAM ENDS @@ -3504,7 +3490,9 @@ again. =cut # No more commands? Quit. - $fall_off_end = 1 unless defined $cmd; # Emulate 'q' on EOF + unless (defined $cmd) { + DB::Obj::_do_quit(); + } # Evaluate post-prompt commands. foreach $evalarg (@$post) { @@ -4308,13 +4296,17 @@ sub _handle_x_command { return; } +sub _do_quit { + $fall_off_end = 1; + DB::clean_ENV(); + exit $?; +} + sub _handle_q_command { my $self = shift; if ($self->_is_full('q')) { - $fall_off_end = 1; - DB::clean_ENV(); - exit $?; + _do_quit(); } return; @@ -6837,15 +6829,13 @@ the appropriate attributes. We then use vars qw($ornaments); use vars qw($rl_attribs); + sub setterm { # Load Term::Readline, but quietly; don't debug it and don't trace it. local $frame = 0; local $doret = -2; - _DB__use_full_path(sub { - require Term::ReadLine; - }); - + require Term::ReadLine; # If noTTY is set, but we have a TTY name, go ahead and hook up to it. if ($notty) { @@ -7020,9 +7010,7 @@ qq[3>&1 xterm -title "Daughter Perl debugger $pids $name" -e sh -c 'tty 1>&3;\ # We need $term defined or we can not switch to the newly created xterm if ($tty ne '' && !defined $term) { - _DB__use_full_path(sub { - require Term::ReadLine; - }); + require Term::ReadLine; if ( !$rl ) { $term = Term::ReadLine::Stub->new( 'perldb', $IN, $OUT ); } @@ -8202,7 +8190,7 @@ B<|>I Run debugger command, piping DB::OUT to current pager. B<||>I Same as B<|>I but DB::OUT is temporarily select()ed as well. B<\=> [I I] Define a command alias, or list current aliases. I Execute as a perl statement in current package. -B Pure-man-restart of debugger, some of debugger state +B Poor man's restart of the debugger, some of debugger state and command-line options may be lost. Currently the following settings are preserved: history, breakpoints and actions, debugger Bptions @@ -8378,7 +8366,7 @@ B<||>I Same as B<|>I but DB::OUT is temporarilly select()ed B<\=> [I I] Define a command alias, or list current aliases. I Execute as a perl statement in current package. B Show versions of loaded modules. -B Pure-man-restart of debugger, some of debugger state +B Poor man's restart of the debugger, some of debugger state and command-line options may be lost. Currently the following settings are preserved: history, breakpoints and actions, debugger Bptions @@ -8855,7 +8843,7 @@ sub CvGV_name_or_bust { return if $skipCvGV; # Backdoor to avoid problems if XS broken... return unless ref $in; $in = \&$in; # Hard reference... - eval { _DB__use_full_path(sub { require Devel::Peek; 1; }); } or return; + eval { require Devel::Peek; 1 } or return; my $gv = Devel::Peek::CvGV($in) or return; *$gv{PACKAGE} . '::' . *$gv{NAME}; } ## end sub CvGV_name_or_bust @@ -10388,7 +10376,8 @@ sub cmd_prepost { Contains the C routine that the debugger uses to issue the C message after the program completes. See -the C block documentation for more details. +the L|/END PROCESSING - THE END BLOCK> block documentation for more +details. =cut diff --git a/gnu/usr.bin/perl/lib/perl5db.t b/gnu/usr.bin/perl/lib/perl5db.t index 8ab456c8812..c38e9994bc3 100644 --- a/gnu/usr.bin/perl/lib/perl5db.t +++ b/gnu/usr.bin/perl/lib/perl5db.t @@ -404,9 +404,11 @@ results. =head1 DESCRIPTION -DebugWrap is a simple class that executes a set of debugger commands -against a program under the debugger and provides some simple methods -to examine the results. +DebugWrap is a simple class used when testing the Perl debugger that +executes a set of debugger commands against a program under the +debugger and provides some simple methods to examine the results. + +It is not installed to your system. =head2 Creating a DebugWrap object @@ -459,7 +461,7 @@ include the output from the program under test. Test that the debugger output matches the given regular expression object (as with qr//). -Equivelent to: +Equivalent to: like($wrapper->get_contents, $re, $test_name); @@ -468,7 +470,7 @@ Equivelent to: Test that the debugger output does not match the given regular expression object (as with qr//). -Equivelent to: +Equivalent to: unlike($wrapper->get_contents, $re, $test_name); @@ -484,7 +486,7 @@ capturing stderr. Test that the program output matches the given regular expression object (as with qr//). -Equivelent to: +Equivalent to: like($wrapper->get_output, $re, $test_name); @@ -493,7 +495,7 @@ Equivelent to: Test that the program output does not match the given regular expression object (as with qr//). -Equivelent to: +Equivalent to: unlike($wrapper->get_output, $re, $test_name); diff --git a/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt b/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt index bfb6b47a558..49cd25626a7 100644 --- a/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt +++ b/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt @@ -1,8 +1,8 @@ -# ArabicShaping-14.0.0.txt -# Date: 2021-05-21, 01:54:00 GMT [KW, RP] -# © 2021 Unicode®, Inc. +# ArabicShaping-15.0.0.txt +# Date: 2022-02-14, 18:50:00 GMT [KW, RP] +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # This file is a normative contributory data file in the # Unicode Character Database. diff --git a/gnu/usr.bin/perl/lib/unicore/BidiBrackets.txt b/gnu/usr.bin/perl/lib/unicore/BidiBrackets.txt index 89698f588ae..e138e7f5bea 100644 --- a/gnu/usr.bin/perl/lib/unicore/BidiBrackets.txt +++ b/gnu/usr.bin/perl/lib/unicore/BidiBrackets.txt @@ -1,6 +1,6 @@ -# BidiBrackets-14.0.0.txt -# Date: 2021-06-30, 23:59:00 GMT [AG, LI, KW] -# © 2021 Unicode®, Inc. +# BidiBrackets-15.0.0.txt +# Date: 2022-05-03, 18:42:00 GMT [AG, LI, KW] +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see https://www.unicode.org/terms_of_use.html # diff --git a/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt b/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt index bd8e2c5d001..5861d6e7f4b 100644 --- a/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt +++ b/gnu/usr.bin/perl/lib/unicore/BidiMirroring.txt @@ -1,6 +1,6 @@ -# BidiMirroring-14.0.0.txt -# Date: 2021-08-08, 22:55:00 GMT [KW, RP] -# © 2021 Unicode®, Inc. +# BidiMirroring-15.0.0.txt +# Date: 2022-05-03, 18:47:00 GMT [KW, RP] +# © 2022 Unicode®, Inc. # For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database @@ -15,7 +15,7 @@ # value, for which there is another Unicode character that typically has a glyph # that is the mirror image of the original character's glyph. # -# The repertoire covered by the file is Unicode 14.0.0. +# The repertoire covered by the file is Unicode 15.0.0. # # The file contains a list of lines with mappings from one code point # to another one for character-based mirroring. diff --git a/gnu/usr.bin/perl/lib/unicore/Blocks.txt b/gnu/usr.bin/perl/lib/unicore/Blocks.txt index cc5d61988bb..12684594c9f 100644 --- a/gnu/usr.bin/perl/lib/unicore/Blocks.txt +++ b/gnu/usr.bin/perl/lib/unicore/Blocks.txt @@ -1,10 +1,10 @@ -# Blocks-14.0.0.txt -# Date: 2021-01-22, 23:29:00 GMT [KW] -# © 2021 Unicode®, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# Blocks-15.0.0.txt +# Date: 2022-01-28, 20:58:00 GMT [KW] +# © 2022 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Format: # Start Code..End Code; Block Name @@ -15,7 +15,7 @@ # and underbars are ignored. # For example, "Latin Extended-A" and "latin extended a" are equivalent. # For more information on the comparison of property values, -# see UAX #44: http://www.unicode.org/reports/tr44/ +# see UAX #44: https://www.unicode.org/reports/tr44/ # # All block ranges start with a value where (cp MOD 16) = 0, # and end with a value where (cp MOD 16) = 15. In other words, @@ -241,6 +241,7 @@ FFF0..FFFF; Specials 10D00..10D3F; Hanifi Rohingya 10E60..10E7F; Rumi Numeral Symbols 10E80..10EBF; Yezidi +10EC0..10EFF; Arabic Extended-C 10F00..10F2F; Old Sogdian 10F30..10F6F; Sogdian 10F70..10FAF; Old Uyghur @@ -272,11 +273,13 @@ FFF0..FFFF; Specials 11A50..11AAF; Soyombo 11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A 11AC0..11AFF; Pau Cin Hau +11B00..11B5F; Devanagari Extended-A 11C00..11C6F; Bhaiksuki 11C70..11CBF; Marchen 11D00..11D5F; Masaram Gondi 11D60..11DAF; Gunjala Gondi 11EE0..11EFF; Makasar +11F00..11F5F; Kawi 11FB0..11FBF; Lisu Supplement 11FC0..11FFF; Tamil Supplement 12000..123FF; Cuneiform @@ -284,7 +287,7 @@ FFF0..FFFF; Specials 12480..1254F; Early Dynastic Cuneiform 12F90..12FFF; Cypro-Minoan 13000..1342F; Egyptian Hieroglyphs -13430..1343F; Egyptian Hieroglyph Format Controls +13430..1345F; Egyptian Hieroglyph Format Controls 14400..1467F; Anatolian Hieroglyphs 16800..16A3F; Bamum Supplement 16A40..16A6F; Mro @@ -309,6 +312,7 @@ FFF0..FFFF; Specials 1D000..1D0FF; Byzantine Musical Symbols 1D100..1D1FF; Musical Symbols 1D200..1D24F; Ancient Greek Musical Notation +1D2C0..1D2DF; Kaktovik Numerals 1D2E0..1D2FF; Mayan Numerals 1D300..1D35F; Tai Xuan Jing Symbols 1D360..1D37F; Counting Rod Numerals @@ -316,9 +320,11 @@ FFF0..FFFF; Specials 1D800..1DAAF; Sutton SignWriting 1DF00..1DFFF; Latin Extended-G 1E000..1E02F; Glagolitic Supplement +1E030..1E08F; Cyrillic Extended-D 1E100..1E14F; Nyiakeng Puachue Hmong 1E290..1E2BF; Toto 1E2C0..1E2FF; Wancho +1E4D0..1E4FF; Nag Mundari 1E7E0..1E7FF; Ethiopic Extended-B 1E800..1E8DF; Mende Kikakui 1E900..1E95F; Adlam @@ -348,6 +354,7 @@ FFF0..FFFF; Specials 2CEB0..2EBEF; CJK Unified Ideographs Extension F 2F800..2FA1F; CJK Compatibility Ideographs Supplement 30000..3134F; CJK Unified Ideographs Extension G +31350..323AF; CJK Unified Ideographs Extension H E0000..E007F; Tags E0100..E01EF; Variation Selectors Supplement F0000..FFFFF; Supplementary Private Use Area-A diff --git a/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt b/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt index 61a45878efa..88434a695e7 100644 --- a/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt +++ b/gnu/usr.bin/perl/lib/unicore/CJKRadicals.txt @@ -1,10 +1,10 @@ -# CJKRadicals-14.0.0.txt -# Date: 2021-03-16, 21:39:00 GMT [RC, KW, LI] -# © 2021 Unicode®, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# CJKRadicals-15.0.0.txt +# Date: 2022-05-03, 18:49:00 GMT [RC, KW, LI] +# © 2022 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Mapping from CJK radical numbers to characters # @@ -23,7 +23,7 @@ # and in particular they can end with a U+0027 ' APOSTROPHE. # # For more information, see UAX #38: Unicode Han Database (Unihan), -# at http://www.unicode.org/reports/tr38/ +# at https://www.unicode.org/reports/tr38/ # # This file was created for Unicode 5.2 by Richard Cook. # Updated for Unicode 6.0 by Richard Cook. diff --git a/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt b/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt index 932ace29e6d..65aa0fcd6b3 100644 --- a/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt +++ b/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt @@ -1,11 +1,11 @@ -# CaseFolding-14.0.0.txt -# Date: 2021-03-08, 19:35:41 GMT -# © 2021 Unicode®, Inc. +# CaseFolding-15.0.0.txt +# Date: 2022-02-02, 23:35:35 GMT +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Case Folding Properties # diff --git a/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt b/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt index 74e425e2a0f..bbc8bd75d83 100644 --- a/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt +++ b/gnu/usr.bin/perl/lib/unicore/CompositionExclusions.txt @@ -1,6 +1,6 @@ -# CompositionExclusions-14.0.0.txt -# Date: 2021-03-30, 23:59:00 GMT [KW, LI] -# © 2021 Unicode®, Inc. +# CompositionExclusions-15.0.0.txt +# Date: 2022-05-03, 18:50:00 GMT [KW, LI] +# © 2022 Unicode®, Inc. # For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database diff --git a/gnu/usr.bin/perl/lib/unicore/DAge.txt b/gnu/usr.bin/perl/lib/unicore/DAge.txt index c8ee531b8af..f8e83aee06f 100644 --- a/gnu/usr.bin/perl/lib/unicore/DAge.txt +++ b/gnu/usr.bin/perl/lib/unicore/DAge.txt @@ -1,11 +1,11 @@ -# DerivedAge-14.0.0.txt -# Date: 2021-07-10, 00:35:00 GMT -# © 2021 Unicode®, Inc. +# DerivedAge-15.0.0.txt +# Date: 2022-04-26, 23:14:23 GMT +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # Unicode Character Database: Derived Property Data # This file shows when various code points were first assigned in Unicode. @@ -1949,4 +1949,46 @@ FDFE..FDFF ; 14.0 # [2] ARABIC LIGATURE SUBHAANAHU WA TAAALAA..ARABIC LIGAT # Total code points: 838 +# ================================================ + +# Age=V15_0 + +# Newly assigned in Unicode 15.0.0 (September, 2022) + +0CF3 ; 15.0 # KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT +0ECE ; 15.0 # LAO YAMAKKAN +10EFD..10EFF ; 15.0 # [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA +1123F..11241 ; 15.0 # [3] KHOJKI LETTER QA..KHOJKI VOWEL SIGN VOCALIC R +11B00..11B09 ; 15.0 # [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU +11F00..11F10 ; 15.0 # [17] KAWI SIGN CANDRABINDU..KAWI LETTER O +11F12..11F3A ; 15.0 # [41] KAWI LETTER KA..KAWI VOWEL SIGN VOCALIC R +11F3E..11F59 ; 15.0 # [28] KAWI VOWEL SIGN E..KAWI DIGIT NINE +1342F ; 15.0 # EGYPTIAN HIEROGLYPH V011D +13439..1343F ; 15.0 # [7] EGYPTIAN HIEROGLYPH INSERT AT MIDDLE..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE +13440..13455 ; 15.0 # [22] EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED +1B132 ; 15.0 # HIRAGANA LETTER SMALL KO +1B155 ; 15.0 # KATAKANA LETTER SMALL KO +1D2C0..1D2D3 ; 15.0 # [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN +1DF25..1DF2A ; 15.0 # [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; 15.0 # [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; 15.0 # COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +1E4D0..1E4F9 ; 15.0 # [42] NAG MUNDARI LETTER O..NAG MUNDARI DIGIT NINE +1F6DC ; 15.0 # WIRELESS +1F774..1F776 ; 15.0 # [3] LOT OF FORTUNE..LUNAR ECLIPSE +1F77B..1F77F ; 15.0 # [5] HAUMEA..ORCUS +1F7D9 ; 15.0 # NINE POINTED WHITE STAR +1FA75..1FA77 ; 15.0 # [3] LIGHT BLUE HEART..PINK HEART +1FA87..1FA88 ; 15.0 # [2] MARACAS..FLUTE +1FAAD..1FAAF ; 15.0 # [3] FOLDING HAND FAN..KHANDA +1FABB..1FABD ; 15.0 # [3] HYACINTH..WING +1FABF ; 15.0 # GOOSE +1FACE..1FACF ; 15.0 # [2] MOOSE..DONKEY +1FADA..1FADB ; 15.0 # [2] GINGER ROOT..PEA POD +1FAE8 ; 15.0 # SHAKING FACE +1FAF7..1FAF8 ; 15.0 # [2] LEFTWARDS PUSHING HAND..RIGHTWARDS PUSHING HAND +2B739 ; 15.0 # CJK UNIFIED IDEOGRAPH-2B739 +31350..323AF ; 15.0 # [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF + +# Total code points: 4489 + # EOF diff --git a/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt b/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt index afc2abd97ec..8b482b5c10a 100644 --- a/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt +++ b/gnu/usr.bin/perl/lib/unicore/DCoreProperties.txt @@ -1,11 +1,11 @@ -# DerivedCoreProperties-14.0.0.txt -# Date: 2021-08-12, 23:12:53 GMT -# © 2021 Unicode®, Inc. +# DerivedCoreProperties-15.0.0.txt +# Date: 2022-08-05, 22:17:05 GMT +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # ================================================ @@ -462,6 +462,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0BD7 ; Alphabetic # Mc TAMIL AU LENGTH MARK 0C00 ; Alphabetic # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C03 ; Alphabetic # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C04 ; Alphabetic # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE 0C05..0C0C ; Alphabetic # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; Alphabetic # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; Alphabetic # Lo [23] TELUGU LETTER O..TELUGU LETTER NA @@ -497,6 +498,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0CE0..0CE1 ; Alphabetic # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; Alphabetic # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CF1..0CF2 ; Alphabetic # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3 ; Alphabetic # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; Alphabetic # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; Alphabetic # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C ; Alphabetic # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -552,7 +554,7 @@ FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A 0F49..0F6C ; Alphabetic # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F71..0F7E ; Alphabetic # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F7F ; Alphabetic # Mc TIBETAN SIGN RNAM BCAD -0F80..0F81 ; Alphabetic # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II +0F80..0F83 ; Alphabetic # Mn [4] TIBETAN VOWEL SIGN REVERSED I..TIBETAN SIGN SNA LDAN 0F88..0F8C ; Alphabetic # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 0F8D..0F97 ; Alphabetic # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Alphabetic # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA @@ -1053,6 +1055,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11071..11072 ; Alphabetic # Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O 11073..11074 ; Alphabetic # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O 11075 ; Alphabetic # Lo BRAHMI LETTER OLD TAMIL LLA +11080..11081 ; Alphabetic # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA 11082 ; Alphabetic # Mc KAITHI SIGN VISARGA 11083..110AF ; Alphabetic # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110B0..110B2 ; Alphabetic # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II @@ -1089,6 +1092,8 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11234 ; Alphabetic # Mn KHOJKI SIGN ANUSVARA 11237 ; Alphabetic # Mn KHOJKI SIGN SHADDA 1123E ; Alphabetic # Mn KHOJKI SIGN SUKUN +1123F..11240 ; Alphabetic # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241 ; Alphabetic # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286 ; Alphabetic # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; Alphabetic # Lo MULTANI LETTER GHA 1128A..1128D ; Alphabetic # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -1243,12 +1248,22 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 11EE0..11EF2 ; Alphabetic # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA 11EF3..11EF4 ; Alphabetic # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; Alphabetic # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F00..11F01 ; Alphabetic # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02 ; Alphabetic # Lo KAWI SIGN REPHA +11F03 ; Alphabetic # Mc KAWI SIGN VISARGA +11F04..11F10 ; Alphabetic # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; Alphabetic # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35 ; Alphabetic # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; Alphabetic # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; Alphabetic # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; Alphabetic # Mn KAWI VOWEL SIGN EU 11FB0 ; Alphabetic # Lo LISU LETTER YHA 12000..12399 ; Alphabetic # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; Alphabetic # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; Alphabetic # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 12F90..12FF0 ; Alphabetic # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 -13000..1342E ; Alphabetic # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +13000..1342F ; Alphabetic # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13441..13446 ; Alphabetic # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN 14400..14646 ; Alphabetic # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; Alphabetic # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; Alphabetic # Lo [31] MRO LETTER TA..MRO LETTER TEK @@ -1275,7 +1290,9 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 1AFF5..1AFFB ; Alphabetic # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 1AFFD..1AFFE ; Alphabetic # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B122 ; Alphabetic # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; Alphabetic # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; Alphabetic # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; Alphabetic # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; Alphabetic # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; Alphabetic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; Alphabetic # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -1316,16 +1333,21 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 1DF00..1DF09 ; Alphabetic # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0A ; Alphabetic # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1DF0B..1DF1E ; Alphabetic # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; Alphabetic # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Alphabetic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Alphabetic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Alphabetic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; Alphabetic # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; Alphabetic # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C ; Alphabetic # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E137..1E13D ; Alphabetic # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E14E ; Alphabetic # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ 1E290..1E2AD ; Alphabetic # Lo [30] TOTO LETTER PA..TOTO LETTER A 1E2C0..1E2EB ; Alphabetic # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E4D0..1E4EA ; Alphabetic # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; Alphabetic # Lm NAG MUNDARI SIGN OJOD 1E7E0..1E7E6 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE ; Alphabetic # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE @@ -1371,14 +1393,15 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 1F150..1F169 ; Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z 20000..2A6DF ; Alphabetic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF -2A700..2B738 ; Alphabetic # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2A700..2B739 ; Alphabetic # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; Alphabetic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Alphabetic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Alphabetic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; Alphabetic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; Alphabetic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; Alphabetic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 133396 +# Total code points: 137765 # ================================================ @@ -1663,6 +1686,7 @@ FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG 052F ; Lowercase # L& CYRILLIC SMALL LETTER EL WITH DESCENDER 0560..0588 ; Lowercase # L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE 10D0..10FA ; Lowercase # L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN +10FC ; Lowercase # Lm MODIFIER LETTER GEORGIAN NAR 10FD..10FF ; Lowercase # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 13F8..13FD ; Lowercase # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Lowercase # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK @@ -2012,12 +2036,14 @@ A7D3 ; Lowercase # L& LATIN SMALL LETTER DOUBLE THORN A7D5 ; Lowercase # L& LATIN SMALL LETTER DOUBLE WYNN A7D7 ; Lowercase # L& LATIN SMALL LETTER MIDDLE SCOTS S A7D9 ; Lowercase # L& LATIN SMALL LETTER SIGMOID S +A7F2..A7F4 ; Lowercase # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F6 ; Lowercase # L& LATIN SMALL LETTER REVERSED HALF H A7F8..A7F9 ; Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Lowercase # L& LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Lowercase # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Lowercase # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB68 ; Lowercase # L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69 ; Lowercase # Lm MODIFIER LETTER SMALL TURNED W AB70..ABBF ; Lowercase # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Lowercase # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Lowercase # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH @@ -2065,9 +2091,11 @@ FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 1D7CB ; Lowercase # L& MATHEMATICAL BOLD SMALL DIGAMMA 1DF00..1DF09 ; Lowercase # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0B..1DF1E ; Lowercase # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; Lowercase # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; Lowercase # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E922..1E943 ; Lowercase # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA -# Total code points: 2471 +# Total code points: 2544 # ================================================ @@ -2767,6 +2795,7 @@ FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH 10C7 ; Cased # L& GEORGIAN CAPITAL LETTER YN 10CD ; Cased # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; Cased # L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN +10FC ; Cased # Lm MODIFIER LETTER GEORGIAN NAR 10FD..10FF ; Cased # L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 13A0..13F5 ; Cased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; Cased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV @@ -2837,12 +2866,14 @@ A790..A7CA ; Cased # L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SM A7D0..A7D1 ; Cased # L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G A7D3 ; Cased # L& LATIN SMALL LETTER DOUBLE THORN A7D5..A7D9 ; Cased # L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S +A7F2..A7F4 ; Cased # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F5..A7F6 ; Cased # L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H A7F8..A7F9 ; Cased # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Cased # L& LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Cased # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Cased # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB68 ; Cased # L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE +AB69 ; Cased # Lm MODIFIER LETTER SMALL TURNED W AB70..ABBF ; Cased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Cased # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Cased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH @@ -2899,12 +2930,14 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 1D7C4..1D7CB ; Cased # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1DF00..1DF09 ; Cased # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0B..1DF1E ; Cased # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; Cased # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; Cased # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E900..1E943 ; Cased # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1F130..1F149 ; Cased # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z 1F150..1F169 ; Cased # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Cased # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -# Total code points: 4453 +# Total code points: 4526 # ================================================ @@ -3054,7 +3087,7 @@ FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN 0EB1 ; Case_Ignorable # Mn LAO VOWEL SIGN MAI KAN 0EB4..0EBC ; Case_Ignorable # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO 0EC6 ; Case_Ignorable # Lm LAO KO LA -0EC8..0ECD ; Case_Ignorable # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE ; Case_Ignorable # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0F18..0F19 ; Case_Ignorable # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F35 ; Case_Ignorable # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Case_Ignorable # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS @@ -3263,6 +3296,7 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 10AE5..10AE6 ; Case_Ignorable # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 10D24..10D27 ; Case_Ignorable # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10EAB..10EAC ; Case_Ignorable # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10EFD..10EFF ; Case_Ignorable # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA 10F46..10F50 ; Case_Ignorable # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW 10F82..10F85 ; Case_Ignorable # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW 11001 ; Case_Ignorable # Mn BRAHMI SIGN ANUSVARA @@ -3287,6 +3321,7 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 11234 ; Case_Ignorable # Mn KHOJKI SIGN ANUSVARA 11236..11237 ; Case_Ignorable # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; Case_Ignorable # Mn KHOJKI SIGN SUKUN +11241 ; Case_Ignorable # Mn KHOJKI VOWEL SIGN VOCALIC R 112DF ; Case_Ignorable # Mn KHUDAWADI SIGN ANUSVARA 112E3..112EA ; Case_Ignorable # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 11300..11301 ; Case_Ignorable # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU @@ -3348,7 +3383,13 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 11D95 ; Case_Ignorable # Mn GUNJALA GONDI SIGN ANUSVARA 11D97 ; Case_Ignorable # Mn GUNJALA GONDI VIRAMA 11EF3..11EF4 ; Case_Ignorable # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U -13430..13438 ; Case_Ignorable # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT +11F00..11F01 ; Case_Ignorable # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F36..11F3A ; Case_Ignorable # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F40 ; Case_Ignorable # Mn KAWI VOWEL SIGN EU +11F42 ; Case_Ignorable # Mn KAWI CONJOINER +13430..1343F ; Case_Ignorable # Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE +13440 ; Case_Ignorable # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13447..13455 ; Case_Ignorable # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED 16AF0..16AF4 ; Case_Ignorable # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Case_Ignorable # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16B40..16B43 ; Case_Ignorable # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM @@ -3382,10 +3423,14 @@ FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI 1E01B..1E021 ; Case_Ignorable # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Case_Ignorable # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Case_Ignorable # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; Case_Ignorable # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; Case_Ignorable # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E130..1E136 ; Case_Ignorable # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D ; Case_Ignorable # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E2AE ; Case_Ignorable # Mn TOTO SIGN RISING TONE 1E2EC..1E2EF ; Case_Ignorable # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI +1E4EB ; Case_Ignorable # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF ; Case_Ignorable # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH 1E8D0..1E8D6 ; Case_Ignorable # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E944..1E94A ; Case_Ignorable # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA 1E94B ; Case_Ignorable # Lm ADLAM NASALIZATION MARK @@ -3394,7 +3439,7 @@ E0001 ; Case_Ignorable # Cf LANGUAGE TAG E0020..E007F ; Case_Ignorable # Cf [96] TAG SPACE..CANCEL TAG E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 2602 +# Total code points: 2707 # ================================================ @@ -6617,6 +6662,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 111DC ; ID_Start # Lo SHARADA HEADSTROKE 11200..11211 ; ID_Start # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; ID_Start # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +1123F..11240 ; ID_Start # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I 11280..11286 ; ID_Start # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; ID_Start # Lo MULTANI LETTER GHA 1128A..1128D ; ID_Start # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -6679,12 +6725,16 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 11D6A..11D89 ; ID_Start # Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA 11D98 ; ID_Start # Lo GUNJALA GONDI OM 11EE0..11EF2 ; ID_Start # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA +11F02 ; ID_Start # Lo KAWI SIGN REPHA +11F04..11F10 ; ID_Start # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; ID_Start # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA 11FB0 ; ID_Start # Lo LISU LETTER YHA 12000..12399 ; ID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; ID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; ID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 12F90..12FF0 ; ID_Start # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 -13000..1342E ; ID_Start # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +13000..1342F ; ID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13441..13446 ; ID_Start # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN 14400..14646 ; ID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; ID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; ID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK @@ -6707,7 +6757,9 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1AFF5..1AFFB ; ID_Start # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 1AFFD..1AFFE ; ID_Start # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B122 ; ID_Start # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; ID_Start # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; ID_Start # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; ID_Start # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; ID_Start # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; ID_Start # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; ID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -6747,11 +6799,15 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1DF00..1DF09 ; ID_Start # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0A ; ID_Start # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1DF0B..1DF1E ; ID_Start # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; ID_Start # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; ID_Start # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E100..1E12C ; ID_Start # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E137..1E13D ; ID_Start # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E14E ; ID_Start # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ 1E290..1E2AD ; ID_Start # Lo [30] TOTO LETTER PA..TOTO LETTER A 1E2C0..1E2EB ; ID_Start # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E4D0..1E4EA ; ID_Start # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; ID_Start # Lm NAG MUNDARI SIGN OJOD 1E7E0..1E7E6 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB ; ID_Start # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE ; ID_Start # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE @@ -6793,14 +6849,15 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 1EEA5..1EEA9 ; ID_Start # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; ID_Start # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 20000..2A6DF ; ID_Start # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF -2A700..2B738 ; ID_Start # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2A700..2B739 ; ID_Start # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; ID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; ID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; ID_Start # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; ID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; ID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; ID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 131997 +# Total code points: 136345 # ================================================ @@ -7083,6 +7140,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 0CE2..0CE3 ; ID_Continue # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF ; ID_Continue # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; ID_Continue # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3 ; ID_Continue # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; ID_Continue # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; ID_Continue # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C ; ID_Continue # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -7136,7 +7194,7 @@ FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL 0EBD ; ID_Continue # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; ID_Continue # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; ID_Continue # Lm LAO KO LA -0EC8..0ECD ; ID_Continue # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE ; ID_Continue # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0ED0..0ED9 ; ID_Continue # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF ; ID_Continue # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; ID_Continue # Lo TIBETAN SYLLABLE OM @@ -7719,6 +7777,7 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 10E80..10EA9 ; ID_Continue # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EAB..10EAC ; ID_Continue # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EB0..10EB1 ; ID_Continue # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EFD..10EFF ; ID_Continue # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA 10F00..10F1C ; ID_Continue # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; ID_Continue # Lo OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; ID_Continue # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN @@ -7781,6 +7840,8 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 11235 ; ID_Continue # Mc KHOJKI SIGN VIRAMA 11236..11237 ; ID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; ID_Continue # Mn KHOJKI SIGN SUKUN +1123F..11240 ; ID_Continue # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241 ; ID_Continue # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286 ; ID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; ID_Continue # Lo MULTANI LETTER GHA 1128A..1128D ; ID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -7963,12 +8024,27 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 11EE0..11EF2 ; ID_Continue # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA 11EF3..11EF4 ; ID_Continue # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; ID_Continue # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F00..11F01 ; ID_Continue # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02 ; ID_Continue # Lo KAWI SIGN REPHA +11F03 ; ID_Continue # Mc KAWI SIGN VISARGA +11F04..11F10 ; ID_Continue # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; ID_Continue # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35 ; ID_Continue # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; ID_Continue # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; ID_Continue # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; ID_Continue # Mn KAWI VOWEL SIGN EU +11F41 ; ID_Continue # Mc KAWI SIGN KILLER +11F42 ; ID_Continue # Mn KAWI CONJOINER +11F50..11F59 ; ID_Continue # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE 11FB0 ; ID_Continue # Lo LISU LETTER YHA 12000..12399 ; ID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; ID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; ID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 12F90..12FF0 ; ID_Continue # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 -13000..1342E ; ID_Continue # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +13000..1342F ; ID_Continue # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13440 ; ID_Continue # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13441..13446 ; ID_Continue # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13447..13455 ; ID_Continue # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED 14400..14646 ; ID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; ID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; ID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK @@ -8001,7 +8077,9 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 1AFF5..1AFFB ; ID_Continue # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 1AFFD..1AFFE ; ID_Continue # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B122 ; ID_Continue # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; ID_Continue # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; ID_Continue # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; ID_Continue # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; ID_Continue # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; ID_Continue # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; ID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -8058,11 +8136,14 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 1DF00..1DF09 ; ID_Continue # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0A ; ID_Continue # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1DF0B..1DF1E ; ID_Continue # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; ID_Continue # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; ID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; ID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; ID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; ID_Continue # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; ID_Continue # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C ; ID_Continue # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E130..1E136 ; ID_Continue # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D ; ID_Continue # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER @@ -8073,6 +8154,10 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 1E2C0..1E2EB ; ID_Continue # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E2EC..1E2EF ; ID_Continue # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9 ; ID_Continue # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE +1E4D0..1E4EA ; ID_Continue # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; ID_Continue # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF ; ID_Continue # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E4F0..1E4F9 ; ID_Continue # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE 1E7E0..1E7E6 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE ; ID_Continue # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE @@ -8118,15 +8203,16 @@ FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN 1EEAB..1EEBB ; ID_Continue # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1FBF0..1FBF9 ; ID_Continue # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE 20000..2A6DF ; ID_Continue # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF -2A700..2B738 ; ID_Continue # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2A700..2B739 ; ID_Continue # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; ID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; ID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; ID_Continue # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; ID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; ID_Continue # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; ID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 135072 +# Total code points: 139482 # ================================================ @@ -8685,6 +8771,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 111DC ; XID_Start # Lo SHARADA HEADSTROKE 11200..11211 ; XID_Start # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; XID_Start # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +1123F..11240 ; XID_Start # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I 11280..11286 ; XID_Start # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; XID_Start # Lo MULTANI LETTER GHA 1128A..1128D ; XID_Start # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -8747,12 +8834,16 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 11D6A..11D89 ; XID_Start # Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA 11D98 ; XID_Start # Lo GUNJALA GONDI OM 11EE0..11EF2 ; XID_Start # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA +11F02 ; XID_Start # Lo KAWI SIGN REPHA +11F04..11F10 ; XID_Start # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; XID_Start # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA 11FB0 ; XID_Start # Lo LISU LETTER YHA 12000..12399 ; XID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; XID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; XID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 12F90..12FF0 ; XID_Start # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 -13000..1342E ; XID_Start # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +13000..1342F ; XID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13441..13446 ; XID_Start # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN 14400..14646 ; XID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; XID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; XID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK @@ -8775,7 +8866,9 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1AFF5..1AFFB ; XID_Start # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 1AFFD..1AFFE ; XID_Start # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B122 ; XID_Start # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; XID_Start # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; XID_Start # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; XID_Start # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; XID_Start # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; XID_Start # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; XID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -8815,11 +8908,15 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1DF00..1DF09 ; XID_Start # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0A ; XID_Start # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1DF0B..1DF1E ; XID_Start # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; XID_Start # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK +1E030..1E06D ; XID_Start # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E100..1E12C ; XID_Start # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E137..1E13D ; XID_Start # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER 1E14E ; XID_Start # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ 1E290..1E2AD ; XID_Start # Lo [30] TOTO LETTER PA..TOTO LETTER A 1E2C0..1E2EB ; XID_Start # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH +1E4D0..1E4EA ; XID_Start # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; XID_Start # Lm NAG MUNDARI SIGN OJOD 1E7E0..1E7E6 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB ; XID_Start # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE ; XID_Start # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE @@ -8861,14 +8958,15 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 1EEA5..1EEA9 ; XID_Start # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; XID_Start # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 20000..2A6DF ; XID_Start # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF -2A700..2B738 ; XID_Start # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2A700..2B739 ; XID_Start # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; XID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; XID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; XID_Start # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; XID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; XID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; XID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 131974 +# Total code points: 136322 # ================================================ @@ -9147,6 +9245,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 0CE2..0CE3 ; XID_Continue # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF ; XID_Continue # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; XID_Continue # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3 ; XID_Continue # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; XID_Continue # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; XID_Continue # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C ; XID_Continue # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -9200,7 +9299,7 @@ FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU 0EBD ; XID_Continue # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; XID_Continue # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; XID_Continue # Lm LAO KO LA -0EC8..0ECD ; XID_Continue # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE ; XID_Continue # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0ED0..0ED9 ; XID_Continue # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF ; XID_Continue # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; XID_Continue # Lo TIBETAN SYLLABLE OM @@ -9788,6 +9887,7 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 10E80..10EA9 ; XID_Continue # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EAB..10EAC ; XID_Continue # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EB0..10EB1 ; XID_Continue # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EFD..10EFF ; XID_Continue # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA 10F00..10F1C ; XID_Continue # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F27 ; XID_Continue # Lo OLD SOGDIAN LIGATURE AYIN-DALETH 10F30..10F45 ; XID_Continue # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN @@ -9850,6 +9950,8 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 11235 ; XID_Continue # Mc KHOJKI SIGN VIRAMA 11236..11237 ; XID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; XID_Continue # Mn KHOJKI SIGN SUKUN +1123F..11240 ; XID_Continue # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241 ; XID_Continue # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286 ; XID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; XID_Continue # Lo MULTANI LETTER GHA 1128A..1128D ; XID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -10032,12 +10134,27 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 11EE0..11EF2 ; XID_Continue # Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA 11EF3..11EF4 ; XID_Continue # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; XID_Continue # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F00..11F01 ; XID_Continue # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02 ; XID_Continue # Lo KAWI SIGN REPHA +11F03 ; XID_Continue # Mc KAWI SIGN VISARGA +11F04..11F10 ; XID_Continue # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33 ; XID_Continue # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35 ; XID_Continue # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; XID_Continue # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; XID_Continue # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; XID_Continue # Mn KAWI VOWEL SIGN EU +11F41 ; XID_Continue # Mc KAWI SIGN KILLER +11F42 ; XID_Continue # Mn KAWI CONJOINER +11F50..11F59 ; XID_Continue # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE 11FB0 ; XID_Continue # Lo LISU LETTER YHA 12000..12399 ; XID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; XID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; XID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 12F90..12FF0 ; XID_Continue # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 -13000..1342E ; XID_Continue # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 +13000..1342F ; XID_Continue # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13440 ; XID_Continue # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13441..13446 ; XID_Continue # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13447..13455 ; XID_Continue # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED 14400..14646 ; XID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; XID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; XID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK @@ -10070,7 +10187,9 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 1AFF5..1AFFB ; XID_Continue # Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 1AFFD..1AFFE ; XID_Continue # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B122 ; XID_Continue # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU +1B132 ; XID_Continue # Lo HIRAGANA LETTER SMALL KO 1B150..1B152 ; XID_Continue # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155 ; XID_Continue # Lo KATAKANA LETTER SMALL KO 1B164..1B167 ; XID_Continue # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB ; XID_Continue # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A ; XID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -10127,11 +10246,14 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 1DF00..1DF09 ; XID_Continue # L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0A ; XID_Continue # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1DF0B..1DF1E ; XID_Continue # L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A ; XID_Continue # L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; XID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; XID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; XID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D ; XID_Continue # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F ; XID_Continue # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C ; XID_Continue # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E130..1E136 ; XID_Continue # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D ; XID_Continue # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER @@ -10142,6 +10264,10 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 1E2C0..1E2EB ; XID_Continue # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E2EC..1E2EF ; XID_Continue # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9 ; XID_Continue # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE +1E4D0..1E4EA ; XID_Continue # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB ; XID_Continue # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF ; XID_Continue # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E4F0..1E4F9 ; XID_Continue # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE 1E7E0..1E7E6 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE ; XID_Continue # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE @@ -10187,15 +10313,16 @@ FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA 1EEAB..1EEBB ; XID_Continue # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1FBF0..1FBF9 ; XID_Continue # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE 20000..2A6DF ; XID_Continue # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF -2A700..2B738 ; XID_Continue # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2A700..2B739 ; XID_Continue # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; XID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; XID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; XID_Continue # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; XID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; XID_Continue # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; XID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -# Total code points: 135053 +# Total code points: 139463 # ================================================ @@ -10206,7 +10333,7 @@ E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTO # + Variation_Selector # - White_Space # - FFF9..FFFB (Interlinear annotation format characters) -# - 13430..13438 (Egyptian hieroglyph format characters) +# - 13430..13440 (Egyptian hieroglyph format characters) # - Prepended_Concatenation_Mark (Exceptional format characters that should be visible) 00AD ; Default_Ignorable_Code_Point # Cf SOFT HYPHEN @@ -10351,7 +10478,7 @@ E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] ........ -# Total code points: 10429 +# Total code points: 10491 # ================================================ @@ -9895,6 +9959,7 @@ FFF0..FFF8 ; Changes_When_NFKC_Casefolded # Cn [9] ...... -# Total code points: 10429 +# Total code points: 10491 # EOF diff --git a/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt b/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt index e04f7051783..38b7076c02f 100644 --- a/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt +++ b/gnu/usr.bin/perl/lib/unicore/EastAsianWidth.txt @@ -1,6 +1,6 @@ -# EastAsianWidth-14.0.0.txt -# Date: 2021-07-06, 09:58:53 GMT [KW, LI] -# © 2021 Unicode®, Inc. +# EastAsianWidth-15.0.0.txt +# Date: 2022-05-24, 17:40:20 GMT [KW, LI] +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see https://www.unicode.org/terms_of_use.html # @@ -534,6 +534,7 @@ 0CE2..0CE3;N # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF;N # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2;N # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3;N # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01;N # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03;N # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C;N # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -595,7 +596,7 @@ 0EBD;N # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4;N # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6;N # Lm LAO KO LA -0EC8..0ECD;N # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE;N # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0ED0..0ED9;N # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF;N # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00;N # Lo TIBETAN SYLLABLE OM @@ -1946,6 +1947,7 @@ FFFD;A # So REPLACEMENT CHARACTER 10EAB..10EAC;N # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EAD;N # Pd YEZIDI HYPHENATION MARK 10EB0..10EB1;N # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EFD..10EFF;N # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA 10F00..10F1C;N # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F1D..10F26;N # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF 10F27;N # Lo OLD SOGDIAN LIGATURE AYIN-DALETH @@ -2028,6 +2030,8 @@ FFFD;A # So REPLACEMENT CHARACTER 11236..11237;N # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 11238..1123D;N # Po [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN 1123E;N # Mn KHOJKI SIGN SUKUN +1123F..11240;N # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241;N # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286;N # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288;N # Lo MULTANI LETTER GHA 1128A..1128D;N # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -2190,6 +2194,7 @@ FFFD;A # So REPLACEMENT CHARACTER 11A9E..11AA2;N # Po [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2 11AB0..11ABF;N # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA 11AC0..11AF8;N # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL +11B00..11B09;N # Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU 11C00..11C08;N # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E;N # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F;N # Mc BHAIKSUKI VOWEL SIGN AA @@ -2235,6 +2240,19 @@ FFFD;A # So REPLACEMENT CHARACTER 11EF3..11EF4;N # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6;N # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O 11EF7..11EF8;N # Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION +11F00..11F01;N # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02;N # Lo KAWI SIGN REPHA +11F03;N # Mc KAWI SIGN VISARGA +11F04..11F10;N # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33;N # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35;N # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A;N # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F;N # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40;N # Mn KAWI VOWEL SIGN EU +11F41;N # Mc KAWI SIGN KILLER +11F42;N # Mn KAWI CONJOINER +11F43..11F4F;N # Po [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL +11F50..11F59;N # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE 11FB0;N # Lo LISU LETTER YHA 11FC0..11FD4;N # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH 11FD5..11FDC;N # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI @@ -2247,8 +2265,11 @@ FFFD;A # So REPLACEMENT CHARACTER 12480..12543;N # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 12F90..12FF0;N # Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 12FF1..12FF2;N # Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 -13000..1342E;N # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 -13430..13438;N # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT +13000..1342F;N # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D +13430..1343F;N # Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE +13440;N # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13441..13446;N # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13447..13455;N # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED 14400..14646;N # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38;N # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E;N # Lo [31] MRO LETTER TA..MRO LETTER TEK @@ -2293,7 +2314,9 @@ FFFD;A # So REPLACEMENT CHARACTER 1AFFD..1AFFE;W # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B0FF;W # Lo [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 1B100..1B122;W # Lo [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU +1B132;W # Lo HIRAGANA LETTER SMALL KO 1B150..1B152;W # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155;W # Lo KATAKANA LETTER SMALL KO 1B164..1B167;W # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB;W # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A;N # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -2324,6 +2347,7 @@ FFFD;A # So REPLACEMENT CHARACTER 1D200..1D241;N # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D242..1D244;N # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D245;N # So GREEK MUSICAL LEIMMA +1D2C0..1D2D3;N # No [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN 1D2E0..1D2F3;N # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN 1D300..1D356;N # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D360..1D378;N # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE @@ -2383,11 +2407,14 @@ FFFD;A # So REPLACEMENT CHARACTER 1DF00..1DF09;N # Ll [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0A;N # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1DF0B..1DF1E;N # Ll [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A;N # Ll [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006;N # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018;N # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021;N # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024;N # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A;N # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D;N # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F;N # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C;N # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E130..1E136;N # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D;N # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER @@ -2400,6 +2427,10 @@ FFFD;A # So REPLACEMENT CHARACTER 1E2EC..1E2EF;N # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9;N # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE 1E2FF;N # Sc WANCHO NGUN SIGN +1E4D0..1E4EA;N # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB;N # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF;N # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E4F0..1E4F9;N # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE 1E7E0..1E7E6;N # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB;N # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE;N # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE @@ -2528,13 +2559,14 @@ FFFD;A # So REPLACEMENT CHARACTER 1F6D0..1F6D2;W # So [3] PLACE OF WORSHIP..SHOPPING TROLLEY 1F6D3..1F6D4;N # So [2] STUPA..PAGODA 1F6D5..1F6D7;W # So [3] HINDU TEMPLE..ELEVATOR -1F6DD..1F6DF;W # So [3] PLAYGROUND SLIDE..RING BUOY +1F6DC..1F6DF;W # So [4] WIRELESS..RING BUOY 1F6E0..1F6EA;N # So [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE 1F6EB..1F6EC;W # So [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING 1F6F0..1F6F3;N # So [4] SATELLITE..PASSENGER SHIP 1F6F4..1F6FC;W # So [9] SCOOTER..ROLLER SKATE -1F700..1F773;N # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE -1F780..1F7D8;N # So [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE +1F700..1F776;N # So [119] ALCHEMICAL SYMBOL FOR QUINTESSENCE..LUNAR ECLIPSE +1F77B..1F77F;N # So [5] HAUMEA..ORCUS +1F780..1F7D9;N # So [90] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NINE POINTED WHITE STAR 1F7E0..1F7EB;W # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE 1F7F0;W # So HEAVY EQUALS SIGN 1F800..1F80B;N # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD @@ -2551,22 +2583,20 @@ FFFD;A # So REPLACEMENT CHARACTER 1F947..1F9FF;W # So [185] FIRST PLACE MEDAL..NAZAR AMULET 1FA00..1FA53;N # So [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP 1FA60..1FA6D;N # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER -1FA70..1FA74;W # So [5] BALLET SHOES..THONG SANDAL -1FA78..1FA7C;W # So [5] DROP OF BLOOD..CRUTCH -1FA80..1FA86;W # So [7] YO-YO..NESTING DOLLS -1FA90..1FAAC;W # So [29] RINGED PLANET..HAMSA -1FAB0..1FABA;W # So [11] FLY..NEST WITH EGGS -1FAC0..1FAC5;W # So [6] ANATOMICAL HEART..PERSON WITH CROWN -1FAD0..1FAD9;W # So [10] BLUEBERRIES..JAR -1FAE0..1FAE7;W # So [8] MELTING FACE..BUBBLES -1FAF0..1FAF6;W # So [7] HAND WITH INDEX FINGER AND THUMB CROSSED..HEART HANDS +1FA70..1FA7C;W # So [13] BALLET SHOES..CRUTCH +1FA80..1FA88;W # So [9] YO-YO..FLUTE +1FA90..1FABD;W # So [46] RINGED PLANET..WING +1FABF..1FAC5;W # So [7] GOOSE..PERSON WITH CROWN +1FACE..1FADB;W # So [14] MOOSE..PEA POD +1FAE0..1FAE8;W # So [9] MELTING FACE..SHAKING FACE +1FAF0..1FAF8;W # So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND 1FB00..1FB92;N # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK 1FB94..1FBCA;N # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON 1FBF0..1FBF9;N # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE 20000..2A6DF;W # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF 2A6E0..2A6FF;W # Cn [32] .. -2A700..2B738;W # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 -2B739..2B73F;W # Cn [7] .. +2A700..2B739;W # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 +2B73A..2B73F;W # Cn [6] .. 2B740..2B81D;W # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B81E..2B81F;W # Cn [2] .. 2B820..2CEA1;W # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 @@ -2577,7 +2607,9 @@ FFFD;A # So REPLACEMENT CHARACTER 2FA1E..2FA1F;W # Cn [2] .. 2FA20..2FFFD;W # Cn [1502] .. 30000..3134A;W # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A -3134B..3FFFD;W # Cn [60595] .. +3134B..3134F;W # Cn [5] .. +31350..323AF;W # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF +323B0..3FFFD;W # Cn [56398] .. E0001;N # Cf LANGUAGE TAG E0020..E007F;N # Cf [96] TAG SPACE..CANCEL TAG E0100..E01EF;A # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 diff --git a/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt b/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt index 391a7e0750a..8e08433a1ba 100644 --- a/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt +++ b/gnu/usr.bin/perl/lib/unicore/EmojiSources.txt @@ -1,10 +1,10 @@ -# EmojiSources-14.0.0.txt -# Date: 2021-03-16, 21:39:00 GMT [MS, KW] -# © 2021 Unicode®, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# EmojiSources-15.0.0.txt +# Date: 2022-05-03, 18:51:00 GMT [MS, KW] +# © 2022 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # This file provides historical mappings between Unicode code points and sequences on one hand # and Shift-JIS codes for cell phone carrier symbols on the other hand. @@ -34,7 +34,7 @@ # in these mappings do not include variation selectors for emoji presentation. # Thus they do not match the named character sequences with keycaps listed in # NamedSequences.txt. -# For modern data used in emoji support, see http://www.unicode.org/Public/emoji/latest/ +# For modern data used in emoji support, see https://www.unicode.org/Public/emoji/latest/ 0023 20E3;F985;F489;F7B0 0030 20E3;F990;F7C9;F7C5 diff --git a/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt b/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt index 8e7ca091f6a..cc147cc8dab 100644 --- a/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt +++ b/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt @@ -1,11 +1,11 @@ -# HangulSyllableType-14.0.0.txt -# Date: 2021-03-08, 19:35:46 GMT -# © 2021 Unicode®, Inc. +# HangulSyllableType-15.0.0.txt +# Date: 2022-02-02, 23:35:41 GMT +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # ================================================ diff --git a/gnu/usr.bin/perl/lib/unicore/Index.txt b/gnu/usr.bin/perl/lib/unicore/Index.txt index 451255cd831..a11154a3e3e 100644 --- a/gnu/usr.bin/perl/lib/unicore/Index.txt +++ b/gnu/usr.bin/perl/lib/unicore/Index.txt @@ -270,6 +270,7 @@ ARABIC LETTER HEH WITH YEH ABOVE 06C0 ARABIC LETTER MARK 061C Arabic Letters, Extended 0671 Arabic Letters, Extended 0750 +Arabic Letters, Extended 10EC0 ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM FDFD Arabic Ligatures FBEA Arabic Mathematical Alphabetic Symbols 1EE00 @@ -387,7 +388,7 @@ ASTERISM 2042 Astrological Signs 26B3 Astrological Signs, Tibetan 0F15 Astrological Symbols 263D -Astrological Symbols 28D3 +Astrological Symbols 2BD3 Astrological Symbols, Weather and 2600 asymptotic to 2248 ASYMPTOTICALLY EQUAL TO 2243 @@ -953,6 +954,7 @@ CJK Unified Ideographs Extension D 2B740 CJK Unified Ideographs Extension E 2B820 CJK Unified Ideographs Extension F 2CEB0 CJK Unified Ideographs Extension G 30000 +CJK Unified Ideographs Extension H 31350 CLAPPING HANDS SIGN 1F44F claudian antisigma 2183 claudian digamma inversum 2132 @@ -1374,6 +1376,7 @@ Cyrillic Combining Characters 0483 Cyrillic Extended-A 2DE0 Cyrillic Extended-B A640 Cyrillic Extended-C 1C80 +Cyrillic Extended-D 1E030 Cyrillic Extensions 0450 Cyrillic Extensions 048A Cyrillic Historic Letters 0460 @@ -1467,6 +1470,7 @@ Devanagari Dependent Vowel Signs 093E Devanagari Digits 0966 DEVANAGARI DOUBLE DANDA 0965 Devanagari Extended A8E0 +Devanagari Extended-A 11B00 Devanagari Extensions 0951 Devanagari Independent Vowels 0904 DEVANAGARI OM 0950 @@ -1626,6 +1630,7 @@ DOLPHIN 1F42C domain restriction 25C1 Domino Tiles 1F030 DONG SIGN 20AB +DONKEY 1FACF dot 002E DOT ABOVE 02D9 DOT ABOVE RIGHT, COMBINING 0358 @@ -2042,6 +2047,7 @@ factory 26ED FAHRENHEIT, DEGREE 2109 Fairy Tale Symbols 1F478 FAMILY 1F46A +FAN, FOLDING HAND 1FAAD fast cursor down 21A1 fast cursor left 219E fast cursor right 21A0 @@ -2250,6 +2256,7 @@ GETA MARK 3013 ghana currency 20B5 GHOST 1F47B GIMEL SYMBOL 2137 +GINGER ROOT 1FADA GIRL 1F467 Glagolitic 2C00 Glagolitic Supplement 1E000 @@ -2272,6 +2279,7 @@ GOBLIN, JAPANESE 1F47A gold medal 1F947 Golden Numbers, Runic 16EE golf course 26F3 +GOOSE 1FABF Gothic 10330 Grantha 11300 GRAPHEME JOINER, COMBINING 034F @@ -2563,6 +2571,7 @@ ht 0009 Hungarian, Old 10C80 HV, LATIN SMALL LETTER 0195 HWAIR, LATIN CAPITAL LETTER 01F6 +HYACINTH 1FABB HYPHEN 2010 HYPHEN BULLET 2043 hyphen or minus sign 002D @@ -2647,6 +2656,7 @@ Ideographs Extension D, CJK Unified 2B740 Ideographs Extension E, CJK Unified 2B820 Ideographs Extension F, CJK Unified 2CEB0 Ideographs Extension G, CJK Unified 30000 +Ideographs Extension H, CJK Unified 31350 Ideographs Supplement, CJK Compatibility 2F800 Ideographs, Circled 3280 Ideographs, CJK Compatibility F900 @@ -2830,6 +2840,7 @@ Japanese Katakana Words, Squared 3300 Japanese Katakana, Circled 32D0 japanese kome 203B Javanese A980 +JELLYFISH 1FABC JERUSALEM, CROSS OF 2629 jis composition circle 20DD JIS X 0213 Compatibility Ideographs FA30 @@ -2853,6 +2864,7 @@ K, LATIN SUBSCRIPT SMALL LETTER 2096 KA, HIRAGANA LETTER SMALL 3095 kabusiki-gaisya 337F Kaithi 11080 +Kaktovik Numerals 1D2C0 Kana Extended-A 1B100 Kana Extension, Small 1B130 Kana Repeat Marks 3031 @@ -2877,6 +2889,7 @@ Katakana Words, Squared 3300 Katakana, Circled 32D0 KATAKANA-HIRAGANA DOUBLE HYPHEN 30A0 KATAKANA-HIRAGANA PROLONGED SOUND MARK 30FC +Kawi 11F00 Kayah Li A900 KELVIN SIGN 212A ket 27E9 @@ -2894,7 +2907,9 @@ Keyboard Symbols 2324 Keyboard Symbols 2380 Keyboard Symbols 2396 KEYCAP, COMBINING ENCLOSING 20E3 +KHANDA 1FAAF khanda, gurmukhi 262C +khanda ta, bangla 09CE Kharoshthi 10A00 Kharoshthi Digits 10A40 Khitan Small Script 18B00 @@ -3537,6 +3552,7 @@ MOON, CRESCENT 1F319 MOON, FIRST QUARTER 263D MOON, LAST QUARTER 263E Moon, Sun, and Star Symbols 1F311 +MOOSE 1FACE mortarboard 1F393 most positive 223E MOTORWAY 1F6E3 @@ -3622,6 +3638,7 @@ N-ARY WHITE VERTICAL BAR 2AFF naal, tamil 0BF3 Nabataean 10880 NABLA 2207 +Nag Mundari 1E4D0 NAIRA SIGN 20A6 NAND 22BC Nandinagari 119A0 @@ -3737,6 +3754,7 @@ Numbers, Runic Golden 16EE Numbers, Tamil 0BE7 Numbers, White on Black Circled 24EB Numerals, Hangzhou 3021 +Numerals, Kaktovik 1D2C0 Numerals, Mayan 1D2E0 Numerals, Old Italic 10320 Numerals, Roman 2160 @@ -4100,6 +4118,8 @@ plaintiff 226C PLANCK CONSTANT 210E PLANCK CONSTANT OVER TWO PI 210F Planet Symbols 263F +Planets, Symbols for Minor 26B3 +Planets, Symbols for Minor 1F77B Plant Symbols 1F330 Plastics Recycling Symbols 2673 Playing Card Suits 2660 @@ -5985,6 +6005,7 @@ WHITE VERTICAL BAR, N-ARY 2AFF WIDE BRIDGE ABOVE, COMBINING 20E9 Wiggly Fences 29D8 WIGGLY VERTICAL LINE 2E3E +WING 1FABD wj 2060 WOLF FACE 1F43A WOMAN 1F469 diff --git a/gnu/usr.bin/perl/lib/unicore/IndicPositionalCategory.txt b/gnu/usr.bin/perl/lib/unicore/IndicPositionalCategory.txt index 69109ac51f9..8b51a612087 100644 --- a/gnu/usr.bin/perl/lib/unicore/IndicPositionalCategory.txt +++ b/gnu/usr.bin/perl/lib/unicore/IndicPositionalCategory.txt @@ -1,11 +1,11 @@ -# IndicPositionalCategory-14.0.0.txt -# Date: 2021-05-22, 01:01:00 GMT [KW, RP] -# © 2021 Unicode®, Inc. +# IndicPositionalCategory-15.0.0.txt +# Date: 2022-05-26, 02:18:00 GMT [KW, RP] +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # For documentation, see UAX #44: Unicode Character Database, -# at http://www.unicode.org/reports/tr44/ +# at https://www.unicode.org/reports/tr44/ # # This file defines the following property: # @@ -68,13 +68,13 @@ # # Ahom, Balinese, Batak, Bengali, Bhaiksuki, Brahmi, Buginese, Buhid, # Chakma, Cham, Devanagari, Dives Akuru, Dogra, Grantha, Gujarati, -# Gunjala Gondi, Gurmukhi, Hanunoo, Javanese, Kaithi, Kannada, -# Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Lepcha, Limbu, Makasar, -# Malayalam, Marchen, Masaram Gondi, Meetei Mayek, Modi, Myanmar, -# Nandinagari, Newa, New Tai Lue, Oriya, Rejang, Saurashtra, Sharada, -# Siddham, Sinhala, Soyombo, Sundanese, Syloti Nagri, Tagalog, -# Tagbanwa, Tai Tham, Tai Viet, Takri, Tamil, Telugu, Thai, Tibetan, -# Tirhuta, and Zanabazar Square. +# Gunjala Gondi, Gurmukhi, Hanunoo, Javanese, Kaithi, Kannada, Kawi, +# Kayah Li, Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Lepcha, Limbu, +# Makasar, Malayalam, Marchen, Masaram Gondi, Meetei Mayek, Modi, +# Myanmar, Nandinagari, Newa, New Tai Lue, Oriya, Rejang, Saurashtra, +# Sharada, Siddham, Sinhala, Soyombo, Sundanese, Syloti Nagri, +# Tagalog, Tagbanwa, Tai Tham, Tai Viet, Takri, Tamil, Telugu, Thai, +# Tibetan, Tirhuta, and Zanabazar Square. # # All characters for all other scripts not in that list # take the default value for this property. @@ -158,6 +158,7 @@ 0CBE ; Right # Mc KANNADA VOWEL SIGN AA 0CC1..0CC4 ; Right # Mc [4] KANNADA VOWEL SIGN U..KANNADA VOWEL SIGN VOCALIC RR 0CD5..0CD6 ; Right # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0CF3 ; Right # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D02..0D03 ; Right # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D3E..0D40 ; Right # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II 0D41..0D42 ; Right # Mn [2] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN UU @@ -296,6 +297,9 @@ ABEC ; Right # Mc MEETEI MAYEK LUM IYEK 11D93..11D94 ; Right # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU 11D96 ; Right # Mc GUNJALA GONDI SIGN VISARGA 11EF6 ; Right # Mc MAKASAR VOWEL SIGN O +11F03 ; Right # Mc KAWI SIGN VISARGA +11F34..11F35 ; Right # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F41 ; Right # Mc KAWI SIGN KILLER # Indic_Positional_Category=Left @@ -346,6 +350,7 @@ AAEE ; Left # Mc MEETEI MAYEK VOWEL SIGN AU 119E4 ; Left # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E 11CB1 ; Left # Mc MARCHEN VOWEL SIGN I 11EF5 ; Left # Mc MAKASAR VOWEL SIGN E +11F3E..11F3F ; Left # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI # Indic_Positional_Category=Visual_Order_Left @@ -388,7 +393,7 @@ AABB..AABC ; Visual_Order_Left # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL 093A ; Top # Mn DEVANAGARI VOWEL SIGN OE 0945..0948 ; Top # Mn [4] DEVANAGARI VOWEL SIGN CANDRA E..DEVANAGARI VOWEL SIGN AI 0951 ; Top # Mn DEVANAGARI STRESS SIGN UDATTA -0953..0955 ; Top # Mn [3] DEVANAGARI GRAVE ACCENT..DEVANAGARI VOWEL SIGN CANDRA LONG E +0955 ; Top # Mn DEVANAGARI VOWEL SIGN CANDRA LONG E 0981 ; Top # Mn BENGALI SIGN CANDRABINDU 09FE ; Top # Mn BENGALI SANDHI MARK 0A01..0A02 ; Top # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI @@ -428,7 +433,7 @@ AABB..AABC ; Visual_Order_Left # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL 0EB1 ; Top # Mn LAO VOWEL SIGN MAI KAN 0EB4..0EB7 ; Top # Mn [4] LAO VOWEL SIGN I..LAO VOWEL SIGN YY 0EBB ; Top # Mn LAO VOWEL SIGN MAI KON -0EC8..0ECD ; Top # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE ; Top # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0F39 ; Top # Mn TIBETAN MARK TSA -PHRU 0F72 ; Top # Mn TIBETAN VOWEL SIGN I 0F7A..0F7E ; Top # Mn [5] TIBETAN VOWEL SIGN E..TIBETAN SIGN RJES SU NGA RO @@ -488,6 +493,7 @@ A826 ; Top # Mn SYLOTI NAGRI VOWEL SIGN E A8C5 ; Top # Mn SAURASHTRA SIGN CANDRABINDU A8E0..A8F1 ; Top # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA A8FF ; Top # Mn DEVANAGARI VOWEL SIGN AY +A926..A92A ; Top # Mn [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O A94A ; Top # Mn REJANG VOWEL SIGN AI A94F..A951 ; Top # Mn [3] REJANG CONSONANT SIGN NG..REJANG CONSONANT SIGN R A980..A982 ; Top # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR @@ -580,6 +586,10 @@ ABE5 ; Top # Mn MEETEI MAYEK VOWEL SIGN ANAP 11D90..11D91 ; Top # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI 11D95 ; Top # Mn GUNJALA GONDI SIGN ANUSVARA 11EF3 ; Top # Mn MAKASAR VOWEL SIGN I +11F00..11F01 ; Top # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02 ; Top # Lo KAWI SIGN REPHA +11F36..11F37 ; Top # Mn [2] KAWI VOWEL SIGN I..KAWI VOWEL SIGN II +11F40 ; Top # Mn KAWI VOWEL SIGN EU # Indic_Positional_Category=Bottom @@ -688,6 +698,7 @@ ABED ; Bottom # Mn MEETEI MAYEK APUN IYEK 111C9..111CA ; Bottom # Mn [2] SHARADA SANDHI MARK..SHARADA SIGN NUKTA 111CC ; Bottom # Mn SHARADA EXTRA SHORT VOWEL MARK 1122F ; Bottom # Mn KHOJKI VOWEL SIGN U +11241 ; Bottom # Mn KHOJKI VOWEL SIGN VOCALIC R 112E3..112E4 ; Bottom # Mn [2] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN UU 112E9..112EA ; Bottom # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA 1133B..1133C ; Bottom # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA @@ -728,6 +739,7 @@ ABED ; Bottom # Mn MEETEI MAYEK APUN IYEK 11D44 ; Bottom # Mn MASARAM GONDI SIGN HALANTA 11D47 ; Bottom # Mn MASARAM GONDI RA-KARA 11EF4 ; Bottom # Mn MAKASAR VOWEL SIGN U +11F38..11F3A ; Bottom # Mn [3] KAWI VOWEL SIGN U..KAWI VOWEL SIGN VOCALIC R # Indic_Positional_Category=Top_And_Bottom diff --git a/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt b/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt index 23b86372aea..7843c175abb 100644 --- a/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt +++ b/gnu/usr.bin/perl/lib/unicore/IndicSyllabicCategory.txt @@ -1,11 +1,11 @@ -# IndicSyllabicCategory-14.0.0.txt -# Date: 2021-05-22, 01:01:00 GMT [KW, RP] -# © 2021 Unicode®, Inc. +# IndicSyllabicCategory-15.0.0.txt +# Date: 2022-05-26, 02:18:00 GMT [KW, RP] +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # For documentation, see UAX #44: Unicode Character Database, -# at http://www.unicode.org/reports/tr44/ +# at https://www.unicode.org/reports/tr44/ # # This file defines the following property: # @@ -37,7 +37,7 @@ # # Ahom, Balinese, Batak, Bengali, Bhaiksuki, Brahmi, Buginese, Buhid, # Chakma, Cham, Devanagari, Dives Akuru, Dogra, Grantha, Gujarati, -# Gunjala Gondi, Gurmukhi, Hanunoo, Javanese, Kaithi, Kannada, +# Gunjala Gondi, Gurmukhi, Hanunoo, Javanese, Kaithi, Kannada, Kawi, # Kayah Li, Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Lepcha, Limbu, # Mahajani, Makasar, Malayalam, Marchen, Masaram Gondi, Meetei Mayek, # Modi, Multani, Myanmar, Nandinagari, Newa, New Tai Lue, Oriya, @@ -84,6 +84,7 @@ 0C80 ; Bindu # Lo KANNADA SIGN SPACING CANDRABINDU 0C81 ; Bindu # Mn KANNADA SIGN CANDRABINDU 0C82 ; Bindu # Mc KANNADA SIGN ANUSVARA +0CF3 ; Bindu # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; Bindu # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02 ; Bindu # Mc MALAYALAM SIGN ANUSVARA 0D04 ; Bindu # Lo MALAYALAM LETTER VEDIC ANUSVARA @@ -133,6 +134,7 @@ A980..A981 ; Bindu # Mn [2] JAVANESE SIGN PANYANGGA..JAVANESE SIGN CECAK 11CB5..11CB6 ; Bindu # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU 11D40 ; Bindu # Mn MASARAM GONDI SIGN ANUSVARA 11D95 ; Bindu # Mn GUNJALA GONDI SIGN ANUSVARA +11F00..11F01 ; Bindu # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA # ================================================ @@ -179,6 +181,7 @@ AAF5 ; Visarga # Mc MEETEI MAYEK VOWEL SIGN VISARGA 11C3E ; Visarga # Mc BHAIKSUKI SIGN VISARGA 11D41 ; Visarga # Mn MASARAM GONDI SIGN VISARGA 11D96 ; Visarga # Mc GUNJALA GONDI SIGN VISARGA +11F03 ; Visarga # Mc KAWI SIGN VISARGA # ================================================ @@ -320,6 +323,7 @@ ABED ; Pure_Killer # Mn MEETEI MAYEK APUN IYEK 1193D ; Pure_Killer # Mc DIVES AKURU SIGN HALANTA 11A34 ; Pure_Killer # Mn ZANABAZAR SQUARE SIGN VIRAMA 11D44 ; Pure_Killer # Mn MASARAM GONDI SIGN HALANTA +11F41 ; Pure_Killer # Mc KAWI SIGN KILLER # ================================================ @@ -346,6 +350,7 @@ AAF6 ; Invisible_Stacker # Mn MEETEI MAYEK VIRAMA 11A99 ; Invisible_Stacker # Mn SOYOMBO SUBJOINER 11D45 ; Invisible_Stacker # Mn MASARAM GONDI VIRAMA 11D97 ; Invisible_Stacker # Mn GUNJALA GONDI VIRAMA +11F42 ; Invisible_Stacker # Mn KAWI CONJOINER # ================================================ @@ -416,6 +421,7 @@ ABD1 ; Vowel_Independent # Lo MEETEI MAYEK LETTER ATIYA 11103..11106 ; Vowel_Independent # Lo [4] CHAKMA LETTER AA..CHAKMA LETTER E 11183..11190 ; Vowel_Independent # Lo [14] SHARADA LETTER A..SHARADA LETTER AU 11200..11207 ; Vowel_Independent # Lo [8] KHOJKI LETTER A..KHOJKI LETTER AU +11240 ; Vowel_Independent # Lo KHOJKI LETTER SHORT I 11280..11283 ; Vowel_Independent # Lo [4] MULTANI LETTER A..MULTANI LETTER E 112B0..112B9 ; Vowel_Independent # Lo [10] KHUDAWADI LETTER A..KHUDAWADI LETTER AU 11305..1130C ; Vowel_Independent # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L @@ -443,6 +449,7 @@ ABD1 ; Vowel_Independent # Lo MEETEI MAYEK LETTER ATIYA 11D60..11D65 ; Vowel_Independent # Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU 11D67..11D68 ; Vowel_Independent # Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI 11D6A..11D6B ; Vowel_Independent # Lo [2] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER AU +11F04..11F10 ; Vowel_Independent # Lo [13] KAWI LETTER A..KAWI LETTER O # ================================================ @@ -638,6 +645,7 @@ ABE9..ABEA ; Vowel_Dependent # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEET 1122C..1122E ; Vowel_Dependent # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; Vowel_Dependent # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; Vowel_Dependent # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU +11241 ; Vowel_Dependent # Mn KHOJKI VOWEL SIGN VOCALIC R 112E0..112E2 ; Vowel_Dependent # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112E8 ; Vowel_Dependent # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU 1133E..1133F ; Vowel_Dependent # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I @@ -700,6 +708,10 @@ ABE9..ABEA ; Vowel_Dependent # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEET 11D93..11D94 ; Vowel_Dependent # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU 11EF3..11EF4 ; Vowel_Dependent # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; Vowel_Dependent # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F34..11F35 ; Vowel_Dependent # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; Vowel_Dependent # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; Vowel_Dependent # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; Vowel_Dependent # Mn KAWI VOWEL SIGN EU # ================================================ @@ -878,6 +890,7 @@ ABD2..ABDA ; Consonant # Lo [9] MEETEI MAYEK LETTER GOK..MEETEI MAYEK LETTE 11191..111B2 ; Consonant # Lo [34] SHARADA LETTER KA..SHARADA LETTER HA 11208..11211 ; Consonant # Lo [10] KHOJKI LETTER KA..KHOJKI LETTER JJA 11213..1122B ; Consonant # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA +1123F ; Consonant # Lo KHOJKI LETTER QA 11284..11286 ; Consonant # Lo [3] MULTANI LETTER KA..MULTANI LETTER GA 11288 ; Consonant # Lo MULTANI LETTER GHA 1128A..1128D ; Consonant # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -908,6 +921,7 @@ ABD2..ABDA ; Consonant # Lo [9] MEETEI MAYEK LETTER GOK..MEETEI MAYEK LETTE 11D0C..11D30 ; Consonant # Lo [37] MASARAM GONDI LETTER KA..MASARAM GONDI LETTER TRA 11D6C..11D89 ; Consonant # Lo [30] GUNJALA GONDI LETTER YA..GUNJALA GONDI LETTER SA 11EE0..11EF1 ; Consonant # Lo [18] MAKASAR LETTER KA..MAKASAR LETTER A +11F12..11F33 ; Consonant # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA # ================================================ @@ -963,6 +977,7 @@ ABD2..ABDA ; Consonant # Lo [9] MEETEI MAYEK LETTER GOK..MEETEI MAYEK LETTE 0D4E ; Consonant_Preceding_Repha # Lo MALAYALAM LETTER DOT REPH 11941 ; Consonant_Preceding_Repha # Lo DIVES AKURU INITIAL RA 11D46 ; Consonant_Preceding_Repha # Lo MASARAM GONDI REPHA +11F02 ; Consonant_Preceding_Repha # Lo KAWI SIGN REPHA # ================================================ @@ -1132,10 +1147,14 @@ ABEC ; Tone_Mark # Mc MEETEI MAYEK LUM IYEK # Indic_Syllabic_Category=Gemination_Mark # Gemination Mark (doubling of the preceding or following consonant) +# +# U+0A71 GURMUKHI ADDAK precedes the consonant it geminates, while the +# others follow the consonant they geminate. # [Not derivable] 0A71 ; Gemination_Mark # Mn GURMUKHI ADDAK +0AFB ; Gemination_Mark # Mn GUJARATI SIGN SHADDA 11237 ; Gemination_Mark # Mn KHOJKI SIGN SHADDA 11A98 ; Gemination_Mark # Mn SOYOMBO GEMINATION MARK @@ -1149,7 +1168,8 @@ ABEC ; Tone_Mark # Mc MEETEI MAYEK LUM IYEK 0951..0952 ; Cantillation_Mark # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA 0A51 ; Cantillation_Mark # Mn GURMUKHI SIGN UDAAT -0AFA..0AFC ; Cantillation_Mark # Mn [3] GUJARATI SIGN SUKUN..GUJARATI SIGN MADDAH +0AFA ; Cantillation_Mark # Mn GUJARATI SIGN SUKUN +0AFC ; Cantillation_Mark # Mn GUJARATI SIGN MADDAH 1CD0..1CD2 ; Cantillation_Mark # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; Cantillation_Mark # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE1 ; Cantillation_Mark # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA @@ -1177,12 +1197,13 @@ A8E0..A8F1 ; Cantillation_Mark # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..CO # Indic_Syllabic_Category=Syllable_Modifier # Syllable Modifier (miscellaneous combining characters that modify -# something in the orthographic syllable they succeed) +# something in the orthographic syllable they succeed or appear in) # [Not derivable] 00B2..00B3 ; Syllable_Modifier # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE 09FE ; Syllable_Modifier # Mn BENGALI SANDHI MARK +0ECE ; Syllable_Modifier # Mn LAO YAMAKKAN 0F35 ; Syllable_Modifier # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Syllable_Modifier # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS 0FC6 ; Syllable_Modifier # Mn TIBETAN SYMBOL PADMA GDAN @@ -1304,14 +1325,20 @@ ABF0..ABF9 ; Number # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NI 11C5A..11C6C ; Number # No [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK 11D50..11D59 ; Number # Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE 11DA0..11DA9 ; Number # Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE +11F50..11F59 ; Number # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE # ================================================ # Indic_Syllabic_Category=Brahmi_Joining_Number -# Brahmi Joining Number (similar to Number in that in can be used as -# vowel-holders like Consonant_Placeholder, but may also be joined by -# a Number_Joiner of the same script, e.g. in Brahmi) +# Brahmi Joining Number (may be joined by a Number_Joiner of the same +# script, e.g. in Brahmi) +# +# Note: These are different from Numbers, in the way that there is no known +# evidence of Brahmi Joining Numbers taking vowels or subjoined consonants. +# Until such evidence is found, implementations may assume that Brahmi +# Joining Numbers only participate in shaping with other Brahmi Joining +# Numbers. # [Not derivable] diff --git a/gnu/usr.bin/perl/lib/unicore/Jamo.txt b/gnu/usr.bin/perl/lib/unicore/Jamo.txt index 298d9df988c..5e09f62d733 100644 --- a/gnu/usr.bin/perl/lib/unicore/Jamo.txt +++ b/gnu/usr.bin/perl/lib/unicore/Jamo.txt @@ -1,14 +1,14 @@ -# Jamo-14.0.0.txt -# Date: 2021-03-16, 21:43:00 GMT [KW, LI] -# © 2021 Unicode®, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# Jamo-15.0.0.txt +# Date: 2022-05-03, 18:52:00 GMT [KW, LI] +# © 2022 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # This file defines the Jamo_Short_Name property. # -# See Section 3.12 of The Unicode Standard, Version 14.0 +# See Section 3.12 of The Unicode Standard, Version 15.0 # for more information. # # Each line contains two fields, separated by a semicolon. diff --git a/gnu/usr.bin/perl/lib/unicore/LineBreak.txt b/gnu/usr.bin/perl/lib/unicore/LineBreak.txt index aa5985b8f09..8243333b941 100644 --- a/gnu/usr.bin/perl/lib/unicore/LineBreak.txt +++ b/gnu/usr.bin/perl/lib/unicore/LineBreak.txt @@ -1,6 +1,6 @@ -# LineBreak-14.0.0.txt -# Date: 2021-07-06, 09:58:55 GMT [KW, LI] -# © 2021 Unicode®, Inc. +# LineBreak-15.0.0.txt +# Date: 2022-07-28, 09:20:42 GMT [KW, LI] +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see https://www.unicode.org/terms_of_use.html # @@ -481,6 +481,7 @@ 0CE2..0CE3;CM # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF;NU # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2;AL # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA +0CF3;CM # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01;CM # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03;CM # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D04..0D0C;AL # Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L @@ -542,7 +543,7 @@ 0EBD;SA # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4;SA # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6;SA # Lm LAO KO LA -0EC8..0ECD;SA # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0EC8..0ECE;SA # Mn [7] LAO TONE MAI EK..LAO YAMAKKAN 0ED0..0ED9;NU # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF;SA # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00;AL # Lo TIBETAN SYLLABLE OM @@ -855,7 +856,11 @@ 1D79..1D7F;AL # Ll [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE 1D80..1D9A;AL # Ll [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF;AL # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA -1DC0..1DFF;CM # Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW +1DC0..1DCC;CM # Mn [13] COMBINING DOTTED GRAVE ACCENT..COMBINING MACRON-BREVE +1DCD;GL # Mn COMBINING DOUBLE CIRCUMFLEX ABOVE +1DCE..1DFB;CM # Mn [46] COMBINING OGONEK ABOVE..COMBINING DELETION MARK +1DFC;GL # Mn COMBINING DOUBLE INVERTED BREVE BELOW +1DFD..1DFF;CM # Mn [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1E00..1EFF;AL # L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP 1F00..1F15;AL # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D;AL # Lu [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA @@ -931,7 +936,7 @@ 2054;AL # Pc INVERTED UNDERTIE 2055;AL # Po FLOWER PUNCTUATION MARK 2056;BA # Po THREE DOT PUNCTUATION -2057;AL # Po QUADRUPLE PRIME +2057;PO # Po QUADRUPLE PRIME 2058..205B;BA # Po [4] FOUR DOT PUNCTUATION..FOUR DOT MARK 205C;AL # Po DOTTED CROSS 205D..205E;BA # Po [2] TRICOLON..VERTICAL FOUR DOTS @@ -2793,6 +2798,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 10EAB..10EAC;CM # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 10EAD;BA # Pd YEZIDI HYPHENATION MARK 10EB0..10EB1;AL # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +10EFD..10EFF;CM # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA 10F00..10F1C;AL # Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL 10F1D..10F26;AL # No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF 10F27;AL # Lo OLD SOGDIAN LIGATURE AYIN-DALETH @@ -2882,6 +2888,8 @@ FFFD;AI # So REPLACEMENT CHARACTER 1123B..1123C;BA # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK 1123D;AL # Po KHOJKI ABBREVIATION SIGN 1123E;CM # Mn KHOJKI SIGN SUKUN +1123F..11240;AL # Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I +11241;CM # Mn KHOJKI VOWEL SIGN VOCALIC R 11280..11286;AL # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288;AL # Lo MULTANI LETTER GHA 1128A..1128D;AL # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA @@ -3055,6 +3063,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 11AA1..11AA2;BA # Po [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2 11AB0..11ABF;AL # Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA 11AC0..11AF8;AL # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL +11B00..11B09;BB # Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU 11C00..11C08;AL # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E;AL # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F;CM # Mc BHAIKSUKI VOWEL SIGN AA @@ -3101,6 +3110,20 @@ FFFD;AI # So REPLACEMENT CHARACTER 11EF3..11EF4;CM # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6;CM # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O 11EF7..11EF8;AL # Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION +11F00..11F01;CM # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F02;AL # Lo KAWI SIGN REPHA +11F03;CM # Mc KAWI SIGN VISARGA +11F04..11F10;AL # Lo [13] KAWI LETTER A..KAWI LETTER O +11F12..11F33;AL # Lo [34] KAWI LETTER KA..KAWI LETTER JNYA +11F34..11F35;CM # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A;CM # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F;CM # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40;CM # Mn KAWI VOWEL SIGN EU +11F41;CM # Mc KAWI SIGN KILLER +11F42;CM # Mn KAWI CONJOINER +11F43..11F44;BA # Po [2] KAWI DANDA..KAWI DOUBLE DANDA +11F45..11F4F;ID # Po [11] KAWI PUNCTUATION SECTION MARKER..KAWI PUNCTUATION CLOSING SPIRAL +11F50..11F59;NU # Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE 11FB0;AL # Lo LISU LETTER YHA 11FC0..11FD4;AL # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH 11FD5..11FDC;AL # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI @@ -3126,10 +3149,18 @@ FFFD;AI # So REPLACEMENT CHARACTER 1328A..13378;AL # Lo [239] EGYPTIAN HIEROGLYPH O037..EGYPTIAN HIEROGLYPH V011 13379;OP # Lo EGYPTIAN HIEROGLYPH V011A 1337A..1337B;CL # Lo [2] EGYPTIAN HIEROGLYPH V011B..EGYPTIAN HIEROGLYPH V011C -1337C..1342E;AL # Lo [179] EGYPTIAN HIEROGLYPH V012..EGYPTIAN HIEROGLYPH AA032 +1337C..1342F;AL # Lo [180] EGYPTIAN HIEROGLYPH V012..EGYPTIAN HIEROGLYPH V011D 13430..13436;GL # Cf [7] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH OVERLAY MIDDLE 13437;OP # Cf EGYPTIAN HIEROGLYPH BEGIN SEGMENT 13438;CL # Cf EGYPTIAN HIEROGLYPH END SEGMENT +13439..1343B;GL # Cf [3] EGYPTIAN HIEROGLYPH INSERT AT MIDDLE..EGYPTIAN HIEROGLYPH INSERT AT BOTTOM +1343C;OP # Cf EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE +1343D;CL # Cf EGYPTIAN HIEROGLYPH END ENCLOSURE +1343E;OP # Cf EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE +1343F;CL # Cf EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE +13440;CM # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +13441..13446;AL # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN +13447..13455;CM # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED 14400..145CD;AL # Lo [462] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A409 145CE;OP # Lo ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK 145CF;CL # Lo ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK @@ -3179,7 +3210,9 @@ FFFD;AI # So REPLACEMENT CHARACTER 1AFFD..1AFFE;AL # Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 1B000..1B0FF;ID # Lo [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 1B100..1B122;ID # Lo [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU +1B132;CJ # Lo HIRAGANA LETTER SMALL KO 1B150..1B152;CJ # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO +1B155;CJ # Lo KATAKANA LETTER SMALL KO 1B164..1B167;CJ # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N 1B170..1B2FB;ID # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 1BC00..1BC6A;AL # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M @@ -3210,6 +3243,7 @@ FFFD;AI # So REPLACEMENT CHARACTER 1D200..1D241;AL # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D242..1D244;CM # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D245;AL # So GREEK MUSICAL LEIMMA +1D2C0..1D2D3;AL # No [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN 1D2E0..1D2F3;AL # No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN 1D300..1D356;AL # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D360..1D378;AL # No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE @@ -3270,11 +3304,14 @@ FFFD;AI # So REPLACEMENT CHARACTER 1DF00..1DF09;AL # Ll [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK 1DF0A;AL # Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK 1DF0B..1DF1E;AL # Ll [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL +1DF25..1DF2A;AL # Ll [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK 1E000..1E006;CM # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018;CM # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021;CM # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024;CM # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A;CM # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E030..1E06D;AL # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE +1E08F;CM # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E100..1E12C;AL # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W 1E130..1E136;CM # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E137..1E13D;AL # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER @@ -3287,6 +3324,10 @@ FFFD;AI # So REPLACEMENT CHARACTER 1E2EC..1E2EF;CM # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI 1E2F0..1E2F9;NU # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE 1E2FF;PR # Sc WANCHO NGUN SIGN +1E4D0..1E4EA;AL # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL +1E4EB;AL # Lm NAG MUNDARI SIGN OJOD +1E4EC..1E4EF;CM # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E4F0..1E4F9;NU # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE 1E7E0..1E7E6;AL # Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO 1E7E8..1E7EB;AL # Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE 1E7ED..1E7EE;AL # Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE @@ -3454,16 +3495,18 @@ FFFD;AI # So REPLACEMENT CHARACTER 1F6C1..1F6CB;ID # So [11] BATHTUB..COUCH AND LAMP 1F6CC;EB # So SLEEPING ACCOMMODATION 1F6CD..1F6D7;ID # So [11] SHOPPING BAGS..ELEVATOR -1F6D8..1F6DC;ID # Cn [5] .. -1F6DD..1F6EC;ID # So [16] PLAYGROUND SLIDE..AIRPLANE ARRIVING +1F6D8..1F6DB;ID # Cn [4] .. +1F6DC..1F6EC;ID # So [17] WIRELESS..AIRPLANE ARRIVING 1F6ED..1F6EF;ID # Cn [3] .. 1F6F0..1F6FC;ID # So [13] SATELLITE..ROLLER SKATE 1F6FD..1F6FF;ID # Cn [3] .. 1F700..1F773;AL # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE -1F774..1F77F;ID # Cn [12] .. +1F774..1F776;ID # So [3] LOT OF FORTUNE..LUNAR ECLIPSE +1F777..1F77A;ID # Cn [4] .. +1F77B..1F77F;ID # So [5] HAUMEA..ORCUS 1F780..1F7D4;AL # So [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR -1F7D5..1F7D8;ID # So [4] CIRCLED TRIANGLE..NEGATIVE CIRCLED SQUARE -1F7D9..1F7DF;ID # Cn [7] .. +1F7D5..1F7D9;ID # So [5] CIRCLED TRIANGLE..NINE POINTED WHITE STAR +1F7DA..1F7DF;ID # Cn [6] .. 1F7E0..1F7EB;ID # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE 1F7EC..1F7EF;ID # Cn [4] .. 1F7F0;ID # So HEAVY EQUALS SIGN @@ -3509,33 +3552,29 @@ FFFD;AI # So REPLACEMENT CHARACTER 1FA54..1FA5F;ID # Cn [12] .. 1FA60..1FA6D;ID # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER 1FA6E..1FA6F;ID # Cn [2] .. -1FA70..1FA74;ID # So [5] BALLET SHOES..THONG SANDAL -1FA75..1FA77;ID # Cn [3] .. -1FA78..1FA7C;ID # So [5] DROP OF BLOOD..CRUTCH +1FA70..1FA7C;ID # So [13] BALLET SHOES..CRUTCH 1FA7D..1FA7F;ID # Cn [3] .. -1FA80..1FA86;ID # So [7] YO-YO..NESTING DOLLS -1FA87..1FA8F;ID # Cn [9] .. -1FA90..1FAAC;ID # So [29] RINGED PLANET..HAMSA -1FAAD..1FAAF;ID # Cn [3] .. -1FAB0..1FABA;ID # So [11] FLY..NEST WITH EGGS -1FABB..1FABF;ID # Cn [5] .. -1FAC0..1FAC2;ID # So [3] ANATOMICAL HEART..PEOPLE HUGGING +1FA80..1FA88;ID # So [9] YO-YO..FLUTE +1FA89..1FA8F;ID # Cn [7] .. +1FA90..1FABD;ID # So [46] RINGED PLANET..WING +1FABE;ID # Cn +1FABF..1FAC2;ID # So [4] GOOSE..PEOPLE HUGGING 1FAC3..1FAC5;EB # So [3] PREGNANT MAN..PERSON WITH CROWN -1FAC6..1FACF;ID # Cn [10] .. -1FAD0..1FAD9;ID # So [10] BLUEBERRIES..JAR -1FADA..1FADF;ID # Cn [6] .. -1FAE0..1FAE7;ID # So [8] MELTING FACE..BUBBLES -1FAE8..1FAEF;ID # Cn [8] .. -1FAF0..1FAF6;EB # So [7] HAND WITH INDEX FINGER AND THUMB CROSSED..HEART HANDS -1FAF7..1FAFF;ID # Cn [9] .. +1FAC6..1FACD;ID # Cn [8] .. +1FACE..1FADB;ID # So [14] MOOSE..PEA POD +1FADC..1FADF;ID # Cn [4] .. +1FAE0..1FAE8;ID # So [9] MELTING FACE..SHAKING FACE +1FAE9..1FAEF;ID # Cn [7] .. +1FAF0..1FAF8;EB # So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND +1FAF9..1FAFF;ID # Cn [7] .. 1FB00..1FB92;AL # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK 1FB94..1FBCA;AL # So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON 1FBF0..1FBF9;NU # Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE 1FC00..1FFFD;ID # Cn [1022] .. 20000..2A6DF;ID # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF 2A6E0..2A6FF;ID # Cn [32] .. -2A700..2B738;ID # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 -2B739..2B73F;ID # Cn [7] .. +2A700..2B739;ID # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 +2B73A..2B73F;ID # Cn [6] .. 2B740..2B81D;ID # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B81E..2B81F;ID # Cn [2] .. 2B820..2CEA1;ID # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 @@ -3546,7 +3585,9 @@ FFFD;AI # So REPLACEMENT CHARACTER 2FA1E..2FA1F;ID # Cn [2] .. 2FA20..2FFFD;ID # Cn [1502] .. 30000..3134A;ID # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A -3134B..3FFFD;ID # Cn [60595] .. +3134B..3134F;ID # Cn [5] .. +31350..323AF;ID # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF +323B0..3FFFD;ID # Cn [56398] .. E0001;CM # Cf LANGUAGE TAG E0020..E007F;CM # Cf [96] TAG SPACE..CANCEL TAG E0100..E01EF;CM # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 diff --git a/gnu/usr.bin/perl/lib/unicore/NameAliases.txt b/gnu/usr.bin/perl/lib/unicore/NameAliases.txt index 8519284d898..db3a863a920 100644 --- a/gnu/usr.bin/perl/lib/unicore/NameAliases.txt +++ b/gnu/usr.bin/perl/lib/unicore/NameAliases.txt @@ -1,10 +1,10 @@ -# NameAliases-14.0.0.txt -# Date: 2020-10-21, 22:28:00 GMT [KW, LI] -# © 2020 Unicode®, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# NameAliases-15.0.0.txt +# Date: 2022-07-26, 20:13:00 GMT [KW] +# © 2022 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # This file is a normative contributory data file in the # Unicode Character Database. @@ -40,7 +40,7 @@ # control codes (which for historical reasons have no Unicode character name) # or for format characters. # -# For documentation, see NamesList.html and http://www.unicode.org/reports/tr44/ +# For documentation, see NamesList.html and https://www.unicode.org/reports/tr44/ # # FORMAT # @@ -135,6 +135,7 @@ 0018;CAN;abbreviation 0019;END OF MEDIUM;control 0019;EOM;abbreviation +0019;EM;abbreviation 001A;SUBSTITUTE;control 001A;SUB;abbreviation 001B;ESCAPE;control @@ -163,7 +164,7 @@ # (and corresponding abbreviations) for these code # points are included here because these names leaked # out from the draft documents and were published in -# at least one RFC whose names for code points was +# at least one RFC whose names for code points were # implemented in Perl regex expressions. 0080;PADDING CHARACTER;figment @@ -254,6 +255,7 @@ 01A2;LATIN CAPITAL LETTER GHA;correction 01A3;LATIN SMALL LETTER GHA;correction 034F;CGJ;abbreviation +0616;ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;correction 061C;ALM;abbreviation 0709;SYRIAC SUBLINEAR COLON SKEWED LEFT;correction 0CDE;KANNADA LETTER LLLA;correction @@ -271,6 +273,7 @@ 180D;FVS3;abbreviation 180E;MVS;abbreviation 180F;FVS4;abbreviation +1BBD;SUNDANESE LETTER ARCHAIC I;correction 200B;ZWSP;abbreviation 200C;ZWNJ;abbreviation 200D;ZWJ;abbreviation diff --git a/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt b/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt index fa05c6a7d8a..273eeeabad8 100644 --- a/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt +++ b/gnu/usr.bin/perl/lib/unicore/NamedSequences.txt @@ -1,5 +1,5 @@ -# NamedSequences-14.0.0.txt -# Date: 2021-08-03, 23:04:00 GMT [KW] +# NamedSequences-15.0.0.txt +# Date: 2021-12-07, 17:18:00 GMT [KW] # © 2021 Unicode®, Inc. # For terms of use, see https://www.unicode.org/terms_of_use.html # diff --git a/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt b/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt index 6c74798e65a..34a1dce18a1 100644 --- a/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt +++ b/gnu/usr.bin/perl/lib/unicore/NamedSqProv.txt @@ -1,5 +1,5 @@ -# NamedSequencesProv-14.0.0.txt -# Date: 2021-08-03, 23:04:00 GMT [KW] +# NamedSequencesProv-15.0.0.txt +# Date: 2021-12-07, 17:17:00 GMT [KW] # © 2021 Unicode®, Inc. # For terms of use, see https://www.unicode.org/terms_of_use.html # diff --git a/gnu/usr.bin/perl/lib/unicore/NamesList.txt b/gnu/usr.bin/perl/lib/unicore/NamesList.txt index a5618d9e139..5442db579b2 100644 --- a/gnu/usr.bin/perl/lib/unicore/NamesList.txt +++ b/gnu/usr.bin/perl/lib/unicore/NamesList.txt @@ -1,14 +1,14 @@ ; charset=UTF-8 -@@@ The Unicode Standard 14.0.0 -@@@+ U14M210804.lst - Unicode 14.0.0 final names list. +@@@ The Unicode Standard 15.0.0 +@@@+ U15M220815.lst + Unicode 15.0.0 final names list. This file is semi-automatically derived from UnicodeData.txt and a set of manually created annotations using a script to select or suppress information from the data file. The rules used for this process are aimed at readability for the human reader, at the expense of some details; therefore, this file should not be parsed for machine-readable information. -@+ © 2021 Unicode®, Inc. +@+ © 2022 Unicode®, Inc. For terms of use, see https://www.unicode.org/terms_of_use.html @@ 0000 C0 Controls and Basic Latin (Basic Latin) 007F @@+ @@ -238,7 +238,7 @@ x (stenographic full stop - 2E3C) x (ideographic full stop - 3002) 002F SOLIDUS - = slash,forward slash, virgule + = slash, forward slash, virgule x (combining long solidus overlay - 0338) x (fraction slash - 2044) x (division slash - 2215) @@ -3558,7 +3558,7 @@ @+ These are obsolete letters attested in a 19th century grammar of Komi. 052A CYRILLIC CAPITAL LETTER DZZHE 052B CYRILLIC SMALL LETTER DZZHE - * also used for Ossetian until 1924 +@+ * also used for Ossetian until 1924 052C CYRILLIC CAPITAL LETTER DCHE 052D CYRILLIC SMALL LETTER DCHE @ Khanty letters @@ -3885,6 +3885,7 @@ * should not be confused with the small TAH sign used as a diacritic for some letters such as 0679 @ Extended Arabic mark 0616 ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH + % ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE * early Persian @ Quranic annotation signs 0617 ARABIC SMALL HIGH ZAIN @@ -4069,14 +4070,18 @@ * Kazakh, Jawi * forms digraphs @ Digraphic letters for Kazakh -@+ Use of these characters is discouraged. They were encoded for Kazakh digraphs, but their decompositions do not reflect the preferred order of representation. +@+ These characters were encoded for Kazakh digraphs, but their compatibility decompositions do not reflect the preferred order of representation. Accordingly, the representation of these Kazakh digraphs should instead use the preferred two-character spellings with the correct order of elements. 0675 ARABIC LETTER HIGH HAMZA ALEF + * preferred spelling is 0674 0627 # 0627 0674 0676 ARABIC LETTER HIGH HAMZA WAW + * preferred spelling is 0674 0648 # 0648 0674 0677 ARABIC LETTER U WITH HAMZA ABOVE + * preferred spelling is 0674 06C7 # 06C7 0674 0678 ARABIC LETTER HIGH HAMZA YEH + * preferred spelling is 0674 0649 # 064A 0674 @ Extended Arabic letters 0679 ARABIC LETTER TTEH @@ -4195,7 +4200,7 @@ * Uyghur, Kazakh, Moroccan Arabic, early Jawi, early Persian, ... 06AE ARABIC LETTER KAF WITH THREE DOTS BELOW * Berber, early Persian - * Pegon alternative for 068A + * Pegon alternative for 08B4 06AF ARABIC LETTER GAF * Persian, Urdu, ... 06B0 ARABIC LETTER GAF WITH RING @@ -5009,6 +5014,7 @@ 08DB ARABIC SMALL HIGH WORD AS-SAJDA 08DC ARABIC SMALL HIGH WORD AN-NISF 08DD ARABIC SMALL HIGH WORD SAKTA + x (arabic small low word sakta - 10EFD) 08DE ARABIC SMALL HIGH WORD QIF 08DF ARABIC SMALL HIGH WORD WAQFA 08E0 ARABIC SMALL HIGH FOOTNOTE MARKER @@ -6087,6 +6093,7 @@ 0C80 KANNADA SIGN SPACING CANDRABINDU 0C81 KANNADA SIGN CANDRABINDU 0C82 KANNADA SIGN ANUSVARA + * used in Konkani, Havyaka Kannada (Havigannada) and Awadhi texts to indicate regular anusvara 0C83 KANNADA SIGN VISARGA 0C84 KANNADA SIGN SIDDHAM = siddhirastu @@ -6209,6 +6216,8 @@ x (vedic sign jihvamuliya - 1CF5) 0CF2 KANNADA SIGN UPADHMANIYA x (vedic sign upadhmaniya - 1CF6) +0CF3 KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT + * used in Konkani, Havyaka Kannada (Havigannada) and Awadhi texts to indicate anunāsikā @@ 0D00 Malayalam 0D7F @ Various signs 0D00 MALAYALAM SIGN COMBINING ANUSVARA ABOVE @@ -6715,6 +6724,7 @@ = nikkhahit * final nasal 0E4E THAI CHARACTER YAMAKKAN + x (lao yamakkan - 0ECE) 0E4F THAI CHARACTER FONGMAN * used as a bullet x (khmer sign phnaek muan - 17D9) @@ -6858,6 +6868,9 @@ 0ECC LAO CANCELLATION MARK 0ECD LAO NIGGAHITA * final nasal or long o vowel +0ECE LAO YAMAKKAN + * marks a consonant that is simultaneously a part of two consonant clusters in Pali text + x (thai character yamakkan - 0E4E) @ Digits 0ED0 LAO DIGIT ZERO 0ED1 LAO DIGIT ONE @@ -10130,18 +10143,22 @@ 19AA NEW TAI LUE LETTER HIGH SUA 19AB NEW TAI LUE LETTER LOW SUA * a labialized consonant cluster -@ Vowel signs +@ Vowels 19B0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER 19B1 NEW TAI LUE VOWEL SIGN AA 19B2 NEW TAI LUE VOWEL SIGN II 19B3 NEW TAI LUE VOWEL SIGN U 19B4 NEW TAI LUE VOWEL SIGN UU 19B5 NEW TAI LUE VOWEL SIGN E + * precedes consonant in visual order 19B6 NEW TAI LUE VOWEL SIGN AE + * precedes consonant in visual order 19B7 NEW TAI LUE VOWEL SIGN O + * precedes consonant in visual order 19B8 NEW TAI LUE VOWEL SIGN OA 19B9 NEW TAI LUE VOWEL SIGN UE 19BA NEW TAI LUE VOWEL SIGN AY + * precedes consonant in visual order 19BB NEW TAI LUE VOWEL SIGN AAY 19BC NEW TAI LUE VOWEL SIGN UY 19BD NEW TAI LUE VOWEL SIGN OY @@ -10771,14 +10788,19 @@ 1BB9 SUNDANESE DIGIT NINE @ Sign 1BBA SUNDANESE AVAGRAHA + = gemination mark @ Historic letters 1BBB SUNDANESE LETTER REU * vocalic r 1BBC SUNDANESE LETTER LEU * vocalic l 1BBD SUNDANESE LETTER BHA + % SUNDANESE LETTER ARCHAIC I + * character was originally misidentified, so its name is a misnomer 1BBE SUNDANESE LETTER FINAL K 1BBF SUNDANESE LETTER FINAL M + * used in a 21st century document + * for actual final m, use the sequence 1B99 1BAA @@ 1BC0 Batak 1BFF @ Letters @+ Annotations for letters indicate different usage among the various alphabets sharing the Batak script. @@ -13002,7 +13024,7 @@ x (asterisk - 002A) x (combining asterisk below - 0359) 204F REVERSED SEMICOLON - * also used in Sindhi + * used occasionally in Sindhi when Sindhi is written in the Arabic script x (semicolon - 003B) x (arabic semicolon - 061B) 2050 CLOSE UP @@ -13357,6 +13379,9 @@ 20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY = z notation finite function diacritic x (double vertical line - 2016) + x (rightwards arrow with double vertical stroke - 21FB) + x (rightwards two-headed arrow with double vertical stroke - 2901) + x (rightwards arrow with tail with double vertical stroke - 2915) 20E7 COMBINING ANNUITY SYMBOL = actuarial bend x (right ceiling - 2309) @@ -13387,7 +13412,7 @@ = the set of complex numbers # 0043 latin capital letter c 2103 DEGREE CELSIUS - = degrees Centigrade + = degrees centigrade # 00B0 0043 2104 CENTRE LINE SYMBOL = clone @@ -14330,6 +14355,7 @@ x (circled crossing lanes - 26D2) x (n-ary circled times operator - 2A02) x (circled x - 2BBE) + x (lot of fortune - 1F774) ~ 2297 FE00 with white rim 2298 CIRCLED DIVISION SLASH 2299 CIRCLED DOT OPERATOR @@ -14607,7 +14633,7 @@ 231B HOURGLASS = alchemical symbol for hour @ Quine corners -@+ These form a set of four quine corners, for quincuncial arrangement. They are also used in upper and lower pairs in mathematic, or more rarely in editorial usage as alternatives to half brackets. +@+ These form a set of four quine corners, for quincuncial arrangement. They are also used in upper and lower pairs in mathematics, or more rarely in editorial usage as alternatives to half brackets. 231C TOP LEFT CORNER x (right angle substitution marker - 2E00) x (top left half bracket - 2E22) @@ -15876,7 +15902,9 @@ x (alchemical symbol for purify - 1F763) 260C CONJUNCTION = alchemical symbol for day + x (occultation - 1F775) 260D OPPOSITION + x (lunar eclipse - 1F776) @ Miscellaneous symbols 260E BLACK TELEPHONE x (telephone sign - 2121) @@ -15962,6 +15990,7 @@ 262C ADI SHAKTI = khanda * Sikh religious symbol + x (khanda - 1FAAF) 262D HAMMER AND SICKLE 262E PEACE SYMBOL 262F YIN YANG @@ -16240,7 +16269,7 @@ = heterosexuality 26A5 MALE AND FEMALE SIGN = intersex, androgynous - = hermaphrodite (in entomology) + = hermaphroditic (in botany) 26A6 MALE WITH STROKE SIGN = transgender = alchemical symbol for iron or crocus of iron @@ -19288,7 +19317,8 @@ x (modifier letter short equals sign - A78A) @ Reversed punctuation 2E41 REVERSED COMMA - * also used in Sindhi + * Old Hungarian + * used occasionally in Sindhi when Sindhi is written in the Arabic script x (comma - 002C) x (arabic comma - 060C) 2E42 DOUBLE LOW-REVERSED-9 QUOTATION MARK @@ -19325,7 +19355,7 @@ x (paragraphos - 2E0F) x (capitulum - 2E3F) 2E4E PUNCTUS ELEVATUS MARK -@+ This mark indicates a major intermediate pause where the sensus is complete but the sentence is not; this is similar in some regards to the modern use of a semicolon. +@+ * This mark indicates a major intermediate pause where the sensus is complete but the sentence is not; this is similar in some regards to the modern use of a semicolon. 2E4F CORNISH VERSE DIVIDER 2E50 CROSS PATTY WITH RIGHT CROSSBAR x (maltese cross - 2720) @@ -19414,7 +19444,9 @@ 2E94 CJK RADICAL SNOUT ONE x 5F51 2E95 CJK RADICAL SNOUT TWO + * actually a form of the radical for hand, despite its resemblance in shape to the radical for snout x 5F50 + x 2B739 2E96 CJK RADICAL HEART ONE * form used on left side x 5FC4 @@ -22067,6 +22099,7 @@ 33D6 SQUARE MOL # 006D 006F 006C 33D7 SQUARE PH + * casing inconsistency in the compatibility decomposition is a known anomaly dating from glyph presentations in very early versions of the standard # 0050 0048 33D8 SQUARE PM # 0070 002E 006D 002E @@ -24914,11 +24947,13 @@ A91E KAYAH LI LETTER THA A91F KAYAH LI LETTER HA A920 KAYAH LI LETTER VA A921 KAYAH LI LETTER CA +@ Vowels A922 KAYAH LI LETTER A + * serves as a vowel carrier for vowels indicated with combining marks A923 KAYAH LI LETTER OE + * also serves as a vowel carrier A924 KAYAH LI LETTER I A925 KAYAH LI LETTER OO -@ Vowels A926 KAYAH LI VOWEL UE A927 KAYAH LI VOWEL E A928 KAYAH LI VOWEL U @@ -25517,6 +25552,7 @@ AB2E ETHIOPIC SYLLABLE BBO @@ AB30 Latin Extended-E AB6F @ Letters for German dialectology AB30 LATIN SMALL LETTER BARRED ALPHA +@+ * This letter is a Latin alpha with a horizontal strikethrough bar. In some font designs, the bar might not extend beyond the edge of the letter, and in such cases, the letter should not be confused with a ligature of epsilon and iota. AB31 LATIN SMALL LETTER A REVERSED-SCHWA AB32 LATIN SMALL LETTER BLACKLETTER E AB33 LATIN SMALL LETTER BARRED E @@ -32300,6 +32336,7 @@ FFFF 10C47 OLD TURKIC LETTER ORKHON OT 10C48 OLD TURKIC LETTER ORKHON BASH @@ 10C80 Old Hungarian 10CFF +@+ This script has contemporary usage in Hungary, where users often prefer the name Szekely-Hungarian Rovas. @ Uppercase letters @+ The use of uppercase letters is a modern innovation. 10C80 OLD HUNGARIAN CAPITAL LETTER A @@ -32487,6 +32524,7 @@ FFFF * in earlier literature called "tprus" (later recognized as an abbreviation for "temperius") 10CF2 OLD HUNGARIAN SMALL LETTER US @ Numbers +@+ The numbers for one, five, and ten have a clear relationship to Roman numerals. 10CFA OLD HUNGARIAN NUMBER ONE 10CFB OLD HUNGARIAN NUMBER FIVE 10CFC OLD HUNGARIAN NUMBER TEN @@ -32652,6 +32690,12 @@ FFFF @ Historical letters with diacritics 10EB0 YEZIDI LETTER LAM WITH DOT ABOVE 10EB1 YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE +@@ 10EC0 Arabic Extended-C 10EFF +@ Quranic marks used in Turkey +10EFD ARABIC SMALL LOW WORD SAKTA + x (arabic small high word sakta - 08DD) +10EFE ARABIC SMALL LOW WORD QASR +10EFF ARABIC SMALL LOW WORD MADDA @@ 10F00 Old Sogdian 10F2F @+ This block unifies the scripts used in the Ancient Letters and the Kultobe and Upper Indus inscriptions. @ Letters @@ -33465,6 +33509,12 @@ FFFF @ Sign 1123E KHOJKI SIGN SUKUN * used for Arabic transliteration +@ Consonant +1123F KHOJKI LETTER QA +@ Independent vowel +11240 KHOJKI LETTER SHORT I +@ Dependent vowel sign +11241 KHOJKI VOWEL SIGN VOCALIC R @@ 11280 Multani 112AF @ Vowels 11280 MULTANI LETTER A @@ -34956,6 +35006,22 @@ FFFF 11AF6 PAU CIN HAU LOW-FALLING TONE LONG FINAL 11AF7 PAU CIN HAU LOW-FALLING TONE FINAL 11AF8 PAU CIN HAU GLOTTAL STOP FINAL +@@ 11B00 Devanagari Extended-A 11B5F +@ Head marks +11B00 DEVANAGARI HEAD MARK + x (devanagari double danda - 0965) +11B01 DEVANAGARI HEAD MARK WITH HEADSTROKE +@ Auspicious signs +@+ These are used for representing bhale mīndu signs. +11B02 DEVANAGARI SIGN BHALE +11B03 DEVANAGARI SIGN BHALE WITH HOOK +11B04 DEVANAGARI SIGN EXTENDED BHALE +11B05 DEVANAGARI SIGN EXTENDED BHALE WITH HOOK +11B06 DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE +11B07 DEVANAGARI SIGN WESTERN NINE-LIKE BHALE +11B08 DEVANAGARI SIGN REVERSED NINE-LIKE BHALE +11B09 DEVANAGARI SIGN MINDU + x (devanagari digit zero - 0966) @@ 11C00 Bhaiksuki 11C6F @ Independent vowels 11C00 BHAIKSUKI LETTER A @@ -35330,6 +35396,106 @@ FFFF @ Punctuation 11EF7 MAKASAR PASSIMBANG 11EF8 MAKASAR END OF SECTION +@@ 11F00 Kawi 11F5F +@ Signs +11F00 KAWI SIGN CANDRABINDU +11F01 KAWI SIGN ANUSVARA +11F02 KAWI SIGN REPHA + * cluster-initial form of 11F2C + * also used as final r +11F03 KAWI SIGN VISARGA +@ Independent vowels +11F04 KAWI LETTER A +11F05 KAWI LETTER AA +11F06 KAWI LETTER I +11F07 KAWI LETTER II +11F08 KAWI LETTER U +11F09 KAWI LETTER UU +11F0A KAWI LETTER VOCALIC R +11F0B KAWI LETTER VOCALIC RR +11F0C KAWI LETTER VOCALIC L +11F0D KAWI LETTER VOCALIC LL +11F0E KAWI LETTER E +11F0F KAWI LETTER AI +11F10 KAWI LETTER O +@ Consonants +11F12 KAWI LETTER KA +11F13 KAWI LETTER KHA +11F14 KAWI LETTER GA +11F15 KAWI LETTER GHA +11F16 KAWI LETTER NGA +11F17 KAWI LETTER CA +11F18 KAWI LETTER CHA +11F19 KAWI LETTER JA +11F1A KAWI LETTER JHA +11F1B KAWI LETTER NYA +11F1C KAWI LETTER TTA +11F1D KAWI LETTER TTHA +11F1E KAWI LETTER DDA +11F1F KAWI LETTER DDHA +11F20 KAWI LETTER NNA +11F21 KAWI LETTER TA +11F22 KAWI LETTER THA +11F23 KAWI LETTER DA +11F24 KAWI LETTER DHA +11F25 KAWI LETTER NA +11F26 KAWI LETTER PA +11F27 KAWI LETTER PHA +11F28 KAWI LETTER BA +11F29 KAWI LETTER BHA +11F2A KAWI LETTER MA +11F2B KAWI LETTER YA +11F2C KAWI LETTER RA +11F2D KAWI LETTER LA +11F2E KAWI LETTER WA +11F2F KAWI LETTER SHA +11F30 KAWI LETTER SSA +11F31 KAWI LETTER SA +11F32 KAWI LETTER HA +11F33 KAWI LETTER JNYA +@ Dependent vowel signs +11F34 KAWI VOWEL SIGN AA +11F35 KAWI VOWEL SIGN ALTERNATE AA +11F36 KAWI VOWEL SIGN I +11F37 KAWI VOWEL SIGN II +11F38 KAWI VOWEL SIGN U +11F39 KAWI VOWEL SIGN UU +11F3A KAWI VOWEL SIGN VOCALIC R +11F3E KAWI VOWEL SIGN E +11F3F KAWI VOWEL SIGN AI +11F40 KAWI VOWEL SIGN EU + * represents schwa [ə] +@ Viramas +11F41 KAWI SIGN KILLER + * vowel killer, always rendered visibly +11F42 KAWI CONJOINER + * used for producing below-base and post-base conjunct forms +@ Punctuation +11F43 KAWI DANDA +11F44 KAWI DOUBLE DANDA +11F45 KAWI PUNCTUATION SECTION MARKER +11F46 KAWI PUNCTUATION ALTERNATE SECTION MARKER +11F47 KAWI PUNCTUATION FLOWER +11F48 KAWI PUNCTUATION SPACE FILLER +11F49 KAWI PUNCTUATION DOT +11F4A KAWI PUNCTUATION DOUBLE DOT +11F4B KAWI PUNCTUATION TRIPLE DOT +11F4C KAWI PUNCTUATION CIRCLE +11F4D KAWI PUNCTUATION FILLED CIRCLE +11F4E KAWI PUNCTUATION SPIRAL +11F4F KAWI PUNCTUATION CLOSING SPIRAL +@ Digits +11F50 KAWI DIGIT ZERO +11F51 KAWI DIGIT ONE +11F52 KAWI DIGIT TWO + * also used as letter ro +11F53 KAWI DIGIT THREE +11F54 KAWI DIGIT FOUR +11F55 KAWI DIGIT FIVE +11F56 KAWI DIGIT SIX +11F57 KAWI DIGIT SEVEN +11F58 KAWI DIGIT EIGHT +11F59 KAWI DIGIT NINE @@ 11FB0 Lisu Supplement 11FBF @ Letter 11FB0 LISU LETTER YHA @@ -36988,8 +37154,11 @@ FFFF 1308F EGYPTIAN HIEROGLYPH D025 13090 EGYPTIAN HIEROGLYPH D026 13091 EGYPTIAN HIEROGLYPH D027 + ~ 13091 FE00 rotated 90 degrees 13092 EGYPTIAN HIEROGLYPH D027A + ~ 13092 FE00 rotated 90 degrees 13093 EGYPTIAN HIEROGLYPH D028 + ~ 13093 FE01 rotated 180 degrees 13094 EGYPTIAN HIEROGLYPH D029 13095 EGYPTIAN HIEROGLYPH D030 13096 EGYPTIAN HIEROGLYPH D031 @@ -37016,6 +37185,7 @@ FFFF * transliterated as d 130A8 EGYPTIAN HIEROGLYPH D046A 130A9 EGYPTIAN HIEROGLYPH D047 + ~ 130A9 FE01 rotated 180 degrees 130AA EGYPTIAN HIEROGLYPH D048 130AB EGYPTIAN HIEROGLYPH D048A 130AC EGYPTIAN HIEROGLYPH D049 @@ -37154,6 +37324,7 @@ FFFF 1310D EGYPTIAN HIEROGLYPH F014 1310E EGYPTIAN HIEROGLYPH F015 1310F EGYPTIAN HIEROGLYPH F016 + ~ 1310F FE00 rotated 90 degrees 13110 EGYPTIAN HIEROGLYPH F017 13111 EGYPTIAN HIEROGLYPH F018 13112 EGYPTIAN HIEROGLYPH F019 @@ -37163,12 +37334,14 @@ FFFF * from hieratic 13116 EGYPTIAN HIEROGLYPH F022 13117 EGYPTIAN HIEROGLYPH F023 + ~ 13117 FE02 rotated 270 degrees 13118 EGYPTIAN HIEROGLYPH F024 * mirrored version of 13117 13119 EGYPTIAN HIEROGLYPH F025 1311A EGYPTIAN HIEROGLYPH F026 1311B EGYPTIAN HIEROGLYPH F027 1311C EGYPTIAN HIEROGLYPH F028 + ~ 1311C FE00 rotated 90 degrees 1311D EGYPTIAN HIEROGLYPH F029 1311E EGYPTIAN HIEROGLYPH F030 1311F EGYPTIAN HIEROGLYPH F031 @@ -37176,12 +37349,14 @@ FFFF * cursive variant of 1311F 13121 EGYPTIAN HIEROGLYPH F032 * transliterated as 1E96 + ~ 13121 FE00 rotated 90 degrees 13122 EGYPTIAN HIEROGLYPH F033 13123 EGYPTIAN HIEROGLYPH F034 13124 EGYPTIAN HIEROGLYPH F035 13125 EGYPTIAN HIEROGLYPH F036 13126 EGYPTIAN HIEROGLYPH F037 13127 EGYPTIAN HIEROGLYPH F037A + ~ 13127 FE00 rotated 90 degrees 13128 EGYPTIAN HIEROGLYPH F038 13129 EGYPTIAN HIEROGLYPH F038A 1312A EGYPTIAN HIEROGLYPH F039 @@ -37204,6 +37379,8 @@ FFFF * mirrored version of 13136 13138 EGYPTIAN HIEROGLYPH F050 13139 EGYPTIAN HIEROGLYPH F051 + ~ 13139 FE00 rotated 90 degrees + ~ 13139 FE02 rotated 270 degrees 1313A EGYPTIAN HIEROGLYPH F051A 1313B EGYPTIAN HIEROGLYPH F051B * variant of 1313A @@ -37295,11 +37472,13 @@ FFFF 13181 EGYPTIAN HIEROGLYPH H003 13182 EGYPTIAN HIEROGLYPH H004 13183 EGYPTIAN HIEROGLYPH H005 + ~ 13183 FE02 rotated 270 degrees 13184 EGYPTIAN HIEROGLYPH H006 13185 EGYPTIAN HIEROGLYPH H006A * from hieratic 13186 EGYPTIAN HIEROGLYPH H007 13187 EGYPTIAN HIEROGLYPH H008 + ~ 13187 FE01 rotated 180 degrees @ I. Amphibious animals, reptiles, etc. 13188 EGYPTIAN HIEROGLYPH I001 13189 EGYPTIAN HIEROGLYPH I002 @@ -37330,6 +37509,8 @@ FFFF 1319E EGYPTIAN HIEROGLYPH K004 1319F EGYPTIAN HIEROGLYPH K005 131A0 EGYPTIAN HIEROGLYPH K006 + ~ 131A0 FE00 rotated 90 degrees + ~ 131A0 FE02 rotated 270 degrees 131A1 EGYPTIAN HIEROGLYPH K007 131A2 EGYPTIAN HIEROGLYPH K008 @ L. Invertebrata and lesser animals @@ -37350,6 +37531,8 @@ FFFF 131AF EGYPTIAN HIEROGLYPH M001B 131B0 EGYPTIAN HIEROGLYPH M002 131B1 EGYPTIAN HIEROGLYPH M003 + ~ 131B1 FE00 rotated 90 degrees + ~ 131B1 FE01 rotated 180 degrees 131B2 EGYPTIAN HIEROGLYPH M003A 131B3 EGYPTIAN HIEROGLYPH M004 131B4 EGYPTIAN HIEROGLYPH M005 @@ -37357,8 +37540,11 @@ FFFF 131B6 EGYPTIAN HIEROGLYPH M007 131B7 EGYPTIAN HIEROGLYPH M008 131B8 EGYPTIAN HIEROGLYPH M009 + ~ 131B8 FE00 rotated 90 degrees 131B9 EGYPTIAN HIEROGLYPH M010 + ~ 131B9 FE00 rotated 90 degrees 131BA EGYPTIAN HIEROGLYPH M010A + ~ 131BA FE02 rotated 270 degrees 131BB EGYPTIAN HIEROGLYPH M011 131BC EGYPTIAN HIEROGLYPH M012 * 1,000 @@ -37389,6 +37575,7 @@ FFFF * transliterated as A7BD x (hebrew letter yod - 05D9) x (arabic letter yeh - 064A) + ~ 131CB FE00 rotated 90 degrees 131CC EGYPTIAN HIEROGLYPH M017A * phonogram 'y' x (egyptian hieroglyph z004 - 133ED) @@ -37435,6 +37622,8 @@ FFFF 131EE EGYPTIAN HIEROGLYPH M044 * thorn * not to be confused with 133DA + ~ 131EE FE01 rotated 180 degrees + ~ 131EE FE02 rotated 270 degrees @ N. Sky, earth, water 131EF EGYPTIAN HIEROGLYPH N001 131F0 EGYPTIAN HIEROGLYPH N002 @@ -37451,8 +37640,13 @@ FFFF * variant of 131F8 131F8 EGYPTIAN HIEROGLYPH N010 * variant of 131F7 + ~ 131F8 FE01 rotated 180 degrees 131F9 EGYPTIAN HIEROGLYPH N011 + ~ 131F9 FE00 rotated 90 degrees + ~ 131F9 FE01 rotated 180 degrees 131FA EGYPTIAN HIEROGLYPH N012 + ~ 131FA FE00 rotated 90 degrees + ~ 131FA FE01 rotated 180 degrees 131FB EGYPTIAN HIEROGLYPH N013 131FC EGYPTIAN HIEROGLYPH N014 131FD EGYPTIAN HIEROGLYPH N015 @@ -37498,6 +37692,7 @@ FFFF * stylistic variant, use of 13214 is preferred 13216 EGYPTIAN HIEROGLYPH N035 * transliterated as n + ~ 13216 FE02 rotated 270 degrees 13217 EGYPTIAN HIEROGLYPH N035A * classifier 'liquid' 13218 EGYPTIAN HIEROGLYPH N036 @@ -37578,6 +37773,7 @@ FFFF 13256 EGYPTIAN HIEROGLYPH O005A * mirrored version of 13255 13257 EGYPTIAN HIEROGLYPH O006 + ~ 13257 FE01 rotated 180 degrees 13258 EGYPTIAN HIEROGLYPH O006A * beginning of hwt or serekh enclosure x (egyptian hieroglyph o033a - 13282) @@ -37621,6 +37817,7 @@ FFFF 13279 EGYPTIAN HIEROGLYPH O027 1327A EGYPTIAN HIEROGLYPH O028 1327B EGYPTIAN HIEROGLYPH O029 + ~ 1327B FE02 rotated 270 degrees 1327C EGYPTIAN HIEROGLYPH O029A * rotated variant of 1327B 1327D EGYPTIAN HIEROGLYPH O030 @@ -37628,6 +37825,8 @@ FFFF * not to be confused with 13361 1327E EGYPTIAN HIEROGLYPH O030A 1327F EGYPTIAN HIEROGLYPH O031 + ~ 1327F FE00 rotated 90 degrees + ~ 1327F FE01 rotated 180 degrees 13280 EGYPTIAN HIEROGLYPH O032 13281 EGYPTIAN HIEROGLYPH O033 * classifier 'serekh' @@ -37639,6 +37838,7 @@ FFFF x (egyptian hieroglyph s029 - 132F4) 13284 EGYPTIAN HIEROGLYPH O035 13285 EGYPTIAN HIEROGLYPH O036 + ~ 13285 FE00 rotated 90 degrees 13286 EGYPTIAN HIEROGLYPH O036A * beginning of fortified wall cartouche 13287 EGYPTIAN HIEROGLYPH O036B @@ -37652,6 +37852,7 @@ FFFF 1328C EGYPTIAN HIEROGLYPH O039 * stone, brick * not to be confused with 13219 + ~ 1328C FE00 rotated 90 degrees 1328D EGYPTIAN HIEROGLYPH O040 1328E EGYPTIAN HIEROGLYPH O041 1328F EGYPTIAN HIEROGLYPH O042 @@ -37683,6 +37884,8 @@ FFFF 132A2 EGYPTIAN HIEROGLYPH P006 132A3 EGYPTIAN HIEROGLYPH P007 132A4 EGYPTIAN HIEROGLYPH P008 + ~ 132A4 FE01 rotated 180 degrees + ~ 132A4 FE02 rotated 270 degrees 132A5 EGYPTIAN HIEROGLYPH P009 132A6 EGYPTIAN HIEROGLYPH P010 132A7 EGYPTIAN HIEROGLYPH P011 @@ -37693,6 +37896,7 @@ FFFF 132A9 EGYPTIAN HIEROGLYPH Q002 132AA EGYPTIAN HIEROGLYPH Q003 * transliterated as p + ~ 132AA FE00 rotated 90 degrees 132AB EGYPTIAN HIEROGLYPH Q004 132AC EGYPTIAN HIEROGLYPH Q005 132AD EGYPTIAN HIEROGLYPH Q006 @@ -37727,6 +37931,7 @@ FFFF 132C9 EGYPTIAN HIEROGLYPH R022 132CA EGYPTIAN HIEROGLYPH R023 132CB EGYPTIAN HIEROGLYPH R024 + ~ 132CB FE00 rotated 90 degrees 132CC EGYPTIAN HIEROGLYPH R025 132CD EGYPTIAN HIEROGLYPH R026 132CE EGYPTIAN HIEROGLYPH R027 @@ -37745,6 +37950,7 @@ FFFF 132DA EGYPTIAN HIEROGLYPH S008 132DB EGYPTIAN HIEROGLYPH S009 132DC EGYPTIAN HIEROGLYPH S010 + ~ 132DC FE00 rotated 90 degrees 132DD EGYPTIAN HIEROGLYPH S011 132DE EGYPTIAN HIEROGLYPH S012 132DF EGYPTIAN HIEROGLYPH S013 @@ -37756,8 +37962,11 @@ FFFF 132E5 EGYPTIAN HIEROGLYPH S017 132E6 EGYPTIAN HIEROGLYPH S017A 132E7 EGYPTIAN HIEROGLYPH S018 + ~ 132E7 FE00 rotated 90 degrees + ~ 132E7 FE02 rotated 270 degrees 132E8 EGYPTIAN HIEROGLYPH S019 132E9 EGYPTIAN HIEROGLYPH S020 + ~ 132E9 FE02 rotated 270 degrees 132EA EGYPTIAN HIEROGLYPH S021 132EB EGYPTIAN HIEROGLYPH S022 132EC EGYPTIAN HIEROGLYPH S023 @@ -37777,6 +37986,7 @@ FFFF 132F6 EGYPTIAN HIEROGLYPH S031 132F7 EGYPTIAN HIEROGLYPH S032 132F8 EGYPTIAN HIEROGLYPH S033 + ~ 132F8 FE02 rotated 270 degrees 132F9 EGYPTIAN HIEROGLYPH S034 132FA EGYPTIAN HIEROGLYPH S035 132FB EGYPTIAN HIEROGLYPH S035A @@ -37784,6 +37994,7 @@ FFFF 132FC EGYPTIAN HIEROGLYPH S036 * older variant of 132FA 132FD EGYPTIAN HIEROGLYPH S037 + ~ 132FD FE02 rotated 270 degrees 132FE EGYPTIAN HIEROGLYPH S038 132FF EGYPTIAN HIEROGLYPH S039 13300 EGYPTIAN HIEROGLYPH S040 @@ -37791,14 +38002,18 @@ FFFF 13301 EGYPTIAN HIEROGLYPH S041 * phonogram 'ḏꜣm' 13302 EGYPTIAN HIEROGLYPH S042 + ~ 13302 FE02 rotated 270 degrees 13303 EGYPTIAN HIEROGLYPH S043 + ~ 13303 FE02 rotated 270 degrees 13304 EGYPTIAN HIEROGLYPH S044 13305 EGYPTIAN HIEROGLYPH S045 13306 EGYPTIAN HIEROGLYPH S046 @ T. Warfare, hunting, butchery 13307 EGYPTIAN HIEROGLYPH T001 + ~ 13307 FE00 rotated 90 degrees 13308 EGYPTIAN HIEROGLYPH T002 * classifier 'striking, hitting' + ~ 13308 FE01 rotated 180 degrees 13309 EGYPTIAN HIEROGLYPH T003 * classifier 'mace' 1330A EGYPTIAN HIEROGLYPH T003A @@ -37809,11 +38024,19 @@ FFFF 1330F EGYPTIAN HIEROGLYPH T007A 13310 EGYPTIAN HIEROGLYPH T008 * older variant of 13311 + ~ 13310 FE02 rotated 270 degrees 13311 EGYPTIAN HIEROGLYPH T008A + ~ 13311 FE02 rotated 270 degrees 13312 EGYPTIAN HIEROGLYPH T009 + ~ 13312 FE01 rotated 180 degrees + ~ 13312 FE02 rotated 270 degrees 13313 EGYPTIAN HIEROGLYPH T009A * older variant of 13312 + ~ 13313 FE01 rotated 180 degrees + ~ 13313 FE02 rotated 270 degrees 13314 EGYPTIAN HIEROGLYPH T010 + ~ 13314 FE01 rotated 180 degrees + ~ 13314 FE02 rotated 270 degrees 13315 EGYPTIAN HIEROGLYPH T011 13316 EGYPTIAN HIEROGLYPH T011A 13317 EGYPTIAN HIEROGLYPH T012 @@ -37822,14 +38045,21 @@ FFFF 1331A EGYPTIAN HIEROGLYPH T015 * older variant of 13319 1331B EGYPTIAN HIEROGLYPH T016 + ~ 1331B FE00 rotated 90 degrees + ~ 1331B FE01 rotated 180 degrees 1331C EGYPTIAN HIEROGLYPH T016A + ~ 1331C FE02 rotated 270 degrees 1331D EGYPTIAN HIEROGLYPH T017 1331E EGYPTIAN HIEROGLYPH T018 1331F EGYPTIAN HIEROGLYPH T019 13320 EGYPTIAN HIEROGLYPH T020 * older variant of 1331F 13321 EGYPTIAN HIEROGLYPH T021 + ~ 13321 FE01 rotated 180 degrees + ~ 13321 FE02 rotated 270 degrees 13322 EGYPTIAN HIEROGLYPH T022 + ~ 13322 FE00 rotated 90 degrees + ~ 13322 FE01 rotated 180 degrees 13323 EGYPTIAN HIEROGLYPH T023 * more recent variant of 13322 13324 EGYPTIAN HIEROGLYPH T024 @@ -37851,6 +38081,8 @@ FFFF 13330 EGYPTIAN HIEROGLYPH T034 13331 EGYPTIAN HIEROGLYPH T035 * variant of 13330 + ~ 13331 FE01 rotated 180 degrees + ~ 13331 FE02 rotated 270 degrees 13332 EGYPTIAN HIEROGLYPH T036 @ U. Agriculture, crafts, and professions 13333 EGYPTIAN HIEROGLYPH U001 @@ -37867,8 +38099,10 @@ FFFF * mirrored version of 13339 1333B EGYPTIAN HIEROGLYPH U007 * variant of 13338 + ~ 1333B FE00 rotated 90 degrees 1333C EGYPTIAN HIEROGLYPH U008 * variant of 1333B + ~ 1333C FE00 rotated 90 degrees 1333D EGYPTIAN HIEROGLYPH U009 1333E EGYPTIAN HIEROGLYPH U010 1333F EGYPTIAN HIEROGLYPH U011 @@ -37885,6 +38119,7 @@ FFFF * older variant of 13347 13349 EGYPTIAN HIEROGLYPH U021 1334A EGYPTIAN HIEROGLYPH U022 + ~ 1334A FE02 rotated 270 degrees 1334B EGYPTIAN HIEROGLYPH U023 1334C EGYPTIAN HIEROGLYPH U023A * stylistic variant of 1334B @@ -37915,6 +38150,7 @@ FFFF 13361 EGYPTIAN HIEROGLYPH U042 * pitchfork * not to be confused with 1327D + ~ 13361 FE02 rotated 270 degrees @ V. Rope, fiber, baskets, bags, etc. 13362 EGYPTIAN HIEROGLYPH V001 * 100 @@ -37948,13 +38184,17 @@ FFFF 13372 EGYPTIAN HIEROGLYPH V007 * phonogram 'šn' 13373 EGYPTIAN HIEROGLYPH V007A + ~ 13373 FE02 rotated 270 degrees 13374 EGYPTIAN HIEROGLYPH V007B 13375 EGYPTIAN HIEROGLYPH V008 13376 EGYPTIAN HIEROGLYPH V009 13377 EGYPTIAN HIEROGLYPH V010 * logogram 'name' + ~ 13377 FE00 rotated 90 degrees 13378 EGYPTIAN HIEROGLYPH V011 * classifier 'restrain, split' + x (egyptian hieroglyph v011d - 1342F) + ~ 13378 FE00 rotated 90 degrees 13379 EGYPTIAN HIEROGLYPH V011A * beginning of cartouche 1337A EGYPTIAN HIEROGLYPH V011B @@ -37963,6 +38203,7 @@ FFFF * end of knotless cartouche 1337C EGYPTIAN HIEROGLYPH V012 1337D EGYPTIAN HIEROGLYPH V012A + ~ 1337D FE02 rotated 270 degrees 1337E EGYPTIAN HIEROGLYPH V012B 1337F EGYPTIAN HIEROGLYPH V013 * transliterated as 1E6F @@ -37974,6 +38215,7 @@ FFFF 13384 EGYPTIAN HIEROGLYPH V018 * older variant of 13383 13385 EGYPTIAN HIEROGLYPH V019 + ~ 13385 FE02 rotated 270 degrees 13386 EGYPTIAN HIEROGLYPH V020 * 10 * not to be confused with 133AD @@ -38015,8 +38257,10 @@ FFFF 13398 EGYPTIAN HIEROGLYPH V025 * more recent variant of 13397 13399 EGYPTIAN HIEROGLYPH V026 + ~ 13399 FE00 rotated 90 degrees 1339A EGYPTIAN HIEROGLYPH V027 * older variant of 13399 + ~ 1339A FE00 rotated 90 degrees 1339B EGYPTIAN HIEROGLYPH V028 * transliterated as 1E25 x (arabic letter hah - 062D) @@ -38053,7 +38297,9 @@ FFFF * not to be confused with 13387 @ W. Vessels of stone and earthenware 133AF EGYPTIAN HIEROGLYPH W001 + ~ 133AF FE02 rotated 270 degrees 133B0 EGYPTIAN HIEROGLYPH W002 + ~ 133B0 FE02 rotated 270 degrees 133B1 EGYPTIAN HIEROGLYPH W003 133B2 EGYPTIAN HIEROGLYPH W003A * stylistic variant, use of 133B1 is preferred @@ -38073,6 +38319,7 @@ FFFF * older variant of 133BC 133BE EGYPTIAN HIEROGLYPH W013 133BF EGYPTIAN HIEROGLYPH W014 + ~ 133BF FE02 rotated 270 degrees 133C0 EGYPTIAN HIEROGLYPH W014A 133C1 EGYPTIAN HIEROGLYPH W015 133C2 EGYPTIAN HIEROGLYPH W016 @@ -38089,9 +38336,9 @@ FFFF 133CA EGYPTIAN HIEROGLYPH W022 133CB EGYPTIAN HIEROGLYPH W023 133CC EGYPTIAN HIEROGLYPH W024 - * phonogramm 'nw' + * phonogram 'nw' 133CD EGYPTIAN HIEROGLYPH W024A - * monogramm 'nw(n)' or 'nww' + * monogram 'nw(n)' or 'nww' 133CE EGYPTIAN HIEROGLYPH W025 @ X. Loaves and cakes 133CF EGYPTIAN HIEROGLYPH X001 @@ -38102,6 +38349,7 @@ FFFF 133D2 EGYPTIAN HIEROGLYPH X004 133D3 EGYPTIAN HIEROGLYPH X004A * variant of 133D2 + ~ 133D3 FE00 rotated 90 degrees 133D4 EGYPTIAN HIEROGLYPH X004B * cake * variant of 133D2 @@ -38125,6 +38373,7 @@ FFFF * rotated variant of 133DB 133DD EGYPTIAN HIEROGLYPH Y002 * older variant of 133DB + ~ 133DD FE02 rotated 270 degrees 133DE EGYPTIAN HIEROGLYPH Y003 133DF EGYPTIAN HIEROGLYPH Y004 * mirrored version of 133DE @@ -38136,7 +38385,7 @@ FFFF 133E4 EGYPTIAN HIEROGLYPH Z001 * semogram index * classifier 'single' - * not to be confuse with 133FA + * not to be confused with 133FA 133E5 EGYPTIAN HIEROGLYPH Z002 * classifier 'plural' * not to be confused with 133FC @@ -38171,13 +38420,16 @@ FFFF 133F2 EGYPTIAN HIEROGLYPH Z007 * phonogram 'w' * not to be confused with 13362 + ~ 133F2 FE00 rotated 90 degrees 133F3 EGYPTIAN HIEROGLYPH Z008 * oval * not to be confused with 13200, 132F0, or 133D4 133F4 EGYPTIAN HIEROGLYPH Z009 133F5 EGYPTIAN HIEROGLYPH Z010 * older variant of 133F4 + ~ 133F5 FE00 rotated 90 degrees 133F6 EGYPTIAN HIEROGLYPH Z011 + ~ 133F6 FE00 rotated 90 degrees 133F7 EGYPTIAN HIEROGLYPH Z012 * hieratic 133F8 EGYPTIAN HIEROGLYPH Z013 @@ -38209,6 +38461,7 @@ FFFF * 9 13403 EGYPTIAN HIEROGLYPH Z015I * 5 + ~ 13403 FE00 rotated 90 degrees 13404 EGYPTIAN HIEROGLYPH Z016 * 1 in dates 13405 EGYPTIAN HIEROGLYPH Z016A @@ -38241,11 +38494,16 @@ FFFF * mirrored version of 13413 13415 EGYPTIAN HIEROGLYPH AA007B 13416 EGYPTIAN HIEROGLYPH AA008 + ~ 13416 FE00 rotated 90 degrees 13417 EGYPTIAN HIEROGLYPH AA009 13418 EGYPTIAN HIEROGLYPH AA010 13419 EGYPTIAN HIEROGLYPH AA011 + ~ 13419 FE00 rotated 90 degrees + ~ 13419 FE01 rotated 180 degrees + ~ 13419 FE02 rotated 270 degrees 1341A EGYPTIAN HIEROGLYPH AA012 * older variant of 13419 + ~ 1341A FE00 rotated 90 degrees 1341B EGYPTIAN HIEROGLYPH AA013 1341C EGYPTIAN HIEROGLYPH AA014 * older variant of 1341B @@ -38258,6 +38516,7 @@ FFFF 13421 EGYPTIAN HIEROGLYPH AA019 13422 EGYPTIAN HIEROGLYPH AA020 13423 EGYPTIAN HIEROGLYPH AA021 + ~ 13423 FE00 rotated 90 degrees 13424 EGYPTIAN HIEROGLYPH AA022 13425 EGYPTIAN HIEROGLYPH AA023 13426 EGYPTIAN HIEROGLYPH AA024 @@ -38271,11 +38530,19 @@ FFFF 1342B EGYPTIAN HIEROGLYPH AA029 * older variant of 1342A 1342C EGYPTIAN HIEROGLYPH AA030 + ~ 1342C FE02 rotated 270 degrees 1342D EGYPTIAN HIEROGLYPH AA031 * older variant of 1342C 1342E EGYPTIAN HIEROGLYPH AA032 -@@ 13430 Egyptian Hieroglyph Format Controls 1343F -@+ These format controls are used to render Egyptian hieroglyphic quadrats. + ~ 1342E FE02 rotated 270 degrees +@ Addition to group V +@+ This is part of the cartouche set: 13379, 1337A, 1337B, and 1342F. +1342F EGYPTIAN HIEROGLYPH V011D + * knotted beginning of cartouche + * not to be confused with 13378 +@~ ! +@@ 13430 Egyptian Hieroglyph Format Controls 1345F +@+ These format controls are used to render Egyptian hieroglyphic spatial arrangements, including quadrats, overlays, insertions, and blank, lost or damaged sections. @ Joiners 13430 EGYPTIAN HIEROGLYPH VERTICAL JOINER = sign separator: subordination (Manuel de Codage) @@ -38291,6 +38558,45 @@ FFFF @ Segment scoping delimiters 13437 EGYPTIAN HIEROGLYPH BEGIN SEGMENT 13438 EGYPTIAN HIEROGLYPH END SEGMENT +@ Sign insertion controls +13439 EGYPTIAN HIEROGLYPH INSERT AT MIDDLE +1343A EGYPTIAN HIEROGLYPH INSERT AT TOP +1343B EGYPTIAN HIEROGLYPH INSERT AT BOTTOM +@ Enclosure controls +1343C EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE +1343D EGYPTIAN HIEROGLYPH END ENCLOSURE +1343E EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE +1343F EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE +@ Mirror control +13440 EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY +@ Blank and lost signs +13441 EGYPTIAN HIEROGLYPH FULL BLANK +13442 EGYPTIAN HIEROGLYPH HALF BLANK +13443 EGYPTIAN HIEROGLYPH LOST SIGN + ~ 13443 FE00 expanded +13444 EGYPTIAN HIEROGLYPH HALF LOST SIGN + ~ 13444 FE00 expanded +13445 EGYPTIAN HIEROGLYPH TALL LOST SIGN + ~ 13445 FE00 expanded +13446 EGYPTIAN HIEROGLYPH WIDE LOST SIGN + ~ 13446 FE00 expanded +@ Damage modifiers +13447 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START +13448 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START +13449 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START +1344A EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END +1344B EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP +1344C EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END +1344D EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP +1344E EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END +1344F EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END +13450 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM +13451 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM +13452 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END +13453 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END +13454 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END +13455 EGYPTIAN HIEROGLYPH MODIFIER DAMAGED +@~ ! @@ 14400 Anatolian Hieroglyphs 1467F @+ In the names list, most of the comments are in Latin. Those which have a Luwian phonetic value are identified as syllabic. @ A. The human body and clothing @@ -41710,6 +42016,7 @@ FFFF 18BDC KHITAN SMALL SCRIPT CHARACTER-18BDC 18BDD KHITAN SMALL SCRIPT CHARACTER-18BDD 18BDE KHITAN SMALL SCRIPT CHARACTER-18BDE + x (khitan small script character-18cca - 18CCA) 18BDF KHITAN SMALL SCRIPT CHARACTER-18BDF 18BE0 KHITAN SMALL SCRIPT CHARACTER-18BE0 18BE1 KHITAN SMALL SCRIPT CHARACTER-18BE1 @@ -41958,6 +42265,7 @@ FFFF 18CC8 KHITAN SMALL SCRIPT CHARACTER-18CC8 18CC9 KHITAN SMALL SCRIPT CHARACTER-18CC9 18CCA KHITAN SMALL SCRIPT CHARACTER-18CCA + x (khitan small script character-18bde - 18BDE) 18CCB KHITAN SMALL SCRIPT CHARACTER-18CCB @ Radical-19 18CCC KHITAN SMALL SCRIPT CHARACTER-18CCC @@ -42578,10 +42886,12 @@ FFFF 1B122 KATAKANA LETTER ARCHAIC WU @@ 1B130 Small Kana Extension 1B16F @ Historic small hiragana letters +1B132 HIRAGANA LETTER SMALL KO 1B150 HIRAGANA LETTER SMALL WI 1B151 HIRAGANA LETTER SMALL WE 1B152 HIRAGANA LETTER SMALL WO @ Historic small katakana letters +1B155 KATAKANA LETTER SMALL KO 1B164 KATAKANA LETTER SMALL WI 1B165 KATAKANA LETTER SMALL WE 1B166 KATAKANA LETTER SMALL WO @@ -44467,6 +44777,28 @@ FFFF 1D244 COMBINING GREEK MUSICAL PENTASEME x (metrical pentaseme - 23D9) 1D245 GREEK MUSICAL LEIMMA +@@ 1D2C0 Kaktovik Numerals 1D2DF +@ Numerals +1D2C0 KAKTOVIK NUMERAL ZERO +1D2C1 KAKTOVIK NUMERAL ONE +1D2C2 KAKTOVIK NUMERAL TWO +1D2C3 KAKTOVIK NUMERAL THREE +1D2C4 KAKTOVIK NUMERAL FOUR +1D2C5 KAKTOVIK NUMERAL FIVE +1D2C6 KAKTOVIK NUMERAL SIX +1D2C7 KAKTOVIK NUMERAL SEVEN +1D2C8 KAKTOVIK NUMERAL EIGHT +1D2C9 KAKTOVIK NUMERAL NINE +1D2CA KAKTOVIK NUMERAL TEN +1D2CB KAKTOVIK NUMERAL ELEVEN +1D2CC KAKTOVIK NUMERAL TWELVE +1D2CD KAKTOVIK NUMERAL THIRTEEN +1D2CE KAKTOVIK NUMERAL FOURTEEN +1D2CF KAKTOVIK NUMERAL FIFTEEN +1D2D0 KAKTOVIK NUMERAL SIXTEEN +1D2D1 KAKTOVIK NUMERAL SEVENTEEN +1D2D2 KAKTOVIK NUMERAL EIGHTEEN +1D2D3 KAKTOVIK NUMERAL NINETEEN @@ 1D2E0 Mayan Numerals 1D2FF @ Mayan numerals 1D2E0 MAYAN NUMERAL ZERO @@ -47482,6 +47814,13 @@ FFFF 1DF1D LATIN SMALL LETTER C WITH RETROFLEX HOOK @ IPA extension 1DF1E LATIN SMALL LETTER S WITH CURL +@ Letters for Malayalam transliteration +1DF25 LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK +1DF26 LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK +1DF27 LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK +1DF28 LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK +1DF29 LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK +1DF2A LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK @@ 1E000 Glagolitic Supplement 1E02F @ Combining letters 1E000 COMBINING GLAGOLITIC LETTER AZU @@ -47522,6 +47861,140 @@ FFFF 1E028 COMBINING GLAGOLITIC LETTER BIG YUS 1E029 COMBINING GLAGOLITIC LETTER IOTATED BIG YUS 1E02A COMBINING GLAGOLITIC LETTER FITA +@@ 1E030 Cyrillic Extended-D 1E08F +@+ These are phonetic extensions, used in a manner analogous to IPA. Additional Cyrillic modifier letters are found in other blocks. + x (modifier letter cyrillic en - 1D78) + x (modifier letter cyrillic hard sign - A69C) + x (modifier letter cyrillic soft sign - A69D) +@ Superscript modifier letters +1E030 MODIFIER LETTER CYRILLIC SMALL A + # 0430 +1E031 MODIFIER LETTER CYRILLIC SMALL BE + # 0431 +1E032 MODIFIER LETTER CYRILLIC SMALL VE + # 0432 +1E033 MODIFIER LETTER CYRILLIC SMALL GHE + # 0433 +1E034 MODIFIER LETTER CYRILLIC SMALL DE + # 0434 +1E035 MODIFIER LETTER CYRILLIC SMALL IE + # 0435 +1E036 MODIFIER LETTER CYRILLIC SMALL ZHE + # 0436 +1E037 MODIFIER LETTER CYRILLIC SMALL ZE + # 0437 +1E038 MODIFIER LETTER CYRILLIC SMALL I + # 0438 +1E039 MODIFIER LETTER CYRILLIC SMALL KA + # 043A +1E03A MODIFIER LETTER CYRILLIC SMALL EL + # 043B +1E03B MODIFIER LETTER CYRILLIC SMALL EM + # 043C +1E03C MODIFIER LETTER CYRILLIC SMALL O + # 043E +1E03D MODIFIER LETTER CYRILLIC SMALL PE + # 043F +1E03E MODIFIER LETTER CYRILLIC SMALL ER + # 0440 +1E03F MODIFIER LETTER CYRILLIC SMALL ES + # 0441 +1E040 MODIFIER LETTER CYRILLIC SMALL TE + # 0442 +1E041 MODIFIER LETTER CYRILLIC SMALL U + # 0443 +1E042 MODIFIER LETTER CYRILLIC SMALL EF + # 0444 +1E043 MODIFIER LETTER CYRILLIC SMALL HA + # 0445 +1E044 MODIFIER LETTER CYRILLIC SMALL TSE + # 0446 +1E045 MODIFIER LETTER CYRILLIC SMALL CHE + # 0447 +1E046 MODIFIER LETTER CYRILLIC SMALL SHA + # 0448 +1E047 MODIFIER LETTER CYRILLIC SMALL YERU + # 044B +1E048 MODIFIER LETTER CYRILLIC SMALL E + # 044D +1E049 MODIFIER LETTER CYRILLIC SMALL YU + # 044E +1E04A MODIFIER LETTER CYRILLIC SMALL DZZE + # A689 +1E04B MODIFIER LETTER CYRILLIC SMALL SCHWA + # 04D9 +1E04C MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I + # 0456 +1E04D MODIFIER LETTER CYRILLIC SMALL JE + # 0458 +1E04E MODIFIER LETTER CYRILLIC SMALL BARRED O + # 04E9 +1E04F MODIFIER LETTER CYRILLIC SMALL STRAIGHT U + # 04AF +1E050 MODIFIER LETTER CYRILLIC SMALL PALOCHKA + # 04CF +@ Subscript modifier letters +1E051 CYRILLIC SUBSCRIPT SMALL LETTER A + # 0430 +1E052 CYRILLIC SUBSCRIPT SMALL LETTER BE + # 0431 +1E053 CYRILLIC SUBSCRIPT SMALL LETTER VE + # 0432 +1E054 CYRILLIC SUBSCRIPT SMALL LETTER GHE + # 0433 +1E055 CYRILLIC SUBSCRIPT SMALL LETTER DE + # 0434 +1E056 CYRILLIC SUBSCRIPT SMALL LETTER IE + # 0435 +1E057 CYRILLIC SUBSCRIPT SMALL LETTER ZHE + # 0436 +1E058 CYRILLIC SUBSCRIPT SMALL LETTER ZE + # 0437 +1E059 CYRILLIC SUBSCRIPT SMALL LETTER I + # 0438 +1E05A CYRILLIC SUBSCRIPT SMALL LETTER KA + # 043A +1E05B CYRILLIC SUBSCRIPT SMALL LETTER EL + # 043B +1E05C CYRILLIC SUBSCRIPT SMALL LETTER O + # 043E +1E05D CYRILLIC SUBSCRIPT SMALL LETTER PE + # 043F +1E05E CYRILLIC SUBSCRIPT SMALL LETTER ES + # 0441 +1E05F CYRILLIC SUBSCRIPT SMALL LETTER U + # 0443 +1E060 CYRILLIC SUBSCRIPT SMALL LETTER EF + # 0444 +1E061 CYRILLIC SUBSCRIPT SMALL LETTER HA + # 0445 +1E062 CYRILLIC SUBSCRIPT SMALL LETTER TSE + # 0446 +1E063 CYRILLIC SUBSCRIPT SMALL LETTER CHE + # 0447 +1E064 CYRILLIC SUBSCRIPT SMALL LETTER SHA + # 0448 +1E065 CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN + # 044A +1E066 CYRILLIC SUBSCRIPT SMALL LETTER YERU + # 044B +1E067 CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN + # 0491 +1E068 CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I + # 0456 +1E069 CYRILLIC SUBSCRIPT SMALL LETTER DZE + # 0455 +1E06A CYRILLIC SUBSCRIPT SMALL LETTER DZHE + # 045F +@ Superscript modifier letters +1E06B MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER + # 04AB +1E06C MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER + # A651 +1E06D MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE + # 04B1 +@ Diacritical mark +1E08F COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I @@ 1E100 Nyiakeng Puachue Hmong 1E14F @+ The Nyiakeng Puachue Hmong script (Nyiaj Keeb Puaj Txwm in RPA orthography) is also known as Pa Dao (Paj Ntaub) and Chervang script (Txawj Vaag). @ Consonant onsets @@ -47740,6 +48213,58 @@ FFFF 1E2FF WANCHO NGUN SIGN = rupee x (indian rupee sign - 20B9) +@@ 1E4D0 Nag Mundari 1E4FF +@ Letters +1E4D0 NAG MUNDARI LETTER O +1E4D1 NAG MUNDARI LETTER OP +1E4D2 NAG MUNDARI LETTER OL +1E4D3 NAG MUNDARI LETTER OY +1E4D4 NAG MUNDARI LETTER ONG +1E4D5 NAG MUNDARI LETTER A +1E4D6 NAG MUNDARI LETTER AJ +1E4D7 NAG MUNDARI LETTER AB +1E4D8 NAG MUNDARI LETTER ANY +1E4D9 NAG MUNDARI LETTER AH +1E4DA NAG MUNDARI LETTER I +1E4DB NAG MUNDARI LETTER IS +1E4DC NAG MUNDARI LETTER IDD +1E4DD NAG MUNDARI LETTER IT +1E4DE NAG MUNDARI LETTER IH +1E4DF NAG MUNDARI LETTER U +1E4E0 NAG MUNDARI LETTER UC +1E4E1 NAG MUNDARI LETTER UD +1E4E2 NAG MUNDARI LETTER UK +1E4E3 NAG MUNDARI LETTER UR +1E4E4 NAG MUNDARI LETTER E +1E4E5 NAG MUNDARI LETTER ENN +1E4E6 NAG MUNDARI LETTER EG +1E4E7 NAG MUNDARI LETTER EM +1E4E8 NAG MUNDARI LETTER EN +1E4E9 NAG MUNDARI LETTER ETT +1E4EA NAG MUNDARI LETTER ELL +@ Various signs +1E4EB NAG MUNDARI SIGN OJOD + * precedes modified letters such as AB or UD + * may indicate consonant gemination +1E4EC NAG MUNDARI SIGN MUHOR + * vowel nasalization +1E4ED NAG MUNDARI SIGN TOYOR + * indicates a long vowel +1E4EE NAG MUNDARI SIGN IKIR + * vowel preceded by the 'w' sound +1E4EF NAG MUNDARI SIGN SUTUH + * mostly used for close transliteration of other languages +@ Digits +1E4F0 NAG MUNDARI DIGIT ZERO +1E4F1 NAG MUNDARI DIGIT ONE +1E4F2 NAG MUNDARI DIGIT TWO +1E4F3 NAG MUNDARI DIGIT THREE +1E4F4 NAG MUNDARI DIGIT FOUR +1E4F5 NAG MUNDARI DIGIT FIVE +1E4F6 NAG MUNDARI DIGIT SIX +1E4F7 NAG MUNDARI DIGIT SEVEN +1E4F8 NAG MUNDARI DIGIT EIGHT +1E4F9 NAG MUNDARI DIGIT NINE @@ 1E7E0 Ethiopic Extended-B 1E7FF @ Syllables for Gurage 1E7E0 ETHIOPIC SYLLABLE HHYA @@ -50331,6 +50856,7 @@ FFFF x (heavy black heart - 2764) x (white heart - 1F90D) x (orange heart - 1F9E1) + x (light blue heart - 1FA75) 1F49A GREEN HEART 1F49B YELLOW HEART 1F49C PURPLE HEART @@ -51341,6 +51867,7 @@ FFFF 1F6D6 HUT 1F6D7 ELEVATOR @ Miscellaneous symbols +1F6DC WIRELESS 1F6DD PLAYGROUND SLIDE 1F6DE WHEEL 1F6DF RING BUOY @@ -51475,8 +52002,9 @@ FFFF x (alchemical symbol for sal-ammoniac - 1F739) 1F728 ALCHEMICAL SYMBOL FOR VERDIGRIS = aes viride, copper subacetate - = early astronomical symbol for earth + = astronomical symbol for earth x (circled plus - 2295) + x (earth - 2641) @ Symbols for tin and lead ore 1F729 ALCHEMICAL SYMBOL FOR TIN ORE x (jupiter - 2643) @@ -51615,10 +52143,27 @@ FFFF @ Measures 1F772 ALCHEMICAL SYMBOL FOR HALF DRAM = drachma semis + * handwritten ligature of 0292 + 00DF, typically spelled out as ʒss x (latin small letter ezh - 0292) 1F773 ALCHEMICAL SYMBOL FOR HALF OUNCE = uncia semis + * handwritten ligature of 2125 + 00DF, typically spelled out as 2125 ss x (ounce sign - 2125) +@ Other symbol +1F774 LOT OF FORTUNE + = pars fortunae + x (circled times - 2297) +@ Eclipse symbols +1F775 OCCULTATION + x (conjunction - 260C) +1F776 LUNAR ECLIPSE + x (opposition - 260D) +@ Symbols for dwarf planets +1F77B HAUMEA +1F77C MAKEMAKE +1F77D GONGGONG +1F77E QUAOAR +1F77F ORCUS @@ 1F780 Geometric Shapes Extended 1F7FF @+ These geometric shapes originate from the Webdings/Wingdings collections. @ Isosceles right triangles @@ -51772,6 +52317,9 @@ FFFF 1F7D6 NEGATIVE CIRCLED TRIANGLE 1F7D7 CIRCLED SQUARE 1F7D8 NEGATIVE CIRCLED SQUARE +@ Nine pointed star +1F7D9 NINE POINTED WHITE STAR + * commonly used by members of the Bahá'í faith @ Colored circles @+ For use with emoji. Constitute a set as follows: 26AA, 26AB, 1F534, 1F535, 1F7E0-1F7E4 1F7E0 LARGE ORANGE CIRCLE @@ -51999,7 +52547,7 @@ FFFF @ Hand symbol 1F90C PINCHED FINGERS @ Colored heart symbols -@+ For use with emoji. Constitute a set as follows: 2764, 1F499-1F49C, 1F5A4, 1F90D, 1F90E, and 1F9E1. +@+ For use with emoji. Constitute a set as follows: 2764, 1F499-1F49C, 1F5A4, 1F90D, 1F90E, 1F9E1, and 1FA75-1FA77. 1F90D WHITE HEART 1F90E BROWN HEART @ Hand symbol @@ -52519,6 +53067,11 @@ FFFF 1FA73 SHORTS 1FA74 THONG SANDAL = flip flop +@ Colored heart symbols +@+ For use with emoji. Constitute a set as follows: 2764, 1F499-1F49C, 1F5A4, 1F90D, 1F90E, 1F9E1, and 1FA75-1FA77. +1FA75 LIGHT BLUE HEART +1FA76 GREY HEART +1FA77 PINK HEART @ Medical symbols 1FA78 DROP OF BLOOD x (droplet - 1F4A7) @@ -52534,6 +53087,9 @@ FFFF 1FA84 MAGIC WAND 1FA85 PINATA 1FA86 NESTING DOLLS +@ Musical instruments +1FA87 MARACAS +1FA88 FLUTE @ Miscellaneous objects 1FA90 RINGED PLANET 1FA91 CHAIR @@ -52566,6 +53122,11 @@ FFFF 1FAAB LOW BATTERY x (battery - 1F50B) 1FAAC HAMSA +1FAAD FOLDING HAND FAN +1FAAE HAIR PICK +@ Religious symbol +1FAAF KHANDA + x (adi shakti - 262C) @ Animals and nature 1FAB0 FLY 1FAB1 WORM @@ -52578,6 +53139,10 @@ FFFF 1FAB8 CORAL 1FAB9 EMPTY NEST 1FABA NEST WITH EGGS +1FABB HYACINTH +1FABC JELLYFISH +1FABD WING +1FABF GOOSE @ Body parts 1FAC0 ANATOMICAL HEART 1FAC1 LUNGS @@ -52588,6 +53153,9 @@ FFFF x (pregnant woman - 1F930) 1FAC5 PERSON WITH CROWN x (princess - 1F478) +@ Animals and nature +1FACE MOOSE +1FACF DONKEY @ Food and drink 1FAD0 BLUEBERRIES 1FAD1 BELL PEPPER @@ -52600,6 +53168,8 @@ FFFF x (glass of milk - 1F95B) 1FAD8 BEANS 1FAD9 JAR +1FADA GINGER ROOT +1FADB PEA POD @ Faces 1FAE0 MELTING FACE 1FAE1 SALUTING FACE @@ -52611,6 +53181,8 @@ FFFF 1FAE6 BITING LIP x (lips - 1F5E2) 1FAE7 BUBBLES +@ Face +1FAE8 SHAKING FACE @ Hand symbols 1FAF0 HAND WITH INDEX FINGER AND THUMB CROSSED x (hand with index and middle fingers crossed - 1F91E) @@ -52620,6 +53192,8 @@ FFFF 1FAF4 PALM UP HAND 1FAF5 INDEX POINTING AT THE VIEWER 1FAF6 HEART HANDS +1FAF7 LEFTWARDS PUSHING HAND +1FAF8 RIGHTWARDS PUSHING HAND @@ 1FB00 Symbols for Legacy Computing 1FBFF @ Block mosaic terminal graphic characters @+ The term "sextant" refers to block mosaics divided into six parts. @@ -52936,7 +53510,7 @@ FFFF 1FFFE 1FFFF @@ 20000 CJK Unified Ideographs Extension B 2A6DF -@@ 2A700 CJK Unified Ideographs Extension C 2B738 +@@ 2A700 CJK Unified Ideographs Extension C 2B739 @@ 2B740 CJK Unified Ideographs Extension D 2B81D @@ 2B820 CJK Unified Ideographs Extension E 2CEA1 @@ 2CEB0 CJK Unified Ideographs Extension F 2EBE0 @@ -54057,6 +54631,7 @@ FFFF 2FFFE 2FFFF @@ 30000 CJK Unified Ideographs Extension G 3134A +@@ 31350 CJK Unified Ideographs Extension H 323AF @@ 3FF80 Unassigned 3FFFF @ Noncharacters @+ These codes are intended for process-internal uses. diff --git a/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt b/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt index a1a34d6bb6f..f992c0d53ce 100644 --- a/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt +++ b/gnu/usr.bin/perl/lib/unicore/NormalizationCorrections.txt @@ -1,10 +1,10 @@ -# NormalizationCorrections-14.0.0.txt -# Date: 2021-03-16, 22:07:00 GMT [KW, LI] -# © 2021 Unicode®, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# NormalizationCorrections-15.0.0.txt +# Date: 2022-05-03, 18:53:00 GMT [KW, LI] +# © 2022 Unicode®, Inc. +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # This file is a normative contributory data file in the # Unicode Character Database. diff --git a/gnu/usr.bin/perl/lib/unicore/PropList.txt b/gnu/usr.bin/perl/lib/unicore/PropList.txt index 0a5a9346828..b49d6460c16 100644 --- a/gnu/usr.bin/perl/lib/unicore/PropList.txt +++ b/gnu/usr.bin/perl/lib/unicore/PropList.txt @@ -1,11 +1,11 @@ -# PropList-14.0.0.txt -# Date: 2021-08-12, 23:13:05 GMT -# © 2021 Unicode®, Inc. +# PropList-15.0.0.txt +# Date: 2022-08-05, 22:17:16 GMT +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # ================================================ @@ -215,6 +215,7 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA 11C41..11C43 ; Terminal_Punctuation # Po [3] BHAIKSUKI DANDA..BHAIKSUKI WORD SEPARATOR 11C71 ; Terminal_Punctuation # Po MARCHEN MARK SHAD 11EF7..11EF8 ; Terminal_Punctuation # Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION +11F43..11F44 ; Terminal_Punctuation # Po [2] KAWI DANDA..KAWI DOUBLE DANDA 12470..12474 ; Terminal_Punctuation # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 16A6E..16A6F ; Terminal_Punctuation # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP @@ -224,7 +225,7 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA 1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON -# Total code points: 276 +# Total code points: 278 # ================================================ @@ -507,6 +508,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 0BD7 ; Other_Alphabetic # Mc TAMIL AU LENGTH MARK 0C00 ; Other_Alphabetic # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C03 ; Other_Alphabetic # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C04 ; Other_Alphabetic # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE 0C3E..0C40 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; Other_Alphabetic # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C46..0C48 ; Other_Alphabetic # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI @@ -524,6 +526,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 0CCC ; Other_Alphabetic # Mn KANNADA VOWEL SIGN AU 0CD5..0CD6 ; Other_Alphabetic # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CE2..0CE3 ; Other_Alphabetic # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL +0CF3 ; Other_Alphabetic # Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT 0D00..0D01 ; Other_Alphabetic # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; Other_Alphabetic # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D3E..0D40 ; Other_Alphabetic # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II @@ -548,7 +551,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L 0ECD ; Other_Alphabetic # Mn LAO NIGGAHITA 0F71..0F7E ; Other_Alphabetic # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F7F ; Other_Alphabetic # Mc TIBETAN SIGN RNAM BCAD -0F80..0F81 ; Other_Alphabetic # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II +0F80..0F83 ; Other_Alphabetic # Mn [4] TIBETAN VOWEL SIGN REVERSED I..TIBETAN SIGN SNA LDAN 0F8D..0F97 ; Other_Alphabetic # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Other_Alphabetic # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 102B..102C ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA @@ -692,6 +695,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 11002 ; Other_Alphabetic # Mc BRAHMI SIGN VISARGA 11038..11045 ; Other_Alphabetic # Mn [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU 11073..11074 ; Other_Alphabetic # Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O +11080..11081 ; Other_Alphabetic # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA 11082 ; Other_Alphabetic # Mc KAITHI SIGN VISARGA 110B0..110B2 ; Other_Alphabetic # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B3..110B6 ; Other_Alphabetic # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI @@ -715,6 +719,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 11234 ; Other_Alphabetic # Mn KHOJKI SIGN ANUSVARA 11237 ; Other_Alphabetic # Mn KHOJKI SIGN SHADDA 1123E ; Other_Alphabetic # Mn KHOJKI SIGN SUKUN +11241 ; Other_Alphabetic # Mn KHOJKI VOWEL SIGN VOCALIC R 112DF ; Other_Alphabetic # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; Other_Alphabetic # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112E8 ; Other_Alphabetic # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU @@ -807,6 +812,12 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 11D96 ; Other_Alphabetic # Mc GUNJALA GONDI SIGN VISARGA 11EF3..11EF4 ; Other_Alphabetic # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U 11EF5..11EF6 ; Other_Alphabetic # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O +11F00..11F01 ; Other_Alphabetic # Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA +11F03 ; Other_Alphabetic # Mc KAWI SIGN VISARGA +11F34..11F35 ; Other_Alphabetic # Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA +11F36..11F3A ; Other_Alphabetic # Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R +11F3E..11F3F ; Other_Alphabetic # Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI +11F40 ; Other_Alphabetic # Mn KAWI VOWEL SIGN EU 16F4F ; Other_Alphabetic # Mn MIAO SIGN CONSONANT MODIFIER BAR 16F51..16F87 ; Other_Alphabetic # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI 16F8F..16F92 ; Other_Alphabetic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW @@ -817,12 +828,13 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA 1E01B..1E021 ; Other_Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Other_Alphabetic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Other_Alphabetic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA +1E08F ; Other_Alphabetic # Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 1E947 ; Other_Alphabetic # Mn ADLAM HAMZA 1F130..1F149 ; Other_Alphabetic # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z 1F150..1F169 ; Other_Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Other_Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z -# Total code points: 1404 +# Total code points: 1425 # ================================================ @@ -840,14 +852,15 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM 18D00..18D08 ; Ideographic # Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 1B170..1B2FB ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB 20000..2A6DF ; Ideographic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF -2A700..2B738 ; Ideographic # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2A700..2B739 ; Ideographic # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 30000..3134A ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; Ideographic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 101661 +# Total code points: 105854 # ================================================ @@ -1028,6 +1041,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 10AE5..10AE6 ; Diacritic # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 10D22..10D23 ; Diacritic # Lo [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA 10D24..10D27 ; Diacritic # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI +10EFD..10EFF ; Diacritic # Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA 10F46..10F50 ; Diacritic # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW 10F82..10F85 ; Diacritic # Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW 11046 ; Diacritic # Mn BRAHMI VIRAMA @@ -1064,6 +1078,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 11D42 ; Diacritic # Mn MASARAM GONDI SIGN NUKTA 11D44..11D45 ; Diacritic # Mn [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA 11D97 ; Diacritic # Mn GUNJALA GONDI VIRAMA +13447..13455 ; Diacritic # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED 16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Diacritic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW @@ -1079,6 +1094,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 1D17B..1D182 ; Diacritic # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; Diacritic # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO +1E030..1E06D ; Diacritic # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE 1E130..1E136 ; Diacritic # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E2AE ; Diacritic # Mn TOTO SIGN RISING TONE 1E2EC..1E2EF ; Diacritic # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI @@ -1086,7 +1102,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON 1E944..1E946 ; Diacritic # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK 1E948..1E94A ; Diacritic # Mn [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA -# Total code points: 1064 +# Total code points: 1144 # ================================================ @@ -1135,6 +1151,7 @@ FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND 02E0..02E4 ; Other_Lowercase # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 0345 ; Other_Lowercase # Mn COMBINING GREEK YPOGEGRAMMENI 037A ; Other_Lowercase # Lm GREEK YPOGEGRAMMENI +10FC ; Other_Lowercase # Lm MODIFIER LETTER GEORGIAN NAR 1D2C..1D6A ; Other_Lowercase # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D78 ; Other_Lowercase # Lm MODIFIER LETTER CYRILLIC EN 1D9B..1DBF ; Other_Lowercase # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA @@ -1146,14 +1163,17 @@ FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND 2C7C..2C7D ; Other_Lowercase # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V A69C..A69D ; Other_Lowercase # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A770 ; Other_Lowercase # Lm MODIFIER LETTER US +A7F2..A7F4 ; Other_Lowercase # Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q A7F8..A7F9 ; Other_Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE AB5C..AB5F ; Other_Lowercase # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK +AB69 ; Other_Lowercase # Lm MODIFIER LETTER SMALL TURNED W 10780 ; Other_Lowercase # Lm MODIFIER LETTER SMALL CAPITAL AA 10783..10785 ; Other_Lowercase # Lm [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK 10787..107B0 ; Other_Lowercase # Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK 107B2..107BA ; Other_Lowercase # Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL +1E030..1E06D ; Other_Lowercase # Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE -# Total code points: 244 +# Total code points: 311 # ================================================ @@ -1251,13 +1271,14 @@ FA21 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA21 FA23..FA24 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24 FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29 20000..2A6DF ; Unified_Ideograph # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF -2A700..2B738 ; Unified_Ideograph # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738 +2A700..2B739 ; Unified_Ideograph # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2CEB0..2EBE0 ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 30000..3134A ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A +31350..323AF ; Unified_Ideograph # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF -# Total code points: 92865 +# Total code points: 97058 # ================================================ @@ -1323,8 +1344,10 @@ E0001 ; Deprecated # Cf LANGUAGE TAG 1D65E..1D65F ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J 1D692..1D693 ; Soft_Dotted # L& [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J 1DF1A ; Soft_Dotted # L& LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK +1E04C..1E04D ; Soft_Dotted # Lm [2] MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I..MODIFIER LETTER CYRILLIC SMALL JE +1E068 ; Soft_Dotted # Lm CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I -# Total code points: 47 +# Total code points: 50 # ================================================ @@ -1430,6 +1453,7 @@ FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP 11A9B..11A9C ; Sentence_Terminal # Po [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD 11C41..11C42 ; Sentence_Terminal # Po [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA 11EF7..11EF8 ; Sentence_Terminal # Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION +11F43..11F44 ; Sentence_Terminal # Po [2] KAWI DANDA..KAWI DOUBLE DANDA 16A6E..16A6F ; Sentence_Terminal # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AF5 ; Sentence_Terminal # Po BASSA VAH FULL STOP 16B37..16B38 ; Sentence_Terminal # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB @@ -1438,7 +1462,7 @@ FF61 ; Sentence_Terminal # Po HALFWIDTH IDEOGRAPHIC FULL STOP 1BC9F ; Sentence_Terminal # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1DA88 ; Sentence_Terminal # Po SIGNWRITING FULL STOP -# Total code points: 152 +# Total code points: 154 # ================================================ diff --git a/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt b/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt index f0cb26bdab8..863301b1e19 100644 --- a/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt +++ b/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt @@ -1,11 +1,11 @@ -# PropertyValueAliases-14.0.0.txt -# Date: 2021-05-10, 21:08:53 GMT -# © 2021 Unicode®, Inc. +# PropertyValueAliases-15.0.0.txt +# Date: 2022-08-05, 23:42:17 GMT +# © 2022 Unicode®, Inc. # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. -# For terms of use, see http://www.unicode.org/terms_of_use.html +# For terms of use, see https://www.unicode.org/terms_of_use.html # # Unicode Character Database -# For documentation, see http://www.unicode.org/reports/tr44/ +# For documentation, see https://www.unicode.org/reports/tr44/ # # This file contains aliases for property values used in the UCD. # These names can be used for XML formats of UCD data, for regular-expression @@ -90,6 +90,7 @@ age; 12.0 ; V12_0 age; 12.1 ; V12_1 age; 13.0 ; V13_0 age; 14.0 ; V14_0 +age; 15.0 ; V15_0 age; NA ; Unassigned # Alphabetic (Alpha) @@ -135,7 +136,6 @@ Bidi_M; Y ; Yes ; T # Bidi_Mirroring_Glyph (bmg) -# @missing: 0000..10FFFF; Bidi_Mirroring_Glyph; # Bidi_Paired_Bracket (bpb) @@ -162,6 +162,7 @@ blk; Ancient_Symbols ; Ancient_Symbols blk; Arabic ; Arabic blk; Arabic_Ext_A ; Arabic_Extended_A blk; Arabic_Ext_B ; Arabic_Extended_B +blk; Arabic_Ext_C ; Arabic_Extended_C blk; Arabic_Math ; Arabic_Mathematical_Alphabetic_Symbols blk; Arabic_PF_A ; Arabic_Presentation_Forms_A ; Arabic_Presentation_Forms-A blk; Arabic_PF_B ; Arabic_Presentation_Forms_B @@ -206,6 +207,7 @@ blk; CJK_Ext_D ; CJK_Unified_Ideographs_Extension_D blk; CJK_Ext_E ; CJK_Unified_Ideographs_Extension_E blk; CJK_Ext_F ; CJK_Unified_Ideographs_Extension_F blk; CJK_Ext_G ; CJK_Unified_Ideographs_Extension_G +blk; CJK_Ext_H ; CJK_Unified_Ideographs_Extension_H blk; CJK_Radicals_Sup ; CJK_Radicals_Supplement blk; CJK_Strokes ; CJK_Strokes blk; CJK_Symbols ; CJK_Symbols_And_Punctuation @@ -223,10 +225,12 @@ blk; Cyrillic ; Cyrillic blk; Cyrillic_Ext_A ; Cyrillic_Extended_A blk; Cyrillic_Ext_B ; Cyrillic_Extended_B blk; Cyrillic_Ext_C ; Cyrillic_Extended_C +blk; Cyrillic_Ext_D ; Cyrillic_Extended_D blk; Cyrillic_Sup ; Cyrillic_Supplement ; Cyrillic_Supplementary blk; Deseret ; Deseret blk; Devanagari ; Devanagari blk; Devanagari_Ext ; Devanagari_Extended +blk; Devanagari_Ext_A ; Devanagari_Extended_A blk; Diacriticals ; Combining_Diacritical_Marks blk; Diacriticals_Ext ; Combining_Diacritical_Marks_Extended blk; Diacriticals_For_Symbols ; Combining_Diacritical_Marks_For_Symbols; Combining_Marks_For_Symbols @@ -288,6 +292,7 @@ blk; Jamo_Ext_A ; Hangul_Jamo_Extended_A blk; Jamo_Ext_B ; Hangul_Jamo_Extended_B blk; Javanese ; Javanese blk; Kaithi ; Kaithi +blk; Kaktovik_Numerals ; Kaktovik_Numerals blk; Kana_Ext_A ; Kana_Extended_A blk; Kana_Ext_B ; Kana_Extended_B blk; Kana_Sup ; Kana_Supplement @@ -296,6 +301,7 @@ blk; Kangxi ; Kangxi_Radicals blk; Kannada ; Kannada blk; Katakana ; Katakana blk; Katakana_Ext ; Katakana_Phonetic_Extensions +blk; Kawi ; Kawi blk; Kayah_Li ; Kayah_Li blk; Kharoshthi ; Kharoshthi blk; Khitan_Small_Script ; Khitan_Small_Script @@ -360,6 +366,7 @@ blk; Myanmar ; Myanmar blk; Myanmar_Ext_A ; Myanmar_Extended_A blk; Myanmar_Ext_B ; Myanmar_Extended_B blk; Nabataean ; Nabataean +blk; Nag_Mundari ; Nag_Mundari blk; Nandinagari ; Nandinagari blk; NB ; No_Block blk; New_Tai_Lue ; New_Tai_Lue @@ -663,7 +670,6 @@ EPres; Y ; Yes ; T # Equivalent_Unified_Ideograph (EqUIdeo) -# @missing: 0000..10FFFF; Equivalent_Unified_Ideograph; # Expands_On_NFC (XO_NFC) @@ -1143,7 +1149,6 @@ NFD_QC; Y ; Yes # NFKC_Casefold (NFKC_CF) -# @missing: 0000..10FFFF; NFKC_Casefold; # NFKC_Quick_Check (NFKC_QC) @@ -1313,6 +1318,7 @@ sc ; Ital ; Old_Italic sc ; Java ; Javanese sc ; Kali ; Kayah_Li sc ; Kana ; Katakana +sc ; Kawi ; Kawi sc ; Khar ; Kharoshthi sc ; Khmr ; Khmer sc ; Khoj ; Khojki @@ -1345,6 +1351,7 @@ sc ; Mroo ; Mro sc ; Mtei ; Meetei_Mayek sc ; Mult ; Multani sc ; Mymr ; Myanmar +sc ; Nagm ; Nag_Mundari sc ; Nand ; Nandinagari sc ; Narb ; Old_North_Arabian sc ; Nbat ; Nabataean @@ -1418,7 +1425,6 @@ sc ; Zzzz ; Unknown # Script_Extensions (scx) -# @missing: 0000..10FFFF; Script_Extensions;