summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-12-01 05:33:14 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-12-01 05:33:14 +0000
commitd9aad7f7caf6c1d42b8e71a2a04bfca6447d2827 (patch)
treedccc6636377483116741f280578188f0a4360f81
parent57b2e4523f4df782c055782388ac1aacff9603ef (diff)
parentd132b95fb004c5e3d94e297d3804c90cfef96fed (diff)
downloadperl-d9aad7f7caf6c1d42b8e71a2a04bfca6447d2827.tar.gz
integrate cfgperl contents into mainline
p4raw-id: //depot/perl@4606
-rw-r--r--Changes152
-rwxr-xr-xConfigure1817
-rw-r--r--MANIFEST8
-rw-r--r--README.vms4
-rw-r--r--config_h.SH20
-rw-r--r--doio.c2
-rw-r--r--embed.h4
-rwxr-xr-xembed.pl1
-rw-r--r--ext/Errno/Errno_pm.PL2
-rw-r--r--hints/aix.sh25
-rw-r--r--hints/hpux.sh42
-rw-r--r--hints/solaris_2.sh25
-rw-r--r--lib/unicode/ArabLink.pl2
-rw-r--r--lib/unicode/ArabLnkGrp.pl2
-rw-r--r--lib/unicode/Bidirectional.pl2
-rw-r--r--lib/unicode/Block.pl2
-rw-r--r--lib/unicode/Category.pl2
-rw-r--r--lib/unicode/CombiningClass.pl2
-rw-r--r--lib/unicode/Decomposition.pl2
-rw-r--r--lib/unicode/Eq/Latin1.pl2
-rw-r--r--lib/unicode/Eq/Unicode.pl2
-rw-r--r--lib/unicode/In/AlphabeticPresentationForms.pl2
-rw-r--r--lib/unicode/In/Arabic.pl2
-rw-r--r--lib/unicode/In/ArabicPresentationForms-A.pl2
-rw-r--r--lib/unicode/In/ArabicPresentationForms-B.pl2
-rw-r--r--lib/unicode/In/Armenian.pl2
-rw-r--r--lib/unicode/In/Arrows.pl2
-rw-r--r--lib/unicode/In/BasicLatin.pl2
-rw-r--r--lib/unicode/In/Bengali.pl2
-rw-r--r--lib/unicode/In/BlockElements.pl2
-rw-r--r--lib/unicode/In/Bopomofo.pl2
-rw-r--r--lib/unicode/In/BopomofoExtended.pl2
-rw-r--r--lib/unicode/In/BoxDrawing.pl2
-rw-r--r--lib/unicode/In/BraillePatterns.pl2
-rw-r--r--lib/unicode/In/CJKCompatibility.pl2
-rw-r--r--lib/unicode/In/CJKCompatibilityForms.pl2
-rw-r--r--lib/unicode/In/CJKCompatibilityIdeographs.pl2
-rw-r--r--lib/unicode/In/CJKRadicalsSupplement.pl2
-rw-r--r--lib/unicode/In/CJKSymbolsandPunctuation.pl2
-rw-r--r--lib/unicode/In/CJKUnifiedIdeographs.pl2
-rw-r--r--lib/unicode/In/CJKUnifiedIdeographsExtensionA.pl2
-rw-r--r--lib/unicode/In/Cherokee.pl2
-rw-r--r--lib/unicode/In/CombiningDiacriticalMarks.pl2
-rw-r--r--lib/unicode/In/CombiningHalfMarks.pl2
-rw-r--r--lib/unicode/In/CombiningMarksforSymbols.pl2
-rw-r--r--lib/unicode/In/ControlPictures.pl2
-rw-r--r--lib/unicode/In/CurrencySymbols.pl2
-rw-r--r--lib/unicode/In/Cyrillic.pl2
-rw-r--r--lib/unicode/In/Devanagari.pl2
-rw-r--r--lib/unicode/In/Dingbats.pl2
-rw-r--r--lib/unicode/In/EnclosedAlphanumerics.pl2
-rw-r--r--lib/unicode/In/EnclosedCJKLettersandMonths.pl2
-rw-r--r--lib/unicode/In/Ethiopic.pl2
-rw-r--r--lib/unicode/In/GeneralPunctuation.pl2
-rw-r--r--lib/unicode/In/GeometricShapes.pl2
-rw-r--r--lib/unicode/In/Georgian.pl2
-rw-r--r--lib/unicode/In/Greek.pl2
-rw-r--r--lib/unicode/In/GreekExtended.pl2
-rw-r--r--lib/unicode/In/Gujarati.pl2
-rw-r--r--lib/unicode/In/Gurmukhi.pl2
-rw-r--r--lib/unicode/In/HalfwidthandFullwidthForms.pl2
-rw-r--r--lib/unicode/In/HangulCompatibilityJamo.pl2
-rw-r--r--lib/unicode/In/HangulJamo.pl2
-rw-r--r--lib/unicode/In/HangulSyllables.pl2
-rw-r--r--lib/unicode/In/Hebrew.pl2
-rw-r--r--lib/unicode/In/HighPrivateUseSurrogates.pl2
-rw-r--r--lib/unicode/In/HighSurrogates.pl2
-rw-r--r--lib/unicode/In/Hiragana.pl2
-rw-r--r--lib/unicode/In/IPAExtensions.pl2
-rw-r--r--lib/unicode/In/IdeographicDescriptionCharacters.pl2
-rw-r--r--lib/unicode/In/Kanbun.pl2
-rw-r--r--lib/unicode/In/KangxiRadicals.pl2
-rw-r--r--lib/unicode/In/Kannada.pl2
-rw-r--r--lib/unicode/In/Katakana.pl2
-rw-r--r--lib/unicode/In/Khmer.pl2
-rw-r--r--lib/unicode/In/Lao.pl2
-rw-r--r--lib/unicode/In/Latin-1Supplement.pl2
-rw-r--r--lib/unicode/In/LatinExtended-A.pl2
-rw-r--r--lib/unicode/In/LatinExtended-B.pl2
-rw-r--r--lib/unicode/In/LatinExtendedAdditional.pl2
-rw-r--r--lib/unicode/In/LetterlikeSymbols.pl2
-rw-r--r--lib/unicode/In/LowSurrogates.pl2
-rw-r--r--lib/unicode/In/Malayalam.pl2
-rw-r--r--lib/unicode/In/MathematicalOperators.pl2
-rw-r--r--lib/unicode/In/MiscellaneousSymbols.pl2
-rw-r--r--lib/unicode/In/MiscellaneousTechnical.pl2
-rw-r--r--lib/unicode/In/Mongolian.pl2
-rw-r--r--lib/unicode/In/Myanmar.pl2
-rw-r--r--lib/unicode/In/NumberForms.pl2
-rw-r--r--lib/unicode/In/Ogham.pl2
-rw-r--r--lib/unicode/In/OpticalCharacterRecognition.pl2
-rw-r--r--lib/unicode/In/Oriya.pl2
-rw-r--r--lib/unicode/In/PrivateUse.pl2
-rw-r--r--lib/unicode/In/Runic.pl2
-rw-r--r--lib/unicode/In/Sinhala.pl2
-rw-r--r--lib/unicode/In/SmallFormVariants.pl2
-rw-r--r--lib/unicode/In/SpacingModifierLetters.pl2
-rw-r--r--lib/unicode/In/Specials.pl2
-rw-r--r--lib/unicode/In/SuperscriptsandSubscripts.pl2
-rw-r--r--lib/unicode/In/Syriac.pl2
-rw-r--r--lib/unicode/In/Tamil.pl2
-rw-r--r--lib/unicode/In/Telugu.pl2
-rw-r--r--lib/unicode/In/Thaana.pl2
-rw-r--r--lib/unicode/In/Thai.pl2
-rw-r--r--lib/unicode/In/Tibetan.pl2
-rw-r--r--lib/unicode/In/UnifiedCanadianAboriginalSyllabics.pl2
-rw-r--r--lib/unicode/In/YiRadicals.pl2
-rw-r--r--lib/unicode/In/YiSyllables.pl2
-rw-r--r--lib/unicode/Is/ASCII.pl2
-rw-r--r--lib/unicode/Is/Alnum.pl2
-rw-r--r--lib/unicode/Is/Alpha.pl2
-rw-r--r--lib/unicode/Is/BidiAN.pl2
-rw-r--r--lib/unicode/Is/BidiB.pl2
-rw-r--r--lib/unicode/Is/BidiCS.pl2
-rw-r--r--lib/unicode/Is/BidiEN.pl2
-rw-r--r--lib/unicode/Is/BidiES.pl2
-rw-r--r--lib/unicode/Is/BidiET.pl2
-rw-r--r--lib/unicode/Is/BidiL.pl2
-rw-r--r--lib/unicode/Is/BidiON.pl2
-rw-r--r--lib/unicode/Is/BidiR.pl2
-rw-r--r--lib/unicode/Is/BidiS.pl2
-rw-r--r--lib/unicode/Is/BidiWS.pl2
-rw-r--r--lib/unicode/Is/C.pl2
-rw-r--r--lib/unicode/Is/Cc.pl2
-rw-r--r--lib/unicode/Is/Cn.pl2
-rw-r--r--lib/unicode/Is/Cntrl.pl2
-rw-r--r--lib/unicode/Is/Co.pl2
-rw-r--r--lib/unicode/Is/DCcircle.pl2
-rw-r--r--lib/unicode/Is/DCcompat.pl2
-rw-r--r--lib/unicode/Is/DCfinal.pl2
-rw-r--r--lib/unicode/Is/DCfont.pl2
-rw-r--r--lib/unicode/Is/DCinital.pl2
-rw-r--r--lib/unicode/Is/DCinitial.pl2
-rw-r--r--lib/unicode/Is/DCisolated.pl2
-rw-r--r--lib/unicode/Is/DCnarrow.pl2
-rw-r--r--lib/unicode/Is/DCnoBreak.pl2
-rw-r--r--lib/unicode/Is/DCsmall.pl2
-rw-r--r--lib/unicode/Is/DCsquare.pl2
-rw-r--r--lib/unicode/Is/DCsub.pl2
-rw-r--r--lib/unicode/Is/DCsuper.pl2
-rw-r--r--lib/unicode/Is/DCvertical.pl2
-rw-r--r--lib/unicode/Is/DCwide.pl2
-rw-r--r--lib/unicode/Is/DecoCanon.pl2
-rw-r--r--lib/unicode/Is/DecoCompat.pl2
-rw-r--r--lib/unicode/Is/Digit.pl2
-rw-r--r--lib/unicode/Is/Graph.pl2
-rw-r--r--lib/unicode/Is/L.pl2
-rw-r--r--lib/unicode/Is/Ll.pl2
-rw-r--r--lib/unicode/Is/Lm.pl2
-rw-r--r--lib/unicode/Is/Lo.pl2
-rw-r--r--lib/unicode/Is/Lower.pl2
-rw-r--r--lib/unicode/Is/Lt.pl2
-rw-r--r--lib/unicode/Is/Lu.pl2
-rw-r--r--lib/unicode/Is/M.pl2
-rw-r--r--lib/unicode/Is/Mc.pl2
-rw-r--r--lib/unicode/Is/Mirrored.pl2
-rw-r--r--lib/unicode/Is/Mn.pl2
-rw-r--r--lib/unicode/Is/N.pl2
-rw-r--r--lib/unicode/Is/Nd.pl2
-rw-r--r--lib/unicode/Is/No.pl2
-rw-r--r--lib/unicode/Is/P.pl2
-rw-r--r--lib/unicode/Is/Pd.pl2
-rw-r--r--lib/unicode/Is/Pe.pl2
-rw-r--r--lib/unicode/Is/Po.pl2
-rw-r--r--lib/unicode/Is/Print.pl2
-rw-r--r--lib/unicode/Is/Ps.pl2
-rw-r--r--lib/unicode/Is/Punct.pl2
-rw-r--r--lib/unicode/Is/S.pl2
-rw-r--r--lib/unicode/Is/Sc.pl2
-rw-r--r--lib/unicode/Is/Sm.pl2
-rw-r--r--lib/unicode/Is/So.pl2
-rw-r--r--lib/unicode/Is/Space.pl2
-rw-r--r--lib/unicode/Is/SylA.pl2
-rw-r--r--lib/unicode/Is/SylC.pl2
-rw-r--r--lib/unicode/Is/SylE.pl2
-rw-r--r--lib/unicode/Is/SylI.pl2
-rw-r--r--lib/unicode/Is/SylO.pl2
-rw-r--r--lib/unicode/Is/SylU.pl2
-rw-r--r--lib/unicode/Is/SylV.pl2
-rw-r--r--lib/unicode/Is/SylWA.pl2
-rw-r--r--lib/unicode/Is/SylWC.pl2
-rw-r--r--lib/unicode/Is/SylWE.pl2
-rw-r--r--lib/unicode/Is/SylWI.pl2
-rw-r--r--lib/unicode/Is/SylWV.pl2
-rw-r--r--lib/unicode/Is/Upper.pl2
-rw-r--r--lib/unicode/Is/Word.pl2
-rw-r--r--lib/unicode/Is/XDigit.pl2
-rw-r--r--lib/unicode/Is/Z.pl2
-rw-r--r--lib/unicode/Is/Zl.pl2
-rw-r--r--lib/unicode/Is/Zp.pl2
-rw-r--r--lib/unicode/Is/Zs.pl2
-rw-r--r--lib/unicode/Jamo.txt (renamed from lib/unicode/Jamo-2.txt)0
-rw-r--r--lib/unicode/JamoShort.pl2
-rw-r--r--lib/unicode/Name.pl2
-rw-r--r--lib/unicode/NamesList.html226
-rw-r--r--lib/unicode/Number.pl2
-rw-r--r--lib/unicode/ReadMe.txt33
-rw-r--r--lib/unicode/To/Digit.pl2
-rw-r--r--lib/unicode/To/Lower.pl2
-rw-r--r--lib/unicode/To/Title.pl2
-rw-r--r--lib/unicode/To/Upper.pl2
-rw-r--r--lib/unicode/UCD300.html (renamed from lib/unicode/Unicode.html)0
-rw-r--r--lib/unicode/Unicode3.html1988
-rwxr-xr-xlib/unicode/mktables.PL8
-rw-r--r--mg.c4
-rw-r--r--pp.c2
-rw-r--r--pp.h6
-rw-r--r--proto.h1
-rw-r--r--regexec.c743
-rwxr-xr-xt/io/open.t4
-rw-r--r--t/op/re_tests2
-rw-r--r--taint.c2
-rw-r--r--vms/subconfigure.com388
-rw-r--r--vms/vms.c5
214 files changed, 4278 insertions, 1608 deletions
diff --git a/Changes b/Changes
index 5303b96528..6409d35435 100644
--- a/Changes
+++ b/Changes
@@ -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
diff --git a/Configure b/Configure
index 26bc1f2a60..b448793952 100755
--- a/Configure
+++ b/Configure
@@ -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 " "
diff --git a/MANIFEST b/MANIFEST
index 483b3bbe97..2aa7eb2f6e 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -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
diff --git a/doio.c b/doio.c
index 8c8a77b9a5..4a0edbbbd2 100644
--- a/doio.c
+++ b/doio.c
@@ -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
diff --git a/embed.h b/embed.h
index 758a0c2bee..f0072874e7 100644
--- a/embed.h
+++ b/embed.h
@@ -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
diff --git a/embed.pl b/embed.pl
index b21f21fb94..7ce28d5e3a 100755
--- a/embed.pl
+++ b/embed.pl
@@ -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>@@&lt;tab&gt;0020&lt;tab&gt;BASIC LATIN&lt;tab&gt;007F<br>
+; this is a file comment (ignored)<br>
+0020&lt;tab&gt;SPACE<br>
+0021&lt;tab&gt;EXCLAMATION MARK<br>
+0022&lt;tab&gt;QUOTATION MARK<br>
+. . . <br>
+007F&lt;tab&gt;DELETE</p>
+
+<p>The semicolon (as first character), @ and &lt;tab&gt; 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&nbsp; SUBTITLE may occur after the first BLOCKHEADER. </p>
+
+<p>Only TITLE, SUBTITLE, SUBHEADER, PAGEBREAK, COMMENT_LINE,&nbsp; 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 &lt;tab&gt; 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 &lt;reserved&gt;
+</strong> // the CHAR is echoed followed by an icon for the
+ // reserved character and a fixed string e.g. &lt;reserved&gt;
+
+<strong>COMMMENT_LINE: &lt;tab&gt; &quot;*&quot; SP EXPAND_LINE
+</strong> // * is replaced by BULLET, output line as comment
+ <strong>&lt;tab&gt; EXPAND_LINE</strong>
+ // output line as comment
+
+<strong>ALIAS_LINE: &lt;tab&gt; &quot;=&quot; SP LINE
+</strong> // replace = by itself, output line as alias
+
+<strong>CROSS_REF: &lt;tab&gt; &quot;X&quot; SP EXPAND_LINE
+</strong> // X is replaced by a right arrow
+<strong> &lt;tab&gt; &quot;X&quot; SP &quot;(&quot; STRING SP &quot;-&quot; SP CHAR &quot;)&quot;
+</strong> // X is replaced by a right arrow
+ // the &quot;(&quot;, &quot;-&quot;, &quot;)&quot; are removed, the
+ // order of CHAR and STRING is reversed
+ // i.e. both inputs result in the same output
+
+<strong>IGNORED_LINE: &lt;tab&gt; &quot;;&quot; EXPAND_LINE
+EMPTY_LINE: LF
+</strong> // empty lines and file comments are ignored
+
+<strong>DECOMPOSITION: &lt;tab&gt; &quot;:&quot; EXPAND_LINE
+</strong> // replace ':' by EQUIV, expand line into
+ // decomposition
+
+<strong>COMPAT_MAPPING: &lt;tab&gt; &quot;#&quot; SP EXPAND_LINE
+</strong> // replace '#' by APPROX, output line as mapping
+
+<strong>NOTICE: &quot;@+&quot; &lt;tab&gt; LINE
+</strong> // skip '@+', output text as notice
+<strong> &quot;@+&quot; TAB * SP LINE
+</strong> // skip '@', output text as notice
+ // &quot;*&quot; 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: &quot;@@@+&quot; &lt;tab&gt; LINE
+</strong> // skip &quot;@@@+&quot;, output text as subtitle
+
+<strong>SUBHEADER: &quot;@&quot; &lt;tab&gt; LINE
+</strong> // skip '@', output line as text as column header
+
+<strong>BLOCKHEADER: &quot;@@&quot; &lt;tab&gt; BLOCKSTART &lt;tab&gt; BLOCKNAME &lt;tab&gt; BLOCKEND
+</strong> // skip &quot;@@&quot;, 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> &quot;@@&quot; &lt;tab&gt; BLOCKSTART &lt;tab&gt; BLOCKNAME COMMENT &lt;tab&gt; 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: &quot;@@&quot;</strong> // insert a (column) break
+
+<strong>TITLE: &quot;@@@&quot; &lt;tab&gt; LINE</strong>
+ // skip &quot;@@@&quot;, 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 &lt;circ&gt; x NBSP where &lt;circ&gt; 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: &quot;(&quot; NAME &quot;)&quot;
+ &quot;(&quot; NAME &quot;)&quot; &quot;*&quot;
+</strong>
+<strong>NAME</strong>: &lt;sequence of ASCII characters, except &quot;(&quot; or &quot;)&quot; &gt;
+<strong>STRING</strong>: &lt;sequence of Latin-1 characters&gt;
+<strong>CHAR</strong>: <strong>X X X X</strong>
+ <strong>| X X X X X X X X X</strong></small>
+<small><strong>X: &quot;0&quot;|&quot;1&quot;|&quot;2&quot;|&quot;3&quot;|&quot;4&quot;|&quot;5&quot;|&quot;6&quot;|&quot;7&quot;|&quot;8&quot;|&quot;9&quot;|&quot;A&quot;|&quot;B&quot;|&quot;C&quot;|&quot;D&quot;|&quot;E&quot;|&quot;F&quot;
+&lt;tab&gt;:</strong> &lt;sequence of one or more ASCII tab characters 0x09&gt;
+<strong>SP</strong>: &lt;ASCII 0x20&gt;
+<strong>LF</strong>: &lt;any sequence of ASCII 0x0A and 0x0D&gt;
+</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 &quot; is expanded, but only its glyph image is printed,&nbsp; 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 &quot;character types&quot; 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.,
+
+ &quot;1/5&quot; 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 &quot;mirrored&quot; character
+
+ in bidirectional text, this field has the value &quot;Y&quot;; otherwise &quot;N&quot;.
+
+ 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">&lt;font&gt;&nbsp;&nbsp;</td>
+
+ <td>A font variant (e.g. a blackletter form).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;noBreak&gt;&nbsp;&nbsp;</td>
+
+ <td>A no-break version of a space or hyphen.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;initial&gt;&nbsp;&nbsp;</td>
+
+ <td>An initial presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;medial&gt;&nbsp;&nbsp;</td>
+
+ <td>A medial presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;final&gt;&nbsp;&nbsp;</td>
+
+ <td>A final presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;isolated&gt;&nbsp;&nbsp;</td>
+
+ <td>An isolated presentation form (Arabic).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;circle&gt;&nbsp;&nbsp;</td>
+
+ <td>An encircled form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;super&gt;&nbsp;&nbsp;</td>
+
+ <td>A superscript form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;sub&gt;&nbsp;&nbsp;</td>
+
+ <td>A subscript form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;vertical&gt;&nbsp;&nbsp;</td>
+
+ <td>A vertical layout presentation form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;wide&gt;&nbsp;&nbsp;</td>
+
+ <td>A wide (or zenkaku) compatibility character.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;narrow&gt;&nbsp;&nbsp;</td>
+
+ <td>A narrow (or hankaku) compatibility character.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;small&gt;&nbsp;&nbsp;</td>
+
+ <td>A small variant form (CNS compatibility).</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;square&gt;&nbsp;&nbsp;</td>
+
+ <td>A CJK squared font variant.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;fraction&gt;&nbsp;&nbsp;</td>
+
+ <td>A vulgar fraction form.</td>
+
+ </tr>
+
+ <tr>
+
+ <td ALIGN="CENTER">&lt;compat&gt;&nbsp;&nbsp;</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 &quot;full decomposition&quot;) 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
+
+&quot;CAPITAL&quot; or &quot;SMALL&quot; 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
+
+&quot;339D SQUARE CM&quot;) 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 &quot;transparent&quot; 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&nbsp; decompositions for several Greek symbol letters: U+03D0..U+03D2, U+03D5,
+
+ U+03D6, U+03F0..U+03F2. </li>
+
+ <li>Removed&nbsp; 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 &quot;tonos&quot; 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 &quot;tonos&quot;; 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 &gt; Lo: U+0950, U+0AD0, U+0F00, U+0F88..U+0F8B </li>
+
+ <li>Po &gt; Lo: U+0E2F, U+0EAF, U+3006 </li>
+
+ <li>Lm &gt; Sk: U+309B, U+309C </li>
+
+ <li>Po &gt; Pc: U+30FB, U+FF65 </li>
+
+ <li>Ps/Pe &gt; Mn: U+0F3E, U+0F3F </li>
+
+ </ul>
+
+ </li>
+
+ <li>A series of bidi property changes for consistency. <ul>
+
+ <li>L &gt; ET: U+09F2, U+09F3 </li>
+
+ <li>ON &gt; L: U+3007 </li>
+
+ <li>L &gt; ON: U+0F3A..U+0F3D, U+037E, U+0387 </li>
+
+ </ul>
+
+ </li>
+
+ <li>Add case mapping: U+01A6 &lt;-&gt; 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
diff --git a/mg.c b/mg.c
index 0ea3560134..d2305311cb 100644
--- a/mg.c
+++ b/mg.c
@@ -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
{
diff --git a/pp.c b/pp.c
index 529fa9dcba..d977c34275 100644
--- a/pp.c
+++ b/pp.c
@@ -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 */
diff --git a/pp.h b/pp.h
index 2ff6f5e04e..ec701f3054 100644
--- a/pp.h
+++ b/pp.h
@@ -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
diff --git a/proto.h b/proto.h
index 5a01615c39..d950e9e1f5 100644
--- a/proto.h
+++ b/proto.h
@@ -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)
diff --git a/regexec.c b/regexec.c
index fa891c86f8..f1b35905d9 100644
--- a/regexec.c
+++ b/regexec.c
@@ -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
diff --git a/taint.c b/taint.c
index 24fd487d75..0f0ce98e7a 100644
--- a/taint.c
+++ b/taint.c
@@ -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##
$!
diff --git a/vms/vms.c b/vms/vms.c
index da76c35209..aee410d18d 100644
--- a/vms/vms.c
+++ b/vms/vms.c
@@ -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 {