diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1999-12-01 05:33:14 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1999-12-01 05:33:14 +0000 |
commit | d9aad7f7caf6c1d42b8e71a2a04bfca6447d2827 (patch) | |
tree | dccc6636377483116741f280578188f0a4360f81 | |
parent | 57b2e4523f4df782c055782388ac1aacff9603ef (diff) | |
parent | d132b95fb004c5e3d94e297d3804c90cfef96fed (diff) | |
download | perl-d9aad7f7caf6c1d42b8e71a2a04bfca6447d2827.tar.gz |
integrate cfgperl contents into mainline
p4raw-id: //depot/perl@4606
214 files changed, 4278 insertions, 1608 deletions
@@ -79,6 +79,158 @@ Version 5.005_63 Development release working toward 5.6 ---------------- ____________________________________________________________________________ +[ 4605] By: gsar on 1999/12/01 05:15:27 + Log: avoid PTR->IV cast warnings + Branch: perl + ! mg.c op.c scope.h +____________________________________________________________________________ +[ 4604] By: gsar on 1999/12/01 03:59:56 + Log: email address changes + Branch: perl + ! AUTHORS Changes Porting/genlog Porting/p4d2p Porting/p4desc + ! README.win32 ext/Data/Dumper/Dumper.pm lib/DB.pm + ! lib/File/DosGlob.pm lib/Math/Complex.pm lib/Math/Trig.pm + ! pod/perl5005delta.pod pod/perlport.pod t/op/runlevel.t + ! utils/perlbug.PL utils/perldoc.PL win32/bin/perlglob.pl +____________________________________________________________________________ +[ 4603] By: gsar on 1999/12/01 03:45:13 + Log: minor USE_ITHREADS tweaks + Branch: perl + ! doio.c op.c op.h pp_hot.c pp_sys.c run.c win32/Makefile + ! win32/perllib.c win32/win32.h +____________________________________________________________________________ +[ 4602] By: gsar on 1999/12/01 01:00:09 + Log: more complete pseudo-fork() support for Windows + Branch: perl + + pod/perlfork.pod win32/perlhost.h win32/vdir.h win32/vmem.h + ! MANIFEST XSUB.h cop.h dump.c embed.h embed.pl embedvar.h + ! ext/B/B/CC.pm ext/Opcode/Opcode.xs global.sym globals.c + ! globvar.sym gv.c hv.c intrpvar.h iperlsys.h makedef.pl mg.c + ! mpeix/mpeixish.h objXSUB.h op.c op.h os2/os2ish.h perl.c + ! perl.h perlapi.c plan9/plan9ish.h pod/Makefile pod/buildtoc + ! pod/perl.pod pod/roffitall pp.c pp_ctl.c pp_hot.c pp_sys.c + ! proto.h regcomp.c run.c scope.c scope.h sv.c t/op/fork.t + ! toke.c unixish.h util.c vos/vosish.h win32/Makefile + ! win32/makefile.mk win32/perllib.c win32/win32.c win32/win32.h + ! win32/win32iop.h win32/win32thread.h +____________________________________________________________________________ +[ 4601] By: gsar on 1999/12/01 00:45:38 + Log: rudimentary support for remote debugging, from aeons ago (somewhat + modified) + From: Graham TerMarsch <grahamt@ActiveState.com> + Date: Sat, 12 Sep 1998 10:46:55 -0700 + Message-ID: <35FAB38F.EA9AAC50@activestate.com> + Subject: Re: Patches to perl5db.pl to allow for remote debugging + Branch: perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 4600] By: chip on 1999/11/19 21:16:00 + Log: Document known limitations of fdopen() on some systems, + as they apply to open() and sysopen(). + Branch: perl + ! pod/perlfunc.pod +____________________________________________________________________________ +[ 4599] By: chip on 1999/11/19 17:20:19 + Log: Undef printf before redirecting it to PerlIO_stdoutf. + (Avoids an irritating warning when compiling with PerlIO.) + Branch: perl + ! perl.h +____________________________________________________________________________ +[ 4598] By: jhi on 1999/11/22 21:30:17 + Log: Small VMS nits from Craig A. Berry, <craig.berry@metamor.com>. + Branch: cfgperl + ! README.vms t/io/open.t +____________________________________________________________________________ +[ 4597] By: jhi on 1999/11/21 16:21:21 + Log: Replace #4596 with the change done in 5.005_03. + Branch: cfgperl + ! ext/Errno/Errno_pm.PL +____________________________________________________________________________ +[ 4596] By: jhi on 1999/11/21 16:07:20 + Log: Skip processing a file if the file to be opened is '-' + (can happen in UNICOS) + Branch: cfgperl + ! ext/Errno/Errno_pm.PL +____________________________________________________________________________ +[ 4595] By: jhi on 1999/11/21 14:05:10 + Log: VMS patches from Peter Prymmer. + Branch: cfgperl + ! doio.c mg.c taint.c vms/subconfigure.com vms/vms.c +____________________________________________________________________________ +[ 4594] By: jhi on 1999/11/18 17:07:14 + Log: The find_byclass prototype is already in proto.h. + Branch: cfgperl + ! regexec.c +____________________________________________________________________________ +[ 4593] By: gsar on 1999/11/16 21:25:21 + Log: typo in flag checks + Branch: utfperl + ! sv.h +____________________________________________________________________________ +[ 4592] By: jhi on 1999/11/16 21:17:25 + Log: Regen Configure. + Branch: cfgperl + ! Configure config_h.SH pp.c pp.h vms/subconfigure.com + Branch: metaconfig + ! U/a_dvisory/quadtype.U +____________________________________________________________________________ +[ 4591] By: jhi on 1999/11/16 14:53:19 + Log: Integrate with Sarathy. + Branch: cfgperl + !> cop.h deb.c embed.h embed.pl global.sym lib/Pod/Checker.pm + !> lib/Pod/InputObjects.pm lib/Pod/Parser.pm lib/Pod/Select.pm + !> lib/Pod/Usage.pm makedef.pl objXSUB.h perl.c perlapi.c + !> pod/podchecker.PL pp_sys.c proto.h sv.c t/pod/poderrs.t + !> t/pod/poderrs.xr +____________________________________________________________________________ +[ 4590] By: gsar on 1999/11/16 05:57:56 + Log: Pod::Parser updates (v1.091) from Brad Appleton <bradapp@enteract.com> + Branch: perl + ! lib/Pod/Checker.pm lib/Pod/InputObjects.pm lib/Pod/Parser.pm + ! lib/Pod/Select.pm lib/Pod/Usage.pm pod/podchecker.PL + ! t/pod/poderrs.t t/pod/poderrs.xr +____________________________________________________________________________ +[ 4589] By: gsar on 1999/11/15 18:47:34 + Log: add a synchronous stub fork() for USE_ITHREADS to prove that a simple + C<if (fork()) { print "parent" } else { print "child" }> works on + Windows (incidentally running a cloned^2 interpreter :) + Branch: perl + ! embed.h embed.pl global.sym makedef.pl objXSUB.h perlapi.c + ! pp_sys.c proto.h sv.c +____________________________________________________________________________ +[ 4588] By: gsar on 1999/11/15 14:34:36 + Log: cloning the stack (part 1) + Branch: perl + ! cop.h deb.c perl.c sv.c +____________________________________________________________________________ +[ 4587] By: jhi on 1999/11/15 00:22:20 + Log: Integrate with Sarathy. + Branch: cfgperl + !> Changes embed.h embed.pl embedvar.h global.sym intrpvar.h + !> makedef.pl objXSUB.h op.c perl.h perlapi.c proto.h run.c sv.c + !> win32/perllib.c +____________________________________________________________________________ +[ 4586] By: jhi on 1999/11/14 21:17:26 + Log: Ilya's "hopscotch" patch, reworked by Ilya to fit. + Branch: cfgperl + ! embed.h embed.pl embedvar.h proto.h regexec.c t/op/re_tests +____________________________________________________________________________ +[ 4585] By: gsar on 1999/11/14 20:01:45 + Log: tweak for win32 build + Branch: perl + ! embed.h embed.pl op.c proto.h +____________________________________________________________________________ +[ 4584] By: gsar on 1999/11/14 19:46:25 + Log: cosmetic tweaks + Branch: perl + ! embed.h embed.pl embedvar.h global.sym intrpvar.h makedef.pl + ! objXSUB.h perl.h perlapi.c proto.h sv.c win32/perllib.c +____________________________________________________________________________ +[ 4583] By: gsar on 1999/11/14 17:38:32 + Log: fix problem pointer casts + Branch: perl + ! Changes run.c sv.c +____________________________________________________________________________ [ 4582] By: jhi on 1999/11/14 17:10:01 Log: Integrate with Sarathy. Branch: cfgperl @@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Sat Nov 13 17:55:50 EET 1999 [metaconfig 3.0 PL70] +# Generated on Tue Nov 16 23:04:27 EET 1999 [metaconfig 3.0 PL70] # (with additional metaconfig patches by perlbug@perl.com) cat >/tmp/c1$$ <<EOF @@ -3055,167 +3055,154 @@ case "$gccversion" in 1*) cpp=`./loc gcc-cpp $cpp $pth` ;; esac - -case "$usemorebits" in -"$define"|true|[yY]*) - use64bits="$define" - uselongdouble="$define" - usemorebits="$define" - ;; -*) usemorebits="$undef" - ;; -esac - - -cat <<EOM - -Perl can be built to understand large files (files larger than 2 gigabytes) -on some systems. To do so, Configure must be run with -Duselargefiles. - -If this doesn't make any sense to you, just accept the default. -EOM -case "$uselargefiles" in -"$define"|true|[yY]*) dflt='y' ;; -*) dflt='n' ;; -esac -rp='Try to understand large files?' -. ./myread -case "$ans" in -y|Y) val="$define" ;; -*) val="$undef" ;; -esac -set uselargefiles -eval $setvar -case "$uselargefiles" in -"$define") use64bits="$define" ;; -esac - -cat <<EOM - -Perl can be built to take advantage of explicit 64-bit interfaces, -on some systems. To do so, Configure must be run with -Duse64bits. - -If this doesn't make any sense to you, just accept the default. -EOM -case "$use64bits" in -$define|true|[yY]*) dflt='y';; -*) dflt='n';; -esac -rp='Try to use explicit 64-bit interfaces, if available?' -. ./myread -case "$ans" in -y|Y) - val="$define" - ;; -*) - val="$undef" - ;; -esac -set use64bits -eval $setvar - -case "$archname64" in -'') archname64='' ;; # not a typo -esac - -case "$use64bits" in -"$define"|true|[yY]*) -: Look for a hint-file generated 'call-back-unit'. If the -: user has specified that a 64 bit perl is to be built, -: we may need to set or change some other defaults. - if $test -f use64bits.cbu; then - echo "Your platform has some specific hints for 64-bit builds, using them..." - . ./use64bits.cbu - else - $cat <<EOM -(Your platform doesn't have any specific hints for 64-bit builds. - This is probably okay, especially if your system is a true 64-bit system.) -EOM - case "$gccversion" in - '') ;; - *) $cat <<EOM -But since you seem to be using gcc, -I will now add -DUSE_LONG_LONG to the compilation flags. -EOM - ccflags="$ccflags -DUSE_LONG_LONG" - ;; - esac - fi - ;; -esac - -: determine the architecture name +: see how we invoke the C preprocessor echo " " -if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then - tarch=`arch`"-$osname" -elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then - if uname -m > tmparch 2>&1 ; then - tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \ - -e 's/$/'"-$osname/" tmparch` +echo "Now, how can we feed standard input to your C preprocessor..." >&4 +cat <<'EOT' >testcpp.c +#define ABC abc +#define XYZ xyz +ABC.XYZ +EOT +cd .. +if test ! -f cppstdin; then + if test "X$osname" = "Xaix" -a "X$gccversion" = X; then + # AIX cc -E doesn't show the absolute headerfile + # locations but we'll cheat by using the -M flag. + echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin else - tarch="$osname" + echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin fi - $rm -f tmparch else - tarch="$osname" + echo "Keeping your $hint cppstdin wrapper." fi -case "$myarchname" in -''|"$tarch") ;; -*) - echo "(Your architecture name used to be $myarchname.)" - archname='' - ;; -esac -myarchname="$tarch" -case "$archname" in -'') dflt="$tarch";; -*) dflt="$archname";; -esac -rp='What is your architecture name' -. ./myread -archname="$ans" -case "$usethreads" in -$define) - echo "Threads selected." >&4 - case "$archname" in - *-thread*) echo "...and architecture name already has -thread." >&4 - ;; - *) archname="$archname-thread" - echo "...setting architecture name to $archname." >&4 - ;; - esac - ;; -esac -case "$usemultiplicity" in -$define) - echo "Multiplicity selected." >&4 - case "$archname" in - *-multi*) echo "...and architecture name already has -multi." >&4 - ;; - *) archname="$archname-multi" - echo "...setting architecture name to $archname." >&4 - ;; - esac - ;; -esac -case "$use64bits" in -$define) - echo "Explicit 64-bitness selected." >&4 - case "$archname64" in - '') +chmod 755 cppstdin +wrapper=`pwd`/cppstdin +ok='false' +cd UU + +if $test "X$cppstdin" != "X" && \ + $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 +then + echo "You used to use $cppstdin $cppminus so we'll use that again." + case "$cpprun" in + '') echo "But let's see if we can live without a wrapper..." ;; + *) + if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 + then + echo "(And we'll use $cpprun $cpplast to preprocess directly.)" + ok='true' + else + echo "(However, $cpprun $cpplast does not work, let's see...)" + fi ;; + esac +else + case "$cppstdin" in + '') ;; *) - case "$archname" in - *-$archname64*) echo "...and architecture name already has $archname64." >&4 - ;; - *) archname="$archname-$archname64" - echo "...setting architecture name to $archname." >&4 - ;; - esac + echo "Good old $cppstdin $cppminus does not seem to be of any help..." ;; esac +fi + +if $ok; then + : nothing +elif echo 'Maybe "'"$cc"' -E" will work...'; \ + $cc -E <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Yup, it does." + x_cpp="$cc -E" + x_minus=''; +elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \ + $cc -E - <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Yup, it does." + x_cpp="$cc -E" + x_minus='-'; +elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \ + $cc -P <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Yipee, that works!" + x_cpp="$cc -P" + x_minus=''; +elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \ + $cc -P - <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "At long last!" + x_cpp="$cc -P" + x_minus='-'; +elif echo 'No such luck, maybe "'$cpp'" will work...'; \ + $cpp <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "It works!" + x_cpp="$cpp" + x_minus=''; +elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \ + $cpp - <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "Hooray, it works! I was beginning to wonder." + x_cpp="$cpp" + x_minus='-'; +elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \ + $wrapper <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + x_cpp="$wrapper" + x_minus='' + echo "Eureka!" +else + dflt='' + rp="No dice. I can't find a C preprocessor. Name one:" + . ./myread + x_cpp="$ans" + x_minus='' + $x_cpp <testcpp.c >testcpp.out 2>&1 + if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then + echo "OK, that will do." >&4 + else +echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4 + exit 1 + fi +fi + +case "$ok" in +false) + cppstdin="$x_cpp" + cppminus="$x_minus" + cpprun="$x_cpp" + cpplast="$x_minus" + set X $x_cpp + shift + case "$1" in + "$cpp") + echo "Perhaps can we force $cc -E using a wrapper..." + if $wrapper <testcpp.c >testcpp.out 2>&1; \ + $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 + then + echo "Yup, we can." + cppstdin="$wrapper" + cppminus=''; + else + echo "Nope, we'll have to live without it..." + fi + ;; + esac + case "$cpprun" in + "$wrapper") + cpprun='' + cpplast='' + ;; + esac + ;; esac +case "$cppstdin" in +"$wrapper"|'cppstdin') ;; +*) $rm -f $wrapper;; +esac +$rm -f testcpp.c testcpp.out + : decide how portable to be. Allow command line overrides. case "$d_portable" in "$undef") ;; @@ -3493,391 +3480,6 @@ rm -f getfile.ok test "X$gfpthkeep" != Xy && gfpth="" EOSC -: determine root of directory hierarchy where package will be installed. -case "$prefix" in -'') - dflt=`./loc . /usr/local /usr/local /local /opt /usr` - ;; -*) - dflt="$prefix" - ;; -esac -$cat <<EOM - -By default, $package will be installed in $dflt/bin, manual pages -under $dflt/man, etc..., i.e. with $dflt as prefix for all -installation directories. Typically this is something like /usr/local. -If you wish to have binaries under /usr/bin but other parts of the -installation under /usr/local, that's ok: you will be prompted -separately for each of the installation directories, the prefix being -only used to set the defaults. - -EOM -fn=d~ -rp='Installation prefix to use?' -. ./getfile -oldprefix='' -case "$prefix" in -'') ;; -*) - case "$ans" in - "$prefix") ;; - *) oldprefix="$prefix";; - esac - ;; -esac -prefix="$ans" -prefixexp="$ansexp" - -: is AFS running? -echo " " -case "$afs" in -$define|true) afs=true ;; -$undef|false) afs=false ;; -*) if test -d /afs; then - afs=true - else - afs=false - fi - ;; -esac -if $afs; then - echo "AFS may be running... I'll be extra cautious then..." >&4 -else - echo "AFS does not seem to be running..." >&4 -fi - -: determine installation prefix for where package is to be installed. -if $afs; then -$cat <<EOM - -Since you are running AFS, I need to distinguish the directory in which -files will reside from the directory in which they are installed (and from -which they are presumably copied to the former directory by occult means). - -EOM - case "$installprefix" in - '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;; - *) dflt="$installprefix";; - esac -else -$cat <<EOM - -In some special cases, particularly when building $package for distribution, -it is convenient to distinguish between the directory in which files should -be installed from the directory ($prefix) in which they -will eventually reside. For most users, these two directories are the same. - -EOM - case "$installprefix" in - '') dflt=$prefix ;; - *) dflt=$installprefix;; - esac -fi -fn=d~ -rp='What installation prefix should I use for installing files?' -. ./getfile -installprefix="$ans" -installprefixexp="$ansexp" - -: set the prefixit variable, to compute a suitable default value -prefixit='case "$3" in -""|none) - case "$oldprefix" in - "") eval "$1=\"\$$2\"";; - *) - case "$3" in - "") eval "$1=";; - none) - eval "tp=\"\$$2\""; - case "$tp" in - ""|" ") eval "$1=\"\$$2\"";; - *) eval "$1=";; - esac;; - esac;; - esac;; -*) - eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\""; - case "$tp" in - --|/*--|\~*--) eval "$1=\"$prefix/$3\"";; - /*-$oldprefix/*|\~*-$oldprefix/*) - eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";; - *) eval "$1=\"\$$2\"";; - esac;; -esac' - -: set the base revision -baserev=5.0 - -: get the patchlevel -echo " " -echo "Getting the current patchlevel..." >&4 -if $test -r $rsrc/patchlevel.h;then - patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` - subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` - apiversion=`awk '/define[ ]+PERL_APIVERSION/ {print $3}' $rsrc/patchlevel.h` -else - patchlevel=0 - subversion=0 - apiversion=0 -fi -$echo $n "(You have $package" $c -case "$package" in -"*$baserev") ;; -*) $echo $n " $baserev" $c ;; -esac -$echo $n " patchlevel $patchlevel" $c -test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c -echo ".)" - -if test 0 -eq "$subversion"; then - version=`LC_ALL=C; export LC_ALL; \ - echo $baserev $patchlevel | \ - $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'` -else - version=`LC_ALL=C; export LC_ALL; \ - echo $baserev $patchlevel $subversion | \ - $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'` -fi - -: determine installation style -: For now, try to deduce it from prefix unless it is already set. -: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7. -case "$installstyle" in -'') case "$prefix" in - *perl*) dflt='lib';; - *) dflt='lib/perl5' ;; - esac - ;; -*) dflt='lib/perl5' ;; -esac -: Probably not worth prompting for this since we prompt for all -: the directories individually, and the prompt would be too long and -: confusing anyway. -installstyle=$dflt - -: determine where private library files go -: Usual default is /usr/local/lib/perl5/$version. -: Also allow things like /opt/perl/lib/$version, since -: /opt/perl/lib/perl5... would be redundant. -: The default "style" setting is made in installstyle.U -case "$installstyle" in -*lib/perl5*) set dflt privlib lib/$package/$version ;; -*) set dflt privlib lib/$version ;; -esac -eval $prefixit -$cat <<EOM - -There are some auxiliary files for $package that need to be put into a -private library directory that is accessible by everyone. - -EOM -fn=d~+ -rp='Pathname where the private library files will reside?' -. ./getfile -privlib="$ans" -privlibexp="$ansexp" -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"` -else - installprivlib="$privlibexp" -fi - -: set the prefixup variable, to restore leading tilda escape -prefixup='case "$prefixexp" in -"$prefix") ;; -*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";; -esac' - -: determine where public architecture dependent libraries go -set archlib archlib -eval $prefixit -: privlib default is /usr/local/lib/$package/$version -: archlib default is /usr/local/lib/$package/$version/$archname -: privlib may have an optional trailing /share. -tdflt=`echo $privlib | $sed 's,/share$,,'` -tdflt=$tdflt/$archname -case "$archlib" in -'') dflt=$tdflt - ;; -*) dflt="$archlib" - ;; -esac -$cat <<EOM - -$spackage contains architecture-dependent library files. If you are -sharing libraries in a heterogeneous environment, you might store -these files in a separate location. Otherwise, you can just include -them with the rest of the public library files. - -EOM -fn=d+~ -rp='Where do you want to put the public architecture-dependent libraries?' -. ./getfile -archlib="$ans" -archlibexp="$ansexp" -if $test X"$archlib" = X"$privlib"; then - d_archlib="$undef" -else - d_archlib="$define" -fi -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"` -else - installarchlib="$archlibexp" -fi - - -: Binary compatibility with 5.005 is not possible for builds -: with advanced features -case "$usethreads$usemultiplicity" in -*define*) - bincompat5005="$undef" - d_bincompat5005="$undef" - ;; -*) $cat <<EOM - -Perl 5.006 can be compiled for binary compatibility with 5.005. -If you decide to do so, you will be able to continue using most -of the extensions that were compiled for Perl 5.005. - -EOM - case "$bincompat5005$d_bincompat5005" in - *"$undef"*) dflt=n ;; - *) dflt=y ;; - esac - rp='Binary compatibility with Perl 5.005?' - . ./myread - case "$ans" in - y*) val="$define" ;; - *) val="$undef" ;; - esac - set d_bincompat5005 - eval $setvar - case "$d_bincompat5005" in - "$define") - bincompat5005="$define" - ;; - *) bincompat5005="$undef" - d_bincompat5005="$undef" - ;; - esac - ;; -esac - - -: see if setuid scripts can be secure -$cat <<EOM - -Some kernels have a bug that prevents setuid #! scripts from being -secure. Some sites have disabled setuid #! scripts because of this. - -First let's decide if your kernel supports secure setuid #! scripts. -(If setuid #! scripts would be secure but have been disabled anyway, -don't say that they are secure if asked.) - -EOM - -val="$undef" -if $test -d /dev/fd; then - echo "#!$ls" >reflect - chmod +x,u+s reflect - ./reflect >flect 2>&1 - if $contains "/dev/fd" flect >/dev/null; then - echo "Congratulations, your kernel has secure setuid scripts!" >&4 - val="$define" - else - $cat <<EOM -If you are not sure if they are secure, I can check but I'll need a -username and password different from the one you are using right now. -If you don't have such a username or don't want me to test, simply -enter 'none'. - -EOM - rp='Other username to test security of setuid scripts with?' - dflt='none' - . ./myread - case "$ans" in - n|none) - case "$d_suidsafe" in - '') echo "I'll assume setuid scripts are *not* secure." >&4 - dflt=n;; - "$undef") - echo "Well, the $hint value is *not* secure." >&4 - dflt=n;; - *) echo "Well, the $hint value *is* secure." >&4 - dflt=y;; - esac - ;; - *) - $rm -f reflect flect - echo "#!$ls" >reflect - chmod +x,u+s reflect - echo >flect - chmod a+w flect - echo '"su" will (probably) prompt you for '"$ans's password." - su $ans -c './reflect >flect' - if $contains "/dev/fd" flect >/dev/null; then - echo "Okay, it looks like setuid scripts are secure." >&4 - dflt=y - else - echo "I don't think setuid scripts are secure." >&4 - dflt=n - fi - ;; - esac - rp='Does your kernel have *secure* setuid scripts?' - . ./myread - case "$ans" in - [yY]*) val="$define";; - *) val="$undef";; - esac - fi -else - echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4 - echo "(That's for file descriptors, not floppy disks.)" - val="$undef" -fi -set d_suidsafe -eval $setvar - -$rm -f reflect flect - -: now see if they want to do setuid emulation -echo " " -val="$undef" -case "$d_suidsafe" in -"$define") - val="$undef" - echo "No need to emulate SUID scripts since they are secure here." >& 4 - ;; -*) - $cat <<EOM -Some systems have disabled setuid scripts, especially systems where -setuid scripts cannot be secure. On systems where setuid scripts have -been disabled, the setuid/setgid bits on scripts are currently -useless. It is possible for $package to detect those bits and emulate -setuid/setgid in a secure fashion. This emulation will only work if -setuid scripts have been disabled in your kernel. - -EOM - case "$d_dosuid" in - "$define") dflt=y ;; - *) dflt=n ;; - esac - rp="Do you want to do setuid/setgid emulation?" - . ./myread - case "$ans" in - [yY]*) val="$define";; - *) val="$undef";; - esac - ;; -esac -set d_dosuid -eval $setvar - : What should the include directory be ? echo " " $echo $n "Hmm... $c" @@ -3924,154 +3526,6 @@ y) fn=d/ ;; esac -: see how we invoke the C preprocessor -echo " " -echo "Now, how can we feed standard input to your C preprocessor..." >&4 -cat <<'EOT' >testcpp.c -#define ABC abc -#define XYZ xyz -ABC.XYZ -EOT -cd .. -if test ! -f cppstdin; then - if test "X$osname" = "Xaix" -a "X$gccversion" = X; then - # AIX cc -E doesn't show the absolute headerfile - # locations but we'll cheat by using the -M flag. - echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin - else - echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin - fi -else - echo "Keeping your $hint cppstdin wrapper." -fi -chmod 755 cppstdin -wrapper=`pwd`/cppstdin -ok='false' -cd UU - -if $test "X$cppstdin" != "X" && \ - $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 -then - echo "You used to use $cppstdin $cppminus so we'll use that again." - case "$cpprun" in - '') echo "But let's see if we can live without a wrapper..." ;; - *) - if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 - then - echo "(And we'll use $cpprun $cpplast to preprocess directly.)" - ok='true' - else - echo "(However, $cpprun $cpplast does not work, let's see...)" - fi - ;; - esac -else - case "$cppstdin" in - '') ;; - *) - echo "Good old $cppstdin $cppminus does not seem to be of any help..." - ;; - esac -fi - -if $ok; then - : nothing -elif echo 'Maybe "'"$cc"' -E" will work...'; \ - $cc -E <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yup, it does." - x_cpp="$cc -E" - x_minus=''; -elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \ - $cc -E - <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yup, it does." - x_cpp="$cc -E" - x_minus='-'; -elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \ - $cc -P <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Yipee, that works!" - x_cpp="$cc -P" - x_minus=''; -elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \ - $cc -P - <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "At long last!" - x_cpp="$cc -P" - x_minus='-'; -elif echo 'No such luck, maybe "'$cpp'" will work...'; \ - $cpp <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "It works!" - x_cpp="$cpp" - x_minus=''; -elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \ - $cpp - <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "Hooray, it works! I was beginning to wonder." - x_cpp="$cpp" - x_minus='-'; -elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \ - $wrapper <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - x_cpp="$wrapper" - x_minus='' - echo "Eureka!" -else - dflt='' - rp="No dice. I can't find a C preprocessor. Name one:" - . ./myread - x_cpp="$ans" - x_minus='' - $x_cpp <testcpp.c >testcpp.out 2>&1 - if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then - echo "OK, that will do." >&4 - else -echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4 - exit 1 - fi -fi - -case "$ok" in -false) - cppstdin="$x_cpp" - cppminus="$x_minus" - cpprun="$x_cpp" - cpplast="$x_minus" - set X $x_cpp - shift - case "$1" in - "$cpp") - echo "Perhaps can we force $cc -E using a wrapper..." - if $wrapper <testcpp.c >testcpp.out 2>&1; \ - $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 - then - echo "Yup, we can." - cppstdin="$wrapper" - cppminus=''; - else - echo "Nope, we'll have to live without it..." - fi - ;; - esac - case "$cpprun" in - "$wrapper") - cpprun='' - cpplast='' - ;; - esac - ;; -esac - -case "$cppstdin" in -"$wrapper"|'cppstdin') ;; -*) $rm -f $wrapper;; -esac -$rm -f testcpp.c testcpp.out - : Set private lib path case "$plibpth" in '') if ./mips; then @@ -4597,6 +4051,822 @@ n) echo "OK, that should do.";; esac $rm -f try try.* core +: define an is-a-typedef? function +typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@; +case "$inclist" in +"") inclist="sys/types.h";; +esac; +eval "varval=\$$var"; +case "$varval" in +"") + $rm -f temp.c; + for inc in $inclist; do + echo "#include <$inc>" >>temp.c; + done; + echo "#ifdef $type" >> temp.c; + echo "printf(\"We have $type\");" >> temp.c; + echo "#endif" >> temp.c; + $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null; + if $contains $type temp.E >/dev/null 2>&1; then + eval "$var=\$type"; + else + eval "$var=\$def"; + fi; + $rm -f temp.?;; +*) eval "$var=\$varval";; +esac' + +: define an is-a-typedef? function that prompts if the type is not available. +typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@; +case "$inclist" in +"") inclist="sys/types.h";; +esac; +eval "varval=\$$var"; +case "$varval" in +"") + $rm -f temp.c; + for inc in $inclist; do + echo "#include <$inc>" >>temp.c; + done; + echo "#ifdef $type" >> temp.c; + echo "printf(\"We have $type\");" >> temp.c; + echo "#endif" >> temp.c; + $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null; + echo " " ; + echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./"; + if $contains $type temp.E >/dev/null 2>&1; then + echo "$type found." >&4; + eval "$var=\$type"; + else + echo "$type NOT found." >&4; + dflt="$def"; + . ./myread ; + eval "$var=\$ans"; + fi; + $rm -f temp.?;; +*) eval "$var=\$varval";; +esac' + +: define a shorthand compile call +compile=' +mc_file=$1; +shift; +$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;' +: define a shorthand compile call for compilations that should be ok. +compile_ok=' +mc_file=$1; +shift; +$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;' + +: check for lengths of integral types +echo " " +case "$intsize" in +'') + echo "Checking to see how big your integers are..." >&4 + $cat >intsize.c <<'EOCP' +#include <stdio.h> +int main() +{ + printf("intsize=%d;\n", (int)sizeof(int)); + printf("longsize=%d;\n", (int)sizeof(long)); + printf("shortsize=%d;\n", (int)sizeof(short)); + exit(0); +} +EOCP + set intsize + if eval $compile_ok && ./intsize > /dev/null; then + eval `./intsize` + echo "Your integers are $intsize bytes long." + echo "Your long integers are $longsize bytes long." + echo "Your short integers are $shortsize bytes long." + else + $cat >&4 <<EOM +! +Help! I can't compile and run the intsize test program: please enlighten me! +(This is probably a misconfiguration in your system or libraries, and +you really ought to fix it. Still, I'll try anyway.) +! +EOM + dflt=4 + rp="What is the size of an integer (in bytes)?" + . ./myread + intsize="$ans" + dflt=$intsize + rp="What is the size of a long integer (in bytes)?" + . ./myread + longsize="$ans" + dflt=2 + rp="What is the size of a short integer (in bytes)?" + . ./myread + shortsize="$ans" + fi + ;; +esac +$rm -f intsize intsize.* + +: see what type lseek is declared as in the kernel +rp="What is the type used for lseek's offset on this system?" +set off_t lseektype long stdio.h sys/types.h +eval $typedef_ask + +echo " " +$echo $n "Checking to see how big your file offsets are...$c" >&4 +$cat >try.c <<EOCP +#include <sys/types.h> +#include <stdio.h> +int main() +{ + printf("%d\n", (int)sizeof($lseektype)); + return(0); +} +EOCP +set try +if eval $compile_ok; then + lseeksize=`./try` + $echo " $lseeksize bytes." >&4 +else + dflt=$longsize + echo " " + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the size of your file offsets (in bytes)?" + . ./myread + lseeksize="$ans" +fi +$rm -f try.c try + +: see what type file positions are declared as in the library +rp="What is the type for file position used by fsetpos()?" +set fpos_t fpostype long stdio.h sys/types.h +eval $typedef_ask + +echo " " +case "$fpostype" in +*_t) zzz="$fpostype" ;; +*) zzz="fpos_t" ;; +esac +$echo $n "Checking the size of $zzz...$c" >&4 +cat > try.c <<EOCP +#include <sys/types.h> +#include <stdio.h> +int main() { + printf("%d\n", (int)sizeof($fpostype)); + exit(0); +} +EOCP +set try +if eval $compile_ok; then + yyy=`./try` + case "$yyy" in + '') fpossize=4 + echo " " + echo "(I can't execute the test program--guessing $fpossize.)" >&4 + ;; + *) fpossize=$yyy + echo " $fpossize bytes." + ;; + esac +else + dflt="$longsize" + echo " " + echo "(I can't compile the test program. Guessing...)" >&4 + rp="What is the size of your file positions (in bytes)?" + . ./myread + fpossize="$ans" +fi + + + +case "$lseeksize:$fpossize" in +8:8) cat <<EOM + +You can have files larger than 2 gigabytes. +EOM + val="$define" ;; +*) cat <<EOM + +Perl can be built to understand large files (files larger than 2 gigabytes) +on some systems. To do so, Configure must be run with -Duselargefiles. + +If this doesn't make any sense to you, just accept the default 'y'. +EOM + case "$uselargefiles" in + "$undef"|false|[nN]*) dflt='n' ;; + *) dflt='y' ;; + esac + rp='Try to understand large files, if available?' + . ./myread + case "$ans" in + y|Y) val="$define" ;; + *) val="$undef" ;; + esac + ;; +esac +set uselargefiles +eval $setvar +case "$uselargefiles" in +"$define") +: Look for a hint-file generated 'call-back-unit'. If the +: user has specified that a large files perl is to be built, +: we may need to set or change some other defaults. + if $test -f uselfs.cbu; then + echo "Your platform has some specific hints for large file builds, using them..." + . ./uselfs.cbu + echo " " + $echo $n "Rechecking to see how big your file offsets are...$c" >&4 + $cat >try.c <<EOCP +#include <sys/types.h> +#include <stdio.h> +int main() +{ + printf("%d\n", (int)sizeof($lseektype)); + return(0); +} +EOCP + set try + if eval $compile_ok; then + lseeksize=`./try` + $echo " $lseeksize bytes." >&4 + else + dflt="$lseeksize" + echo " " + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the size of your file offsets (in bytes)?" + . ./myread + lseeksize="$ans" + fi + case "$fpostype" in + *_t) zzz="$fpostype" ;; + *) zzz="fpos_t" ;; + esac + $echo $n "Rechecking the size of $zzz...$c" >&4 + $cat > try.c <<EOCP +#include <sys/types.h> +#include <stdio.h> +int main() { + printf("%d\n", (int)sizeof($fpostype)); + exit(0); +} +EOCP + set try + if eval $compile_ok; then + yyy=`./try` + dflt="$lseeksize" + case "$yyy" in + '') echo " " + echo "(I can't execute the test program--guessing $fpossize.)" >&4 + ;; + *) fpossize=$yyy + echo " $fpossize bytes." + ;; + esac + else + dflt="$fpossize" + echo " " + echo "(I can't compile the test program. Guessing...)" >&4 + rp="What is the size of your file positions (in bytes)?" + . ./myread + fpossize="$ans" + fi + $rm -f try.c try + fi + ;; +esac + + +case "$usemorebits" in +"$define"|true|[yY]*) + use64bits="$define" + uselongdouble="$define" + usemorebits="$define" + ;; +*) usemorebits="$undef" + ;; +esac + + +case "$intsize:$longsize" in +8:*|*:8) cat <<EOM + +You have natively 64-bit integers. +EOM + val="$define" ;; +*) cat <<EOM + +Perl can be built to take advantage of 64-bit integer types +on some systems. To do so, Configure must be run with -Duse64bits. + +If this doesn't make any sense to you, just accept the default. +EOM + case "$use64bits" in + $define|true|[yY]*) dflt='y';; + *) dflt='n';; + esac + rp='Try to use 64-bit integers, if available?' + . ./myread + case "$ans" in + y|Y) val="$define" ;; + *) val="$undef" ;; + esac + ;; +esac +set use64bits +eval $setvar + +case "$archname64" in +'') archname64='' ;; # not a typo +esac + +case "$use64bits" in +"$define"|true|[yY]*) +: Look for a hint-file generated 'call-back-unit'. If the +: user has specified that a 64-bit perl is to be built, +: we may need to set or change some other defaults. + if $test -f use64bits.cbu; then + echo "Your platform has some specific hints for 64-bit builds, using them..." + . ./use64bits.cbu + else + $cat <<EOM +(Your platform doesn't have any specific hints for 64-bit builds.) +EOM + case "$intsize:$longsize" in +8:*|*:8) cat <<EOM +(This is probably okay, as your system is a natively 64-bit system.) +EOM + ;; + esac + case "$gccversion" in + '') ;; + *) case "$ccflags" in + *-DUSE_LONG_LONG*) ;; + *) $cat <<EOM +But since you seem to be using gcc, I will now add -DUSE_LONG_LONG +to the compilation flags. +EOM + ccflags="$ccflags -DUSE_LONG_LONG" + ;; + esac + ;; + esac + fi + ;; +esac + +: determine the architecture name +echo " " +if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then + tarch=`arch`"-$osname" +elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then + if uname -m > tmparch 2>&1 ; then + tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \ + -e 's/$/'"-$osname/" tmparch` + else + tarch="$osname" + fi + $rm -f tmparch +else + tarch="$osname" +fi +case "$myarchname" in +''|"$tarch") ;; +*) + echo "(Your architecture name used to be $myarchname.)" + archname='' + ;; +esac +myarchname="$tarch" +case "$archname" in +'') dflt="$tarch";; +*) dflt="$archname";; +esac +rp='What is your architecture name' +. ./myread +archname="$ans" +case "$usethreads" in +$define) + echo "Threads selected." >&4 + case "$archname" in + *-thread*) echo "...and architecture name already has -thread." >&4 + ;; + *) archname="$archname-thread" + echo "...setting architecture name to $archname." >&4 + ;; + esac + ;; +esac +case "$usemultiplicity" in +$define) + echo "Multiplicity selected." >&4 + case "$archname" in + *-multi*) echo "...and architecture name already has -multi." >&4 + ;; + *) archname="$archname-multi" + echo "...setting architecture name to $archname." >&4 + ;; + esac + ;; +esac +case "$use64bits" in +$define) + case "$archname64" in + '') + ;; + *) + case "$archname" in + *-$archname64*) echo "...and architecture name already has $archname64." >&4 + ;; + *) archname="$archname-$archname64" + echo "...setting architecture name to $archname." >&4 + ;; + esac + ;; + esac +esac + +: determine root of directory hierarchy where package will be installed. +case "$prefix" in +'') + dflt=`./loc . /usr/local /usr/local /local /opt /usr` + ;; +*) + dflt="$prefix" + ;; +esac +$cat <<EOM + +By default, $package will be installed in $dflt/bin, manual pages +under $dflt/man, etc..., i.e. with $dflt as prefix for all +installation directories. Typically this is something like /usr/local. +If you wish to have binaries under /usr/bin but other parts of the +installation under /usr/local, that's ok: you will be prompted +separately for each of the installation directories, the prefix being +only used to set the defaults. + +EOM +fn=d~ +rp='Installation prefix to use?' +. ./getfile +oldprefix='' +case "$prefix" in +'') ;; +*) + case "$ans" in + "$prefix") ;; + *) oldprefix="$prefix";; + esac + ;; +esac +prefix="$ans" +prefixexp="$ansexp" + +: is AFS running? +echo " " +case "$afs" in +$define|true) afs=true ;; +$undef|false) afs=false ;; +*) if test -d /afs; then + afs=true + else + afs=false + fi + ;; +esac +if $afs; then + echo "AFS may be running... I'll be extra cautious then..." >&4 +else + echo "AFS does not seem to be running..." >&4 +fi + +: determine installation prefix for where package is to be installed. +if $afs; then +$cat <<EOM + +Since you are running AFS, I need to distinguish the directory in which +files will reside from the directory in which they are installed (and from +which they are presumably copied to the former directory by occult means). + +EOM + case "$installprefix" in + '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;; + *) dflt="$installprefix";; + esac +else +$cat <<EOM + +In some special cases, particularly when building $package for distribution, +it is convenient to distinguish between the directory in which files should +be installed from the directory ($prefix) in which they +will eventually reside. For most users, these two directories are the same. + +EOM + case "$installprefix" in + '') dflt=$prefix ;; + *) dflt=$installprefix;; + esac +fi +fn=d~ +rp='What installation prefix should I use for installing files?' +. ./getfile +installprefix="$ans" +installprefixexp="$ansexp" + +: set the prefixit variable, to compute a suitable default value +prefixit='case "$3" in +""|none) + case "$oldprefix" in + "") eval "$1=\"\$$2\"";; + *) + case "$3" in + "") eval "$1=";; + none) + eval "tp=\"\$$2\""; + case "$tp" in + ""|" ") eval "$1=\"\$$2\"";; + *) eval "$1=";; + esac;; + esac;; + esac;; +*) + eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\""; + case "$tp" in + --|/*--|\~*--) eval "$1=\"$prefix/$3\"";; + /*-$oldprefix/*|\~*-$oldprefix/*) + eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";; + *) eval "$1=\"\$$2\"";; + esac;; +esac' + +: set the base revision +baserev=5.0 + +: get the patchlevel +echo " " +echo "Getting the current patchlevel..." >&4 +if $test -r $rsrc/patchlevel.h;then + patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` + subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` + apiversion=`awk '/define[ ]+PERL_APIVERSION/ {print $3}' $rsrc/patchlevel.h` +else + patchlevel=0 + subversion=0 + apiversion=0 +fi +$echo $n "(You have $package" $c +case "$package" in +"*$baserev") ;; +*) $echo $n " $baserev" $c ;; +esac +$echo $n " patchlevel $patchlevel" $c +test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c +echo ".)" + +if test 0 -eq "$subversion"; then + version=`LC_ALL=C; export LC_ALL; \ + echo $baserev $patchlevel | \ + $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'` +else + version=`LC_ALL=C; export LC_ALL; \ + echo $baserev $patchlevel $subversion | \ + $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'` +fi + +: determine installation style +: For now, try to deduce it from prefix unless it is already set. +: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7. +case "$installstyle" in +'') case "$prefix" in + *perl*) dflt='lib';; + *) dflt='lib/perl5' ;; + esac + ;; +*) dflt='lib/perl5' ;; +esac +: Probably not worth prompting for this since we prompt for all +: the directories individually, and the prompt would be too long and +: confusing anyway. +installstyle=$dflt + +: determine where private library files go +: Usual default is /usr/local/lib/perl5/$version. +: Also allow things like /opt/perl/lib/$version, since +: /opt/perl/lib/perl5... would be redundant. +: The default "style" setting is made in installstyle.U +case "$installstyle" in +*lib/perl5*) set dflt privlib lib/$package/$version ;; +*) set dflt privlib lib/$version ;; +esac +eval $prefixit +$cat <<EOM + +There are some auxiliary files for $package that need to be put into a +private library directory that is accessible by everyone. + +EOM +fn=d~+ +rp='Pathname where the private library files will reside?' +. ./getfile +privlib="$ans" +privlibexp="$ansexp" +: Change installation prefix, if necessary. +if $test X"$prefix" != X"$installprefix"; then + installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"` +else + installprivlib="$privlibexp" +fi + +: set the prefixup variable, to restore leading tilda escape +prefixup='case "$prefixexp" in +"$prefix") ;; +*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";; +esac' + +: determine where public architecture dependent libraries go +set archlib archlib +eval $prefixit +: privlib default is /usr/local/lib/$package/$version +: archlib default is /usr/local/lib/$package/$version/$archname +: privlib may have an optional trailing /share. +tdflt=`echo $privlib | $sed 's,/share$,,'` +tdflt=$tdflt/$archname +case "$archlib" in +'') dflt=$tdflt + ;; +*) dflt="$archlib" + ;; +esac +$cat <<EOM + +$spackage contains architecture-dependent library files. If you are +sharing libraries in a heterogeneous environment, you might store +these files in a separate location. Otherwise, you can just include +them with the rest of the public library files. + +EOM +fn=d+~ +rp='Where do you want to put the public architecture-dependent libraries?' +. ./getfile +archlib="$ans" +archlibexp="$ansexp" +if $test X"$archlib" = X"$privlib"; then + d_archlib="$undef" +else + d_archlib="$define" +fi +: Change installation prefix, if necessary. +if $test X"$prefix" != X"$installprefix"; then + installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"` +else + installarchlib="$archlibexp" +fi + + +: Binary compatibility with 5.005 is not possible for builds +: with advanced features +case "$usethreads$usemultiplicity" in +*define*) + bincompat5005="$undef" + d_bincompat5005="$undef" + ;; +*) $cat <<EOM + +Perl 5.006 can be compiled for binary compatibility with 5.005. +If you decide to do so, you will be able to continue using most +of the extensions that were compiled for Perl 5.005. + +EOM + case "$bincompat5005$d_bincompat5005" in + *"$undef"*) dflt=n ;; + *) dflt=y ;; + esac + rp='Binary compatibility with Perl 5.005?' + . ./myread + case "$ans" in + y*) val="$define" ;; + *) val="$undef" ;; + esac + set d_bincompat5005 + eval $setvar + case "$d_bincompat5005" in + "$define") + bincompat5005="$define" + ;; + *) bincompat5005="$undef" + d_bincompat5005="$undef" + ;; + esac + ;; +esac + + +: see if setuid scripts can be secure +$cat <<EOM + +Some kernels have a bug that prevents setuid #! scripts from being +secure. Some sites have disabled setuid #! scripts because of this. + +First let's decide if your kernel supports secure setuid #! scripts. +(If setuid #! scripts would be secure but have been disabled anyway, +don't say that they are secure if asked.) + +EOM + +val="$undef" +if $test -d /dev/fd; then + echo "#!$ls" >reflect + chmod +x,u+s reflect + ./reflect >flect 2>&1 + if $contains "/dev/fd" flect >/dev/null; then + echo "Congratulations, your kernel has secure setuid scripts!" >&4 + val="$define" + else + $cat <<EOM +If you are not sure if they are secure, I can check but I'll need a +username and password different from the one you are using right now. +If you don't have such a username or don't want me to test, simply +enter 'none'. + +EOM + rp='Other username to test security of setuid scripts with?' + dflt='none' + . ./myread + case "$ans" in + n|none) + case "$d_suidsafe" in + '') echo "I'll assume setuid scripts are *not* secure." >&4 + dflt=n;; + "$undef") + echo "Well, the $hint value is *not* secure." >&4 + dflt=n;; + *) echo "Well, the $hint value *is* secure." >&4 + dflt=y;; + esac + ;; + *) + $rm -f reflect flect + echo "#!$ls" >reflect + chmod +x,u+s reflect + echo >flect + chmod a+w flect + echo '"su" will (probably) prompt you for '"$ans's password." + su $ans -c './reflect >flect' + if $contains "/dev/fd" flect >/dev/null; then + echo "Okay, it looks like setuid scripts are secure." >&4 + dflt=y + else + echo "I don't think setuid scripts are secure." >&4 + dflt=n + fi + ;; + esac + rp='Does your kernel have *secure* setuid scripts?' + . ./myread + case "$ans" in + [yY]*) val="$define";; + *) val="$undef";; + esac + fi +else + echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4 + echo "(That's for file descriptors, not floppy disks.)" + val="$undef" +fi +set d_suidsafe +eval $setvar + +$rm -f reflect flect + +: now see if they want to do setuid emulation +echo " " +val="$undef" +case "$d_suidsafe" in +"$define") + val="$undef" + echo "No need to emulate SUID scripts since they are secure here." >& 4 + ;; +*) + $cat <<EOM +Some systems have disabled setuid scripts, especially systems where +setuid scripts cannot be secure. On systems where setuid scripts have +been disabled, the setuid/setgid bits on scripts are currently +useless. It is possible for $package to detect those bits and emulate +setuid/setgid in a secure fashion. This emulation will only work if +setuid scripts have been disabled in your kernel. + +EOM + case "$d_dosuid" in + "$define") dflt=y ;; + *) dflt=n ;; + esac + rp="Do you want to do setuid/setgid emulation?" + . ./myread + case "$ans" in + [yY]*) val="$define";; + *) val="$undef";; + esac + ;; +esac +set d_dosuid +eval $setvar + : determine filename position in cpp output echo " " echo "Computing filename position in cpp output for #include directives..." >&4 @@ -4945,17 +5215,6 @@ fi set installusrbinperl eval $setvar -: define a shorthand compile call -compile=' -mc_file=$1; -shift; -$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;' -: define a shorthand compile call for compilations that should be ok. -compile_ok=' -mc_file=$1; -shift; -$cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;' - echo " " echo "Checking for GNU C Library..." >&4 cat >gnulibc.c <<EOM @@ -7237,52 +7496,6 @@ $rm -f set set.c set bzero d_bzero eval $inlibc -: check for lengths of integral types -echo " " -case "$intsize" in -'') - echo "Checking to see how big your integers are..." >&4 - $cat >intsize.c <<'EOCP' -#include <stdio.h> -int main() -{ - printf("intsize=%d;\n", (int)sizeof(int)); - printf("longsize=%d;\n", (int)sizeof(long)); - printf("shortsize=%d;\n", (int)sizeof(short)); - exit(0); -} -EOCP - set intsize - if eval $compile_ok && ./intsize > /dev/null; then - eval `./intsize` - echo "Your integers are $intsize bytes long." - echo "Your long integers are $longsize bytes long." - echo "Your short integers are $shortsize bytes long." - else - $cat >&4 <<EOM -! -Help! I can't compile and run the intsize test program: please enlighten me! -(This is probably a misconfiguration in your system or libraries, and -you really ought to fix it. Still, I'll try anyway.) -! -EOM - dflt=4 - rp="What is the size of an integer (in bytes)?" - . ./myread - intsize="$ans" - dflt=$intsize - rp="What is the size of a long integer (in bytes)?" - . ./myread - longsize="$ans" - dflt=2 - rp="What is the size of a short integer (in bytes)?" - . ./myread - shortsize="$ans" - fi - ;; -esac -$rm -f intsize intsize.* - : see if signal is declared as pointer to function returning int or void echo " " xxx=`./findhdr signal.h` @@ -8442,128 +8655,6 @@ eval $inlibc set fpathconf d_fpathconf eval $inlibc -: define an is-a-typedef? function -typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@; -case "$inclist" in -"") inclist="sys/types.h";; -esac; -eval "varval=\$$var"; -case "$varval" in -"") - $rm -f temp.c; - for inc in $inclist; do - echo "#include <$inc>" >>temp.c; - done; - echo "#ifdef $type" >> temp.c; - echo "printf(\"We have $type\");" >> temp.c; - echo "#endif" >> temp.c; - $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null; - if $contains $type temp.E >/dev/null 2>&1; then - eval "$var=\$type"; - else - eval "$var=\$def"; - fi; - $rm -f temp.?;; -*) eval "$var=\$varval";; -esac' - -: define an is-a-typedef? function that prompts if the type is not available. -typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@; -case "$inclist" in -"") inclist="sys/types.h";; -esac; -eval "varval=\$$var"; -case "$varval" in -"") - $rm -f temp.c; - for inc in $inclist; do - echo "#include <$inc>" >>temp.c; - done; - echo "#ifdef $type" >> temp.c; - echo "printf(\"We have $type\");" >> temp.c; - echo "#endif" >> temp.c; - $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null; - echo " " ; - echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./"; - if $contains $type temp.E >/dev/null 2>&1; then - echo "$type found." >&4; - eval "$var=\$type"; - else - echo "$type NOT found." >&4; - dflt="$def"; - . ./myread ; - eval "$var=\$ans"; - fi; - $rm -f temp.?;; -*) eval "$var=\$varval";; -esac' - -: see what type lseek is declared as in the kernel -rp="What is the type used for lseek's offset on this system?" -set off_t lseektype long stdio.h sys/types.h -eval $typedef_ask - -echo " " -$echo $n "Checking to see how big your file offsets are...$c" >&4 -$cat >try.c <<EOCP -#include <sys/types.h> -#include <stdio.h> -int main() -{ - printf("%d\n", (int)sizeof($lseektype)); - return(0); -} -EOCP -set try -if eval $compile_ok; then - lseeksize=`./try` - $echo " $lseeksize bytes." >&4 -else - dflt='4' - echo " " - echo "(I can't seem to compile the test program. Guessing...)" - rp="What is the size of your file offsets (in bytes)?" - . ./myread - lseeksize="$ans" -fi -$rm -f try.c try - -: see what type file positions are declared as in the library -rp="What is the type for file position used by fsetpos()?" -set fpos_t fpostype long stdio.h sys/types.h -eval $typedef_ask - -echo " " -case "$fpostype" in -*_t) zzz="$fpostype" ;; -*) zzz="fpos_t" ;; -esac -echo "Checking the size of $zzz..." >&4 -cat > try.c <<EOCP -#include <sys/types.h> -#include <stdio.h> -int main() { - printf("%d\n", (int)sizeof($fpostype)); - exit(0); -} -EOCP -set try -if eval $compile_ok; then - yyy=`./try` - case "$yyy" in - '') fpossize=4 - echo "(I can't execute the test program--guessing $fpossize.)" >&4 - ;; - *) fpossize=$yyy - echo "Your $zzz size is $fpossize bytes." - ;; - esac -else - fpossize=4 - echo "(I can't compile the test program--guessing $fpossize.)" >&4 -fi - - : check for off64_t echo " " @@ -901,12 +901,13 @@ lib/unicode/Is/Z.pl Unicode character database lib/unicode/Is/Zl.pl Unicode character database lib/unicode/Is/Zp.pl Unicode character database lib/unicode/Is/Zs.pl Unicode character database -lib/unicode/Jamo-2.txt Unicode character database +lib/unicode/Jamo.txt Unicode character database lib/unicode/JamoShort.pl Unicode character database lib/unicode/LineBrk.txt Unicode character database lib/unicode/Makefile Unicode character database lib/unicode/Name.pl Unicode character database lib/unicode/Names.txt Unicode character database +lib/unicode/NamesList.html Unicode character database lib/unicode/Number.pl Unicode character database lib/unicode/Props.txt Unicode character database lib/unicode/README.Ethiopic Unicode character database @@ -916,8 +917,9 @@ lib/unicode/To/Digit.pl Unicode character database lib/unicode/To/Lower.pl Unicode character database lib/unicode/To/Title.pl Unicode character database lib/unicode/To/Upper.pl Unicode character database -lib/unicode/Unicode.html Unicode character database -lib/unicode/UnicodeData-Latest.txt Unicode character database +lib/unicode/UCD300.html Unicode character database +lib/unicode/Unicode.300 Unicode character database +lib/unicode/Unicode3.html Unicode character database lib/unicode/mktables.PL Unicode character database generator lib/unicode/syllables.txt Unicode character database lib/utf8.pm Pragma to control Unicode support diff --git a/README.vms b/README.vms index fb13838842..13a1f9bb51 100644 --- a/README.vms +++ b/README.vms @@ -144,14 +144,14 @@ confident you are, make a bug report to the VMSPerl mailing list. If one or more tests fail, you can get more info on the failure by issuing this command sequence: -$ @[.VMS]TEST .typ "-v" [.subdir]test.T +$ @[.VMS]TEST .typ "" "-v" [.subdir]test.T where ".typ" is the file type of the Perl images you just built (if you didn't do anything special, use .EXE), and "[.subdir]test.T" is the test that failed. For example, with a normal Perl build, if the test indicated that [.op]time failed, then you'd do this: -$ @[.VMS]TEST .EXE "-v" [.OP]TIME.T +$ @[.VMS]TEST .EXE "" "-v" [.OP]TIME.T When you send in a bug report for failed tests, please include the output from this command, which is run from the main source directory: diff --git a/config_h.SH b/config_h.SH index 8dca72a5c1..7e0f25af9d 100644 --- a/config_h.SH +++ b/config_h.SH @@ -1000,21 +1000,13 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- /* HAS_QUAD: * This symbol, if defined, tells that there's a 64-bit integer type, - * Quad_t. - */ -/* Quad_t: - * This symbol holds the type used for 64-bit integers. - * It can be int, long, long long, int64_t etc... - */ -/* Uquad_t: - * This symbol holds the type used for unsigned 64-bit integers. - * It can be unsigned int, unsigned long, unsigned long long, - * uint64_t etc... + * Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one + * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T. */ #$d_quad HAS_QUAD /**/ -#$d_quad Quad_t $quadtype /**/ -#$d_quad Uquad_t $uquadtype /**/ #ifdef HAS_QUAD +# define Quad_t $quadtype /**/ +# define Uquad_t $uquadtype /**/ # define QUADKIND $quadkind /**/ # define QUAD_IS_INT 1 # define QUAD_IS_LONG 2 @@ -2554,8 +2546,8 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un- #$d_strtoull HAS_STRTOULL /**/ /* USE_64_BITS: - * This symbol, if defined, indicates that 64-bit interfaces should - * be used when available. If not defined, the native default interfaces + * This symbol, if defined, indicates that 64-bit integers should + * be used when available. If not defined, the native integers * will be used (be they 32 or 64 bits). */ #ifndef USE_64_BITS @@ -168,7 +168,7 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw, if (fd == -1) fp = NULL; else { - const char *fpmode; + char *fpmode; if (result == O_RDONLY) fpmode = "r"; #ifdef O_APPEND @@ -954,6 +954,7 @@ #define cache_re S_cache_re #define reghop S_reghop #define reghopmaybe S_reghopmaybe +#define find_byclass S_find_byclass #endif #if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) #define debprof S_debprof @@ -2337,6 +2338,7 @@ #define cache_re(a) S_cache_re(aTHX_ a) #define reghop(a,b) S_reghop(aTHX_ a,b) #define reghopmaybe(a,b) S_reghopmaybe(aTHX_ a,b) +#define find_byclass(a,b,c,d,e,f) S_find_byclass(aTHX_ a,b,c,d,e,f) #endif #if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) #define debprof(a) S_debprof(aTHX_ a) @@ -4557,6 +4559,8 @@ #define reghop S_reghop #define S_reghopmaybe CPerlObj::S_reghopmaybe #define reghopmaybe S_reghopmaybe +#define S_find_byclass CPerlObj::S_find_byclass +#define find_byclass S_find_byclass #endif #if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) #define S_debprof CPerlObj::S_debprof @@ -2036,6 +2036,7 @@ s |char*|regcp_set_to |I32 ss s |void |cache_re |regexp *prog s |U8* |reghop |U8 *pos|I32 off s |U8* |reghopmaybe |U8 *pos|I32 off +s |char* |find_byclass |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun #endif #if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL index 18260a9dca..75dacfc0bd 100644 --- a/ext/Errno/Errno_pm.PL +++ b/ext/Errno/Errno_pm.PL @@ -21,7 +21,7 @@ unlink "errno.c" if -f "errno.c"; sub process_file { my($file) = @_; - return unless defined $file; + return unless defined $file and -f $file; local *FH; if (($^O eq 'VMS') && ($Config{vms_cc_type} ne 'gnuc')) { diff --git a/hints/aix.sh b/hints/aix.sh index d905be1d17..56496e535e 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -77,6 +77,8 @@ case "$archname" in '') archname="$osname" ;; esac +cc=${cc:-cc} + case "$osvers" in 3*) d_fchmod=undef ccflags="$ccflags -D_ALL_SOURCE" @@ -180,7 +182,11 @@ EOM esac EOCBU -# Turn on largefileness, if available. +# This script UU/uselfs.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use large files. +cat > UU/uselfs.cbu <<'EOCBU' +case "$uselargefiles" in +$define|true|[yY]*) lfcflags="`getconf XBS5_ILP32_OFFBIG_CFLAGS 2>/dev/null`" lfldflags="`getconf XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`" # _Somehow_ in AIX 4.3.1.0 the above getconf call manages to @@ -195,16 +201,19 @@ EOCBU # the whatever it was that AIX managed to break. --jhi lfldflags="`echo $lfldflags`" lflibs="`getconf XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" -case "$lfcflags$lfldflags$lflibs" in -'');; -*) ccflags="$ccflags $lfcflags" - ldflags="$ldflags $ldldflags" - libswanted="$libswanted $lflibs" - ;; -esac + case "$lfcflags$lfldflags$lflibs" in + '');; + *) ccflags="$ccflags $lfcflags" + ldflags="$ldflags $ldldflags" + libswanted="$libswanted $lflibs" + ;; + esac lfcflags='' lfldflags='' lflibs='' + ;; +esac +EOCBU # This script UU/use64bits.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use 64 bits. diff --git a/hints/hpux.sh b/hints/hpux.sh index 681a722cb7..66fe7c4606 100644 --- a/hints/hpux.sh +++ b/hints/hpux.sh @@ -290,25 +290,47 @@ EOM esac EOCBU -# Turn on largefileness if available. +# This script UU/uselfs.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use 64 bits. +cat > UU/uselfs.cbu <<'EOCBU' +case "$uselargefiles" in +$define|true|[yY]*) lfcflags="`getconf _CS_XBS5_ILP32_OFFBIG_CFLAGS 2>/dev/null`" lfldflags="`getconf _CS_XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`" lflibs="`getconf _CS_XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" -case "$lfcflags$lfldflags$lflibs" in -'');; -*) ccflags="$ccflags $lfcflags" - ldflags="$ldflags $ldldflags" - libswanted="$libswanted $lflibs" - ;; -esac + case "$lfcflags$lfldflags$lflibs" in + '');; + *) # This sucks. To get the HP-UX strict ANSI mode (-Aa) to + # approve of large file offsets, we must turn on the 64-bitness + # (+DD64), too. A callback file (a hack) calling another, yuck. + case "$use64bits" in + $undef|false|[nN]*|'') + use64bits="$define" + if $test -f use64bits.cbu; then + echo "(Large files in HP-UX require also 64-bitness, picking up 64-bit hints...)" + . ./use64bits.cbu + fi + ;; + esac + ccflags="$ccflags $lfcflags" + ldflags="$ldflags $ldldflags" + libswanted="$libswanted $lflibs" + ;; + esac lfcflags='' lfldflags='' lflibs='' + ;; +esac +EOCBU # This script UU/use64bits.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use 64 bits. cat > UU/use64bits.cbu <<'EOCBU' -case "$use64bits" in +case "$ccflags" in +*+DD64*) # Been here, done this (via uselfs.cbu, most likely.) + ;; +*) case "$use64bits" in $define|true|[yY]*) if [ "$xxOsRevMajor" -lt 11 ]; then cat <<EOM >&4 @@ -332,6 +354,8 @@ EOM set `echo " $libswanted " | sed -e 's@ dl @ @'` libswanted="$*" glibpth="/lib/pa20_64" + esac + ;; esac EOCBU diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index 7de55f7292..8c280e3fb7 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -333,20 +333,29 @@ EOM esac EOCBU -# Turn on largefileness if available. +# This script UU/uselfs.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use large files. +cat > UU/uselfs.cbu <<'EOCBU' +case "$uselargefiles" in +$define|true|[yY]*) lfcflags="`getconf LFS_CFLAGS 2>/dev/null`" lfldflags="`getconf LFS_LDFLAGS 2>/dev/null`" lflibs="`getconf LFS_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" -case "$lfcflags$lfldflags$lflibs" in -'');; -*) ccflags="$ccflags -DUSE_LONG_LONG $lfcflags" - ldflags="$ldflags $ldldflags" - libswanted="$libswanted $lflibs" - ;; -esac + case "$lfcflags$lfldflags$lflibs" in + '');; + *) uselonglong="$define" + echo "(Large files in Solaris require also long longs, using long longs...)" + ccflags="$ccflags -DUSE_LONG_LONG $lfcflags" + ldflags="$ldflags $ldldflags" + libswanted="$libswanted $lflibs" + ;; + esac lfcflags='' lfldflags='' lflibs='' + ;; +esac +EOCBU # This script UU/use64bits.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use 64 bits. diff --git a/lib/unicode/ArabLink.pl b/lib/unicode/ArabLink.pl index ed80abae1a..fd5ed8a6b1 100644 --- a/lib/unicode/ArabLink.pl +++ b/lib/unicode/ArabLink.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0622 0625 R diff --git a/lib/unicode/ArabLnkGrp.pl b/lib/unicode/ArabLnkGrp.pl index 995bf5af9b..61f30d4348 100644 --- a/lib/unicode/ArabLnkGrp.pl +++ b/lib/unicode/ArabLnkGrp.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0622 0623 ALEF diff --git a/lib/unicode/Bidirectional.pl b/lib/unicode/Bidirectional.pl index 6315097bd1..73898b8399 100644 --- a/lib/unicode/Bidirectional.pl +++ b/lib/unicode/Bidirectional.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 0008 BN diff --git a/lib/unicode/Block.pl b/lib/unicode/Block.pl index 24eb426829..ee680b724d 100644 --- a/lib/unicode/Block.pl +++ b/lib/unicode/Block.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 007F Basic Latin diff --git a/lib/unicode/Category.pl b/lib/unicode/Category.pl index c15232a506..bffd1169be 100644 --- a/lib/unicode/Category.pl +++ b/lib/unicode/Category.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 001f Cc diff --git a/lib/unicode/CombiningClass.pl b/lib/unicode/CombiningClass.pl index ffa857680e..a40949830c 100644 --- a/lib/unicode/CombiningClass.pl +++ b/lib/unicode/CombiningClass.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0300 0314 230 diff --git a/lib/unicode/Decomposition.pl b/lib/unicode/Decomposition.pl index e06f4b6a5c..ecc30b205e 100644 --- a/lib/unicode/Decomposition.pl +++ b/lib/unicode/Decomposition.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00a0 <noBreak> 0020 diff --git a/lib/unicode/Eq/Latin1.pl b/lib/unicode/Eq/Latin1.pl index feb3ee126f..e033d2cb8b 100644 --- a/lib/unicode/Eq/Latin1.pl +++ b/lib/unicode/Eq/Latin1.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 00C0 00C1 00C2 00C3 00C4 00C5 diff --git a/lib/unicode/Eq/Unicode.pl b/lib/unicode/Eq/Unicode.pl index dc96a0c535..35edd61d2e 100644 --- a/lib/unicode/Eq/Unicode.pl +++ b/lib/unicode/Eq/Unicode.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 00C0 00C1 00C2 00C3 00C4 00C5 0100 0102 0104 01CD 0200 0202 0226 1E00 1EA0 1EA2 FF21 diff --git a/lib/unicode/In/AlphabeticPresentationForms.pl b/lib/unicode/In/AlphabeticPresentationForms.pl index 1afc458c99..c42e944a3c 100644 --- a/lib/unicode/In/AlphabeticPresentationForms.pl +++ b/lib/unicode/In/AlphabeticPresentationForms.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FB00 FB4F diff --git a/lib/unicode/In/Arabic.pl b/lib/unicode/In/Arabic.pl index 1c6ce8005d..5010ab73de 100644 --- a/lib/unicode/In/Arabic.pl +++ b/lib/unicode/In/Arabic.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0600 06FF diff --git a/lib/unicode/In/ArabicPresentationForms-A.pl b/lib/unicode/In/ArabicPresentationForms-A.pl index 4486588ee3..6edd74d755 100644 --- a/lib/unicode/In/ArabicPresentationForms-A.pl +++ b/lib/unicode/In/ArabicPresentationForms-A.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FB50 FDFF diff --git a/lib/unicode/In/ArabicPresentationForms-B.pl b/lib/unicode/In/ArabicPresentationForms-B.pl index 2308d1f5ef..964073931e 100644 --- a/lib/unicode/In/ArabicPresentationForms-B.pl +++ b/lib/unicode/In/ArabicPresentationForms-B.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FE70 FEFE diff --git a/lib/unicode/In/Armenian.pl b/lib/unicode/In/Armenian.pl index 48b0ea8197..19b74acd71 100644 --- a/lib/unicode/In/Armenian.pl +++ b/lib/unicode/In/Armenian.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0530 058F diff --git a/lib/unicode/In/Arrows.pl b/lib/unicode/In/Arrows.pl index ed214428ff..7ce44183a1 100644 --- a/lib/unicode/In/Arrows.pl +++ b/lib/unicode/In/Arrows.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2190 21FF diff --git a/lib/unicode/In/BasicLatin.pl b/lib/unicode/In/BasicLatin.pl index eb126b6bd6..39987f16ec 100644 --- a/lib/unicode/In/BasicLatin.pl +++ b/lib/unicode/In/BasicLatin.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 007F diff --git a/lib/unicode/In/Bengali.pl b/lib/unicode/In/Bengali.pl index f1ff7e772f..c0a47d30d1 100644 --- a/lib/unicode/In/Bengali.pl +++ b/lib/unicode/In/Bengali.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0980 09FF diff --git a/lib/unicode/In/BlockElements.pl b/lib/unicode/In/BlockElements.pl index 8f550a76bc..e96e64faa0 100644 --- a/lib/unicode/In/BlockElements.pl +++ b/lib/unicode/In/BlockElements.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2580 259F diff --git a/lib/unicode/In/Bopomofo.pl b/lib/unicode/In/Bopomofo.pl index 5760e63386..553560670c 100644 --- a/lib/unicode/In/Bopomofo.pl +++ b/lib/unicode/In/Bopomofo.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3100 312F diff --git a/lib/unicode/In/BopomofoExtended.pl b/lib/unicode/In/BopomofoExtended.pl index b1ce9c6cb8..d0ee43a437 100644 --- a/lib/unicode/In/BopomofoExtended.pl +++ b/lib/unicode/In/BopomofoExtended.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 31A0 31BF diff --git a/lib/unicode/In/BoxDrawing.pl b/lib/unicode/In/BoxDrawing.pl index e8636bc071..d580199b7f 100644 --- a/lib/unicode/In/BoxDrawing.pl +++ b/lib/unicode/In/BoxDrawing.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2500 257F diff --git a/lib/unicode/In/BraillePatterns.pl b/lib/unicode/In/BraillePatterns.pl index f0c663769b..e5c9e4ca70 100644 --- a/lib/unicode/In/BraillePatterns.pl +++ b/lib/unicode/In/BraillePatterns.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2800 28FF diff --git a/lib/unicode/In/CJKCompatibility.pl b/lib/unicode/In/CJKCompatibility.pl index bbe60d3a6d..07ab8edfd4 100644 --- a/lib/unicode/In/CJKCompatibility.pl +++ b/lib/unicode/In/CJKCompatibility.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3300 33FF diff --git a/lib/unicode/In/CJKCompatibilityForms.pl b/lib/unicode/In/CJKCompatibilityForms.pl index 69d8a35902..122ccd7ad6 100644 --- a/lib/unicode/In/CJKCompatibilityForms.pl +++ b/lib/unicode/In/CJKCompatibilityForms.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FE30 FE4F diff --git a/lib/unicode/In/CJKCompatibilityIdeographs.pl b/lib/unicode/In/CJKCompatibilityIdeographs.pl index ebf7996c44..59c8e5dd5b 100644 --- a/lib/unicode/In/CJKCompatibilityIdeographs.pl +++ b/lib/unicode/In/CJKCompatibilityIdeographs.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; F900 FAFF diff --git a/lib/unicode/In/CJKRadicalsSupplement.pl b/lib/unicode/In/CJKRadicalsSupplement.pl index 254d3c34db..d4c0c82bb6 100644 --- a/lib/unicode/In/CJKRadicalsSupplement.pl +++ b/lib/unicode/In/CJKRadicalsSupplement.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2E80 2EFF diff --git a/lib/unicode/In/CJKSymbolsandPunctuation.pl b/lib/unicode/In/CJKSymbolsandPunctuation.pl index 616fcd848e..24ecc37b67 100644 --- a/lib/unicode/In/CJKSymbolsandPunctuation.pl +++ b/lib/unicode/In/CJKSymbolsandPunctuation.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3000 303F diff --git a/lib/unicode/In/CJKUnifiedIdeographs.pl b/lib/unicode/In/CJKUnifiedIdeographs.pl index f3da86fa49..351cf74a82 100644 --- a/lib/unicode/In/CJKUnifiedIdeographs.pl +++ b/lib/unicode/In/CJKUnifiedIdeographs.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 4E00 9FFF diff --git a/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl b/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl index fb3ab5b9a4..012f54c824 100644 --- a/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl +++ b/lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3400 4DB5 diff --git a/lib/unicode/In/Cherokee.pl b/lib/unicode/In/Cherokee.pl index caf90be458..10cae1a652 100644 --- a/lib/unicode/In/Cherokee.pl +++ b/lib/unicode/In/Cherokee.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 13A0 13FF diff --git a/lib/unicode/In/CombiningDiacriticalMarks.pl b/lib/unicode/In/CombiningDiacriticalMarks.pl index cd26be1190..a32f974bfb 100644 --- a/lib/unicode/In/CombiningDiacriticalMarks.pl +++ b/lib/unicode/In/CombiningDiacriticalMarks.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0300 036F diff --git a/lib/unicode/In/CombiningHalfMarks.pl b/lib/unicode/In/CombiningHalfMarks.pl index 670da163bc..100471bdbb 100644 --- a/lib/unicode/In/CombiningHalfMarks.pl +++ b/lib/unicode/In/CombiningHalfMarks.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FE20 FE2F diff --git a/lib/unicode/In/CombiningMarksforSymbols.pl b/lib/unicode/In/CombiningMarksforSymbols.pl index 1e404583c1..f45e7e0490 100644 --- a/lib/unicode/In/CombiningMarksforSymbols.pl +++ b/lib/unicode/In/CombiningMarksforSymbols.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 20D0 20FF diff --git a/lib/unicode/In/ControlPictures.pl b/lib/unicode/In/ControlPictures.pl index c7d0230b59..77a759f1a0 100644 --- a/lib/unicode/In/ControlPictures.pl +++ b/lib/unicode/In/ControlPictures.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2400 243F diff --git a/lib/unicode/In/CurrencySymbols.pl b/lib/unicode/In/CurrencySymbols.pl index 63c271e30c..567ae97da3 100644 --- a/lib/unicode/In/CurrencySymbols.pl +++ b/lib/unicode/In/CurrencySymbols.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 20A0 20CF diff --git a/lib/unicode/In/Cyrillic.pl b/lib/unicode/In/Cyrillic.pl index 87833c4cbb..9ca104c7db 100644 --- a/lib/unicode/In/Cyrillic.pl +++ b/lib/unicode/In/Cyrillic.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0400 04FF diff --git a/lib/unicode/In/Devanagari.pl b/lib/unicode/In/Devanagari.pl index acb52fd776..61372b58ab 100644 --- a/lib/unicode/In/Devanagari.pl +++ b/lib/unicode/In/Devanagari.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0900 097F diff --git a/lib/unicode/In/Dingbats.pl b/lib/unicode/In/Dingbats.pl index b2e5381c74..0f820ca711 100644 --- a/lib/unicode/In/Dingbats.pl +++ b/lib/unicode/In/Dingbats.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2700 27BF diff --git a/lib/unicode/In/EnclosedAlphanumerics.pl b/lib/unicode/In/EnclosedAlphanumerics.pl index b8db489369..de52aa8d99 100644 --- a/lib/unicode/In/EnclosedAlphanumerics.pl +++ b/lib/unicode/In/EnclosedAlphanumerics.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2460 24FF diff --git a/lib/unicode/In/EnclosedCJKLettersandMonths.pl b/lib/unicode/In/EnclosedCJKLettersandMonths.pl index f580beb13b..e4de0e0261 100644 --- a/lib/unicode/In/EnclosedCJKLettersandMonths.pl +++ b/lib/unicode/In/EnclosedCJKLettersandMonths.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3200 32FF diff --git a/lib/unicode/In/Ethiopic.pl b/lib/unicode/In/Ethiopic.pl index 2319318693..13c309050a 100644 --- a/lib/unicode/In/Ethiopic.pl +++ b/lib/unicode/In/Ethiopic.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1200 137F diff --git a/lib/unicode/In/GeneralPunctuation.pl b/lib/unicode/In/GeneralPunctuation.pl index ec9017f807..81c76992dc 100644 --- a/lib/unicode/In/GeneralPunctuation.pl +++ b/lib/unicode/In/GeneralPunctuation.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2000 206F diff --git a/lib/unicode/In/GeometricShapes.pl b/lib/unicode/In/GeometricShapes.pl index 9a9ae24772..170422d2d0 100644 --- a/lib/unicode/In/GeometricShapes.pl +++ b/lib/unicode/In/GeometricShapes.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 25A0 25FF diff --git a/lib/unicode/In/Georgian.pl b/lib/unicode/In/Georgian.pl index 7557770c66..773ed1562a 100644 --- a/lib/unicode/In/Georgian.pl +++ b/lib/unicode/In/Georgian.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 10A0 10FF diff --git a/lib/unicode/In/Greek.pl b/lib/unicode/In/Greek.pl index 33c33fa7a8..ff753d19b4 100644 --- a/lib/unicode/In/Greek.pl +++ b/lib/unicode/In/Greek.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0370 03FF diff --git a/lib/unicode/In/GreekExtended.pl b/lib/unicode/In/GreekExtended.pl index 339c935ca9..b8f02e7f0a 100644 --- a/lib/unicode/In/GreekExtended.pl +++ b/lib/unicode/In/GreekExtended.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1F00 1FFF diff --git a/lib/unicode/In/Gujarati.pl b/lib/unicode/In/Gujarati.pl index 74efa7564d..ff6c6503bb 100644 --- a/lib/unicode/In/Gujarati.pl +++ b/lib/unicode/In/Gujarati.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0A80 0AFF diff --git a/lib/unicode/In/Gurmukhi.pl b/lib/unicode/In/Gurmukhi.pl index b192bc374c..b888df6941 100644 --- a/lib/unicode/In/Gurmukhi.pl +++ b/lib/unicode/In/Gurmukhi.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0A00 0A7F diff --git a/lib/unicode/In/HalfwidthandFullwidthForms.pl b/lib/unicode/In/HalfwidthandFullwidthForms.pl index cb52d149e5..e45265393f 100644 --- a/lib/unicode/In/HalfwidthandFullwidthForms.pl +++ b/lib/unicode/In/HalfwidthandFullwidthForms.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FF00 FFEF diff --git a/lib/unicode/In/HangulCompatibilityJamo.pl b/lib/unicode/In/HangulCompatibilityJamo.pl index ff38b3f9a5..c15379fafc 100644 --- a/lib/unicode/In/HangulCompatibilityJamo.pl +++ b/lib/unicode/In/HangulCompatibilityJamo.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3130 318F diff --git a/lib/unicode/In/HangulJamo.pl b/lib/unicode/In/HangulJamo.pl index 040c454b2e..c329b54c34 100644 --- a/lib/unicode/In/HangulJamo.pl +++ b/lib/unicode/In/HangulJamo.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1100 11FF diff --git a/lib/unicode/In/HangulSyllables.pl b/lib/unicode/In/HangulSyllables.pl index 263f0fafee..7d91a363f5 100644 --- a/lib/unicode/In/HangulSyllables.pl +++ b/lib/unicode/In/HangulSyllables.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; AC00 D7A3 diff --git a/lib/unicode/In/Hebrew.pl b/lib/unicode/In/Hebrew.pl index b59315bd39..abe7b9ede4 100644 --- a/lib/unicode/In/Hebrew.pl +++ b/lib/unicode/In/Hebrew.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0590 05FF diff --git a/lib/unicode/In/HighPrivateUseSurrogates.pl b/lib/unicode/In/HighPrivateUseSurrogates.pl index 6cea428015..6ed7ac96fd 100644 --- a/lib/unicode/In/HighPrivateUseSurrogates.pl +++ b/lib/unicode/In/HighPrivateUseSurrogates.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; DB80 DBFF diff --git a/lib/unicode/In/HighSurrogates.pl b/lib/unicode/In/HighSurrogates.pl index 67c4246b08..924a0c9bdb 100644 --- a/lib/unicode/In/HighSurrogates.pl +++ b/lib/unicode/In/HighSurrogates.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; D800 DB7F diff --git a/lib/unicode/In/Hiragana.pl b/lib/unicode/In/Hiragana.pl index 438f68f6c9..7a65302188 100644 --- a/lib/unicode/In/Hiragana.pl +++ b/lib/unicode/In/Hiragana.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3040 309F diff --git a/lib/unicode/In/IPAExtensions.pl b/lib/unicode/In/IPAExtensions.pl index 8298b4e414..20906d6300 100644 --- a/lib/unicode/In/IPAExtensions.pl +++ b/lib/unicode/In/IPAExtensions.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0250 02AF diff --git a/lib/unicode/In/IdeographicDescriptionCharacters.pl b/lib/unicode/In/IdeographicDescriptionCharacters.pl index 71916bdd50..4baae881a1 100644 --- a/lib/unicode/In/IdeographicDescriptionCharacters.pl +++ b/lib/unicode/In/IdeographicDescriptionCharacters.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2FF0 2FFF diff --git a/lib/unicode/In/Kanbun.pl b/lib/unicode/In/Kanbun.pl index 6c162ac468..57d6bd21f4 100644 --- a/lib/unicode/In/Kanbun.pl +++ b/lib/unicode/In/Kanbun.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3190 319F diff --git a/lib/unicode/In/KangxiRadicals.pl b/lib/unicode/In/KangxiRadicals.pl index 277da7a71d..d26fd6c774 100644 --- a/lib/unicode/In/KangxiRadicals.pl +++ b/lib/unicode/In/KangxiRadicals.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2F00 2FDF diff --git a/lib/unicode/In/Kannada.pl b/lib/unicode/In/Kannada.pl index b516111cad..109197a6f7 100644 --- a/lib/unicode/In/Kannada.pl +++ b/lib/unicode/In/Kannada.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0C80 0CFF diff --git a/lib/unicode/In/Katakana.pl b/lib/unicode/In/Katakana.pl index bae00239e2..93bd5a03fa 100644 --- a/lib/unicode/In/Katakana.pl +++ b/lib/unicode/In/Katakana.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 30A0 30FF diff --git a/lib/unicode/In/Khmer.pl b/lib/unicode/In/Khmer.pl index 0771973fe7..f3e86851b3 100644 --- a/lib/unicode/In/Khmer.pl +++ b/lib/unicode/In/Khmer.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1780 17FF diff --git a/lib/unicode/In/Lao.pl b/lib/unicode/In/Lao.pl index b1eac57976..41ff11f805 100644 --- a/lib/unicode/In/Lao.pl +++ b/lib/unicode/In/Lao.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0E80 0EFF diff --git a/lib/unicode/In/Latin-1Supplement.pl b/lib/unicode/In/Latin-1Supplement.pl index cc908963b4..1b252eb23e 100644 --- a/lib/unicode/In/Latin-1Supplement.pl +++ b/lib/unicode/In/Latin-1Supplement.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0080 00FF diff --git a/lib/unicode/In/LatinExtended-A.pl b/lib/unicode/In/LatinExtended-A.pl index 4b556737eb..b8be987db0 100644 --- a/lib/unicode/In/LatinExtended-A.pl +++ b/lib/unicode/In/LatinExtended-A.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0100 017F diff --git a/lib/unicode/In/LatinExtended-B.pl b/lib/unicode/In/LatinExtended-B.pl index e13b0866dd..b9aff43f3d 100644 --- a/lib/unicode/In/LatinExtended-B.pl +++ b/lib/unicode/In/LatinExtended-B.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0180 024F diff --git a/lib/unicode/In/LatinExtendedAdditional.pl b/lib/unicode/In/LatinExtendedAdditional.pl index c2e454633d..d309e90814 100644 --- a/lib/unicode/In/LatinExtendedAdditional.pl +++ b/lib/unicode/In/LatinExtendedAdditional.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1E00 1EFF diff --git a/lib/unicode/In/LetterlikeSymbols.pl b/lib/unicode/In/LetterlikeSymbols.pl index af5d0b4810..1768740d42 100644 --- a/lib/unicode/In/LetterlikeSymbols.pl +++ b/lib/unicode/In/LetterlikeSymbols.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2100 214F diff --git a/lib/unicode/In/LowSurrogates.pl b/lib/unicode/In/LowSurrogates.pl index f13e2cce20..752b264e81 100644 --- a/lib/unicode/In/LowSurrogates.pl +++ b/lib/unicode/In/LowSurrogates.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; DC00 DFFF diff --git a/lib/unicode/In/Malayalam.pl b/lib/unicode/In/Malayalam.pl index 20109c2290..8fb57cdb10 100644 --- a/lib/unicode/In/Malayalam.pl +++ b/lib/unicode/In/Malayalam.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0D00 0D7F diff --git a/lib/unicode/In/MathematicalOperators.pl b/lib/unicode/In/MathematicalOperators.pl index 3904c720ad..055f19e590 100644 --- a/lib/unicode/In/MathematicalOperators.pl +++ b/lib/unicode/In/MathematicalOperators.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2200 22FF diff --git a/lib/unicode/In/MiscellaneousSymbols.pl b/lib/unicode/In/MiscellaneousSymbols.pl index bf799f7f91..9dcdd26954 100644 --- a/lib/unicode/In/MiscellaneousSymbols.pl +++ b/lib/unicode/In/MiscellaneousSymbols.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2600 26FF diff --git a/lib/unicode/In/MiscellaneousTechnical.pl b/lib/unicode/In/MiscellaneousTechnical.pl index 279a3bd167..370c00f320 100644 --- a/lib/unicode/In/MiscellaneousTechnical.pl +++ b/lib/unicode/In/MiscellaneousTechnical.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2300 23FF diff --git a/lib/unicode/In/Mongolian.pl b/lib/unicode/In/Mongolian.pl index 3959c0fa73..394014d496 100644 --- a/lib/unicode/In/Mongolian.pl +++ b/lib/unicode/In/Mongolian.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1800 18AF diff --git a/lib/unicode/In/Myanmar.pl b/lib/unicode/In/Myanmar.pl index 6dddbfea05..4b3f3181b0 100644 --- a/lib/unicode/In/Myanmar.pl +++ b/lib/unicode/In/Myanmar.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1000 109F diff --git a/lib/unicode/In/NumberForms.pl b/lib/unicode/In/NumberForms.pl index 9df1504ab9..d33ece0bbc 100644 --- a/lib/unicode/In/NumberForms.pl +++ b/lib/unicode/In/NumberForms.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2150 218F diff --git a/lib/unicode/In/Ogham.pl b/lib/unicode/In/Ogham.pl index 8b9e125b33..e097d90c77 100644 --- a/lib/unicode/In/Ogham.pl +++ b/lib/unicode/In/Ogham.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1680 169F diff --git a/lib/unicode/In/OpticalCharacterRecognition.pl b/lib/unicode/In/OpticalCharacterRecognition.pl index a15b2f2eb1..be1d981c7c 100644 --- a/lib/unicode/In/OpticalCharacterRecognition.pl +++ b/lib/unicode/In/OpticalCharacterRecognition.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2440 245F diff --git a/lib/unicode/In/Oriya.pl b/lib/unicode/In/Oriya.pl index 7382b5bfb6..5a680f6743 100644 --- a/lib/unicode/In/Oriya.pl +++ b/lib/unicode/In/Oriya.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0B00 0B7F diff --git a/lib/unicode/In/PrivateUse.pl b/lib/unicode/In/PrivateUse.pl index 735aa4e8e7..0c118f4fe4 100644 --- a/lib/unicode/In/PrivateUse.pl +++ b/lib/unicode/In/PrivateUse.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; E000 F8FF diff --git a/lib/unicode/In/Runic.pl b/lib/unicode/In/Runic.pl index 88189ecfd3..0bd42df80c 100644 --- a/lib/unicode/In/Runic.pl +++ b/lib/unicode/In/Runic.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 16A0 16FF diff --git a/lib/unicode/In/Sinhala.pl b/lib/unicode/In/Sinhala.pl index 7fb56edb97..37e007c057 100644 --- a/lib/unicode/In/Sinhala.pl +++ b/lib/unicode/In/Sinhala.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0D80 0DFF diff --git a/lib/unicode/In/SmallFormVariants.pl b/lib/unicode/In/SmallFormVariants.pl index 3383c2ed7e..736415e67e 100644 --- a/lib/unicode/In/SmallFormVariants.pl +++ b/lib/unicode/In/SmallFormVariants.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FE50 FE6F diff --git a/lib/unicode/In/SpacingModifierLetters.pl b/lib/unicode/In/SpacingModifierLetters.pl index be223d55b0..6e9cdf0b53 100644 --- a/lib/unicode/In/SpacingModifierLetters.pl +++ b/lib/unicode/In/SpacingModifierLetters.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 02B0 02FF diff --git a/lib/unicode/In/Specials.pl b/lib/unicode/In/Specials.pl index f2610ba9f5..f9f730f840 100644 --- a/lib/unicode/In/Specials.pl +++ b/lib/unicode/In/Specials.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; FFF0 FFFD diff --git a/lib/unicode/In/SuperscriptsandSubscripts.pl b/lib/unicode/In/SuperscriptsandSubscripts.pl index 9a7fab8b1c..efcec0b841 100644 --- a/lib/unicode/In/SuperscriptsandSubscripts.pl +++ b/lib/unicode/In/SuperscriptsandSubscripts.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2070 209F diff --git a/lib/unicode/In/Syriac.pl b/lib/unicode/In/Syriac.pl index b462daa460..7c81fb6f32 100644 --- a/lib/unicode/In/Syriac.pl +++ b/lib/unicode/In/Syriac.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0700 074F diff --git a/lib/unicode/In/Tamil.pl b/lib/unicode/In/Tamil.pl index 3c02a8be67..e65ed2fa19 100644 --- a/lib/unicode/In/Tamil.pl +++ b/lib/unicode/In/Tamil.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0B80 0BFF diff --git a/lib/unicode/In/Telugu.pl b/lib/unicode/In/Telugu.pl index d43d763e08..d5ed2368c2 100644 --- a/lib/unicode/In/Telugu.pl +++ b/lib/unicode/In/Telugu.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0C00 0C7F diff --git a/lib/unicode/In/Thaana.pl b/lib/unicode/In/Thaana.pl index dbd223b129..361bd4d4b4 100644 --- a/lib/unicode/In/Thaana.pl +++ b/lib/unicode/In/Thaana.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0780 07BF diff --git a/lib/unicode/In/Thai.pl b/lib/unicode/In/Thai.pl index d3c1cf7eee..3376de4e18 100644 --- a/lib/unicode/In/Thai.pl +++ b/lib/unicode/In/Thai.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0E00 0E7F diff --git a/lib/unicode/In/Tibetan.pl b/lib/unicode/In/Tibetan.pl index 729d5af792..50837ad8bc 100644 --- a/lib/unicode/In/Tibetan.pl +++ b/lib/unicode/In/Tibetan.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0F00 0FFF diff --git a/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl b/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl index b6451965d6..ad4eb27866 100644 --- a/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl +++ b/lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1400 167F diff --git a/lib/unicode/In/YiRadicals.pl b/lib/unicode/In/YiRadicals.pl index 8c8c899c9c..f25c6954ff 100644 --- a/lib/unicode/In/YiRadicals.pl +++ b/lib/unicode/In/YiRadicals.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; A490 A4CF diff --git a/lib/unicode/In/YiSyllables.pl b/lib/unicode/In/YiSyllables.pl index 81d0447e04..f4e3a8bcbc 100644 --- a/lib/unicode/In/YiSyllables.pl +++ b/lib/unicode/In/YiSyllables.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; A000 A48F diff --git a/lib/unicode/Is/ASCII.pl b/lib/unicode/Is/ASCII.pl index 80c37e5b77..63f95ae7dd 100644 --- a/lib/unicode/Is/ASCII.pl +++ b/lib/unicode/Is/ASCII.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 007f diff --git a/lib/unicode/Is/Alnum.pl b/lib/unicode/Is/Alnum.pl index 6b007f7990..d44f744e20 100644 --- a/lib/unicode/Is/Alnum.pl +++ b/lib/unicode/Is/Alnum.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 diff --git a/lib/unicode/Is/Alpha.pl b/lib/unicode/Is/Alpha.pl index 0891f1085c..0e94688e85 100644 --- a/lib/unicode/Is/Alpha.pl +++ b/lib/unicode/Is/Alpha.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 005a diff --git a/lib/unicode/Is/BidiAN.pl b/lib/unicode/Is/BidiAN.pl index 2fb0922610..4a71ae532d 100644 --- a/lib/unicode/Is/BidiAN.pl +++ b/lib/unicode/Is/BidiAN.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0660 0669 diff --git a/lib/unicode/Is/BidiB.pl b/lib/unicode/Is/BidiB.pl index 7741fce2f4..e4ba16567a 100644 --- a/lib/unicode/Is/BidiB.pl +++ b/lib/unicode/Is/BidiB.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 000a diff --git a/lib/unicode/Is/BidiCS.pl b/lib/unicode/Is/BidiCS.pl index 739824e763..f8d037d118 100644 --- a/lib/unicode/Is/BidiCS.pl +++ b/lib/unicode/Is/BidiCS.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 002c diff --git a/lib/unicode/Is/BidiEN.pl b/lib/unicode/Is/BidiEN.pl index 1bf527d356..d63270aecf 100644 --- a/lib/unicode/Is/BidiEN.pl +++ b/lib/unicode/Is/BidiEN.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 diff --git a/lib/unicode/Is/BidiES.pl b/lib/unicode/Is/BidiES.pl index 41df240ecc..5a1a36a6d8 100644 --- a/lib/unicode/Is/BidiES.pl +++ b/lib/unicode/Is/BidiES.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 002f diff --git a/lib/unicode/Is/BidiET.pl b/lib/unicode/Is/BidiET.pl index 557513c3dd..5e7af2bbf4 100644 --- a/lib/unicode/Is/BidiET.pl +++ b/lib/unicode/Is/BidiET.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0023 0025 diff --git a/lib/unicode/Is/BidiL.pl b/lib/unicode/Is/BidiL.pl index 3747ce3c54..8dc4ca87c0 100644 --- a/lib/unicode/Is/BidiL.pl +++ b/lib/unicode/Is/BidiL.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 005a diff --git a/lib/unicode/Is/BidiON.pl b/lib/unicode/Is/BidiON.pl index f0d17d568e..bde00ff123 100644 --- a/lib/unicode/Is/BidiON.pl +++ b/lib/unicode/Is/BidiON.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0021 0022 diff --git a/lib/unicode/Is/BidiR.pl b/lib/unicode/Is/BidiR.pl index 54db32b856..fccc1f6d6e 100644 --- a/lib/unicode/Is/BidiR.pl +++ b/lib/unicode/Is/BidiR.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 05be diff --git a/lib/unicode/Is/BidiS.pl b/lib/unicode/Is/BidiS.pl index 252786411c..b28b3310ea 100644 --- a/lib/unicode/Is/BidiS.pl +++ b/lib/unicode/Is/BidiS.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0009 diff --git a/lib/unicode/Is/BidiWS.pl b/lib/unicode/Is/BidiWS.pl index 963a623407..25d8b8f6aa 100644 --- a/lib/unicode/Is/BidiWS.pl +++ b/lib/unicode/Is/BidiWS.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 000c diff --git a/lib/unicode/Is/C.pl b/lib/unicode/Is/C.pl index 1beb44e7f6..0db83c4bf3 100644 --- a/lib/unicode/Is/C.pl +++ b/lib/unicode/Is/C.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 001f diff --git a/lib/unicode/Is/Cc.pl b/lib/unicode/Is/Cc.pl index a24f89a81b..d7184e3151 100644 --- a/lib/unicode/Is/Cc.pl +++ b/lib/unicode/Is/Cc.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 001f diff --git a/lib/unicode/Is/Cn.pl b/lib/unicode/Is/Cn.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/Cn.pl +++ b/lib/unicode/Is/Cn.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/Cntrl.pl b/lib/unicode/Is/Cntrl.pl index 1beb44e7f6..0db83c4bf3 100644 --- a/lib/unicode/Is/Cntrl.pl +++ b/lib/unicode/Is/Cntrl.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 001f diff --git a/lib/unicode/Is/Co.pl b/lib/unicode/Is/Co.pl index 62ac0a1946..c456d33aea 100644 --- a/lib/unicode/Is/Co.pl +++ b/lib/unicode/Is/Co.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; e000 f8ff diff --git a/lib/unicode/Is/DCcircle.pl b/lib/unicode/Is/DCcircle.pl index ce9dcd425f..4c47b28b26 100644 --- a/lib/unicode/Is/DCcircle.pl +++ b/lib/unicode/Is/DCcircle.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2460 2473 diff --git a/lib/unicode/Is/DCcompat.pl b/lib/unicode/Is/DCcompat.pl index d8bff65d3d..75d25695f3 100644 --- a/lib/unicode/Is/DCcompat.pl +++ b/lib/unicode/Is/DCcompat.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00a8 diff --git a/lib/unicode/Is/DCfinal.pl b/lib/unicode/Is/DCfinal.pl index 01c8d381ef..33fbf6aff8 100644 --- a/lib/unicode/Is/DCfinal.pl +++ b/lib/unicode/Is/DCfinal.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; fb51 diff --git a/lib/unicode/Is/DCfont.pl b/lib/unicode/Is/DCfont.pl index d1ad96ada4..c72234b3bf 100644 --- a/lib/unicode/Is/DCfont.pl +++ b/lib/unicode/Is/DCfont.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2102 diff --git a/lib/unicode/Is/DCinital.pl b/lib/unicode/Is/DCinital.pl index 469991dedc..2c9cf47e7d 100644 --- a/lib/unicode/Is/DCinital.pl +++ b/lib/unicode/Is/DCinital.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; fb55 diff --git a/lib/unicode/Is/DCinitial.pl b/lib/unicode/Is/DCinitial.pl index e730c3630a..0145b7dd71 100644 --- a/lib/unicode/Is/DCinitial.pl +++ b/lib/unicode/Is/DCinitial.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; fb54 diff --git a/lib/unicode/Is/DCisolated.pl b/lib/unicode/Is/DCisolated.pl index ec47fd8836..cc8541eb7b 100644 --- a/lib/unicode/Is/DCisolated.pl +++ b/lib/unicode/Is/DCisolated.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; fb50 diff --git a/lib/unicode/Is/DCnarrow.pl b/lib/unicode/Is/DCnarrow.pl index 7f48c2f622..9417de1bbd 100644 --- a/lib/unicode/Is/DCnarrow.pl +++ b/lib/unicode/Is/DCnarrow.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; ff61 ffbe diff --git a/lib/unicode/Is/DCnoBreak.pl b/lib/unicode/Is/DCnoBreak.pl index 9fa942ca07..1fd9e8735b 100644 --- a/lib/unicode/Is/DCnoBreak.pl +++ b/lib/unicode/Is/DCnoBreak.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00a0 diff --git a/lib/unicode/Is/DCsmall.pl b/lib/unicode/Is/DCsmall.pl index c79d7db38e..f6c8069163 100644 --- a/lib/unicode/Is/DCsmall.pl +++ b/lib/unicode/Is/DCsmall.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; fe50 fe52 diff --git a/lib/unicode/Is/DCsquare.pl b/lib/unicode/Is/DCsquare.pl index 8ace0dcd82..b55fdd9c6a 100644 --- a/lib/unicode/Is/DCsquare.pl +++ b/lib/unicode/Is/DCsquare.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3300 3357 diff --git a/lib/unicode/Is/DCsub.pl b/lib/unicode/Is/DCsub.pl index 6ea66119d4..98c4dfa87e 100644 --- a/lib/unicode/Is/DCsub.pl +++ b/lib/unicode/Is/DCsub.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2080 208e diff --git a/lib/unicode/Is/DCsuper.pl b/lib/unicode/Is/DCsuper.pl index f477928163..865a26dd92 100644 --- a/lib/unicode/Is/DCsuper.pl +++ b/lib/unicode/Is/DCsuper.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00aa diff --git a/lib/unicode/Is/DCvertical.pl b/lib/unicode/Is/DCvertical.pl index b7c0127be8..5d55483606 100644 --- a/lib/unicode/Is/DCvertical.pl +++ b/lib/unicode/Is/DCvertical.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; fe30 fe44 diff --git a/lib/unicode/Is/DCwide.pl b/lib/unicode/Is/DCwide.pl index f51d89d334..09dae19629 100644 --- a/lib/unicode/Is/DCwide.pl +++ b/lib/unicode/Is/DCwide.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 3000 diff --git a/lib/unicode/Is/DecoCanon.pl b/lib/unicode/Is/DecoCanon.pl index 74977a6741..c5a59f6596 100644 --- a/lib/unicode/Is/DecoCanon.pl +++ b/lib/unicode/Is/DecoCanon.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00c0 00c5 diff --git a/lib/unicode/Is/DecoCompat.pl b/lib/unicode/Is/DecoCompat.pl index 80c45ee7b1..43d34fc110 100644 --- a/lib/unicode/Is/DecoCompat.pl +++ b/lib/unicode/Is/DecoCompat.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00a0 diff --git a/lib/unicode/Is/Digit.pl b/lib/unicode/Is/Digit.pl index 3d6267963d..2ab8156d77 100644 --- a/lib/unicode/Is/Digit.pl +++ b/lib/unicode/Is/Digit.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 diff --git a/lib/unicode/Is/Graph.pl b/lib/unicode/Is/Graph.pl index 4f37a1912b..9c94bb722c 100644 --- a/lib/unicode/Is/Graph.pl +++ b/lib/unicode/Is/Graph.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0021 007e diff --git a/lib/unicode/Is/L.pl b/lib/unicode/Is/L.pl index 697f931296..c32f83049c 100644 --- a/lib/unicode/Is/L.pl +++ b/lib/unicode/Is/L.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 005a diff --git a/lib/unicode/Is/Ll.pl b/lib/unicode/Is/Ll.pl index 9520f1a60b..28147943e8 100644 --- a/lib/unicode/Is/Ll.pl +++ b/lib/unicode/Is/Ll.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0061 007a diff --git a/lib/unicode/Is/Lm.pl b/lib/unicode/Is/Lm.pl index 7cdd6951e5..4380afe18e 100644 --- a/lib/unicode/Is/Lm.pl +++ b/lib/unicode/Is/Lm.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 02b0 02b8 diff --git a/lib/unicode/Is/Lo.pl b/lib/unicode/Is/Lo.pl index e0d725fd89..78fab4cd0e 100644 --- a/lib/unicode/Is/Lo.pl +++ b/lib/unicode/Is/Lo.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 01bb diff --git a/lib/unicode/Is/Lower.pl b/lib/unicode/Is/Lower.pl index 9520f1a60b..28147943e8 100644 --- a/lib/unicode/Is/Lower.pl +++ b/lib/unicode/Is/Lower.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0061 007a diff --git a/lib/unicode/Is/Lt.pl b/lib/unicode/Is/Lt.pl index 21a306cf7b..809c37a1f2 100644 --- a/lib/unicode/Is/Lt.pl +++ b/lib/unicode/Is/Lt.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 01c5 diff --git a/lib/unicode/Is/Lu.pl b/lib/unicode/Is/Lu.pl index 392faa8a81..8dde2742d0 100644 --- a/lib/unicode/Is/Lu.pl +++ b/lib/unicode/Is/Lu.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 005a diff --git a/lib/unicode/Is/M.pl b/lib/unicode/Is/M.pl index 1e482d3945..9367775a82 100644 --- a/lib/unicode/Is/M.pl +++ b/lib/unicode/Is/M.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0300 034e diff --git a/lib/unicode/Is/Mc.pl b/lib/unicode/Is/Mc.pl index e9a0b373ec..937d8d4005 100644 --- a/lib/unicode/Is/Mc.pl +++ b/lib/unicode/Is/Mc.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0903 diff --git a/lib/unicode/Is/Mirrored.pl b/lib/unicode/Is/Mirrored.pl index c06de448c0..e2c55a6443 100644 --- a/lib/unicode/Is/Mirrored.pl +++ b/lib/unicode/Is/Mirrored.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0028 0029 diff --git a/lib/unicode/Is/Mn.pl b/lib/unicode/Is/Mn.pl index b0d5b5e08e..aba40afa57 100644 --- a/lib/unicode/Is/Mn.pl +++ b/lib/unicode/Is/Mn.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0300 034e diff --git a/lib/unicode/Is/N.pl b/lib/unicode/Is/N.pl index d6ccd1616a..1291f2713f 100644 --- a/lib/unicode/Is/N.pl +++ b/lib/unicode/Is/N.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 diff --git a/lib/unicode/Is/Nd.pl b/lib/unicode/Is/Nd.pl index 3d6267963d..2ab8156d77 100644 --- a/lib/unicode/Is/Nd.pl +++ b/lib/unicode/Is/Nd.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 diff --git a/lib/unicode/Is/No.pl b/lib/unicode/Is/No.pl index bdefbf3378..6a57dc5f89 100644 --- a/lib/unicode/Is/No.pl +++ b/lib/unicode/Is/No.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00b2 00b3 diff --git a/lib/unicode/Is/P.pl b/lib/unicode/Is/P.pl index 873169d0da..8fd1e8e183 100644 --- a/lib/unicode/Is/P.pl +++ b/lib/unicode/Is/P.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0021 0023 diff --git a/lib/unicode/Is/Pd.pl b/lib/unicode/Is/Pd.pl index c542decaf4..58997ca7e9 100644 --- a/lib/unicode/Is/Pd.pl +++ b/lib/unicode/Is/Pd.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 002d diff --git a/lib/unicode/Is/Pe.pl b/lib/unicode/Is/Pe.pl index 3decc64786..8879191c34 100644 --- a/lib/unicode/Is/Pe.pl +++ b/lib/unicode/Is/Pe.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0029 diff --git a/lib/unicode/Is/Po.pl b/lib/unicode/Is/Po.pl index 29de9ec40e..e6b8b02520 100644 --- a/lib/unicode/Is/Po.pl +++ b/lib/unicode/Is/Po.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0021 0023 diff --git a/lib/unicode/Is/Print.pl b/lib/unicode/Is/Print.pl index 0d248eb843..9560586065 100644 --- a/lib/unicode/Is/Print.pl +++ b/lib/unicode/Is/Print.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0020 007e diff --git a/lib/unicode/Is/Ps.pl b/lib/unicode/Is/Ps.pl index 167f029096..a7dee379eb 100644 --- a/lib/unicode/Is/Ps.pl +++ b/lib/unicode/Is/Ps.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0028 diff --git a/lib/unicode/Is/Punct.pl b/lib/unicode/Is/Punct.pl index 873169d0da..8fd1e8e183 100644 --- a/lib/unicode/Is/Punct.pl +++ b/lib/unicode/Is/Punct.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0021 0023 diff --git a/lib/unicode/Is/S.pl b/lib/unicode/Is/S.pl index 2918ec26c3..8851766e9f 100644 --- a/lib/unicode/Is/S.pl +++ b/lib/unicode/Is/S.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0024 diff --git a/lib/unicode/Is/Sc.pl b/lib/unicode/Is/Sc.pl index c4187872a7..5776bd6a57 100644 --- a/lib/unicode/Is/Sc.pl +++ b/lib/unicode/Is/Sc.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0024 diff --git a/lib/unicode/Is/Sm.pl b/lib/unicode/Is/Sm.pl index ddab72946c..ae9424cc62 100644 --- a/lib/unicode/Is/Sm.pl +++ b/lib/unicode/Is/Sm.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 002b diff --git a/lib/unicode/Is/So.pl b/lib/unicode/Is/So.pl index 4f2f9b7a9a..4e9dfc2b5e 100644 --- a/lib/unicode/Is/So.pl +++ b/lib/unicode/Is/So.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 00a6 00a7 diff --git a/lib/unicode/Is/Space.pl b/lib/unicode/Is/Space.pl index 712a820ada..4121ef49b8 100644 --- a/lib/unicode/Is/Space.pl +++ b/lib/unicode/Is/Space.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0009 000a diff --git a/lib/unicode/Is/SylA.pl b/lib/unicode/Is/SylA.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylA.pl +++ b/lib/unicode/Is/SylA.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylC.pl b/lib/unicode/Is/SylC.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylC.pl +++ b/lib/unicode/Is/SylC.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylE.pl b/lib/unicode/Is/SylE.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylE.pl +++ b/lib/unicode/Is/SylE.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylI.pl b/lib/unicode/Is/SylI.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylI.pl +++ b/lib/unicode/Is/SylI.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylO.pl b/lib/unicode/Is/SylO.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylO.pl +++ b/lib/unicode/Is/SylO.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylU.pl b/lib/unicode/Is/SylU.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylU.pl +++ b/lib/unicode/Is/SylU.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylV.pl b/lib/unicode/Is/SylV.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylV.pl +++ b/lib/unicode/Is/SylV.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylWA.pl b/lib/unicode/Is/SylWA.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylWA.pl +++ b/lib/unicode/Is/SylWA.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylWC.pl b/lib/unicode/Is/SylWC.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylWC.pl +++ b/lib/unicode/Is/SylWC.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylWE.pl b/lib/unicode/Is/SylWE.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylWE.pl +++ b/lib/unicode/Is/SylWE.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylWI.pl b/lib/unicode/Is/SylWI.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylWI.pl +++ b/lib/unicode/Is/SylWI.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/SylWV.pl b/lib/unicode/Is/SylWV.pl index 0826c0f811..ec287c456a 100644 --- a/lib/unicode/Is/SylWV.pl +++ b/lib/unicode/Is/SylWV.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; END diff --git a/lib/unicode/Is/Upper.pl b/lib/unicode/Is/Upper.pl index 392faa8a81..8dde2742d0 100644 --- a/lib/unicode/Is/Upper.pl +++ b/lib/unicode/Is/Upper.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 005a diff --git a/lib/unicode/Is/Word.pl b/lib/unicode/Is/Word.pl index e5eb70e45e..23186bd27d 100644 --- a/lib/unicode/Is/Word.pl +++ b/lib/unicode/Is/Word.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 diff --git a/lib/unicode/Is/XDigit.pl b/lib/unicode/Is/XDigit.pl index 8696119eff..e55682500b 100644 --- a/lib/unicode/Is/XDigit.pl +++ b/lib/unicode/Is/XDigit.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 diff --git a/lib/unicode/Is/Z.pl b/lib/unicode/Is/Z.pl index da4edc2da5..22a9792d4f 100644 --- a/lib/unicode/Is/Z.pl +++ b/lib/unicode/Is/Z.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0020 diff --git a/lib/unicode/Is/Zl.pl b/lib/unicode/Is/Zl.pl index 3cd7bd1491..0989e1d920 100644 --- a/lib/unicode/Is/Zl.pl +++ b/lib/unicode/Is/Zl.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2028 diff --git a/lib/unicode/Is/Zp.pl b/lib/unicode/Is/Zp.pl index c07cfd1651..3b23446fe9 100644 --- a/lib/unicode/Is/Zp.pl +++ b/lib/unicode/Is/Zp.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 2029 diff --git a/lib/unicode/Is/Zs.pl b/lib/unicode/Is/Zs.pl index 42ba4cac2c..db18055ea4 100644 --- a/lib/unicode/Is/Zs.pl +++ b/lib/unicode/Is/Zs.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0020 diff --git a/lib/unicode/Jamo-2.txt b/lib/unicode/Jamo.txt index 6910ab924e..6910ab924e 100644 --- a/lib/unicode/Jamo-2.txt +++ b/lib/unicode/Jamo.txt diff --git a/lib/unicode/JamoShort.pl b/lib/unicode/JamoShort.pl index f34dde7f00..760bcba03e 100644 --- a/lib/unicode/JamoShort.pl +++ b/lib/unicode/JamoShort.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 1100 G diff --git a/lib/unicode/Name.pl b/lib/unicode/Name.pl index caaf1c7f21..ef8979f0d1 100644 --- a/lib/unicode/Name.pl +++ b/lib/unicode/Name.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0000 001f <control> diff --git a/lib/unicode/NamesList.html b/lib/unicode/NamesList.html new file mode 100644 index 0000000000..0bfc5dbdcc --- /dev/null +++ b/lib/unicode/NamesList.html @@ -0,0 +1,226 @@ +<html> + +<head> +<meta name="GENERATOR" content="Microsoft FrontPage 3.0"> +<title>Unicode 3.0 NamesList File Structure</title> +</head> + +<body> + +<h3>Unicode NamesList File Format</h3> + +<p>Last updated: 1999-07-06</p> + +<h3>1.0 Introduction</h3> + +<p>The Unicode name list file NamesList.txt (also NamesList.lst) is a plain text file used +to drive the layout of the character code charts in the Unicode Standard. The information +in this file is a combination of several fields from the UnicodeData.txt and Blocks.txt files, +together with additional annotations for many characters. This document describes the +syntax rules for the file format, but also gives brief information on how each construct +is rendered when laid out for the book. Some of the syntax elements were used in +preparation of the drafts of the book and may not be present in the final, released form +of the NamesList.txt file.</p> + +<p>The same input file can be used to do the draft preparation for ISO/IEC 10646 (referred +below as ISO-style). This necessitates the presence of some information in the name list +file that is not needed (and in fact removed during parsing) for the Unicode book.</p> + +<p>With access to the layout program (unibook.exe) it is a simple matter of creating +name lists for the purpose of formatting working drafts containing proposed characters.</p> + +<h3>1.1 NamesList File Overview</h3> + +<p>The *.lst files are plain text files which in their most simple form look like this</p> + +<p>@@<tab>0020<tab>BASIC LATIN<tab>007F<br> +; this is a file comment (ignored)<br> +0020<tab>SPACE<br> +0021<tab>EXCLAMATION MARK<br> +0022<tab>QUOTATION MARK<br> +. . . <br> +007F<tab>DELETE</p> + +<p>The semicolon (as first character), @ and <tab> characters are used by the file +syntax and must be provided as shown. Hexadecimal digits must be in UPPER CASE). A double +@@ introduces a block header, with the title, and start and ending code of the block +provided as shown.</p> + +<p>For an ISO-style, minimal name list, only the NAME_LINE and BLOCKHEADER and their +constituent syntax elements are needed.</p> + +<p>The full syntax with all the options is provided in the following sections.</p> + +<h3>1.2 NamesList File Structure</h3> + +<p>This section gives defines the overall file structure</p> + +<pre><strong>NAMELIST: TITLE_PAGE* BLOCK* +</strong> +<strong>TITLE_PAGE: TITLE + | TITLE_PAGE SUBTITLE + | TITLE_PAGE SUBHEADER + | TITLE_PAGE IGNORED_LINE + | TITLE_PAGE EMPTY_LINE + | TITLE_PAGE COMMENTLINE + | TITLE_PAGE NOTICE + | TITLE_PAGE PAGEBREAK +</strong> +<strong>BLOCK: BLOCKHEADER + | BLOCK CHAR_ENTRY + | BLOCK SUBHEADER + | BLOCK NOTICE + | BLOCK EMPTY_LINE + | BLOCK IGNORED_LINE + | BLOCK PAGEBREAK + +CHAR_ENTRY: NAME_LINE | RESERVED_LINE + | CHAR_ENTRY ALIAS_LINE + | CHAR_ENTRY COMMENT_LINE + | CHAR_ENTRY CROSS_REF + | CHAR_ENTRY DECOMPOSITION + | CHAR_ENTRY COMPAT_MAPPING + | CHAR_ENTRY IGNORED_LINE + | CHAR_ENTRY EMPTY_LINE + | CHAR_ENTRY NOTICE +</strong></pre> + +<p>In other words:<br> +<br> +Neither TITLE nor SUBTITLE may occur after the first BLOCKHEADER. </p> + +<p>Only TITLE, SUBTITLE, SUBHEADER, PAGEBREAK, COMMENT_LINE, and IGNORED_LINE may +occur before the first BLOCKHEADER.</p> + +<p>Directly following either a NAME_LINE or a RESERVED_LINE an uninterrupted sequence of +the following lines may occur (in any order and repeated as often as needed): ALIAS_LINE, +CROSS_REF, DECOMPOSITION, COMPAT_MAPPING, NOTICE, EMPTY_LINE and IGNORED_LINE.</p> + +<p>Except for EMPTY_LINE, NOTICE and IGNORED_LINE, none of these lines may occur in any other +place. </p> + +<p>Note: A NOTICE displays differently depending on whether it follows a header or title +or is part of a CHAR_ENTRY.</p> + +<h3>1.3 NamesList File Elements</h3> + +<p>This section provides the details of the syntax for the individual elements.</p> + +<pre><small><strong>ELEMENT SYNTAX</strong> // How rendered</small></pre> + +<pre><small><strong>NAME_LINE: CHAR <tab> LINE +</strong> // the CHAR and the corresponding image are echoed, + // followed by the name as given in LINE + +<strong> CHAR TAB NAME COMMENT LF +</strong> // Names may have a comment, which is stripped off + // unless the file is parsed for an ISO style list + +<strong>RESERVED_LINE: CHAR TAB <reserved> +</strong> // the CHAR is echoed followed by an icon for the + // reserved character and a fixed string e.g. <reserved> + +<strong>COMMMENT_LINE: <tab> "*" SP EXPAND_LINE +</strong> // * is replaced by BULLET, output line as comment + <strong><tab> EXPAND_LINE</strong> + // output line as comment + +<strong>ALIAS_LINE: <tab> "=" SP LINE +</strong> // replace = by itself, output line as alias + +<strong>CROSS_REF: <tab> "X" SP EXPAND_LINE +</strong> // X is replaced by a right arrow +<strong> <tab> "X" SP "(" STRING SP "-" SP CHAR ")" +</strong> // X is replaced by a right arrow + // the "(", "-", ")" are removed, the + // order of CHAR and STRING is reversed + // i.e. both inputs result in the same output + +<strong>IGNORED_LINE: <tab> ";" EXPAND_LINE +EMPTY_LINE: LF +</strong> // empty lines and file comments are ignored + +<strong>DECOMPOSITION: <tab> ":" EXPAND_LINE +</strong> // replace ':' by EQUIV, expand line into + // decomposition + +<strong>COMPAT_MAPPING: <tab> "#" SP EXPAND_LINE +</strong> // replace '#' by APPROX, output line as mapping + +<strong>NOTICE: "@+" <tab> LINE +</strong> // skip '@+', output text as notice +<strong> "@+" TAB * SP LINE +</strong> // skip '@', output text as notice + // "*" expands to a bullet character + // Notices following a character code apply to the + // character and are indented. Notices not following + // a character code apply to the page/block/column + // and are italicized, but not indented + +<strong>SUBTITLE: "@@@+" <tab> LINE +</strong> // skip "@@@+", output text as subtitle + +<strong>SUBHEADER: "@" <tab> LINE +</strong> // skip '@', output line as text as column header + +<strong>BLOCKHEADER: "@@" <tab> BLOCKSTART <tab> BLOCKNAME <tab> BLOCKEND +</strong> // skip "@@", cause a page break and optional + // blank page, then output one or more charts + // followed by the list of character names. + // use BLOCKSTART and BLOCKEND to define the + // what characters belong to a block + // use blockname in page and table headers + <strong> "@@" <tab> BLOCKSTART <tab> BLOCKNAME COMMENT <tab> BLOCKEND + </strong>// if a comment is present it replaces the blockname + // when an ISO-style namelist is laid out + +<strong>BLOCKSTART: CHAR</strong> // first character position in block +<strong>BLOCKEND: CHAR</strong> // last character position in block +<strong>PAGE_BREAK: "@@"</strong> // insert a (column) break + +<strong>TITLE: "@@@" <tab> LINE</strong> + // skip "@@@", output line as text + // Title is used in page headers + +<strong>EXPAND_LINE: {CHAR | STRING}+ LF </strong> + // all instances of CHAR *) are replaced by + // CHAR NBSP x NBSP where x is the single Unicode + // character corresponding to char + // If character is combining, it is replaced with + // CHAR NBSP <circ> x NBSP where <circ> is the + // dotted circle</small> +</pre> + +<h3><strong>1.4 NamesList File Primitives</strong></h3> + +<p>The following are the primitives and terminals for the NamesList syntax.</p> + +<pre><small><strong>LINE: STRING LF +COMMENT: "(" NAME ")" + "(" NAME ")" "*" +</strong> +<strong>NAME</strong>: <sequence of ASCII characters, except "(" or ")" > +<strong>STRING</strong>: <sequence of Latin-1 characters> +<strong>CHAR</strong>: <strong>X X X X</strong> + <strong>| X X X X X X X X X</strong></small> +<small><strong>X: "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"A"|"B"|"C"|"D"|"E"|"F" +<tab>:</strong> <sequence of one or more ASCII tab characters 0x09> +<strong>SP</strong>: <ASCII 0x20> +<strong>LF</strong>: <any sequence of ASCII 0x0A and 0x0D> +</small></pre> + +<p><strong>Notes:</strong> + +<ul> + <li>Special lookahead logic prevents a mention of a 4 digit standard, such as ISO 9999 from + being misinterpreted as ISO CHAR.</li> + <li>Use of Latin-1 is supported in unibook.exe, but not portably, unless the file is encoded as + UTF-16LE.</li> + <li>The final LF in the file must be present</li> + <li>A CHAR inside ' or " is expanded, but only its glyph image is printed, the + code value is not echoed</li> + <li>Straight quotes in an EXPAND_LINE are replaced by curly quotes using English rules. + Apostrophes are supported, but nested quotes are not.</li> +</ul> +</body> +</html> diff --git a/lib/unicode/Number.pl b/lib/unicode/Number.pl index c722467731..b0e054a0d0 100644 --- a/lib/unicode/Number.pl +++ b/lib/unicode/Number.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0031 1 diff --git a/lib/unicode/ReadMe.txt b/lib/unicode/ReadMe.txt index 889c32572c..c2c4aee6a5 100644 --- a/lib/unicode/ReadMe.txt +++ b/lib/unicode/ReadMe.txt @@ -14,15 +14,32 @@ UnicodeCharacterDatabase.html. -------------------------------------------------------------------------- NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE -The files have been copied 1999-Sep-14 from +The files have been copied from ftp://ftp.unicode.org/Public/3.0-Update/ -and renamed to better fit 8.3 filename limitations. - -For example, the UnicodeCharacterDatabase.html referred above is -now called Unicode.html. - +and most of them have been renamed to better fit 8.3 filename limitations. + +long name at unicode.org short name latest '#' +------------------------ ---------- ---------- +ArabicShaping-#.txt ArabShap.txt 2 +Blocks-#.txt Blocks.txt 3 +CompositionExclusions-#.txt CompExcl.txt 1 +EastAsianWidth-#.txt EAWidth.txt 3 +Index-#.txt Index.txt 3.0.0 +Jamo-#.txt Jamo.txt 2 +LineBreak-#.txt LineBrk.txt 5 +NamesList-#.txt Names.txt 3.0.0 +NamesList-#.html NamesList.html 1 +PropList-#.txt Props.txt 3.0.0 +SpecialCasing-#.txt SpecCase.txt 2 +UnicodeData-#.txt Unicode.300 3.0.0 +UnicodeData-#.html Unicode3.html 3.0.0 +UnicodeCharacterDatabase-#.html UCD300.html 3.0.0 + +The *.pl files are generated from these files by the 'mktables.PL' script. + +While the files have been renamed the links in the html files haven't. + +-- jhi@iki.fi - - diff --git a/lib/unicode/To/Digit.pl b/lib/unicode/To/Digit.pl index 8a9b183123..a96bc1c1a6 100644 --- a/lib/unicode/To/Digit.pl +++ b/lib/unicode/To/Digit.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0030 0039 0000 diff --git a/lib/unicode/To/Lower.pl b/lib/unicode/To/Lower.pl index c3cbdf73e6..a78a7e4492 100644 --- a/lib/unicode/To/Lower.pl +++ b/lib/unicode/To/Lower.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0041 005a 0061 diff --git a/lib/unicode/To/Title.pl b/lib/unicode/To/Title.pl index b1b1d595a9..d8f5c048d4 100644 --- a/lib/unicode/To/Title.pl +++ b/lib/unicode/To/Title.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0061 007a 0041 diff --git a/lib/unicode/To/Upper.pl b/lib/unicode/To/Upper.pl index b67399f540..1fc7637753 100644 --- a/lib/unicode/To/Upper.pl +++ b/lib/unicode/To/Upper.pl @@ -1,5 +1,5 @@ # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! -# This file is built by mktables.PL from e.g. UnicodeData-Latest.txt. +# This file is built by mktables.PL from e.g. Unicode.300. # Any changes made here will be lost! return <<'END'; 0061 007a 0041 diff --git a/lib/unicode/Unicode.html b/lib/unicode/UCD300.html index 113d311f01..113d311f01 100644 --- a/lib/unicode/Unicode.html +++ b/lib/unicode/UCD300.html diff --git a/lib/unicode/Unicode3.html b/lib/unicode/Unicode3.html new file mode 100644 index 0000000000..a08a25ec75 --- /dev/null +++ b/lib/unicode/Unicode3.html @@ -0,0 +1,1988 @@ +<html> + + + +<head> + +<meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 4.0"> + +<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> + +<link REL="stylesheet" HREF="http://www.unicode.org/unicode.css" TYPE="text/css"> + +<title>UnicodeData File Format</title> + +</head> + + + +<body> + + + +<h1>UnicodeData File Format<br> +Version 3.0.0</h1> + + + +<table BORDER="1" CELLSPACING="2" CELLPADDING="0" HEIGHT="87" WIDTH="100%"> + + <tr> + + <td VALIGN="TOP" width="144">Revision</td> + + <td VALIGN="TOP">3.0.0</td> + + </tr> + + <tr> + + <td VALIGN="TOP" width="144">Authors</td> + + <td VALIGN="TOP">Mark Davis and Ken Whistler</td> + + </tr> + + <tr> + + <td VALIGN="TOP" width="144">Date</td> + + <td VALIGN="TOP">1999-09-12</td> + + </tr> + + <tr> + + <td VALIGN="TOP" width="144">This Version</td> + + <td VALIGN="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html</a></td> + + </tr> + + <tr> + + <td VALIGN="TOP" width="144">Previous Version</td> + + <td VALIGN="TOP">n/a</td> + + </tr> + + <tr> + + <td VALIGN="TOP" width="144">Latest Version</td> + + <td VALIGN="TOP"><a href="ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html">ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html</a></td> + + </tr> + +</table> + + + +<p align="center">Copyright © 1995-1999 Unicode, Inc. All Rights reserved.<br> + +<i>For more information, including Disclamer and Limitations, see <a HREF="UnicodeCharacterDatabase-3.0.0.html">UnicodeCharacterDatabase-3.0.0.html</a> </i></p> + + + +<p>This document describes the format of the UnicodeData.txt file, which is one of the + +files in the Unicode Character Database. The document is divided into the following + +sections: + + + +<ul> + + <li><a HREF="#Field Formats">Field Formats</a> <ul> + + <li><a HREF="#General Category">General Category</a> </li> + + <li><a HREF="#Bidirectional Category">Bidirectional Category</a> </li> + + <li><a HREF="#Character Decomposition">Character Decomposition Mapping</a> </li> + + <li><a HREF="#Canonical Combining Classes">Canonical Combining Classes</a> </li> + + <li><a HREF="#Decompositions and Normalization">Decompositions and Normalization</a> </li> + + <li><a HREF="#Case Mappings">Case Mappings</a> </li> + + </ul> + + </li> + + <li><a HREF="#Property Invariants">Property Invariants</a> </li> + + <li><a HREF="#Modification History">Modification History</a> </li> + +</ul> + + + +<p><b>Warning: </b>the information in this file does not completely describe the use and + +interpretation of Unicode character properties and behavior. It must be used in + +conjunction with the data in the other files in the Unicode Character Database, and relies + +on the notation and definitions supplied in <i><a href="http://www.unicode.org/unicode/standard/versions/Unicode3.0.html"> The Unicode +Standard</a></i>. All chapter references + +are to Version 3.0 of the standard.</p> + + + +<h2><a NAME="Field Formats"></a>Field Formats</h2> + + + +<p>The file consists of lines containing fields terminated by semicolons. Each line + +represents the data for one encoded character in the Unicode Standard. Every encoded + +character has a data entry, with the exception of certain special ranges, as detailed + +below. + + + +<ul> + + <li>There are six special ranges of characters that are represented only by their start and + + end characters, since the properties in the file are uniform, except for code values + + (which are all sequential and assigned). </li> + + <li>The names of CJK ideograph characters and the names and decompositions of Hangul + + syllable characters are algorithmically derivable. (See the Unicode Standard and <a + + HREF="http://www.unicode.org/unicode/reports/tr15/">Unicode Technical Report #15</a> for + + more information). </li> + + <li>Surrogate code values and private use characters have no names. </li> + + <li>The Private Use character outside of the BMP (U+F0000..U+FFFFD, U+100000..U+10FFFD) are + + not listed. These correspond to surrogate pairs where the first surrogate is in the High + + Surrogate Private Use section. </li> + +</ul> + + + +<p>The exact ranges represented by start and end characters are: + + + +<ul> + + <li>CJK Ideographs Extension A (U+3400 - U+4DB5) </li> + + <li>CJK Ideographs (U+4E00 - U+9FA5) </li> + + <li>Hangul Syllables (U+AC00 - U+D7A3) </li> + + <li>Non-Private Use High Surrogates (U+D800 - U+DB7F) </li> + + <li>Private Use High Surrogates (U+DB80 - U+DBFF) </li> + + <li>Low Surrogates (U+DC00 - U+DFFF) </li> + + <li>The Private Use Area (U+E000 - U+F8FF) </li> + +</ul> + + + +<p>The following table describes the format and meaning of each field in a data entry in + +the UnicodeData file. Fields which contain normative information are so indicated.</p> + + + +<table BORDER="1" CELLSPACING="2" CELLPADDING="2"> + + <tr> + + <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Field</th> + + <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Name</th> + + <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Status</th> + + <th VALIGN="top" ALIGN="LEFT"><p ALIGN="LEFT">Explanation</th> + + </tr> + + <tr> + + <th VALIGN="top">0</th> + + <td VALIGN="top">Code value</td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">Code value in 4-digit hexadecimal format.</td> + + </tr> + + <tr> + + <th VALIGN="top">1</th> + + <td VALIGN="top">Character name</td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">These names match exactly the names published in Chapter 14 of the + + Unicode Standard, Version 3.0.</td> + + </tr> + + <tr> + + <th VALIGN="top">2</th> + + <td VALIGN="top"><a HREF="#General Category">General Category</a> </td> + + <td VALIGN="top">normative / informative<br> + + (see below)</td> + + <td VALIGN="top">This is a useful breakdown into various "character types" which + + can be used as a default categorization in implementations. See below for a brief + + explanation.</td> + + </tr> + + <tr> + + <th VALIGN="top">3</th> + + <td VALIGN="top"><a HREF="#Canonical Combining Classes">Canonical Combining Classes</a> </td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">The classes used for the Canonical Ordering Algorithm in the Unicode + + Standard. These classes are also printed in Chapter 4 of the Unicode Standard.</td> + + </tr> + + <tr> + + <th VALIGN="top">4</th> + + <td VALIGN="top"><a HREF="#Bidirectional Category">Bidirectional Category</a> </td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">See the list below for an explanation of the abbreviations used in this + + field. These are the categories required by the Bidirectional Behavior Algorithm in the + + Unicode Standard. These categories are summarized in Chapter 3 of the Unicode Standard.</td> + + </tr> + + <tr> + + <th VALIGN="top">5</th> + + <td VALIGN="top"><a HREF="#Character Decomposition">Character Decomposition + Mapping</a></td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">In the Unicode Standard, not all of the mappings are full (maximal) + + decompositions. Recursive application of look-up for decompositions will, in all cases, + + lead to a maximal decomposition. The decomposition mappings match exactly the + + decomposition mappings published with the character names in the Unicode Standard.</td> + + </tr> + + <tr> + + <th VALIGN="top">6</th> + + <td VALIGN="top">Decimal digit value</td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">This is a numeric field. If the character has the decimal digit property, + + as specified in Chapter 4 of the Unicode Standard, the value of that digit is represented + + with an integer value in this field</td> + + </tr> + + <tr> + + <th VALIGN="top">7</th> + + <td VALIGN="top">Digit value</td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">This is a numeric field. If the character represents a digit, not + + necessarily a decimal digit, the value is here. This covers digits which do not form + + decimal radix forms, such as the compatibility superscript digits</td> + + </tr> + + <tr> + + <th VALIGN="top">8</th> + + <td VALIGN="top">Numeric value</td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">This is a numeric field. If the character has the numeric property, as + + specified in Chapter 4 of the Unicode Standard, the value of that character is represented + + with an integer or rational number in this field. This includes fractions as, e.g., + + "1/5" for U+2155 VULGAR FRACTION ONE FIFTH Also included are numerical values + + for compatibility characters such as circled numbers.</td> + + </tr> + + <tr> + + <th VALIGN="top">8</th> + + <td VALIGN="top">Mirrored</td> + + <td VALIGN="top">normative</td> + + <td VALIGN="top">If the character has been identified as a "mirrored" character + + in bidirectional text, this field has the value "Y"; otherwise "N". + + The list of mirrored characters is also printed in Chapter 4 of the Unicode Standard.</td> + + </tr> + + <tr> + + <th VALIGN="top">10</th> + + <td VALIGN="top">Unicode 1.0 Name</td> + + <td VALIGN="top">informative</td> + + <td VALIGN="top">This is the old name as published in Unicode 1.0. This name is only + + provided when it is significantly different from the Unicode 3.0 name for the character.</td> + + </tr> + + <tr> + + <th VALIGN="top">11</th> + + <td VALIGN="top">10646 comment field</td> + + <td VALIGN="top">informative</td> + + <td VALIGN="top">This is the ISO 10646 comment field. It is in parantheses in the 10646 + + names list.</td> + + </tr> + + <tr> + + <th VALIGN="top">12</th> + + <td VALIGN="top"><a HREF="#Case Mappings">Uppercase Mapping</a></td> + + <td VALIGN="top">informative</td> + + <td VALIGN="top">Upper case equivalent mapping. If a character is part of an alphabet with + + case distinctions, and has an upper case equivalent, then the upper case equivalent is in + + this field. See the explanation below on case distinctions. These mappings are always + + one-to-one, not one-to-many or many-to-one. This field is informative.</td> + + </tr> + + <tr> + + <th VALIGN="top">13</th> + + <td VALIGN="top"><a HREF="#Case Mappings">Lowercase Mapping</a></td> + + <td VALIGN="top">informative</td> + + <td VALIGN="top">Similar to Uppercase mapping</td> + + </tr> + + <tr> + + <th VALIGN="top">14</th> + + <td VALIGN="top"><a HREF="#Case Mappings">Titlecase Mapping</a></td> + + <td VALIGN="top">informative</td> + + <td VALIGN="top">Similar to Uppercase mapping</td> + + </tr> + +</table> + + + +<h3><a NAME="General Category"></a>General Category</h3> + + + +<p>The values in this field are abbreviations for the following. Some of the values are + +normative, and some are informative. For more information, see the Unicode Standard.</p> + + + +<p><b>Note:</b> the standard does not assign information to control characters (except for + +certain cases in the Bidirectional Algorithm). Implementations will generally also assign + +categories to certain control characters, notably CR and LF, according to platform + +conventions.</p> + + + +<h4>Normative Categories</h4> + + + +<table BORDER="0" CELLSPACING="2" CELLPADDING="0"> + + <tr> + + <th><p ALIGN="LEFT">Abbr.</th> + + <th><p ALIGN="LEFT">Description</th> + + </tr> + + <tr> + + <td ALIGN="CENTER">Lu</td> + + <td>Letter, Uppercase</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Ll</td> + + <td>Letter, Lowercase</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Lt</td> + + <td>Letter, Titlecase</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Mn</td> + + <td>Mark, Non-Spacing</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Mc</td> + + <td>Mark, Spacing Combining</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Me</td> + + <td>Mark, Enclosing</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Nd</td> + + <td>Number, Decimal Digit</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Nl</td> + + <td>Number, Letter</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">No</td> + + <td>Number, Other</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Zs</td> + + <td>Separator, Space</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Zl</td> + + <td>Separator, Line</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Zp</td> + + <td>Separator, Paragraph</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Cc</td> + + <td>Other, Control</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Cf</td> + + <td>Other, Format</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Cs</td> + + <td>Other, Surrogate</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Co</td> + + <td>Other, Private Use</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Cn</td> + + <td>Other, Not Assigned (no characters in the file have this property)</td> + + </tr> + +</table> + + + +<h4>Informative Categories</h4> + + + +<table BORDER="0" CELLSPACING="2" CELLPADDING="0"> + + <tr> + + <th><p ALIGN="LEFT">Abbr.</th> + + <th><p ALIGN="LEFT">Description</th> + + </tr> + + <tr> + + <td ALIGN="CENTER">Lm</td> + + <td>Letter, Modifier</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Lo</td> + + <td>Letter, Other</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Pc</td> + + <td>Punctuation, Connector</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Pd</td> + + <td>Punctuation, Dash</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Ps</td> + + <td>Punctuation, Open</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Pe</td> + + <td>Punctuation, Close</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Pi</td> + + <td>Punctuation, Initial quote (may behave like Ps or Pe depending on usage)</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Pf</td> + + <td>Punctuation, Final quote (may behave like Ps or Pe depending on usage)</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Po</td> + + <td>Punctuation, Other</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Sm</td> + + <td>Symbol, Math</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Sc</td> + + <td>Symbol, Currency</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">Sk</td> + + <td>Symbol, Modifier</td> + + </tr> + + <tr> + + <td ALIGN="CENTER">So</td> + + <td>Symbol, Other</td> + + </tr> + +</table> + + + +<h3><a NAME="Bidirectional Category"></a>Bidirectional Category</h3> + + + +<p>Please refer to Chapter 3 for an explanation of the algorithm for Bidirectional + +Behavior and an explanation of the significance of these categories. An up-to-date version + +can be found on <a HREF="http://www.unicode.org/unicode/reports/tr9/">Unicode Technical + +Report #9: The Bidirectional Algorithm</a>. These values are normative.</p> + + + +<table BORDER="0" CELLPADDING="2"> + + <tr> + + <th VALIGN="TOP" ALIGN="LEFT"><p ALIGN="LEFT">Type</th> + + <th VALIGN="TOP" ALIGN="LEFT"><p ALIGN="LEFT">Description</th> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>L</b></td> + + <td VALIGN="TOP">Left-to-Right</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>LRE</b></td> + + <td VALIGN="TOP">Left-to-Right Embedding</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>LRO</b></td> + + <td VALIGN="TOP">Left-to-Right Override</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>R</b></td> + + <td VALIGN="TOP">Right-to-Left</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>AL</b></td> + + <td VALIGN="TOP">Right-to-Left Arabic</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>RLE</b></td> + + <td VALIGN="TOP">Right-to-Left Embedding</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>RLO</b></td> + + <td VALIGN="TOP">Right-to-Left Override</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>PDF</b></td> + + <td VALIGN="TOP">Pop Directional Format</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>EN</b></td> + + <td VALIGN="TOP">European Number</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>ES</b></td> + + <td VALIGN="TOP">European Number Separator</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>ET</b></td> + + <td VALIGN="TOP">European Number Terminator</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>AN</b></td> + + <td VALIGN="TOP">Arabic Number</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>CS</b></td> + + <td VALIGN="TOP">Common Number Separator</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>NSM</b></td> + + <td VALIGN="TOP">Non-Spacing Mark</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>BN</b></td> + + <td VALIGN="TOP">Boundary Neutral</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>B</b></td> + + <td VALIGN="TOP">Paragraph Separator</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>S</b></td> + + <td VALIGN="TOP">Segment Separator</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>WS</b></td> + + <td VALIGN="TOP">Whitespace</td> + + </tr> + + <tr> + + <td VALIGN="TOP"><b>ON</b></td> + + <td VALIGN="TOP">Other Neutrals</td> + + </tr> + +</table> + + + +<h3><a NAME="Character Decomposition"></a>Character Decomposition Mapping</h3> + + + +<p>The decomposition is a normative property of a character. The tags supplied with + +certain decomposition mappings generally indicate formatting information. Where no such + +tag is given, the mapping is designated as canonical. Conversely, the presence of a + +formatting tag also indicates that the mapping is a compatibility mapping and not a + +canonical mapping. In the absence of other formatting information in a compatibility + +mapping, the tag is used to distinguish it from canonical mappings.</p> + + + +<p>In some instances a canonical mapping or a compatibility mapping may consist of a + +single character. For a canonical mapping, this indicates that the character is a + +canonical equivalent of another single character. For a compatibility mapping, this + +indicates that the character is a compatibility equivalent of another single character. + +The compatibility formatting tags used are:</p> + + + +<table BORDER="0" CELLSPACING="2" CELLPADDING="0"> + + <tr> + + <th>Tag</th> + + <th><p ALIGN="LEFT">Description</th> + + </tr> + + <tr> + + <td ALIGN="CENTER"><font> </td> + + <td>A font variant (e.g. a blackletter form).</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><noBreak> </td> + + <td>A no-break version of a space or hyphen.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><initial> </td> + + <td>An initial presentation form (Arabic).</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><medial> </td> + + <td>A medial presentation form (Arabic).</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><final> </td> + + <td>A final presentation form (Arabic).</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><isolated> </td> + + <td>An isolated presentation form (Arabic).</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><circle> </td> + + <td>An encircled form.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><super> </td> + + <td>A superscript form.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><sub> </td> + + <td>A subscript form.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><vertical> </td> + + <td>A vertical layout presentation form.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><wide> </td> + + <td>A wide (or zenkaku) compatibility character.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><narrow> </td> + + <td>A narrow (or hankaku) compatibility character.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><small> </td> + + <td>A small variant form (CNS compatibility).</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><square> </td> + + <td>A CJK squared font variant.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><fraction> </td> + + <td>A vulgar fraction form.</td> + + </tr> + + <tr> + + <td ALIGN="CENTER"><compat> </td> + + <td>Otherwise unspecified compatibility character.</td> + + </tr> + +</table> + + + +<p><b>Reminder: </b>There is a difference between decomposition and decomposition mapping. + +The decomposition mappings are defined in the UnicodeData, while the decomposition (also + +termed "full decomposition") is defined in Chapter 3 to use those mappings +<i> + +recursively.</i> + + + +<ul> + + <li>The canonical decomposition is formed by recursively applying the canonical mappings, + + then applying the canonical reordering algorithm. </li> + + <li>The compatibility decomposition is formed by recursively applying the canonical <em>and</em> + + compatibility mappings, then applying the canonical reordering algorithm. </li> + +</ul> + + + +<h3><a NAME="Canonical Combining Classes"></a>Canonical Combining Classes</h3> + + + +<table BORDER="0" CELLSPACING="2" CELLPADDING="0"> + + <tr> + + <th><p ALIGN="LEFT">Value</th> + + <th><p ALIGN="LEFT">Description</th> + + </tr> + + <tr> + + <td ALIGN="RIGHT">0:</td> + + <td>Spacing, split, enclosing, reordrant, and Tibetan subjoined</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">1:</td> + + <td>Overlays and interior</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">7:</td> + + <td>Nuktas</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">8:</td> + + <td>Hiragana/Katakana voicing marks</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">9:</td> + + <td>Viramas</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">10:</td> + + <td>Start of fixed position classes</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">199:</td> + + <td>End of fixed position classes</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">200:</td> + + <td>Below left attached</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">202:</td> + + <td>Below attached</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">204:</td> + + <td>Below right attached</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">208:</td> + + <td>Left attached (reordrant around single base character)</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">210:</td> + + <td>Right attached</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">212:</td> + + <td>Above left attached</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">214:</td> + + <td>Above attached</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">216:</td> + + <td>Above right attached</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">218:</td> + + <td>Below left</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">220:</td> + + <td>Below</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">222:</td> + + <td>Below right</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">224:</td> + + <td>Left (reordrant around single base character)</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">226:</td> + + <td>Right</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">228:</td> + + <td>Above left</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">230:</td> + + <td>Above</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">232:</td> + + <td>Above right</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">233:</td> + + <td>Double below</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">234:</td> + + <td>Double above</td> + + </tr> + + <tr> + + <td ALIGN="RIGHT">240:</td> + + <td>Below (iota subscript)</td> + + </tr> + +</table> + + + +<p><strong>Note: </strong>some of the combining classes in this list do not currently have + +members but are specified here for completeness.</p> + + + +<h3><a NAME="Decompositions and Normalization"></a>Decompositions and Normalization</h3> + + + +<p>Decomposition is specified in Chapter 3. <a href="http://www.unicode.org/unicode/reports/tr15/"><i>Unicode Technical Report #15: + +Normalization Forms</i></a> specifies the interaction between decomposition and normalization. The + +most up-to-date version is found on <a HREF="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a>. + +That report specifies how the decompositions defined in UnicodeData.txt are used to derive + +normalized forms of Unicode text.</p> + + + +<p>Note that as of the 2.1.9 update of the Unicode Character Database, the decompositions + +in the UnicodeData.txt file can be used to recursively derive the full decomposition in + +canonical order, without the need to separately apply canonical reordering. However, + +canonical reordering of combining character sequences must still be applied in + +decomposition when normalizing source text which contains any combining marks.</p> + + + +<h3><a NAME="Case Mappings"></a>Case Mappings</h3> + + + +<p>The case mapping is an informative, default mapping. Case itself, on the other hand, + +has normative status. Thus, for example, 0041 LATIN CAPITAL LETTER A is normatively + +uppercase, but its lowercase mapping the 0061 LATIN SMALL LETTER A is informative. The + +reason for this is that case can be considered to be an inherent property of a particular + +character (and is usually, but not always, derivable from the presence of the terms + +"CAPITAL" or "SMALL" in the character name), but case mappings between + +characters are occasionally influenced by local conventions. For example, certain + +languages, such as Turkish, German, French, or Greek may have small deviations from the + +default mappings listed in UnicodeData.</p> + + + +<p>In addition to uppercase and lowercase, because of the inclusion of certain composite + +characters for compatibility, such as 01F1 LATIN CAPITAL LETTER DZ, there is a third case, + +called <i>titlecase</i>, which is used where the first letter of a word is to be + +capitalized (e.g. UPPERCASE, Titlecase, lowercase). An example of such a titlecase letter + +is 01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z.</p> + + + +<p>The uppercase, titlecase and lowercase fields are only included for characters that + +have a single corresponding character of that type. Composite characters (such as + +"339D SQUARE CM") that do not have a single corresponding character of that type + +can be cased by decomposition.</p> + + + +<p>For compatibility with existing parsers, UnicodeData only contains case mappings for + +characters where they are one-to-one mappings; it also omits information about + +context-sensitive case mappings. Information about these special cases can be found in a + +separate data file, SpecialCasing.txt, + +which has been added starting with the 2.1.8 update to the Unicode data files. + +SpecialCasing.txt contains additional informative case mappings that are either not + +one-to-one or which are context-sensitive.</p> + + + +<h2><a NAME="Property Invariants"></a>Property Invariants</h2> + + + +<p>Values in UnicodeData.txt are subject to correction as errors are found; however, some + +characteristics of the categories themselves can be considered invariants. Applications + +may wish to take these invariants into account when choosing how to implement character + +properties. The following is a partial list of known invariants for the Unicode Character + +Database.</p> + + + +<h4>Database Fields</h4> + + + +<ul> + + <li>The number of fields in UnicodeData.txt is fixed. </li> + + <li>The order of the fields is also fixed. <ul> + + <li>Any additional information about character properties to be added in the future will + + appear in separate data tables, rather than being added on to the existing table or by + + subdivision or reinterpretation of existing fields. </li> + + </ul> + + </li> + +</ul> + + + +<h4>General Category</h4> + + + +<ul> + + <li>There will never be more than 32 General Category values. <ul> + + <li>It is very unlikely that the Unicode Technical Committee will subdivide the General + + Category partition any further, since that can cause implementations to misbehave. Because + + the General Category is limited to 32 values, 5 bits can be used to represent the + + information, and a 32-bit integer can be used as a bitmask to represent arbitrary sets of + + categories. </li> + + </ul> + + </li> + +</ul> + + + +<h4>Combining Classes</h4> + + + +<ul> + + <li>Combining classes are limited to the values 0 to 255. <ul> + + <li>In practice, there are far fewer than 256 values used. Implementations may take + + advantage of this fact for compression, since only the ordering of the non-zero values + + matters for the Canonical Reordering Algorithm. It is possible for up to 256 values to be + + used in the future; however, UTC decisions in the future may restrict the number of values + + to 128, since this has implementation advantages. [Signed bytes can be used without + + widening to ints in Java, for example.] </li> + + </ul> + + </li> + + <li>All characters other than those of General Category M* have the combining class 0. <ul> + + <li>Currently, all characters other than those of General Category Mn have the value 0. + + However, some characters of General Category Me or Mc may be given non-zero values in the + + future. </li> + + <li>The precise values above the value 0 are not invariant--only the relative ordering is + + considered normative. For example, it is not guaranteed in future versions that the class + + of U+05B4 will be precisely 14. </li> + + </ul> + + </li> + +</ul> + + + +<h4>Case</h4> + + + +<ul> + + <li>Characters of type Lu, Lt, or Ll are called <i>cased</i>. All characters with an Upper, + + Lower, or Titlecase mapping are cased characters. <ul> + + <li>However, characters with the General Categories of Lu, Ll, or Lt may not always have + + case mappings, and case mappings may vary by locale. (See + + ftp://ftp.unicode.org/Public/UNIDATA/SpecialCasing.txt). </li> + + </ul> + + </li> + +</ul> + + + +<h4>Canonical Decomposition</h4> + + + +<ul> + + <li>Canonical mappings are always in canonical order. </li> + + <li>Canonical mappings have only the first of a pair possibly further decomposing. </li> + + <li>Canonical decompositions are "transparent" to other character data: <ul> + + <li><tt>BIDI(a) = BIDI(principal(canonicalDecomposition(a))</tt> </li> + + <li><tt>Category(a) = Category(principal(canonicalDecomposition(a))</tt> </li> + + <li><tt>CombiningClass(a) = CombiningClass(principal(canonicalDecomposition(a))</tt><br> + + where principal(a) is the first character not of type Mn, or the first character if all + + characters are of type Mn. </li> + + </ul> + + </li> + + <li>However, because there are sometimes missing case pairs, and because of some legacy + + characters, it is only generally true that: <ul> + + <li><tt>upper(canonicalDecomposition(a)) = canonicalDecomposition(upper(a))</tt> </li> + + <li><tt>lower(canonicalDecomposition(a)) = canonicalDecomposition(lower(a))</tt> </li> + + <li><tt>title(canonicalDecomposition(a)) = canonicalDecomposition(title(a))</tt> </li> + + </ul> + + </li> + +</ul> + + + +<h2><a NAME="Modification History"></a>Modification History</h2> + + + +<p>This section provides a summary of the changes between update versions of the Unicode + +Standard.</p> + + + +<h3><a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 3.0.0"> Unicode 3.0.0</a></h3> + + + +<p>Modifications made for Version 3.0.0 of UnicodeData.txt include many new characters and + +a number of property changes. These are summarized in Appendex D of <em>The Unicode + +Standard, Version 3.0.</em></p> + + + +<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.9">Unicode 2.1.9</a> </h3> + + + +<p>Modifications made for Version 2.1.9 of UnicodeData.txt include: + + + +<ul> + + <li>Corrected combining class for U+05AE HEBREW ACCENT ZINOR. </li> + + <li>Corrected combining class for U+20E1 COMBINING LEFT RIGHT ARROW ABOVE </li> + + <li>Corrected combining class for U+0F35 and U+0F37 to 220. </li> + + <li>Corrected combining class for U+0F71 to 129. </li> + + <li>Added a decomposition for U+0F0C TIBETAN MARK DELIMITER TSHEG BSTAR. </li> + + <li>Added decompositions for several Greek symbol letters: U+03D0..U+03D2, U+03D5, + + U+03D6, U+03F0..U+03F2. </li> + + <li>Removed decompositions from the conjoining jamo block: U+1100..U+11F8. </li> + + <li>Changes to decomposition mappings for some Tibetan vowels for consistency in + + normalization. (U+0F71, U+0F73, U+0F77, U+0F79, U+0F81) </li> + + <li>Updated the decomposition mappings for several Vietnamese characters with two diacritics + + (U+1EAC, U+1EAD, U+1EB6, U+1EB7, U+1EC6, U+1EC7, U+1ED8, U+1ED9), so that the recursive + + decomposition can be generated directly in canonically reordered form (not a normative + + change). </li> + + <li>Updated the decomposition mappings for several Arabic compatibility characters involving + + shadda (U+FC5E..U+FC62, U+FCF2..U+FCF4), and two Latin characters (U+1E1C, U+1E1D), so + + that the decompositions are generated directly in canonically reordered form (not a + + normative change). </li> + + <li>Changed BIDI category for: U+00A0 NO-BREAK SPACE, U+2007 FIGURE SPACE, U+2028 LINE + + SEPARATOR. </li> + + <li>Changed BIDI category for extenders of General Category Lm: U+3005, U+3021..U+3035, + + U+FF9E, U+FF9F. </li> + + <li>Changed General Category and BIDI category for the Greek numeral signs: U+0374, U+0375. </li> + + <li>Corrected General Category for U+FFE8 HALFWIDTH FORMS LIGHT VERTICAL. </li> + + <li>Added Unicode 1.0 names for many Tibetan characters (informative). </li> + +</ul> + + + +<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.8">Unicode 2.1.8</a> </h3> + + + +<p>Modifications made for Version 2.1.8 of UnicodeData.txt include: + + + +<ul> + + <li>Added combining class 240 for U+0345 COMBINING GREEK YPOGEGRAMMENI so that + + decompositions involving iota subscript are derivable directly in canonically reordered + + form; this also has a bearing on simplification of casing of polytonic Greek. </li> + + <li>Changes in decompositions related to Greek tonos. These result from the clarification + + that monotonic Greek "tonos" should be equated with U+0301 COMBINING ACUTE, + + rather than with U+030D COMBINING VERTICAL LINE ABOVE. (All Greek characters in the Greek + + block involving "tonos"; some Greek characters in the polytonic Greek in the + + 1FXX block.) </li> + + <li>Changed decompositions involving dialytika tonos. (U+0390, U+03B0) </li> + + <li>Changed ternary decompositions to binary. (U+0CCB, U+FB2C, U+FB2D) These changes + + simplify normalization. </li> + + <li>Removed canonical decomposition for Latin Candrabindu. (U+0310) </li> + + <li>Corrected error in canonical decomposition for U+1FF4. </li> + + <li>Added compatibility decompositions to clarify collation tables. (U+2100, U+2101, U+2105, + + U+2106, U+1E9A) </li> + + <li>A series of general category changes to assist the convergence of of Unicode definition + + of identifier with ISO TR 10176: <ul> + + <li>So > Lo: U+0950, U+0AD0, U+0F00, U+0F88..U+0F8B </li> + + <li>Po > Lo: U+0E2F, U+0EAF, U+3006 </li> + + <li>Lm > Sk: U+309B, U+309C </li> + + <li>Po > Pc: U+30FB, U+FF65 </li> + + <li>Ps/Pe > Mn: U+0F3E, U+0F3F </li> + + </ul> + + </li> + + <li>A series of bidi property changes for consistency. <ul> + + <li>L > ET: U+09F2, U+09F3 </li> + + <li>ON > L: U+3007 </li> + + <li>L > ON: U+0F3A..U+0F3D, U+037E, U+0387 </li> + + </ul> + + </li> + + <li>Add case mapping: U+01A6 <-> U+0280 </li> + + <li>Updated symmetric swapping value for guillemets: U+00AB, U+00BB, U+2039, U+203A. </li> + + <li>Changes to combining class values. Most Indic fixed position class non-spacing marks + + were changed to combining class 0. This fixes some inconsistencies in how canonical + + reordering would apply to Indic scripts, including Tibetan. Indic interacting top/bottom + + fixed position classes were merged into single (non-zero) classes as part of this change. + + Tibetan subjoined consonants are changed from combining class 6 to combining class 0. Thai + + pinthu (U+0E3A) moved to combining class 9. Moved two Devanagari stress marks into generic + + above and below combining classes (U+0951, U+0952). </li> + + <li>Corrected placement of semicolon near symmetric swapping field. (U+FA0E, etc., scattered + + positions to U+FA29) </li> + +</ul> + + + +<h3>Version 2.1.7</h3> + + + +<p><i>This version was for internal change tracking only, and never publicly released.</i></p> + + + +<h3>Version 2.1.6</h3> + + + +<p><i>This version was for internal change tracking only, and never publicly released.</i></p> + + + +<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.5">Unicode 2.1.5</a> </h3> + + + +<p>Modifications made for Version 2.1.5 of UnicodeData.txt include: + + + +<ul> + + <li>Changed decomposition for U+FF9E and U+FF9F so that correct collation weighting will + + automatically result from the canonical equivalences. </li> + + <li>Removed canonical decompositions for U+04D4, U+04D5, U+04D8, U+04D9, U+04E0, U+04E1, + + U+04E8, U+04E9 (the implication being that no canonical equivalence is claimed between + + these 8 characters and similar Latin letters), and updated 4 canonical decompositions for + + U+04DB, U+04DC, U+04EA, U+04EB to reflect the implied difference in the base character. </li> + + <li>Added Pi, and Pf categories and assigned the relevant quotation marks to those + + categories, based on the Unicode Technical Corrigendum on Quotation Characters. </li> + + <li>Updating of many bidi properties, following the advice of the ad hoc committee on bidi, + + and to make the bidi properties of compatibility characters more consistent. </li> + + <li>Changed category of several Tibetan characters: U+0F3E, U+0F3F, U+0F88..U+0F8B to make + + them non-combining, reflecting the combined opinion of Tibetan experts. </li> + + <li>Added case mapping for U+03F2. </li> + + <li>Corrected case mapping for U+0275. </li> + + <li>Added titlecase mappings for U+03D0, U+03D1, U+03D5, U+03D6, U+03F0.. U+03F2. </li> + + <li>Corrected compatibility label for U+2121. </li> + + <li>Add specific entries for all the CJK compatibility ideographs, U+F900..U+FA2D, so the + + canonical decomposition for each (the URO character it is equivalent to) can be carried in + + the database. </li> + +</ul> + + + +<h3>Version 2.1.4</h3> + + + +<p><i>This version was for internal change tracking only, and never publicly released.</i></p> + + + +<h3>Version 2.1.3</h3> + + + +<p><i>This version was for internal change tracking only, and never publicly released.</i></p> + + + +<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.2">Unicode 2.1.2</a> </h3> + + + +<p>Modifications made in updating UnicodeData.txt to Version 2.1.2 for the Unicode + +Standard, Version 2.1 (from Version 2.0) include: + + + +<ul> + + <li>Added two characters (U+20AC and U+FFFC). </li> + + <li>Amended bidi properties for U+0026, U+002E, U+0040, U+2007. </li> + + <li>Corrected case mappings for U+018E, U+019F, U+01DD, U+0258, U+0275, U+03C2, U+1E9B. </li> + + <li>Changed combining order class for U+0F71. </li> + + <li>Corrected canonical decompositions for U+0F73, U+1FBE. </li> + + <li>Changed decomposition for U+FB1F from compatibility to canonical. </li> + + <li>Added compatibility decompositions for U+FBE8, U+FBE9, U+FBF9..U+FBFB. </li> + + <li>Corrected compatibility decompositions for U+2469, U+246A, U+3358. </li> + +</ul> + + + +<h3>Version 2.1.1</h3> + + + +<p><i>This version was for internal change tracking only, and never publicly released.</i></p> + + + +<h3><a HREF="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.0.0">Unicode 2.0.0</a> </h3> + + + +<p>The modifications made in updating UnicodeData.txt for the Unicode + +Standard, Version 2.0 include: + + + +<ul> + + <li>Fixed decompositions with TONOS to use correct NSM: 030D. </li> + + <li>Removed old Hangul Syllables; mapping to new characters are in a separate table. </li> + + <li>Marked compatibility decompositions with additional tags. </li> + + <li>Changed old tag names for clarity. </li> + + <li>Revision of decompositions to use first-level decomposition, instead of maximal + + decomposition. </li> + + <li>Correction of all known errors in decompositions from earlier versions. </li> + + <li>Added control code names (as old Unicode names). </li> + + <li>Added Hangul Jamo decompositions. </li> + + <li>Added Number category to match properties list in book. </li> + + <li>Fixed categories of Koranic Arabic marks. </li> + + <li>Fixed categories of precomposed characters to match decomposition where possible. </li> + + <li>Added Hebrew cantillation marks and the Tibetan script. </li> + + <li>Added place holders for ranges such as CJK Ideographic Area and the Private Use Area. </li> + + <li>Added categories Me, Sk, Pc, Nl, Cs, Cf, and rectified a number of mistakes in the + + database. </li> + +</ul> + +</body> + +</html> + diff --git a/lib/unicode/mktables.PL b/lib/unicode/mktables.PL index a6e3a5ef3d..48d40f4541 100755 --- a/lib/unicode/mktables.PL +++ b/lib/unicode/mktables.PL @@ -1,6 +1,6 @@ #!../../miniperl -$UnicodeData = "UnicodeData-Latest.txt"; +$UnicodeData = "Unicode.300"; # Note: we try to keep filenames unique within first 8 chars. Using # subdirectories for the following helps. @@ -249,7 +249,7 @@ sub proplist { $split = '($code, $name, $link, $linkgroup) = split(/; */);'; } elsif ($table =~ /^Jamo/) { - open(UD, "Jamo-2.txt") or warn "Can't open $table: $!"; + open(UD, "Jamo.txt") or warn "Can't open $table: $!"; $split = '($code, $short, $name) = split(/; */); $code =~ s/^U\+//;'; } @@ -416,7 +416,7 @@ EOH print OUT "END\n"; close OUT; } else { - die "$0: failed to open Eq/Unicode for writing: $!\n"; + die "$0: failed to open Eq/Unicode.pl for writing: $!\n"; } print "EqLatin1\n"; @@ -436,7 +436,7 @@ EOH print OUT "END\n"; close OUT; } else { - die "$0: failed to open Eq/Latin1 for writing: $!\n"; + die "$0: failed to open Eq/Latin1.pl for writing: $!\n"; } # eof @@ -665,11 +665,15 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg) break; case '(': sv_setiv(sv, (IV)PL_gid); +#ifdef HAS_GETGROUPS Perl_sv_setpvf(aTHX_ sv, "%"Gid_t_f, PL_gid); +#endif goto add_groups; case ')': sv_setiv(sv, (IV)PL_egid); +#ifdef HAS_GETGROUPS Perl_sv_setpvf(aTHX_ sv, "%"Gid_t_f, PL_egid); +#endif add_groups: #ifdef HAS_GETGROUPS { @@ -4843,7 +4843,7 @@ PP(pp_pack) sv_catpvn(cat, (char*)&aquad, sizeof(Quad_t)); } break; -#endif /* Quad_t */ +#endif case 'P': len = 1; /* assume SV is correct length */ /* FALL THROUGH */ @@ -65,7 +65,7 @@ #define POPu ((UV)SvUVx(POPs)) #define POPl ((long)SvIVx(POPs)) #define POPul ((unsigned long)SvIVx(POPs)) -#ifdef Quad_t +#ifdef HAS_QUAD #define POPq ((Quad_t)SvIVx(POPs)) #define POPuq ((Uquad_t)SvUVx(POPs)) #endif @@ -78,7 +78,7 @@ #define TOPu ((UV)SvUV(TOPs)) #define TOPl ((long)SvIV(TOPs)) #define TOPul ((unsigned long)SvUV(TOPs)) -#ifdef Quad_t +#ifdef HAS_QUAD #define TOPq ((Quad_t)SvIV(TOPs)) #define TOPuq ((Uquad_t)SvUV(TOPs)) #endif @@ -125,7 +125,7 @@ #define dPOPiv IV value = POPi #define dTOPuv UV value = TOPu #define dPOPuv UV value = POPu -#ifdef Quad_t +#ifdef HAS_QUAD #define dTOPqv Quad_t value = TOPu #define dPOPqv Quad_t value = POPu #define dTOPuqv Uquad_t value = TOPuq @@ -968,6 +968,7 @@ STATIC char* S_regcp_set_to(pTHX_ I32 ss); STATIC void S_cache_re(pTHX_ regexp *prog); STATIC U8* S_reghop(pTHX_ U8 *pos, I32 off); STATIC U8* S_reghopmaybe(pTHX_ U8 *pos, I32 off); +STATIC char* S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *startpos, I32 norun); #endif #if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT) @@ -275,6 +275,13 @@ S_cache_re(pTHX_ regexp *prog) /* XXXX We assume that strpos is strbeg unless sv. */ +/* XXXX Some places assume that there is a fixed substring. + An update may be needed if optimizer marks as "INTUITable" + RExen without fixed substrings. Similarly, it is assumed that + lengths of all the strings are no more than minlen, thus they + cannot come from lookahead. + (Or minlen should take into account lookahead.) */ + /* A failure to find a constant substring means that there is no need to make an expensive call to REx engine, thus we celebrate a failure. Similarly, finding a substring too deep into the string means that less calls to @@ -285,10 +292,14 @@ S_cache_re(pTHX_ regexp *prog) b) Fixed substring; c) Whether we are anchored (beginning-of-line or \G); d) First node (of those at offset 0) which may distingush positions; - We use 'a', 'b', multiline-part of 'c', and try to find a position in the + We use a)b)d) and multiline-part of c), and try to find a position in the string which does not contradict any of them. */ +/* Most of decisions we do here should have been done at compile time. + The nodes of the REx which we used for the search should have been + deleted from the finite automaton. */ + char * Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, char *strend, U32 flags, re_scream_pos_data *data) @@ -301,7 +312,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, char *t; I32 ml_anch; char *tmp; - register char *other_last = Nullch; + register char *other_last = Nullch; /* other substr checked before this */ + char *check_at; /* check substr found at this pos */ #ifdef DEBUGGING char *i_strpos = strpos; #endif @@ -432,6 +444,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, if (!s) goto fail_finish; + check_at = s; + /* Finish the diagnostic message */ DEBUG_r(PerlIO_printf(Perl_debug_log, "%ld...\n", (long)(s - i_strpos)) ); @@ -447,7 +461,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, /* Take into account the "other" substring. */ /* XXXX May be hopelessly wrong for UTF... */ if (!other_last) - other_last = strpos - 1; + other_last = strpos; if (check == prog->float_substr) { do_other_anchored: { @@ -465,8 +479,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, else t = strpos; t += prog->anchored_offset; - if (t <= other_last) - t = other_last + 1; + if (t < other_last) /* These positions already checked */ + t = other_last; PL_bostr = tmp; last2 = last1 = strend - prog->minlen; if (last < last1) @@ -495,7 +509,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, ", trying floating at offset %ld...\n", (long)(s1 + 1 - i_strpos))); PL_regeol = strend; /* Used in HOP() */ - other_last = last1 + prog->anchored_offset; + other_last = last1 + prog->anchored_offset + 1; s = HOPc(last, 1); goto restart; } @@ -503,7 +517,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, DEBUG_r(PerlIO_printf(Perl_debug_log, " at offset %ld...\n", (long)(s - i_strpos))); t = s - prog->anchored_offset; - other_last = s - 1; + other_last = s + 1; s = s1; if (t == strpos) goto try_at_start; @@ -520,8 +534,8 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, if (last - t > prog->float_max_offset) last = t + prog->float_max_offset; s = t + prog->float_min_offset; - if (s <= other_last) - s = other_last + 1; + if (s < other_last) + s = other_last; /* XXXX It is not documented what units *_offsets are in. Assume bytes. */ /* fbm_instr() takes into account exact value of end-of-str if the check is SvTAIL(ed). Since false positives are OK, @@ -546,7 +560,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, DEBUG_r(PerlIO_printf(Perl_debug_log, ", trying anchored starting at offset %ld...\n", (long)(s1 + 1 - i_strpos))); - other_last = last; + other_last = last + 1; PL_regeol = strend; /* Used in HOP() */ s = HOPc(t, 1); goto restart; @@ -554,7 +568,7 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, else { DEBUG_r(PerlIO_printf(Perl_debug_log, " at offset %ld...\n", (long)(s - i_strpos))); - other_last = s - 1; + other_last = s + 1; s = s1; if (t == strpos) goto try_at_start; @@ -645,13 +659,79 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, s = strpos; /* XXXX This is a remnant of the old implementation. It looks wasteful, since now INTUIT can use many - other heuristics too. */ + other heuristics. */ prog->reganch &= ~RE_USE_INTUIT; } else s = strpos; } + /* Last resort... */ + /* XXXX BmUSEFUL already changed, maybe multiple change is meaningful... */ + if (prog->regstclass) { + /* minlen == 0 is possible if regstclass is \b or \B, + and the fixed substr is ''$. + Since minlen is already taken into account, s+1 is before strend; + accidentally, minlen >= 1 guaranties no false positives at s + 1 + even for \b or \B. But (minlen? 1 : 0) below assumes that + regstclass does not come from lookahead... */ + /* If regstclass takes bytelength more than 1: If charlength==1, OK. + This leaves EXACTF only, which is dealt with in find_byclass(). */ + char *endpos = (prog->anchored_substr || ml_anch) + ? s + (prog->minlen? 1 : 0) + : (prog->float_substr ? check_at - start_shift + 1 + : strend) ; + char *startpos = sv ? strend - SvCUR(sv) : s; + + t = s; + s = find_byclass(prog, prog->regstclass, s, endpos, startpos, 1); + if (!s) { +#ifdef DEBUGGING + char *what; +#endif + if (endpos == strend) { + DEBUG_r( PerlIO_printf(Perl_debug_log, + "Could not match STCLASS...\n") ); + goto fail; + } + /* Contradict one of substrings */ + if (prog->anchored_substr) { + DEBUG_r( PerlIO_printf(Perl_debug_log, + "This position contradicts STCLASS...\n") ); + if (prog->anchored_substr == check) { + DEBUG_r( what = "anchored" ); + hop_and_restart: + PL_regeol = strend; /* Used in HOP() */ + s = HOPc(t, 1); + DEBUG_r( PerlIO_printf(Perl_debug_log, + "trying %s substr starting at offset %ld...\n", + what, (long)(s + start_shift - i_strpos)) ); + goto restart; + } + /* Have both, check is floating */ + if (t + start_shift >= check_at) /* Contradicts floating=check */ + goto retry_floating_check; + /* Recheck anchored substring, but not floating... */ + s = check_at; + DEBUG_r( PerlIO_printf(Perl_debug_log, + "trying anchored substr starting at offset %ld...\n", + (long)(other_last - i_strpos)) ); + goto do_other_anchored; + } + /* Check is floating subtring. */ + retry_floating_check: + t = check_at - start_shift; + DEBUG_r( what = "floating" ); + goto hop_and_restart; + } + DEBUG_r( if (t != s) + PerlIO_printf(Perl_debug_log, + "By STCLASS: moving %ld --> %ld\n", + (long)(t - i_strpos), (long)(s - i_strpos)); + else + PerlIO_printf(Perl_debug_log, + "Does not contradict STCLASS...\n") ); + } DEBUG_r(PerlIO_printf(Perl_debug_log, "%sGuessed:%s match at offset %ld\n", PL_colors[4], PL_colors[5], (long)(s - i_strpos)) ); return s; @@ -664,282 +744,24 @@ Perl_re_intuit_start(pTHX_ regexp *prog, SV *sv, char *strpos, return Nullch; } -/* - - regexec_flags - match a regexp against a string - */ -I32 -Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *strend, - char *strbeg, I32 minend, SV *sv, void *data, U32 flags) -/* strend: pointer to null at end of string */ -/* strbeg: real beginning of string */ -/* minend: end of match must be >=minend after stringarg. */ -/* data: May be used for some additional optimizations. */ -/* nosave: For optimizations. */ +/* We know what class REx starts with. Try to find this position... */ +static char * +find_byclass(regexp * prog, regnode *c, char *s, char *strend, char *startpos, I32 norun) { - dTHR; - register char *s; - register regnode *c; - register char *startpos = stringarg; - register I32 tmp; - I32 minlen; /* must match at least this many chars */ - I32 dontbother = 0; /* how many characters not to try at end */ - I32 start_shift = 0; /* Offset of the start to find - constant substr. */ /* CC */ - I32 end_shift = 0; /* Same for the end. */ /* CC */ - I32 scream_pos = -1; /* Internal iterator of scream. */ - char *scream_olds; - SV* oreplsv = GvSV(PL_replgv); - - PL_regcc = 0; - - cache_re(prog); -#ifdef DEBUGGING - PL_regnarrate = PL_debug & 512; -#endif - - /* Be paranoid... */ - if (prog == NULL || startpos == NULL) { - Perl_croak(aTHX_ "NULL regexp parameter"); - return 0; - } - - minlen = prog->minlen; - if (strend - startpos < minlen) goto phooey; - - if (startpos == strbeg) /* is ^ valid at stringarg? */ - PL_regprev = '\n'; - else { - PL_regprev = (U32)stringarg[-1]; - if (!PL_multiline && PL_regprev == '\n') - PL_regprev = '\0'; /* force ^ to NOT match */ - } - - /* Check validity of program. */ - if (UCHARAT(prog->program) != REG_MAGIC) { - Perl_croak(aTHX_ "corrupted regexp program"); - } - - PL_reg_flags = 0; - PL_reg_eval_set = 0; - PL_reg_maxiter = 0; - - if (prog->reganch & ROPT_UTF8) - PL_reg_flags |= RF_utf8; - - /* Mark beginning of line for ^ and lookbehind. */ - PL_regbol = startpos; - PL_bostr = strbeg; - PL_reg_sv = sv; - - /* Mark end of line for $ (and such) */ - PL_regeol = strend; - - /* see how far we have to get to not match where we matched before */ - PL_regtill = startpos+minend; - - /* We start without call_cc context. */ - PL_reg_call_cc = 0; - - /* If there is a "must appear" string, look for it. */ - s = startpos; - - if (prog->reganch & ROPT_GPOS_SEEN) { /* Need to have PL_reg_ganch */ - MAGIC *mg; - - if (flags & REXEC_IGNOREPOS) /* Means: check only at start */ - PL_reg_ganch = startpos; - else if (sv && SvTYPE(sv) >= SVt_PVMG - && SvMAGIC(sv) - && (mg = mg_find(sv, 'g')) && mg->mg_len >= 0) { - PL_reg_ganch = strbeg + mg->mg_len; /* Defined pos() */ - if (prog->reganch & ROPT_ANCH_GPOS) { - if (s > PL_reg_ganch) - goto phooey; - s = PL_reg_ganch; - } - } - else /* pos() not defined */ - PL_reg_ganch = strbeg; - } - - if (!(flags & REXEC_CHECKED) && prog->check_substr != Nullsv) { - re_scream_pos_data d; - - d.scream_olds = &scream_olds; - d.scream_pos = &scream_pos; - s = re_intuit_start(prog, sv, s, strend, flags, &d); - if (!s) - goto phooey; /* not present */ - } - - DEBUG_r( if (!PL_colorset) reginitcolors() ); - DEBUG_r(PerlIO_printf(Perl_debug_log, - "%sMatching REx%s `%s%.60s%s%s' against `%s%.*s%s%s'\n", - PL_colors[4],PL_colors[5],PL_colors[0], - prog->precomp, - PL_colors[1], - (strlen(prog->precomp) > 60 ? "..." : ""), - PL_colors[0], - (int)(strend - startpos > 60 ? 60 : strend - startpos), - startpos, PL_colors[1], - (strend - startpos > 60 ? "..." : "")) - ); - - /* Simplest case: anchored match need be tried only once. */ - /* [unless only anchor is BOL and multiline is set] */ - if (prog->reganch & (ROPT_ANCH & ~ROPT_ANCH_GPOS)) { - if (s == startpos && regtry(prog, startpos)) - goto got_it; - else if (PL_multiline || (prog->reganch & ROPT_IMPLICIT) - || (prog->reganch & ROPT_ANCH_MBOL)) /* XXXX SBOL? */ - { - char *end; - - if (minlen) - dontbother = minlen - 1; - end = HOPc(strend, -dontbother) - 1; - /* for multiline we only have to try after newlines */ - if (prog->check_substr) { - if (s == startpos) - goto after_try; - while (1) { - if (regtry(prog, s)) - goto got_it; - after_try: - if (s >= end) - goto phooey; - if (prog->reganch & RE_USE_INTUIT) { - s = re_intuit_start(prog, sv, s + 1, strend, flags, NULL); - if (!s) - goto phooey; - } - else - s++; - } - } else { - if (s > startpos) - s--; - while (s < end) { - if (*s++ == '\n') { /* don't need PL_utf8skip here */ - if (regtry(prog, s)) - goto got_it; - } - } - } - } - goto phooey; - } else if (prog->reganch & ROPT_ANCH_GPOS) { - if (regtry(prog, PL_reg_ganch)) - goto got_it; - goto phooey; - } - - /* Messy cases: unanchored match. */ - if (prog->anchored_substr && prog->reganch & ROPT_SKIP) { - /* we have /x+whatever/ */ - /* it must be a one character string (XXXX Except UTF?) */ - char ch = SvPVX(prog->anchored_substr)[0]; - if (UTF) { - while (s < strend) { - if (*s == ch) { - if (regtry(prog, s)) goto got_it; - s += UTF8SKIP(s); - while (s < strend && *s == ch) - s += UTF8SKIP(s); - } - s += UTF8SKIP(s); - } - } - else { - while (s < strend) { - if (*s == ch) { - if (regtry(prog, s)) goto got_it; - s++; - while (s < strend && *s == ch) - s++; - } - s++; - } - } - } - /*SUPPRESS 560*/ - else if (prog->anchored_substr != Nullsv - || (prog->float_substr != Nullsv - && prog->float_max_offset < strend - s)) { - SV *must = prog->anchored_substr - ? prog->anchored_substr : prog->float_substr; - I32 back_max = - prog->anchored_substr ? prog->anchored_offset : prog->float_max_offset; - I32 back_min = - prog->anchored_substr ? prog->anchored_offset : prog->float_min_offset; - I32 delta = back_max - back_min; - char *last = HOPc(strend, /* Cannot start after this */ - -(I32)(CHR_SVLEN(must) - - (SvTAIL(must) != 0) + back_min)); - char *last1; /* Last position checked before */ - - if (s > PL_bostr) - last1 = HOPc(s, -1); - else - last1 = s - 1; /* bogus */ - - /* XXXX check_substr already used to find `s', can optimize if - check_substr==must. */ - scream_pos = -1; - dontbother = end_shift; - strend = HOPc(strend, -dontbother); - while ( (s <= last) && - ((flags & REXEC_SCREAM) - ? (s = screaminstr(sv, must, HOPc(s, back_min) - strbeg, - end_shift, &scream_pos, 0)) - : (s = fbm_instr((unsigned char*)HOP(s, back_min), - (unsigned char*)strend, must, - PL_multiline ? FBMrf_MULTILINE : 0))) ) { - if (HOPc(s, -back_max) > last1) { - last1 = HOPc(s, -back_min); - s = HOPc(s, -back_max); - } - else { - char *t = (last1 >= PL_bostr) ? HOPc(last1, 1) : last1 + 1; - - last1 = HOPc(s, -back_min); - s = t; - } - if (UTF) { - while (s <= last1) { - if (regtry(prog, s)) - goto got_it; - s += UTF8SKIP(s); - } - } - else { - while (s <= last1) { - if (regtry(prog, s)) - goto got_it; - s++; - } - } - } - goto phooey; - } - else if (c = prog->regstclass) { I32 doevery = (prog->reganch & ROPT_SKIP) == 0; char *m; int ln; int c1; int c2; char *e; + register I32 tmp = 1; /* Scratch variable? */ - if (minlen) - dontbother = minlen - 1; - strend = HOPc(strend, -dontbother); /* don't bother with what can't match */ - tmp = 1; /* We know what class it must start with. */ switch (OP(c)) { case ANYOFUTF8: while (s < strend) { if (REGINCLASSUTF8(c, (U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -952,7 +774,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case ANYOF: while (s < strend) { if (REGINCLASS(c, *s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -976,6 +798,8 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * do_exactf: e = strend - ln; + if (norun && e < s) + e = s; /* Due to minlen logic of intuit() */ /* Here it is NOT UTF! */ if (c1 == c2) { while (s <= e) { @@ -983,7 +807,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * && (ln == 1 || (OP(c) == EXACTF ? ibcmp(s, m, ln) : ibcmp_locale(s, m, ln))) - && regtry(prog, s) ) + && (norun || regtry(prog, s)) ) goto got_it; s++; } @@ -993,7 +817,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * && (ln == 1 || (OP(c) == EXACTF ? ibcmp(s, m, ln) : ibcmp_locale(s, m, ln))) - && regtry(prog, s) ) + && (norun || regtry(prog, s)) ) goto got_it; s++; } @@ -1003,32 +827,24 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; /* FALL THROUGH */ case BOUND: - if (minlen) { - dontbother++; - strend -= 1; - } - tmp = (s != startpos) ? UCHARAT(s - 1) : PL_regprev; + tmp = (s != startpos) ? UCHARAT(s - 1) : '\n'; tmp = ((OP(c) == BOUND ? isALNUM(tmp) : isALNUM_LC(tmp)) != 0); while (s < strend) { if (tmp == !(OP(c) == BOUND ? isALNUM(*s) : isALNUM_LC(*s))) { tmp = !tmp; - if (regtry(prog, s)) + if ((norun || regtry(prog, s))) goto got_it; } s++; } - if ((minlen || tmp) && regtry(prog,s)) + if ((!prog->minlen && tmp) && (norun || regtry(prog, s))) goto got_it; break; case BOUNDLUTF8: PL_reg_flags |= RF_tainted; /* FALL THROUGH */ case BOUNDUTF8: - if (minlen) { - dontbother++; - strend = reghop_c(strend, -1); - } - tmp = (I32)(s != startpos) ? utf8_to_uv(reghop((U8*)s, -1), 0) : PL_regprev; + tmp = (I32)(s != startpos) ? utf8_to_uv(reghop((U8*)s, -1), 0) : '\n'; tmp = ((OP(c) == BOUND ? isALNUM_uni(tmp) : isALNUM_LC_uni(tmp)) != 0); while (s < strend) { if (tmp == !(OP(c) == BOUND ? @@ -1036,60 +852,54 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * isALNUM_LC_utf8((U8*)s))) { tmp = !tmp; - if (regtry(prog, s)) + if ((norun || regtry(prog, s))) goto got_it; } s += UTF8SKIP(s); } - if ((minlen || tmp) && regtry(prog,s)) + if ((!prog->minlen && tmp) && (norun || regtry(prog, s))) goto got_it; break; case NBOUNDL: PL_reg_flags |= RF_tainted; /* FALL THROUGH */ case NBOUND: - if (minlen) { - dontbother++; - strend -= 1; - } - tmp = (s != startpos) ? UCHARAT(s - 1) : PL_regprev; + tmp = (s != startpos) ? UCHARAT(s - 1) : '\n'; tmp = ((OP(c) == NBOUND ? isALNUM(tmp) : isALNUM_LC(tmp)) != 0); while (s < strend) { if (tmp == !(OP(c) == NBOUND ? isALNUM(*s) : isALNUM_LC(*s))) tmp = !tmp; - else if (regtry(prog, s)) + else if ((norun || regtry(prog, s))) goto got_it; s++; } - if ((minlen || !tmp) && regtry(prog,s)) + if ((!prog->minlen && !tmp) && (norun || regtry(prog, s))) goto got_it; break; case NBOUNDLUTF8: PL_reg_flags |= RF_tainted; /* FALL THROUGH */ case NBOUNDUTF8: - if (minlen) { - dontbother++; + if (prog->minlen) strend = reghop_c(strend, -1); - } - tmp = (I32)(s != startpos) ? utf8_to_uv(reghop((U8*)s, -1), 0) : PL_regprev; + tmp = (I32)(s != startpos) ? utf8_to_uv(reghop((U8*)s, -1), 0) : '\n'; tmp = ((OP(c) == NBOUND ? isALNUM_uni(tmp) : isALNUM_LC_uni(tmp)) != 0); while (s < strend) { if (tmp == !(OP(c) == NBOUND ? swash_fetch(PL_utf8_alnum, (U8*)s) : isALNUM_LC_utf8((U8*)s))) tmp = !tmp; - else if (regtry(prog, s)) + else if ((norun || regtry(prog, s))) goto got_it; s += UTF8SKIP(s); } - if ((minlen || !tmp) && regtry(prog,s)) + if ((!prog->minlen && !tmp) && (norun || regtry(prog, s))) goto got_it; break; case ALNUM: while (s < strend) { if (isALNUM(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1102,7 +912,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case ALNUMUTF8: while (s < strend) { if (swash_fetch(PL_utf8_alnum, (U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1116,7 +926,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (isALNUM_LC(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1130,7 +940,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (isALNUM_LC_utf8((U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1143,7 +953,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case NALNUM: while (s < strend) { if (!isALNUM(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1156,7 +966,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case NALNUMUTF8: while (s < strend) { if (!swash_fetch(PL_utf8_alnum, (U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1170,7 +980,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (!isALNUM_LC(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1184,7 +994,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (!isALNUM_LC_utf8((U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1197,7 +1007,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case SPACE: while (s < strend) { if (isSPACE(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1210,7 +1020,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case SPACEUTF8: while (s < strend) { if (*s == ' ' || swash_fetch(PL_utf8_space,(U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1224,7 +1034,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (isSPACE_LC(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1238,7 +1048,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (*s == ' ' || isSPACE_LC_utf8((U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1251,7 +1061,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case NSPACE: while (s < strend) { if (!isSPACE(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1264,7 +1074,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case NSPACEUTF8: while (s < strend) { if (!(*s == ' ' || swash_fetch(PL_utf8_space,(U8*)s))) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1278,7 +1088,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (!isSPACE_LC(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1292,7 +1102,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (!(*s == ' ' || isSPACE_LC_utf8((U8*)s))) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1305,7 +1115,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case DIGIT: while (s < strend) { if (isDIGIT(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1318,7 +1128,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case DIGITUTF8: while (s < strend) { if (swash_fetch(PL_utf8_digit,(U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1332,7 +1142,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (isDIGIT_LC(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1346,7 +1156,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (isDIGIT_LC_utf8((U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1359,7 +1169,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case NDIGIT: while (s < strend) { if (!isDIGIT(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1372,7 +1182,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * case NDIGITUTF8: while (s < strend) { if (!swash_fetch(PL_utf8_digit,(U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1386,7 +1196,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (!isDIGIT_LC(*s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1400,7 +1210,7 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * PL_reg_flags |= RF_tainted; while (s < strend) { if (!isDIGIT_LC_utf8((U8*)s)) { - if (tmp && regtry(prog, s)) + if (tmp && (norun || regtry(prog, s))) goto got_it; else tmp = doevery; @@ -1411,9 +1221,280 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char * } break; default: - Perl_croak(aTHX_ "panic: unknown regstclass %d", (int)OP(c)); - break; + { + dTHX; + Perl_croak(aTHX_ "panic: unknown regstclass %d", (int)OP(c)); + break; + } + } + return 0; + got_it: + return s; +} + +/* + - regexec_flags - match a regexp against a string + */ +I32 +Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *strend, + char *strbeg, I32 minend, SV *sv, void *data, U32 flags) +/* strend: pointer to null at end of string */ +/* strbeg: real beginning of string */ +/* minend: end of match must be >=minend after stringarg. */ +/* data: May be used for some additional optimizations. */ +/* nosave: For optimizations. */ +{ + dTHR; + register char *s; + register regnode *c; + register char *startpos = stringarg; + register I32 tmp; + I32 minlen; /* must match at least this many chars */ + I32 dontbother = 0; /* how many characters not to try at end */ + I32 start_shift = 0; /* Offset of the start to find + constant substr. */ /* CC */ + I32 end_shift = 0; /* Same for the end. */ /* CC */ + I32 scream_pos = -1; /* Internal iterator of scream. */ + char *scream_olds; + SV* oreplsv = GvSV(PL_replgv); + + PL_regcc = 0; + + cache_re(prog); +#ifdef DEBUGGING + PL_regnarrate = PL_debug & 512; +#endif + + /* Be paranoid... */ + if (prog == NULL || startpos == NULL) { + Perl_croak(aTHX_ "NULL regexp parameter"); + return 0; + } + + minlen = prog->minlen; + if (strend - startpos < minlen) goto phooey; + + if (startpos == strbeg) /* is ^ valid at stringarg? */ + PL_regprev = '\n'; + else { + PL_regprev = (U32)stringarg[-1]; + if (!PL_multiline && PL_regprev == '\n') + PL_regprev = '\0'; /* force ^ to NOT match */ + } + + /* Check validity of program. */ + if (UCHARAT(prog->program) != REG_MAGIC) { + Perl_croak(aTHX_ "corrupted regexp program"); + } + + PL_reg_flags = 0; + PL_reg_eval_set = 0; + PL_reg_maxiter = 0; + + if (prog->reganch & ROPT_UTF8) + PL_reg_flags |= RF_utf8; + + /* Mark beginning of line for ^ and lookbehind. */ + PL_regbol = startpos; + PL_bostr = strbeg; + PL_reg_sv = sv; + + /* Mark end of line for $ (and such) */ + PL_regeol = strend; + + /* see how far we have to get to not match where we matched before */ + PL_regtill = startpos+minend; + + /* We start without call_cc context. */ + PL_reg_call_cc = 0; + + /* If there is a "must appear" string, look for it. */ + s = startpos; + + if (prog->reganch & ROPT_GPOS_SEEN) { /* Need to have PL_reg_ganch */ + MAGIC *mg; + + if (flags & REXEC_IGNOREPOS) /* Means: check only at start */ + PL_reg_ganch = startpos; + else if (sv && SvTYPE(sv) >= SVt_PVMG + && SvMAGIC(sv) + && (mg = mg_find(sv, 'g')) && mg->mg_len >= 0) { + PL_reg_ganch = strbeg + mg->mg_len; /* Defined pos() */ + if (prog->reganch & ROPT_ANCH_GPOS) { + if (s > PL_reg_ganch) + goto phooey; + s = PL_reg_ganch; + } + } + else /* pos() not defined */ + PL_reg_ganch = strbeg; + } + + if (!(flags & REXEC_CHECKED) && prog->check_substr != Nullsv) { + re_scream_pos_data d; + + d.scream_olds = &scream_olds; + d.scream_pos = &scream_pos; + s = re_intuit_start(prog, sv, s, strend, flags, &d); + if (!s) + goto phooey; /* not present */ + } + + DEBUG_r( if (!PL_colorset) reginitcolors() ); + DEBUG_r(PerlIO_printf(Perl_debug_log, + "%sMatching REx%s `%s%.60s%s%s' against `%s%.*s%s%s'\n", + PL_colors[4],PL_colors[5],PL_colors[0], + prog->precomp, + PL_colors[1], + (strlen(prog->precomp) > 60 ? "..." : ""), + PL_colors[0], + (int)(strend - startpos > 60 ? 60 : strend - startpos), + startpos, PL_colors[1], + (strend - startpos > 60 ? "..." : "")) + ); + + /* Simplest case: anchored match need be tried only once. */ + /* [unless only anchor is BOL and multiline is set] */ + if (prog->reganch & (ROPT_ANCH & ~ROPT_ANCH_GPOS)) { + if (s == startpos && regtry(prog, startpos)) + goto got_it; + else if (PL_multiline || (prog->reganch & ROPT_IMPLICIT) + || (prog->reganch & ROPT_ANCH_MBOL)) /* XXXX SBOL? */ + { + char *end; + + if (minlen) + dontbother = minlen - 1; + end = HOPc(strend, -dontbother) - 1; + /* for multiline we only have to try after newlines */ + if (prog->check_substr) { + if (s == startpos) + goto after_try; + while (1) { + if (regtry(prog, s)) + goto got_it; + after_try: + if (s >= end) + goto phooey; + if (prog->reganch & RE_USE_INTUIT) { + s = re_intuit_start(prog, sv, s + 1, strend, flags, NULL); + if (!s) + goto phooey; + } + else + s++; + } + } else { + if (s > startpos) + s--; + while (s < end) { + if (*s++ == '\n') { /* don't need PL_utf8skip here */ + if (regtry(prog, s)) + goto got_it; + } + } + } + } + goto phooey; + } else if (prog->reganch & ROPT_ANCH_GPOS) { + if (regtry(prog, PL_reg_ganch)) + goto got_it; + goto phooey; + } + + /* Messy cases: unanchored match. */ + if (prog->anchored_substr && prog->reganch & ROPT_SKIP) { + /* we have /x+whatever/ */ + /* it must be a one character string (XXXX Except UTF?) */ + char ch = SvPVX(prog->anchored_substr)[0]; + if (UTF) { + while (s < strend) { + if (*s == ch) { + if (regtry(prog, s)) goto got_it; + s += UTF8SKIP(s); + while (s < strend && *s == ch) + s += UTF8SKIP(s); + } + s += UTF8SKIP(s); + } + } + else { + while (s < strend) { + if (*s == ch) { + if (regtry(prog, s)) goto got_it; + s++; + while (s < strend && *s == ch) + s++; + } + s++; + } + } + } + /*SUPPRESS 560*/ + else if (prog->anchored_substr != Nullsv + || (prog->float_substr != Nullsv + && prog->float_max_offset < strend - s)) { + SV *must = prog->anchored_substr + ? prog->anchored_substr : prog->float_substr; + I32 back_max = + prog->anchored_substr ? prog->anchored_offset : prog->float_max_offset; + I32 back_min = + prog->anchored_substr ? prog->anchored_offset : prog->float_min_offset; + I32 delta = back_max - back_min; + char *last = HOPc(strend, /* Cannot start after this */ + -(I32)(CHR_SVLEN(must) + - (SvTAIL(must) != 0) + back_min)); + char *last1; /* Last position checked before */ + + if (s > PL_bostr) + last1 = HOPc(s, -1); + else + last1 = s - 1; /* bogus */ + + /* XXXX check_substr already used to find `s', can optimize if + check_substr==must. */ + scream_pos = -1; + dontbother = end_shift; + strend = HOPc(strend, -dontbother); + while ( (s <= last) && + ((flags & REXEC_SCREAM) + ? (s = screaminstr(sv, must, HOPc(s, back_min) - strbeg, + end_shift, &scream_pos, 0)) + : (s = fbm_instr((unsigned char*)HOP(s, back_min), + (unsigned char*)strend, must, + PL_multiline ? FBMrf_MULTILINE : 0))) ) { + if (HOPc(s, -back_max) > last1) { + last1 = HOPc(s, -back_min); + s = HOPc(s, -back_max); + } + else { + char *t = (last1 >= PL_bostr) ? HOPc(last1, 1) : last1 + 1; + + last1 = HOPc(s, -back_min); + s = t; + } + if (UTF) { + while (s <= last1) { + if (regtry(prog, s)) + goto got_it; + s += UTF8SKIP(s); + } + } + else { + while (s <= last1) { + if (regtry(prog, s)) + goto got_it; + s++; + } + } } + goto phooey; + } + else if (c = prog->regstclass) { + if (minlen) /* don't bother with what can't match */ + strend = HOPc(strend, -(minlen - 1)); + if (find_byclass(prog, c, s, strend, startpos, 0)) + goto got_it; } else { dontbother = 0; diff --git a/t/io/open.t b/t/io/open.t index 418edacf39..905aee50af 100755 --- a/t/io/open.t +++ b/t/io/open.t @@ -79,7 +79,7 @@ print "ok 23\n"; unlink("afile"); } -if ($Is_VMS) { for (24..46) { print "ok $_ # skipped: not Unix fork\n"; } } +if ($Is_VMS) { for (24..26) { print "ok $_ # skipped: not Unix fork\n"; } } else { print "# \$!='$!'\nnot " unless open(my $f, '-|', <<'EOC'); ./perl -e "print qq(a row\n); print qq(another row\n)" @@ -91,7 +91,7 @@ print "ok 25\n"; print "not " unless close($f); print "ok 26\n"; } -if ($Is_VMS) { for (27..30) { print "OK $_ # skipped: not Unix fork\n"; } } +if ($Is_VMS) { for (27..30) { print "ok $_ # skipped: not Unix fork\n"; } } else { print "# \$!='$!'\nnot " unless open(my $f, '|-', <<'EOC'); ./perl -pe "s/^not //" diff --git a/t/op/re_tests b/t/op/re_tests index d72a0f73b2..f866385096 100644 --- a/t/op/re_tests +++ b/t/op/re_tests @@ -742,3 +742,5 @@ tt+$ xxxtt y - - ([[:digit:]-z]+) =0-z= y $1 0-z ([[:digit:]-[:alpha:]]+) =0-z= y $1 0-z \GX.*X aaaXbX n - - +(\d+\.\d+) 3.1415926 y $1 3.1415926 +(\ba.{0,10}br) have a web browser y $1 a web br @@ -14,8 +14,10 @@ Perl_taint_proper(pTHX_ const char *f, const char *s) dTHR; /* just for taint */ char *ug; +#ifdef HAS_SETEUID DEBUG_u(PerlIO_printf(Perl_debug_log, "%s %d %"Uid_t_f" %"Uid_t_f"\n", s, PL_tainted, PL_uid, PL_euid)); +#endif if (PL_tainted) { if (!f) diff --git a/vms/subconfigure.com b/vms/subconfigure.com index c9703c2cf5..93473dc8fd 100644 --- a/vms/subconfigure.com +++ b/vms/subconfigure.com @@ -63,6 +63,15 @@ $ myname = myhostname $ if "''myname'" .eqs. "" THEN myname = f$trnlnm("SYS$NODE") $! $! ##ADD NEW CONSTANTS HERE## +$ perl_d_fs_data_s = "undef" +$ perl_d_getmnt = "undef" +$ perl_d_sqrtl = "define" +$ perl_d_statfs_f_flags = "undef" +$ perl_d_statfs_s = "undef" +$ perl_d_ustat = "undef" +$ perl_i_sysstatfs = "undef" +$ perl_i_sysvfs = "undef" +$ perl_i_ustat = "undef" $ perl_d_llseek="undef" $ perl_d_madvise="undef" $ perl_selectminbits=32 @@ -126,10 +135,12 @@ $ THEN $ perl_use64bits = "define" $ perl_uselargefiles = "define" $ perl_uselongdouble = "define" +$ perl_usemorebits = "define" $ ELSE $ perl_use64bits = "undef" $ perl_uselargefiles = "undef" $ perl_uselongdouble = "undef" +$ perl_usemorebits = "undef" $ ENDIF $ perl_d_drand48proto = "define" $ perl_libpth="/sys$share /sys$library" @@ -435,6 +446,9 @@ $ perl_sPRId64 = """Ld""" $ perl_sPRIu64 = """Lu""" $ perl_sPRIo64 = """Lo""" $ perl_sPRIx64 = """Lx""" +$ perl_d_quad = "define" +$ perl_quadtype = "long long" +$ perl_uquadtype = "unsigned long long" $ ELSE $ perl_d_PRIfldbl = "undef" $ perl_d_PRIgldbl = "undef" @@ -448,9 +462,9 @@ $ perl_sPRId64 = "" $ perl_sPRIu64 = "" $ perl_sPRIo64 = "" $ perl_sPRIx64 = "" +$ perl_d_quad = "undef" $ ENDIF $! -$! $! Now some that we build up $! $ LocalTime = f$time() @@ -544,6 +558,7 @@ $ DEASSIGN SYS$ERROR $ OPEN/READ TEMPOUT [-.uu]tempout.lis $ READ TEMPOUT line $ CLOSE TEMPOUT +$ DELETE/NOLOG [-.uu]tempout.lis; $ $ perl_cpp_stuff=line $ WRITE_RESULT "cpp_stuff is ''perl_cpp_stuff'" @@ -574,7 +589,6 @@ $ link temp.obj,temp.opt/opt $ else $ link temp.obj $ endif -$! link temp.obj $ OPEN/WRITE TEMPOUT [-.uu]tempout.lis $ DEASSIGN SYS$OUTPUT $ DEASSIGN SYS$ERROR @@ -587,6 +601,7 @@ $ DEASSIGN SYS$ERROR $ OPEN/READ TEMPOUT [-.uu]tempout.lis $ READ TEMPOUT line $ CLOSE TEMPOUT +$ DELETE/NOLOG [-.uu]tempout.lis; $ $ perl_doublesize=line $ WRITE_RESULT "doublesize is ''perl_doublesize'" @@ -641,6 +656,7 @@ $ DEASSIGN SYS$ERROR $ OPEN/READ TEMPOUT [-.uu]tempout.lis $ READ TEMPOUT line $ CLOSE TEMPOUT +$ DELETE/NOLOG [-.uu]tempout.lis; $ $ perl_longdblsize=line $ perl_d_longdbl="define" @@ -691,141 +707,13 @@ $ DEASSIGN SYS$ERROR $ OPEN/READ TEMPOUT [-.uu]tempout.lis $ READ TEMPOUT line $ CLOSE TEMPOUT -$ +$ DELETE/NOLOG [-.uu]tempout.lis; $ perl_longlongsize=line $ perl_d_longlong="define" $ ENDIF $ WRITE_RESULT "longlongsize is ''perl_longlongsize'" $ WRITE_RESULT "d_longlong is ''perl_d_longlong'" $! -$! Check for int size -$! -$ OS -$ WS "#ifdef __DECC -$ WS "#include <stdlib.h> -$ WS "#endif -$ WS "#include <stdio.h> -$ WS "int main() -$ WS "{" -$ WS "printf(""%d\n"", sizeof(int)); -$ WS "exit(0); -$ WS "}" -$ CS -$ DEFINE SYS$ERROR _NLA0: -$ DEFINE SYS$OUTPUT _NLA0: -$ on error then continue -$ on warning then continue -$ 'Checkcc' temp.c -$ If (Needs_Opt.eqs."Yes") -$ THEN -$ link temp.obj,temp.opt/opt -$ else -$ link temp.obj -$ endif -$ If (Needs_Opt.eqs."Yes") -$ THEN -$ link temp.obj,temp.opt/opt -$ else -$ link temp.obj -$ endif -$ OPEN/WRITE TEMPOUT [-.uu]tempout.lis -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ DEFINE SYS$ERROR TEMPOUT -$ DEFINE SYS$OUTPUT TEMPOUT -$ mcr []temp -$ CLOSE TEMPOUT -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ OPEN/READ TEMPOUT [-.uu]tempout.lis -$ READ TEMPOUT line -$ CLOSE TEMPOUT -$ -$ perl_intsize=line -$ WRITE_RESULT "intsize is ''perl_intsize'" -$! -$! Check for short size -$! -$ OS -$ WS "#ifdef __DECC -$ WS "#include <stdlib.h> -$ WS "#endif -$ WS "#include <stdio.h> -$ WS "int main() -$ WS "{" -$ WS "printf(""%d\n"", sizeof(short)); -$ WS "exit(0); -$ WS "}" -$ CS -$ DEFINE SYS$ERROR _NLA0: -$ DEFINE SYS$OUTPUT _NLA0: -$ on error then continue -$ on warning then continue -$ 'Checkcc' temp.c -$ If (Needs_Opt.eqs."Yes") -$ THEN -$ link temp.obj,temp.opt/opt -$ else -$ link temp.obj -$ endif -$ OPEN/WRITE TEMPOUT [-.uu]tempout.lis -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ DEFINE SYS$ERROR TEMPOUT -$ DEFINE SYS$OUTPUT TEMPOUT -$ mcr []temp -$ CLOSE TEMPOUT -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ OPEN/READ TEMPOUT [-.uu]tempout.lis -$ READ TEMPOUT line -$ CLOSE TEMPOUT -$ -$ perl_shortsize=line -$ WRITE_RESULT "shortsize is ''perl_shortsize'" -$! -$! Check for long size -$! -$ OS -$ WS "#ifdef __DECC -$ WS "#include <stdlib.h> -$ WS "#endif -$ WS "#include <stdio.h> -$ WS "int main() -$ WS "{" -$ WS "int foo; -$ WS "foo = sizeof(long); -$ WS "printf(""%d\n"", foo); -$ WS "exit(0); -$ WS "}" -$ CS -$ DEFINE SYS$ERROR _NLA0: -$ DEFINE SYS$OUTPUT _NLA0: -$ on error then continue -$ on warning then continue -$ 'Checkcc' temp.c -$ If (Needs_Opt.eqs."Yes") -$ THEN -$ link temp.obj,temp.opt/opt -$ else -$ link temp.obj -$ endif -$ OPEN/WRITE TEMPOUT [-.uu]tempout.lis -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ DEFINE SYS$ERROR TEMPOUT -$ DEFINE SYS$OUTPUT TEMPOUT -$ mcr []temp -$ CLOSE TEMPOUT -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ OPEN/READ TEMPOUT [-.uu]tempout.lis -$ READ TEMPOUT line -$ CLOSE TEMPOUT -$ -$ perl_longsize=line -$ WRITE_RESULT "longsize is ''perl_longsize'" -$! $! Check the prototype for getgid $! $ OS @@ -2774,36 +2662,34 @@ $ WS "printf(""%d\n"", foo); $ WS "exit(0); $ WS "}" $ CS -$! copy temp.c sys$output -$! -$ DEFINE SYS$ERROR _NLA0: -$ DEFINE SYS$OUTPUT _NLA0: -$ ON ERROR THEN CONTINUE -$ ON WARNING THEN CONTINUE -$ 'Checkcc' temp.c -$ If (Needs_Opt.eqs."Yes") -$ THEN -$ link temp.obj,temp.opt/opt -$ else -$ link temp.obj -$ endif -$ OPEN/WRITE TEMPOUT [-.uu]tempout.lis -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ DEFINE SYS$ERROR TEMPOUT -$ DEFINE SYS$OUTPUT TEMPOUT -$ mcr []temp -$ CLOSE TEMPOUT -$ DEASSIGN SYS$OUTPUT -$ DEASSIGN SYS$ERROR -$ OPEN/READ TEMPOUT [-.uu]tempout.lis -$ READ TEMPOUT line -$ CLOSE TEMPOUT +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ ON ERROR THEN CONTINUE +$ ON WARNING THEN CONTINUE +$ 'Checkcc' temp.c +$ If (Needs_Opt.eqs."Yes") +$ THEN +$ link temp.obj,temp.opt/opt +$ ELSE +$ link temp.obj +$ ENDIF +$ OPEN/WRITE TEMPOUT [-.uu]tempout.lis +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ DEFINE SYS$ERROR TEMPOUT +$ DEFINE SYS$OUTPUT TEMPOUT +$ mcr []temp.exe +$ CLOSE TEMPOUT +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ OPEN/READ TEMPOUT [-.uu]tempout.lis +$ READ TEMPOUT line +$ CLOSE TEMPOUT +$ DELETE/NOLOG [-.uu]tempout.lis; $ $ perl_ptrsize=line $ WRITE_RESULT "ptrsize is ''perl_ptrsize'" $! -$! $! Check rand48 and its ilk $! $ OS @@ -2817,7 +2703,6 @@ $ WS "srand48(12L);" $ WS "exit(0); $ WS "}" $ CS -$! copy temp.c sys$output $! $ DEFINE SYS$ERROR _NLA0: $ DEFINE SYS$OUTPUT _NLA0: @@ -2983,7 +2868,6 @@ $ THEN $ perl_vms_cc_type="vaxc" $ ENDIF $! -$! $! Sockets? $ if ("''Has_Socketshr'".EQS."T").OR.("''Has_Dec_C_Sockets'".EQS."T") $ THEN @@ -3047,6 +2931,146 @@ $ $ perl_d_pthreads_created_joinable="undef" $ ENDIF $! +$! new (5.005_62++) typedefs for primitives +$! +$ perl_ivtype="long" +$ perl_uvtype="unsigned long" +$ perl_i8type="char" +$ perl_u8type="unsigned char" +$ perl_i16type="short" +$ perl_u16type="unsigned short" +$ perl_i32type="int" +$ perl_u32type="unsigned int" +$ perl_i64type="long" +$ perl_u64type="unsigned long" +$ perl_nvtype="double" +$! +$ GOTO beyond_type_size_check +$! +$type_size_check: +$! +$! Check for type sizes +$! +$ OS +$ WS "#ifdef __DECC +$ WS "#include <stdlib.h> +$ WS "#endif +$ WS "#include <stdio.h> +$ WS "int main() +$ WS "{" +$ WS "printf(""%d\n"", sizeof(''type'));" +$ WS "exit(0); +$ WS "}" +$ CS +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ ON ERROR THEN CONTINUE +$ ON WARNING THEN CONTINUE +$ 'Checkcc' temp.c +$ If (Needs_Opt.eqs."Yes") +$ THEN +$ link temp.obj,temp.opt/opt +$ ELSE +$ link temp.obj +$ ENDIF +$ OPEN/WRITE TEMPOUT [-.uu]tempout.lis +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ DEFINE SYS$ERROR TEMPOUT +$ DEFINE SYS$OUTPUT TEMPOUT +$ mcr []temp.exe +$ CLOSE TEMPOUT +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ OPEN/READ TEMPOUT [-.uu]tempout.lis +$ READ TEMPOUT line +$ CLOSE TEMPOUT +$ DELETE/NOLOG [-.uu]tempout.lis; +$ WRITE_RESULT "''size_name' is ''line'" +$ DS +$ RETURN +$! +$beyond_type_size_check: +$! +$ line = "" +$ type = "''perl_ivtype'" +$ size_name = "ivsize" +$ gosub type_size_check +$ perl_ivsize="''line'" +$ IF type .eqs. "long" +$ THEN perl_longsize = "''line'" +$ ELSE +$ type = "long" +$ size_name = "longsize" +$ gosub type_size_check +$ perl_longsize="''line'" +$ ENDIF +$ +$ type = "''perl_uvtype'" +$ size_name = "uvsize" +$ gosub type_size_check +$ perl_uvsize="''line'" +$ +$ type = "''perl_i8type'" +$ size_name = "i8size" +$ gosub type_size_check +$ perl_i8size="''line'" +$ +$ type = "''perl_u8type'" +$ size_name = "u8size" +$ gosub type_size_check +$ perl_u8size="''line'" +$ +$ type = "''perl_i16type'" +$ size_name = "i16size" +$ gosub type_size_check +$ perl_i16size="''line'" +$ IF type .eqs. "short" +$ THEN perl_shortsize="''line'" +$ ELSE +$ type = "''perl_i16type'" +$ size_name = "shortsize" +$ gosub type_size_check +$ perl_shortsize="''line'" +$ ENDIF +$ +$ type = "''perl_u16type'" +$ size_name = "u16size" +$ gosub type_size_check +$ perl_u16size="''line'" +$ +$ type = "''perl_i32type'" +$ size_name = "i32size" +$ gosub type_size_check +$ perl_i32size="''line'" +$ IF type .eqs. "int" +$ THEN perl_intsize="''perl_i32size'" +$ ELSE +$ type = "int" +$ size_name = "intsize" +$ gosub type_size_check +$ perl_intsize="''line'" +$ ENDIF +$ +$ type = "''perl_u32type'" +$ size_name = "u32size" +$ gosub type_size_check +$ perl_u32size="''line'" +$ +$ type = "''perl_i64type'" +$ size_name = "i64size" +$ gosub type_size_check +$ perl_i64size="''line'" +$ +$ type = "''perl_u64type'" +$ size_name = "u64size" +$ gosub type_size_check +$ perl_u64size="''line'" +$! +$ perl_ivdformat="""ld""" +$ perl_uvuformat="""lu""" +$ perl_uvoformat="""lo""" +$ perl_uvxformat="""lx""" $! $! Finally the composite ones. All config $ perl_installarchlib="''perl_prefix':[lib.''perl_arch'.''localperlver']" @@ -3445,6 +3469,7 @@ $ WC "d_oldpthreads='" + perl_d_oldpthreads + "'" $ WC "d_longdbl='" + perl_d_longdbl + "'" $ WC "longdblsize='" + perl_longdblsize + "'" $ WC "d_longlong='" + perl_d_longlong + "'" +$ WC "uselonglong='" + perl_d_longlong + "'" $ WC "longlongsize='" + perl_longlongsize + "'" $ WC "d_mkstemp='" + perl_d_mkstemp + "'" $ WC "d_setvbuf='" + perl_d_setvbuf + "'" @@ -3574,8 +3599,49 @@ $ WC "sPRIu64='" + perl_sPRIu64 + "'" $ WC "sPRIo64='" + perl_sPRIo64 + "'" $ WC "sPRIx64='" + perl_sPRIx64 + "'" $ WC "d_llseek='" + perl_d_llseek + "'" -$ WC "d_uselargefiles='" + perl_d_uselargefiles + "'" -$ WC "d_uselongdouble='" + perl_d_uselongdouble + "'" +$ WC "uselargefiles='" + perl_uselargefiles + "'" +$ WC "uselongdouble='" + perl_uselongdouble + "'" +$ WC "usemorebits='" + perl_usemorebits + "'" +$ WC "d_quad='" + perl_d_quad + "'" +$ if (use_64bit .eqs. "Y") +$ THEN +$ WC "quadtype='" + perl_quadtype + "'" +$ WC "uquadtype='" + perl_uquadtype + "'" +$ ENDIF +$ WC "d_fs_data_s='" + perl_d_fs_data_s + "'" +$ WC "d_getmnt='" + perl_d_getmnt + "'" +$ WC "d_sqrtl='" + perl_d_sqrtl + "'" +$ WC "d_statfs_f_flags='" + perl_d_statfs_f_flags + "'" +$ WC "d_statfs_s='" + perl_d_statfs_s + "'" +$ WC "d_ustat='" + perl_d_ustat + "'" +$ WC "i_sysstatfs='" + perl_i_sysstatfs + "'" +$ WC "i_sysvfs='" + perl_i_sysvfs + "'" +$ WC "i_ustat='" + perl_i_ustat + "'" +$ WC "ivtype='" + perl_ivtype + "'" +$ WC "uvtype='" + perl_uvtype + "'" +$ WC "i8type='" + perl_i8type + "'" +$ WC "i16type='" + perl_i16type + "'" +$ WC "u8type='" + perl_u8type + "'" +$ WC "u16type='" + perl_u16type + "'" +$ WC "i32type='" + perl_i32type + "'" +$ WC "u32type='" + perl_u32type + "'" +$ WC "i64type='" + perl_i64type + "'" +$ WC "u64type='" + perl_u64type + "'" +$ WC "nvtype='" + perl_nvtype + "'" +$ WC "ivsize='" + perl_ivsize + "'" +$ WC "uvsize='" + perl_uvsize + "'" +$ WC "i8size='" + perl_i8size + "'" +$ WC "u8size='" + perl_u8size + "'" +$ WC "i16size='" + perl_i16size + "'" +$ WC "u16size='" + perl_u16size + "'" +$ WC "i32size='" + perl_i32size + "'" +$ WC "u32size='" + perl_u32size + "'" +$ WC "i64size='" + perl_i64size + "'" +$ WC "u64size='" + perl_u64size + "'" +$ WC "ivdformat='" + perl_ivdformat + "'" +$ WC "uvuformat='" + perl_uvuformat + "'" +$ WC "uvoformat='" + perl_uvoformat + "'" +$ WC "uvxformat='" + perl_uvxformat + "'" $! $! ##WRITE NEW CONSTANTS HERE## $! @@ -4401,9 +4401,8 @@ is_null_device(name) /* Do this via $Check_Access on VMS, since the CRTL stat() returns only a * subset of the applicable information. */ -/*{{{I32 cando(I32 bit, Uid_t effective, struct stat *statbufp)*/ -I32 -Perl_cando(pTHX_ I32 bit, Uid_t effective, Stat_t *statbufp) +bool +Perl_cando(pTHX_ Mode_t bit, Uid_t effective, Stat_t *statbufp) { if (statbufp == &PL_statcache) return cando_by_name(bit,effective,namecache); else { |