From 069768bdb70fb3052599d3e70898a0ed0e1c31d2 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Mon, 9 Aug 2004 17:48:49 +0000 Subject: Import of stock perl 5.8.5 --- gnu/usr.bin/perl/AUTHORS | 1439 +++++------ gnu/usr.bin/perl/Changes5.8.3 | 2175 +++++++++++++++++ gnu/usr.bin/perl/Changes5.8.4 | 2490 ++++++++++++++++++++ gnu/usr.bin/perl/Cross/config.sh-arm-linux | 33 +- gnu/usr.bin/perl/META.yml | 5 +- gnu/usr.bin/perl/Makefile.micro | 3 +- gnu/usr.bin/perl/NetWare/Makefile | 4 +- gnu/usr.bin/perl/NetWare/config.wc | 2 - gnu/usr.bin/perl/NetWare/config_H.wc | 35 - gnu/usr.bin/perl/Porting/checkcase.pl | 26 + gnu/usr.bin/perl/Porting/config.sh | 49 +- gnu/usr.bin/perl/Porting/corecpan.pl | 69 + gnu/usr.bin/perl/README.aix | 4 +- gnu/usr.bin/perl/README.hpux | 94 +- gnu/usr.bin/perl/README.micro | 6 +- gnu/usr.bin/perl/README.vos | 37 +- gnu/usr.bin/perl/autodoc.pl | 18 +- gnu/usr.bin/perl/configure.com | 62 +- gnu/usr.bin/perl/embed.fnc | 13 +- gnu/usr.bin/perl/embedvar.h | 8 +- gnu/usr.bin/perl/epoc/config.sh | 1 - gnu/usr.bin/perl/epoc/createpkg.pl | 2 +- gnu/usr.bin/perl/ext/B/t/b.t | 5 + gnu/usr.bin/perl/ext/B/t/concise.t | 5 + gnu/usr.bin/perl/ext/B/t/o.t | 5 + gnu/usr.bin/perl/ext/B/t/showlex.t | 5 + gnu/usr.bin/perl/ext/B/t/terse.t | 5 + gnu/usr.bin/perl/ext/B/t/xref.t | 5 + gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL | 11 +- gnu/usr.bin/perl/ext/Errno/Errno_pm.PL | 4 +- gnu/usr.bin/perl/ext/List/Util/Changes | 10 + gnu/usr.bin/perl/ext/MIME/Base64/t/warn.t | 74 + gnu/usr.bin/perl/ext/NDBM_File/hints/linux.pl | 4 +- gnu/usr.bin/perl/ext/Socket/t/Socket.t | 20 +- gnu/usr.bin/perl/ext/Storable/t/HAS_HOOK.pm | 9 + gnu/usr.bin/perl/ext/Storable/t/HAS_OVERLOAD.pm | 14 + gnu/usr.bin/perl/ext/Storable/t/just_plain_nasty.t | 152 ++ gnu/usr.bin/perl/ext/Storable/t/make_overload.pl | 13 + gnu/usr.bin/perl/ext/Storable/t/threads.t | 62 + gnu/usr.bin/perl/ext/Time/HiRes/hints/solaris.pl | 3 + gnu/usr.bin/perl/ext/XS/APItest/t/push.t | 34 + gnu/usr.bin/perl/ext/re/t/re.t | 5 + gnu/usr.bin/perl/hints/aix_3.sh | 353 +++ gnu/usr.bin/perl/hints/aix_4.sh | 592 +++++ gnu/usr.bin/perl/hints/cygwin.sh | 13 + gnu/usr.bin/perl/hints/darwin.sh | 8 +- gnu/usr.bin/perl/hints/gnu.sh | 2 +- gnu/usr.bin/perl/hints/rhapsody.sh | 3 +- gnu/usr.bin/perl/intrpvar.h | 9 +- gnu/usr.bin/perl/lib/Carp.t | 2 +- gnu/usr.bin/perl/lib/Carp/Heavy.pm | 14 +- gnu/usr.bin/perl/lib/Config.t | 35 +- gnu/usr.bin/perl/lib/DB.t | 5 + gnu/usr.bin/perl/lib/DBM_Filter.pm | 605 +++++ gnu/usr.bin/perl/lib/DBM_Filter/Changes | 5 + gnu/usr.bin/perl/lib/DBM_Filter/compress.pm | 53 + gnu/usr.bin/perl/lib/DBM_Filter/encode.pm | 86 + gnu/usr.bin/perl/lib/DBM_Filter/int32.pm | 50 + gnu/usr.bin/perl/lib/DBM_Filter/null.pm | 52 + gnu/usr.bin/perl/lib/DBM_Filter/t/01error.t | 238 ++ gnu/usr.bin/perl/lib/DBM_Filter/t/02core.t | 720 ++++++ gnu/usr.bin/perl/lib/DBM_Filter/t/compress.t | 111 + gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t | 105 + gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t | 90 + gnu/usr.bin/perl/lib/DBM_Filter/t/null.t | 86 + gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t | 86 + gnu/usr.bin/perl/lib/DBM_Filter/utf8.pm | 52 + gnu/usr.bin/perl/lib/Dumpvalue.t | 5 + gnu/usr.bin/perl/lib/Exporter/Heavy.pm | 2 +- gnu/usr.bin/perl/lib/File/Find/t/find.t | 66 +- gnu/usr.bin/perl/lib/I18N/LangTags/Detect.pm | 237 ++ .../perl/lib/I18N/LangTags/t/01_about_verbose.t | 89 + gnu/usr.bin/perl/lib/I18N/LangTags/t/05_main.t | 98 + gnu/usr.bin/perl/lib/I18N/LangTags/t/07_listy.t | 30 + gnu/usr.bin/perl/lib/I18N/LangTags/t/10_http.t | 104 + gnu/usr.bin/perl/lib/I18N/LangTags/t/50_super.t | 88 + .../perl/lib/I18N/LangTags/t/55_supers_strict.t | 78 + gnu/usr.bin/perl/lib/I18N/LangTags/t/80_all_env.t | 115 + .../perl/lib/Locale/Maketext/t/01_about_verbose.t | 87 + gnu/usr.bin/perl/lib/Locale/Maketext/t/10_make.t | 34 + gnu/usr.bin/perl/lib/Locale/Maketext/t/20_get.t | 72 + gnu/usr.bin/perl/lib/Locale/Maketext/t/40_super.t | 79 + gnu/usr.bin/perl/lib/Locale/Maketext/t/50_super.t | 87 + gnu/usr.bin/perl/lib/Locale/Maketext/t/60_super.t | 31 + gnu/usr.bin/perl/lib/Locale/Maketext/t/90_utf8.t | 39 + gnu/usr.bin/perl/lib/Math/BigInt/t/_e_math.t | 111 + gnu/usr.bin/perl/lib/Net/Changes.libnet | 37 + gnu/usr.bin/perl/lib/Net/t/datasend.t | 146 ++ .../perl/lib/Pod/Perldoc/t/01_about_verbose.t | 87 + gnu/usr.bin/perl/lib/Pod/t/user.t | 104 + gnu/usr.bin/perl/lib/Test/t/05_about_verbose.t | 82 + gnu/usr.bin/perl/lib/Test/t/multiline.t | 47 + gnu/usr.bin/perl/lib/Unicode/UCD.pm | 3 +- gnu/usr.bin/perl/lib/Unicode/UCD.t | 24 +- gnu/usr.bin/perl/lib/charnames.pm | 28 +- gnu/usr.bin/perl/lib/charnames.t | 8 +- gnu/usr.bin/perl/lib/dbm_filter_util.pl | 68 + gnu/usr.bin/perl/lib/dumpvar.t | 5 + gnu/usr.bin/perl/lib/h2xs.t | 8 +- gnu/usr.bin/perl/lib/locale.t | 4 + gnu/usr.bin/perl/lib/open.pm | 8 +- gnu/usr.bin/perl/lib/overload.t | 5 + gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt | 4 +- gnu/usr.bin/perl/lib/unicore/Blocks.txt | 26 +- gnu/usr.bin/perl/lib/unicore/CaseFolding.txt | 8 +- .../perl/lib/unicore/HangulSyllableType.txt | 30 +- gnu/usr.bin/perl/lib/unicore/Index.txt | 214 +- gnu/usr.bin/perl/lib/unicore/Jamo.txt | 15 +- gnu/usr.bin/perl/lib/unicore/LineBreak.txt | 458 ++-- gnu/usr.bin/perl/lib/unicore/PropList.txt | 214 +- gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt | 263 ++- gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt | 65 +- gnu/usr.bin/perl/lib/unicore/README.perl | 41 +- gnu/usr.bin/perl/lib/unicore/ReadMe.txt | 40 +- gnu/usr.bin/perl/lib/unicore/Scripts.txt | 1704 +++++++++----- gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt | 6 +- gnu/usr.bin/perl/lib/unicore/UnicodeData.txt | 634 ++--- gnu/usr.bin/perl/lib/unicore/mktables | 472 +++- gnu/usr.bin/perl/lib/unicore/version | 2 +- gnu/usr.bin/perl/lib/utf8.pm | 73 +- gnu/usr.bin/perl/lib/utf8_heavy.pl | 103 +- gnu/usr.bin/perl/lib/vmsish.t | 28 +- gnu/usr.bin/perl/mpeix/nm | 6 +- gnu/usr.bin/perl/mpeix/relink | 2 +- gnu/usr.bin/perl/myconfig.SH | 2 +- gnu/usr.bin/perl/opnames.h | 2 +- gnu/usr.bin/perl/pad.c | 18 +- gnu/usr.bin/perl/perlapi.h | 6 +- gnu/usr.bin/perl/plan9/config_sh.sample | 2 - gnu/usr.bin/perl/pod.lst | 4 +- gnu/usr.bin/perl/pod/perl571delta.pod | 8 +- gnu/usr.bin/perl/pod/perl583delta.pod | 4 +- gnu/usr.bin/perl/pod/perl584delta.pod | 263 +++ gnu/usr.bin/perl/pod/perl585delta.pod | 257 ++ gnu/usr.bin/perl/pod/perldbmfilter.pod | 4 +- gnu/usr.bin/perl/pod/perlfork.pod | 2 - gnu/usr.bin/perl/pod/perlhack.pod | 87 + gnu/usr.bin/perl/pod/perllexwarn.pod | 4 +- gnu/usr.bin/perl/pod/perlopentut.pod | 12 +- gnu/usr.bin/perl/pod/perlpodspec.pod | 14 +- gnu/usr.bin/perl/pod/perlrequick.pod | 5 +- gnu/usr.bin/perl/pod/perlretut.pod | 4 +- gnu/usr.bin/perl/pod/perltodo.pod | 1004 ++------ gnu/usr.bin/perl/pod/perlunicode.pod | 122 +- gnu/usr.bin/perl/pod/perluniintro.pod | 20 +- gnu/usr.bin/perl/pod/podchecker.PL | 4 +- gnu/usr.bin/perl/pp_pack.c | 23 +- gnu/usr.bin/perl/pp_sort.c | 99 +- gnu/usr.bin/perl/t/comp/hints.t | 20 +- gnu/usr.bin/perl/t/comp/parser.t | 23 +- gnu/usr.bin/perl/t/comp/utf.t | 57 + gnu/usr.bin/perl/t/io/binmode.t | 6 +- gnu/usr.bin/perl/t/io/crlf.t | 7 +- gnu/usr.bin/perl/t/io/layers.t | 2 + gnu/usr.bin/perl/t/lib/1_compile.t | 6 +- gnu/usr.bin/perl/t/lib/strict/refs | 6 + gnu/usr.bin/perl/t/lib/strict/subs | 27 + gnu/usr.bin/perl/t/lib/strict/vars | 7 + gnu/usr.bin/perl/t/lib/warnings/op | 4 + gnu/usr.bin/perl/t/lib/warnings/toke | 17 + gnu/usr.bin/perl/t/op/args.t | 73 +- gnu/usr.bin/perl/t/op/concat.t | 31 +- gnu/usr.bin/perl/t/op/filetest.t | 71 +- gnu/usr.bin/perl/t/op/getpid.t | 8 +- gnu/usr.bin/perl/t/op/grep.t | 7 +- gnu/usr.bin/perl/t/op/localref.t | 16 +- gnu/usr.bin/perl/t/op/loopctl.t | 25 +- gnu/usr.bin/perl/t/op/utfhash.t | 9 +- gnu/usr.bin/perl/t/op/utftaint.t | 186 ++ gnu/usr.bin/perl/t/op/wantarray.t | 12 +- gnu/usr.bin/perl/t/run/switch0.t | 3 + gnu/usr.bin/perl/t/test.pl | 25 +- gnu/usr.bin/perl/t/uni/case.pl | 16 +- gnu/usr.bin/perl/t/uni/chomp.t | 88 + gnu/usr.bin/perl/t/uni/class.t | 166 ++ gnu/usr.bin/perl/t/win32/getosversion.t | 13 + gnu/usr.bin/perl/thread.h | 98 +- gnu/usr.bin/perl/uconfig.h | 75 +- gnu/usr.bin/perl/uconfig.sh | 14 +- gnu/usr.bin/perl/utf8.c | 39 +- gnu/usr.bin/perl/utils/perlivp.PL | 2 +- gnu/usr.bin/perl/vms/descrip_mms.template | 102 +- gnu/usr.bin/perl/vos/Changes | 4 + gnu/usr.bin/perl/win32/config.gc | 2 - gnu/usr.bin/perl/win32/config.vc64 | 2 - gnu/usr.bin/perl/win32/config_H.vc64 | 56 +- gnu/usr.bin/perl/win32/ext/Win32/Makefile.PL | 6 + gnu/usr.bin/perl/win32/ext/Win32/Win32.pm | 689 ++++++ gnu/usr.bin/perl/win32/ext/Win32/Win32.xs | 652 +++++ gnu/usr.bin/perl/win32/genmk95.pl | 2 + gnu/usr.bin/perl/win32/makeico.pl | 100 + gnu/usr.bin/perl/win32/perlexe.rc | 1 + 192 files changed, 17863 insertions(+), 3801 deletions(-) create mode 100644 gnu/usr.bin/perl/Changes5.8.3 create mode 100644 gnu/usr.bin/perl/Changes5.8.4 create mode 100644 gnu/usr.bin/perl/Porting/checkcase.pl create mode 100644 gnu/usr.bin/perl/Porting/corecpan.pl create mode 100644 gnu/usr.bin/perl/ext/List/Util/Changes create mode 100644 gnu/usr.bin/perl/ext/MIME/Base64/t/warn.t create mode 100644 gnu/usr.bin/perl/ext/Storable/t/HAS_HOOK.pm create mode 100644 gnu/usr.bin/perl/ext/Storable/t/HAS_OVERLOAD.pm create mode 100644 gnu/usr.bin/perl/ext/Storable/t/just_plain_nasty.t create mode 100644 gnu/usr.bin/perl/ext/Storable/t/make_overload.pl create mode 100644 gnu/usr.bin/perl/ext/Storable/t/threads.t create mode 100644 gnu/usr.bin/perl/ext/Time/HiRes/hints/solaris.pl create mode 100644 gnu/usr.bin/perl/ext/XS/APItest/t/push.t create mode 100644 gnu/usr.bin/perl/hints/aix_3.sh create mode 100644 gnu/usr.bin/perl/hints/aix_4.sh create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter.pm create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/Changes create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/compress.pm create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/encode.pm create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/int32.pm create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/null.pm create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/t/01error.t create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/t/02core.t create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/t/compress.t create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/t/null.t create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t create mode 100644 gnu/usr.bin/perl/lib/DBM_Filter/utf8.pm create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/Detect.pm create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/t/01_about_verbose.t create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/t/05_main.t create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/t/07_listy.t create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/t/10_http.t create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/t/50_super.t create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/t/55_supers_strict.t create mode 100644 gnu/usr.bin/perl/lib/I18N/LangTags/t/80_all_env.t create mode 100644 gnu/usr.bin/perl/lib/Locale/Maketext/t/01_about_verbose.t create mode 100644 gnu/usr.bin/perl/lib/Locale/Maketext/t/10_make.t create mode 100644 gnu/usr.bin/perl/lib/Locale/Maketext/t/20_get.t create mode 100644 gnu/usr.bin/perl/lib/Locale/Maketext/t/40_super.t create mode 100644 gnu/usr.bin/perl/lib/Locale/Maketext/t/50_super.t create mode 100644 gnu/usr.bin/perl/lib/Locale/Maketext/t/60_super.t create mode 100644 gnu/usr.bin/perl/lib/Locale/Maketext/t/90_utf8.t create mode 100644 gnu/usr.bin/perl/lib/Math/BigInt/t/_e_math.t create mode 100644 gnu/usr.bin/perl/lib/Net/Changes.libnet create mode 100644 gnu/usr.bin/perl/lib/Net/t/datasend.t create mode 100644 gnu/usr.bin/perl/lib/Pod/Perldoc/t/01_about_verbose.t create mode 100644 gnu/usr.bin/perl/lib/Pod/t/user.t create mode 100644 gnu/usr.bin/perl/lib/Test/t/05_about_verbose.t create mode 100644 gnu/usr.bin/perl/lib/Test/t/multiline.t create mode 100644 gnu/usr.bin/perl/lib/dbm_filter_util.pl create mode 100644 gnu/usr.bin/perl/pod/perl584delta.pod create mode 100644 gnu/usr.bin/perl/pod/perl585delta.pod create mode 100644 gnu/usr.bin/perl/t/comp/utf.t create mode 100644 gnu/usr.bin/perl/t/op/utftaint.t create mode 100644 gnu/usr.bin/perl/t/run/switch0.t create mode 100644 gnu/usr.bin/perl/t/uni/chomp.t create mode 100644 gnu/usr.bin/perl/t/uni/class.t create mode 100644 gnu/usr.bin/perl/t/win32/getosversion.t create mode 100644 gnu/usr.bin/perl/win32/ext/Win32/Makefile.PL create mode 100644 gnu/usr.bin/perl/win32/ext/Win32/Win32.pm create mode 100644 gnu/usr.bin/perl/win32/ext/Win32/Win32.xs create mode 100644 gnu/usr.bin/perl/win32/makeico.pl create mode 100644 gnu/usr.bin/perl/win32/perlexe.rc diff --git a/gnu/usr.bin/perl/AUTHORS b/gnu/usr.bin/perl/AUTHORS index 0d6c613d8b7..7eea705af8c 100644 --- a/gnu/usr.bin/perl/AUTHORS +++ b/gnu/usr.bin/perl/AUTHORS @@ -11,776 +11,805 @@ # is strictly forbidden. (Passive distribution with the Perl source # code kit is, of course, allowed.) -- -A. C. Yardley -Aaron B. Dossett -Aaron J. Mackey -Abe Timmerman -Abhijit Menon-Sen -Abigail -Achim Bohnet -Adam Kennedy -Adam Krolnik -Adam Milner +A. C. Yardley +Aaron B. Dossett +Aaron J. Mackey +Abe Timmerman +Abhijit Menon-Sen +Abigail +Achim Bohnet +Adam Kennedy +Adam Krolnik +Adam Milner Adam Spiers -Akim Demaille -Alan Burlison -Alan Champion -Alan Harder +Akim Demaille +Alan Burlison +Alan Champion +Alan Harder Alan Modra -Albert Chin-A-Young -Albert Dvornik -Alessandro Forghieri -Alex Gough -Alex Vandiver -Alexander Gough -Alexander Klimov -Alexander Smishlajev -Alexey Mahotkin -Alexey Tourbin -Alexey V. Barantsev -Allen Smith -Alain Barbet +Alan Ferrency +Albert Chin-A-Young +Albert Dvornik +Alessandro Forghieri +Alex Gough +Alex Vandiver +Alexander Gough +Alexander Klimov +Alexander Smishlajev +Alexey Mahotkin +Alexey Tourbin +Alexey V. Barantsev +Allen Smith +Alain Barbet Ambrose Kofi Laing -Ananth Kesari +Ananth Kesari Anders Jonhson -Andreas Klussmann -Andreas König -Andreas Schwab -Andrej Borsenkow -Andrew Bettison -Andrew Cohen -andrew deryabin -Andrew Hamm -Andrew M. Langmead -Andrew Pimlott -Andrew Vignaux -Andrew Wilcox -Andrey Sapozhnikov -Andy Bussey -Andy Dougherty -Anno Siegel -Anthony David -Anton Berezin -Anton Tagunov -Archer Sully -Arjen Laarhoven -Art Green -Artur Bergman -Autrijus Tang -Barrie Slaymaker +Andreas Klussmann +Andreas König +Andreas Schwab +Andrej Borsenkow +Andrew Bettison +Andrew Cohen +andrew deryabin +Andrew Hamm +Andrew M. Langmead +Andrew Pimlott +Andrew Vignaux +Andrew Wilcox +Andrey Sapozhnikov +Andy Bussey +Andy Dougherty +Andy Lester +Anno Siegel +Anthony David +Anton Berezin +Anton Tagunov +Archer Sully +Arjen Laarhoven +Art Green +Art Haas +Artur Bergman +Autrijus Tang +Barrie Slaymaker Barry Friedman -Ben Tilly -Benjamin Goldberg -Benjamin Holzman -Benjamin Low -Benjamin Stuhl -Benjamin Sugars -Bernard Quatermass -Bill Campbell -Bill Glicker -Billy Constantine -Blair Zajac -Bob Dalgleish -Boyd Gerber -Brad Appleton -Brad Howerter -Brad Hughes -Brad Lanam -Brendan O'Dea -Brent B. Powers -Brent Dax -Brian Callaghan -Brian Clarke +Ben Tilly +Benjamin Goldberg +Benjamin Holzman +Benjamin Low +Benjamin Stuhl +Benjamin Sugars +Bernard Quatermass +Bill Campbell +Bill Glicker +Billy Constantine +Blair Zajac +Bob Dalgleish +Bob Wilkinson +Boris Zentner +Boyd Gerber +Brad Appleton +Brad Howerter +Brad Hughes +Brad Lanam +Brendan O'Dea +Brent B. Powers +Brent Dax +Brian Callaghan +Brian Clarke Brian Grossman -Brian Harrison -Brian Ingerson -Brian Jepson +Brian Harrison +Brian Ingerson +Brian Jepson Brian Katzung -Brian McCauley -Brian Reichert -Brian S. Cashman -Bruce Barnett -Bruce J. Keeler -Bruce P. Schuck -Bud Huff -Byron Brummer -C Aditya -Calle Dybedahl -Carl Eklof -Carl M. Fongheiser -Carl Witty -Cary D. Renzema -Casey West +Brian McCauley +Brian Reichert +Brian S. Cashman +Bruce Barnett +Bruce J. Keeler +Bruce P. Schuck +Bud Huff +Byron Brummer +C Aditya +Calle Dybedahl +Carl Eklof +Carl M. Fongheiser +Carl Witty +Cary D. Renzema +Casey West Castor Fu -Chaim Frenkel -Charles Bailey -Charles F. Randall -Charles Lane -Charles Randall -Charles Wilson +Chaim Frenkel +Charles Bailey +Charles F. Randall +Charles Lane +Charles Randall +Charles Wilson Chaskiel M Grundman -Chip Salzenberg -Chris Ball -Chris Bongaarts -Chris Faylor -Chris Nandor +Chia-liang Kao +Chip Salzenberg +Chip Turner +chocolateboy +Chris Ball +Chris Bongaarts +Chris Faylor +Chris Nandor Chris Pepper -Chris Wick -Christian Kirsch -Christopher Chan-Nui -Christopher Davis -chromatic -Chuck D. Phillips -Chuck Phillips -Chunhui Teng -Clark Cooper -Claes Jacobsson -Clinton A. Pierce -Colin Kuskie -Colin McMillen -Colin Meyer -Colin Watson +Chris Wick +Christian Kirsch +Christopher Chan-Nui +Christopher Davis +chromatic +Chuck D. Phillips +Chuck Phillips +Chunhui Teng +Clark Cooper +Claes Jacobsson +Clinton A. Pierce +Colin Kuskie +Colin McMillen +Colin Meyer +Colin Watson Conrad Augustin -Conrad E. Kimball -Craig A. Berry -Craig Milo Rogers -Curtis Poe -Dale Amon -Damian Conway -Damon Atkins -Dan Boorstein +Conrad E. Kimball +Craig A. Berry +Craig Milo Rogers +Curtis Poe +Dale Amon +Damian Conway +Damon Atkins +Dan Boorstein Dan Brook -Dan Hale -Dan Kogai -Dan Schmidt -Dan Sugalski -Daniel Berger -Daniel Chetlin -Daniel Grisinger -Daniel Lieberman -Daniel Muińo -Daniel P. Berrange -Daniel S. Lewart -Daniel Yacob -Danny R. Faught -Danny Sadinoff -Darrell Kindred -Darrell Schiebel -Darren/Torin/Who Ever... +Dan Hale +Dan Kogai +Dan Schmidt +Dan Sugalski +Daniel Berger +Daniel Chetlin +Daniel Grisinger +Daniel Lieberman +Daniel Muińo +Daniel P. Berrange +Daniel S. Lewart +Daniel Yacob +Danny R. Faught +Danny Sadinoff +Darrell Kindred +Darrell Schiebel +Darren/Torin/Who Ever... Dave Bianchi -Dave Hartnoll -Dave Liney -Dave Nelson +Dave Hartnoll +Dave Liney +Dave Nelson Dave Paris -Dave Rolsky -Dave Schweisguth -David Billinghurst +Dave Rolsky +Dave Schweisguth +David Billinghurst David Campbell David Couture -David D. Kilzer -David Denholm -David Dyck -David F. Haertig +David D. Kilzer +David Denholm +David Dyck +David Cannings +David F. Haertig +David Favor David Filo -David Glasser -David H. Adler -David Hammen -David J. Fiander -David Kerry -David Mitchell -David Muir Sharnoff -david nicol -David R. Favor -David Sparks -David Starks-Browning -David Sundstrom -Davin Milun -Dean Roehrich -deekoo -Dennis Marsa -Diab Jerius -dLux -Dominic Dunlop -Dominique Dumont -Doug Campbell -Doug MacEachern -Douglas E. Wegscheid -Douglas Lankshear -Douglas Wilson -Dov Grobgeld -Drago Goricanec -Ed Mooring -Ed Peschko +David Glasser +David H. Adler +David Hammen +David J. Fiander +David Kerry +David Mitchell +David Muir Sharnoff +david nicol +David R. Favor +David Sparks +David Starks-Browning +David Sundstrom +Davin Milun +Dean Roehrich +deekoo +Dennis Marsa +DH +Diab Jerius +dLux +Dominic Dunlop +Dominique Dumont +Dominique Quatravaux +Doug Campbell +Doug MacEachern +Douglas E. Wegscheid +Douglas Lankshear +Douglas Wilson +Dov Grobgeld +Drago Goricanec +Ed Mooring +Ed Peschko Edmund Bacon -Edward Avis -Edward Moy -Edward Peschko -Elaine -HFB- Ashton -Elizabeth Mattijsen -Adrian M. Enache -Eric Arnold +Edward Avis +Edward Moy +Edward Peschko +Elaine -HFB- Ashton +Elizabeth Mattijsen +Adrian M. Enache +Eric Arnold Eric Amick -Eric Bartley -Eric E. Coe -Eric Fifer +Eric Bartley +Eric E. Coe +Eric Fifer Eric Melville +Eric Promislow Erich Rickheit -Eryq -Etienne Grossman -Eugene Alterman -Fabien Tassin -Felix Gallo -Fergal Daly +Eryq +Etienne Grossman +Eugene Alterman +Fabien Tassin +Felix Gallo +Fergal Daly Florent Guillaume Frank Crawford -Frank Ridderbusch -Frank Tobin -François Désarménien -Fréderic Chauveau -G. Del Merritt +Frank Ridderbusch +Frank Tobin +François Désarménien +Fréderic Chauveau +G. Del Merritt Gabe Schaffer -Garry T. Williams -Gary Clark -Gary Ng <71564.1743@compuserve.com> -Geoffrey F. Green -George Necula -Geraint A Edwards -Gerben Wierda -Gerd Knops -Gerrit P. Haase -Giles Lean -Gisle Aas -Gordon J. Miller -Grace Lee -Graham Barr -Graham TerMarsch -Greg Bacon -Greg Chapman +Garry T. Williams +Gary Clark +Gary L. Armstrong +Gary Ng <71564.1743@compuserve.com> +Geoffrey F. Green +Georg Schwarz +George Necula +Geraint A Edwards +Gerben Wierda +Gerd Knops +Gerrit P. Haase +Giles Lean +Gisle Aas +Gordon J. Miller +Grace Lee +Graham Barr +Graham TerMarsch +Greg Bacon +Greg Chapman Greg Earle Greg Kuperberg -Greg Seibert -Greg Ward -Gregor Chrupala -Gregory Martin Pfeil -Guenter Schmidt -Guido Flohr -Guruprasad S -Gurusamy Sarathy +Greg Matheson +Greg Seibert +Greg Ward +Gregor Chrupala +Gregory Martin Pfeil +Guenter Schmidt +Guido Flohr +Guruprasad S +Gurusamy Sarathy Gustaf Neumann -Guy Decoux -Gwyn Judd -H.J. Lu -H.Merijn Brand -Hal Morris -Hal Pomeranz -Hallvard B Furuseth -Hannu Napari -Hans de Graaff -Hans Ginzel -Hans Mulder -Hans Ranke -Harmon S. Nine -Harold O Morris -Harri Pasanen -Harry Edmon -Helmut Jarausch -Henrik Tougaard -Hershel Walters +Guy Decoux +Gwyn Judd +H.J. Lu +H.Merijn Brand +Hal Morris +Hal Pomeranz +Hallvard B Furuseth +Hannu Napari +Hans de Graaff +Hans Ginzel +Hans Mulder +Hans Ranke +Harmon S. Nine +Harri Pasanen +Harry Edmon +Helmut Jarausch +Henrik Tougaard +Hershel Walters Holger Bechtold Hrunting Jonhson -Horst von Brand -Hubert Feyrer -Hugo van der Sanden -Hunter Kelly -Huw Rogers -I. N. Golubev -Iain Truskett -Ian Maloney -Ian Phillipps -Ignasi Roca -Ilmari Karonen -Ilya Martynov -Ilya Sandler -Ilya Zakharevich -Inaba Hiroto -Indy Singh -insecure -Irving Reid -Ivan Kurmanov -J. David Blackstone -J. van Krieken -Jack Shirazi -Jacqui Caren -Jake Hamby -James -James A. Duncan -James FitzGibbon -James Jurach +Horst von Brand +Hubert Feyrer +Hugo van der Sanden +Hunter Kelly +Huw Rogers +I. N. Golubev +Iain Truskett +Ian Maloney +Ian Phillipps +Ignasi Roca +Ilmari Karonen +Ilya Martynov +Ilya Sandler +Ilya Zakharevich +Inaba Hiroto +Indy Singh +insecure +Irving Reid +Ivan Kurmanov +J. David Blackstone +J. van Krieken +Jack Shirazi +Jacqui Caren +Jake Hamby +James +James A. Duncan +James FitzGibbon +James Jurach Jamshid Afshar -Jan D. -Jan Dubois -Jan Pazdziora -Jan-Erik Karlsson -Jan-Pieter Cornet -Jared Rhine -Jari Aalto -Jarkko Hietaniemi -Jason A. Smith -Jason E. Stewart +Jan D. +Jan Dubois +Jan Pazdziora +Jan-Erik Karlsson +Jan-Pieter Cornet +Jared Rhine +Jari Aalto +Jarkko Hietaniemi +Jason A. Smith +Jason E. Stewart Jason Shirk -Jason Stewart -Jason Varsoke -Jay Hannah -Jay Rogers -JD Laub +Jason Stewart +Jason Varsoke +Jay Hannah +Jay Rogers +JD Laub Jeff Bouis -Jeff McDougal -Jeff Okamoto -Jeff Pinyan -Jeff Urlwin -Jeffrey Friedl -Jeffrey S. Haemer -Jens Hamisch -Jens T. Berger Thielemann -Jens Thomsen -Jens-Uwe Mager -Jeremy D. Zawodny -Jeremy H. Brown -Jeremy Madea -Jerome Abela -Jerrad Pierce -Jesús Quiroga -Jim Anderson -Jim Avera +Jeff McDougal +Jeff Okamoto +Jeff Pinyan +Jeff Urlwin +Jeffrey Friedl +Jeffrey S. Haemer +Jens Hamisch +Jens T. Berger Thielemann +Jens Thomsen +Jens-Uwe Mager +Jeremy D. Zawodny +Jeremy H. Brown +Jeremy Madea +Jerome Abela +Jerrad Pierce +Jesús Quiroga +Jim Anderson +Jim Avera Jim Balter -Jim Cromie -Jim Meyering -Jim Miner +Jim Cromie +Jim Meyering +Jim Miner Jim Richardson +Jim Schneider Joachim Huober -Jochen Wiedmann -Joe Buehler -Joe McMahon -Joe Orton -Joe Schaefer -Joe Smith -Joel Rosi-Schwartz -Joerg Porath +Jochen Wiedmann +Joe Buehler +Joe McMahon +Joe Orton +Joe Schaefer +Joe Smith +Joel Rosi-Schwartz +Joerg Porath Joergen Haegg Johan Holtman -Johan Vromans -Johann Klasek -John Bley -John Borwick -John Cerney -John D Groenveld -John Goodyear -John Hasstedt -John Holdsworth -John Hughes -John Kristian -John L. Allen -John Macdonald -John Nolan -John P. Linderman -John Peacock -John Pfuntner -John Poltorak +Johan Vromans +Johann Klasek +John Bley +John Borwick +John Cerney +John D Groenveld +John Goodyear +John Hasstedt +John Holdsworth +John Hughes +John Kristian +John L. Allen +John Macdonald +John Nolan +John P. Linderman +John Peacock +John Pfuntner +John Poltorak John Rowe -John Salinas -John Stoffel -John Stumbles -John Tobey -Johnny Lam -Jon Eveland -Jon Gunnip -Jon Orwant -Jonathan Biggar -Jonathan D Johnston -Jonathan Fine -Jonathan I. Kamens -Jonathan Roy -Jonathan Stowe -Jos I. Boumans -Jose Auguste-Etienne -Joseph N. Hall -Joseph S. Myers -Joshua E. Rodd -Joshua Pritikin -Joost van Baal -JT McDuffie -Juan Gallego -Juerd Waalboer -Juha Laiho -Julian Yip -Jungshik Shin -Justin Banks -Jörg Walter -Ka-Ping Yee -Karl Glazebrook -Karl Heuer -Karl Simon Berg -Karsten Sperling -Kaveh Ghazi -Kay Röpke -KAWAI Takanori -Keith Neufeld -Keith Thompson -Keith Thompson -Ken Estes -Ken Fox -Ken MacLeod +John Salinas +John Stoffel +John Stumbles +John Tobey +Johnny Lam +Jon Eveland +Jon Gunnip +Jon Orwant +Jonathan Biggar +Jonathan D Johnston +Jonathan Fine +Jonathan I. Kamens +Jonathan Roy +Jonathan Stowe +Jos I. Boumans +Jose Auguste-Etienne +Joseph N. Hall +Joseph S. Myers +Joshua E. Rodd +Joshua Pritikin +Joost van Baal +JT McDuffie +Juan Gallego +Juerd Waalboer +Juha Laiho +Julian Yip +Jungshik Shin +Justin Banks +Jörg Walter +Ka-Ping Yee +Karl Glazebrook +Karl Heuer +Karl Simon Berg +Karsten Sperling +Kaveh Ghazi +Kay Röpke +KAWAI Takanori +Keith Neufeld +Keith Thompson +Keith Thompson +Ken Estes +Ken Fox +Ken MacLeod Ken Neighbors -Ken Shan -Ken Williams -Kenneth Albanowski -Kenneth Duda -Keong Lim -Kevin Chase -Kevin O'Gorman -Kevin Ruscoe -Kevin White +Ken Shan +Ken Williams +Kenneth Albanowski +Kenneth Duda +Keong Lim +Kevin Chase +Kevin O'Gorman +Kevin Ruscoe +Kevin White Kim Frutiger -Kingpin -Kirrily Robert -Kragen Sitaker -Krishna Sethuraman -Kurt D. Starsinic +Kingpin +Kirrily Robert +Kragen Sitaker +Krishna Sethuraman +Kurt D. Starsinic Kyriakos Georgiou -Larry Parmelee +Larry Parmelee Larry Schuler -Larry Schwimmer -Larry Shatzer -Larry W. Virden -Larry Wall -Lars Hecking -Laszlo Molnar -Leif Huhn -Len Johnson -Leon Brocard -Les Peters -Lincoln D. Stein -Lionel Cons -Luc St-Louis +Larry Schwimmer +Larry Shatzer +Larry W. Virden +Larry Wall +Lars Hecking +Laszlo Molnar +Leif Huhn +Len Johnson +Leon Brocard +Les Peters +Lincoln D. Stein +Lionel Cons +Luc St-Louis Luca Fini Lukas Mai -Lupe Christoph -Luther Huffman -M. J. T. Guy -Major Sébastien -Makoto MATSUSHITA -Malcolm Beattie -Marc Lehmann -Marc Paquette -Marcel Grunauer -Marek Rouchal -Mark A Biggar -Marcus Holland-Moritz -Mark A. Hershberger -Mark Bixby -Mark Dickinson -Mark Fisher +Lupe Christoph +Luther Huffman +M. J. T. Guy +Major Sébastien +Makoto MATSUSHITA +Malcolm Beattie +Manuel Valente +Marc Lehmann +Marc Paquette +Marcel Grunauer +Marek Rouchal +Mark A Biggar +Marcus Holland-Moritz +Mark A. Hershberger +Mark Bixby +Mark Dickinson +Mark Fisher +Mark Fowler Mark Hanson -Mark J. Reed -Mark K Trettin -Mark Kaehny -Mark Kettenis -Mark Klein -Mark Knutsen -Mark Kvale -Mark Leighton Fisher -Mark Murray -Mark P. Lutz -Mark Pease -Mark Pizzolato -Mark R. Levinson -Mark-Jason Dominus -Martien Verbruggen -Martijn Koster -Martin Husemann -Martin J. Bligh -Martin Jost -Martin Lichtin -Martin Plechsmid -Martti Rahkila -Marty Lucich -Marty Pauley -Martyn Pearce -Masahiro KAJIURA -Mathias Koerber +Mark J. Reed +Mark K Trettin +Mark Kaehny +Mark Kettenis +Mark Klein +Mark Knutsen +Mark Kvale +Mark Leighton Fisher +Mark Mielke +Mark Murray +Mark P. Lutz +Mark Pease +Mark Pizzolato +Mark R. Levinson +Mark-Jason Dominus +Martien Verbruggen +Martijn Koster +Martin Husemann +Martin J. Bligh +Martin Jost +Martin Lichtin +Martin Plechsmid +Martin Pool +Martti Rahkila +Marty Lucich +Marty Pauley +Martyn Pearce +Masahiro KAJIURA +Mathias Koerber Matt Kimball -Matt Sergeant -Matthew Black -Matthew Green -Matthew Sachs -Matthew T Harden -Matthias Ulrich Neeracher -Matthias Urlichs -Mattia Barbon -Maurizio Loreti -Max Baker -Merijn Broeren -Michael A Chase -Michael Carman -Michael Cook -Michael De La Rue -Michael Engel -Michael G Schwern -Michael H. Moran -Michael Mahan -Michael Schroeder -Michael Somos -Michael Stevens +Matt Sergeant +Matthew Black +Matthew Green +Matthew Sachs +Matthew T Harden +Matthias Ulrich Neeracher +Matthias Urlichs +Mattia Barbon +Maurizio Loreti +Max Baker +Merijn Broeren +Michael A Chase +Michael Carman +Michael Cook +Michael De La Rue +Michael Engel +Michael G Schwern +Michael H. Moran +Michael Mahan +Michael Schroeder +Michael Somos +Michael Stevens Michele Sardo -Mik Firestone -Mike -Mike Fletcher -Mike Giroux -Mike Hopkirk -Mike Mestnik -Mike Pomraning +Mik Firestone +Mike +Mike Fletcher +Mike Giroux +Mike Hopkirk +Mike Mestnik +Mike Pomraning Mike Rogers -Mike Schilli -Mike Stok -Mike W Ellwood -Mikhail Zabaluev -Milton L. Hankins -Murray Nesbitt -Nathan Kurz -Nathan Torkington -Neale Ferguson -Neil Bowers -Nicholas Clark +Mike Schilli +Mike Stok +Mike W Ellwood +Mikhail Zabaluev +Milton L. Hankins +Murray Nesbitt +Nathan Kurz +Nathan Torkington +Neale Ferguson +Neil Bowers +Neil Watkiss +Nicholas Clark Nicholas Oxhřj Nick Duffek Nick Gianniotis -Nick Ing-Simmons -Nick Williams -Nikola Knezevic -Norbert Pueschel -Norton T. Allen +Nick Ing-Simmons +Nick Williams +Nigel Sandever +Nikola Knezevic +Norbert Pueschel +Norton T. Allen OKAIE Yutaka -Olaf Flebbe -Olaf Titz -Ollivier Robert -Owen Taylor -parv -Patrick Hayes -Patrick O'Brien -Paul A Sand -Paul David Fardy -Paul Eggert -Paul Green -Paul Hoffman -Paul Holser -Paul Johnson -Paul Lindner -Paul Marquess -Paul Moore -Paul Rogers -Paul Saab -Paul Schinder -Per Einar Ellefsen +Olaf Flebbe +Olaf Titz +Olli Savia +Ollivier Robert +Owen Taylor +parv +Patrick Hayes +Patrick O'Brien +Paul A Sand +Paul David Fardy +Paul Eggert +Paul Fenwick +Paul Green +Paul Hoffman +Paul Holser +Paul Johnson +Paul Lindner +Paul Marquess +Paul Moore +Paul Rogers +Paul Saab +Paul Schinder +Per Einar Ellefsen Peter BARABAS -Pete Peterson -Peter Chines -Peter Gessner -Peter Gordon -Peter Haworth -Peter J. Farley III +Pete Peterson +Peter Chines +Peter Gessner +Peter Gordon +Peter Haworth +Peter J. Farley III Peter Jaspers-Fayer -Peter O'Gorman -Peter Prymmer -Peter Scott -Peter van Heusden -Peter Wolfe -Petter Reinholdtsen -Phil Lobbes -Philip Hazel -Philip Newton -Piers Cawley -Piotr Klaban -Pixel -Pradeep Hodigere -Prymmer/Kahn -Quentin Fennessy -Radu Greab -Rafael Garcia-Suarez -Rainer Keuchel -Rainer Orth -Rajesh Vaidheeswarran -Ralf S. Engelschall -Randal L. Schwartz -Randall Gellens -Randolf Werner -Randy J. Ray +Peter O'Gorman +Peter Prymmer +Peter Scott +Peter van Heusden +Peter Wolfe +Petter Reinholdtsen +Phil Lobbes +Philip Hazel +Philip Newton +Piers Cawley +Piotr Klaban +Pixel +Pradeep Hodigere +Prymmer/Kahn +Quentin Fennessy +Radu Greab +Rafael Garcia-Suarez +Rainer Keuchel +Rainer Orth +Rajesh Vaidheeswarran +Ralf S. Engelschall +Randal L. Schwartz +Randall Gellens +Randolf Werner +Randy J. Ray Randy W. Sims -Raphael Manfredi -Raul Dias -Raymund Will -Redvers Davies -Reini Urban -Rex Dieter -Rich Morin -Rich Salz -Richard A. Wells -Richard Clamp -Richard Foley -Richard Hatch -Richard Hitt -Richard Kandarian -Richard L. England -Richard L. Maus, Jr. -Richard Soderberg -Richard Yeh -Rick Delaney +Raphael Manfredi +Raul Dias +Raymund Will +Redvers Davies +Reini Urban +Rex Dieter +Rich Morin +Rich Salz +Richard A. Wells +Richard Clamp +Richard Foley +Richard Hatch +Richard Hitt +Richard Kandarian +Richard L. England +Richard L. Maus, Jr. +Richard Soderberg +Richard Yeh +Rick Delaney Rick Pluta Rickard Westman -Rob Brown -Rob Henderson -Rob Napier -Robert Partington -Robert Sanders -Robert Spier -Robin Barker -Robin Houston -Rocco Caputo -Roderick Schertler -Rodger Anderson -Ronald F. Guilmette -Ronald J. Kimball -Ruben Schattevoy -Rujith S. de Silva -Russ Allbery -Russell Fulton +Rob Brown +Rob Henderson +Rob Napier +Robert Partington +Robert Sanders +Robert Spier +Robin Barker +Robin Houston +Rocco Caputo +Roderick Schertler +Rodger Anderson +Ronald F. Guilmette +Ronald J. Kimball +Ruben Schattevoy +Rujith S. de Silva +Russ Allbery +Russell Fulton Russell Mosemann -Ryan Herbert -SADAHIRO Tomoyuki -SAKAI Kiyotaka -Salvador Fandińo -Sam Tregar -Samuli Kärkkäinen -Schuyler Erle -Scott Bronson -Scott Gifford -Scott Henry -Scott L. Miller -Sean Dague -Sean Davis -Sean M. Burke -Sean Robinson -Sean Sheedy -Sebastian Wittmeier -Sebastien Barre -Shigeya Suzuki -Shimpei Yamashita -Shishir Gundavaram -Shlomi Fish -Simon Cozens -Simon Glover +Ryan Herbert +SADAHIRO Tomoyuki +SAKAI Kiyotaka +Salvador Fandińo +Sam Tregar +Sam Vilain +Samuli Kärkkäinen +Schuyler Erle +Scott A Crosby +Scott Bronson +Scott Gifford +Scott Henry +Scott L. Miller +Sean Dague +Sean Davis +Sean M. Burke +Sean Robinson +Sean Sheedy +Sebastian Wittmeier +Sebastien Barre +Shigeya Suzuki +Shimpei Yamashita +Shishir Gundavaram +Shlomi Fish +Simon Cozens +Simon Glover Simon Leinen -Simon Parsons -Slaven Rezic -Spider Boardman -Stas Bekman -Steffen Mueller -Stéphane Payrard -Stephanie Beals -Stephen Clouse -Stephen McCamant -Stephen O. Lidie -Stephen P. Potter -Stephen Zander -Steve A Fink -Steve Grazzini -Steve Hay -Steve Kelem -Steve McDougall -Steve Nielsen +Simon Parsons +Slaven Rezic +Solar Designer +Spider Boardman +Stas Bekman +Steffen Mueller +Stéphane Payrard +Stephanie Beals +Stephen Clouse +Stephen McCamant +Stephen O. Lidie +Stephen P. Potter +Stephen Zander +Steve A Fink +Steve Grazzini +Steve Hay +Steve Kelem +Steve McDougall +Steve Nielsen Steve Pearlmutter Steve Vinoski -Steven Hirsch -Steven Knight -Steven Morlock -Steven N. Hirsch -Steven Parkes -Stian Seeberg -Sven Verdoolaege -SynaptiCAD, Inc. -Takis Psarogiannakopoulos +Steven Hirsch +Steven Knight +Steven Morlock +Steven N. Hirsch +Steven Parkes +Stian Seeberg +Sven Verdoolaege +SynaptiCAD, Inc. +Takis Psarogiannakopoulos Taro KAWAGISHI -Tassilo von Parseval -Tatsuhiko Miyagawa -Ted Ashton -Ted Law -Tels -Teun Burgers -Thad Floryan -Thomas Bowditch -Thomas Conté -Thomas Dorner +Tassilo von Parseval +Tatsuhiko Miyagawa +Ted Ashton +Ted Law +Tels +Teun Burgers +Thad Floryan +Thomas Bowditch +Thomas Conté +Thomas Dorner Thomas Kofler Thomas König -Thomas Wegner -Tim Adye -Tim Ayers -Tim Bunce -Tim Conrow -Tim Freeman -Tim Jenness -Tim Mooney -Tim Sweetman -Tim Witham -Timur I. Bakeyev -Tkil -Todd C. Miller -Todd T. Fries -Tom Bates -Tom Brown +Thomas Wegner +Tim Adye +Tim Ayers +Tim Bunce +Tim Conrow +Tim Freeman +Tim Jenness +Tim Mooney +Tim Sweetman +Tim Witham +Timur I. Bakeyev +Tkil +Todd C. Miller +Todd T. Fries +Tom Bates +Tom Brown Tom Dinger -Tom Christiansen -Tom Horsley -Tom Hughes -Tom Phoenix -Tom Spindler -Tony Bowden +Tom Christiansen +Tom Horsley +Tom Hughes +Tom Phoenix +Tom Spindler +Ton Hospel +Tony Bowden Tony Camas -Tony Cook -Tony Sanders -Tor Lillqvist -Torsten Foertsch -Trevor Blackwell -Tuomas J. Lukka -Tye McQueen -Ulrich Kunitz -Ulrich Pfeifer -Vadim Konovalov -Valeriy E. Ushakov -Ville Skyttä -Vishal Bhatia -Vlad Harchev -Vladimir Alexiev -W. Phillip Moore -Walt Mankowski -Walter Briscoe -Warren Hyde -Warren Jones -Wayne Berke -Wayne Scott -Wayne Thompson -Wilfredo Sánchez -William J. Middleton -William Mann -William R Ward -William Setzer -William Williams -Winfried König -Wolfgang Laun -Xavier Noria +Tony Cook +Tony Sanders +Tor Lillqvist +Torsten Foertsch +Trevor Blackwell +Tuomas J. Lukka +Tye McQueen +Ulrich Kunitz +Ulrich Pfeifer +Vadim Konovalov +Valeriy E. Ushakov +Ville Skyttä +Vishal Bhatia +Vlad Harchev +Vadim Konovalov +Vladimir Alexiev +W. Phillip Moore +Walt Mankowski +Walter Briscoe +Warren Hyde +Warren Jones +Wayne Berke +Wayne Scott +Wayne Thompson +Wilfredo Sánchez +William J. Middleton +William Mann +William R Ward +William Setzer +William Williams +Winfried König +Wolfgang Laun +Xavier Noria Yary Hluchan -Yasushi Nakajima -Yitzchak Scott-Thoennes -Yutaka OIWA +Yasushi Nakajima +Yitzchak Scott-Thoennes +Yutaka OIWA Yutao Feng -Yves Orton -Zachary Miller +Yves Orton +Zachary Miller diff --git a/gnu/usr.bin/perl/Changes5.8.3 b/gnu/usr.bin/perl/Changes5.8.3 new file mode 100644 index 00000000000..57f0664ea05 --- /dev/null +++ b/gnu/usr.bin/perl/Changes5.8.3 @@ -0,0 +1,2175 @@ +Please note: This file provides a complete, temporally ordered log of +changes that went into every version of Perl. If you'd like more +detailed information, please consult the comments in the individual +patches posted to the perl5-porters mailing list. Patches for each +individual change may also be obtained through ftp and rsync--see +pod/perlhack.pod for the details. + +For information on what's new in this release, see pod/perldelta.pod. + +[The "CAST AND CREW" list has been moved to AUTHORS.] + +NOTE: Each change entry shows the change number; who checked it into the +repository; when; description of the change; which branch the change +happened in; and the affected files. The file lists have a short symbolic +indicator: + + ! modified + + added + - deleted + +> branched (from elsewhere) + !> merged changes (from elsewhere) + +The Message-Ids in the change entries refer to the email messages sent +to the perl5-porters mailing list. You can retrieve the messages for +example from http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ + +-------------- +Version v5.8.3 Maintenance release working toward v5.8.3 +-------------- +____________________________________________________________________________ +____________________________________________________________________________ +[ 22151] By: nicholas on 2004/01/14 17:54:36 + Log: Integrate: + [ 22149] + Subject: Doc patches for File::Find + From: Andy Lester + Date: Mon, 12 Jan 2004 00:10:50 -0600 + Message-Id: <20040112061050.GB7308@petdance.com> + + [ 22150] + Bump version number as file has changed since 5.8.2 + Branch: maint-5.8/perl + !> lib/File/Find.pm +____________________________________________________________________________ +[ 22148] By: nicholas on 2004/01/14 16:53:02 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes +____________________________________________________________________________ +[ 22147] By: nicholas on 2004/01/14 16:51:39 + Log: Update sample config to 5.8.3 + Branch: maint-5.8/perl + ! Porting/config.sh Porting/config_H +____________________________________________________________________________ +[ 22146] By: nicholas on 2004/01/14 16:32:27 + Log: Subject: arm patches to rc1 + From: Redvers Davies + Message-Id: <1073949147.10300.143.camel@ragefire> + Date: Mon, 12 Jan 2004 18:12:27 -0500 + Branch: maint-5.8/perl + ! Cross/Makefile Cross/Makefile.SH.patch +____________________________________________________________________________ +[ 22145] By: nicholas on 2004/01/14 15:14:51 + Log: All pigs are fed, watered and ready to fly. + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 22144] By: nicholas on 2004/01/14 14:48:32 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22143] By: nicholas on 2004/01/14 14:47:49 + Log: We're planning on making history today. Mind you, not that much - + only 1 line. + Branch: maint-5.8/perl + ! pod/perlhist.pod +____________________________________________________________________________ +[ 22142] By: nicholas on 2004/01/14 14:45:07 + Log: Mention that bug 24846 is fixed (utf8 join) + Branch: maint-5.8/perl + ! pod/perl583delta.pod +____________________________________________________________________________ +[ 22141] By: nicholas on 2004/01/14 14:40:59 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22140] By: nicholas on 2004/01/14 14:37:50 + Log: rebuild pod/perltoc.pod + Branch: maint-5.8/perl + ! pod/perltoc.pod +____________________________________________________________________________ +[ 22139] By: nicholas on 2004/01/14 14:34:46 + Log: Note that I failed to integrate the suidperl patch. me-- + Branch: maint-5.8/perl + ! pod/perl583delta.pod +____________________________________________________________________________ +[ 22138] By: nicholas on 2004/01/14 13:51:23 + Log: Revert 21936 (which solves leaks with threads and weak references) + because it can introduce new SEGVs, and I'd prefer to ship with + the same bugs as 5.8.2, rather than different bugs. + Same bugs feels like the lesser of two evils. + Branch: maint-5.8/perl + ! mg.c sv.c +____________________________________________________________________________ +[ 22137] By: nicholas on 2004/01/14 13:20:47 + Log: Integrate CGI::Fast and CGI::Util from CGI 3.03 + (just version number changes) + I don't want to integratre CGI.pm 3.03 as it also has functionality + changes, and is less than 48 hours old. + Branch: maint-5.8/perl + !> lib/CGI/Fast.pm lib/CGI/Util.pm +____________________________________________________________________________ +[ 22135] By: nicholas on 2004/01/14 12:25:57 + Log: Some more updates + Branch: maint-5.8/perl + ! pod/perl583delta.pod +____________________________________________________________________________ +[ 22134] By: nicholas on 2004/01/13 23:07:41 + Log: Integrate: + [ 22133] + Add VMS to the list of "don't fork" OSes + [In the most simple way possible. Fix this properly post 5.8.3 + to use $Config{d_fork} or something more robust] + Branch: maint-5.8/perl + !> ext/threads/shared/t/wait.t +____________________________________________________________________________ +[ 22132] By: nicholas on 2004/01/13 21:55:59 + Log: Integrate: + [ 21644] + Document the fact that keys() and values() are optimized + for void context (as suggested by Liz.) + + [ 22108] + documentation nit + + [ 22125] + Document usage of $_ and pos() inside /(?{...})/. + (see change #2367.) + Branch: maint-5.8/perl + !> pod/perlfunc.pod pod/perlop.pod pod/perlre.pod +____________________________________________________________________________ +[ 22131] By: nicholas on 2004/01/13 21:16:27 + Log: Back out 22144. + (Craig Berry informs us that the official name is + "OpenVMS Industry Standard 64" + which may be shortened to "OpenVMS I64" + Bah. Marketrdroids) + Branch: maint-5.8/perl + ! pod/perl583delta.pod +____________________________________________________________________________ +[ 22127] By: nicholas on 2004/01/13 08:55:10 + Log: Integrate: + [ 22122] + Subject: Re: 5.8.3-RC1, ext/threads/shared/t/wait still hanging + From: Mike Pomraning + Message-ID: + Date: Mon, 12 Jan 2004 12:41:52 -0600 (CST) + Branch: maint-5.8/perl + !> ext/threads/shared/t/wait.t +____________________________________________________________________________ +[ 22118] By: nicholas on 2004/01/12 12:43:13 + Log: Integrate: + [ 22117] + Subject: Re: [perl #24846] [PATCH] Apparent utf8 bug in join() in 5.8.[012] + From: SADAHIRO Tomoyuki + Date: Mon, 12 Jan 2004 11:19:37 +0900 + Message-Id: <20040112111007.EB69.BQW10602@nifty.com> + Branch: maint-5.8/perl + !> doop.c t/op/join.t +____________________________________________________________________________ +[ 22116] By: nicholas on 2004/01/11 23:55:36 + Log: Integrate: + [ 22115] + Subject: Re: 5.8.3-RC1, ext/threads/shared/t/wait still hanging + From: Mike Pomraning + Message-ID: + Date: Sun, 11 Jan 2004 16:24:18 -0600 (CST) + Branch: maint-5.8/perl + !> ext/threads/shared/t/wait.t +____________________________________________________________________________ +[ 22114] By: nicholas on 2004/01/11 23:27:27 + Log: Typo spotted by Jarkko + Branch: maint-5.8/perl + ! pod/perl583delta.pod +____________________________________________________________________________ +[ 22111] By: nicholas on 2004/01/11 19:57:50 + Log: Subject: Re: [PATCH win32/makefile.mk] (was Re: 5.8.3 RC1) + From: Abe Timmerman + Message-Id: <200401111813.40829.abe@ztreet.demon.nl> + Date: Sun, 11 Jan 2004 18:13:40 +0100 + + plus revert 22092 and 22080 + Branch: maint-5.8/perl + ! pod/buildtoc win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 22105] By: nicholas on 2004/01/09 22:10:43 + Log: Integrate: + [ 22104] + Bah. Makefile.PL still tests the sub-MANIFEST + Branch: maint-5.8/perl + !> ext/Storable/MANIFEST +____________________________________________________________________________ +[ 22099] By: nicholas on 2004/01/08 16:52:35 + Log: Update META.yml + ext/threads and ext/PerlIO now aren't in the list - is this correct? + Branch: maint-5.8/perl + ! META.yml +____________________________________________________________________________ +[ 22098] By: nicholas on 2004/01/08 15:24:15 + Log: Integrate: + [ 22096] + Subject: [PATCH pod/perlhist.pod] Mention 5.8.3-RC1 + From: Abigail + Message-ID: <20040107230027.GC393@abigail.nl> + Date: Thu, 8 Jan 2004 00:00:27 +0100 + Branch: maint-5.8/perl + !> pod/perlhist.pod +____________________________________________________________________________ +[ 22097] By: nicholas on 2004/01/08 14:44:17 + Log: That was RC1. With some bonus bits + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 22095] By: nicholas on 2004/01/08 13:13:10 + Log: Remove duplicated entries, spotted by Enache Adrian + Branch: maint-5.8/perl + ! Changes +____________________________________________________________________________ +[ 22094] By: nicholas on 2004/01/08 13:09:12 + Log: Fixes from Petras Kudaras and Gisle Aas, plus document the addition + to perldiag.pod + Branch: maint-5.8/perl + ! pod/perl583delta.pod +____________________________________________________________________________ +[ 22093] By: nicholas on 2004/01/08 12:46:09 + Log: Graham says that the search.cpan.org pod finder hashes on name + The 4 files all thinking they are perldelta.pod confuses it. + Branch: maint-5.8/perl + ! pod/perl581delta.pod pod/perl582delta.pod pod/perl58delta.pod +____________________________________________________________________________ +[ 22092] By: nicholas on 2004/01/08 12:33:11 + Log: Subject: Re: [PATCH win32/makefile.mk] (was Re: 5.8.3 RC1) + From: Abe Timmerman + Message-Id: <200401080156.01280.abe@ztreet.demon.nl> + Date: Thu, 8 Jan 2004 01:56:01 +0100 + Branch: maint-5.8/perl + ! win32/makefile.mk +____________________________________________________________________________ +[ 22090] By: nicholas on 2004/01/07 13:30:14 + Log: Correct timestamp on ext/IO/IO.xs + Branch: maint-5.8/perl + ! ext/IO/IO.xs +____________________________________________________________________________ +[ 22089] By: nicholas on 2004/01/07 13:19:41 + Log: Seems to be an off-by-4-years in Perforce on MacOS. Fix it. Grr. + Branch: maint-5.8/perl + ! ext/Digest/MD5/hints/MacOS.pl ext/Filter/t/call.t + ! ext/POSIX/t/taint.t lib/AutoSplit.t lib/Devel/SelfStubber.pm + ! lib/Devel/SelfStubber.t lib/File/DosGlob.t lib/Pod/t/Usage.t + ! lib/blib.pm lib/charnames.t lib/diagnostics.t lib/subs.t + ! t/comp/cpp.t t/comp/use.t t/io/inplace.t t/io/iprefix.t + ! t/lib/compmod.pl t/lib/filter-util.pl t/lib/warnings/mg + ! t/op/glob.t t/op/method.t t/op/mkdir.t t/op/read.t + ! t/op/recurse.t t/op/srand.t t/op/study.t t/op/subst_wamp.t + ! t/pod/testp2pt.pl t/run/exit.t t/run/switchI.t + ! t/run/switchPx.t t/run/switchx.t t/x2p/s2p.t utils/splain.PL +____________________________________________________________________________ +[ 22088] By: nicholas on 2004/01/07 13:10:22 + Log: Attempt timestamp fixup + Branch: maint-5.8/perl + ! ext/IO/IO.xs +____________________________________________________________________________ +[ 22087] By: nicholas on 2004/01/07 12:10:19 + Log: This is RC1 + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 22086] By: nicholas on 2004/01/07 12:09:16 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22085] By: nicholas on 2004/01/07 12:08:00 + Log: Cargo cult upgrade to 5.8.3 + Branch: maint-5.8/perl + ! NetWare/Makefile cygwin/perlld.in epoc/createpkg.pl + ! patchlevel.h plan9/config.plan9 vos/build.cm + ! vos/config.alpha.def vos/config.alpha.h vos/config.ga.def + ! vos/config.ga.h vos/install_perl.cm win32/Makefile + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/config_H.vc64 win32/makefile.mk wince/Makefile.ce +____________________________________________________________________________ +[ 22081] By: nicholas on 2004/01/06 14:33:15 + Log: Move pod/perldelta.pod to pod/perl583delta.pod, and arrange for + a copy to be made at build time. + Branch: maint-5.8/perl + +> pod/perl583delta.pod + - pod/perldelta.pod + ! MANIFEST Makefile.SH pod.lst pod/buildtoc pod/perltoc.pod + ! vms/descrip_mms.template win32/Makefile win32/makefile.mk + ! win32/pod.mak +____________________________________________________________________________ +[ 22080] By: nicholas on 2004/01/06 12:50:45 + Log: Integrate: + [ 22079] + Jarkko didn't move the cd ..\pod correctly. Given that it's been + like this pre 5.8.1, I suspect that no-one has used it recently. + Branch: maint-5.8/perl + !> win32/makefile.mk +____________________________________________________________________________ +[ 22078] By: nicholas on 2004/01/06 12:13:08 + Log: Subject: [PATCH maintperl] copy reentr.inc to CORE on VMS + From: "Craig A. Berry" + Message-ID: <3FFA4A86.6090607@mac.com> + Date: Mon, 05 Jan 2004 23:41:26 -0600 + Branch: maint-5.8/perl + ! vms/descrip_mms.template +____________________________________________________________________________ +[ 22077] By: nicholas on 2004/01/06 11:23:38 + Log: http://www.perforce.com/perforce/technotes/note014.html + I want a disintegrate command, and right now I know where I want to + aim it. + (Missing un-adds from reversing back to MM 6.17) + Branch: maint-5.8/perl + - lib/ExtUtils/t/parse_version.t + - t/lib/MakeMaker/Test/Setup/BFD.pm + - t/lib/MakeMaker/Test/Setup/Problem.pm +____________________________________________________________________________ +[ 22073] By: nicholas on 2004/01/05 22:44:03 + Log: Update pod/perltoc.pod + Branch: maint-5.8/perl + ! pod/perltoc.pod +____________________________________________________________________________ +[ 22072] By: nicholas on 2004/01/05 22:39:35 + Log: Revert to MM 6.17 (same as 5.8.2) + Branch: maint-5.8/perl + + lib/ExtUtils/t/00setup_dummy.t + + lib/ExtUtils/t/zz_cleanup_dummy.t + ! MANIFEST lib/ExtUtils/Changes lib/ExtUtils/Command.pm + ! lib/ExtUtils/Command/MM.pm lib/ExtUtils/Install.pm + ! lib/ExtUtils/Liblist/Kid.pm lib/ExtUtils/MANIFEST.SKIP + ! lib/ExtUtils/META.yml lib/ExtUtils/MM.pm + ! lib/ExtUtils/MM_Any.pm lib/ExtUtils/MM_Cygwin.pm + ! lib/ExtUtils/MM_NW5.pm lib/ExtUtils/MM_Unix.pm + ! lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MM_Win32.pm + ! lib/ExtUtils/MM_Win95.pm lib/ExtUtils/MakeMaker.pm + ! lib/ExtUtils/MakeMaker/Tutorial.pod + ! lib/ExtUtils/MakeMaker/bytes.pm + ! lib/ExtUtils/MakeMaker/vmsish.pm lib/ExtUtils/Manifest.pm + ! lib/ExtUtils/README lib/ExtUtils/TODO lib/ExtUtils/instmodsh + ! lib/ExtUtils/t/Command.t lib/ExtUtils/t/INST.t + ! lib/ExtUtils/t/INST_PREFIX.t lib/ExtUtils/t/Install.t + ! lib/ExtUtils/t/MM_Cygwin.t lib/ExtUtils/t/MM_Unix.t + ! lib/ExtUtils/t/MM_Win32.t lib/ExtUtils/t/Manifest.t + ! lib/ExtUtils/t/basic.t lib/ExtUtils/t/postamble.t + ! lib/ExtUtils/t/prefixify.t lib/ExtUtils/t/prereq_print.t + ! lib/ExtUtils/t/problems.t lib/ExtUtils/t/writemakefile_args.t + ! pod/perldelta.pod t/lib/MakeMaker/Test/Setup/Recurs.pm +____________________________________________________________________________ +[ 22070] By: nicholas on 2004/01/05 21:57:23 + Log: Resort MANIFEST (the way perltoc likes it) + Branch: maint-5.8/perl + ! MANIFEST +____________________________________________________________________________ +[ 22069] By: nicholas on 2004/01/05 21:56:17 + Log: Integrate: + [ 22064] + Fix bug with MANIFEST generation when we also regenerate perltoc.pod + + [ 22067] + Change the flag logic in buildtoc + Branch: maint-5.8/perl + !> pod.lst pod/buildtoc +____________________________________________________________________________ +[ 22059] By: nicholas on 2004/01/05 09:29:29 + Log: Integrate: + [ 22058] + Subject: [PATCH] skip num.t #47 on VMS + From: "Craig A. Berry" + Date: Sun, 04 Jan 2004 23:16:26 -0600 + Message-ID: <3FF8F32A.5000108@mac.com> + Branch: maint-5.8/perl + !> t/base/num.t +____________________________________________________________________________ +[ 22054] By: nicholas on 2004/01/03 20:56:11 + Log: Integrate: + [ 22052] + Upgrade to PerlIO::via::QuotedPrint 0.06 + Branch: maint-5.8/perl + !> lib/PerlIO/via/QuotedPrint.pm +____________________________________________________________________________ +[ 22053] By: nicholas on 2004/01/03 20:16:23 + Log: Integrate: + [ 22049] + Fix minor problems with the CPAN release + 1: Make Storable.xs to work on 5.8.2 and later (already in the core) + 2: Ship the linux hints file + 3: Ship Test::More for the benefit of Perls pre 5.6.2 + 4: Correct Makefile.PL to install in core for 5.8.0 and later + + [ 22050] + No matter how hard you proof read it, something always slips through. + Branch: maint-5.8/perl + !> ext/Storable/ChangeLog ext/Storable/MANIFEST + !> ext/Storable/Makefile.PL ext/Storable/README + !> ext/Storable/Storable.pm +____________________________________________________________________________ +[ 22048] By: nicholas on 2004/01/03 18:00:31 + Log: Changes suggested by Merijn (but his words mangled by me) + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 22046] By: nicholas on 2004/01/02 16:57:17 + Log: Integrate: + [ 21981] + Subject: PATCH: *DB*_File + From: "Paul Marquess" + Date: Sat, 27 Dec 2003 20:02:30 -0000 + Message-ID: + Branch: maint-5.8/perl + !> XSUB.h ext/DB_File/Changes ext/DB_File/DB_File.pm + !> ext/DB_File/DB_File.xs ext/DB_File/t/db-btree.t + !> ext/DB_File/t/db-hash.t ext/DB_File/t/db-recno.t + !> ext/DB_File/typemap ext/GDBM_File/typemap + !> ext/NDBM_File/typemap ext/ODBM_File/typemap + !> ext/SDBM_File/typemap +____________________________________________________________________________ +[ 22045] By: nicholas on 2004/01/02 16:36:54 + Log: Integrate: + [ 22030] + Document that detached threads aren't supported on Windows yet. + + [ 22031] + Document that /[\W]/ doesn't work, unicode-wise (see bug #18281) + + [ 22036] + Document the quirks of SUPER, especially the fact that it it + relative to the current package and not to the invoking object. + + [ 22037] + addition to 22036 (document SUPER better): superclass may be plural + + [ 22044] + Bump $threads::VERSION as the documentation has changed. Tweak the + documentaiton, update Arthur's e-mail address + Branch: maint-5.8/perl + !> ext/threads/threads.pm pod/perlboot.pod pod/perlbot.pod + !> pod/perlobj.pod pod/perltoot.pod pod/perlunicode.pod +____________________________________________________________________________ +[ 22042] By: nicholas on 2004/01/02 00:42:36 + Log: Waah. This is a mess. The debugger is forked, with maint's $VERSION + 2 higher than blead's. No idea how much code is forked. + + Integrate: + [ 21940] + Fix a side-effect of bug #24674 in the perl debugger. + + Subject: [perl #24674] 5.x odd taint bug + From: Dominique Quatravaux (via RT) + Date: 16 Dec 2003 15:03:24 -0000 + Message-ID: + + [ 22041] + Update debugger version number and Changes file + Branch: maint-5.8/perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 22040] By: nicholas on 2004/01/02 00:21:57 + Log: Integrate: + [ 22033] + Subject: Perl 5.8.3 patches from the BS2000 port - part 2 + From: Dorner Thomas + Message-ID: <6727B1DACFCDD311A757009027CA8D69044B6740@Ex02.inhouse.start.de> + Date: Fri, 19 Dec 2003 07:16:47 +0100 + Branch: maint-5.8/perl + !> t/io/utf8.t t/op/pat.t +____________________________________________________________________________ +[ 22039] By: nicholas on 2004/01/01 23:59:34 + Log: Integrate: + [ 22034] + Fix bug #24383, where hashes with the :unique attribute weren't + getting made readonly on interpreter clone. Also, remove the + :unique attribute from the hashes in warnings.pm, since they may + later be modified by warnings::register. Finally, adds tests for + the :unique attribute. + Branch: maint-5.8/perl + !> ext/threads/t/problems.t lib/warnings.pm sv.c warnings.pl +____________________________________________________________________________ +[ 22038] By: nicholas on 2004/01/01 23:35:15 + Log: + Subject: [PATCH 5.8.2 @21574] OS/2 update + From: Ilya Zakharevich + Date: Thu, 18 Dec 2003 14:10:29 -0800 + Message-ID: <20031218221029.GA7898@math.berkeley.edu> + Branch: maint-5.8/perl + ! installperl + !> README.os2 hints/os2.sh lib/ExtUtils/MM_Unix.pm makedef.pl + !> os2/Changes os2/OS2/REXX/DLL/Changes os2/OS2/REXX/DLL/DLL.pm + !> os2/os2.c os2/os2ish.h os2/perl2cmd.pl +____________________________________________________________________________ +[ 22035] By: nicholas on 2004/01/01 21:30:41 + Log: Corrections from Yitzchak Scott-Thoennes and Randy W. Sims + Message-ID: <20040101195205.GA3212@efn.org> + Message-ID: <20031230183815.GC8164@penkwe.pair.com> + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 22028] By: nicholas on 2003/12/31 18:19:46 + Log: Integrate: + [ 21951] + re-fix [perl #24508] without speed regression. + keep an eye on this. + Branch: maint-5.8/perl + !> op.c opcode.h opcode.pl +____________________________________________________________________________ +[ 22027] By: nicholas on 2003/12/31 15:41:04 + Log: Integrate: + [ 22025] + Subject: [PATCH] "piconv -C 512" badly broken + From: Autrijus Tang + Message-Id: <1072870210.769.5.camel@localhost> + Date: Wed, 31 Dec 2003 19:30:10 +0800 + + [ 22026] + Tweak 00compile.t to avoid splatting a DIAG over core perl's + beautiful clean run of OKs. You are all getting a clean run of OKs, + aren't you? + Branch: maint-5.8/perl + !> ext/Encode/bin/piconv lib/Test/Harness/t/00compile.t +____________________________________________________________________________ +[ 22024] By: nicholas on 2003/12/31 15:05:22 + Log: Integrate: + [ 21798] + Implement C : + Branch: maint-5.8/perl + !> lib/Exporter.pm lib/Exporter.t +____________________________________________________________________________ +[ 22023] By: nicholas on 2003/12/31 14:25:32 + Log: Integrate: + [ 22020] + C++ comments, bad. + Branch: maint-5.8/perl + !> ext/Cwd/Cwd.xs +____________________________________________________________________________ +[ 22022] By: nicholas on 2003/12/31 13:41:17 + Log: Integrate: + [ 22021] + Upgrade to Test::Harness 2.40. + Branch: maint-5.8/perl + !> lib/Test/Harness.pm lib/Test/Harness/Changes + !> lib/Test/Harness/Iterator.pm lib/Test/Harness/Straps.pm + !> lib/Test/Harness/bin/prove lib/Test/Harness/t/00compile.t + !> lib/Test/Harness/t/assert.t lib/Test/Harness/t/callback.t + !> lib/Test/Harness/t/prove-switches.t + !> lib/Test/Harness/t/strap-analyze.t lib/Test/Harness/t/strap.t + !> lib/Test/Harness/t/test-harness.t +____________________________________________________________________________ +[ 22019] By: nicholas on 2003/12/31 00:19:24 + Log: Integrate: + [ 22018] + Bump VERSION numbers + Branch: maint-5.8/perl + !> ext/POSIX/POSIX.pm lib/Benchmark.pm lib/File/CheckTree.pm + !> lib/Getopt/Std.pm lib/PerlIO.pm lib/Tie/Hash.pm + !> lib/diagnostics.pm +____________________________________________________________________________ +[ 22017] By: nicholas on 2003/12/30 22:10:24 + Log: Integrate: + [ 22016] + A patch for Test::Harness on VMS by Craig Berry + (see RT CPAN bug #4745) + Branch: maint-5.8/perl + !> lib/Test/Harness/Straps.pm +____________________________________________________________________________ +[ 22015] By: nicholas on 2003/12/30 19:08:19 + Log: Integrate: + [ 21999] + Add Mike Pomraning + + [ 22009] + bug #24757 perlrun.pod's description of find -mtime was ambiguous + + [ 22013] + Subject: more uni doc tweakage + From: Jarkko Hietaniemi + Message-ID: <20031230133755.GA23118@vipunen.hut.fi> + Date: Tue, 30 Dec 2003 15:37:55 +0200 + + Subject: one more pod fix + From: Jarkko Hietaniemi + Message-ID: <20031230135641.GA24516@vipunen.hut.fi> + Date: Tue, 30 Dec 2003 15:56:41 +0200 + Branch: maint-5.8/perl + !> AUTHORS lib/PerlIO.pm pod/perlrun.pod pod/perlunicode.pod +____________________________________________________________________________ +[ 22014] By: nicholas on 2003/12/30 18:48:08 + Log: Integrate: + [ 21937] + after back-references, restricted hashes. + see http://nntp.perl.org/group/perl.perl5.porters/86497 + this is hopefully only a temporary solution. + + [ 22005] + Subject: Re: [perl #24774] eval + format - \n = pp_ctl.c assertion + heuristics for calculating buffer size needed to compile a format + didn't allow for \0 + Branch: maint-5.8/perl + !> perl.c pp_ctl.c t/op/write.t +____________________________________________________________________________ +[ 22012] By: nicholas on 2003/12/30 17:53:35 + Log: Integrate: + [ 22007] + Upgrade to Math::BigInt 1.68. + Branch: maint-5.8/perl + +> lib/Math/BigInt/t/bigroot.t + !> MANIFEST lib/Math/BigFloat.pm lib/Math/BigInt.pm + !> lib/Math/BigInt/Calc.pm lib/Math/BigInt/CalcEmu.pm + !> lib/Math/BigInt/t/alias.inc lib/Math/BigInt/t/bare_mbi.t + !> lib/Math/BigInt/t/bigfltpm.inc lib/Math/BigInt/t/bigintpm.inc + !> lib/Math/BigInt/t/bigintpm.t lib/Math/BigInt/t/sub_mbi.t +____________________________________________________________________________ +[ 22011] By: nicholas on 2003/12/30 17:37:54 + Log: $expletive perforce. Why can't you integrate an add with an edit? + + Integrate: + [ 21956] + Subject: BigInt v1.68 - pre-release + From: Tels + Date: Tue, 23 Dec 2003 01:09:23 +0100 + Message-Id: <200312230106.27661@bloodgate.com> + Branch: maint-5.8/perl + +> lib/Math/BigInt/CalcEmu.pm lib/Math/BigInt/t/alias.inc + +> lib/Math/BigInt/t/mbf_ali.t lib/Math/BigInt/t/mbi_ali.t + +> lib/Math/BigInt/t/sub_ali.t + !> MANIFEST lib/Math/BigFloat.pm lib/Math/BigInt.pm + !> lib/Math/BigInt/Calc.pm lib/Math/BigInt/t/bigfltpm.inc + !> lib/Math/BigInt/t/bigintc.t lib/Math/BigInt/t/bigintpm.inc + !> lib/Math/BigInt/t/upgrade.inc +____________________________________________________________________________ +[ 22010] By: nicholas on 2003/12/30 17:16:42 + Log: $expletive perforce + + Mop up, due to perforce's inexplicable inability to SILENTLY FAIL to + integrate two changes, where the first adds and the second edits a + file. + + Integrate: + [ 21882] + Subject: [PATCH] Math::BigInt v1.67 released + From: Tels + Date: Fri, 12 Dec 2003 18:47:43 +0100 + Message-Id: <200312121847.49039@bloodgate.com> + Branch: maint-5.8/perl + !> lib/Math/BigInt/t/fallback.t +____________________________________________________________________________ +[ 22008] By: nicholas on 2003/12/30 16:17:16 + Log: Integrate: + [ 21970] + Allow overriding of the p4 settings via environment variables + Make regexp more robust to parse FreeBSD's patch output + + [ 22002] + Updates the notes about byacc in pumpkin.pod. + Branch: maint-5.8/perl + !> Porting/apply Porting/pumpkin.pod +____________________________________________________________________________ +[ 22006] By: nicholas on 2003/12/30 15:23:04 + Log: Integrate: + [ 21986] + Fix bug [perl #24762] : C<*foo{CODE} ? 1 : 0> was a syntax error + + [ 21988] + Regenerate the perly.c patch for byacc output painless fixing + + [ 22003] + Add a regression test for bug #24762 + + Plus tweaks for maint + Branch: maint-5.8/perl + ! perly.c perly_c.diff vms/perly_c.vms + !> perly.y t/comp/parser.t +____________________________________________________________________________ +[ 22004] By: nicholas on 2003/12/30 12:59:19 + Log: Changes following feedback from p5p + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 22000] By: nicholas on 2003/12/30 00:17:01 + Log: First stab at a perldelta for 5.8.3 + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21998] By: nicholas on 2003/12/29 21:28:25 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21995] By: nicholas on 2003/12/29 18:25:43 + Log: Integrate: + [ 21991] + Upgrade to Encode 1.99. + Branch: maint-5.8/perl + !> ext/Encode/Changes ext/Encode/Encode.pm ext/Encode/META.yml + !> ext/Encode/Unicode/Unicode.xs ext/Encode/encoding.pm + !> ext/Encode/t/enc_eucjp.t ext/Encode/t/enc_utf8.t + !> ext/Encode/t/mime-header.t ext/Encode/ucm/gsm0338.ucm + !> ext/Encode/ucm/macArabic.ucm ext/Encode/ucm/macFarsi.ucm + !> ext/Encode/ucm/macHebrew.ucm +____________________________________________________________________________ +[ 21994] By: nicholas on 2003/12/29 17:53:46 + Log: + Subject: [PATCH] win32_chsize buglet + From: "Kevin Chase" + Date: Sun, 28 Dec 2003 15:48:56 -0800 + Message-ID: + + [ 21993] + Windows hasn't getuid/setuid and friends. + Therefore disable the code related to them in POSIX.xs. + + Subject: [PATCH: ext/POSIX/POSIX.xs] Re: Smoke [5.8.2] 21979 FAIL(Xt) MSWin32 5.1 Service Pack 1 (x86/1 cpu) + From: "Marcus Holland-Moritz" + Date: Mon, 29 Dec 2003 04:51:19 +0100 + Message-ID: <03d401c3cdbf$05730ee0$d500a8c0@R2D2> + Branch: maint-5.8/perl + !> ext/POSIX/POSIX.xs win32/win32.c +____________________________________________________________________________ +[ 21987] By: nicholas on 2003/12/27 23:17:19 + Log: Integrate: + [ 21985] + Subject: Cross compilation patches for arm. + From: Redvers Davies + Message-Id: <1072098653.4789.6.camel@ragefire> + Date: Mon, 22 Dec 2003 08:11:34 -0500 + Branch: maint-5.8/perl + ! Cross/README + !> Cross/Makefile Cross/Makefile.SH.patch + !> Cross/config.sh-arm-linux Cross/installperl.patch +____________________________________________________________________________ +[ 21984] By: nicholas on 2003/12/27 22:17:18 + Log: Integrate: + [ 21983] + Fix bug [perl #24735] : make sure that the range (..) operator + treats an undefined argument as 0 for numerical ranges and as "" + for magical string ranges. + Branch: maint-5.8/perl + !> pp_ctl.c t/op/range.t +____________________________________________________________________________ +[ 21982] By: nicholas on 2003/12/27 21:10:07 + Log: Integrate: + [ 21962] + Subject: [PATCH: sv.c] Re: GCC bug breaking Perl_sv_catpvfn()? + From: "Marcus Holland-Moritz" + Date: Fri, 26 Dec 2003 02:47:09 +0100 + Message-ID: <03ca01c3cb52$2d509b40$5700a8c0@R2D2> + + [ 21967] + Subject: [PATCH: sv.c] Turn Quad_t to Uquad_t in unsigned branch + From: "Marcus Holland-Moritz" + Date: Sat, 27 Dec 2003 02:48:19 +0100 + Message-ID: <010001c3cc1b$813763a0$d500a8c0@R2D2> + + [ 21971] + Subject: [PATCH] Remove Win32 compiler warnings + From: "Marcus Holland-Moritz" + Date: Sat, 27 Dec 2003 17:39:20 +0100 + Message-ID: <018901c3cc97$fa976660$d500a8c0@R2D2> + Branch: maint-5.8/perl + !> ext/XS/APItest/APItest.xs ext/threads/shared/shared.xs sv.c +____________________________________________________________________________ +[ 21980] By: nicholas on 2003/12/27 19:55:01 + Log: Integrate: + [ 20734] + Subject: [PATCH] Taint problems in Cwd::abs_path + From: Michael G Schwern + Date: Fri, 15 Aug 2003 18:43:45 -0700 + Message-ID: <20030816014345.GE4023@windhund.schwern.org> + + [ 21972] + Assimilate Cwd 2.12 from CPAN. Cwd wasn't in Maintainers, so change + 21646 was only applied to core (must punt this back and thereby unfork) + Need to fix test boilerplate properly for PERL_CORE + + [ 21974] + Assimilate File::Spec 0.87 + + [ 21978] + Straggler from Cwd + Branch: maint-5.8/perl + +> ext/Cwd/Changes + ! ext/Cwd/t/taint.t + !> MANIFEST Porting/Maintainers.pl ext/Cwd/Cwd.xs ext/Cwd/t/cwd.t + !> lib/Cwd.pm lib/File/Spec.pm lib/File/Spec/t/Spec.t +____________________________________________________________________________ +[ 21979] By: nicholas on 2003/12/27 19:30:17 + Log: Integrate: + [ 21548] + Sync with Pod::Perldoc 3.12 + + [ 21973] + Assimilate Digest 1.05 + + [ 21975] + Assimilate PodParser-1.26 + + [ 21976] + Assimilate Unicode::Collate 0.33 + + [ 21977] + Straggler from Unicode::Collate. + We need to automate this. + For some value of we. (tr/w/m/ I suspect) + Branch: maint-5.8/perl + +> lib/Unicode/Collate/t/altern.t + +> lib/Unicode/Collate/t/rearrang.t lib/Unicode/Collate/t/view.t + !> MANIFEST lib/Digest.pm lib/Digest/t/digest.t + !> lib/Pod/Checker.pm lib/Pod/Find.pm lib/Pod/InputObjects.pm + !> lib/Pod/ParseUtils.pm lib/Pod/Parser.pm lib/Pod/Perldoc.pm + !> lib/Pod/PlainText.pm lib/Pod/Select.pm lib/Pod/Usage.pm + !> lib/Unicode/Collate.pm lib/Unicode/Collate/Changes + !> lib/Unicode/Collate/README lib/Unicode/Collate/keys.txt + !> lib/Unicode/Collate/t/contract.t + !> lib/Unicode/Collate/t/illegal.t lib/Unicode/Collate/t/test.t + !> lib/Unicode/Collate/t/version.t pod/pod2usage.PL + !> pod/podselect.PL t/pod/pod2usage.xr t/pod/podselect.xr +____________________________________________________________________________ +[ 21969] By: nicholas on 2003/12/27 16:37:27 + Log: Integrate: + [ 21958] + Fix bug [perl #24641] : when POSIX::set[ug]id() are called, + update the perl variables PL_uid and PL_euid (resp. PL_gid + and PL_egid) with the new values. + + [ 21968] + Subject: [PATCH] perl 5.8.0, FindBin::again + From: Slaven Rezic + Date: 01 May 2003 21:28:10 +0200 + Message-ID: <873cjy31rp.fsf@vran.herceg.de> + Branch: maint-5.8/perl + !> ext/POSIX/POSIX.xs lib/FindBin.pm lib/FindBin.t +____________________________________________________________________________ +[ 21966] By: nicholas on 2003/12/26 21:30:11 + Log: Integrate: + [ 21957] + Subject: [PATCH 5.8.2 @21574] INSTALL_PREFIX from C + From: Ilya Zakharevich + Date: Thu, 18 Dec 2003 12:30:06 -0800 + Message-ID: <20031218203006.GA7772@math.berkeley.edu> + Branch: maint-5.8/perl + !> config_h.SH +____________________________________________________________________________ +[ 21965] By: nicholas on 2003/12/26 20:49:47 + Log: Integrate: + [ 21955] + Subject: [perl #24506] [PATCH] cannot weaken refs to read only values + From: Fergal Daly + Date: Tue, 2 Dec 2003 23:18:18 +0000 + Message-Id: <200312022318.18353.fergal@esatclear.ie> + + (tweaked so the test is skipped on perls < 5.9.0) + + [ 21964] + Change minimum perl version where the test is run from 5.9.0 to 5.8.3 + as I'm going to integrate the core patch + Branch: maint-5.8/perl + !> ext/List/Util/t/weak.t sv.c +____________________________________________________________________________ +[ 21963] By: nicholas on 2003/12/26 19:56:31 + Log: Integrate: + [ 21950] + sanitize some macros - based on Chip Salzenberg suggestions and + on the way GNU people use the gcc-ish 'blocks in parens' + + [ 21960] + Refactor the code that checks whether a range is numeric + or string-magical. + Branch: maint-5.8/perl + ! sv.h + !> XSUB.h pp_ctl.c +____________________________________________________________________________ +[ 21961] By: nicholas on 2003/12/26 17:54:21 + Log: Integrate: + [ 21959] + Restore ext/SDBM_File/sdbm/Makefile to its pre-21655 state. + This fixes building SDBM_File on AIX. + Branch: maint-5.8/perl + !> ext/SDBM_File/sdbm/Makefile.PL +____________________________________________________________________________ +[ 21954] By: nicholas on 2003/12/24 15:32:55 + Log: Integrate: + [ 21952] + Subject: [patch t/test.pl] comment fix + From: Stas Bekman + Message-ID: <3FE8C65A.4060708@stason.org> + Date: Tue, 23 Dec 2003 14:48:58 -0800 + + [ 21953] + Subject: [PATCH: perl@21949] document patch for VMS port on new file systems + From: PPrymmer@factset.com + Date: Tue, 23 Dec 2003 17:27:44 -0500 + Message-Id: + Branch: maint-5.8/perl + !> README.vms t/test.pl +____________________________________________________________________________ +[ 21949] By: nicholas on 2003/12/22 21:55:52 + Log: Integrate: + [ 21948] + Subject: Re: Smoke [5.8.2] 21930 FAIL(t) MSWin32 5.1 Service Pack 1 (x86/1 cpu) + Message-ID: + Date: Mon, 22 Dec 2003 01:52:08 -0600 (CST) + From: Mike Pomraning + Branch: maint-5.8/perl + !> ext/threads/shared/shared.xs +____________________________________________________________________________ +[ 21947] By: nicholas on 2003/12/22 20:35:11 + Log: Integrate: + [ 21942] + Subject: [perl #24651] Taint bug with multiple backticks in ref consturctors + From: Mike Guy + Date: Fri, 19 Dec 2003 17:17:11 +0000 + Message-Id: + + [ 21946] + Subject: doc nits + From: Jarkko Hietaniemi + Date: Mon, 22 Dec 2003 21:57:34 +0200 + Message-Id: <20031222195734.GA29441@vipunen.hut.fi> + Branch: maint-5.8/perl + !> pod/perlsec.pod pod/perltodo.pod pod/perlunicode.pod +____________________________________________________________________________ +[ 21945] By: nicholas on 2003/12/22 20:07:07 + Log: Integrate: + [ 21944] + Subject: [PATCH] configure.com archname tweak + From: "Craig A. Berry" + Date: Sun, 21 Dec 2003 23:07:13 -0600 + Message-ID: <3FE67C01.1000704@mac.com> + Branch: maint-5.8/perl + !> configure.com +____________________________________________________________________________ +[ 21943] By: nicholas on 2003/12/21 22:41:21 + Log: Make reentrant functions work with C++ + Patch by Jan Dubois, bug report and testing by Chip Salzenberg + Branch: maint-5.8/perl + ! reentr.inc reentr.pl +____________________________________________________________________________ +[ 21941] By: nicholas on 2003/12/21 20:42:53 + Log: Integrate: + [ 21936] + fix [perl #24660], [perl #24663]. + Branch: maint-5.8/perl + !> mg.c sv.c +____________________________________________________________________________ +[ 21939] By: nicholas on 2003/12/20 23:40:37 + Log: Integrate: + [ 21933] + Subject: [PATCH] OpenVMS I64 support + From: "Craig A. Berry" + Message-ID: <3FE2441F.2070603@mac.com> + Date: Thu, 18 Dec 2003 18:19:43 -0600 + + [ 21938] + Subject: Perl 5.8.3 patches from the BS2000 port + From: Dorner Thomas + Date: Wed, 17 Dec 2003 15:41:17 +0100 + Message-ID: <6727B1DACFCDD311A757009027CA8D69044B673A@Ex02.inhouse.start.de> + Branch: maint-5.8/perl + !> configure.com hints/posix-bc.sh t/base/num.t t/comp/parser.t + !> vms/gen_shrfls.pl +____________________________________________________________________________ +[ 21934] By: nicholas on 2003/12/20 20:21:46 + Log: Integrate: + [ 21931] + Solaris gconvert() doesn't like ndigits == 0. Currently we have no + Configure test for troublesome gconvert(), so for now simply avoid + the optimisation that calls gconvert() in this case. + + [ 21932] + remove duplicate PERL_HASH (as spotted by Enache Adrian in + <20031220124854.GA1265@ratsnest.hole> ) + Branch: maint-5.8/perl + !> hv.c sv.c +____________________________________________________________________________ +[ 21930] By: nicholas on 2003/12/19 19:46:46 + Log: Integrate: + [ 21921] + Subject: [PATCH] 2-arg cond_wait, cond_timedwait, tests + From: Mike Pomraning + Date: Wed, 17 Dec 2003 00:05:58 -0600 (CST) + Message-ID: + + [ 21922] + Subject: [PATCH: embed.fnc] arguments for perl_clone() + From: "Marcus Holland-Moritz" + Date: Wed, 17 Dec 2003 13:26:52 +0100 + Message-ID: <055701c3c499$11144f90$8cecfe91@R2D2> + Branch: maint-5.8/perl + +> ext/threads/shared/t/wait.t + ! embed.h + !> MANIFEST embed.fnc ext/threads/shared/shared.pm + !> ext/threads/shared/shared.xs global.sym +____________________________________________________________________________ +[ 21929] By: nicholas on 2003/12/19 19:06:10 + Log: Integrate: + [ 21915] + Add the macros dAX and dITEMS to PPPort. + + [ 21927] + Subject: [DOCPATCH] base.pm + From: Elizabeth Mattijsen + Date: Thu, 18 Dec 2003 22:30:52 +0100 + Message-Id: + + Plus, remove leftover mentions of pseudo-hashes + + [ 21928] + Upgrade to CGI.pm 3.01 + Branch: maint-5.8/perl + !> ext/Devel/PPPort/PPPort.pm lib/CGI.pm lib/CGI/Carp.pm + !> lib/CGI/Cookie.pm lib/CGI/Fast.pm lib/CGI/Pretty.pm + !> lib/CGI/Util.pm lib/CGI/t/carp.t lib/CGI/t/request.t + !> lib/base.pm +____________________________________________________________________________ +[ 21926] By: nicholas on 2003/12/18 20:49:11 + Log: Integrate: + [ 21883] + Modify the common guard for the signal.h header, because + C99 compilers don't like it.o + + see : + Subject: UNIX03 & C99 issue with 5.8.2 + From: Alan Burlison + Date: Fri, 12 Dec 2003 23:04:52 +0000 + Message-ID: <3FDA4994.6050209@sun.com> + + [ 21916] + Remove incorrect guards around inclusion of + Causes problems with UNIX03/SUSv3 + + [ 21917] + Remove incorrect guards around inclusion of + Causes problems with UNIX03/SUSv3 + Part 2 of change 21916 - oops! + + See: + Message-Id: <3FDD06A5.8010004@sun.com> + Subject: Re: UNIX03 & C99 issue with 5.8.2 + From: Alan Burlison + Date: Mon, 15 Dec 2003 00:56:05 +0000 + Branch: maint-5.8/perl + !> doio.c doop.c mg.c mpeix/mpeixish.h plan9/plan9ish.h unixish.h + !> util.c +____________________________________________________________________________ +[ 21925] By: nicholas on 2003/12/18 20:26:39 + Log: Integrate: + [ 21912] + Subject: [DOCPATCH] perlfunc delete + From: Elizabeth Mattijsen + Date: Sun, 14 Dec 2003 20:25:07 +0100 + Message-Id: + + [ 21914] + Subject: [patch Porting/pumpkin.pod] trying to ensure that PPPort is up-to-date on each new release + From: Stas Bekman + Date: Sun, 14 Dec 2003 15:12:40 -0800 + Message-ID: <3FDCEE68.3080509@stason.org> + + [ 21923] + Perl 1.0.16 has been released. + + [ 21924] + "Richard" - who he? (Add "Richard Clamp" to the list of pumpkings) + Branch: maint-5.8/perl + !> Porting/pumpkin.pod pod/perlfunc.pod pod/perlhist.pod +____________________________________________________________________________ +[ 21920] By: nicholas on 2003/12/16 23:32:48 + Log: Integrate: + [ 21875] + fix bug #24605. + substr() wasn't working when used repeatedly on the same utf-8 + string. + Branch: maint-5.8/perl + ! sv.c + !> t/op/substr.t +____________________________________________________________________________ +[ 21919] By: nicholas on 2003/12/16 23:11:18 + Log: Integrate: + [ 21866] + plumb a leak with pos(). + + #! perl + while (1) { + my $a = "\x{1ff}"; $a =~ /\x{1ff}/g; pos($a); + } + __END__ + + [ 21867] + yet another 2 leaks. example for the second: + #! perl + eval q{ open $p{q}, "foo" } while 1 + __END__ + + [ 21868] + yet another leak. bigger fish still swimming around. + #!perl + eval q{ $_ = "x"; s/x/"in subst"/e } while 1; + __END__ + + [ 21876] + #21866 was wrong. another try to plumb that damn leak. + Branch: maint-5.8/perl + ! sv.c + !> mg.c op.c pp_ctl.c +____________________________________________________________________________ +[ 21913] By: nicholas on 2003/12/14 22:50:47 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21911] By: nicholas on 2003/12/14 20:25:18 + Log: Integrate: + [ 21898] + Add Perl_ceil + + [ 21910] + Forgot to remove a comment + Branch: maint-5.8/perl + !> perl.h pp.c +____________________________________________________________________________ +[ 21909] By: nicholas on 2003/12/14 19:53:35 + Log: Integrate: + [ 21647] + Subject: [PATCH] Re: PERL_VERSION, SUBVERSION, PATCHLEVEL + From: "Marcus Holland-Moritz" + Date: Mon, 3 Nov 2003 20:53:33 +0100 + Message-ID: <023a01c3a244$2a1dd5a0$0c2f1fac@R2D2> + + [ 21902] + Subject: Re: 5.6.2-RC1 on Cygwin + From: Yitzchak Scott-Thoennes + Date: Sat, 6 Dec 2003 22:32:59 -0800 + Message-ID: <20031207063259.GA3004@efn.org> + (with tweaks to cleanup code) + Branch: maint-5.8/perl + !> ext/Devel/PPPort/PPPort.pm t/op/taint.t +____________________________________________________________________________ +[ 21908] By: nicholas on 2003/12/14 19:16:51 + Log: Integrate: + [ 21872] + temporary fix to avoid t/op/tie.t failures on Win32 + + [ 21904] + Clean up a bug I introduced into caseless ENV hv_delete + (should be the proper fix for 21870 and 21872's band aid) + + [ 21905] + Subject: Re: Change 21862 + From: Enache Adrian + Date: Wed, 10 Dec 2003 06:05:58 +0200 + Message-ID: <20031210040558.GC1584@ratsnest.hole> + + (1st hunk), plus the equivalent for hv_delete_common + + [ 21906] + Some fool missed a letter n. + (and then "optimised" code based on its absense. D'oh) + Restore the correct behaviour - fetch with uppercase key, then if + still not found store with mixed/lowercase key. + + [ 21907] + S_save_hek_flags should honour the "free" flag. + Ought to mask the flag bits that shouldn't be stored. + Branch: maint-5.8/perl + !> hv.c +____________________________________________________________________________ +[ 21903] By: nicholas on 2003/12/13 23:02:59 + Log: Integrate: + [ 21834] + Subject: Re: [perl #24574] find2perl provides different results to find + From: Slaven Rezic + Date: 30 Nov 2003 22:16:59 +0100 + Message-ID: <8765h1pnec.fsf@vran.herceg.de> + + (plus a note about find2perl now defaulting to -print in perldelta) + + [ 21891] + Make the XSRETURN macro evaluate its argument only once. + Branch: maint-5.8/perl + !> XSUB.h pod/perldelta.pod x2p/find2perl.PL +____________________________________________________________________________ +[ 21901] By: nicholas on 2003/12/13 21:22:15 + Log: Integrate: + [ 21892] + Subject: Patch for: [perl #24650] File::CheckTree should list Larry Wall as author, not unknown + From: David Dyck + Date: Sat, 13 Dec 2003 00:01:34 -0800 (PST) + Message-ID: + + [ 21895] + alarm() is now implemented on Win32. + + [ 21897] + Reformat a long line in perlembed.pod (bug #24623). + Branch: maint-5.8/perl + !> lib/File/CheckTree.pm pod/perlembed.pod pod/perlport.pod +____________________________________________________________________________ +[ 21900] By: nicholas on 2003/12/13 21:08:12 + Log: Integrate: + [ 21855] + Subject: [PATCH] SCALAR/FIRSTKEY for tied hashes in scalar context + From: Tassilo von Parseval + Date: Sat, 06 Dec 2003 11:50:59 +0100 + Message-id: <20031206105059.GA13989@ethan> + + [ 21856] + Clarify the description of SCALAR in perltie + + [ 21857] + Remove the "Can't provide tied hash usage" error from perldiag. + Mention the new tied hash SCALAR method in perldelta. + + [ 21863] + Missing thingies. + + [ 21865] + Subject: [PATCH] documenting SCALAR gotcha + From: Tassilo von Parseval + Date: Sun, 07 Dec 2003 16:41:16 +0100 + Message-id: <20031207154116.GA825@ethan> + + [ 21869] + Subject: [PATCH] iterator reset moved to hv.c (was: [PATCH] SCALAR/FIRSTKEY for tied hashes in scalar context) + From: Tassilo von Parseval + Date: Mon, 08 Dec 2003 08:17:46 +0100 + Message-id: <20031208071746.GA594@ethan> + + [ 21896] + The binary compatibility notes say that new global functions should + go at the end. Not that I'm anything more than "trainee" when it + comes to this bincompat stuff. + Branch: maint-5.8/perl + ! pp.c pp_hot.c + !> embed.fnc embed.h global.sym hv.c lib/Tie/Hash.pm mg.c + !> pod/perlapi.pod pod/perldiag.pod pod/perlfunc.pod + !> pod/perltie.pod proto.h t/op/tie.t +____________________________________________________________________________ +[ 21899] By: nicholas on 2003/12/13 20:26:39 + Log: Refactor to use t/test.pl + Branch: maint-5.8/perl + ! t/op/avhv.t +____________________________________________________________________________ +[ 21894] By: nicholas on 2003/12/13 17:59:41 + Log: regenerate perltoc.pod and Integrate: + [ 21884] + Subject: RE: [perl #24610] Pod::Html infinite recursion + From: Anders Johnson + Date: Fri, 12 Dec 2003 14:07:40 -0800 + Message-ID: <33171CC36240D94EAF1FE584B1D14E0A06EC6F51@mail-sc-11.nvidia.com> + (with tweaks) + + [ 21885] + Fix some of the pods to produce more standard manpages, + as reported by Eric S. Raymond. + + [ 21886] + More POD fixes ; regenerate perltoc and perlmodlib. + + [ 21893] + foreach qw() { # not valid syntax for 5.005. So fix it. + Branch: maint-5.8/perl + ! pod/perltoc.pod + !> README.ce README.netware ext/DynaLoader/DynaLoader_pm.PL + !> lib/Getopt/Std.pm lib/Pod/Html.pm lib/diagnostics.pm + !> pod/buildtoc pod/perlmodlib.pod +____________________________________________________________________________ +[ 21890] By: nicholas on 2003/12/13 16:19:29 + Log: Integrate: + [ 21826] + Upgrade to Test::Harness 2.38. + Introduce the prove(1) utility. + (The prove-switches test is disabled for now.) + + [ 21836] + The prove utility should also be installed on VMS and on Windows. + Haven't we regression tests for installations yet ? + + [ 21871] + Upgrade to Digest-MD5 2.33. + + [ 21874] + Suppress a C< $DB::single = 1 > from Switch.pm, as noticed + by Jan Dubois. + Branch: maint-5.8/perl + +> lib/Test/Harness/bin/prove lib/Test/Harness/t/inc_taint.t + +> lib/Test/Harness/t/prove-switches.t t/lib/Dev/Null.pm + +> t/lib/sample-tests/inc_taint t/lib/sample-tests/taint_warn + +> utils/prove.PL + ! installperl + !> MANIFEST ext/Digest/MD5/Changes ext/Digest/MD5/MD5.pm + !> ext/Digest/MD5/MD5.xs ext/Digest/MD5/Makefile.PL + !> ext/Digest/MD5/t/files.t ext/Digest/MD5/typemap lib/Switch.pm + !> lib/Test/Harness.pm lib/Test/Harness/Assert.pm + !> lib/Test/Harness/Changes lib/Test/Harness/Iterator.pm + !> lib/Test/Harness/Straps.pm lib/Test/Harness/t/00compile.t + !> lib/Test/Harness/t/assert.t lib/Test/Harness/t/callback.t + !> lib/Test/Harness/t/pod.t lib/Test/Harness/t/strap-analyze.t + !> lib/Test/Harness/t/strap.t lib/Test/Harness/t/test-harness.t + !> utils.lst utils/Makefile vms/descrip_mms.template + !> win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 21889] By: nicholas on 2003/12/13 15:55:57 + Log: Integrate: + [ 21859] + Math::BigInt::Scalar is only for tests. + Move it under t/lib. + + [ 21860] + Forgot to update the MANIFEST. + + [ 21861] + Subject: [PATCH] Math::BigInt v1.67 (pre-release) + From: Tels + Date: Sat, 6 Dec 2003 20:19:44 +0100 + Message-Id: <200312062016.50484@bloodgate.com> + + [ 21882] + Subject: [PATCH] Math::BigInt v1.67 released + From: Tels + Date: Fri, 12 Dec 2003 18:47:43 +0100 + Message-Id: <200312121847.49039@bloodgate.com> + Branch: maint-5.8/perl + +> lib/Math/BigInt/t/const_mbf.t lib/Math/BigInt/t/fallback.t + +> t/lib/Math/BigInt/Scalar.pm + - lib/Math/BigInt/Scalar.pm + !> MANIFEST lib/Math/BigFloat.pm lib/Math/BigInt.pm + !> lib/Math/BigInt/Calc.pm lib/Math/BigInt/t/bare_mbf.t + !> lib/Math/BigInt/t/bare_mbi.t lib/Math/BigInt/t/bigfltpm.inc + !> lib/Math/BigInt/t/bigfltpm.t lib/Math/BigInt/t/bigintc.t + !> lib/Math/BigInt/t/bigintpm.inc lib/Math/BigInt/t/bigintpm.t + !> lib/Math/BigInt/t/bigints.t lib/Math/BigInt/t/biglog.t + !> lib/Math/BigInt/t/constant.t lib/Math/BigInt/t/downgrade.t + !> lib/Math/BigInt/t/sub_mbf.t lib/Math/BigInt/t/sub_mbi.t + !> lib/Math/BigInt/t/with_sub.t +____________________________________________________________________________ +[ 21888] By: nicholas on 2003/12/13 14:42:15 + Log: Integrate: + [ 21858] + Subject: [PATCH] casting bug in VMS part of Perl_start_glob + From: "Craig A. Berry" + Date: Sat, 06 Dec 2003 12:44:40 -0600 + Message-ID: <3FD22398.1060506@mac.com> + + [ 21864] + Subject: [PATCH] setenv tweak for VMS + From: "Craig A. Berry" + Date: Sat, 06 Dec 2003 18:13:32 -0600 + Message-ID: <3FD270AC.3000106@mac.com> + + [ 21879] + Subject: [PATCH] environ array fix for VMS + From: "Craig A. Berry" + Date: Thu, 11 Dec 2003 14:35:29 -0600 + Message-ID: <3FD8D511.2030805@mac.com> + + [ 21881] + Subject: [PATCH] d_u32align for win32 + From: Gisle Aas + Date: 11 Dec 2003 01:33:39 -0800 + Message-ID: + Branch: maint-5.8/perl + !> doio.c vms/vms.c win32/config.bc win32/config.gc + !> win32/config.vc +____________________________________________________________________________ +[ 21887] By: nicholas on 2003/12/13 14:12:49 + Log: Integrate: + [ 21873] + Subject: [PATCH perlunicode.pod, encoding.pm] Implicit upgrading docs + From: Autrijus Tang + Date: Tue, 9 Dec 2003 20:39:16 +0800 + Message-ID: <20031209123915.GA1454@not.autrijus.org> + + [ 21877] + Add a mention of the error "DESTROY created new reference + to dead object" in perldiag. + + [ 21878] + Subject: [PATCH] Perl 5.9.0 AUTHORS + From: Mark Leighton Fisher + Message-ID: <3FD8E74F.7000202@mindspring.com> + Date: Thu, 11 Dec 2003 16:53:19 -0500 + Branch: maint-5.8/perl + !> AUTHORS ext/Encode/encoding.pm pod/perldiag.pod + !> pod/perlunicode.pod +____________________________________________________________________________ +[ 21862] By: nick on 2003/12/06 21:16:01 + Log: Win32/MinGW tweaks + A. ENV_IS_CASELESS has trys to free(keysave) when + keysave isn't in scope yet. + B. For default makefile.mk which build with perlhost.h + stuff "live" need to link with g++ to find new/delete etc. + Branch: maint-5.8/perl + ! hv.c win32/makefile.mk +____________________________________________________________________________ +[ 21852] By: nicholas on 2003/12/05 21:09:27 + Log: Integrate: + [ 21851] + Back out the Makefile.PL part of 21808 as requested by Gisle Aas + Branch: maint-5.8/perl + !> ext/Digest/MD5/Makefile.PL +____________________________________________________________________________ +[ 21850] By: nicholas on 2003/12/05 19:44:34 + Log: Integrate: + [ 21843] + Subject: [PATCH] another ext/SDBM_File/sdbm build fix + From: "Craig A. Berry" + Date: Thu, 04 Dec 2003 16:00:03 -0600 + Message-ID: <3FCFAE63.1080106@mac.com> + + [ 21844] + Subject: [REPATCH lib/AutoLoader.t] Test can() with AutoLoader + From: chromatic + Date: Mon, 01 Dec 2003 09:20:21 -0800 + Message-Id: <1070299221.1275.19.camel@localhost> + Branch: maint-5.8/perl + !> ext/SDBM_File/sdbm/Makefile.PL lib/AutoLoader.t +____________________________________________________________________________ +[ 21849] By: nicholas on 2003/12/05 19:26:44 + Log: Integrate: + [ 21837] + Subject: Re: XS modules having problems with CLONE and ithreads unless PERL_NO_GET_CONTEXT is defined + From: Stas Bekman + Date: Wed, 03 Dec 2003 01:41:42 -0800 + Message-ID: <3FCDAFD6.9050106@stason.org> + + [ 21842] + Subject: [PATCH] $^P, eval and caller + From: Paul Johnson + Date: Fri, 5 Dec 2003 00:57:21 +0100 + Message-ID: <20031204235721.GJ26355@pjcj.net> + Branch: maint-5.8/perl + ! mg.c + !> sv.c +____________________________________________________________________________ +[ 21848] By: nicholas on 2003/12/05 18:43:44 + Log: Integrate: + [ 21840] + Subject: Re: a2p.pod not being installed in 5.8.2? + From: Alan Burlison + Date: Thu, 04 Dec 2003 12:14:30 +0000 + Message-ID: <3FCF2526.3030905@sun.com> + + [ 21846] + Subject: [PATCH] Configure gets d_u32align wrong + From: Gisle Aas + Date: 05 Dec 2003 03:47:01 -0800 + Message-ID: + Branch: maint-5.8/perl + !> Configure installperl +____________________________________________________________________________ +[ 21847] By: nicholas on 2003/12/05 18:25:53 + Log: Integrate: + [ 21841] + Fix File::Copy with hard links on Windows. + + Subject: [PATCH] Re: perl @ 21830 + From: Steve Hay + Date: Wed, 03 Dec 2003 10:53:02 +0000 + Message-ID: <3FCDC08E.7080800@uk.radan.com> + + and + Date: Thu, 04 Dec 2003 11:02:22 +0000 + Message-ID: <3FCF143E.1040905@uk.radan.com> + Branch: maint-5.8/perl + !> lib/File/Copy.pm lib/File/Copy.t +____________________________________________________________________________ +[ 21839] By: nicholas on 2003/12/03 21:51:48 + Log: Integrate: + [ 21832] + Better docs for the special code blocks, based on : + Subject: [DOCPATCH] BEGIN, CHECK, INIT, END explained more + From: Elizabeth Mattijsen + Date: Sat, 29 Nov 2003 23:15:56 +0100 + Message-Id: + + [ 21835] + FAQ sync. + Branch: maint-5.8/perl + !> pod/perlfaq1.pod pod/perlfaq2.pod pod/perlfaq3.pod + !> pod/perlfaq4.pod pod/perlfaq5.pod pod/perlmod.pod + !> pod/perlsub.pod +____________________________________________________________________________ +[ 21838] By: nicholas on 2003/12/03 19:13:35 + Log: Remove duplicate call to PERL_HASH in delete + Transpires that in maint there just aren't enough shared hash SVs + to make the check in hv.c worth it. + Branch: maint-5.8/perl + ! hv.c +____________________________________________________________________________ +[ 21831] By: nicholas on 2003/12/02 20:35:22 + Log: Integrate: + (The hv.c changes of 17740) + [ 17740] + Clean up copy-on-write macros and debug facilities (new flag 'C'). + Handle CoW in hashes: + Subject: Re: why would tr/// be performing hash copies? + From: Nicholas Clark + Date: Sun, 18 Aug 2002 23:17:01 +0100 + Message-id: <20020818221700.GD294@Bagpuss.unfortu.net> + + [ 21747] + merge hv_exists and hv_exists_ent into S_hv_exists_common + + [ 21750] + integrate hv_delete and hv_delete_ent into hv_delete_common + + [ 21753] + merge hv_fetch and hv_fetch_ent into hv_fetch_common + remove S_hv_fetch_flags + hv.c now 13% smaller than when I started. hv_store TODO + + [ 21758] + Merge sv_store_flags and sv_store_ent into sv_store_common + + [ 21760] + Shift negative klen/flags games from hv_fetch_common out to hv_fetch + + [ 21765] + Tweaks to S_hv_delete_common: + make the magic call hv_fetch_common rather than ent-or-not + grab the hash from a shared hash key scalar if possible + use masked flags rather than flags for the comparison + + [ 21766] + Move the negative key -> utf8 flag conversion out to hv_delete + + [ 21768] + Shift negative klen/flags games from hv_exists_common out to hv_exists + + [ 21769] + Shift negative klen/flags games from hv_store_common out to hv_store + + [ 21770] + Farewell hv_exists_common - exists is now a call to fetch + (with the exists magic handling moved into fetch) + + [ 21771] + "Space Is a Province of Brazil" + Farewell, hv_store_common. Store is now part of Fetch. + All tests pass. hv.c 15% smaller than when I started all this + + [ 21772] + Reorder functions in hv.c so that callers of hv_fetch_common are all + close to it. + + [ 21779] + D'oh. Mistake in the DYNAMIC_ENV_FETCH conditional code + reported by Craig Berry + + [ 21781] + Tweak the order of initialisation of oentry in hv_fetch_common - + C source now cleaner, but optimised object file still the same size. + + [ 21782] + Should fix the infinite loop on a dynamic %ENV fetch + Branch: maint-5.8/perl + ! hv.c + !> embed.fnc embed.h proto.h +____________________________________________________________________________ +[ 21830] By: nicholas on 2003/11/30 21:36:13 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21829] By: nicholas on 2003/11/30 21:35:03 + Log: Integrate: + [ 21827] + Keep installing xsubpp in lib/ExtUtils, + so MakeMaker can find it. + Branch: maint-5.8/perl + ! installperl +____________________________________________________________________________ +[ 21825] By: nicholas on 2003/11/30 20:19:43 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 21824] By: nicholas on 2003/11/30 19:00:33 + Log: Integrate: + [ 21802] + POSIX::isXXX(undef) segfaulted. (bug #24554.) + + [ 21823] + Subject: Re: [perl #24554] Segfault in POSIX module + From: SADAHIRO Tomoyuki + Date: Sat, 29 Nov 2003 23:32:38 +0900 + Message-Id: <20031129233010.8E2F.BQW10602@nifty.com> + + (plus a test for the stringification of references + passed to POSIX::isXXX()) + Branch: maint-5.8/perl + !> ext/POSIX/POSIX.xs ext/POSIX/t/is.t ext/POSIX/t/posix.t +____________________________________________________________________________ +[ 21822] By: nicholas on 2003/11/30 10:35:31 + Log: Integrate: + [ 21810] + Update Unicode::Collate to 0.31 (Only the .pm version for now) + + [ 21812] + Update Unicode::Normalize to 0.28 + Branch: maint-5.8/perl + +> ext/Unicode/Normalize/t/illegal.t + +> ext/Unicode/Normalize/t/null.t ext/Unicode/Normalize/t/short.t + +> lib/Unicode/Collate/t/illegal.t + +> lib/Unicode/Collate/t/illegalp.t + !> MANIFEST ext/Unicode/Normalize/Changes + !> ext/Unicode/Normalize/Normalize.pm + !> ext/Unicode/Normalize/Normalize.xs + !> ext/Unicode/Normalize/README lib/Unicode/Collate.pm + !> lib/Unicode/Collate/Changes lib/Unicode/Collate/README + !> lib/Unicode/Collate/t/version.t +____________________________________________________________________________ +[ 21821] By: nicholas on 2003/11/30 10:24:55 + Log: Integrate: + [ 21807] + Update Digest to 1.03 + + [ 21808] + Update to Digest::MD5 2.31 + + [ 21809] + D'oh! Forgot to lib/Digest/base.pm + + [ 21811] + D'oh! This has been moved to lib/Digest/t/digest.t but not deleted. + Branch: maint-5.8/perl + +> ext/Digest/MD5/t/bits.t lib/Digest/base.pm lib/Digest/t/base.t + +> lib/Digest/t/digest.t + - lib/Digest.t + !> MANIFEST Porting/Maintainers.pl ext/Digest/MD5/Changes + !> ext/Digest/MD5/MD5.pm ext/Digest/MD5/Makefile.PL + !> ext/Digest/MD5/t/badfile.t ext/Digest/MD5/t/files.t + !> lib/Digest.pm +____________________________________________________________________________ +[ 21820] By: nicholas on 2003/11/30 10:11:14 + Log: Integrate all the t/op/readline.t changes: + [ 19069] + Subject: [PATCH] Re: [perl #21614] 5.8.0 Unbalanced string table refcount + From: Nicholas Clark + Date: Tue, 25 Mar 2003 22:59:17 +0000 + Message-ID: <20030325225917.GE284@Bagpuss.unfortu.net> + + [ 19069] + Subject: [PATCH] Re: [perl #21614] 5.8.0 Unbalanced string table refcount + From: Nicholas Clark + Date: Tue, 25 Mar 2003 22:59:17 +0000 + Message-ID: <20030325225917.GE284@Bagpuss.unfortu.net> + + [ 19071] + Better version of change #19069 + Subject: [PATCH] Re: [PATCH] Re: [perl #21614] 5.8.0 Unbalanced string table refcount + From: Nicholas Clark + Date: Wed, 26 Mar 2003 23:01:46 +0000 + Message-ID: <20030326230145.GC279@Bagpuss.unfortu.net> + + [ 19267] + Subject: [PATCH] readline.t tweak for VMS + From: "Craig A. Berry" + Date: Thu, 17 Apr 2003 17:18:19 -0500 + Message-ID: <3E9F282B.6090603@mac.com> + + [ 20431] + More runperl(switches => ...) finds (bleadperl only). + + [ 21787] + Subject: [PATCH] Re: bug or a feature? + From: Torsten Foertsch + Date: Sat, 22 Nov 2003 13:15:53 +0100 + Message-Id: <200311221315.58539.torsten.foertsch@gmx.net> + + and + Date: Sat, 22 Nov 2003 14:21:45 +0100 + Message-Id: <200311221421.48940.torsten.foertsch@gmx.net> + (test moved to t/op/readline.t) + + [ 21794] + Arguments to skip were the wrong way round, hence why all the *BSDs + were failing + Branch: maint-5.8/perl + ! sv.c t/op/readline.t + !> pp_hot.c +____________________________________________________________________________ +[ 21819] By: nicholas on 2003/11/30 09:57:11 + Log: Integrate: + [ 21805] + Silence gcc 2.95 warning + (Its trace flow isn't good enough to realise that there is no problem) + Branch: maint-5.8/perl + !> pp_hot.c +____________________________________________________________________________ +[ 21818] By: nicholas on 2003/11/30 09:43:55 + Log: Integrate: + [ 21800] + Fix a regression introduced by change #21694 on sprintf() + with long doubles, by disabling the specific optimisation + path in this case ; remove a unnecessary cast ; add a new + test file for miscellaneous sprintf() test that don't fit + in the t/op/sprintf.t framework. + + [ 21804] + Gconvert actually takes type NV, while nv may be either double + or long double (depending on some conditional code) + Rafael and I think that this cast should work. + + [ 21806] + When Gconvert is a macro around sprintf with a .* format we need + to cast to int (in case STRLEN isn't the same size as int) + gcc issues a warning even when it is the same size + Branch: maint-5.8/perl + +> t/op/sprintf2.t + !> MANIFEST sv.c +____________________________________________________________________________ +[ 21817] By: nicholas on 2003/11/30 09:25:20 + Log: Copy SvIsCOW(sv) and SvIsCOW_shared_hash(sv) from blead + (Each is part of separate much larger changes, so can't integrate) + Branch: maint-5.8/perl + ! sv.h +____________________________________________________________________________ +[ 21816] By: nicholas on 2003/11/29 21:15:29 + Log: Integrate: + [ 21799] + Subject: [patch pod/perlsec.pod] (was Re: why PERL5LIB is ignored when -T is in effect) + From: Stas Bekman + Date: Fri, 28 Nov 2003 14:42:25 -0800 + Message-ID: <3FC7CF51.7060804@stason.org> + + [ 21813] + Remove whitespace from ends of lines (simply because it irritates me) + Branch: maint-5.8/perl + !> pod/perlsec.pod utils/h2xs.PL +____________________________________________________________________________ +[ 21815] By: nicholas on 2003/11/29 21:15:05 + Log: Integrate: + [ 21797] + Subject: Re: [perl #24245] File::Copy::copy damages hard linked files + From: Slaven Rezic + Date: 19 Oct 2003 19:11:31 +0200 + Message-ID: <87smlprw3g.fsf@vran.herceg.de> + (with further tweaks) + Branch: maint-5.8/perl + !> lib/File/Copy.pm lib/File/Copy.t +____________________________________________________________________________ +[ 21803] By: nicholas on 2003/11/29 13:09:40 + Log: Integrate: + It's back! + [ 21449] + Subject: [PATCH] SIGN => 1 support for MakeMaker + From: Autrijus Tang + Date: Tue, 14 Oct 2003 18:32:28 +0800 + Message-Id: <1066127547.65845.35.camel@localhost> + + [ 21652] + Upgrade to ExtUtils::MakeMaker 6.19 + + [ 21675] + Upgrade to MakeMaker 6.20. + + [ 21702] + Upgrade to MakeMaker 6.21. + Branch: maint-5.8/perl + +> lib/ExtUtils/t/parse_version.t + +> t/lib/MakeMaker/Test/Setup/BFD.pm + +> t/lib/MakeMaker/Test/Setup/Problem.pm + - lib/ExtUtils/t/00setup_dummy.t + - lib/ExtUtils/t/zz_cleanup_dummy.t + ! lib/ExtUtils/MM_Any.pm lib/ExtUtils/MM_Unix.pm + !> (integrate 37 files) +____________________________________________________________________________ +[ 21801] By: nicholas on 2003/11/29 11:05:18 + Log: Integrate: + [ 21655] + Temporary kludge to allow SDBM_File being built + with MakeMaker 6.19. + + [ 21657] + Subject: Re: [ANNOUNCE] ExtUtils::MakeMaker 6.19 + From: Michael G Schwern + Date: Tue, 4 Nov 2003 17:59:13 -0800 + Message-ID: <20031105015913.GL15406@localhost.comcast.net> + + Replaces the temporary kludge (#21655). + + [ 21710] + Subject: [PATCH] Last stab at sdbm/Makefile.PL + From: Michael G Schwern + Date: Tue, 11 Nov 2003 21:02:30 -0800 + Message-ID: <20031112050230.GO6874@localhost.comcast.net> + Branch: maint-5.8/perl + !> ext/SDBM_File/sdbm/Makefile.PL +____________________________________________________________________________ +[ 21796] By: nicholas on 2003/11/28 20:05:30 + Log: Integrate: + [ 21788] + Add Torsten Foertsch to AUTHORS (patches plus tests are what we like) + + [ 21789] + Marcus Holland-Moritz is now the maintainer of Devel::PPPort. + PerlIO and threads are not on CPAN. + + [ 21795] + Subject: [PATCH] Fix perl 5.8 and 5.9 to build on latest VOS + From: "Green, Paul" + Date: Thu, 27 Nov 2003 21:51:26 -0500 + Message-ID: + Branch: maint-5.8/perl + !> AUTHORS Porting/Maintainers.pl hints/vos.sh +____________________________________________________________________________ +[ 21786] By: nicholas on 2003/11/25 19:48:30 + Log: re-run pod/buildtoc + Branch: maint-5.8/perl + ! pod.lst pod/perl.pod pod/perltoc.pod vms/descrip_mms.template + ! win32/pod.mak +____________________________________________________________________________ +[ 21785] By: nicholas on 2003/11/25 19:42:14 + Log: Re-order entries + Branch: maint-5.8/perl + ! MANIFEST +____________________________________________________________________________ +[ 21784] By: nicholas on 2003/11/25 19:25:25 + Log: Integrate: + [ 21780] + Subject: Re: [perl #24439] 64 bit build failure on Solaris 9 + From: Andy Dougherty + Date: Thu, 20 Nov 2003 09:38:05 -0500 (EST) + Message-ID: + + and : + Date: Fri, 21 Nov 2003 09:36:24 -0500 (EST) + Message-ID: + + [ 21783] + Subject: remove hardcoded version number from cygwin/perlld.in + From: Yitzchak Scott-Thoennes + Date: Mon, 24 Nov 2003 08:11:36 -0800 + Message-ID: <20031124161136.GC2656@efn.org> + Branch: maint-5.8/perl + !> cygwin/Makefile.SHs cygwin/perlld.in hints/solaris_2.sh +____________________________________________________________________________ +[ 21778] By: nicholas on 2003/11/22 23:21:32 + Log: Integrate: + [ 21706] + Subject: Re: [perl #24460] [DOC PATCH] the begincheck program + From: Tom Phoenix + Date: Tue, 11 Nov 2003 15:50:35 -0800 (PST) + Message-Id: + + [ 21751] + Update the runops stuff in perlguts + + [ 21754] + Subject: [docpatch] PerlIO layers in perlrun.pod and PerlIO.pm + From: Iain Truskett + Date: Thu, 20 Nov 2003 00:41:33 +1100 + Message-ID: <20031119134132.GG21314@gytha.anu.edu.au> + Branch: maint-5.8/perl + !> lib/PerlIO.pm pod/perlguts.pod pod/perlmod.pod pod/perlrun.pod +____________________________________________________________________________ +[ 21777] By: nicholas on 2003/11/22 23:17:43 + Log: Integrate: + [ 21697] + Subject: [PATCH 5.8.2 @21574] make install: line noise + From: Ilya Zakharevich + Date: Tue, 4 Nov 2003 20:10:16 -0800 + Message-ID: <20031105041016.GA2639@math.berkeley.edu> + + and part of + Subject: [PATCH 5.8.2 @21574] make install: PREFIX and DESTDIR + From: Ilya Zakharevich + Date: Tue, 4 Nov 2003 20:18:37 -0800 + Message-ID: <20031105041836.GA2649@math.berkeley.edu> + + (I've left out the PREFIX part for now) + + [ 21708] + Subject: [PATCH 5.8.2 @21574] make install not installing fully + From: Ilya Zakharevich + Date: Tue, 4 Nov 2003 20:07:25 -0800 + Message-ID: <20031105040725.GA2629@math.berkeley.edu> + + [ 21723] + Include "SCCS" in the list of directory names that should + be ignored by installperl. + + [ 21739] + Subject: Re: [perl #24493] install.html not working + From: Slaven Rezic + Date: 16 Nov 2003 20:52:29 +0100 + Message-ID: <87d6bsw0oy.fsf@vran.herceg.de> + + [ 21740] + Install instmodsh and xsubpp in bin/ along the other utilities. + + [ 21741] + Complement of change #21740 for Windows. + (I have the feeling that it's already subtly broken on VMS) + Branch: maint-5.8/perl + +> utils/instmodsh.PL utils/xsubpp.PL + !> MANIFEST Makefile.SH installhtml installperl os2/Makefile.SHs + !> utils.lst utils/Makefile win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 21776] By: nicholas on 2003/11/22 22:48:49 + Log: Integrate: + [ 21663] + Subject: Re: Smoke [5.9.0] 21474 FAIL(F) darwin 6.8 (darwin/1 cpu) + From: Slaven Rezic + Date: 20 Oct 2003 22:39:28 +0200 + Message-Id: <87oewbiqyn.fsf@vran.herceg.de> + Branch: maint-5.8/perl + !> lib/filetest.t +____________________________________________________________________________ +[ 21775] By: nicholas on 2003/11/22 22:35:25 + Log: Integrate: + [ 21732] + Subject: [PATCH] configpm, our $summary : unique + From: Elizabeth Mattijsen + Date: Sat, 15 Nov 2003 22:18:32 +0100 + Message-Id: + (plus comments) + + [ 21733] + Subject: [PATCH] Re:ext/threads/t/problem.t (was: Problems with mod_perl 1.12 (?) and ActivePerl 5.8.1) + From: Elizabeth Mattijsen + Date: Sat, 15 Nov 2003 23:22:16 +0100 + Message-Id: + + [ 21752] + Fix bug [perl #24508] Wrong assignment in nested assignment + together with subroutine call + Apparently concat still doesn't deal correctly with lexicals + in all cases. Disable the whole TARGET_MY optimisation for it. + (and remove the corresponding code from the peephole optimiser.) + Branch: maint-5.8/perl + ! opcode.h + !> configpm ext/threads/t/problems.t op.c opcode.pl t/op/concat.t +____________________________________________________________________________ +[ 21763] By: nicholas on 2003/11/21 21:38:15 + Log: Test all permuations of utf8 flags on hashes and keys + Branch: maint-5.8/perl + ! ext/XS/APItest/t/hash.t +____________________________________________________________________________ +[ 21762] By: nicholas on 2003/11/21 20:41:03 + Log: Refactor hash API tests (prior to some additions) + Branch: maint-5.8/perl + ! ext/XS/APItest/t/hash.t +____________________________________________________________________________ +[ 21761] By: nicholas on 2003/11/21 20:20:04 + Log: Integrate: + [ 21742] + Whoops. We weren't actually testing hv_store_ent + We are now. Plus test hv_store for an initially empty hash. + Branch: maint-5.8/perl + !> ext/XS/APItest/APItest.xs ext/XS/APItest/t/hash.t +____________________________________________________________________________ +[ 21759] By: nicholas on 2003/11/20 22:17:24 + Log: perforce-- # Can't integrate a brange and an edit in one shot + + mop up the file it failed on. + + Integrate: + [ 21735] + utf8 keys now work for tied hashes via hv_fetch, hv_store, hv_delete + (pp functions use the _ent variants, and as the implementation is + duplicated, these bugs aren't tested, and aren't noticed) + Branch: maint-5.8/perl + !> ext/XS/APItest/t/hash.t +____________________________________________________________________________ +[ 21757] By: nicholas on 2003/11/20 19:23:15 + Log: Integrate: + [ 21756] + Subject: [PATCH] promote hv_clear_placeholders to perl API + From: Alan Burlison + Date: Thu, 20 Nov 2003 10:34:30 +0000 + Message-ID: <3FBC98B6.6090909@sun.com> + Branch: maint-5.8/perl + !> embed.fnc embed.h global.sym hv.c pod/perlapi.pod proto.h + !> universal.c +____________________________________________________________________________ +[ 21749] By: nicholas on 2003/11/19 20:08:42 + Log: Integrate: + [ 21748] + Subject: [PATCH] clear of empty locked hash SEGVs + From: Alan Burlison + Date: Wed, 19 Nov 2003 14:39:03 +0000 + Message-ID: <3FBB8087.20206@sun.com> + Branch: maint-5.8/perl + !> hv.c lib/Hash/Util.t +____________________________________________________________________________ +[ 21745] By: nicholas on 2003/11/19 18:42:14 + Log: Integrate: + [ 21743] + Restore errno after having read $^E (like for $!) + to preserve errno from unfortunate side-effects. + Branch: maint-5.8/perl + !> mg.c +____________________________________________________________________________ +[ 21738] By: nicholas on 2003/11/16 21:49:45 + Log: Integrate: + [ 21737] + Ooops. left an XXX comment in, and worse still it's a // comment + Branch: maint-5.8/perl + !> hv.c +____________________________________________________________________________ +[ 21736] By: nicholas on 2003/11/16 21:27:24 + Log: Integrate: + [ 21734] + Accessing unicode keys in tie hashes via hv_exists was broken. + (pp_exists uses hv_exists_ent, which isn't broken) + I expect an equivalent bug in hv_delete + + [ 21735] + utf8 keys now work for tied hashes via hv_fetch, hv_store, hv_delete + (pp functions use the _ent variants, and as the implementation is + duplicated, these bugs aren't tested, and aren't noticed) + Branch: maint-5.8/perl + +> ext/XS/APItest/t/hash.t + !> MANIFEST ext/XS/APItest/APItest.pm ext/XS/APItest/APItest.xs + !> ext/XS/APItest/MANIFEST hv.c +____________________________________________________________________________ +[ 21731] By: nicholas on 2003/11/15 22:25:53 + Log: Integrate: + [ 21712] + Enable hints to create call-back units that can act when + a specific variable is *not* set (like -Uuselargefiles) + + [ 21713] + Simplified the reading + Branch: maint-5.8/perl + !> Configure hints/README.hints hints/solaris_2.sh +____________________________________________________________________________ +[ 21730] By: nicholas on 2003/11/15 14:42:58 + Log: Integrate: + [ 21728] + Update perlhist with 5.6.2. + Branch: maint-5.8/perl + !> pod/perlhist.pod +____________________________________________________________________________ +[ 21721] By: nicholas on 2003/11/13 21:25:56 + Log: Integrate: + [ 21673] + Subject: [PATCH] Be sure to use -fPIC not -fpic on Linux/SPARC + From: Andy Dougherty + Date: Wed, 5 Nov 2003 17:19:03 -0500 (EST) + Message-ID: + Branch: maint-5.8/perl + !> hints/linux.sh +____________________________________________________________________________ +[ 21720] By: nicholas on 2003/11/13 21:07:58 + Log: Integrate: + [ 21677] + Subject: [PATCH 5.8.2 @21574] OS/2 docu + From: Ilya Zakharevich + Date: Thu, 6 Nov 2003 23:26:18 -0800 + Message-ID: <20031107072618.GA4370@math.berkeley.edu> + + [ 21687] + Subject: [PATCH 5.6.2-RC1 pod/perlhist.pod] Updated. + From: Abigail + Date: Sat, 8 Nov 2003 18:51:30 +0100 + Message-Id: <20031108175130.GA22273@abigail.nl> + + [ 21691] + Update the list of pumpkings in perlhist.pod. + Branch: maint-5.8/perl + !> os2/Changes pod/perlhist.pod +____________________________________________________________________________ +[ 21719] By: nicholas on 2003/11/13 20:59:26 + Log: Integrate: + [ 21718] + Subject: Re: Empty subroutine as object method segfaults in 5.8.2 (sometimes) + From: Enache Adrian + Date: Tue, 11 Nov 2003 15:25:29 +0200 + Message-ID: <20031111132529.GB1271@ratsnest.hole> + Branch: maint-5.8/perl + ! op.c +____________________________________________________________________________ +[ 21717] By: nicholas on 2003/11/13 20:29:04 + Log: Integrate: + [ 21674] + Subject: [PATCH blead] Re: [perl #24248] taint propagation regression, + tests fail to spot this + From: Rick Delaney + Date: Wed, 5 Nov 2003 23:02:41 -0500 + Message-Id: <20031105230241.D13585@biff.bort.ca> + + [ 21676] + bugid #24407: numeric key for shared hash got stringified using + wrong interpreter, and thus got malloced into the wrong thread + memory pool + + [ 21694] + Subject: [PATCH 5.8.2 @21574] sprintf() painfully slow + From: Ilya Zakharevich + Date: Mon, 3 Nov 2003 20:27:39 -0800 + Message-ID: <20031104042739.GA1697@math.berkeley.edu> + + Subject: Re: [PATCH 5.8.2 @21574] sprintf() painfully slow + From: Ilya Zakharevich + Date: Mon, 3 Nov 2003 20:57:48 -0800 + Message-ID: <20031104045748.GA1826@math.berkeley.edu> + + [ 21714] + Fix bug [perl #24380] : assigning to a hash in list + or scalar context yielded a wrong value if the list + contained duplicated keys for the hash. This is fixed + by counting the number of duplicate keys and trimming + the stack by the corresponding number of items. + Branch: maint-5.8/perl + ! t/op/taint.t + !> ext/threads/shared/shared.xs ext/threads/shared/t/hv_simple.t + !> pp_ctl.c pp_hot.c sv.c t/op/hashassign.t +____________________________________________________________________________ +[ 21715] By: nicholas on 2003/11/13 19:57:33 + Log: Integrate: + [ 21662] + Subject: Re: 'make minitest' fails for op/cproto and op/pat + From: Michael G Schwern + Date: Wed, 5 Nov 2003 06:26:36 -0800 + Message-Id: <20031105142635.GA22761@localhost.comcast.net> + + [ 21671] + Subject: Re: [perl #24398] Benchmark.pm cmpthese segfault + From: Stas Bekman + Date: Wed, 05 Nov 2003 00:50:25 -0800 + Message-ID: <3FA8B9D1.2020806@stason.org> + + [ 21672] + Subject: [patch t/op/hash.t] extending the hash attack test + From: Stas Bekman + Date: Tue, 04 Nov 2003 14:33:09 -0800 + Message-ID: <3FA82925.7020703@stason.org> + Branch: maint-5.8/perl + !> lib/Benchmark.pm t/op/cproto.t t/op/hash.t +____________________________________________________________________________ +[ 21704] By: nicholas on 2003/11/11 20:48:54 + Log: Integrate: + [ 21693] + Subject: [PATCH-5.8.2 for WinCE] must copy changes from win32/makeifle.mk to wince/makefile.ce + From: Vadim Konovalov + Date: Sun, 9 Nov 2003 13:31:59 +0300 + Message-ID: <93187393948.20031109133159@mail.wplus.net> + Branch: maint-5.8/perl + !> wince/Makefile.ce +____________________________________________________________________________ +[ 21703] By: nicholas on 2003/11/11 20:21:13 + Log: Update changes + Branch: maint-5.8/perl + ! Changes Changes5.8.2 +____________________________________________________________________________ +[ 21701] By: nicholas on 2003/11/11 20:08:50 + Log: Remove carriage returns (which had slipped in) + Branch: maint-5.8/perl + ! win32/Makefile win32/makefile.mk wince/compile-all.bat + ! wince/registry.bat +____________________________________________________________________________ +[ 21700] By: nicholas on 2003/11/11 19:28:07 + Log: perldelta changeover + Branch: maint-5.8/perl + ! pod/perldelta.pod +____________________________________________________________________________ +[ 21699] By: nicholas on 2003/11/11 19:21:20 + Log: Disarm the maint branch + Branch: maint-5.8/perl + +> Changes5.8.2 pod/perl582delta.pod + ! Changes MANIFEST patchlevel.h diff --git a/gnu/usr.bin/perl/Changes5.8.4 b/gnu/usr.bin/perl/Changes5.8.4 new file mode 100644 index 00000000000..604a524207d --- /dev/null +++ b/gnu/usr.bin/perl/Changes5.8.4 @@ -0,0 +1,2490 @@ +Please note: This file provides a complete, temporally ordered log of +changes that went into every version of Perl. If you'd like more +detailed information, please consult the comments in the individual +patches posted to the perl5-porters mailing list. Patches for each +individual change may also be obtained through ftp and rsync--see +pod/perlhack.pod for the details. + +For information on what's new in this release, see pod/perldelta.pod. + +[The "CAST AND CREW" list has been moved to AUTHORS.] + +NOTE: Each change entry shows the change number; who checked it into the +repository; when; description of the change; which branch the change +happened in; and the affected files. The file lists have a short symbolic +indicator: + + ! modified + + added + - deleted + +> branched (from elsewhere) + !> merged changes (from elsewhere) + +The Message-Ids in the change entries refer to the email messages sent +to the perl5-porters mailing list. You can retrieve the messages for +example from http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ + +-------------- +Version v5.8.4 Maintenance release working toward v5.8.4 +-------------- +____________________________________________________________________________ +[ 22729] By: nicholas on 2004/04/21 18:54:21 + Log: New sample config files. + Also add usemallocwrap to the ARM Cross config.sh - I'm guessing that + as this is the only new symbol, it should be sufficient to make it + work. + Branch: maint-5.8/perl + ! Cross/config.sh-arm-linux Porting/config.sh Porting/config_H +____________________________________________________________________________ +[ 22728] By: nicholas on 2004/04/21 15:25:46 + Log: Integrate: + [ 22727] + Subject: [perl #28456] Typo in perlipc man page, and suggestions for same + From: Axel Boldt (via RT) + Message-ID: + Date: 11 Apr 2004 13:08:17 -0000 + Branch: maint-5.8/perl + !> pod/perlipc.pod +____________________________________________________________________________ +[ 22726] By: nicholas on 2004/04/21 15:04:07 + Log: Integrate: + [ 21661] + Subject: [PATCH] Modernise INSTALL + From: Gisle Aas + Date: 05 Nov 2003 05:16:25 -0800 + Message-Id: + + [ 22722] + We should be telling people about ..exp, else they use the unexpanded + forms and shaft anyone who installs a private perl within ~ + + [ 22723] + INSTALL didn't mention the 5.8.2 hash changes. Fixed + + [ 22724] + This should be L<> + + [ 22725] + Punt the "reporting bugs" section to the top. + Reorder the description of what to do, to start with the most common + case. + Clarify "how to report bugs effectively" (and why it benefits you) + + plus some edits to undo Gisle's "modernisation" of 5.8.0 to 5.9.0 + Branch: maint-5.8/perl + ! INSTALL +____________________________________________________________________________ +[ 22720] By: nicholas on 2004/04/20 16:12:49 + Log: Simpler suggstion to resolve the #!/usr/bin/suidperl vs. the set uid + binary must have fd script conundrum, as suggested by Brendan O'Dea + Plus restore the more helpful error message from 22694 and the gist + of the perl584delta changes from 22700 + Branch: maint-5.8/perl + ! installperl perl.c pod/perl584delta.pod +____________________________________________________________________________ +[ 22719] By: nicholas on 2004/04/20 15:11:16 + Log: Revert 22694 + Branch: maint-5.8/perl + ! installperl perl.c +____________________________________________________________________________ +[ 22718] By: nicholas on 2004/04/20 14:43:18 + Log: Revert 22700 (as part of changes suggested by Brendan O'Dea) + Branch: maint-5.8/perl + ! INSTALL installperl perl.c pod/perl584delta.pod + ! pod/perldiag.pod pod/perlsec.pod +____________________________________________________________________________ +[ 22711] By: nicholas on 2004/04/17 14:28:57 + Log: Integrate: + [ 22706] + On Linux-PPC, using gcc, downgrade to the -O1 optimisation + level (with -O2 miniperl behaves really badly.) + Branch: maint-5.8/perl + !> hints/linux.sh +____________________________________________________________________________ +[ 22710] By: nicholas on 2004/04/17 14:02:04 + Log: Subject: spelling + From: Jarkko Hietaniemi + Date: Fri, 16 Apr 2004 21:18:18 +0300 (EEST) + Message-Id: <200404161818.i3GIIILh391648@kosh.hut.fi> + Branch: maint-5.8/perl + ! pod/perl584delta.pod +____________________________________________________________________________ +[ 22709] By: nicholas on 2004/04/17 14:01:17 + Log: Subject: [PATCH] for debugger options (against RC2) + From: Richard.Foley@t-online.de (Richard Foley) + Message-Id: <200404171150.47561.richard.foley@rfi.net> + Date: Sat, 17 Apr 2004 11:50:47 +0200 + Branch: maint-5.8/perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 22707] By: nicholas on 2004/04/17 12:33:57 + Log: Undo RC2 + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 22705] By: nicholas on 2004/04/15 22:39:40 + Log: This is RC2 + Branch: maint-5.8/perl + ! patchlevel.h pod/perlhist.pod +____________________________________________________________________________ +[ 22704] By: nicholas on 2004/04/15 20:51:58 + Log: Rebuild toc + Branch: maint-5.8/perl + ! pod/perltoc.pod +____________________________________________________________________________ +[ 22703] By: nicholas on 2004/04/15 20:27:00 + Log: More perldelta updates + Branch: maint-5.8/perl + ! pod/perl584delta.pod +____________________________________________________________________________ +[ 22702] By: nicholas on 2004/04/15 20:02:23 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22701] By: nicholas on 2004/04/15 18:19:57 + Log: Integrate: + [ 22691] + Subject: re: [PATCH] for bug 28525: Buffer overflow issue in the Win32 distribution of 5.8.3 + From: Jan Dubois + Date: Tue, 13 Apr 2004 19:49:32 -0700 + Message-ID: hints/openbsd.sh win32/win32.c +____________________________________________________________________________ +[ 22700] By: nicholas on 2004/04/15 18:16:44 + Log: The set uid perl is now called setuidperl. Not suidperl. + Which I discover is hardlinked from sperl by ./installperl + elsewhere. Helpfully confusing installperl script. + Branch: maint-5.8/perl + ! INSTALL installperl perl.c pod/perl584delta.pod + ! pod/perldiag.pod pod/perlsec.pod +____________________________________________________________________________ +[ 22699] By: nicholas on 2004/04/15 16:08:44 + Log: Integrate: + [ 22673] + Upgrade to Time::HiRes 1.57. + + [ 22675] + Upgrade to Digest 1.06. + + [ 22680] + Upgrade to Time::HiRes 1.59. + Branch: maint-5.8/perl + !> ext/Time/HiRes/Changes ext/Time/HiRes/HiRes.pm + !> ext/Time/HiRes/HiRes.xs lib/Digest.pm +____________________________________________________________________________ +[ 22698] By: nicholas on 2004/04/15 14:44:12 + Log: Clarify AIX and win32's malloc wrapping + Branch: maint-5.8/perl + ! pod/perl584delta.pod +____________________________________________________________________________ +[ 22694] By: nicholas on 2004/04/14 13:47:19 + Log: For maint, I don't think that we can have sperl go sulky if invoked + from a #! line. So keep .../sperl functional, and have the /dev/fd/... + only set ID exectuable reside under a different name (suidperl) + Branch: maint-5.8/perl + ! installperl perl.c +____________________________________________________________________________ +[ 22690] By: nicholas on 2004/04/13 12:42:07 + Log: Integrate: + [ 22689] + Borland C doesn't like PERL_MALLOC_WRAP. + Until I know why, the fix is to disable it. + Branch: maint-5.8/perl + !> win32/config_H.bc +____________________________________________________________________________ +[ 22684] By: nicholas on 2004/04/09 22:02:53 + Log: Integrate: + [ 22665] + AIX-4 with xlc does not like malloc wrap + + [ 22666] + Test drives are fun. Implement ccversion for Itanium HP-UX 11.23 + Branch: maint-5.8/perl + !> hints/aix_4.sh hints/hpux.sh +____________________________________________________________________________ +[ 22683] By: nicholas on 2004/04/09 15:50:37 + Log: Subject: [PATCH RC1] install reentr.(inc|h) on VMS with non-threaded Perl + From: "Craig A. Berry" + Message-ID: <4076007C.3040708@mac.com> + Date: Thu, 08 Apr 2004 20:46:36 -0500 + Branch: maint-5.8/perl + ! vms/descrip_mms.template +____________________________________________________________________________ +[ 22679] By: nicholas on 2004/04/08 15:22:02 + Log: Subject: [PATCH] Re: 5.8.4 RC1 + From: Steve Hay + Message-ID: <407508ED.7070400@uk.radan.com> + Date: Thu, 08 Apr 2004 09:10:21 +0100 + Branch: maint-5.8/perl + ! win32/makefile.mk +____________________________________________________________________________ +[ 22678] By: nicholas on 2004/04/08 15:19:46 + Log: Integrate: + [ 22651] + [perl #28171] wantarray docs should mention effect of eval { wantarray } + as reported by Tim Bunce. Add a note to this effect in perlfunc, + and regression tests for it. + + [ 22654] + Subject: ref ($proto) || $proto patch + From: Ovid + Date: Sat, 03 Apr 2004 18:59:22 -0800 + Message-ID: <406F7A0A.50702@yahoo.com> + (with minor reformatting) + + [ 22672] + Make gmtime and localtime cross reference each other. + Suggested by Dan Jacobson + Branch: maint-5.8/perl + !> pod/perlfunc.pod pod/perlobj.pod pod/perltoot.pod + !> t/op/wantarray.t +____________________________________________________________________________ +[ 22677] By: nicholas on 2004/04/08 15:03:36 + Log: Improvements from Jarkko + Branch: maint-5.8/perl + ! pod/perl584delta.pod +____________________________________________________________________________ +[ 22676] By: nicholas on 2004/04/08 15:03:21 + Log: Undo RC1 + Branch: maint-5.8/perl + ! patchlevel.h +____________________________________________________________________________ +[ 22661] By: nicholas on 2004/04/05 17:30:22 + Log: This is RC1 + Branch: maint-5.8/perl + ! patchlevel.h pod/perlhist.pod +____________________________________________________________________________ +[ 22660] By: nicholas on 2004/04/05 17:13:22 + Log: Rebuild perltoc.pod and MANIFEST + Branch: maint-5.8/perl + ! MANIFEST pod/perltoc.pod +____________________________________________________________________________ +[ 22659] By: nicholas on 2004/04/05 17:09:33 + Log: Cargo cult 5.8.4 upgrade + Branch: maint-5.8/perl + ! Cross/config.sh-arm-linux NetWare/Makefile README.os2 + ! README.vms epoc/createpkg.pl patchlevel.h plan9/config.plan9 + ! vos/build.cm vos/config.alpha.def vos/config.alpha.h + ! vos/config.ga.def vos/config.ga.h vos/install_perl.cm + ! win32/Makefile win32/config_H.bc win32/config_H.gc + ! win32/config_H.vc win32/config_H.vc64 win32/makefile.mk + ! wince/Makefile.ce +____________________________________________________________________________ +[ 22658] By: nicholas on 2004/04/05 16:27:34 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22657] By: nicholas on 2004/04/05 16:15:56 + Log: Integrate: + [ 22656] + Subject: Re: perldelta584 + From: Craig Berry + Message-ID: <12587569.1081180932766.JavaMail.craigberry@mac.com> + Date: Mon, 05 Apr 2004 11:02:12 -0500 + + (makes malloc wrap the default on VMS) + Branch: maint-5.8/perl + !> configure.com +____________________________________________________________________________ +[ 22655] By: nicholas on 2004/04/05 15:29:40 + Log: Tweaks from Hugo and Liz + Branch: maint-5.8/perl + ! pod/perl584delta.pod +____________________________________________________________________________ +[ 22653] By: nicholas on 2004/04/05 15:18:57 + Log: Integrate: + [ 22649] + More AUTHORS who deserve credit for patches + Branch: maint-5.8/perl + !> AUTHORS +____________________________________________________________________________ +[ 22650] By: nicholas on 2004/04/05 10:31:03 + Log: Updates from Stas Bekman, Brendan O'Dea and Hugo + Branch: maint-5.8/perl + ! pod/perl584delta.pod +____________________________________________________________________________ +[ 22648] By: nicholas on 2004/04/04 22:42:12 + Log: # There is this special biologist word we use for 'stable'. + # It is 'dead'. -- Jack Cohen + Branch: maint-5.8/perl + ! pod/perl584delta.pod +____________________________________________________________________________ +[ 22647] By: nicholas on 2004/04/04 16:43:47 + Log: D'oh. My integration test build is supposed to be configured with + threads enabled. (Committed another conflict) + + Integrate: + [ 22218] + Remove the caveat about detached threads crashing on Windows + (fixed by #22201). Bump up the version of threads.pm. + Branch: maint-5.8/perl + ! ext/threads/threads.pm +____________________________________________________________________________ +[ 22645] By: nicholas on 2004/04/04 14:05:24 + Log: Missed one from 22643 + Branch: maint-5.8/perl + ! lib/Test/Harness.pm +____________________________________________________________________________ +[ 22644] By: nicholas on 2004/04/04 13:50:28 + Log: Integrate: + (the non dual-life modules from:) + [ 22258] + Subject: Re: [perl #15063] /tmp issues + From: Solar Designer + Date: Mon, 26 Jan 2004 01:22:18 +0300 + Message-ID: <20040125222218.GA13499@openwall.com> + + Remove insecure usage of /tmp from code and documentation + + [ 22409] + Bump version numbers of moules affected by change #22258 + (removing /tmp and other insecurities) + + [ 22642] + Bump version numbers for modules that have changed since 5.8.3 + Branch: maint-5.8/perl + ! ext/B/B/Deparse.pm lib/ExtUtils/MM_NW5.pm + !> (integrate 33 files) +____________________________________________________________________________ +[ 22643] By: nicholas on 2004/04/04 13:10:27 + Log: Revert my $foo if ... in maint for dual life modules where changes + have not yet been propagated out to their authors and then CPAN + Branch: maint-5.8/perl + ! lib/Net/NNTP.pm lib/Net/POP3.pm lib/Net/SMTP.pm + ! lib/Pod/Parser.pm +____________________________________________________________________________ +[ 22640] By: nicholas on 2004/04/02 10:58:16 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22639] By: nicholas on 2004/04/02 10:39:56 + Log: Integrate: + [ 22636] + Subject: [PATCH] archname salad on VMS + From: "Craig A. Berry" + Date: Thu, 01 Apr 2004 14:16:32 -0600 + Message-Id: <406C78A0.2070009@mac.com> + + sort out architecture-specific directory names for OpenVMS + Itanium port + + [ 22637] + Subject: [PATCH] fix utils install problems on VMS + From: "Craig A. Berry" + Date: Thu, 01 Apr 2004 20:19:53 -0600 + Message-Id: <406CCDC9.7000500@mac.com> + + We were not running utils/instmodsh.PL or utils/xsubpp.PL during + the build, so installperl would not find the generated programs at + install time. + Also fixed several problems with the command definitions for the + utilities + Branch: maint-5.8/perl + !> configure.com vms/descrip_mms.template +____________________________________________________________________________ +[ 22638] By: nicholas on 2004/04/02 10:25:17 + Log: Integrate: + [ 22635] + Fix change #22376. Only mark a const as short-circuited + if it's actually a const! + Branch: maint-5.8/perl + !> op.c +____________________________________________________________________________ +[ 22634] By: nicholas on 2004/04/01 16:49:54 + Log: Integrate: + [ 21767] + Check that the key is present before a delete, and absent afterwards + + (this got missed for some reason) + Branch: maint-5.8/perl + !> ext/XS/APItest/t/hash.t +____________________________________________________________________________ +[ 22633] By: nicholas on 2004/04/01 16:35:49 + Log: Unicode 4.0.1! + + Integrate: + [ 22621] + Upgrade to Unicode 4.0.1 + + [ 22630] + debug the instructions on upgrading Unicode + Branch: maint-5.8/perl + +> lib/unicore/lib/Katakan2.pl lib/unicore/lib/Sterm.pl + +> lib/unicore/lib/Variatio.pl + !> (integrate 101 files) +____________________________________________________________________________ +[ 22632] By: nicholas on 2004/04/01 15:55:23 + Log: Integrate: + [ 21450] + Add support for Linux abstract unix domain sockets to Socket.pm. + Based on a idea by Alex Hudson. (Basically those are unix domain + sockets whose name has a '\0' as first character.) + + [ 22411] + Bump Socket's version to a real floating point value + + And the ext/Socket/... bits from + + [ 22258] + Subject: Re: [perl #15063] /tmp issues + From: Solar Designer + Date: Mon, 26 Jan 2004 01:22:18 +0300 + Message-ID: <20040125222218.GA13499@openwall.com> + + Remove insecure usage of /tmp from code and documentation + + [ 22521] + Subject: [PATCH] format/casting/warning RE: perl 5.9.1 + From: Robin Barker + Date: Wed, 17 Mar 2004 18:37:10 -0000 + Message-ID: <533D273D4014D411AB1D00062938C4D90404682E@hotel.npl.co.uk> + Branch: maint-5.8/perl + !> ext/Socket/Socket.pm ext/Socket/Socket.xs + !> ext/Socket/t/Socket.t +____________________________________________________________________________ +[ 22631] By: nicholas on 2004/04/01 15:16:56 + Log: Integrate: + [ 20909] + Subject: [PATCH] improved 19064 (local $_[0] problems) + From: Dave Mitchell + Date: Sun, 24 Aug 2003 15:52:00 +0100 + Message-ID: <20030824145159.GA12210@fdgroup.com> + + [ 21432] + Suppress the test file t/op/nothr5005.t and integrate its tests into + t/op/args.t, now that 5005threads have been removed. Port t/op/args.t + to t/test.pl. + + (just the last "Port" bit) + + [ 22624] + [perl #28032] delete $_[0] + (\$) prototype = bad free + av_delete() didn't reify. I also updated its description + Branch: maint-5.8/perl + ! t/op/args.t + !> av.c pp_ctl.c pp_hot.c scope.c +____________________________________________________________________________ +[ 22629] By: nicholas on 2004/04/01 13:42:46 + Log: Integrate: + [ 22619] + Regenerated Configure after backported #22571 + Some indent leftovers from earlier patches + We don't like double negatives, not even in comment + Branch: maint-5.8/perl + ! Configure +____________________________________________________________________________ +[ 22628] By: nicholas on 2004/04/01 13:27:14 + Log: Integrate: + [ 22334] + Removed pm_apiversion and xs_apiversion as requested by + the pumpkin. Chainsaw was still in perfect working order. + Branch: maint-5.8/perl + ! Configure NetWare/config_H.wc Porting/config.sh + ! Porting/config_H config_h.SH perl.h plan9/config.plan9 + ! win32/config_H.bc win32/config_H.gc win32/config_H.vc + ! win32/config_H.vc64 + !> Cross/config.sh-arm-linux NetWare/config.wc Porting/Glossary + !> configure.com epoc/config.sh plan9/config_h.sample + !> plan9/config_sh.sample uconfig.h uconfig.sh win32/config.bc + !> win32/config.gc win32/config.vc win32/config.vc64 + !> wince/config.ce wince/config_H.ce +____________________________________________________________________________ +[ 22627] By: nicholas on 2004/04/01 13:09:08 + Log: Change 22555 left a perforce conflict in the copyright message. + D'oh. Silly maint pumpking. + Branch: maint-5.8/perl + ! pad.c +____________________________________________________________________________ +[ 22626] By: nicholas on 2004/04/01 10:55:11 + Log: Integrate: + [ 22617] + Subject: Re: [PATCH] MIME::Base64 PERL_NO_GET_CONTEXT + From: Gisle Aas + Date: 30 Mar 2004 04:29:18 -0800 + Message-ID: + Branch: maint-5.8/perl + !> ext/MIME/Base64/Base64.pm ext/MIME/Base64/Base64.xs + !> ext/MIME/Base64/Changes ext/MIME/Base64/QuotedPrint.pm +____________________________________________________________________________ +[ 22623] By: nicholas on 2004/03/31 16:30:33 + Log: Integrate: + [ 22609] + Subject: [perl #27986] IPC::Open3 fails in mod_perl (tie bug) + From: "Benjamin J. Tilly" (via RT) + Date: 26 Mar 2004 21:02:19 -0000 + Message-ID: + + The forked child should make sure STDIN and STDOUT aren't tied + before messing with them + + [ 22615] + Unknowingly for years we've had a test that has assumed the order + of results from readdir. Fixed. + Branch: maint-5.8/perl + !> lib/File/Find/t/find.t lib/IPC/Open3.pm +____________________________________________________________________________ +[ 22622] By: nicholas on 2004/03/31 15:16:49 + Log: Integrate: + [ 22582] + mintest will pass if I skip the correct number of tests. D'oh! + + [ 22591] + [perl #27268] Blessed reference to anonymous glob + Stop *$$x=$x giving "Attempt to free unreferenced scalar" warning + + [ 22594] + [perl #27040] - hints hash was being double freed on scope exit + + [ 22596] + fix for change #22594; if using test.pl, must tell perl where to + find it! + + [ 22599] + [perl #24200] string corruption with lvalue sub + Depending on the context, the same substr OP may want to return + a PVLV or an LV on subsequent invcations. If TARG is the wrong + type, use a mortal instead. + + [ 22605] + pv_display() had code to display \n etc as escapes but it didn't + actually work. + + [ 22607] + update -Dx to cope with lexical version of OP_AELEMFAST + Branch: maint-5.8/perl + ! t/op/substr.t + !> dump.c op.c pp.c scope.c scope.h sv.c t/comp/hints.t + !> t/op/magic.t t/op/ref.t +____________________________________________________________________________ +[ 22620] By: nicholas on 2004/03/31 14:37:26 + Log: Integrate: + [ 22514] + Move the PERLVAR(Ireentrant_buffer, REENTR*) outside the ITHREADS + block. This allows the re-entrant API to be used with ithreads, + which in turn permits -Dusethreads -Uuseithreads -Uuse5005threads + (Which may seem inane, but makes perl threaded at the C level + without enabling ithreads) + + [ 22545] + Subject: Re: [perl #27803] perl crashes when utf8::upgrade($offsetOK_scalar) + From: SADAHIRO Tomoyuki + Date: Sun, 21 Mar 2004 15:19:22 +0900 + Message-Id: <20040321151828.DAC6.BQW10602@nifty.com> + + [ 22546] + Silence a gcc warning. + + [ 22547] + I must be tired today. + + [ 22548] + Subject: [PATCH sv.h] Nobody has used SvPVbyte_force? + From: SADAHIRO Tomoyuki + Date: Sun, 21 Mar 2004 21:49:53 +0900 + Message-Id: <20040321213628.2461.BQW10602@nifty.com> + Branch: maint-5.8/perl + !> intrpvar.h lib/utf8.t sv.c sv.h +____________________________________________________________________________ +[ 22616] By: nicholas on 2004/03/31 10:43:26 + Log: Integrate: + [ 22407] + Use File::Temp for tempfiles if it is available. + (Based on a patch from Solar Designer in + Message-ID: <20040125222218.GA13499@openwall.com>, the bulk of which + was applied as change 22258) + + [ 22484] + Subject: Re: [PATCH] Re: Proposal to remove support for MachTen + From: Dominic Dunlop + Date: Thu, 11 Mar 2004 10:34:01 +0100 + Message-Id: <3B07B7FC-733F-11D8-AC24-000A27839BD6@mac.com> + + [ 22604] + fix typo in change 22597 + + [ 22614] + Subject: Zaurus SL-[78]60 native compile patch + Message-Id: <46DCC0BF-8199-11D8-8D5B-000A95DBB50A@dan.co.jp> + From: Dan Kogai + Date: Tue, 30 Mar 2004 00:53:52 +0900 + Branch: maint-5.8/perl + !> README.machten ext/Errno/Errno_pm.PL hints/machten.sh op.h + !> utils/perlbug.PL +____________________________________________________________________________ +[ 22611] By: nicholas on 2004/03/30 12:28:04 + Log: Integrate: + [ 22610] + various win32 build fixes + + Subject: Re: [PATCH] Re: MinGW/GCC vs MSVC++ on Win32 + From: Steve Hay + Date: Tue, 23 Mar 2004 10:42:12 +0000 + Message-ID: <40601484.7040905@uk.radan.com> + + Subject: [PATCH] distclean on Win32 should delete perl.base + From: Steve Hay + Date: Tue, 23 Mar 2004 11:35:56 +0000 + Message-ID: <4060211C.8020704@uk.radan.com> + + Subject: Re: [PATCH] Create debug symbols files on Windows even for release + From: Steve Hay + Date: Fri, 26 Mar 2004 10:46:07 +0000 + Message-ID: <406409EF.9020404@uk.radan.com> + Branch: maint-5.8/perl + ! win32/makefile.mk + !> win32/Makefile +____________________________________________________________________________ +[ 22603] By: nicholas on 2004/03/27 20:24:25 + Log: Integrate: + [ 22584] + Subject: [perl #27790] split docs: say the string is EXPR + From: Dan Jacobson (via RT) + Date: 20 Mar 2004 05:21:07 -0000 + Message-ID: + + Minor documentation nit in split + + [ 22586] + Subject: [perl #27748] 'find2perl' bug: -exec causes chdir error + From: "jdhedden@1979.usna.com (via RT)" + Date: 18 Mar 2004 20:25:50 -0000 + Message-ID: + + Cwd code was planted in the output executable after the exit, so + was never run. + + [ 22593] + Subject: Re: [perl #27906] stat documentation correction + From: Andy Lester + Date: Wed, 24 Mar 2004 21:48:30 -0600 + Message-Id: <20040325034830.GA5865@petdance.com> + (Applied with a correction from Spider Boardman.) + + [ 22595] + [perl #26839] document the return value of an empty sub + + [ 22597] + Clarify op.h comments for which ops the OPpDEREF* private flags + are actually used; update Concise.pm to match + Branch: maint-5.8/perl + ! pod/perlfunc.pod + !> ext/B/B/Concise.pm op.h pod/perlsub.pod t/op/stat.t + !> x2p/find2perl.PL +____________________________________________________________________________ +[ 22602] By: nicholas on 2004/03/27 16:23:58 + Log: Integrate: + [ 22600] + Subject: [PATCH] don't clean-up perly.* on VMS + From: "Craig A. Berry" + Date: Fri, 26 Mar 2004 16:54:44 -0600 + Message-Id: <4064B4B4.2030203@mac.com> + + refrain from getting rid of perly.c and perly.h now that there are + no longer VMS-specific overrides for these files + + [ 22601] + Subject: [PATCH] -Dusemallocwrap for VMS) + From: "Craig A. Berry" + Date: Fri, 26 Mar 2004 22:46:50 -0600 + Message-Id: <4065073A.30007@mac.com> + + Mimic in configure.com what Configure does to enable or disable + the new feature -Dusemallocwrap + Branch: maint-5.8/perl + !> configure.com vms/descrip_mms.template +____________________________________________________________________________ +[ 22590] By: nicholas on 2004/03/25 18:35:10 + Log: Integrate: + [ 22579] + Subject: Re: [PATCH] Fix PERL_MALLOC_WRAP change for Win32 + From: Steve Hay + Message-ID: <40618D1C.7000601@uk.radan.com> + Date: Wed, 24 Mar 2004 13:29:00 +0000 + Branch: maint-5.8/perl + !> win32/config_H.bc win32/config_H.gc win32/config_H.vc + !> win32/config_H.vc64 +____________________________________________________________________________ +[ 22589] By: nicholas on 2004/03/25 10:41:01 + Log: Update changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22588] By: nicholas on 2004/03/25 10:06:02 + Log: Integrate: + [ 22563] + Subject: [PATCH] 5.9.1 suidperl + From: psz@maths.usyd.edu.au (Paul Szabo) + Message-Id: <200403182117.i2ILHug513080@milan.maths.usyd.edu.au> + Date: Fri, 19 Mar 2004 08:17:56 +1100 (EST) + + (which variables renamed as requested, plus tweaks to work on platforms + with no ST_NOEXEC) + + [ 22572] + Tidy up function prototypes in the light of suidpatch + Branch: maint-5.8/perl + ! embedvar.h perlapi.h + !> embed.fnc embed.h intrpvar.h perl.c perl.h proto.h +____________________________________________________________________________ +[ 22587] By: nicholas on 2004/03/24 23:00:59 + Log: Watch the smoke start to rise... + + Integrate: + [ 22585] + Remaining smoked platforms where malloc wrap is known to work. + Data for Irix and NetBSD would be useful - they probably will work too. + Will Unicos work? Place bets now... + Branch: maint-5.8/perl + !> hints/aix.sh hints/bsdos.sh hints/dec_osf.sh hints/freebsd.sh + !> hints/hpux.sh hints/linux.sh hints/openbsd.sh + !> hints/solaris_2.sh +____________________________________________________________________________ +[ 22583] By: nicholas on 2004/03/24 21:01:35 + Log: Integrate: + [ 22517] + Subject: malloc wrappage + From: Jarkko Hietaniemi + Message-Id: <37BF70DE-5C0E-11D8-B5A1-00039362CB92@iki.fi> + Date: Tue, 10 Feb 2004 23:15:14 +0200 + + plus change croak to Perl_croak_nocontext to make ithread safe + plus make it conditional on PERL_MALLOC_WRAP (default for blead is on) + + [ 22524] + Try to fix the AIX and Windows builds regarding the + definedness of the PL_memory_wrap symbol. + + [ 22526] + Detypo. + + [ 22571] + Make usemallocwrap a Configure-time question. Default is yes for + usedevel, no otherwise, but I'm expecting hints files on known + good platforms to override this. (and known bad) + Demonstration hints file for darwin. + + [ 22576] + Export PL_memory_wrap based on PERL_MALLOC_WRAP rather than + NO_MALLOC_WRAP following Configure changes. Identical patch to + mine supplied by Steve Hay while I was working on this. + IP shootout at dawn :-) + + [ 22577] + Unlike perl, 0 in void context isn't special cased in C :-) + (So it warns). Tweak the no-action malloc wrap checkers to avoid + warnings. + Branch: maint-5.8/perl + !> Configure av.c config_h.SH handy.h hints/darwin.sh makedef.pl + !> perl.h pod/perldiag.pod pp.c +____________________________________________________________________________ +[ 22581] By: nicholas on 2004/03/24 15:37:16 + Log: D'oh. Assimilated too much. + Branch: maint-5.8/perl + - pod/perl591delta.pod +____________________________________________________________________________ +[ 22580] By: nicholas on 2004/03/24 15:36:43 + Log: Integrate: + [ 22294] + Implement stacked filetest operators (-f -w -x $file). + + (just the filetest.t refactoring) + + [ 22559] + Don't assume that the chmod will always work. + (It won't for files on *BSD where chflags has set uchg, which is + what the OS X perforce client does) + Branch: maint-5.8/perl + +> pod/perl591delta.pod + ! t/op/filetest.t +____________________________________________________________________________ +[ 22575] By: nicholas on 2004/03/24 10:15:16 + Log: Integrate: + [ 22512] + Subject: [PATCH] Re: Perl and Parrot disagree about sched_yield on Solaris + From: Andrew Dougherty + Date: Tue, 16 Mar 2004 16:38:58 -0500 (EST) + Message-ID: + Branch: maint-5.8/perl + !> hints/solaris_2.sh +____________________________________________________________________________ +[ 22574] By: nicholas on 2004/03/24 10:01:38 + Log: Integrate the delete that accompanied the add. Grrr. svk is tempting me + Branch: maint-5.8/perl + - ext/Storable/ppport.h +____________________________________________________________________________ +[ 22573] By: nicholas on 2004/03/24 09:44:29 + Log: Integrate: + [ 22515] + Add regression tests for the auto-require of STORABLE_thaw + + [ 22516] + Add auto-require of modules to restore overloading (and tests) + + [ 22528] + Corrections and explanations in comments + + [ 22533] + Subject: [PATCH] Storable PERL_NO_GET_CONTEXT + From: beau@beaucox.com + Date: Thu, 18 Mar 2004 12:45:45 -1000 + Message-Id: <20040318_224545_009145.beau@beaucox.com> + + [ 22536] + Change Storable.xs to conditionally include ppport.h for pre 5.8.0 + This allows the ppport.h to be deleted from ext/Storable, which will + reduce the potential for confusion. + Bump Storable's version to 2.12; update the ChangeLog + + + (well, it would allow it to be deleted, except for that damn perforce + bug) + Branch: maint-5.8/perl + +> ext/Storable/ppport.h ext/Storable/t/HAS_HOOK.pm + +> ext/Storable/t/HAS_OVERLOAD.pm + !> MANIFEST ext/Storable/ChangeLog ext/Storable/MANIFEST + !> ext/Storable/README ext/Storable/Storable.pm + !> ext/Storable/Storable.xs ext/Storable/t/blessed.t + !> ext/Storable/t/overload.t +____________________________________________________________________________ +[ 22570] By: nicholas on 2004/03/23 22:19:13 + Log: Integrate: + [ 22474] + Improve the "Prototype mismatch" error message when + the redefined subroutine didn't have any prototype. + + [ 22564] + Fix bug [perl #27839] returning @+ out of scope loses its value : + + Subject: Re: Wondering about returned regex special arrays on going out of scope + From: hv@crypt.org + Date: Fri, 05 Mar 2004 17:42:25 +0000 + Message-Id: <200403051742.i25HgPd11240@zen.crypt.org> + + plus a test case. + + [ 22569] + hv_delete_common was freeing the key, then passing the freed pointer + to S_hv_notallowed. D'oh! + Branch: maint-5.8/perl + !> hv.c op.c pp_hot.c t/comp/redef.t t/op/magic.t +____________________________________________________________________________ +[ 22568] By: nicholas on 2004/03/23 17:40:24 + Log: Integrate: + [ 22539] + Subject: [perl #24821] enhancement patch for B::Concise + From: jim cromie + Date: Wed, 17 Mar 2004 14:12:43 -0700 + Message-ID: <4058BF4B.1000004@divsol.com> + (Only the Concise.pm part, with documentation nits) + Branch: maint-5.8/perl + ! ext/B/B/Concise.pm +____________________________________________________________________________ +[ 22567] By: nicholas on 2004/03/23 17:26:29 + Log: Integrate: + [ 22290] + Add the new private flag OPpGREP_LEX in B::Concise. + + [ 22294] + Implement stacked filetest operators (-f -w -x $file). + + [ 22565] + Unify 5.008 and 5.009's B::Concise 0.56 + + [ 22566] + Unify 5.008 and 5.009's B::Concise 0.58 + Branch: maint-5.8/perl + ! ext/B/B/Concise.pm +____________________________________________________________________________ +[ 22562] By: nicholas on 2004/03/22 22:32:36 + Log: Integrate: + [ 22543] + Add a new warning "Negative repeat count" + for the cases $x x -1. + + [ 22549] + Finally, this "Negative repeat count" warning wasn't such a great + idea. Disable it. But add tests for this : + + Subject: Re: [perl #27811] (@x) x -1 is a panic + From: Andy Lester + Date: Sun, 21 Mar 2004 09:27:04 -0600 + Message-ID: <20040321152704.GA9041@petdance.com> + Branch: maint-5.8/perl + !> pod/perlop.pod pp.c t/lib/warnings/pp t/op/repeat.t +____________________________________________________________________________ +[ 22561] By: nicholas on 2004/03/22 22:10:18 + Log: Integrate: + [ 22497] + Subject: [perl #27567] [patch] a typo and a mistake in perltoot.pod + From: "padre@elte.hu (via RT)" + Date: 10 Mar 2004 17:05:09 -0000 + Message-ID: + + [ 22556] + Subject: [PATCH] Re: ../lib/ExtUtils/t/Embed.t failure on Win32/GCC + From: Steve Hay + Date: Mon, 22 Mar 2004 14:44:46 +0000 + Message-ID: <405EFBDE.4090209@uk.radan.com> + + [ 22557] + Clarifications on constants subroutines, based on: + + Subject: [perl #27768] [patch] wrong examples in perlsub/"Constant Functions" + From: "padre@elte.hu (via RT)" + Date: 19 Mar 2004 14:56:09 -0000 + Message-ID: + + [ 22560] + Update the -v copyright notice. + Branch: maint-5.8/perl + !> README.win32 perl.c pod/perlsub.pod pod/perltoot.pod +____________________________________________________________________________ +[ 22558] By: nicholas on 2004/03/22 21:01:52 + Log: Integrate: + [ 22344] + Upgrade to prereleases of Math::BigInt 1.70 and + Math::BigRat 0.12, by Tels. + + [ 22491] + Subject: [PATCH] Math::BigInt v1.70, bignum 0.15, Math::BigRat 0.12 + From: Tels + Date: Fri, 12 Mar 2004 18:02:30 +0100 + Message-Id: <200403121802.31679@bloodgate.com> + + [ 22502] + Fix the order of arguments in the usage message of + POSIX::chown(). It's different from the POSIX order but + it's the same than CORE::chown(). Damn. + + [ 22513] + Add a lchown() call to the POSIX module. [perl #27547] + + [ 22538] + Subject: [PATCH] open.pm: allow upper-cased EUC + From: Autrijus Tang + Date: Fri, 19 Mar 2004 18:27:10 +0800 + Message-Id: <20040319102710.GA91216@aut.dyndns.org> + Branch: maint-5.8/perl + +> lib/Math/BigInt/t/_e_math.t + !> (integrate 39 files) +____________________________________________________________________________ +[ 22555] By: nicholas on 2004/03/22 19:57:32 + Log: Integrate: + [ 22485] + make op/write.t work better under stdio by running the subtests + in the child process rather than the parent. + + [ 22494] + Subject: Re: [PATCH] Stop splitpod truncating sprintf manpage + From: Steve Hay + Date: Fri, 12 Mar 2004 08:38:41 +0000 + Message-ID: <40517711.9030204@uk.radan.com> + + [ 22505] + We'll ship 5.9.1 today. + + [ 22509] + Update copyright notices + + [ 22527] + Subject: pumpkin fodder + From: Jarkko Hietaniemi + Date: Fri, 12 Mar 2004 15:16:57 +0200 (EET) + Message-Id: <200403121316.i2CDGv1Y254951@kosh.hut.fi> + + [ 22534] + Nit in perluniintro about the U0 and C0 templates, + noticed by Steve Hay. + + [ 22540] + \x80\xFF is not valid UTF-8. + Branch: maint-5.8/perl + !> (integrate 46 files) +____________________________________________________________________________ +[ 22554] By: nicholas on 2004/03/22 19:29:19 + Log: Integrate: + [ 22478] + [PERLIO] In line-buffered mode, flush on the *last* newline, + not on every newline. + + [ 22490] + Fix a bug in the cloning of regexps + + Subject: Re: [perl #27530] Regex qr// interpolation fails when chr(0) is used in a thread + From: hv@crypt.org + Date: Thu, 11 Mar 2004 16:21:50 +0000 + Message-Id: <200403111621.i2BGLoi20225@zen.crypt.org> + (plus another similar fix) + + [ 22499] + [perl #27628] strict 'subs' didn't warn on bareword array index + + [ 22500] + [perl #27638] scope exit could expose freed local() value + + [ 22520] + Optimize away the assignment in the constructs C, + C, C. + Branch: maint-5.8/perl + !> op.c perlio.c scope.c sv.c t/lib/strict/subs t/op/localref.t +____________________________________________________________________________ +[ 22552] By: nicholas on 2004/03/22 19:10:04 + Log: Integrate: + [ 22466] + Subject: [PATCH] win32_fstat has a potential buffer overrun problem + From: Jan Dubois + Date: Sun, 07 Mar 2004 17:04:35 -0800 + Message-ID: <8lgn409p4k2kpde8d428d7a4r7fsgjc8b4@4ax.com> + + [ 22467] + Another makefile portability fix for Win32 by Steve Hay. + + [ 22477] + Subject: [PATCH] More "distclean" tidy ups on Win32 + From: Steve Hay + Date: Fri, 05 Mar 2004 09:56:36 +0000 + Message-ID: <40484ED4.1050001@uk.radan.com> + (only the win32 makefiles part) + + [ 22481] + Subject: Re: [PATCH] More "distclean" tidy ups on Win32 + From: Steve Hay + Date: Wed, 10 Mar 2004 10:58:15 +0000 + Message-ID: <404EF4C7.9090107@uk.radan.com> + + [ 22489] + Subject: [PATCH] Fix minitest target in Win32 makefiles + From: Steve Hay + Date: Fri, 12 Mar 2004 15:52:23 +0000 + Message-ID: <4051DCB7.107@uk.radan.com> + + [ 22495] + Revert change #22489, that seems to cause build failures on Windows. + + [ 22501] + Subject: Re: Smoke [5.9.1] 22491 FAIL(M) MSWin32 WinXP/.Net SP1 (x86/1 cpu) + From: Steve Hay + Date: Mon, 15 Mar 2004 10:28:02 +0000 + Message-ID: <40558532.30002@uk.radan.com> + + Plus, restore patch #22489 + + [ 22537] + Subject: [PATCH] Move Win32.pm/Win32.xs from libwin32 module to core Perl + From: Jan Dubois + Message-ID: + Date: Thu, 18 Mar 2004 13:13:49 -0800 + + Subject: Re: [PATCH] Move Win32.pm/Win32.xs from libwin32 module to core Perl + From: Steve Hay + Message-ID: <405ACC6D.1040804@uk.radan.com> + Date: Fri, 19 Mar 2004 10:33:17 +0000 + + [ 22541] + Subject: makefile.95 tweak + From: Greg Matheson + Date: Fri, 19 Mar 2004 18:15:25 +0800 + Message-ID: <20040319181525.A6347@ms.chinmin.edu.tw> + + [ 22544] + Subject: [PATCH] fix memory bug in vms.c:mp_do_tounixspec + From: "Craig A. Berry" + Date: Sat, 20 Mar 2004 21:51:45 -0600 + Message-ID: <405D1151.3040308@mac.com> + Branch: maint-5.8/perl + +> win32/ext/Win32/Makefile.PL win32/ext/Win32/Win32.pm + +> win32/ext/Win32/Win32.xs + - lib/Win32.pod + !> MANIFEST vms/vms.c win32/Makefile win32/makefile.mk + !> win32/win32.c +____________________________________________________________________________ +[ 22551] By: nicholas on 2004/03/22 18:48:29 + Log: Integrate: + [ 22525] + make ~$x give warning is $x isn't initialised. + Also add test for uninitialised warning in & op. + + [ 22531] + add code comment for change 22525 + Branch: maint-5.8/perl + !> pp.c t/lib/warnings/sv +____________________________________________________________________________ +[ 22550] By: nicholas on 2004/03/22 17:26:06 + Log: Integrate: + [ 22462] + Subject: undef and the range operator + From: Marcus Holland-Moritz + Date: Sun, 7 Mar 2004 21:11:20 +0100 + Message-Id: <20040307211120.10e46933@r2d2> + + [ 22472] + Subject: Re: undef and the range operator + From: Marcus Holland-Moritz + Date: Mon, 8 Mar 2004 21:49:55 +0100 + Message-Id: <20040308214955.3d8be3a6@r2d2> + + [ 22473] + Revert change #22472, but keep the new tests. + + [ 22532] + Subject: [PATCH] range operator warnings / 64-bit fix + From: Marcus Holland-Moritz + Date: Wed, 10 Mar 2004 21:45:48 +0100 + Message-Id: <20040310214548.4f5e3ab1@r2d2> + Branch: maint-5.8/perl + !> pp_ctl.c pp_hot.c t/op/range.t +____________________________________________________________________________ +[ 22529] By: nicholas on 2004/03/18 17:13:16 + Log: Integrate: + [ 22498] + Four Storable patches towards Storable 2.11 : + + Subject: Re: [perl #27616] Storable can't freeze restricted hashes in canonical order + From: Nicholas Clark + Date: Sat, 13 Mar 2004 15:13:28 +0000 + Message-ID: <20040313151327.GS701@plum.flirble.org> + + Date: Sat, 13 Mar 2004 20:23:45 +0000 + Message-ID: <20040313202345.GX701@plum.flirble.org> + + Date: Sat, 13 Mar 2004 22:20:07 +0000 + Message-ID: <20040313222007.GZ701@plum.flirble.org> + + Date: Sat, 13 Mar 2004 23:03:46 +0000 + Message-ID: <20040313230345.GB701@plum.flirble.org> + Branch: maint-5.8/perl + !> ext/Storable/ChangeLog ext/Storable/Storable.pm + !> ext/Storable/Storable.xs ext/Storable/t/blessed.t + !> ext/Storable/t/restrict.t +____________________________________________________________________________ +[ 22487] By: nicholas on 2004/03/11 22:19:14 + Log: Integrate: + [ 22465] + Fix Dave's original shared hash key corruption bug + + [ 22471] + Make a temporary copy of the input buffer in pp_send, so that send + and syswrite don't gratuitously upgrade their input to UTF8 + + [ 22483] + croaking for readonly SVs in Perl_sv_utf8_upgrade_flags was a mistake + back this out until we have a tangible policy + Branch: maint-5.8/perl + !> pp_sys.c sv.c t/op/sysio.t +____________________________________________________________________________ +[ 22486] By: nicholas on 2004/03/11 21:26:18 + Log: Integrate: + [ 22452] + Subject: [PATCH Cwd 2.15] test tweak for VMS + From: "Craig A. Berry" + Date: Sat, 06 Mar 2004 13:51:55 -0600 + Message-ID: <404A2BDB.8030401@mac.com> + + [ 22469] + Upgrade to CGI.pm 3.04. + + [ 22470] + Upgrade to Cwd 2.16 + + [ 22482] + Upgrade to Cwd 2.17. + + plus some discrepancies between maint and blead in ext/Cwd/t/taint.t + Branch: maint-5.8/perl + ! ext/Cwd/t/taint.t + !> ext/Cwd/Changes ext/Cwd/t/cwd.t lib/CGI.pm lib/CGI/Cookie.pm + !> lib/Cwd.pm +____________________________________________________________________________ +[ 22464] By: nicholas on 2004/03/07 22:30:45 + Log: Integrate: + [ 22427] + Speed up the unicode case mappings (for /i, lc, uc, etc). + Subject: [PATCH] [perl #24826] + From: Jarkko Hietaniemi + Date: Wed, 3 Mar 2004 09:37:21 +0200 + Message-Id: <9B5CBF96-6CE5-11D8-83B0-00039362CB92@iki.fi> + + [ 22430] + Clarify the difference between utf8::downgrade/upgrade + and utf8::encode/decode (patch by Jarkko). + + [ 22439] + ensure utf8::encode() normalises its arg + + [ 22444] + A small perluniintro clarification by Jarkko. + + [ 22463] + Add a readonly check to Perl_sv_utf8_upgrade_flags, a regresion test + in utf8.t, and fix 3 bugs it exposed in utfhash.t + Branch: maint-5.8/perl + !> lib/unicore/To/Fold.pl lib/unicore/To/Lower.pl + !> lib/unicore/To/Title.pl lib/unicore/To/Upper.pl + !> lib/unicore/mktables lib/utf8.pm lib/utf8.t + !> pod/perluniintro.pod sv.c t/op/utfhash.t t/uni/case.pl utf8.c +____________________________________________________________________________ +[ 22461] By: nicholas on 2004/03/07 19:36:43 + Log: Integrate: + [ 22422] + Remove machine-dependent rounding dependency from write overflow + tests + + [ 22425] + stop t/op/write.t failures under stdio by always closing files + before reading them back; also replace `cat file` with a function + to read in the file + + [ 22434] + remove an 'if $a if 0' from AutoSplit.t + + [ 22456] + Subject: [PATCH t/op/closure.t] line-end tweak for VMS + From: "Craig A. Berry" + Date: Sat, 06 Mar 2004 22:50:25 -0600 + Message-ID: <404AAA11.8050001@mac.com> + Branch: maint-5.8/perl + !> lib/AutoSplit.t t/op/closure.t t/op/write.t +____________________________________________________________________________ +[ 22460] By: nicholas on 2004/03/07 18:47:14 + Log: Forked patch for 22426 + I WANT THIS DAMN DEBUGGER MESS SORTED. + Blame is irrelevant. Only cause, solution and lessons to learn. + (plus don't think it had anything to do with Richard) + + Subject: [PATCH] debugger (5.8.x and 5.9.x) + From: Richard.Foley@t-online.de (Richard Foley) + Date: Wed, 3 Mar 2004 16:10:25 +0100 + Message-Id: <200403031610.25080.richard.foley@rfi.net> + Branch: maint-5.8/perl + ! lib/perl5db.pl +____________________________________________________________________________ +[ 22458] By: nicholas on 2004/03/07 18:25:56 + Log: Integrate: + [ 22417] + Make panics a bit more verbose to ease debugging. + + [ 22436] + Subject: [PATCH] Re: [perl #25270] 5.8.3 - POSIX::ctermid() on Solaris + From: Andrew Dougherty + Date: Thu, 4 Mar 2004 14:41:07 -0500 (EST) + Message-ID: + + [ 22441] + Change 22436 broke the Windows build. + Fix by Steve Hay. + + [ 22451] + Allow syslog() to use numeric constants in addition to strings for + facility names and priorities. + + Subject: Patch for Sys::Syslog + From: Jim Schneider + Date: Fri, 5 Mar 2004 14:03:10 -0500 + Message-Id: <200403051403.10674.jschneid@netilla.com> + Branch: maint-5.8/perl + !> ext/POSIX/POSIX.xs ext/Sys/Syslog/Syslog.pm thread.h +____________________________________________________________________________ +[ 22457] By: nicholas on 2004/03/07 16:41:16 + Log: Integrate: + [ 22406] + Fix segfaults when running under -Dx. + + [ 22415] + [perl #24521] make test breaks permissions on /dev/tty + perl -i could fchmod(stdin) by mistake + + [ 22428] + Subject: [PATCH] simplify sv.h + From: Arthur Bergman + Date: Sun, 29 Feb 2004 22:04:53 +0000 + Message-Id: <4D3C272C-6B03-11D8-B799-000A95A2734C@nanisky.com> + + [ 22432] + Maintainers.pl update by MJD. + + [ 22438] + [perl #27206] Memory leak in continue loop + make sure redo always frees temps + + [ 22440] + silence some compiler warnings + + [ 22443] + Subject: [PATCH] Re: Strange segfault + From: mhx-perl@gmx.net (Marcus Holland-Moritz) + Date: Fri, 5 Mar 2004 15:13:53 +0100 + Message-ID: <20040305151353.5f3e913c@r2d2> + + [ 22445] + fix coredump in /(?{sub{}})/ + Branch: maint-5.8/perl + !> Porting/Maintainers.pl doio.c pad.c pp_ctl.c sv.h + !> t/op/loopctl.t t/op/range.t +____________________________________________________________________________ +[ 22455] By: nicholas on 2004/03/07 12:25:51 + Log: Integrate /tmp fix from patch 22258 as it's relased with Storable 2.10 + Branch: maint-5.8/perl + !> ext/Storable/Storable.pm +____________________________________________________________________________ +[ 22454] By: nicholas on 2004/03/07 11:57:56 + Log: Integrate: + [ 22278] + hv_clear_placeholders now manipulates the linked lists directly, rather + than using the iterator interface and calling hv_delete + This will allow hv_delete to be simplified to remove most of the + special casing related to placeholders. + + [ 22280] + Now hv_delete is able to ingore placeholders. + (This is an XS visible change in the hash API. But not of documented + behaviour) + + [ 22281] + deleting keys in restricted hashes was leaking the entry. Yow! + + [ 22282] + Comment to record why we can't clear placeholders in hsplit + + [ 22391] + My re-implementation of hv_clear_placeholders was buggy - not sure why + the tests still passed. Fixed. + + [ 22393] + In hsplit, if a normal hash has placeholders then clear them before + splitting. We can do this safely because Storable ensures hsplit is + not called while it builds restricted hashes (actually any hashes) + This change may not make things faster, but now we have the choice. + Branch: maint-5.8/perl + !> ext/Storable/t/restrict.t hv.c lib/Hash/Util.t +____________________________________________________________________________ +[ 22453] By: nicholas on 2004/03/07 01:08:35 + Log: Integrate: + [ 22253] + Make Time/HiRes/t/HiRes.t die more gracefully if its watchdog + timeout triggers + + [ 22418] + integrate Time::HiRes 1.56 from CPAN + (which is itself mostly derived from the bleedperl version) + Branch: maint-5.8/perl + !> ext/Time/HiRes/Changes ext/Time/HiRes/HiRes.pm + !> ext/Time/HiRes/Makefile.PL ext/Time/HiRes/t/HiRes.t +____________________________________________________________________________ +[ 22450] By: nicholas on 2004/03/06 19:38:52 + Log: Integrate: + [ 22421] + Subject: [PATCH] nmake distclean cleans too much from lib/Digest on Win32 + From: Steve Hay + Date: Fri, 27 Feb 2004 17:42:26 +0000 + Message-ID: <403F8182.5090607@uk.radan.com> + + [ 22431] + Fix [perl #27357] Scalar Win32::GetOSVersion() broken in 5.8.3 + (by Steve Hay) + + [ 22442] + Subject: [PATCH] Fix PERLEXE_ICO/PERLEXE_RES targets in makefile.mk on Win32 + From: steve.hay@uk.radan.com (Steve Hay) + Date: Fri, 05 Mar 2004 09:42:32 +0000 + Message-ID: <40484B88.7070608@uk.radan.com> + Branch: maint-5.8/perl + +> t/win32/getosversion.t + !> MANIFEST win32/Makefile win32/makefile.mk win32/win32.c +____________________________________________________________________________ +[ 22449] By: nicholas on 2004/03/06 18:21:22 + Log: Integrate: + [ 22217] + Need to skip Storable's threads test on 5.8.2 with ithreads and + -DDEBUGGING, because it tickles a bug. (The same bug that got DBI) + Branch: maint-5.8/perl + !> ext/Storable/t/threads.t +____________________________________________________________________________ +[ 22448] By: nicholas on 2004/03/06 17:53:17 + Log: Integrate: + [ 22205] + Subject: [patch] make Storable thread-safe + From: Stas Bekman + Date: Mon, 19 Jan 2004 00:20:02 -0800 + Message-Id: <400B9332.4070106@stason.org> + + Subject: Re: Subroutine reference bug in Storable + From: Slaven Rezic + Date: 14 Nov 2003 23:22:55 +0100 + Message-Id: <874qx6zj28.fsf@vran.herceg.de> + + Subject: Re: [perl #25145] [PATCH] Storable segfaults with B::Deparse + + overload + cyclic structures + From: Sam Vilain + Date: Tue, 20 Jan 2004 22:30:15 +1300 + Message-Id: <200401202230.15865.sam@vilain.net> + + [ 22206] + Subject: [PATCH] Storable-2.08/t/code.t + From: Slaven Rezic + Date: Sat, 8 Nov 2003 16:26:19 +0100 (CET) + Message-Id: <200311081526.hA8FQJgb011684@vran.herceg.de> + + [ 22216] + update MANIFEST for 2 new Storable test files introduced by 22205 + + [ 22238] + Storable's hints file shouldn't blanket set optimize to -O2 on Linux + Only *drop* optimize to -O2 if it's -O3 on gcc on Linux + + [ 22247] + Drop optimization for -O3 *and higher* + Branch: maint-5.8/perl + +> ext/Storable/t/just_plain_nasty.t ext/Storable/t/threads.t + !> MANIFEST ext/Storable/ChangeLog ext/Storable/MANIFEST + !> ext/Storable/Storable.pm ext/Storable/Storable.xs + !> ext/Storable/hints/linux.pl ext/Storable/t/code.t +____________________________________________________________________________ +[ 22447] By: nicholas on 2004/03/06 16:32:32 + Log: Integrate: + [ 22423] + Work on eliminating systematic failures on make minitest: + make minitest passes a -minitest flag to t/TEST + t/TEST sees this and sets $ENV{PERL_CORE_MINITEST} + Tests can choose to skip based on this. + (Other tactic is to make loading of Errno by %! happen at run time.) + + [ 22424] + Change the skip logic on the unicode tests so that they don't rely on + miniperl's "dynamic loading unavailable" message + + [ 22446] + Make threads tests pass make minitest (by skipping) + Branch: maint-5.8/perl + !> Makefile.SH t/TEST t/io/binmode.t t/io/crlf.t t/io/layers.t + !> t/io/open.t t/io/print.t t/io/read.t t/op/getpid.t + !> t/op/magic.t t/uni/chomp.t t/uni/tr_7jis.t t/uni/tr_eucjp.t + !> t/uni/tr_sjis.t t/uni/tr_utf8.t +____________________________________________________________________________ +[ 22420] By: nicholas on 2004/03/02 11:19:34 + Log: Integrate: + [ 22400] + When threads are active we need -lpthread, but previous `fix' of + now linked libraries invalidated the regex for sed (AIX 5 has no + seperate libc.a and libc_r.a the latter links to the first) + Branch: maint-5.8/perl + !> hints/aix.sh +____________________________________________________________________________ +[ 22416] By: nicholas on 2004/02/29 20:45:00 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes patchlevel.h +____________________________________________________________________________ +[ 22413] By: nicholas on 2004/02/29 16:13:22 + Log: Integrate: + [ 22292] + Subject: Re: [perl #26073] sprintf miscounts padding when format is utf8 + From: hv@crypt.org + Date: Mon, 09 Feb 2004 03:21:21 +0000 + Message-Id: <200402090321.i193LL907950@zen.crypt.org> + Branch: maint-5.8/perl + !> sv.c t/op/sprintf2.t +____________________________________________________________________________ +[ 22412] By: nicholas on 2004/02/29 15:48:20 + Log: Integrate: + [ 22291] + Subject: reduce overhead of charnames.pm, make op/pat.t work under miniperl + From: Yitzchak Scott-Thoennes + Date: Mon, 9 Feb 2004 00:51:45 -0800 + Message-ID: <20040209085145.GA3204@efn.org> + (plus an etymological notice) + Branch: maint-5.8/perl + !> lib/charnames.pm +____________________________________________________________________________ +[ 22405] By: nicholas on 2004/02/28 14:24:35 + Log: Integrate: + [ 22056] + Upgrade to Cwd 2.13 + + [ 22112] + Upgrade to Cwd 2.14. + + [ 22403] + Assimilate Cwd 2.15 from CPAN + Branch: maint-5.8/perl + !> ext/Cwd/Changes ext/Cwd/t/cwd.t lib/Cwd.pm +____________________________________________________________________________ +[ 22404] By: nicholas on 2004/02/28 14:01:16 + Log: Oi, Perforce no! You are a damn fine source control system, but + when it comes to SILENTLY failing to integrate a delete on a file + just added you are bang out of order. + + Disintegrate: + [ 22326] + One of the new tests of MIME::Base64 relies on a non-core module. + Branch: maint-5.8/perl + - ext/MIME/Base64/t/bad-sv.t +____________________________________________________________________________ +[ 22402] By: nicholas on 2004/02/27 17:00:15 + Log: Integrate: + [ 22327] + It's better to localize *_ than $_, to avoid magic leakage + + [ 22367] + Instead of localising *_, use a dummy foreach loop to get + a local value of $_ + + [ 22401] + Create a new local $_ without triggering tie by using local *_ = \my $a + (an idea from Ton Hospel, Message-Id: ) + Branch: maint-5.8/perl + !> lib/File/Find.pm lib/File/Find/t/find.t +____________________________________________________________________________ +[ 22399] By: nicholas on 2004/02/27 15:23:08 + Log: Integrate: + [ 22363] + Subject: Re: [perl #26905] "use bytes" doesn't apply byte semantics to concatenation + From: SADAHIRO Tomoyuki + Date: Sun, 22 Feb 2004 16:09:33 +0900 + Message-Id: <20040222160505.98E5.BQW10602@nifty.com> + + Subject: [PATCH] Encode::CN::HZ (was Re: [perl #26905] "use bytes" doesn't apply byte semantics to concatenation) + From: SADAHIRO Tomoyuki + Date: Sun, 22 Feb 2004 18:41:43 +0900 + Message-Id: <20040222182357.6B39.BQW10602@nifty.com> + + Plus, add a "_01" to the theoretical version number of Encode::CN::HZ. + + [ 22364] + Fix bug #26910: hints were not propagated into (?{...}) + blocks, except the utf8 pragma. + Branch: maint-5.8/perl + !> ext/Encode/lib/Encode/CN/HZ.pm pp_ctl.c pp_hot.c + !> t/lib/strict/refs t/lib/strict/subs t/lib/strict/vars + !> t/op/concat.t +____________________________________________________________________________ +[ 22398] By: nicholas on 2004/02/27 13:37:30 + Log: Integrate: + [ 22376] + stop "const in void context" warning for a const in an + optimised-away boolean expresssion, eg 5 || print; + + [ 22397] + Correct thinko in comment. + Branch: maint-5.8/perl + !> op.c op.h t/lib/warnings/op +____________________________________________________________________________ +[ 22396] By: nicholas on 2004/02/27 12:44:41 + Log: Integrate: + [ 22357] + Extend OP_AELEMFAST optimisation to lexical arrays + + [ 22369] + Subject: [PATCH] optimization for map in scalar context + From: Tassilo von Parseval + Date: Tue, 24 Feb 2004 12:02:57 +0100 + Message-id: <20040224110257.GA5510@ethan> + Branch: maint-5.8/perl + ! op.c + !> ext/B/B/Concise.pm ext/B/B/Deparse.pm op.h pp_ctl.c pp_hot.c +____________________________________________________________________________ +[ 22395] By: nicholas on 2004/02/27 12:05:30 + Log: Integrate: + [ 22337] + fix write test: -small_number may be displayed as 00.00 or -0.00 + + [ 22343] + -Dx could coredump on threaded builds because consts are now + stored in the pad + + [ 22351] + remove a split test's dependence on -Dx output + (needed after change #22343) + + [ 22371] + Fix a segfault during optree construction. (bug #27024) + + [ 22372] + Enhance test cleanliness by a very small factor. + + [ 22373] + [perl #26959] fix memory leak in @_ = ...; goto &sub + + [ 22375] + Skip the Net/Ping/450_service failures on HP-UX for the time being + Branch: maint-5.8/perl + ! t/comp/parser.t + !> dump.c lib/Net/Ping/t/450_service.t op.c pp_ctl.c t/op/split.t + !> t/op/write.t +____________________________________________________________________________ +[ 22394] By: nicholas on 2004/02/27 11:27:50 + Log: Integrate: + [ 22322] + remove C construct from core modules + Branch: maint-5.8/perl + ! lib/ExtUtils/MM_Win95.pm + !> ext/B/B/Deparse.pm ext/IO/lib/IO/Handle.pm + !> ext/IO/lib/IO/Pipe.pm lib/ExtUtils/Liblist/Kid.pm + !> lib/ExtUtils/MM_NW5.pm lib/Net/NNTP.pm lib/Net/POP3.pm + !> lib/Net/SMTP.pm lib/Pod/Parser.pm lib/Test/Harness.pm + !> utils/h2xs.PL +____________________________________________________________________________ +[ 22392] By: nicholas on 2004/02/27 10:36:30 + Log: Integrate: + [ 22349] + optimise the sorting inplace of plain arrays: @a = sort @a + + [ 22350] + add Deparse/Concise support for inplace sort (change 22349) + Branch: maint-5.8/perl + !> ext/B/B/Concise.pm ext/B/B/Deparse.pm op.c op.h pp_sort.c + !> t/op/sort.t +____________________________________________________________________________ +[ 22390] By: nicholas on 2004/02/26 23:21:24 + Log: Integrate: + [ 22309] + Missing semi-colon + From: "Brendan O'Dea" + Date: Sun, 15 Feb 2004 23:27:17 +1100 + Message-ID: <20040215122717.GA26812@londo.c47.org> + + [ 22325] + Upgrade to MIME::Base64 3.00. + Fix t/warn.t so it works in the core. + Reintegrate change #22309 in it. Bump $VERSION to 3.00_01. + + [ 22326] + One of the new tests of MIME::Base64 relies on a non-core module. + + [ 22345] + Upgrade to Term::ANSIColor 1.08. + + [ 22362] + Subject: [PATCH] Benchmark for child processes + From: Chia-liang Kao + Date: Mon, 23 Feb 2004 22:53:51 +0800 + Message-ID: <20040223145351.GH94376@portege.clkao.org> + + [ 22366] + Subject: Re: [perl #24338] Attribute::Handlers will trash UNIVERSAL + From: alan + Date: Tue, 17 Feb 2004 14:23:08 -0500 (EST) + Message-ID: + Branch: maint-5.8/perl + +> ext/MIME/Base64/t/bad-sv.t ext/MIME/Base64/t/warn.t + !> MANIFEST ext/MIME/Base64/Base64.pm ext/MIME/Base64/Base64.xs + !> ext/MIME/Base64/Changes ext/MIME/Base64/QuotedPrint.pm + !> ext/MIME/Base64/t/base64.t lib/Attribute/Handlers.pm + !> lib/Benchmark.pm lib/Term/ANSIColor.pm + !> lib/Term/ANSIColor/ChangeLog lib/Term/ANSIColor/README + !> lib/Term/ANSIColor/test.pl +____________________________________________________________________________ +[ 22389] By: nicholas on 2004/02/26 22:32:31 + Log: Integrate: + [ 22286] + Subject: [PATCH] Correct some prototypes in perlapi.pod + From: Steve Hay + Date: Fri, 06 Feb 2004 12:44:05 +0000 + Message-ID: <40238C15.2090200@uk.radan.com> + + [ 22330] + 1. Add section to perlxs.pod describing that the refcount of AVs/HVs + returned from XSUBs through RETVAL isn't decremented as it is for + SVs. This causes those XSUBs to leak memory and cannot be fixed + without breaking existing CPAN modules that work around this bug. + + 2. Fix a memory leak of that kind in POSIX::localconv. + + [ 22338] + Add base.pm and fields.pm to the maintainer list. + Remove a duplicate file from this list. + Branch: maint-5.8/perl + !> Porting/Maintainers.pl ext/POSIX/POSIX.xs pod/perlapi.pod + !> pod/perlxs.pod sv.h +____________________________________________________________________________ +[ 22388] By: nicholas on 2004/02/26 20:07:31 + Log: Integrate: + [ 22279] + All whitespace is equal, but some whitespace is more equal than others + (lib/DBM_Filter/Changes line had spaces. Spaces bad. Tabs better) + + [ 22285] + Subject: [PATCH] Fix absolute path handling in installhtml + From: Steve Hay + Date: Fri, 06 Feb 2004 16:14:14 +0000 + Message-ID: <4023BD56.6090903@uk.radan.com> + + [ 22298] + Subject: Re: [PATCH] Add "Camel" logo icon to perl.exe on Windows + From: Greg Matheson + Date: Tue, 10 Feb 2004 12:36:33 +0800 + Message-ID: <20040210043633.GA33671687@momotaro> + + [ 22314] + 1. Creating backward compatibility for Configure after patches + #22227 and #22302 to still support 5.8.x and below + + 2. Small change for building on GNU hurd + Date: Sun, 15 Feb 2004 23:27:17 +1100 + From: "Brendan O'Dea" + Message-ID: <20040215122717.GA26812@londo.c47.org> + + [ 22342] + Add a tool to report dual-lived core modules that don't + have the same version than the corresponding module on CPAN. + + [ 22346] + Subject: [PATCH] genmk95.pl touchup for distclean on Win98 + From: Greg Matheson + Date: Fri, 20 Feb 2004 15:34:59 +0800 + Message-ID: <20040220153459.A30249@ms.chinmin.edu.tw> + + [ 22347] + Delete lib/IPC/SysV.t (duplicate of ext/IPC/SysV/t/ipcsysv.t) + + [ 22358] + Subject: initial patch for cygwin IPC via cygserver + From: Yitzchak Scott-Thoennes + Date: Thu, 19 Feb 2004 09:01:13 -0800 + Message-ID: <20040219170113.GA2792@efn.org> + + [ 22359] + Subject: Re: Perl 5.8.1 on IRIX 5.3 + Date: Thu, 22 Jan 2004 18:35:26 +0100 (CET) + From: Georg Schwarz + Message-Id: + + [ 22374] + AIX hints stage 3: remove AIX 3 and AIX 4 after split off + One open issue left: promoting to cc_r for threaded builds + need a review to permit users using -Dcc=xlc_r for non + threaded builds + + [ 22379] + From: Art Haas + Subject: Replacing '-rdynamic' in Configure script + Date: Fri, 20 Feb 2004 13:53:56 -0600 + Message-ID: <20040220195400.31177.qmail@onion.perl.org> + Branch: maint-5.8/perl + +> Porting/corecpan.pl + - lib/IPC/SysV.t + ! Configure + !> MANIFEST Makefile.SH ext/IPC/SysV/hints/cygwin.pl hints/aix.sh + !> hints/cygwin.sh hints/gnu.sh hints/irix_5.sh installhtml + !> win32/genmk95.pl win32/makefile.mk +____________________________________________________________________________ +[ 22387] By: nicholas on 2004/02/26 18:55:18 + Log: Integrate: + [ 22172] + back out change #22167 "freeing a CV reference that was currently + being executed caused coredumps". + The new test case sometimes locks up linux's malloc, and with + Perl's malloc the test code still coredumps :-( + + [ 22182] + second attempt to fix [perl #24914] freeing a CV reference that was + currently being executed caused coredumps. The dounwind called by + die unwinds all the contexts on the context stack before unwinding + the save stack. To stop premature freeing of the CV, hold + references to it on both stacks. + Branch: maint-5.8/perl + ! t/op/closure.t + !> cop.h perl.c pp_ctl.c pp_hot.c pp_sort.c scope.c scope.h sv.c +____________________________________________________________________________ +[ 22386] By: nicholas on 2004/02/26 15:55:53 + Log: Integrate: + [ 22167] + [perl #24914] freeing a CV reference that was currently being + executed caused coredumps + + [ 22209] + Remove small memory leak in newATTRSUB that manifested as a + leaking scalar after the interpeter was cloned + + [ 22215] + add test for change 22209 (Remove small memory leak in newATTRSUB) + Branch: maint-5.8/perl + !> op.c perl.c scope.c scope.h sv.c t/op/closure.t +____________________________________________________________________________ +[ 22385] By: nicholas on 2004/02/26 15:35:11 + Log: Integrate: + [ 22102] + Subject: segv in pad.c with threads (was: DBD::Oracle and Perl 5.8.2 threads) + Message-ID: <20040107121357.GD82921@dansat.data-plan.com> + + Returning a closure from a thread (via join) could mess up because + pointers to PL_sv_undef weren't rejigged to point at the joiner's + version of PL_sv_undef. Also, the closure's CvGV got cloned too + but never freed, since CvGV isn't refcounted. + + [ 22103] + temporarily backout test of thread returning a closure. It crashes + win32. + + [ 22201] + Subject: Re: threads::shared::queue; + From: Jan Dubois + Date: Thu, 22 Jan 2004 19:18:46 -0800 + Message-Id: + + Avoid threads+win32 crash by freeing Perl interpreter slightly later + Branch: maint-5.8/perl + ! ext/threads/t/problems.t + !> ext/threads/threads.xs sv.c +____________________________________________________________________________ +[ 22384] By: nicholas on 2004/02/26 15:05:54 + Log: Integrate: + [ 22284] + Subject: [PATCH perlunicode.pod] chomp() cares about Unicode + From: SADAHIRO Tomoyuki + Date: Sat, 07 Feb 2004 00:08:36 +0900 + Message-Id: <20040206235116.0E36.BQW10602@nifty.com> + + [ 22295] + Add a note in Unicode::UCD about the _getcode() function + being copy-n-pasted in charnames.pm. (spotted by Merijn) + + [ 22297] + Add 5.005_04-RC1 and Leon in perlhist. + + [ 22299] + Subject: [comment patch] (ed: mg.c:mg_set() => mg.c:Perl_magic_set()) + From: Stas Bekman + Date: Wed, 11 Feb 2004 16:53:54 -0800 + Message-ID: <402ACEA2.4020907@stason.org> + + [ 22301] + Fix an fcntl example in perlopentut, spotted by MJD. + + [ 22310] + Fix typo in doc for Encode + From: "Brendan O'Dea" + Date: Sun, 15 Feb 2004 23:27:17 +1100 + Message-ID: <20040215122717.GA26812@londo.c47.org> + + [ 22329] + Encode has local changes. Up-version it. + + [ 22348] + Document the SVf_PADSTALE flag + + [ 22368] + Subject: Bugfix for perlrequick and perlretut + From: Mark Kvale + Date: Tue, 24 Feb 2004 11:32:34 -0800 + Message-Id: <200402241132.34656.kvale@phy.ucsf.edu> + + [ 22370] + Update Changes and AUTHORS. + + [ 22377] + remove my work address + + [ 22380] + Subject: [PATCH] Improved perlapi documentation for croak + From: Mark Fowler + Date: Wed, 25 Feb 2004 22:47:21 +0000 (GMT) + Message-ID: + + (and regenerate perlapi.pod.) + + [ 22381] + Integrate: + [ 22339] + Mention 5.005_04 RC2 + + [ 22360] + Update for 5.005_04 release + + [ 22382] + Add Mark Fowler + + [ 22383] + Moving all the e-mail addresses over by 1 column makes them start on + an 8 column tabstop, which makes editing this file easier. + So then I replaced spaces with tabs and made it smaller too. + Branch: maint-5.8/perl + !> AUTHORS ext/Encode/Encode.pm lib/Unicode/UCD.pm pad.c perl.c + !> pod/perlapi.pod pod/perlhist.pod pod/perlopentut.pod + !> pod/perlrequick.pod pod/perlretut.pod pod/perlunicode.pod + !> util.c +____________________________________________________________________________ +[ 22324] By: nicholas on 2004/02/17 22:37:52 + Log: Integrate: + [ 21989] + From: "Nigel Sandever" + Subject: [PATCH] 5.8.1 / bcc55 / win32 / Enable PerlIO and/ or USE_LARGE_FILES + Message-ID: + Date: Thu, 25 Sep 2003 21:49:07 +0000 + + [ 21990] + Fix a little syntax error, reported by Marcus Holland-Moritz + + [ 22287] + Subject: Re: [PATCH] Add "Camel" logo icon to perl.exe on Windows + From: Greg Matheson + Date: Mon, 2 Feb 2004 16:52:44 +0800 + Message-ID: <20040202165244.A17415@ms.chinmin.edu.tw> + Branch: maint-5.8/perl + !> dosish.h win32/makefile.mk win32/win32.c win32/win32sck.c +____________________________________________________________________________ +[ 22296] By: nicholas on 2004/02/09 23:34:14 + Log: Integrate: + [ 22256] + add test for Change 22194: + [perl #25147] "stmt if BAREWORD" bypasses strict 'subs' checks + Branch: maint-5.8/perl + !> t/lib/strict/subs +____________________________________________________________________________ +[ 22293] By: nicholas on 2004/02/09 21:36:16 + Log: Integrate: + [ 22161] + Subject: [PATCH] format/write (version 2) + From: LAUN Wolfgang + Message-ID: + + Fixes and additions to formats: + + Improvement: NULL chars in picture line + Bugfix: C<@*> shown in output if not alone on a line + New feature: C<^*> for variable-width, one-line-at-a-time text + Improvement: Diagnostic on C<@#> and C<~~> + Bugfix: Segmentation fault on big numbers + Improvement (maybe): Truncation of numbers produces misleading output + Bugfix: "}" terminates format + Bugfix: Error when copying non-UTF to UTF (EBCDIC only) + + [ 22162] + [perl #8698] format bug with undefined _TOP + name of format_TOP now derived from the name of the current + filehandle rather then the name of the format associetd with that + handle + + [ 22190] + remove the platform dependencies of the write.t tests introduced + by change #22161, by hard-coding the expected outputs rather + than using sprintf('%f'). + + [ 22203] + make some t/op/write.t failures more verbose + Branch: maint-5.8/perl + !> embed.fnc embed.h form.h pod/perldiag.pod pod/perlform.pod + !> pp_ctl.c pp_sys.c proto.h t/op/write.t toke.c +____________________________________________________________________________ +[ 22288] By: nicholas on 2004/02/08 19:03:02 + Log: Integrate: + [ 22055] + Subject: Re: [perl #24774] eval + format - \n = pp_ctl.c assertion + From: LAUN Wolfgang + Date: Fri, 2 Jan 2004 11:31:46 +0100 + Message-ID: + + eval of of a truncated format should fail + + [ 22075] + This TODO test seems to pass now. + + [ 22076] + The TODO tag should be included also when a TODO test succeeds, + so it's reported by the test harness + Branch: maint-5.8/perl + !> t/op/write.t toke.c +____________________________________________________________________________ +[ 22283] By: nicholas on 2004/02/07 23:05:34 + Log: Integrate: + [ 22254] + Subject: Patch for Shell.pm + From: Manuel Valente + Date: Tue, 27 Jan 2004 19:18:26 +0100 + Message-Id: <4016AB72.1080503@idealx.com> + + New option for Shell.pm to discard stderr instead of capturing it + + [ 22259] + update fix to Shell.pm in change #22254: make /dev/null portable + + [ 22272] + Fix a non-standard NAME pod section + (by Smylers and Casey West) + Branch: maint-5.8/perl + !> lib/Carp/Heavy.pm lib/Shell.pm +____________________________________________________________________________ +[ 22277] By: nicholas on 2004/02/07 19:03:40 + Log: Integrate: + [ 22243] + Message-ID: <40113F7B.6050701@davidfavor.com> + Date: Fri, 23 Jan 2004 09:36:27 -0600 + From: David Favor + Part I: In hints/aix.sh change -qmaxmem=16384 to -qmaxmem=-1 + so no compilation stack limits are imposed. + + [ 22260] + Subject: patch for IRIX/gcc link issues + From: Martin Pool + Date: Wed, 28 Jan 2004 10:56:25 +1100 + Message-ID: <20040127235624.GA32612@hp.com> + + [ 22261] + If someone chooses xlc as default C compiler, threaded builds + will fail, unless converted to cc_r + + [ 22266] + AIX 3 hints split off from default hints in preparation + of a hint file cleanup. aix_4.sh will follow soon + + [ 22267] + AIX 3 support removed from default hints after its separation + + [ 22273] + Added hints_4.sh for specific AIX 4 support + this is the next stage in the general cleanup process + for the AIX hints. More to come + Branch: maint-5.8/perl + +> hints/aix_3.sh hints/aix_4.sh + !> MANIFEST hints/aix.sh hints/irix_6.sh +____________________________________________________________________________ +[ 22276] By: nicholas on 2004/02/07 16:55:32 + Log: Integrate: + [ 22252] + Don't show code closing STD{IN,OUT} before reopening, because + doing so is unnecessary and occasionally harmful. + + [ 22257] + threads documentation: fork on UNIX might not copy all threads. + Branch: maint-5.8/perl + !> pod/perlfork.pod pod/perlfunc.pod pod/perlthrtut.pod +____________________________________________________________________________ +[ 22251] By: nicholas on 2004/01/30 23:31:36 + Log: Integrate: + [ 22245] + Subject: Re: [perl #25269] panic: pp_match start/end pointers in m/^(?=.*(a)).*(bc)/ + From: hv@crypt.org + Date: Thu, 29 Jan 2004 15:12:12 +0000 + Message-Id: <200401291512.i0TFCCr23736@zen.crypt.org> + Branch: maint-5.8/perl + !> pp_hot.c t/op/pat.t +____________________________________________________________________________ +[ 22250] By: nicholas on 2004/01/30 20:18:43 + Log: Integrate: + [ 22235] + More punctuation, good. + + [ 22248] + Another undocumented use of $_ : with reverse(). + Branch: maint-5.8/perl + !> pod/perlfunc.pod +____________________________________________________________________________ +[ 22249] By: nicholas on 2004/01/30 20:00:26 + Log: Integrate: + [ 21996] + Upgrade to Switch 2.10, by integrating some changes by Damian + + [ 21997] + Update the README and Changes files for Switch 2.10 + + [ 22244] + I'm the new maintainer of Switch. + Sync with the CPAN version of Switch 2.10. + Branch: maint-5.8/perl + !> Porting/Maintainers.pl lib/Switch.pm lib/Switch/Changes + !> lib/Switch/README +____________________________________________________________________________ +[ 22241] By: nicholas on 2004/01/27 22:39:47 + Log: Integrate: + [ 22207] + Subject: Re: Doc patches for File::Find + From: Mark Jason Dominus + Date: Thu, 22 Jan 2004 09:30:58 -0500 + Message-Id: <20040122143058.29226.qmail@plover.com> + + Better document the fact that neither find() nor finddepth() do a + breath-first search. + + [ 22208] + Subject: [perl #24942] fields::inherit doesn't bless derived + package's \%FIELDS, results in phash deprecation errors. + From: "nothingmuch@woobling.org (via RT)" + Date: 18 Jan 2004 15:15:46 -0000 + Message-Id: + + [ 22227] + Subject: [PATCH] myconfig.SH + From: "Daniel S. Lewart" + Date: Sun, 25 Jan 2004 22:11:25 -0600 + Message-Id: <20040125221125.A5390@staff1.cso.uiuc.edu> + + make perl -V show the major release as 5 rather than 5.0 + + [ 22228] + Subject: [PATCH] 5.8.3 -- fix signal comments in L + From: Brendan O'Dea + Date: Sun, 25 Jan 2004 11:23:48 +1100 + Message-ID: <20040125002348.GA31407@londo.c47.org> + Branch: maint-5.8/perl + !> lib/File/Find.pm lib/base.pm lib/base/t/fields-base.t + !> myconfig.SH pod/perlfunc.pod +____________________________________________________________________________ +[ 22240] By: nicholas on 2004/01/27 22:15:48 + Log: Integrate: + [ 22185] + Document CVf_UNIQUE flag better + + [ 22187] + [perl #24940] "sub foo :unique" segfaults + + Turn these two into compile-time errors until such time as + someone thinks of a useful meaning for them: + my $x : unique + sub foo : unique + + [ 22188] + warn that C<$x : unique> operates on the typeglob, so affects @x + and %x too. + + [ 22189] + Fix typo in patch #22188 + Branch: maint-5.8/perl + !> cv.h ext/threads/t/problems.t pod/perldiag.pod + !> pod/perlfunc.pod toke.c xsutils.c +____________________________________________________________________________ +[ 22237] By: nicholas on 2004/01/27 21:50:08 + Log: Integrate: + [ 22195] + Subject: Re: [PATCH] Add "Camel" logo icon to perl.exe on Windows + From: Steve Hay + Date: Thu, 22 Jan 2004 17:08:29 +0000 + Message-ID: <4010038D.4070104@uk.radan.com> + Branch: maint-5.8/perl + +> win32/makeico.pl win32/perlexe.rc + !> MANIFEST README.win32 win32/Makefile win32/makefile.mk +____________________________________________________________________________ +[ 22236] By: nicholas on 2004/01/27 21:31:36 + Log: Integrate: + [ 22198] + Check the return values of chomp + (more tricky than it may seem, as the return value is unicode) + + [ 22199] + Document chomp's travels in the wonderful world of use encoding; + + [ 22200] + test that use encoding; doesn't cause references to be stringified + Branch: maint-5.8/perl + !> pod/perlfunc.pod t/uni/chomp.t +____________________________________________________________________________ +[ 22234] By: nicholas on 2004/01/27 21:16:25 + Log: Integrate: + [ 22155] + Make chomp heed the utf8 flags on the target string and $/ + [Fixes #24888] + More work still needed to make chomp heed the encoding pragma. + + [ 22180] + Subject: Re: [perl #24926] chop/~ mangles UTF8 [PATCH] + From: Gisle Aas + Date: 17 Jan 2004 01:29:02 -0800 + Message-ID: + (test rewritten to fit in blead) + + [ 22193] + Convert the older parts of op/bop.t over to test.pl + + [ 22196] + Subject: Re: [perl #24888] chomp ignores utf8 + From: SADAHIRO Tomoyuki + Message-Id: <20040116040355.A849.BQW10602@nifty.com> + Date: Fri, 16 Jan 2004 04:13:00 +0900 + + [ 22197] + Test return values of all chomps + Branch: maint-5.8/perl + +> t/uni/chomp.t + ! t/op/bop.t + !> MANIFEST doop.c pp.c t/op/chop.t +____________________________________________________________________________ +[ 22232] By: nicholas on 2004/01/27 20:49:10 + Log: If perforce could branch and integrate in one, I'd not need to do this + + Integrate: + [ 22183] + Fix precedence errors and add some cleanup in the new + DBM_Filter tests + Branch: maint-5.8/perl + !> lib/DBM_Filter/t/01error.t lib/DBM_Filter/t/02core.t +____________________________________________________________________________ +[ 22231] By: nicholas on 2004/01/27 20:35:31 + Log: Integrate: + [ 22110] + Upgrade to Math::BigRat 0.11 + + Subject: [PATCH] [ANNOUCNE] Math::BigRat 0.11 + From: Tels + Date: Wed, 7 Jan 2004 18:30:06 +0100 + Message-Id: <200401071830.07445@bloodgate.com> + + [ 22123] + Subject: [PATCH handy.h] RE: MIME-Base64-2.22 [PATCH] + From: Robin Barker + Date: Thu, 8 Jan 2004 16:21:25 -0000 + Message-ID: <533D273D4014D411AB1D00062938C4D904046787@hotel.npl.co.uk> + + [ 22124] + Upgrade to MIME::Base64 2.23. + + [ 22126] + Upgrade to Locale::Maketext 1.07. + + [ 22128] + MANIFEST adjustment. + + [ 22129] + Subject: [PATCH] [ANNOUNCE] Math::BigInt v1.69 + From: Tels + Date: Tue, 13 Jan 2004 19:28:48 +0100 + Message-Id: <200401131928.50247@bloodgate.com> + + [ 22136] + Assimilate CGI 3.03 + + [ 22168] + From: "Paul Marquess" + Subject: [PATCH ] Enhanced DBM Filters + Date: Sat, 17 Jan 2004 16:44:53 -0000 + Message-ID: + + add DBM_Filter + + [ 22204] + Upgrade to Locale::Maketext 1.08. + Branch: maint-5.8/perl + +> lib/DBM_Filter.pm lib/DBM_Filter/Changes + +> lib/DBM_Filter/compress.pm lib/DBM_Filter/encode.pm + +> lib/DBM_Filter/int32.pm lib/DBM_Filter/null.pm + +> lib/DBM_Filter/t/01error.t lib/DBM_Filter/t/02core.t + +> lib/DBM_Filter/t/compress.t lib/DBM_Filter/t/encode.t + +> lib/DBM_Filter/t/int32.t lib/DBM_Filter/t/null.t + +> lib/DBM_Filter/t/utf8.t lib/DBM_Filter/utf8.pm + +> lib/Locale/Maketext/t/04super.t + +> lib/Locale/Maketext/t/05super.t + +> lib/Locale/Maketext/t/06super.t lib/dbm_filter_util.pl + !> MANIFEST ext/MIME/Base64/Base64.pm ext/MIME/Base64/Base64.xs + !> ext/MIME/Base64/Changes ext/MIME/Base64/QuotedPrint.pm handy.h + !> lib/CGI.pm lib/Locale/Maketext.pm lib/Locale/Maketext.pod + !> lib/Locale/Maketext/ChangeLog lib/Locale/Maketext/README + !> lib/Locale/Maketext/TPJ13.pod lib/Math/BigFloat.pm + !> lib/Math/BigInt.pm lib/Math/BigInt/CalcEmu.pm + !> lib/Math/BigInt/t/bare_mbi.t lib/Math/BigInt/t/bigintpm.inc + !> lib/Math/BigInt/t/bigintpm.t lib/Math/BigInt/t/sub_mbi.t + !> lib/Math/BigRat.pm lib/Math/BigRat/t/bigrat.t + !> lib/Math/BigRat/t/bigratpm.inc lib/Math/BigRat/t/bigratpm.t +____________________________________________________________________________ +[ 22230] By: nicholas on 2004/01/27 20:08:23 + Log: Integrate: + [ 22107] + nit to Bytecode - the av_extend opcode wasn't saved when + the array had AvFILL == 0 + + [ 22109] + Subject: [PATCH] Nicer formatting for function arguments in Carp messages + From: Steve Hay + Date: Wed, 07 Jan 2004 13:22:30 +0000 + Message-ID: <3FFC0816.9090406@uk.radan.com> + + (and increment version number in Carp) + + [ 22179] + Subject: [PATCH] dl_unload_file for HP-UX + Date: Mon, 12 Jan 2004 07:49:44 -0800 + From: Neil Watkiss + Message-ID: <20040112154944.GA15412@ActiveState.com> + + [ 22191] + Subject: PATCH for perl-5.8.4 + From: "Edward S. Peschko" + Date: Mon, 19 Jan 2004 17:21:18 -0800 + Message-Id: <20040120012118.GA29151@mdssdev05.comp.pge.com> + + Add @DynaLoader::dl_shared_objects feature + + [ 22192] + [perl #25160] ':flock' not recognized unless it's first + Exporter::Heavy now will treat :, /, and ! special in + all arguments, not only if the _first_ arg starts with it + Date: Wed, 21 Jan 2004 08:32:47 -0500 + Message-ID: <20040121133248.3359.qmail@plover.com> + + [ 22224] + Document change 22192 + We still need tests! + Branch: maint-5.8/perl + !> ext/B/B/Assembler.pm ext/DynaLoader/DynaLoader_pm.PL + !> ext/DynaLoader/dl_hpux.xs lib/Carp.pm lib/Carp/Heavy.pm + !> lib/Exporter.pm lib/Exporter/Heavy.pm +____________________________________________________________________________ +[ 22229] By: nicholas on 2004/01/27 19:43:58 + Log: Integrate: + [ 22068] + Some mandatory syntax warnings emitted by the lexer weren't + disableable (bug [perl #24815]). + + [ 22194] + [perl #25147] C didn't give the + "Bareword not allowed" error unless warnings were enabled + Branch: maint-5.8/perl + !> op.c pod/perldiag.pod t/lib/warnings/toke toke.c +____________________________________________________________________________ +[ 22226] By: nicholas on 2004/01/26 23:25:31 + Log: Integrate: + [ 22082] + Fix bug #24813 : the -0 wasn't recognized on the #! line + + [ 22084] + Hardcoded numerical flag masks. Bad. + + [ 22121] + use sv_setpvn rather than sv_setpv and save a strlen() + + [ 22160] + buigid #24905 - the code planted to call glob() retained an + extraneous targ index in a pushmark op, leasing to strangeness + when the op was freed + + [ 22169] + Subject: Perl core dumps when running out of memory [PATCH] + From: Gisle Aas + Date: 17 Jan 2004 06:18:13 -0800 + Message-Id: + + Display 'out of memeory' errors using low-level I/O to avoid + recursive failure and so coredumps. + + [ 22170] + Subject: Re: open/or inconsistency + From: SADAHIRO Tomoyuki + Date: Sat, 17 Jan 2004 19:59:55 +0900 + Message-Id: <20040117195729.623A.BQW10602@nifty.com> + (plus a test.) + Don't produce the warning for constructs like + open my $fh, $file or die; + + [ 22174] + Subject: [PATCH bleadperl] rescue PerlIO_getname for VMS + Date: Sun, 18 Jan 2004 12:51:23 -0600 + From: "Craig A. Berry" + Message-ID: <400AD5AB.3080708@mac.com> + + [ 22223] + Subject: [PATCH] fix vmsish.t #25 + From: "Craig A. Berry" + Date: Sat, 24 Jan 2004 18:45:35 -0600 + Message-ID: <401311AF.1060706@mac.com> + Branch: maint-5.8/perl + +> t/run/switch0.t + !> MANIFEST doop.c lib/vmsish.t op.c perl.c perlio.c + !> t/lib/warnings/op util.c +____________________________________________________________________________ +[ 22225] By: nicholas on 2004/01/26 22:26:53 + Log: Integrate: + [ 22071] + [perl #24674] + stop $^O getting tainted on read access, and disallow tainted + assignment to it + + [ 22181] + change #22071 (taint bug in $^0) introduced a potential double + free(), because PL_osname may get freed but not nulled if a taint + test fails in between. Mea cupla and all that... + Branch: maint-5.8/perl + !> mg.c t/op/taint.t +____________________________________________________________________________ +[ 22222] By: nicholas on 2004/01/26 21:34:06 + Log: Integrate: + [ 22051] + Upgrade to Time::HiRes 1.54 + + [ 22159] + Upgrade to Time::HiRes 1.55 + Branch: maint-5.8/perl + +> ext/Time/HiRes/hints/solaris.pl + !> MANIFEST ext/Time/HiRes/Changes ext/Time/HiRes/HiRes.pm + !> ext/Time/HiRes/HiRes.xs +____________________________________________________________________________ +[ 22220] By: nicholas on 2004/01/26 21:11:09 + Log: Integrate: + [ 22043] + Use the optimization level -O2 by default on Linux/gcc. + See : + Subject: Benchmarking (was Re: GCC bug breaking Perl_sv_catpvfn()?) + From: "Marcus Holland-Moritz" + Date: Thu, 1 Jan 2004 05:32:15 +0100 + Message-ID: <071601c3d020$4046d2a0$d500a8c0@R2D2> + + [ 22057] + Subject: [PATCH configure.com] future-proof signal check + From: "Craig A. Berry" + Date: Sun, 04 Jan 2004 22:53:40 -0600 + Message-ID: <3FF8EDD4.3080308@mac.com> + + [ 22120] + Subject: [PATCH] Make 'Configure -Dcf_by=...' work + From: Gisle Aas + Date: 12 Jan 2004 02:35:27 -0800 + Message-ID: + + [ 22173] + Subject: [PATCH bleadperl] detect nanosleep on VMS + Date: Sun, 18 Jan 2004 17:03:30 -0600 + From: "Craig A. Berry" + Message-ID: <400B10C2.9060504@mac.com> + + [ 22175] + Describe how to limit the perl's default @INC during Configure + to _not_ include older versions + + [ 22177] + Allow -Uinc_version_list to mean -Dinc_version_list=none + See INSTALL for more details + Branch: maint-5.8/perl + !> Configure INSTALL configure.com hints/linux.sh +____________________________________________________________________________ +[ 22219] By: nicholas on 2004/01/26 20:35:12 + Log: Subject: Refactor VOS patches for bleadperl and perl-5.8.x + From: "Green, Paul" + Message-ID: + Date: Thu, 15 Jan 2004 16:00:15 -0500 + + (the 5.8.x specific bits, plus integrate the common bits) + + Integrate: + [ 22171] + Subject: Refactor VOS patches for bleadperl and perl-5.8.x + From: "Green, Paul" + Date: Thu, 15 Jan 2004 16:00:15 -0500 + Message-ID: + Branch: maint-5.8/perl + ! README.vos vos/build.cm vos/config.alpha.def vos/config.ga.def + ! vos/perl.bind + !> hv.c pp_pack.c vos/Changes +____________________________________________________________________________ +[ 22165] By: nicholas on 2004/01/17 14:42:52 + Log: Create perl584delta.pod + (Not that I'm really proposing to start work on 5.8.4 today) + Branch: maint-5.8/perl + + pod/perl584delta.pod + ! MANIFEST Makefile.SH pod.lst pod/perl.pod pod/perltoc.pod + ! vms/descrip_mms.template win32/Makefile win32/makefile.mk + ! win32/pod.mak +____________________________________________________________________________ +[ 22164] By: nicholas on 2004/01/17 14:00:17 + Log: Disarm the maint branch + Branch: maint-5.8/perl + +> Changes5.8.3 + ! Changes MANIFEST patchlevel.h pod/perl583delta.pod +____________________________________________________________________________ +[ 22152] By: nicholas on 2004/01/14 17:55:17 + Log: Update Changes + Branch: maint-5.8/perl + ! Changes +____________________________________________________________________________ diff --git a/gnu/usr.bin/perl/Cross/config.sh-arm-linux b/gnu/usr.bin/perl/Cross/config.sh-arm-linux index 64ffc74a473..1a009b6476e 100644 --- a/gnu/usr.bin/perl/Cross/config.sh-arm-linux +++ b/gnu/usr.bin/perl/Cross/config.sh-arm-linux @@ -36,8 +36,8 @@ api_subversion='0' api_version='8' api_versionstring='5.8.0' ar='ar' -archlib='/usr/lib/perl5/5.8.3/armv4l-linux' -archlibexp='/usr/lib/perl5/5.8.3/armv4l-linux' +archlib='/usr/lib/perl5/5.8.5/armv4l-linux' +archlibexp='/usr/lib/perl5/5.8.5/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -55,7 +55,7 @@ castflags='0' cat='cat' cc='cc' cccdlflags='-fpic' -ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.3/armv4l-linux/CORE' +ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.5/armv4l-linux/CORE' ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' @@ -668,7 +668,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.8.3/armv4l-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.8.5/armv4l-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -676,13 +676,13 @@ installman1dir='./install_me_here/usr/share/man/man1' installman3dir='./install_me_here/usr/share/man/man3' installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' -installprivlib='./install_me_here/usr/lib/perl5/5.8.3' +installprivlib='./install_me_here/usr/lib/perl5/5.8.5' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.3/armv4l-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.5/armv4l-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.8.3' +installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.8.5' installsiteman1dir='./install_me_here/usr/share/man/man1' installsiteman3dir='./install_me_here/usr/share/man/man3' installsitescript='./install_me_here/usr/bin' @@ -804,13 +804,12 @@ pg='pg' phostname='hostname' pidtype='pid_t' plibpth='' -pm_apiversion='5.005' pmake='' pr='' prefix='/usr' prefixexp='/usr' -privlib='/usr/lib/perl5/5.8.3' -privlibexp='/usr/lib/perl5/5.8.3' +privlib='/usr/lib/perl5/5.8.5' +privlibexp='/usr/lib/perl5/5.8.5' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -871,17 +870,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.8.3/armv4l-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.8.3/armv4l-linux' +sitearch='/usr/lib/perl5/site_perl/5.8.5/armv4l-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.8.5/armv4l-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/usr/lib/perl5/site_perl/5.8.3' +sitelib='/usr/lib/perl5/site_perl/5.8.5' sitelib_stem='/usr/lib/perl5/site_perl' -sitelibexp='/usr/lib/perl5/site_perl/5.8.3' +sitelibexp='/usr/lib/perl5/site_perl/5.8.5' siteman1dir='/usr/share/man/man1' siteman1direxp='/usr/share/man/man1' siteman3dir='/usr/share/man/man3' @@ -918,7 +917,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='3' +subversion='5' sysman='/usr/share/man/man1' tail='' tar='' @@ -959,6 +958,7 @@ usefaststdio='define' useithreads='undef' uselargefiles='define' uselongdouble='undef' +usemallocwrap='define' usemorebits='undef' usemultiplicity='undef' usemymalloc='n' @@ -1000,13 +1000,12 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.8.3' +version='5.8.5' version_patchlevel_string='version 8 subversion 3' versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' -xs_apiversion='5.8.3' yacc='yacc' yaccflags='' zcat='' diff --git a/gnu/usr.bin/perl/META.yml b/gnu/usr.bin/perl/META.yml index 1b3b737cb1e..537cbefea9d 100644 --- a/gnu/usr.bin/perl/META.yml +++ b/gnu/usr.bin/perl/META.yml @@ -1,5 +1,5 @@ name: perl -version: 5.008003 +version: 5.008005 abstract: Practical Extraction and Reporting Language author: perl5-porters@perl.org license: perl @@ -20,6 +20,7 @@ private: - ext/Time/HiRes - ext/Unicode/Normalize - lib/Attribute/Handlers + - lib/base - lib/bignum - lib/CGI - lib/Class/ISA @@ -59,6 +60,7 @@ private: file: - ext/Filter/t/call.t - lib/Attribute/Handlers.pm + - lib/base.pm - lib/bigint.pm - lib/bignum.pm - lib/bigrat.pm @@ -94,6 +96,7 @@ private: - lib/ExtUtils/MY.pm - lib/ExtUtils/Packlist.pm - lib/ExtUtils/testlib.pm + - lib/fields.pm - lib/File/Spec.pm - lib/File/Temp.pm - lib/Filter/Simple.pm diff --git a/gnu/usr.bin/perl/Makefile.micro b/gnu/usr.bin/perl/Makefile.micro index b509448aeb7..735215ba28f 100644 --- a/gnu/usr.bin/perl/Makefile.micro +++ b/gnu/usr.bin/perl/Makefile.micro @@ -33,11 +33,10 @@ clean: -rm -f $(O) microperl distclean: clean - -rm -f uconfig.h # The microconfiguration. -uconfig.h: uconfig.sh config_h.SH +regen_uconfig: $(ENV) CONFIG_SH=uconfig.sh CONFIG_H=uconfig.h sh ./config_h.SH # Do not regenerate perly.c and perly.h. diff --git a/gnu/usr.bin/perl/NetWare/Makefile b/gnu/usr.bin/perl/NetWare/Makefile index 10fba73386f..5bbc4565ef6 100644 --- a/gnu/usr.bin/perl/NetWare/Makefile +++ b/gnu/usr.bin/perl/NetWare/Makefile @@ -86,7 +86,7 @@ NLM_VERSION = 3,20,0 # Here comes the CW tools - TO BE FILLED TO BUILD WITH CW - -MODULE_DESC = "Perl 5.8.3 for NetWare" +MODULE_DESC = "Perl 5.8.5 for NetWare" CCTYPE = CodeWarrior C_COMPILER = mwccnlm -c CPP_COMPILER = mwccnlm @@ -467,7 +467,7 @@ INST_NW_TOP2 = $(INST_NW_DRV)\perl # versioned installation can be obtained by setting INST_TOP above to a # path that includes an arbitrary version string. # -INST_VER = \5.8.3 +INST_VER = \5.8.5 # # Comment this out if you DON'T want your perl installation to have diff --git a/gnu/usr.bin/perl/NetWare/config.wc b/gnu/usr.bin/perl/NetWare/config.wc index afbdfd91781..745c6b5f210 100644 --- a/gnu/usr.bin/perl/NetWare/config.wc +++ b/gnu/usr.bin/perl/NetWare/config.wc @@ -732,7 +732,6 @@ pg='' phostname='hostname' pidtype='int' plibpth='' -pm_apiversion='5.005' pmake='' pr='' prefix='~INST_TOP~' @@ -908,7 +907,6 @@ version='~VERSION~' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' -xs_apiversion='5.6.0' zcat='' zip='zip' PERL_REVISION='~PERL_REVISION~' diff --git a/gnu/usr.bin/perl/NetWare/config_H.wc b/gnu/usr.bin/perl/NetWare/config_H.wc index c2e0c2e635b..a9d047f683a 100644 --- a/gnu/usr.bin/perl/NetWare/config_H.wc +++ b/gnu/usr.bin/perl/NetWare/config_H.wc @@ -3298,41 +3298,6 @@ #define M_VOID /* Xenix strikes again */ #endif -/* PERL_XS_APIVERSION: - * This variable contains the version of the oldest perl binary - * compatible with the present perl. perl.c:incpush() and - * lib/lib.pm will automatically search in c:\\perl\\site\\5.8.0\\lib\\NetWare-x86-multi-thread for older - * directories across major versions back to xs_apiversion. - * This is only useful if you have a perl library directory tree - * structured like the default one. - * See INSTALL for how this works. - * The versioned site_perl directory was introduced in 5.005, - * so that is the lowest possible value. - * Since this can depend on compile time options - * it is set by Configure. Other non-default sources - * of potential incompatibility, such as multiplicity, threads, - * debugging, 64bits, sfio, etc., are not checked for currently, - * though in principle we could go snooping around in old - * Config.pm files. - */ -/* PERL_PM_APIVERSION: - * This variable contains the version of the oldest perl - * compatible with the present perl. (That is, pure perl modules - * written for pm_apiversion will still work for the current - * version). perl.c:incpush() and lib/lib.pm will automatically - * search in c:\\perl\\site\\5.8.0\\lib for older directories across major versions - * back to pm_apiversion. This is only useful if you have a perl - * library directory tree structured like the default one. The - * versioned site_perl library was introduced in 5.005, so that's - * the default setting for this variable. It's hard to imagine - * it changing before Perl6. It is included here for symmetry - * with xs_apiveprsion -- the searching algorithms will - * (presumably) be similar. - * See the INSTALL file for how this works. - */ -#define PERL_XS_APIVERSION "5.8.0" -#define PERL_PM_APIVERSION "5.005" - /* SETUID_SCRIPTS_ARE_SECURE_NOW: * This symbol, if defined, indicates that the bug that prevents * setuid scripts from being secure is not present in this kernel. diff --git a/gnu/usr.bin/perl/Porting/checkcase.pl b/gnu/usr.bin/perl/Porting/checkcase.pl new file mode 100644 index 00000000000..66dccd24c88 --- /dev/null +++ b/gnu/usr.bin/perl/Porting/checkcase.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl +# Finds the files that have the same name, case insensitively, +# in the current directory and its subdirectories + +use warnings; +use strict; +use File::Find; + +my %files; +find(sub { + my $name = $File::Find::name; + # Assumes that the path separator is exactly one character. + $name =~ s/^\.\..//; + push @{$files{lc $name}}, $name; + }, '.'); + +my $failed; + +foreach (values %files) { + if (@$_ > 1) { + print join(", ", @$_), "\n"; + $failed++; + } +} + +print "no similarly named files found\n" unless $failed; diff --git a/gnu/usr.bin/perl/Porting/config.sh b/gnu/usr.bin/perl/Porting/config.sh index c621cc2b3e6..07ca782f518 100644 --- a/gnu/usr.bin/perl/Porting/config.sh +++ b/gnu/usr.bin/perl/Porting/config.sh @@ -8,8 +8,8 @@ # Package name : perl5 # Source directory : . -# Configuration time: Wed Jan 14 16:41:27 GMT 2004 -# Configured by : nick +# Configuration time: Fri Jul 16 20:59:18 BST 2004 +# Configured by : yourname # Target system : linux bagpuss.unfortu.net 2.4.19-rmk4 #3 fri oct 25 21:57:55 bst 2002 armv4l unknown Author='' @@ -36,8 +36,8 @@ api_subversion='0' api_version='8' api_versionstring='5.8.0' ar='ar' -archlib='/opt/perl/lib/5.8.3/armv4l-linux' -archlibexp='/opt/perl/lib/5.8.3/armv4l-linux' +archlib='/opt/perl/lib/5.8.5/armv4l-linux' +archlibexp='/opt/perl/lib/5.8.5/armv4l-linux' archname64='' archname='armv4l-linux' archobjs='' @@ -55,15 +55,15 @@ castflags='0' cat='cat' cc='cc' cccdlflags='-fpic' -ccdlflags='-rdynamic' -ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' +ccdlflags='-Wl,-E' +ccflags='-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' ccsymbols='__APCS_32__=1 __ARM_ARCH_3__=1 __CHAR_UNSIGNED__=1 __GNUC_MINOR__=95 __arm__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 cpu=arm machine=arm system=posix system=unix' ccversion='' -cf_by='nick' +cf_by='yourname' cf_email='yourname@yourhost.yourplace.com' -cf_time='Wed Jan 14 16:41:27 GMT 2004' +cf_time='Fri Jul 16 20:59:18 BST 2004' charsize='1' chgrp='' chmod='chmod' @@ -77,7 +77,7 @@ cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='__ELF__=1 __GNUC__=2 linux=1 unix=1' -cppflags='-fno-strict-aliasing -I/usr/local/include' +cppflags='-fno-strict-aliasing -pipe -I/usr/local/include' cpplast='-' cppminus='-' cpprun='cc -E' @@ -668,7 +668,7 @@ inc_version_list=' ' inc_version_list_init='0' incpath='' inews='' -installarchlib='/opt/perl/lib/5.8.3/armv4l-linux' +installarchlib='/opt/perl/lib/5.8.5/armv4l-linux' installbin='/opt/perl/bin' installhtml1dir='' installhtml3dir='' @@ -676,13 +676,13 @@ installman1dir='/opt/perl/man/man1' installman3dir='/opt/perl/man/man3' installprefix='/opt/perl' installprefixexp='/opt/perl' -installprivlib='/opt/perl/lib/5.8.3' +installprivlib='/opt/perl/lib/5.8.5' installscript='/opt/perl/bin' -installsitearch='/opt/perl/lib/site_perl/5.8.3/armv4l-linux' +installsitearch='/opt/perl/lib/site_perl/5.8.5/armv4l-linux' installsitebin='/opt/perl/bin' installsitehtml1dir='' installsitehtml3dir='' -installsitelib='/opt/perl/lib/site_perl/5.8.3' +installsitelib='/opt/perl/lib/site_perl/5.8.5' installsiteman1dir='/opt/perl/man/man1' installsiteman3dir='/opt/perl/man/man3' installsitescript='/opt/perl/bin' @@ -804,13 +804,12 @@ pg='pg' phostname='' pidtype='pid_t' plibpth='' -pm_apiversion='5.005' pmake='' pr='' prefix='/opt/perl' prefixexp='/opt/perl' -privlib='/opt/perl/lib/5.8.3' -privlibexp='/opt/perl/lib/5.8.3' +privlib='/opt/perl/lib/5.8.5' +privlibexp='/opt/perl/lib/5.8.5' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='4' @@ -871,17 +870,17 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/opt/perl/lib/site_perl/5.8.3/armv4l-linux' -sitearchexp='/opt/perl/lib/site_perl/5.8.3/armv4l-linux' +sitearch='/opt/perl/lib/site_perl/5.8.5/armv4l-linux' +sitearchexp='/opt/perl/lib/site_perl/5.8.5/armv4l-linux' sitebin='/opt/perl/bin' sitebinexp='/opt/perl/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' -sitelib='/opt/perl/lib/site_perl/5.8.3' +sitelib='/opt/perl/lib/site_perl/5.8.5' sitelib_stem='/opt/perl/lib/site_perl' -sitelibexp='/opt/perl/lib/site_perl/5.8.3' +sitelibexp='/opt/perl/lib/site_perl/5.8.5' siteman1dir='/opt/perl/man/man1' siteman1direxp='/opt/perl/man/man1' siteman3dir='/opt/perl/man/man3' @@ -918,7 +917,7 @@ stdio_stream_array='' strerror_r_proto='0' strings='/usr/include/string.h' submit='' -subversion='3' +subversion='5' sysman='/usr/share/man/man1' tail='' tar='' @@ -959,6 +958,7 @@ usefaststdio='define' useithreads='undef' uselargefiles='define' uselongdouble='undef' +usemallocwrap='define' usemorebits='undef' usemultiplicity='undef' usemymalloc='n' @@ -1000,13 +1000,12 @@ vendorprefix='' vendorprefixexp='' vendorscript='' vendorscriptexp='' -version='5.8.3' -version_patchlevel_string='version 8 subversion 3' +version='5.8.5' +version_patchlevel_string='version 8 subversion 5' versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' -xs_apiversion='5.8.3' yacc='yacc' yaccflags='' zcat='' @@ -1024,7 +1023,7 @@ config_arg6='-Dmyhostname=yourhost' config_arg7='-dE' PERL_REVISION=5 PERL_VERSION=8 -PERL_SUBVERSION=3 +PERL_SUBVERSION=5 PERL_API_REVISION=5 PERL_API_VERSION=8 PERL_API_SUBVERSION=0 diff --git a/gnu/usr.bin/perl/Porting/corecpan.pl b/gnu/usr.bin/perl/Porting/corecpan.pl new file mode 100644 index 00000000000..48fb7d92bac --- /dev/null +++ b/gnu/usr.bin/perl/Porting/corecpan.pl @@ -0,0 +1,69 @@ +#!perl +# Reports, in a perl source tree, which dual-lived core modules have not the +# same version than the corresponding module on CPAN. + +use 5.9.0; +use strict; +use Getopt::Std; +use ExtUtils::MM_Unix; +use lib 'Porting'; +use Maintainers qw(get_module_files %Modules); + +our $packagefile = '02packages.details.txt'; + +sub usage () { + die <) { + my ($p, $v) = split ' '; + $cpanversions{$p} = $v; +} +close $fh; + +for my $dist (sort keys %Modules) { + next unless $Modules{$dist}{CPAN}; + print "Module $dist...\n"; + for my $file (get_module_files($dist)) { + next if $file !~ /\.pm\z/ or $file =~ m{^t/}; + my $vcore = MM->parse_version($file) // 'undef'; + my $module = $file; + $module =~ s/\.pm\z//; + # some heuristics to figure out the module name from the file name + $module =~ s{^(lib|ext)/}{} + and $1 eq 'ext' + and ( $module =~ s{^(.*)/lib/\1\b}{$1}, + $module =~ s{(\w+)/\1\b}{$1}, + $module =~ s{^Encode/encoding}{encoding}, + $module =~ s{^MIME/Base64/QuotedPrint}{MIME/QuotedPrint}, + $module =~ s{^List/Util/lib/Scalar}{Scalar}, + ); + $module =~ s{/}{::}g; + my $vcpan = $cpanversions{$module} // 'not found'; + if (our $opt_v or $vcore ne $vcpan) { + print " $file: core=$vcore, cpan=$vcpan\n"; + } + } +} diff --git a/gnu/usr.bin/perl/README.aix b/gnu/usr.bin/perl/README.aix index 39383870382..7e9702505ff 100644 --- a/gnu/usr.bin/perl/README.aix +++ b/gnu/usr.bin/perl/README.aix @@ -227,7 +227,7 @@ Should yield no problems. =head2 Threaded Perl Threads seem to work OK, though at the moment not all tests pass when -threads are used in combination with 64bit configurations. +threads are used in combination with 64-bit configurations. You may get a warning when doing a threaded build: @@ -245,7 +245,7 @@ is not really significant here. =head2 64-bit Perl -If your AIX is installed with 64-bit support, you can expect 64bit +If your AIX is installed with 64-bit support, you can expect 64-bit configurations to work. In combination with threads some tests might still fail. diff --git a/gnu/usr.bin/perl/README.hpux b/gnu/usr.bin/perl/README.hpux index 113216d9629..29c2a98cb30 100644 --- a/gnu/usr.bin/perl/README.hpux +++ b/gnu/usr.bin/perl/README.hpux @@ -134,26 +134,53 @@ contain PA-RISC 2.0 chips: D280, D370, D380, D390, D650, J220, J2240, J280, J282, J400, J410, J5000, J5500XM, J5600, J7000, J7600, K250, K260, K260-EG, K270, K360, K370, K380, K450, K460, K460-EG, K460-XP, K470, K570, K580, L1000, - L2000, L3000, N4000, R380, R390, RP2400, RP2405, RP2430, RP2450, - RP2470, RP5400, RP5405, RP5430, RP5450, RP5470, RP7400, RP7405, - RP7410, RP8400, SD16000, SD32000, SD64000, T540, T600, V2000, V2200, - V2250, V2500, V2600 + L2000, L3000, N4000, R380, R390, SD16000, SD32000, SD64000, T540, + T600, V2000, V2200, V2250, V2500, V2600 -Just before HP took over Compaq, some systems were renamed. Visit -http://www.hp.com/products1/servers/server_names.html to see what -the changes are, or will be. +Just before HP took over Compaq, some systems were renamed. the link +that contained the explanation is dead, so here's a short summary: HP 9000 A-Class servers, now renamed HP Server rp2400 series. HP 9000 L-Class servers, now renamed HP Server rp5400 series. HP 9000 N-Class servers, now renamed HP Server rp7400. -=head2 Itanium + rp2400, rp2405, rp2430, rp2450, rp2470, rp3410, rp3440, rp5400, + rp5405, rp5430, rp5450, rp5470, rp7400, rp7405, rp7410, rp7420, + rp8400, rp8420, Superdome + +The current naming convention is: + + aadddd + ||||`+- 00 - 99 relative capacity & newness (upgrades, etc.) + |||`--- unique number for each architecture to ensure different + ||| systems do not have the same numbering across + ||| architectures + ||`---- 1 - 9 identifies family and/or relative positioning + || + |`----- c = ia32 (cisc) + | p = pa-risc + | x = ia-64 (Itanium & Itanium 2) + | h = housing + `------ t = tower + r = rack optimized + s = super scalable + b = blade + sa = appliance + +=head2 Itanium & Itanium 2 HP also ships servers with the 128-bit Itanium processor(s). As of the date of this document's last update, the following systems contain -Itanium chips (this is very likely to be out of date): +Itanium or Itanium 2 chips (this is very likely to be out of date): - RX2600, RX4610, RX5670, RX9610 + rx1600, rx2600, rx2600hptc, rx4610, rx4640, rx5670, rx7620, rx8620, + rx9610 + +To see all about your machine, type + + # model + ia64 hp server rx2600 + # /usr/contrib/bin/machinfo =head2 Portability Between PA-RISC Versions @@ -171,9 +198,9 @@ but the resulting executable will not run when transferred to a PA-RISC =head2 Itanium Processor Family and HP-UX HP-UX also runs on the new Itanium processor. This requires the use -of a different version of HP-UX (currently 11.20), and with the exception -of a few differences detailed below and in later sections, Perl should -compile with no problems. +of a different version of HP-UX (currently 11.23 or 11i v1.6), and with +the exception of a few differences detailed below and in later sections, +Perl should compile with no problems. Although PA-RISC binaries can run on Itanium systems, you should not attempt to use a PA-RISC version of Perl on an Itanium system. This is @@ -301,15 +328,22 @@ find the GNU binutils package. (Browse through the list, because there are often multiple versions of the same package available). Above mentioned distributions are depots. H.Merijn Brand has made prebuilt -gcc binaries available on https://www.beepz.com/personal/merijn/ and/or -http://www.cmve.net/~merijn/ for HP-UX 10.20 and HP-UX 11.00 in both 32- -and 64-bit versions. Most likely 11i will be available soon. These are -bzipped tar archives that also include recent GNU binutils and GNU gdb. -Read the instructions on that page to rebuild gcc using itself. - -Building a 64bit capable gcc from source is possible only when you have -the HP C-ANSI C compiler available, which you should use anyway when -building perl. +gcc binaries available on http://mirrors.develooper.com/hpux/ and/or +http://www.cmve.net/~merijn/ for HP-UX 10.20, HP-UX 11.00, and HP-UX 11.11 +(HP-UX 11i) in both 32- and 64-bit versions. These are bzipped tar archives +that also include recent GNU binutils and GNU gdb. Read the instructions +on that page to rebuild gcc using itself. + +On PA-RISC you need a different compiler for 32-bit applications and for +64-bit applications. On PA-RISC, 32-bit objects and 64-bit objects do +not mix. period. There is no different behaviour for HP C-ANSI-C or GNU +gcc. So if you require your perl binary to use 64-bit libraries, like +Oracle-64bit, you MUST build a 64-bit perl. + +Building a 64-bit capable gcc on PA-RISC from source is possible only when +you have the HP C-ANSI C compiler or an already working 64-bit binary of +gcc available. Best performance for perl is achieved with HP's native +compiler. =head2 Using Large Files with Perl on HP-UX @@ -403,13 +437,15 @@ versions of Unix. Once this is complete, scalar variables will be able to hold numbers larger than 2^32 with complete precision. As of the date of this document, Perl is fully 64-bit compliant on -HP-UX 11.00 and up for both ccc- and gcc builds. +HP-UX 11.00 and up for both cc- and gcc builds. If you are about to +build a 64-bit perl with GNU gcc, please read the gcc section carefully. Should a user wish to experiment with compiling Perl in the LP64 environment, use the -Duse64bitall flag to Configure. This will force -Perl to be compiled in a pure LP64 environment (via the +DD64 flag). -(Note that these flags will only work with HP's ANSI C compiler. If -you want to compile Perl using gcc, you will have to get a version of +Perl to be compiled in a pure LP64 environment (with the +DD64 flag for +HP C-ANSI-C, with no additional options for GNU gcc 64-bit on PA-RISC, +and with -mlp64 for GNU gcc on Itanium). +If you want to compile Perl using gcc, you will have to get a version of the compiler that supports 64-bit operations.) You can also use the -Duse64bitint flag to Configure. Although there @@ -438,7 +474,7 @@ achieved using Do not forget the space before the trailing quote. Also note that this does not (yet) work with all configurations, -it is known to fail with 64bit versions of GCC. +it is known to fail with 64-bit versions of GCC. =head2 GDBM and Threads on HP-UX @@ -455,7 +491,7 @@ fix is currently available. =head2 perl -P and // and HP-UX -In HP-UX Perl is compiled with flags that will cause problems if the +If HP-UX Perl is compiled with flags that will cause problems if the -P flag of Perl (preprocess Perl code with the C preprocessor before perl sees it) is used. The problem is that C, being a C++-style until-end-of-line comment, will disappear along with the remainder @@ -525,6 +561,6 @@ With much assistance regarding shared libraries from Marc Sabatella. =head1 DATE -Version 0.6.7: 2002-09-05 +Version 0.7.0: 2004-06-09 =cut diff --git a/gnu/usr.bin/perl/README.micro b/gnu/usr.bin/perl/README.micro index 7f12c70a17c..d4b26289623 100644 --- a/gnu/usr.bin/perl/README.micro +++ b/gnu/usr.bin/perl/README.micro @@ -1,4 +1,4 @@ -microperl is supposed to be able a really minimal perl, even more +microperl is supposed to be a really minimal perl, even more minimal than miniperl. No Configure is needed to build microperl, on the other hand this means that interfaces between Perl and your operating system are left very -- minimal. @@ -20,6 +20,8 @@ If you are still reading this and you are itching to try out microperl: make -f Makefile.micro +If you make changes to uconfig.sh, run + make -f Makefile.micro regen_uconfig - +to regenerate uconfig.h. diff --git a/gnu/usr.bin/perl/README.vos b/gnu/usr.bin/perl/README.vos index 403efd4ef3c..0ad9d069988 100644 --- a/gnu/usr.bin/perl/README.vos +++ b/gnu/usr.bin/perl/README.vos @@ -24,7 +24,7 @@ ftp://ftp.stratus.com/pub/vos/utility/utility.html If you are running VOS Release 14.4.1 or later, you can obtain a pre-compiled, supported copy of perl by purchasing Release 2.0.1 -of the VOS GNU C++ and GNU Tools product from Stratus +(or later) of the VOS GNU C++ and GNU Tools product from Stratus Technologies. =head2 Multiple methods to build perl for VOS @@ -32,7 +32,7 @@ Technologies. If you elect to build perl from its source code, you have several different ways that you can build perl. The method that you use depends on the version of VOS that you are using and on the -architecture of you Stratus hardware platform. +architecture of your Stratus hardware platform. =over 5 @@ -65,7 +65,7 @@ in the vos subdirectory. =item 3 -If you have a Stratus Continuum (PARISC-based) platform that is +If you have a Stratus Continuum (PA-RISC-based) platform that is running a version of VOS earlier than VOS 14.3.0, you must build perl using the alpha version of VOS POSIX support and using the VOS Standard C compiler or cross-compiler. You must build perl @@ -80,7 +80,7 @@ in the vos subdirectory. =item 4 -If you have a Stratus Continuum (PARISC-based) platform that is +If you have a Stratus Continuum (PA-RISC-based) platform that is running VOS Release 14.3.0 through VOS Release 14.4.1, you must build perl using the generally-available version of VOS POSIX support, and using either the VOS Standard C compiler or the VOS @@ -102,8 +102,9 @@ perl", which contains the complete functionality of perl. I strongly recommend that you build full perl. To build full perl, you must use the generally-available version of VOS POSIX support. You must use the VOS GNU C compiler and the VOS GNU -C/C++ and GNU Tools Release 2.0.1 product. You must build full -perl on VOS Release 14.5.0 (or later) on a Continuum platform. +C/C++ and GNU Tools Release 2.0.1 (or later) product. You must +build full perl on VOS Release 14.5.0 (or later) on a Continuum +platform. You must build full perl with the compile_full_perl.cm command macro found in the vos subdirectory. @@ -170,7 +171,7 @@ Locator (URL) ftp://ftp.stratus.com/pub/vos/posix/alpha/posix.save.evf.gz from your web browser. Instructions for unbundling this file are at ftp://ftp.stratus.com/pub/vos/utility/utility.html -This is not a standard Stratus product. +This is NOT a standard Stratus product. In VOS Release 14.3.0, the generally-available version of POSIX.1 support is bundled with the VOS Standard C compiler @@ -226,8 +227,7 @@ the PA8000, PA8500 and PA8600 processors. To build full perl using the supplied Configure script and makefiles, change to the "vos" subdirectory and type the command "compile_full_perl" or "start_process compile_full_perl". This -will configure, build, and test perl. All of the test cases -that are executed should pass. +will configure, build, and test perl. =head2 Installing Perl 5 on VOS @@ -337,13 +337,14 @@ yet fixed. =head1 TEST STATUS -When Perl 5.8.1 is built using the native build process on VOS -Release 14.5.0 and GNU C++/GNU Tools 2.0.1, all but five +When Perl 5.8.3 is built using the native build process on VOS +Release 14.7.0 and GNU C++/GNU Tools 2.0.2a, all but three attempted tests either pass or result in TODO (ignored) failures. The tests that fail are: -ext/Time/HiRes/HiRes, tests 8, 11, 20, and 21. -lib/Net/Ping/t/450_service, test 8. +t/io/tell.t, test 28 +t/op/pack.t, test 39 +lib/Net/ing/t/450_service.t, test 8 =head1 SUPPORT STATUS @@ -352,10 +353,10 @@ can't guarantee I'll be able to answer them. There are some excellent books available on the Perl language; consult a book seller. -If you want a supported version of perl for VOS, purchase the VOS -GNU C++ and GNU Tools Release 2.0.1 product from Stratus -Technologies, along with a support contract (or from anyone else -who will sell you support). +If you want a supported version of perl for VOS, purchase the +VOS GNU C++ and GNU Tools Release 2.0.1 (or later) product from +Stratus Technologies, along with a support contract (or from +anyone else who will sell you support). =head1 AUTHOR @@ -363,6 +364,6 @@ Paul Green (Paul.Green@stratus.com) =head1 LAST UPDATE -March 26, 2003 +January 15, 2004 =cut diff --git a/gnu/usr.bin/perl/autodoc.pl b/gnu/usr.bin/perl/autodoc.pl index f0b9919883b..c87f114fc84 100644 --- a/gnu/usr.bin/perl/autodoc.pl +++ b/gnu/usr.bin/perl/autodoc.pl @@ -6,7 +6,7 @@ require 5.003; # keep this compatible, an old perl is all we may have before BEGIN { push @INC, 'lib'; require 'regen_lib.pl'; -} # glob() below requires File::Glob +} # @@ -82,10 +82,6 @@ FUNC: my $docs = ""; DOC: while (defined($doc = <$fh>)) { - if ($doc =~ /^=head1 (.*)/) { - $curheader = $1; - next DOC; - } $line++; last DOC if $doc =~ /^=\w+/; if ($doc =~ m:^\*/$:) { @@ -107,7 +103,7 @@ DOC: $docfuncs{$name} = [$flags, $docs, $ret, $file, $curheader, @args]; } if (defined $doc) { - if ($doc =~ /^=for/) { + if ($doc =~ /^=(?:for|head)/) { $in = $doc; redo FUNC; } @@ -144,7 +140,15 @@ removed without notice.\n\n" if $flags =~ /x/; } my $file; -for $file (glob('*.c'), glob('*.h')) { +# glob() picks up docs from extra .c or .h files that may be in unclean +# development trees. +my $MANIFEST = do { + local ($/, *FH); + open FH, "MANIFEST" or die "Can't open MANIFEST: $!"; + ; +}; + +for $file (($MANIFEST =~ /^(\S+\.c)\t/gm), ($MANIFEST =~ /^(\S+\.h)\t/gm)) { open F, "< $file" or die "Cannot open $file for docs: $!\n"; $curheader = "Functions in file $file\n"; autodoc(\*F,$file); diff --git a/gnu/usr.bin/perl/configure.com b/gnu/usr.bin/perl/configure.com index f87452c2104..24d3344589e 100644 --- a/gnu/usr.bin/perl/configure.com +++ b/gnu/usr.bin/perl/configure.com @@ -880,7 +880,7 @@ $ config_symbols0 ="|archlib|archlibexp|bin|binexp|builddir|cf_email|config_sh $ config_symbols1 ="|installprivlib|installscript|installsitearch|installsitelib|most|oldarchlib|oldarchlibexp|osname|pager|perl_symbol|perl_verb|" $ config_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|" $ config_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|usemultiplicity|usemymalloc|usedebugging_perl|useperlio|usesecurelog|" -$ config_symbols4 ="|usethreads|usevmsdebug|usefaststdio|" +$ config_symbols4 ="|usethreads|usevmsdebug|usefaststdio|usemallocwrap|" $! $ open/read CONFIG 'config_sh' $ rd_conf_loop: @@ -2507,6 +2507,20 @@ $ d_alwdeftype = ans $ usedefaulttypes = "undef" $ if (d_alwdeftype) then usedefaulttypes = "define" $! +$! determine whether to use malloc wrapping +$ echo "" +$ bool_dflt = "y" +$ IF F$TYPE(usemallocwrap) .nes. "" +$ then +$ if .NOT. usemallocwrap .or. usemallocwrap .eqs. "undef" then bool_dflt = "n" +$ endif +$ rp = "Do you wish to wrap malloc calls to protect against potential overflows? [''bool_dflt'] " +$ GOSUB myread +$ IF ans +$ THEN usemallocwrap = "define" +$ ELSE usemallocwrap = "undef" +$ ENDIF +$! $! Ask if they want to use perl's memory allocator $ echo "" $ echo "Perl has a built-in memory allocator that is tuned for normal" @@ -4533,6 +4547,23 @@ $ ELSE $ d_getsent="undef" $ ENDIF $! +$! Check for nanosleep +$! +$ OS +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "int main()" +$ WS "{" +$ WS "int asleep = nanosleep(NULL,NULL);" +$ WS "exit(0);" +$ WS "}" +$ CS +$ tmp = "nanosleep" +$ GOSUB inlibc +$ d_nanosleep = tmp +$! $! Check for socklen_t $! $ IF Has_Dec_C_Sockets .OR. Has_Socketshr @@ -5109,13 +5140,8 @@ $ WS " iss = ((iss&1)==1 && code == 0x1234);" $ WS " printf(""%d\n"",iss);" $ WS "}" $ CS -$ IF (F$EXTRACT(0,7,archname) .EQS. "VMS_AXP") -$ THEN -$ GOSUB compile -$ ELSE -$ ! Causes SS$_BADSTACK on OpenVMS I64 v8.1 (but hey, it was undocumented) -$ tmp = "0" -$ ENDIF +$ ON ERROR THEN CONTINUE +$ GOSUB compile $ IF tmp .EQS. "1" $ THEN $ echo4 "Yep, we can." @@ -5199,6 +5225,7 @@ $ WC "Mcc='" + Mcc + "'" $ WC "PERL_REVISION='" + revision + "'" $ WC "PERL_VERSION='" + patchlevel + "'" $ WC "PERL_SUBVERSION='" + subversion + "'" +$ WC "PERL_API_REVISION='" + api_revision + "'" $ WC "PERL_API_VERSION='" + api_version + "'" $ WC "PERL_API_SUBVERSION='" + api_subversion + "'" $ WC "_a='" + lib_ext + "'" @@ -5417,7 +5444,7 @@ $ WC "d_msghdr_s='undef'" $ WC "d_msync='" + d_msync + "'" $ WC "d_munmap='" + d_munmap + "'" $ WC "d_mymalloc='" + d_mymalloc + "'" -$ WC "d_nanosleep='undef'" +$ WC "d_nanosleep='" + d_nanosleep + "'" $ WC "d_nice='define'" $ WC "d_nl_langinfo='" + d_nl_langinfo + "'" $ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'" @@ -5754,6 +5781,7 @@ $ WC "lseektype='int'" $ WC "mab='" + "'" $ WC "make='" + make + "'" $ WC "malloctype='void *'" +$ WC "usemallocwrap='" + usemallocwrap + "'" $ WC "man1ext='rno'" $ WC "man3ext='rno'" $ WC "mmaptype='void *'" @@ -5793,7 +5821,6 @@ $ WC "perl_symbol='" + perl_symbol + "'" ! VMS specific $ WC "perl_verb='" + perl_verb + "'" ! VMS specific $ WC "pgflquota='" + pgflquota + "'" $ WC "pidtype='" + pidtype + "'" -$ WC "pm_apiversion='" + version + "'" $ WC "prefix='" + vms_prefix + "'" $ WC "prefixexp='" + vms_prefix + ":'" $ WC "privlib='" + privlib + "'" @@ -5924,7 +5951,6 @@ $ WC "vms_cc_type='" + vms_cc_type + "'" ! VMS specific $ WC "vms_prefix='" + vms_prefix + "'" ! VMS specific $ WC "vms_ver='" + vms_ver + "'" ! VMS specific $ WC "voidflags='15'" -$ WC "xs_apiversion='" + version + "'" $ WC "PERL_CONFIG_SH='true'" $! $! ## The UNIXy POSIXy reentrantey thingys ## @@ -6448,7 +6474,8 @@ $ WRITE CONFIG "$ define/translation=concealed ''vms_prefix' ''prefix'" $ WRITE CONFIG "$ ext = "".exe""" $ IF sharedperl $ THEN -$ WRITE CONFIG "$ if f$getsyi(""HW_MODEL"") .ge. 1024 then ext = "".AXE""" +$ WRITE CONFIG "$ if f$getsyi(""ARCH_TYPE"") .eq. 2 then ext = "".AXE""" +$ WRITE CONFIG "$ if f$getsyi(""ARCH_TYPE"") .eq. 3 then ext = "".IXE""" $ ENDIF $ IF (perl_symbol) $ THEN @@ -6495,20 +6522,21 @@ $ THEN $ WRITE CONFIG "$ dprofpp == """ + perl_setup_perl + " ''vms_prefix':[utils]dprofpp.com""" $ ENDIF $ WRITE CONFIG "$ enc2xs == """ + perl_setup_perl + " ''vms_prefix':[utils]enc2xs.com""" -$ WRITE CONFIG "$!find2perl == """ + perl_setup_perl + " ''vms_prefix':[utils]find2perl.com""" +$ WRITE CONFIG "$ find2perl == """ + perl_setup_perl + " ''vms_prefix':[utils]find2perl.com""" $ WRITE CONFIG "$ h2ph == """ + perl_setup_perl + " ''vms_prefix':[utils]h2ph.com""" $ WRITE CONFIG "$ h2xs == """ + perl_setup_perl + " ''vms_prefix':[utils]h2xs.com""" +$ WRITE CONFIG "$ instmodsh == """ + perl_setup_perl + " ''vms_prefix':[utils]instmodsh.com""" $ WRITE CONFIG "$ libnetcfg == """ + perl_setup_perl + " ''vms_prefix':[utils]libnetcfg.com""" -$ WRITE CONFIG "$!perlbug == """ + perl_setup_perl + " ''vms_prefix':[lib]perlbug.com""" +$ WRITE CONFIG "$ perlbug == """ + perl_setup_perl + " ''vms_prefix':[lib]perlbug.com""" $ WRITE CONFIG "$!perlcc == """ + perl_setup_perl + " ''vms_prefix':[utils]perlcc.com""" $ WRITE CONFIG "$ perldoc == """ + perl_setup_perl + " ''vms_prefix':[lib.pod]perldoc.com -t""" $ WRITE CONFIG "$ perlivp == """ + perl_setup_perl + " ''vms_prefix':[utils]perlivp.com""" $ WRITE CONFIG "$ piconv == """ + perl_setup_perl + " ''vms_prefix':[utils]piconv.com""" $ WRITE CONFIG "$ pl2pm == """ + perl_setup_perl + " ''vms_prefix':[utils]pl2pm.com""" -$ WRITE CONFIG "$ pod2html == """ + perl_setup_perl + " pod2html""" +$ WRITE CONFIG "$ pod2html == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2html""" $ WRITE CONFIG "$ pod2latex == """ + perl_setup_perl + " ''vms_prefix':[lib.pod]pod2latex.com""" -$ WRITE CONFIG "$ pod2text == """ + perl_setup_perl + " pod2text""" -$ WRITE CONFIG "$!pod2man == """ + perl_setup_perl + " pod2man""" +$ WRITE CONFIG "$ pod2text == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2text""" +$ WRITE CONFIG "$!pod2man == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2man""" $ WRITE CONFIG "$ pod2usage == """ + perl_setup_perl + " ''vms_prefix':[utils]pod2usage.com""" $ WRITE CONFIG "$ podchecker == """ + perl_setup_perl + " ''vms_prefix':[utils]podchecker.com""" $ WRITE CONFIG "$ podselect == """ + perl_setup_perl + " ''vms_prefix':[utils]podselect.com""" diff --git a/gnu/usr.bin/perl/embed.fnc b/gnu/usr.bin/perl/embed.fnc index 6801cbc0efc..0e60a2928e7 100644 --- a/gnu/usr.bin/perl/embed.fnc +++ b/gnu/usr.bin/perl/embed.fnc @@ -10,7 +10,8 @@ : proto, no #define : d function has documentation with its source : s static function, should have an S_ prefix in -: source file +: source file; for macros (m), suffix the usage +: example with a semicolon : n has no implicit interpreter/thread context argument : p function has a Perl_ prefix : f function takes printf style format string, varargs @@ -22,6 +23,7 @@ : E visible to extensions included in the Perl core : b binary backward compatibility; function is a macro : but has also Perl_ implementation (which is exported) +: U suppress usage example in autogenerated documentation : : Individual flags may be separated by whitespace. : @@ -1062,9 +1064,9 @@ s |void |init_postdump_symbols|int|char **|char ** s |void |init_predump_symbols rs |void |my_exit_jump s |void |nuke_stacks -s |void |open_script |char *|bool|SV *|int *fd +s |void |open_script |char *|bool|SV * s |void |usage |char * -s |void |validate_suid |char *|char*|int +s |void |validate_suid |char *|char* # if defined(IAMSUID) s |int |fd_on_nosuid_fs|int fd # endif @@ -1107,7 +1109,8 @@ s |void* |docatch_body s |void* |vdocatch_body |va_list args #endif s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit -s |void |doparseform |SV *sv +s |OP* |doparseform |SV *sv +sn |bool |num_overflow |NV value|I32 fldsize|I32 frcsize s |I32 |dopoptoeval |I32 startingblock s |I32 |dopoptolabel |char *label s |I32 |dopoptoloop |I32 startingblock @@ -1243,7 +1246,7 @@ s |void |del_xpvbm |XPVBM* p s |void |del_xrv |XRV* p s |void |sv_unglob |SV* sv s |void |not_a_number |SV *sv -s |I32 |visit |SVFUNC_t f +s |I32 |visit |SVFUNC_t f|U32 flags|U32 mask s |void |sv_add_backref |SV *tsv|SV *sv s |void |sv_del_backref |SV *sv # ifdef DEBUGGING diff --git a/gnu/usr.bin/perl/embedvar.h b/gnu/usr.bin/perl/embedvar.h index c6f65653691..bf2f58acbe1 100644 --- a/gnu/usr.bin/perl/embedvar.h +++ b/gnu/usr.bin/perl/embedvar.h @@ -1,7 +1,7 @@ /* * embedvar.h * - * Copyright (C) 1999, 2000, 2001, 2002, 2003, by Larry Wall and others + * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -267,6 +267,7 @@ #define PL_expect (PERL_GET_INTERP->Iexpect) #define PL_fdpid (PERL_GET_INTERP->Ifdpid) #define PL_fdpid_mutex (PERL_GET_INTERP->Ifdpid_mutex) +#define PL_fdscript (PERL_GET_INTERP->Ifdscript) #define PL_filemode (PERL_GET_INTERP->Ifilemode) #define PL_forkprocess (PERL_GET_INTERP->Iforkprocess) #define PL_formfeed (PERL_GET_INTERP->Iformfeed) @@ -419,6 +420,7 @@ #define PL_sublex_info (PERL_GET_INTERP->Isublex_info) #define PL_subline (PERL_GET_INTERP->Isubline) #define PL_subname (PERL_GET_INTERP->Isubname) +#define PL_suidscript (PERL_GET_INTERP->Isuidscript) #define PL_sv_arenaroot (PERL_GET_INTERP->Isv_arenaroot) #define PL_sv_count (PERL_GET_INTERP->Isv_count) #define PL_sv_lock_mutex (PERL_GET_INTERP->Isv_lock_mutex) @@ -587,6 +589,7 @@ #define PL_expect (vTHX->Iexpect) #define PL_fdpid (vTHX->Ifdpid) #define PL_fdpid_mutex (vTHX->Ifdpid_mutex) +#define PL_fdscript (vTHX->Ifdscript) #define PL_filemode (vTHX->Ifilemode) #define PL_forkprocess (vTHX->Iforkprocess) #define PL_formfeed (vTHX->Iformfeed) @@ -739,6 +742,7 @@ #define PL_sublex_info (vTHX->Isublex_info) #define PL_subline (vTHX->Isubline) #define PL_subname (vTHX->Isubname) +#define PL_suidscript (vTHX->Isuidscript) #define PL_sv_arenaroot (vTHX->Isv_arenaroot) #define PL_sv_count (vTHX->Isv_count) #define PL_sv_lock_mutex (vTHX->Isv_lock_mutex) @@ -910,6 +914,7 @@ #define PL_Iexpect PL_expect #define PL_Ifdpid PL_fdpid #define PL_Ifdpid_mutex PL_fdpid_mutex +#define PL_Ifdscript PL_fdscript #define PL_Ifilemode PL_filemode #define PL_Iforkprocess PL_forkprocess #define PL_Iformfeed PL_formfeed @@ -1062,6 +1067,7 @@ #define PL_Isublex_info PL_sublex_info #define PL_Isubline PL_subline #define PL_Isubname PL_subname +#define PL_Isuidscript PL_suidscript #define PL_Isv_arenaroot PL_sv_arenaroot #define PL_Isv_count PL_sv_count #define PL_Isv_lock_mutex PL_sv_lock_mutex diff --git a/gnu/usr.bin/perl/epoc/config.sh b/gnu/usr.bin/perl/epoc/config.sh index 2edacb2bc52..4435a49f8d8 100644 --- a/gnu/usr.bin/perl/epoc/config.sh +++ b/gnu/usr.bin/perl/epoc/config.sh @@ -1095,7 +1095,6 @@ mmaptype='' revision='5' sizesize='4' socksizetype='int' -xs_apiversion='5.005' d_getcwd='define' i_sysmode='undef' d_vendorarch='undef' diff --git a/gnu/usr.bin/perl/epoc/createpkg.pl b/gnu/usr.bin/perl/epoc/createpkg.pl index 79dc3a53b84..ce96115af62 100644 --- a/gnu/usr.bin/perl/epoc/createpkg.pl +++ b/gnu/usr.bin/perl/epoc/createpkg.pl @@ -3,7 +3,7 @@ use File::Find; use Cwd; -$VERSION="5.8.3"; +$VERSION="5.8.5"; $EPOC_VERSION=1; diff --git a/gnu/usr.bin/perl/ext/B/t/b.t b/gnu/usr.bin/perl/ext/B/t/b.t index 45250e2fb25..5e7201e490c 100644 --- a/gnu/usr.bin/perl/ext/B/t/b.t +++ b/gnu/usr.bin/perl/ext/B/t/b.t @@ -8,6 +8,11 @@ BEGIN { @INC = '.'; push @INC, '../lib'; } + require Config; + if (($Config::Config{'extensions'} !~ /\bB\b/) ){ + print "1..0 # Skip -- Perl configured without B module\n"; + exit 0; + } } $| = 1; diff --git a/gnu/usr.bin/perl/ext/B/t/concise.t b/gnu/usr.bin/perl/ext/B/t/concise.t index 8a94628c21a..cb095a60523 100644 --- a/gnu/usr.bin/perl/ext/B/t/concise.t +++ b/gnu/usr.bin/perl/ext/B/t/concise.t @@ -3,6 +3,11 @@ BEGIN { chdir 't'; @INC = '../lib'; + require Config; + if (($Config::Config{'extensions'} !~ /\bB\b/) ){ + print "1..0 # Skip -- Perl configured without B module\n"; + exit 0; + } require './test.pl'; } diff --git a/gnu/usr.bin/perl/ext/B/t/o.t b/gnu/usr.bin/perl/ext/B/t/o.t index d9642286941..b8b4349bc24 100644 --- a/gnu/usr.bin/perl/ext/B/t/o.t +++ b/gnu/usr.bin/perl/ext/B/t/o.t @@ -3,6 +3,11 @@ BEGIN { chdir 't' if -d 't'; @INC = ('../lib', 'lib', '.'); + require Config; + if (($Config::Config{'extensions'} !~ /\bB\b/) ){ + print "1..0 # Skip -- Perl configured without B module\n"; + exit 0; + } require 'test.pl'; } diff --git a/gnu/usr.bin/perl/ext/B/t/showlex.t b/gnu/usr.bin/perl/ext/B/t/showlex.t index afff12eac7b..501a00bf257 100644 --- a/gnu/usr.bin/perl/ext/B/t/showlex.t +++ b/gnu/usr.bin/perl/ext/B/t/showlex.t @@ -7,6 +7,11 @@ BEGIN { } else { @INC = '../lib'; } + require Config; + if (($Config::Config{'extensions'} !~ /\bB\b/) ){ + print "1..0 # Skip -- Perl configured without B module\n"; + exit 0; + } } $| = 1; diff --git a/gnu/usr.bin/perl/ext/B/t/terse.t b/gnu/usr.bin/perl/ext/B/t/terse.t index b11c873176f..d8d052994dd 100644 --- a/gnu/usr.bin/perl/ext/B/t/terse.t +++ b/gnu/usr.bin/perl/ext/B/t/terse.t @@ -3,6 +3,11 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require Config; + if (($Config::Config{'extensions'} !~ /\bB\b/) ){ + print "1..0 # Skip -- Perl configured without B module\n"; + exit 0; + } } use Test::More tests => 16; diff --git a/gnu/usr.bin/perl/ext/B/t/xref.t b/gnu/usr.bin/perl/ext/B/t/xref.t index b1d0bc0406a..ade0154d59c 100644 --- a/gnu/usr.bin/perl/ext/B/t/xref.t +++ b/gnu/usr.bin/perl/ext/B/t/xref.t @@ -3,6 +3,11 @@ BEGIN { chdir 't' if -d 't'; @INC = qw(../lib); + require Config; + if (($Config::Config{'extensions'} !~ /\bB\b/) ){ + print "1..0 # Skip -- Perl configured without B module\n"; + exit 0; + } } use strict; diff --git a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL index 3fe9f881099..aff74a45cf9 100644 --- a/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL +++ b/gnu/usr.bin/perl/ext/DynaLoader/DynaLoader_pm.PL @@ -29,7 +29,7 @@ package DynaLoader; use vars qw($VERSION *AUTOLOAD); -$VERSION = '1.04'; # avoid typo warning +$VERSION = '1.05'; # avoid typo warning require AutoLoader; *AUTOLOAD = \&AutoLoader::AUTOLOAD; @@ -85,6 +85,7 @@ $Mac_FS = eval { require Mac::FileSpec::Unixish } if $Is_MacOS; @dl_library_path = (); # path to look for files #XSLoader.pm may have added elements before we were required +#@dl_shared_objects = (); # shared objects for symbols we have #@dl_librefs = (); # things we have loaded #@dl_modules = (); # Modules we have loaded @@ -339,6 +340,9 @@ print OUT <<'EOT'; my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); # See comment block above + + push(@dl_shared_objects, $file); # record files loaded + &$xs(@args); } @@ -555,6 +559,7 @@ DynaLoader Interface Summary $dl_debug @dl_librefs @dl_modules + @dl_shared_objects Implemented in: bootstrap($modulename) Perl @filepaths = dl_findfile(@names) Perl @@ -630,6 +635,10 @@ the loaded files. An array of module (package) names that have been bootstrap'ed. +=item @dl_shared_objects + +An array of file names for the shared objects that were loaded. + =item dl_error() Syntax: diff --git a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL index 22171fa36e4..fdab9eededb 100644 --- a/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL +++ b/gnu/usr.bin/perl/ext/Errno/Errno_pm.PL @@ -109,7 +109,9 @@ sub get_files { ) { # Some Linuxes have weird errno.hs which generate # no #file or #line directives - $file{'/usr/include/errno.h'} = 1; + my $linux_errno_h = -e '/usr/include/errno.h' ? + '/usr/include/errno.h' : '/usr/local/include/errno.h'; + $file{$linux_errno_h} = 1; } elsif ($^O eq 'MacOS') { # note that we are only getting the GUSI errno's here ... # we might miss out on compiler-specific ones diff --git a/gnu/usr.bin/perl/ext/List/Util/Changes b/gnu/usr.bin/perl/ext/List/Util/Changes new file mode 100644 index 00000000000..6d787c47177 --- /dev/null +++ b/gnu/usr.bin/perl/ext/List/Util/Changes @@ -0,0 +1,10 @@ +1.14 -- Sat May 22 08:01:19 BST 2004 + +Bug Fixes + * Fixed memory leak in reduce() + * Added tests to check passing a reference to a constant to weaken() in perl >= 5.008003 + * Fixed looks_like_number(undef) to return false for perl >= 5.009002 + * Fixed bug in refaddr() when passed a tied variable + +ChangeLogs for releases prior to 1.14 may be found at +http://svn.mutatus.co.uk/browse/Scalar-List-Utils/tags/Scalar-List-Utils-1.13/ChangeLog diff --git a/gnu/usr.bin/perl/ext/MIME/Base64/t/warn.t b/gnu/usr.bin/perl/ext/MIME/Base64/t/warn.t new file mode 100644 index 00000000000..3a1e651d822 --- /dev/null +++ b/gnu/usr.bin/perl/ext/MIME/Base64/t/warn.t @@ -0,0 +1,74 @@ +#!perl -w + +BEGIN { + if ($ENV{'PERL_CORE'}){ + chdir 't' if -d 't'; + @INC = '../lib'; + } +} + +BEGIN { + eval { + require warnings; + }; + if ($@) { + print "1..0\n"; + print $@; + exit; + } +} + +use strict; +use MIME::Base64 qw(decode_base64); + +print "1..1\n"; + +use warnings; + +my @warn; +$SIG{__WARN__} = sub { push(@warn, @_) }; + +warn; +my $a; +$a = decode_base64("aa"); +$a = decode_base64("a==="); +warn; +$a = do { + no warnings; + decode_base64("aa"); +}; +$a = do { + no warnings; + decode_base64("a==="); +}; +warn; +$a = do { + local $^W; + decode_base64("aa"); +}; +$a = do { + local $^W; + decode_base64("a==="); +}; +warn; + +if ($^O eq 'MSWin32') { + for (@warn) { + s|\\|/|g; + } +} + +for (@warn) { + print "# $_"; +} + +print "not " unless join("", @warn) eq <<"EOT"; print "ok 1\n"; +Warning: something's wrong at $0 line 31. +Premature end of base64 data at $0 line 33. +Premature padding of base64 data at $0 line 34. +Warning: something's wrong at $0 line 35. +Premature end of base64 data at $0 line 38. +Premature padding of base64 data at $0 line 42. +Warning: something's wrong at $0 line 44. +Warning: something's wrong at $0 line 53. +EOT diff --git a/gnu/usr.bin/perl/ext/NDBM_File/hints/linux.pl b/gnu/usr.bin/perl/ext/NDBM_File/hints/linux.pl index 405afa74644..174f913f125 100644 --- a/gnu/usr.bin/perl/ext/NDBM_File/hints/linux.pl +++ b/gnu/usr.bin/perl/ext/NDBM_File/hints/linux.pl @@ -3,4 +3,6 @@ # (no null key support) # Jonathan Stowe use Config; -$self->{LIBS} = ['-lgdbm'] if $Config{libs} =~ /(?:^|\s)-lgdbm(?:\s|$)/; +use ExtUtils::Liblist; +($self->{LIBS}) = ExtUtils::Liblist->ext('-lgdbm -lgdbm_compat') + if $Config{libs} =~ /(?:^|\s)-lgdbm(?:\s|$)/; diff --git a/gnu/usr.bin/perl/ext/Socket/t/Socket.t b/gnu/usr.bin/perl/ext/Socket/t/Socket.t index dba6cf3e16b..b8d6ab00d65 100644 --- a/gnu/usr.bin/perl/ext/Socket/t/Socket.t +++ b/gnu/usr.bin/perl/ext/Socket/t/Socket.t @@ -14,7 +14,7 @@ BEGIN { use Socket; -print "1..16\n"; +print "1..17\n"; $has_echo = $^O ne 'MSWin32'; $alarmed = 0; @@ -149,3 +149,21 @@ if (sockaddr_family(pack_sockaddr_in(100,inet_aton("10.250.230.10"))) == AF_INET eval { sockaddr_family("") }; print (($@ =~ /^Bad arg length for Socket::sockaddr_family, length is 0, should be at least \d+/) ? "ok 16\n" : "not ok 16\n"); + +if ($^O eq 'linux') { + # see if we can handle abstract sockets + my $test_abstract_socket = chr(0) . '/tmp/test-perl-socket'; + my $addr = sockaddr_un ($test_abstract_socket); + my ($path) = sockaddr_un ($addr); + if ($test_abstract_socket eq $path) { + print "ok 17\n"; + } + else { + $path =~ s/\0/\\0/g; + print "# got <$path>\n"; + print "not ok 17\n"; + } +} else { + # doesn't have abstract socket support + print "ok 17 - skipped on this platform\n"; +} diff --git a/gnu/usr.bin/perl/ext/Storable/t/HAS_HOOK.pm b/gnu/usr.bin/perl/ext/Storable/t/HAS_HOOK.pm new file mode 100644 index 00000000000..979a6a207d4 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Storable/t/HAS_HOOK.pm @@ -0,0 +1,9 @@ +package HAS_HOOK; + +sub STORABLE_thaw { + ++$thawed_count; +} + +++$loaded_count; + +1; diff --git a/gnu/usr.bin/perl/ext/Storable/t/HAS_OVERLOAD.pm b/gnu/usr.bin/perl/ext/Storable/t/HAS_OVERLOAD.pm new file mode 100644 index 00000000000..8a622a4bbe8 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Storable/t/HAS_OVERLOAD.pm @@ -0,0 +1,14 @@ +package HAS_OVERLOAD; + +use overload + '""' => sub { ${$_[0]} }, fallback => 1; + +sub make { + my $package = shift; + my $value = shift; + bless \$value, $package; +} + +++$loaded_count; + +1; diff --git a/gnu/usr.bin/perl/ext/Storable/t/just_plain_nasty.t b/gnu/usr.bin/perl/ext/Storable/t/just_plain_nasty.t new file mode 100644 index 00000000000..e80283970e6 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Storable/t/just_plain_nasty.t @@ -0,0 +1,152 @@ +#!/usr/bin/perl + +# This is a test suite to cover all the nasty and horrible data +# structures that cause bizarre corner cases. + +# Everyone's invited! :-D + +sub BEGIN { + if ($ENV{PERL_CORE}){ + chdir('t') if -d 't'; + @INC = ('.', '../lib'); + } else { + unshift @INC, 't'; + } + require Config; import Config; + if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) { + print "1..0 # Skip: Storable was not built\n"; + exit 0; + } +} + +use strict; +BEGIN { + if (!eval q{ + use Test; + use B::Deparse 0.61; + use 5.006; + 1; + }) { + print "1..0 # skip: tests only work with B::Deparse 0.61 and at least pe +rl 5.6.0\n"; + exit; + } + require File::Spec; + if ($File::Spec::VERSION < 0.8) { + print "1..0 # Skip: newer File::Spec needed\n"; + exit 0; + } +} + +use Storable qw(freeze thaw); + +#$Storable::DEBUGME = 1; +BEGIN { + plan tests => 34; +} + +{ + package Banana; + use overload + '<=>' => \&compare, + '==' => \&equal, + '""' => \&real, + fallback => 1; + sub compare { return int(rand(3))-1 }; + sub equal { return 1 if rand(1) > 0.5 } + sub real { return "keep it so" } +} + +my (@a); + +for my $dbun (1, 0) { # dbun - don't be utterly nasty - being utterly + # nasty means having a reference to the object + # directly within itself. otherwise it's in the + # second array. + my $nasty = [ + ($a[0] = bless [ ], "Banana"), + ($a[1] = [ ]), + ]; + + $a[$dbun]->[0] = $a[0]; + + ok(ref($nasty), "ARRAY", "Sanity found (now to play with it :->)"); + + $Storable::Deparse = $Storable::Deparse = 1; + $Storable::Eval = $Storable::Eval = 1; + + headit("circular overload 1 - freeze"); + my $icicle = freeze $nasty; + #print $icicle; # cat -ve recommended :) + headit("circular overload 1 - thaw"); + my $oh_dear = thaw $icicle; + ok(ref($oh_dear), "ARRAY", "dclone - circular overload"); + ok($oh_dear->[0], "keep it so", "amagic ok 1"); + ok($oh_dear->[$dbun]->[0], "keep it so", "amagic ok 2"); + + headit("closure dclone - freeze"); + $icicle = freeze sub { "two" }; + #print $icicle; + headit("closure dclone - thaw"); + my $sub2 = thaw $icicle; + ok($sub2->(), "two", "closures getting dcloned OK"); + + headit("circular overload, after closure - freeze"); + #use Data::Dumper; + #print Dumper $nasty; + $icicle = freeze $nasty; + #print $icicle; + headit("circular overload, after closure - thaw"); + $oh_dear = thaw $icicle; + ok(ref($oh_dear), "ARRAY", "dclone - after a closure dclone"); + ok($oh_dear->[0], "keep it so", "amagic ok 1"); + ok($oh_dear->[$dbun]->[0], "keep it so", "amagic ok 2"); + + push @{$nasty}, sub { print "Goodbye, cruel world.\n" }; + headit("closure freeze AFTER circular overload"); + #print Dumper $nasty; + $icicle = freeze $nasty; + #print $icicle; + headit("circular thaw AFTER circular overload"); + $oh_dear = thaw $icicle; + ok(ref($oh_dear), "ARRAY", "dclone - before a closure dclone"); + ok($oh_dear->[0], "keep it so", "amagic ok 1"); + ok($oh_dear->[$dbun]->[0], "keep it so", "amagic ok 2"); + + @{$nasty} = @{$nasty}[0, 2, 1]; + headit("closure freeze BETWEEN circular overload"); + #print Dumper $nasty; + $icicle = freeze $nasty; + #print $icicle; + headit("circular thaw BETWEEN circular overload"); + $oh_dear = thaw $icicle; + ok(ref($oh_dear), "ARRAY", "dclone - between a closure dclone"); + ok($oh_dear->[0], "keep it so", "amagic ok 1"); + ok($oh_dear->[$dbun?2:0]->[0], "keep it so", "amagic ok 2"); + + @{$nasty} = @{$nasty}[1, 0, 2]; + headit("closure freeze BEFORE circular overload"); + #print Dumper $nasty; + $icicle = freeze $nasty; + #print $icicle; + headit("circular thaw BEFORE circular overload"); + $oh_dear = thaw $icicle; + ok(ref($oh_dear), "ARRAY", "dclone - after a closure dclone"); + ok($oh_dear->[1], "keep it so", "amagic ok 1"); + ok($oh_dear->[$dbun+1]->[0], "keep it so", "amagic ok 2"); +} + +sub headit { + + return; # comment out to get headings - useful for scanning + # output with $Storable::DEBUGME = 1 + + my $title = shift; + + my $size_left = (66 - length($title)) >> 1; + my $size_right = (67 - length($title)) >> 1; + + print "# ".("-" x $size_left). " $title " + .("-" x $size_right)."\n"; +} + diff --git a/gnu/usr.bin/perl/ext/Storable/t/make_overload.pl b/gnu/usr.bin/perl/ext/Storable/t/make_overload.pl new file mode 100644 index 00000000000..bd224f5373c --- /dev/null +++ b/gnu/usr.bin/perl/ext/Storable/t/make_overload.pl @@ -0,0 +1,13 @@ +#!/usr/local/bin/perl -w +use strict; + +use Storable qw(nfreeze); +use HAS_OVERLOAD; + +my $o = HAS_OVERLOAD->make("snow"); +my $f = nfreeze \$o; + +my $uu = pack 'u', $f; + +print $uu; + diff --git a/gnu/usr.bin/perl/ext/Storable/t/threads.t b/gnu/usr.bin/perl/ext/Storable/t/threads.t new file mode 100644 index 00000000000..9c55b728b57 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Storable/t/threads.t @@ -0,0 +1,62 @@ + +# as of 2.09 on win32 Storable w/threads dies with "free to wrong +# pool" since it uses the same context for different threads. since +# win32 perl implementation allocates a different memory pool for each +# thread using the a memory pool from one thread to allocate memory +# for another thread makes win32 perl very unhappy +# +# but the problem exists everywhere, not only on win32 perl , it's +# just hard to catch it deterministically - since the same context is +# used if two or more threads happen to change the state of the +# context in the middle of the operation, and those operations aren't +# atomic per thread, bad things including data loss and corrupted data +# can happen. +# +# this has been solved in 2.10 by adding a Storable::CLONE which calls +# Storable::init_perinterp() to create a new context for each new +# thread when it starts + +sub BEGIN { + if ($ENV{PERL_CORE}){ + chdir('t') if -d 't'; + @INC = ('.', '../lib'); + } else { + unshift @INC, 't'; + } + require Config; import Config; + if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) { + print "1..0 # Skip: Storable was not built\n"; + exit 0; + } + unless ($Config{'useithreads'} and eval { require threads; 1 }) { + print "1..0 # Skip: no threads\n"; + exit 0; + } + # - is \W, so can't use \b at start. Negative look ahead and look behind + # works at start/end of string, or where preceded/followed by spaces + if ($] == 5.008002 and $Config{'ccflags'} =~ /(? 2; + +threads->new(\&sub1); + +$_->join() for threads->list(); + +ok 1; + +sub sub1 { + nfreeze {}; + ok 1; +} diff --git a/gnu/usr.bin/perl/ext/Time/HiRes/hints/solaris.pl b/gnu/usr.bin/perl/ext/Time/HiRes/hints/solaris.pl new file mode 100644 index 00000000000..b19d149e709 --- /dev/null +++ b/gnu/usr.bin/perl/ext/Time/HiRes/hints/solaris.pl @@ -0,0 +1,3 @@ +# needs to explicitly link against librt to pull in nanosleep +$self->{LIBS} = ['-lrt']; + diff --git a/gnu/usr.bin/perl/ext/XS/APItest/t/push.t b/gnu/usr.bin/perl/ext/XS/APItest/t/push.t new file mode 100644 index 00000000000..66d442e3856 --- /dev/null +++ b/gnu/usr.bin/perl/ext/XS/APItest/t/push.t @@ -0,0 +1,34 @@ +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + push @INC, "::lib:$MacPerl::Architecture:" if $^O eq 'MacOS'; + require Config; import Config; + if ($Config{'extensions'} !~ /\bXS\/APItest\b/) { + print "1..0 # Skip: XS::APItest was not built\n"; + exit 0; + } +} + +use Test::More tests => 9; + +BEGIN { use_ok('XS::APItest') }; + +######################### + +my @mpushp = mpushp(); +my @mpushn = mpushn(); +my @mpushi = mpushi(); +my @mpushu = mpushu(); +ok(eq_array(\@mpushp, [qw(one two three)]), 'mPUSHp()'); +ok(eq_array(\@mpushn, [0.5, -0.25, 0.125]), 'mPUSHn()'); +ok(eq_array(\@mpushi, [-1, 2, -3]), 'mPUSHi()'); +ok(eq_array(\@mpushu, [1, 2, 3]), 'mPUSHu()'); + +my @mxpushp = mxpushp(); +my @mxpushn = mxpushn(); +my @mxpushi = mxpushi(); +my @mxpushu = mxpushu(); +ok(eq_array(\@mxpushp, [qw(one two three)]), 'mXPUSHp()'); +ok(eq_array(\@mxpushn, [0.5, -0.25, 0.125]), 'mXPUSHn()'); +ok(eq_array(\@mxpushi, [-1, 2, -3]), 'mXPUSHi()'); +ok(eq_array(\@mxpushu, [1, 2, 3]), 'mXPUSHu()'); diff --git a/gnu/usr.bin/perl/ext/re/t/re.t b/gnu/usr.bin/perl/ext/re/t/re.t index 1a8f278566d..2a1923ea79a 100644 --- a/gnu/usr.bin/perl/ext/re/t/re.t +++ b/gnu/usr.bin/perl/ext/re/t/re.t @@ -3,6 +3,11 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require Config; + if (($Config::Config{'extensions'} !~ /\bre\b/) ){ + print "1..0 # Skip -- Perl configured without re module\n"; + exit 0; + } } use strict; diff --git a/gnu/usr.bin/perl/hints/aix_3.sh b/gnu/usr.bin/perl/hints/aix_3.sh new file mode 100644 index 00000000000..e24e1058fa5 --- /dev/null +++ b/gnu/usr.bin/perl/hints/aix_3.sh @@ -0,0 +1,353 @@ +# hints/aix_3.sh +# +# On Tue 03 Feb 2004 split off from aix.sh by H.Merijn Brand +# AIX 3.x.x hints thanks to Wayne Scott + +# Notes: +# +# - shared libperl support is tricky. if ever libperl.a ends up +# in /usr/local/lib/* it can override any subsequent builds of +# that same perl release. to make sure you know where the shared +# libperl.a is coming from do a 'dump -Hv perl' and check all the +# library search paths in the loader header. +# +# it would be nice to warn the user if a libperl.a exists that is +# going to override the current build, but that would be complex. +# +# better yet, a solid fix for this situation should be developed. + +alignbytes=8 + +case "$usemymalloc" in + '') usemymalloc='n' ;; + esac + +# Intuiting the existence of system calls under AIX is difficult, +# at best; the safest technique is to find them empirically. + +case "$usenm" in + '') usenm='undef' + esac + +so="a" +# AIX itself uses .o (libc.o) but we prefer compatibility +# with the rest of the world and with rest of the scripting +# languages (Tcl, Python) and related systems (SWIG). +# Stephanie Beals +dlext="so" + +# Take possible hint from the environment. If 32-bit is set in the +# environment, we can override it later. If set for 64, the +# 'sizeof' test sees a native 64-bit architecture and never looks back. +case "$use64bitint$use64bitall$usemorebits" in + *$define*) cat >&4 <&4 < +# +# Tell perl which symbols to export for dynamic linking. +cccdlflags='none' # All AIX code is position independent + cc_type=xlc # do not export to config.sh +case "$cc" in + *gcc*) + cc_type=gcc + ccdlflags='-Xlinker' + if [ "X$gccversion" = "X" ]; then + # Done too late in Configure if hinted + gccversion=`$cc --version | sed 's/.*(GCC) *//'` + fi + ;; + + *) ccversion=`lslpp -L | grep 'C for AIX Compiler$' | grep -v '\.msg\.[A-Za-z_]*\.' | head -1 | awk '{print $1,$2}'` + case "$ccversion" in + '') ccversion=`lslpp -L | grep 'IBM C and C++ Compilers LUM$'` + ;; + + *.*.*.*.*.*.*) # Ahhrgg, more than one C compiler installed + first_cc_path=`which ${cc:-cc}` + case "$first_cc_path" in + *vac*) + cc_type=vac + ;; + /usr/bin/cc) # Check the symlink + if [ -h $first_cc_path ]; then + ls -l $first_cc_path > reflect + if grep -i vac reflect >/dev/null 2>&1 ; then + cc_type=vac + fi + rm -f reflect + fi + ;; + esac + ccversion=`lslpp -L | grep 'C for AIX Compiler$' | grep -i $cc_type | head -1` + ;; + vac*.*.*.*) + cc_type=vac + ;; + esac + + ccversion=`echo "$ccversion" | awk '{print $2}'` + case "$ccversion" in + 3.6.6.0) + optimize='none' + ;; + 4.4.0.0|4.4.0.1|4.4.0.2) + cat >&4 <&4 <&4 <&4 < UU/usethreads.cbu <<'EOCBU' +case "$usethreads" in + $define|true|[yY]*) + d_drand48_r='undef' + d_endgrent_r='undef' + d_endpwent_r='undef' + d_getgrent_r='undef' + d_getpwent_r='undef' + d_random_r='undef' + d_setgrent_r='undef' + d_setpwent_r='undef' + d_srand48_r='undef' + d_strerror_r='undef' + ccflags="$ccflags -DNEED_PTHREAD_INIT" + case "$cc" in + *gcc*) + ccflags="-D_THREAD_SAFE $ccflags" + ;; + cc_r) ;; + cc|xl[cC]_r) + echo >&4 "Switching cc to cc_r because of POSIX threads." + # xlc_r has been known to produce buggy code in AIX 4.3.2. + # (e.g. pragma/overload core dumps) Let's suspect xlC_r, too. + # --jhi@iki.fi + cc=cc_r + ;; + '') + cc=cc_r + ;; + *) + cat >&4 < UU/uselargefiles.cbu <<'EOCBU' +case "$uselargefiles" in + ''|$define|true|[yY]*) + # Configure should take care of use64bitint and use64bitall being + # defined before uselargefiles.cbu is consulted. + if test X"$use64bitint:$quadtype" = X"$define:long" -o X"$use64bitall" = Xdefine; then +# Keep these at the left margin. +ccflags_uselargefiles="`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`" +ldflags_uselargefiles="`getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`" + else +# Keep these at the left margin. +ccflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_CFLAGS 2>/dev/null`" +ldflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`" + fi + if test X"$use64bitint:$quadtype" = X"$define:long" -o X"$use64bitall" = Xdefine; then +# Keep this at the left margin. +libswanted_uselargefiles="`getconf XBS5_LP64_OFF64_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + else +# Keep this at the left margin. +libswanted_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + fi + case "$ccflags_uselargefiles$ldflags_uselargefiles$libs_uselargefiles" in + '') ;; + *) ccflags="$ccflags $ccflags_uselargefiles" + ldflags="$ldflags $ldflags_uselargefiles" + libswanted="$libswanted $libswanted_uselargefiles" + ;; + esac + case "$gccversion" in + '') ;; + *) # Remove xlc-specific -qflags. + ccflags="`echo $ccflags | sed -e 's@ -q[^ ]*@ @g' -e 's@^-q[^ ]* @@g'`" + ldflags="`echo $ldflags | sed -e 's@ -q[^ ]*@ @g' -e 's@^-q[^ ]* @@g'`" + # Move xlc-specific -bflags. + ccflags="`echo $ccflags | sed -e 's@ -b@ -Wl,-b@g'`" + ldflags="`echo ' '$ldflags | sed -e 's@ -b@ -Wl,-b@g'`" + lddlflags="`echo ' '$lddlflags | sed -e 's@ -b@ -Wl,-b@g'`" + ld='gcc' + echo >&4 "(using ccflags $ccflags)" + echo >&4 "(using ldflags $ldflags)" + echo >&4 "(using lddlflags $lddlflags)" + ;; + esac + ;; + esac +EOCBU + +if test $usenativedlopen = 'true' ; then + ccflags="$ccflags -DUSE_NATIVE_DLOPEN" + case "$cc" in + *gcc*) ldflags="$ldflags -Wl,-brtl" ;; + *) ldflags="$ldflags -brtl" ;; + esac +else + # If the C++ libraries, libC and libC_r, are available we will + # prefer them over the vanilla libc, because the libC contain + # loadAndInit() and terminateAndUnload() which work correctly + # with C++ statics while libc load() and unload() do not. See + # ext/DynaLoader/dl_aix.xs. The C-to-C_r switch is done by + # usethreads.cbu, if needed. + if test -f /lib/libC.a -a X"`$cc -v 2>&1 | grep gcc`" = X; then + # Cify libswanted. + set `echo X "$libswanted "| sed -e 's/ c / C c /'` + shift + libswanted="$*" + # Cify lddlflags. + set `echo X "$lddlflags "| sed -e 's/ -lc / -lC -lc /'` + shift + lddlflags="$*" + fi + fi + +# EOF diff --git a/gnu/usr.bin/perl/hints/aix_4.sh b/gnu/usr.bin/perl/hints/aix_4.sh new file mode 100644 index 00000000000..35ae7818838 --- /dev/null +++ b/gnu/usr.bin/perl/hints/aix_4.sh @@ -0,0 +1,592 @@ +# hints/aix.sh +# +# Split off from aix.sh on 04 Feb 2004 by H.Merijn Brand +# +# AIX 4.1 hints thanks to Christopher Chan-Nui . +# AIX 4.1 pthreading by Christopher Chan-Nui and +# Jarkko Hietaniemi . +# AIX 4.3.x LP64 build by Steven Hirsch +# Merged on Mon Feb 6 10:22:35 EST 1995 by +# Andy Dougherty + +# Contact dfavor@corridor.com for any of the following: +# +# - AIX 43x and above support +# - gcc + threads support +# - socks support +# +# Apr 99 changes: +# +# - use nm in AIX 43x and above +# - gcc + threads now builds +# [(added support for socks) Jul 99 SOCKS support rewritten] +# +# Notes: +# +# - shared libperl support is tricky. if ever libperl.a ends up +# in /usr/local/lib/* it can override any subsequent builds of +# that same perl release. to make sure you know where the shared +# libperl.a is coming from do a 'dump -Hv perl' and check all the +# library search paths in the loader header. +# +# it would be nice to warn the user if a libperl.a exists that is +# going to override the current build, but that would be complex. +# +# better yet, a solid fix for this situation should be developed. +# + +# Configure finds setrgid and setruid, but they're useless. The man +# pages state: +# setrgid: The EPERM error code is always returned. +# setruid: The EPERM error code is always returned. Processes cannot +# reset only their real user IDs. +d_setrgid='undef' +d_setruid='undef' + +alignbytes=8 + +case "$usemymalloc" in + '') usemymalloc='n' ;; + esac + +# Intuiting the existence of system calls under AIX is difficult, +# at best; the safest technique is to find them empirically. + +# AIX 4.3.* and above default to letting Configure test if nm +# extraction will work. +case "$osvers" in + 4.1.*|4.2.*) + case "$usenm" in + '') usenm='undef' ;; + esac + case "$usenativedlopen" in + '') usenativedlopen='false' ;; + esac + ;; + *) + case "$usenativedlopen" in + '') usenativedlopen='true' ;; + esac + ;; + esac + +so="a" +# AIX itself uses .o (libc.o) but we prefer compatibility +# with the rest of the world and with rest of the scripting +# languages (Tcl, Python) and related systems (SWIG). +# Stephanie Beals +dlext="so" + +# Take possible hint from the environment. If 32-bit is set in the +# environment, we can override it later. If set for 64, the +# 'sizeof' test sees a native 64-bit architecture and never looks back. +case "$OBJECT_MODE" in + 32) + cat >&4 <&4 < +# +# Tell perl which symbols to export for dynamic linking. +cccdlflags='none' # All AIX code is position independent + cc_type=xlc # do not export to config.sh +case "$cc" in + *gcc*) + cc_type=gcc + ccdlflags='-Xlinker' + if [ "X$gccversion" = "X" ]; then + # Done too late in Configure if hinted + gccversion=`$cc --version | sed 's/.*(GCC) *//'` + fi + ;; + + *) ccversion=`lslpp -L | grep 'C for AIX Compiler$' | grep -v '\.msg\.[A-Za-z_]*\.' | head -1 | awk '{print $1,$2}'` + case "$ccversion" in + '') ccversion=`lslpp -L | grep 'IBM C and C++ Compilers LUM$'` + ;; + + *.*.*.*.*.*.*) # Ahhrgg, more than one C compiler installed + first_cc_path=`which ${cc:-cc}` + case "$first_cc_path" in + *vac*) + cc_type=vac ;; + /usr/bin/cc) # Check the symlink + if [ -h $first_cc_path ] ; then + ls -l $first_cc_path > reflect + if grep -i vac reflect >/dev/null 2>&1 ; then + cc_type=vac + fi + rm -f reflect + fi + ;; + esac + ccversion=`lslpp -L | grep 'C for AIX Compiler$' | grep -i $cc_type | head -1` + ;; + + vac*.*.*.*) + cc_type=vac + ;; + esac + ccversion=`echo "$ccversion" | awk '{print $2}'` + + case "$ccversion" in + 3.6.6.0) + optimize='none' + ;; + + 4.4.0.0|4.4.0.1|4.4.0.2) + cat >&4 <&4 <&4 <&4 < "... c bind ..." + set `echo X "$libswanted "| sed -e 's/ bind\( .*\) \([cC]\) / \1 \2 bind /'` + shift + libswanted="$*" + ;; + esac + ;; + esac + +# This script UU/usethreads.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOCBU' +case "$usethreads" in + $define|true|[yY]*) + d_drand48_r='undef' + d_endgrent_r='undef' + d_endpwent_r='undef' + d_getgrent_r='undef' + d_getpwent_r='undef' + d_random_r='undef' + d_setgrent_r='undef' + d_setpwent_r='undef' + d_srand48_r='undef' + d_strerror_r='undef' + + ccflags="$ccflags -DNEED_PTHREAD_INIT" + case "$cc" in + *gcc*) + ccflags="-D_THREAD_SAFE $ccflags" + ;; + cc_r) ;; + cc|xl[cC]|xl[cC]_r) + echo >&4 "Switching cc to cc_r because of POSIX threads." + # xlc_r has been known to produce buggy code in AIX 4.3.2. + # (e.g. pragma/overload core dumps) Let's suspect xlC_r, too. + # --jhi@iki.fi + cc=cc_r + + case "`oslevel`" in + 4.2.1.*) i_crypt='undef' ;; + esac + ;; + '') + cc=cc_r + ;; + *) + cat >&4 < UU/uselargefiles.cbu <<'EOCBU' +case "$uselargefiles" in + ''|$define|true|[yY]*) + # Configure should take care of use64bitint and use64bitall being + # defined before uselargefiles.cbu is consulted. + if test X"$use64bitint:$quadtype" = X"$define:long" -o X"$use64bitall" = Xdefine; then +# Keep these at the left margin. +ccflags_uselargefiles="`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`" +ldflags_uselargefiles="`getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`" + else +# Keep these at the left margin. +ccflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_CFLAGS 2>/dev/null`" +ldflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`" + fi + + # _Somehow_ in AIX 4.3.1.0 the above getconf call manages to + # insert(?) *something* to $ldflags so that later (in Configure) evaluating + # $ldflags causes a newline after the '-b64' (the result of the getconf). + # (nothing strange shows up in $ldflags even in hexdump; + # so it may be something (a bug) in the shell, instead?) + # Try it out: just uncomment the below line and rerun Configure: +# echo >&4 "AIX 4.3.1.0 $ldflags_uselargefiles mystery" ; exit 1 + # Just don't ask me how AIX does it, I spent hours wondering. + # Therefore the line re-evaluating ldflags_uselargefiles: it seems to fix + # the whatever it was that AIX managed to break. --jhi + ldflags_uselargefiles="`echo $ldflags_uselargefiles`" + if test X"$use64bitint:$quadtype" = X"$define:long" -o X"$use64bitall" = Xdefine; then +# Keep this at the left margin. +libswanted_uselargefiles="`getconf XBS5_LP64_OFF64_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + else +# Keep this at the left margin. +libswanted_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + fi + + case "$ccflags_uselargefiles$ldflags_uselargefiles$libs_uselargefiles" in + '') ;; + *) ccflags="$ccflags $ccflags_uselargefiles" + ldflags="$ldflags $ldflags_uselargefiles" + libswanted="$libswanted $libswanted_uselargefiles" + ;; + esac + + case "$gccversion" in + '') ;; + *) # Remove xlc-specific -qflags. + ccflags="`echo $ccflags | sed -e 's@ -q[^ ]*@ @g' -e 's@^-q[^ ]* @@g'`" + ldflags="`echo $ldflags | sed -e 's@ -q[^ ]*@ @g' -e 's@^-q[^ ]* @@g'`" + # Move xlc-specific -bflags. + ccflags="`echo $ccflags | sed -e 's@ -b@ -Wl,-b@g'`" + ldflags="`echo ' '$ldflags | sed -e 's@ -b@ -Wl,-b@g'`" + lddlflags="`echo ' '$lddlflags | sed -e 's@ -b@ -Wl,-b@g'`" + ld='gcc' + echo >&4 "(using ccflags $ccflags)" + echo >&4 "(using ldflags $ldflags)" + echo >&4 "(using lddlflags $lddlflags)" + ;; + esac + ;; + esac +EOCBU + +# This script UU/use64bitint.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use 64 bit integers. +cat > UU/use64bitint.cbu <<'EOCBU' +case "$use64bitint" in + $define|true|[yY]*) + case "`oslevel`" in + 4.[012].*) + cat >&4 < UU/use64bitall.cbu <<'EOCBU' +# This script UU/use64bitall.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to be maximally 64-bitty. +case "$use64bitall" in + $define|true|[yY]*) + case "`oslevel`" in + 4.[012].*) + cat >&4 <&4 + $cat >size.c < +#include +int main (void) +{ + printf ("%d\n", _system_configuration.width); + return (0); + } +EOCP + set size + if eval $compile_ok; then + qacpuwidth=`./size` + echo "You are running on $qacpuwidth bit hardware." + else + dflt="32" + echo " " + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the width of your CPU (in bits)?" + . ./myread + qacpuwidth="$ans" + fi + $rm -f size.c size + case "$qacpuwidth" in + 32*) + cat >&4 <&1 | grep gcc`" = X; then + # Cify libswanted. + set `echo X "$libswanted "| sed -e 's/ c / C c /'` + shift + libswanted="$*" + # Cify lddlflags. + set `echo X "$lddlflags "| sed -e 's/ -lc / -lC -lc /'` + shift + lddlflags="$*" + fi + esac + fi + +case "$PASE" in + define) + case "$prefix" in + '') prefix=/QOpenSys/perl ;; + esac + cat >&4 < 36; +plan tests => 47; use_ok('Config'); @@ -77,11 +77,42 @@ Config::config_vars('d_bork'); my $out2 = $$out; $out->clear; -untie *STDOUT; +Config::config_vars('PERL_API_.*'); +my $out3 = $$out; +$out->clear; + +Config::config_vars(':PERL_API_.*:'); +my $out4 = $$out; +$out->clear; + +Config::config_vars(':PERL_API_REVISION:'); +my $out5 = $$out; +$out->clear; + +Config::config_vars('?flags'); +my $out6 = $$out; +$out->clear; +untie *STDOUT; like($out1, qr/^cc='\Q$Config{cc}\E';/, "config_vars cc"); like($out2, qr/^d_bork='UNKNOWN';/, "config_vars d_bork is UNKNOWN"); +is(3, scalar split(/\n/, $out3), "3 PERL_API vars found"); +my @api = $out3 =~ /^PERL_API_(\w+)=(.*);/mg; +is("'5'", $api[1], "1st is 5"); +is("'8'", $api[5], "2nd is 9"); +is("'0'", $api[3], "3rd is 1"); +@api = split(/ /, $out4); +is(3, @api, "trailing colon puts 3 terms on same line"); +unlike($out4, qr/=/, "leading colon suppresses param names"); +is("'5'", $api[0], "revision is 5"); +is("'8'", $api[2], "version is 9"); +is("'0'", $api[1], "subversion is 1"); + +is("'5' ", $out5, "leading and trailing colons return just the value"); + +like($out6, qr/\bnot\s+found\b/, "config_vars with invalid regexp"); + # Read-only. undef $@; diff --git a/gnu/usr.bin/perl/lib/DB.t b/gnu/usr.bin/perl/lib/DB.t index e6fef9b887e..f665291fa2b 100644 --- a/gnu/usr.bin/perl/lib/DB.t +++ b/gnu/usr.bin/perl/lib/DB.t @@ -3,6 +3,11 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require Config; + if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){ + print "1..0 # Skip -- Perl configured without List::Util module\n"; + exit 0; + } } # symbolic references used later diff --git a/gnu/usr.bin/perl/lib/DBM_Filter.pm b/gnu/usr.bin/perl/lib/DBM_Filter.pm new file mode 100644 index 00000000000..7385ddd3a3a --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter.pm @@ -0,0 +1,605 @@ +package DBM_Filter ; + +use strict; +use warnings; +our $VERSION = '0.01'; + +package Tie::Hash ; + +use strict; +use warnings; + +use Carp; + + +our %LayerStack = (); +our %origDESTROY = (); + +our %Filters = map { $_, undef } qw( + Fetch_Key + Fetch_Value + Store_Key + Store_Value + ); + +our %Options = map { $_, 1 } qw( + fetch + store + ); + +#sub Filter_Enable +#{ +#} +# +#sub Filter_Disable +#{ +#} + +sub Filtered +{ + my $this = shift; + return defined $LayerStack{$this} ; +} + +sub Filter_Pop +{ + my $this = shift; + my $stack = $LayerStack{$this} || return undef ; + my $filter = pop @{ $stack }; + + # remove the filter hooks if this is the last filter to pop + if ( @{ $stack } == 0 ) { + $this->filter_store_key ( undef ); + $this->filter_store_value( undef ); + $this->filter_fetch_key ( undef ); + $this->filter_fetch_value( undef ); + delete $LayerStack{$this}; + } + + return $filter; +} + +sub Filter_Key_Push +{ + &_do_Filter_Push; +} + +sub Filter_Value_Push +{ + &_do_Filter_Push; +} + + +sub Filter_Push +{ + &_do_Filter_Push; +} + +sub _do_Filter_Push +{ + my $this = shift; + my %callbacks = (); + my $caller = (caller(1))[3]; + $caller =~ s/^.*:://; + + croak "$caller: no parameters present" unless @_ ; + + if ( ! $Options{lc $_[0]} ) { + my $class = shift; + my @params = @_; + + # if $class already contains "::", don't prefix "DBM_Filter::" + $class = "DBM_Filter::$class" unless $class =~ /::/; + + # does the "DBM_Filter::$class" exist? + if ( ! defined %{ "${class}::"} ) { + # Nope, so try to load it. + eval " require $class ; " ; + croak "$caller: Cannot Load DBM Filter '$class': $@" if $@; + } + + no strict 'refs'; + my $fetch = *{ "${class}::Fetch" }{CODE}; + my $store = *{ "${class}::Store" }{CODE}; + my $filter = *{ "${class}::Filter" }{CODE}; + use strict 'refs'; + + my $count = defined($filter) + defined($store) + defined($fetch) ; + + if ( $count == 0 ) + { croak "$caller: No methods (Filter, Fetch or Store) found in class '$class'" } + elsif ( $count == 1 && ! defined $filter) { + my $need = defined($fetch) ? 'Store' : 'Fetch'; + croak "$caller: Missing method '$need' in class '$class'" ; + } + elsif ( $count >= 2 && defined $filter) + { croak "$caller: Can't mix Filter with Store and Fetch in class '$class'" } + + if (defined $filter) { + my $callbacks = &{ $filter }(@params); + croak "$caller: '${class}::Filter' did not return a hash reference" + unless ref $callbacks && ref $callbacks eq 'HASH'; + %callbacks = %{ $callbacks } ; + } + else { + $callbacks{Fetch} = $fetch; + $callbacks{Store} = $store; + } + } + else { + croak "$caller: not even params" unless @_ % 2 == 0; + %callbacks = @_; + } + + my %filters = %Filters ; + my @got = (); + while (my ($k, $v) = each %callbacks ) + { + my $key = $k; + $k = lc $k; + if ($k eq 'fetch') { + push @got, 'Fetch'; + if ($caller eq 'Filter_Push') + { $filters{Fetch_Key} = $filters{Fetch_Value} = $v } + elsif ($caller eq 'Filter_Key_Push') + { $filters{Fetch_Key} = $v } + elsif ($caller eq 'Filter_Value_Push') + { $filters{Fetch_Value} = $v } + } + elsif ($k eq 'store') { + push @got, 'Store'; + if ($caller eq 'Filter_Push') + { $filters{Store_Key} = $filters{Store_Value} = $v } + elsif ($caller eq 'Filter_Key_Push') + { $filters{Store_Key} = $v } + elsif ($caller eq 'Filter_Value_Push') + { $filters{Store_Value} = $v } + } + else + { croak "$caller: Unknown key '$key'" } + + croak "$caller: value associated with key '$key' is not a code reference" + unless ref $v && ref $v eq 'CODE'; + } + + if ( @got != 2 ) { + push @got, 'neither' if @got == 0 ; + croak "$caller: expected both Store & Fetch - got @got"; + } + + # remember the class + push @{ $LayerStack{$this} }, \%filters ; + + my $str_this = "$this" ; # Avoid a closure with $this in the subs below + + $this->filter_store_key ( sub { store_hook($str_this, 'Store_Key') }); + $this->filter_store_value( sub { store_hook($str_this, 'Store_Value') }); + $this->filter_fetch_key ( sub { fetch_hook($str_this, 'Fetch_Key') }); + $this->filter_fetch_value( sub { fetch_hook($str_this, 'Fetch_Value') }); + + # Hijack the callers DESTROY method + $this =~ /^(.*)=/; + my $type = $1 ; + no strict 'refs'; + if ( *{ "${type}::DESTROY" }{CODE} ne \&MyDESTROY ) + { + $origDESTROY{$type} = *{ "${type}::DESTROY" }{CODE}; + no warnings 'redefine'; + *{ "${type}::DESTROY" } = \&MyDESTROY ; + } +} + +sub store_hook +{ + my $this = shift ; + my $type = shift ; + foreach my $layer (@{ $LayerStack{$this} }) + { + &{ $layer->{$type} }() if defined $layer->{$type} ; + } +} + +sub fetch_hook +{ + my $this = shift ; + my $type = shift ; + foreach my $layer (reverse @{ $LayerStack{$this} }) + { + &{ $layer->{$type} }() if defined $layer->{$type} ; + } +} + +sub MyDESTROY +{ + my $this = shift ; + delete $LayerStack{$this} ; + + # call real DESTROY + $this =~ /^(.*)=/; + &{ $origDESTROY{$1} }($this); +} + +1; + +__END__ + +=head1 NAME + +DBM_Filter -- Filter DBM keys/values + +=head1 SYNOPSIS + + use DBM_Filter ; + use SDBM_File; # or DB_File, or GDBM_File, or NDBM_File, or ODBM_File + + $db = tie %hash, ... + + $db->Filter_Push(Fetch => sub {...}, + Store => sub {...}); + + $db->Filter_Push('my_filter1'); + $db->Filter_Push('my_filter2', params...); + + $db->Filter_Key_Push(...) ; + $db->Filter_Value_Push(...) ; + + $db->Filter_Pop(); + $db->Filtered(); + + package DBM_Filter::my_filter1; + + sub Store { ... } + sub Fetch { ... } + + 1; + + package DBM_Filter::my_filter2; + + sub Filter + { + my @opts = @_; + ... + return ( + sub Store { ... }, + sub Fetch { ... } ); + } + + 1; + +=head1 DESCRIPTION + +This module provides an interface that allows filters to be applied +to tied Hashes associated with DBM files. It builds on the DBM Filter +hooks that are present in all the *DB*_File modules included with the +standard Perl source distribution from version 5.6.1 onwards. In addition +to the *DB*_File modules distributed with Perl, the BerkeleyDB module, +available on CPAN, supports the DBM Filter hooks. See L +for more details on the DBM Filter hooks. + +=head1 What is a DBM Filter? + +A DBM Filter allows the keys and/or values in a tied hash to be modified +by some user-defined code just before it is written to the DBM file and +just after it is read back from the DBM file. For example, this snippet +of code + + $some_hash{"abc"} = 42; + +could potentially trigger two filters, one for the writing of the key +"abc" and another for writing the value 42. Similarly, this snippet + + my ($key, $value) = each %some_hash + +will trigger two filters, one for the reading of the key and one for +the reading of the value. + +Like the existing DBM Filter functionality, this module arranges for the +C<$_> variable to be populated with the key or value that a filter will +check. This usually means that most DBM filters tend to be very short. + +=head2 So what's new? + +The main enhancements over the standard DBM Filter hooks are: + +=over 4 + +=item * + +A cleaner interface. + +=item * + +The ability to easily apply multiple filters to a single DBM file. + +=item * + +The ability to create "canned" filters. These allow commonly used filters +to be packaged into a stand-alone module. + +=back + +=head1 METHODS + +This module will arrange for the following methods to be available via +the object returned from the C call. + +=head2 $db->Filter_Push() + +=head2 $db->Filter_Key_Push() + +=head2 $db->Filter_Value_Push() + +Add a filter to filter stack for the database, C<$db>. The three formats +vary only in whether they apply to the DBM key, the DBM value or both. + +=over 5 + +=item Filter_Push + +The filter is applied to I keys and values. + +=item Filter_Key_Push + +The filter is applied to the key I. + +=item Filter_Value_Push + +The filter is applied to the value I. + +=back + + +=head2 $db->Filter_Pop() + +Removes the last filter that was applied to the DBM file associated with +C<$db>, if present. + +=head2 $db->Filtered() + +Returns TRUE if there are any filters applied to the DBM associated +with C<$db>. Otherwise returns FALSE. + + + +=head1 Writing a Filter + +Filters can be created in two main ways + +=head2 Immediate Filters + +An immediate filter allows you to specify the filter code to be used +at the point where the filter is applied to a dbm. In this mode the +Filter_*_Push methods expects to receive exactly two parameters. + + my $db = tie %hash, 'SDBM_File', ... + $db->Filter_Push( Store => sub { }, + Fetch => sub { }); + +The code reference associated with C will be called before any +key/value is written to the database and the code reference associated +with C will be called after any key/value is read from the +database. + +For example, here is a sample filter that adds a trailing NULL character +to all strings before they are written to the DBM file, and removes the +trailing NULL when they are read from the DBM file + + my $db = tie %hash, 'SDBM_File', ... + $db->Filter_Push( Store => sub { $_ .= "\x00" ; }, + Fetch => sub { s/\x00$// ; }); + + +Points to note: + +=over 5 + +=item 1. + +Both the Store and Fetch filters manipulate C<$_>. + +=back + +=head2 Canned Filters + +Immediate filters are useful for one-off situations. For more generic +problems it can be useful to package the filter up in its own module. + +The usage is for a canned filter is: + + $db->Filter_Push("name", params) + +where + +=over 5 + +=item "name" + +is the name of the module to load. If the string specified does not +contain the package separator characters "::", it is assumed to refer to +the full module name "DBM_Filter::name". This means that the full names +for canned filters, "null" and "utf8", included with this module are: + + DBM_Filter::null + DBM_Filter::utf8 + +=item params + +any optional parameters that need to be sent to the filter. See the +encode filter for an example of a module that uses parameters. + +=back + +The module that implements the canned filter can take one of two +forms. Here is a template for the first + + package DBM_Filter::null ; + + use strict; + use warnings; + + sub Store + { + # store code here + } + + sub Fetch + { + # fetch code here + } + + 1; + + +Notes: + +=over 5 + +=item 1. + +The package name uses the C prefix. + +=item 2. + +The module I have both a Store and a Fetch method. If only one is +present, or neither are present, a fatal error will be thrown. + +=back + +The second form allows the filter to hold state information using a +closure, thus: + + package DBM_Filter::encoding ; + + use strict; + use warnings; + + sub Filter + { + my @params = @_ ; + + ... + return { + Store => sub { $_ = $encoding->encode($_) }, + Fetch => sub { $_ = $encoding->decode($_) } + } ; + } + + 1; + + +In this instance the "Store" and "Fetch" methods are encapsulated inside a +"Filter" method. + + +=head1 Filters Included + +A number of canned filers are provided with this module. They cover a +number of the main areas that filters are needed when interfacing with +DBM files. They also act as templates for your own filters. + +The filter included are: + +=over 5 + +=item * utf8 + +This module will ensure that all data written to the DBM will be encoded +in UTF-8. + +This module needs the Encode module. + +=item * encode + +Allows you to choose the character encoding will be store in the DBM file. + +=item * compress + +This filter will compress all data before it is written to the database +and uncompressed it on reading. + +This module needs Compress::Zlib. + +=item * int32 + +This module is used when interoperating with a C/C++ application that +uses a C int as either the key and/or value in the DBM file. + +=item * null + +This module ensures that all data written to the DBM file is null +terminated. This is useful when you have a perl script that needs +to interoperate with a DBM file that a C program also uses. A fairly +common issue is for the C application to include the terminating null +in a string when it writes to the DBM file. This filter will ensure that +all data written to the DBM file can be read by the C application. + +=back + +=head1 NOTES + +=head2 Maintain Round Trip Integrity + +When writing a DBM filter it is I important to ensure that it is +possible to retrieve all data that you have written when the DBM filter +is in place. In practice, this means that whatever transformation is +applied to the data in the Store method, the I inverse operation +should be applied in the Fetch method. + +If you don't provide an exact inverse transformation, you will find that +code like this will not behave as you expect. + + while (my ($k, $v) = each %hash) + { + ... + } + +Depending on the transformation, you will find that one or more of the +following will happen + +=over 5 + +=item 1 + +The loop will never terminate. + +=item 2 + +Too few records will be retrieved. + +=item 3 + +Too many will be retrieved. + +=item 4 + +The loop will do the right thing for a while, but it will unexpectedly fail. + +=back + +=head2 Don't mix filtered & non-filtered data in the same database file. + +This is just a restatement of the previous section. Unless you are +completely certain you know what you are doing, avoid mixing filtered & +non-filtered data. + +=head1 EXAMPLE + +Say you need to interoperate with a legacy C application that stores +keys as C ints and the values and null terminated UTF-8 strings. Here +is how you would set that up + + my $db = tie %hash, 'SDBM_File', ... + + $db->Filter_Key_Push('int32') ; + + $db->Filter_Value_Push('utf8'); + $db->Filter_Value_Push('null'); + +=head1 SEE ALSO + +, L, L, L, L, L + +=head1 AUTHOR + +Paul Marquess + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/Changes b/gnu/usr.bin/perl/lib/DBM_Filter/Changes new file mode 100644 index 00000000000..3f0841f6643 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/Changes @@ -0,0 +1,5 @@ +Revision history for Perl extension DBM_Filter. + +0.01 Sat, 17 Jan 2004 + + * Original version created. diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/compress.pm b/gnu/usr.bin/perl/lib/DBM_Filter/compress.pm new file mode 100644 index 00000000000..6d16fa5fa22 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/compress.pm @@ -0,0 +1,53 @@ +package DBM_Filter::compress ; + +use strict; +use warnings; +use Carp; + +our $VERSION = '0.01'; + +BEGIN +{ + eval { require Compress::Zlib; Compress::Zlib->import() }; + + croak "Compress::Zlib module not found.\n" + if $@; +} + + + +sub Store { $_ = compress($_) } +sub Fetch { $_ = uncompress($_) } + +1; + +__END__ + +=head1 NAME + +DBM_Filter::compress -- compression DBM Filter + +=head1 SYNOPSIS + + use SDBM_File; # or DB_File, or GDBM_File, or NDBM_File, or ODBM_File + use DBM_Filter ; + + $db = tie %hash, ... + $db->Filter_Push('compress'); + +=head1 DESCRIPTION + +This DBM filter will compress all data before it is written to the database +and uncompressed it on reading. + +A fatal error will be thrown if the Compress::Zlib module is not +available. + +=head1 SEE ALSO + +L, L, L + +=head1 AUTHOR + +Paul Marquess pmqs@cpan.org + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/encode.pm b/gnu/usr.bin/perl/lib/DBM_Filter/encode.pm new file mode 100644 index 00000000000..a154f90205b --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/encode.pm @@ -0,0 +1,86 @@ +package DBM_Filter::encode ; + +use strict; +use warnings; +use Carp; + +our $VERSION = '0.01'; + +BEGIN +{ + eval { require Encode; }; + + croak "Encode module not found.\n" + if $@; +} + + +sub Filter +{ + my $encoding_name = shift || "utf8"; + + my $encoding = Encode::find_encoding($encoding_name) ; + + croak "Encoding '$encoding_name' is not available" + unless $encoding; + + return { + Store => sub { + $_ = $encoding->encode($_) + if defined $_ ; + }, + Fetch => sub { + $_ = $encoding->decode($_) + if defined $_ ; + } + } ; +} + +1; + +__END__ + +=head1 NAME + +DBM_Filter::encode -- character encoding DBM Filter + +=head1 SYNOPSIS + + use SDBM_File; # or DB_File, or GDBM_File, or NDBM_File, or ODBM_File + use DBM_Filter ; + + $db = tie %hash, ... + $db->Filter_Push('encode' => 'iso-8859-16'); + +=head1 DESCRIPTION + +This DBM filter allows you to choose the character encoding will be +store in the DBM file. The usage is + + $db->Filter_Push('encode' => ENCODING); + +where "ENCODING" must be a valid encoding name that the Encode module +recognises. + +A fatal error will be thrown if: + +=over 5 + +=item 1 + +The Encode module is not available. + +=item 2 + +The encoding requested is not supported by the Encode module. + +=back + +=head1 SEE ALSO + +L, L, L + +=head1 AUTHOR + +Paul Marquess pmqs@cpan.org + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/int32.pm b/gnu/usr.bin/perl/lib/DBM_Filter/int32.pm new file mode 100644 index 00000000000..f6297333e8f --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/int32.pm @@ -0,0 +1,50 @@ +package DBM_Filter::int32 ; + +use strict; +use warnings; + +our $VERSION = '0.01'; + +# todo get Filter to figure endian. + +sub Store +{ + $_ = 0 if ! defined $_ || $_ eq "" ; + $_ = pack("i", $_); +} + +sub Fetch +{ + no warnings 'uninitialized'; + $_ = unpack("i", $_); +} + +1; + +__END__ + +=head1 NAME + +DBM_Filter::int32 -- 32 bit integer DBM Filter + +=head1 SYNOPSIS + + use SDBM_File; # or DB_File, or GDBM_File, or NDBM_File, or ODBM_File + use DBM_Filter ; + + $db = tie %hash, ... + $db->Filter_Push('int32'); + +=head1 DESCRIPTION + +This DBM filter is used when interoperating with a C/C++ application +that uses a C int as either the key and/or value in the DBM file. + +=head1 SEE ALSO + +L, L + +=head1 AUTHOR + +Paul Marquess pmqs@cpan.org + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/null.pm b/gnu/usr.bin/perl/lib/DBM_Filter/null.pm new file mode 100644 index 00000000000..3c5d76b5181 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/null.pm @@ -0,0 +1,52 @@ +package DBM_Filter::null ; + +use strict; +use warnings; + +our $VERSION = '0.01'; + +sub Store +{ + no warnings 'uninitialized'; + $_ .= "\x00" ; +} + +sub Fetch +{ + no warnings 'uninitialized'; + s/\x00$// ; +} + +1; + +__END__ + +=head1 NAME + +DBM_Filter::null -- DBM Filter to force null termination + +=head1 SYNOPSIS + + use SDBM_File; # or DB_File, or GDBM_File, or NDBM_File, or ODBM_File + use DBM_Filter ; + + $db = tie %hash, ... + $db->Filter_Push('null'); + +=head1 DESCRIPTION + +This filter ensures that all data written to the DBM file is null +terminated. This is useful when you have a perl script that needs +to interoperate with a DBM file that a C program also uses. A fairly +common issue is for the C application to include the terminating null +in a string when it writes to the DBM file. This filter will ensure that +all data written to the DBM file can be read by the C application. + + +=head1 SEE ALSO + +L, L + +=head1 AUTHOR + +Paul Marquess pmqs@cpan.org diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/01error.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/01error.t new file mode 100644 index 00000000000..f66030aba9d --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/01error.t @@ -0,0 +1,238 @@ + +use strict; +use warnings; +use Carp; + +use lib '.'; +our $db ; + +{ + chdir 't' if -d 't'; + if ( ! -d 'DBM_Filter') + { + mkdir 'DBM_Filter', 0777 + or die "Cannot create directory 'DBM_Filter': $!\n" ; + } +} + +END { rmdir 'DBM_Filter' } + +sub writeFile +{ + my $filename = shift ; + my $content = shift; + open F, ">$filename" or croak "Cannot open $filename: $!" ; + print F $content ; + close F; +} + +sub runFilter +{ + my $name = shift ; + my $filter = shift ; + +print "# runFilter $name\n" ; + my $filename = "DBM_Filter/$name.pm"; + $filter = "package DBM_Filter::$name ;\n$filter" + unless $filter =~ /^\s*package/ ; + + writeFile($filename, $filter); + eval { $db->Filter_Push($name) }; + unlink $filename; + return $@; +} + +use Test::More tests => 21; + +BEGIN { use_ok('DBM_Filter') }; +BEGIN { use_ok('SDBM_File') }; +BEGIN { use_ok('Fcntl') }; + +unlink ; +END { unlink ; } + +my %h1 = () ; +my %h2 = () ; +$db = tie(%h1, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db, "tied to SDBM_File ok"; + + +# Error cases + +eval { $db->Filter_Push() ; }; +like $@, qr/^Filter_Push: no parameters present/, + "croak if not parameters passed to Filter_Push"; + +eval { $db->Filter_Push("unknown_class") ; }; +like $@, qr/^Filter_Push: Cannot Load DBM Filter 'DBM_Filter::unknown_class'/, + "croak on unknown class" ; + +eval { $db->Filter_Push("Some::unknown_class") ; }; +like $@, qr/^Filter_Push: Cannot Load DBM Filter 'Some::unknown_class'/, + "croak on unknown fully qualified class" ; + +eval { $db->Filter_Push('Store') ; }; +like $@, qr/^Filter_Push: not even params/, + "croak if not passing even number or params to Filter_Push"; + +runFilter('bad1', <<'EOM'); + package DBM_Filter::bad1 ; + 1; +EOM + +like $@, qr/^Filter_Push: No methods \(Filter, Fetch or Store\) found in class 'DBM_Filter::bad1'/, + "croak if none of Filter/Fetch/Store in filter" ; + + +runFilter('bad2', <<'EOM'); + package DBM_Filter::bad2 ; + + sub Filter + { + return 2; + } + + 1; +EOM + +like $@, qr/^Filter_Push: 'DBM_Filter::bad2::Filter' did not return a hash reference./, + "croak if Filter doesn't return hash reference" ; + +runFilter('bad3', <<'EOM'); + package DBM_Filter::bad3 ; + + sub Filter + { + return { BadKey => sub { } } ; + + } + + 1; +EOM + +like $@, qr/^Filter_Push: Unknown key 'BadKey'/, + "croak if bad keyword returned from Filter"; + +runFilter('bad4', <<'EOM'); + package DBM_Filter::bad4 ; + + sub Filter + { + return { Store => "abc" } ; + } + + 1; +EOM + +like $@, qr/^Filter_Push: value associated with key 'Store' is not a code reference/, + "croak if not a code reference"; + +runFilter('bad5', <<'EOM'); + package DBM_Filter::bad5 ; + + sub Filter + { + return { } ; + } + + 1; +EOM + +like $@, qr/^Filter_Push: expected both Store & Fetch - got neither/, + "croak if neither fetch or store is present"; + +runFilter('bad6', <<'EOM'); + package DBM_Filter::bad6 ; + + sub Filter + { + return { Store => sub {} } ; + } + + 1; +EOM + +like $@, qr/^Filter_Push: expected both Store & Fetch - got Store/, + "croak if store is present but fetch isn't"; + +runFilter('bad7', <<'EOM'); + package DBM_Filter::bad7 ; + + sub Filter + { + return { Fetch => sub {} } ; + } + + 1; +EOM + +like $@, qr/^Filter_Push: expected both Store & Fetch - got Fetch/, + "croak if fetch is present but store isn't"; + +runFilter('bad8', <<'EOM'); + package DBM_Filter::bad8 ; + + sub Filter {} + sub Store {} + sub Fetch {} + + 1; +EOM + +like $@, qr/^Filter_Push: Can't mix Filter with Store and Fetch in class 'DBM_Filter::bad8'/, + "croak if Fetch, Store and Filter"; + +runFilter('bad9', <<'EOM'); + package DBM_Filter::bad9 ; + + sub Filter {} + sub Store {} + + 1; +EOM + +like $@, qr/^Filter_Push: Can't mix Filter with Store and Fetch in class 'DBM_Filter::bad9'/, + "croak if Store and Filter"; + +runFilter('bad10', <<'EOM'); + package DBM_Filter::bad10 ; + + sub Filter {} + sub Fetch {} + + 1; +EOM + +like $@, qr/^Filter_Push: Can't mix Filter with Store and Fetch in class 'DBM_Filter::bad10'/, + "croak if Fetch and Filter"; + +runFilter('bad11', <<'EOM'); + package DBM_Filter::bad11 ; + + sub Fetch {} + + 1; +EOM + +like $@, qr/^Filter_Push: Missing method 'Store' in class 'DBM_Filter::bad11'/, + "croak if Fetch but no Store"; + +runFilter('bad12', <<'EOM'); + package DBM_Filter::bad12 ; + + sub Store {} + + 1; +EOM + +like $@, qr/^Filter_Push: Missing method 'Fetch' in class 'DBM_Filter::bad12'/, + "croak if Store but no Fetch"; + +undef $db; +{ + use warnings FATAL => 'untie'; + eval { untie %h1 }; + is $@, '', "untie without inner references" ; +} + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/02core.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/02core.t new file mode 100644 index 00000000000..77a6a6ce710 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/02core.t @@ -0,0 +1,720 @@ + +use strict; +use warnings; +use Carp; + +my %files = (); + +use lib '.'; + +{ + chdir 't' if -d 't'; + if ( ! -d 'DBM_Filter') + { + mkdir 'DBM_Filter', 0777 + or die "Cannot create directory 'DBM_Filter': $!\n" ; + } +} + +END { rmdir 'DBM_Filter' } + +sub writeFile +{ + my $filename = shift ; + my $content = shift; + open F, ">DBM_Filter/$filename.pm" or croak "Cannot open $filename: $!" ; + print F $content ; + close F; + $files{"DBM_Filter/$filename.pm"} ++; +} + +END { unlink keys %files if keys %files } + +use Test::More tests => 189; + +BEGIN { use_ok('DBM_Filter') }; +BEGIN { use_ok('SDBM_File') }; +BEGIN { use_ok('Fcntl') }; + +unlink ; +END { unlink ; } + +writeFile('times_ten', <<'EOM'); + package DBM_Filter::times_ten; + sub Store { $_ *= 10 } + sub Fetch { $_ /= 10 } + 1; +EOM + +writeFile('append_A', <<'EOM'); + package DBM_Filter::append_A; + sub Store { $_ .= 'A' } + sub Fetch { s/A$// } + 1; +EOM + +writeFile('append_B', <<'EOM'); + package DBM_Filter::append_B; + sub Store { $_ .= 'B' } + sub Fetch { s/B$// } + 1; +EOM + +writeFile('append_C', <<'EOM'); + package DBM_Filter::append_C; + sub Store { $_ .= 'C' } + sub Fetch { s/C$// } + 1; +EOM + +writeFile('append_D', <<'EOM'); + package DBM_Filter::append_D; + sub Store { $_ .= 'D' } + sub Fetch { s/D$// } + 1; +EOM + +writeFile('append', <<'EOM'); + package DBM_Filter::append; + sub Filter + { + my $string = shift ; + return { + Store => sub { $_ .= $string }, + Fetch => sub { s/${string}$// } + } + } + 1; +EOM + +writeFile('double', <<'EOM'); + package DBM_Filter::double; + sub Store { $_ *= 2 } + sub Fetch { $_ /= 2 } + 1; +EOM + +writeFile('uc', <<'EOM'); + package DBM_Filter::uc; + sub Store { $_ = uc $_ } + sub Fetch { $_ = lc $_ } + 1; +EOM + +writeFile('reverse', <<'EOM'); + package DBM_Filter::reverse; + sub Store { $_ = reverse $_ } + sub Fetch { $_ = reverse $_ } + 1; +EOM + + +my %PreData = ( + 'abc' => 'def', + '123' => '456', + ); + +my %PostData = ( + 'alpha' => 'beta', + 'green' => 'blue', + ); + +sub doPreData +{ + my $h = shift ; + + $$h{"abc"} = "def"; + $$h{"123"} = "456"; + ok $$h{"abc"} eq "def", "read eq written" ; + ok $$h{"123"} eq "456", "read eq written" ; + +} + +sub doPostData +{ + my $h = shift ; + + no warnings 'uninitialized'; + $$h{undef()} = undef(); + $$h{"alpha"} = "beta"; + $$h{"green"} = "blue"; + ok $$h{""} eq "", "read eq written" ; + ok $$h{"green"} eq "blue", "read eq written" ; + ok $$h{"green"} eq "blue", "read eq written" ; + +} + +sub checkRaw +{ + my $filename = shift ; + my %expected = @_ ; + my %h; + + # read the dbm file without the filter + ok tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640), "tied to SDBM_File"; + + my %bad = (); + while (my ($k, $v) = each %h) { + if ( defined $expected{$k} && $expected{$k} eq $v ) { + delete $expected{$k} ; + } + else + { $bad{$k} = $v } + } + + ok keys(%expected) + keys(%bad) == 0, "Raw hash is ok"; + + if ( keys(%expected) + keys(%bad) ) { + my $bad = "Expected does not match actual\nExpected:\n" ; + while (my ($k, $v) = each %expected) { + $bad .= "\t'$k' =>\t'$v'\n"; + } + $bad .= "\nGot:\n" ; + while (my ($k, $v) = each %bad) { + $bad .= "\t'$k' =>\t'$v'\n"; + } + diag $bad ; + } + + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + unlink ; +} + +{ + #diag "Test Set: Key and Value Filter, no stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'A' => 'A', + 'alphaA' => 'betaA', + 'greenA' => 'blueA'; + +} + +{ + #diag "Test Set: Key Only Filter, no stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Key_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'A' => '', + 'alphaA' => 'beta', + 'greenA' => 'blue'; + +} + +{ + #diag "Test Set: Value Only Filter, no stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Value_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + '' => 'A', + 'alpha' => 'betaA', + 'green' => 'blueA'; + +} + +{ + #diag "Test Set: Key and Value Filter, with stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + eval { $db->Filter_Push('append_B') }; + is $@, '', "push 'append_B' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'AB' => 'AB', + 'alphaAB' => 'betaAB', + 'greenAB' => 'blueAB'; + +} + +{ + #diag "Test Set: Key Filter != Value Filter, with stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Value_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + eval { $db->Filter_Key_Push('append_B') }; + is $@, '', "push 'append_B' filter" ; + + eval { $db->Filter_Value_Push('append_C') }; + is $@, '', "push 'append_C' filter" ; + + eval { $db->Filter_Key_Push('append_D') }; + is $@, '', "push 'append_D' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'BD' => 'AC', + 'alphaBD' => 'betaAC', + 'greenBD' => 'blueAC'; + +} + +{ + #diag "Test Set: Key only Filter, with stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Key_Push('append_B') }; + is $@, '', "push 'append_B' filter" ; + + eval { $db->Filter_Key_Push('append_D') }; + is $@, '', "push 'append_D' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'BD' => '', + 'alphaBD' => 'beta', + 'greenBD' => 'blue'; + +} + +{ + #diag "Test Set: Value only Filter, with stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Value_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + eval { $db->Filter_Value_Push('append_C') }; + is $@, '', "push 'append_C' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + '' => 'AC', + 'alpha' => 'betaAC', + 'green' => 'blueAC'; + +} + +{ + #diag "Test Set: Combination Key/Value + Key Filter != Value Filter, with stacking, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + eval { $db->Filter_Value_Push('append_C') }; + is $@, '', "push 'append_C' filter" ; + + eval { $db->Filter_Key_Push('append_D') }; + is $@, '', "push 'append_D' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'AD' => 'AC', + 'alphaAD' => 'betaAC', + 'greenAD' => 'blueAC'; + +} + +{ + #diag "Test Set: Combination Key/Value + Key + Key/Value, no closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Push('append_A') }; + is $@, '', "push 'append_A' filter" ; + + eval { $db->Filter_Key_Push('append_B') }; + is $@, '', "push 'append_B' filter" ; + + eval { $db->Filter_Push('append_C') }; + is $@, '', "push 'append_C' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'ABC' => 'AC', + 'alphaABC' => 'betaAC', + 'greenABC' => 'blueAC'; + +} + +{ + #diag "Test Set: Combination Key/Value + Key + Key/Value, with closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Push('append' => 'A') }; + is $@, '', "push 'append_A' filter" ; + + eval { $db->Filter_Key_Push('append' => 'B') }; + is $@, '', "push 'append_B' filter" ; + + eval { $db->Filter_Push('append' => 'C') }; + is $@, '', "push 'append_C' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'ABC' => 'AC', + 'alphaABC' => 'betaAC', + 'greenABC' => 'blueAC'; + +} + +{ + #diag "Test Set: Combination Key/Value + Key + Key/Value, immediate"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { + $db->Filter_Push( + Store => sub { $_ .= 'A' }, + Fetch => sub { s/A$// }) }; + is $@, '', "push 'append_A' filter" ; + + eval { + $db->Filter_Key_Push( + Store => sub { $_ .= 'B' }, + Fetch => sub { s/B$// }) }; + is $@, '', "push 'append_B' filter" ; + + eval { + $db->Filter_Push( + Store => sub { $_ .= 'C' }, + Fetch => sub { s/C$// }) }; + is $@, '', "push 'append_C' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'ABC' => 'AC', + 'alphaABC' => 'betaAC', + 'greenABC' => 'blueAC'; + +} + +{ + #diag "Test Set: Combination Key/Value + Key + Key/Value, immediate, closure"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { + $db->Filter_Push( + Store => sub { $_ .= 'A' }, + Fetch => sub { s/A$// }) }; + is $@, '', "push 'append_A' filter" ; + + eval { $db->Filter_Key_Push('append_B') }; + is $@, '', "push 'append_B' filter" ; + + eval { $db->Filter_Push('append' => 'C') }; + is $@, '', "push 'append_C' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'ABC' => 'AC', + 'alphaABC' => 'betaAC', + 'greenABC' => 'blueAC'; + +} + +{ + #diag "Test Set: Filtered & Filter_Pop"; + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + ok ! $db->Filtered, "not filtered" ; + + eval { + $db->Filter_Push( + Store => sub { $_ .= 'A' }, + Fetch => sub { s/A$// }) }; + is $@, '', "push 'append_A' filter" ; + + ok $db->Filtered, "is filtered" ; + + eval { $db->Filter_Key_Push('append_B') }; + is $@, '', "push 'append_B' filter" ; + + ok $db->Filtered, "is filtered" ; + + eval { $db->Filter_Push('append' => 'C') }; + is $@, '', "push 'append_C' filter" ; + + ok $db->Filtered, "is filtered" ; + + doPostData(\%h); + + eval { $db->Filter_Pop() }; + is $@, '', "Filter_Pop"; + + ok $db->Filtered, "is filtered" ; + + $h{'after'} = 'noon'; + is $h{'after'}, 'noon', "read eq written"; + + eval { $db->Filter_Pop() }; + is $@, '', "Filter_Pop"; + + ok $db->Filtered, "is filtered" ; + + $h{'morning'} = 'after'; + is $h{'morning'}, 'after', "read eq written"; + + eval { $db->Filter_Pop() }; + is $@, '', "Filter_Pop"; + + ok ! $db->Filtered, "not filtered" ; + + $h{'and'} = 'finally'; + is $h{'and'}, 'finally', "read eq written"; + + eval { $db->Filter_Pop() }; + is $@, '', "Filter_Pop"; + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'ABC' => 'AC', + 'alphaABC' => 'betaAC', + 'greenABC' => 'blueAC', + 'afterAB' => 'noonA', + 'morningA' => 'afterA', + 'and' => 'finally'; + +} + +{ + #diag "Test Set: define the filter package in-line"; + + { + package DBM_Filter::append_X; + + sub Store { $_ .= 'X' } + sub Fetch { s/X$// } + } + + my %h = () ; + my $db = tie(%h, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + ok $db, "tied to SDBM_File"; + + doPreData(\%h); + + eval { $db->Filter_Push('append_X') }; + is $@, '', "push 'append_X' filter" ; + + doPostData(\%h); + + undef $db; + { + use warnings FATAL => 'untie'; + eval { untie %h }; + is $@, '', "untie without inner references" ; + } + + checkRaw 'Op_dbmx', + 'abc' => 'def', + '123' => '456', + 'X' => 'X', + 'alphaX' => 'betaX', + 'greenX' => 'blueX'; + +} + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/compress.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/compress.t new file mode 100644 index 00000000000..b7f04bb57b6 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/compress.t @@ -0,0 +1,111 @@ + +use strict; +use warnings; +use Carp; + +BEGIN +{ + eval { require Compress::Zlib ; }; + if ($@) { + print "1..0 # Skip: Compress::Zlib is not available\n"; +print "# $@\n"; + exit 0; + } +} +require "dbm_filter_util.pl"; + +use Test::More tests => 23; + +BEGIN { use_ok('DBM_Filter') }; +BEGIN { use_ok('SDBM_File') }; +BEGIN { use_ok('Fcntl') }; +BEGIN { use_ok('Compress::Zlib') }; + +unlink ; +END { unlink ; } + +my %h1 = () ; +my $db1 = tie(%h1, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db1, "tied to SDBM_File"; + +# store before adding the filter + +StoreData(\%h1, + { + 1234 => 5678, + -3 => -5, + "22" => "88", + "-45" => "-88", + "fred" => "Joe", + "alpha" => "Alpha", + "Beta" => "beta", + }); + +VerifyData(\%h1, + { + 1234 => 5678, + -3 => -5, + "22" => "88", + "-45" => "-88", + "fred" => "Joe", + "alpha" => "Alpha", + "Beta" => "beta", + }); + + +eval { $db1->Filter_Push('compress') }; +is $@, '', "push a 'compress' filter" ; + +{ + no warnings 'uninitialized'; + StoreData(\%h1, + { + undef() => undef(), + "400" => "500", + 0 => 1, + 1 => 0, + "abc" => "de0", + "\x00\x01" => "\x03\xFF", + }); + +} + +undef $db1; +{ + use warnings FATAL => 'untie'; + eval { untie %h1 }; + is $@, '', "untie without inner references" ; +} + +# read the dbm file without the filter +my %h2 = () ; +my $db2 = tie(%h2, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db2, "tied to SDBM_File"; + +VerifyData(\%h2, + { + 1234 => 5678, + -3 => -5, + "22" => "88", + "-45" => "-88", + "fred" => "Joe", + "alpha" => "Alpha", + "Beta" => "beta", + + compress("") => compress(""), + compress("400") => compress("500"), + compress("0") => compress("1"), + compress("1") => compress("0"), + compress("abc") => compress("de0"), + compress("\x00\x01") => compress("\x03\xFF"), + }); + +undef $db2; +{ + use warnings FATAL => 'untie'; + eval { untie %h2 }; + is $@, '', "untie without inner references" ; +} + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t new file mode 100644 index 00000000000..7b71a98b2ee --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/encode.t @@ -0,0 +1,105 @@ + +use strict; +use warnings; +use Carp; + + +BEGIN +{ + + eval { require Encode; }; + + if ($@) { + print "1..0 # Skip: Encode is not available\n"; + exit 0; + } +} + + +require "dbm_filter_util.pl"; + +use Test::More tests => 26; + +BEGIN { use_ok('DBM_Filter') }; +BEGIN { use_ok('SDBM_File') }; +BEGIN { use_ok('Fcntl') }; +BEGIN { use_ok('charnames', qw{greek})}; + +use charnames qw{greek}; + +unlink ; +END { unlink ; } + +my %h1 = () ; +my $db1 = tie(%h1, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db1, "tied to SDBM_File"; + +eval { $db1->Filter_Push('encode' => 'blah') }; +like $@, qr/^Encoding 'blah' is not available/, "push an illigal filter" ; + +eval { $db1->Filter_Push('encode') }; +is $@, '', "push an 'encode' filter (default to utf-8)" ; + + +{ + no warnings 'uninitialized'; + StoreData(\%h1, + { + undef() => undef(), + 'alpha' => "\N{alpha}", + "\N{gamma}"=> "gamma", + "beta" => "\N{beta}", + }); + +} + +VerifyData(\%h1, + { + 'alpha' => "\N{alpha}", + "beta" => "\N{beta}", + "\N{gamma}"=> "gamma", + "" => "", + }); + +eval { $db1->Filter_Pop() }; +is $@, '', "pop the 'utf8' filter" ; + +eval { $db1->Filter_Push('encode' => 'iso-8859-16') }; +is $@, '', "push an 'encode' filter (specify iso-8859-16)" ; + +use charnames qw{:full}; +StoreData(\%h1, + { + 'euro' => "\N{EURO SIGN}", + }); + +undef $db1; +{ + use warnings FATAL => 'untie'; + eval { untie %h1 }; + is $@, '', "untie without inner references" ; +} + +# read the dbm file without the filter +my %h2 = () ; +my $db2 = tie(%h2, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db2, "tied to SDBM_File"; + +VerifyData(\%h2, + { + 'alpha' => "\xCE\xB1", + 'beta' => "\xCE\xB2", + "\xCE\xB3"=> "gamma", + 'euro' => "\xA4", + "" => "", + }); + +undef $db2; +{ + use warnings FATAL => 'untie'; + eval { untie %h2 }; + is $@, '', "untie without inner references" ; +} + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t new file mode 100644 index 00000000000..5cdadde0571 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/int32.t @@ -0,0 +1,90 @@ + +use strict; +use warnings; +use Carp; + +require "dbm_filter_util.pl"; + +use Test::More tests => 22; + +BEGIN { use_ok('DBM_Filter') }; +BEGIN { use_ok('SDBM_File') }; +BEGIN { use_ok('Fcntl') }; + +unlink ; +END { unlink ; } + +my %h1 = () ; +my $db1 = tie(%h1, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db1, "tied to SDBM_File"; + +# store before adding the filter + +StoreData(\%h1, + { + 1234 => 5678, + -3 => -5, + "22" => "88", + "-45" => "-88", + }); + +VerifyData(\%h1, + { + 1234 => 5678, + -3 => -5, + 22 => 88, + -45 => -88, + }); + + +eval { $db1->Filter_Push('int32') }; +is $@, '', "push an 'int32' filter" ; + +{ + no warnings 'uninitialized'; + StoreData(\%h1, + { + undef() => undef(), + "400" => "500", + 0 => 1, + 1 => 0, + -47 => -6, + }); + +} + +undef $db1; +{ + use warnings FATAL => 'untie'; + eval { untie %h1 }; + is $@, '', "untie without inner references" ; +} + +# read the dbm file without the filter +my %h2 = () ; +my $db2 = tie(%h2, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db2, "tied to SDBM_File"; + +VerifyData(\%h2, + { + 1234 => 5678, + -3 => -5, + 22 => 88, + -45 => -88, + + #undef() => undef(), + pack("i", 400) => pack("i", 500), + pack("i", 0) => pack("i", 1), + pack("i", 1) => pack("i", 0), + pack("i", -47) => pack("i", -6), + }); + +undef $db2; +{ + use warnings FATAL => 'untie'; + eval { untie %h2 }; + is $@, '', "untie without inner references" ; +} + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/null.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/null.t new file mode 100644 index 00000000000..2d1c22a8af2 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/null.t @@ -0,0 +1,86 @@ + +use strict; +use warnings; +use Carp; + +require "dbm_filter_util.pl"; + +use Test::More tests => 26; + +BEGIN { use_ok('DBM_Filter') }; +BEGIN { use_ok('SDBM_File') }; +BEGIN { use_ok('Fcntl') }; + +unlink ; +END { unlink ; } + +my %h1 = () ; +my $db1 = tie(%h1, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db1, "tied to SDBM_File"; + +# store before adding the filter + +StoreData(\%h1, + { + "abc" => "def", + }); + +VerifyData(\%h1, + { + "abc" => "def", + }); + + +eval { $db1->Filter_Push('null') }; +is $@, '', "push a 'null' filter" ; + +{ + no warnings 'uninitialized'; + StoreData(\%h1, + { + undef() => undef(), + "alpha" => "beta", + }); + + VerifyData(\%h1, + { + undef() => undef(), + "abc" => "", # not "def", because the filter is in place + "alpha" => "beta", + }); +} + + while (my ($k, $v) = each %h1) { + no warnings 'uninitialized'; + #diag "After Match [$k][$v]"; + } + + +undef $db1; +{ + use warnings FATAL => 'untie'; + eval { untie %h1 }; + is $@, '', "untie without inner references" ; +} + +# read the dbm file without the filter, check for null termination +my %h2 = () ; +my $db2 = tie(%h2, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db2, "tied to SDBM_File"; + +VerifyData(\%h2, + { + "abc" => "def", + "alpha\x00" => "beta\x00", + "\x00" => "\x00", + }); + +undef $db2; +{ + use warnings FATAL => 'untie'; + eval { untie %h2 }; + is $@, '', "untie without inner references" ; +} + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t b/gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t new file mode 100644 index 00000000000..e37afa2d4ad --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/t/utf8.t @@ -0,0 +1,86 @@ + +use strict; +use warnings; +use Carp; + +BEGIN +{ + + eval { require Encode; }; + + if ($@) { + print "1..0 # Skip: Encode is not available\n"; + exit 0; + } +} + +require "dbm_filter_util.pl"; + +use Test::More tests => 20; + +BEGIN { use_ok('DBM_Filter') }; +BEGIN { use_ok('SDBM_File') }; +BEGIN { use_ok('Fcntl') }; +BEGIN { use_ok('charnames', qw{greek})}; + +use charnames qw{greek}; + +unlink ; +END { unlink ; } + +my %h1 = () ; +my $db1 = tie(%h1, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db1, "tied to SDBM_File"; + +eval { $db1->Filter_Push('utf8') }; +is $@, '', "push a 'utf8' filter" ; + +{ + no warnings 'uninitialized'; + StoreData(\%h1, + { + undef() => undef(), + "beta" => "\N{beta}", + 'alpha' => "\N{alpha}", + "\N{gamma}"=> "gamma", + }); + +} + +VerifyData(\%h1, + { + 'alpha' => "\N{alpha}", + "beta" => "\N{beta}", + "\N{gamma}"=> "gamma", + "" => "", + }); + +undef $db1; +{ + use warnings FATAL => 'untie'; + eval { untie %h1 }; + is $@, '', "untie without inner references" ; +} + +# read the dbm file without the filter +my %h2 = () ; +my $db2 = tie(%h2, 'SDBM_File','Op_dbmx', O_RDWR|O_CREAT, 0640) ; + +ok $db2, "tied to SDBM_File"; + +VerifyData(\%h2, + { + 'alpha' => "\xCE\xB1", + 'beta' => "\xCE\xB2", + "\xCE\xB3"=> "gamma", + "" => "", + }); + +undef $db2; +{ + use warnings FATAL => 'untie'; + eval { untie %h2 }; + is $@, '', "untie without inner references" ; +} + diff --git a/gnu/usr.bin/perl/lib/DBM_Filter/utf8.pm b/gnu/usr.bin/perl/lib/DBM_Filter/utf8.pm new file mode 100644 index 00000000000..d9cc4933fc1 --- /dev/null +++ b/gnu/usr.bin/perl/lib/DBM_Filter/utf8.pm @@ -0,0 +1,52 @@ +package DBM_Filter::utf8 ; + +use strict; +use warnings; +use Carp; + +our $VERSION = '0.01'; + +BEGIN +{ + eval { require Encode; }; + + croak "Encode module not found.\n" + if $@; +} + +sub Store { $_ = Encode::encode_utf8($_) if defined $_ } + +sub Fetch { $_ = Encode::decode_utf8($_) if defined $_ } + +1; + +__END__ + +=head1 NAME + +DBM_Filter::utf8 -- UTF-8 DBM Filter + +=head1 SYNOPSIS + + use SDBM_File; # or DB_File, or GDBM_File, or NDBM_File, or ODBM_File + use DBM_Filter ; + + + $db = tie %hash, ... + $db->Filter_Push('utf8'); + +=head1 DESCRIPTION + +This Filter will ensure that all data written to the DBM will be encoded +in UTF-8. + +This module uses the Encode module. + +=head1 SEE ALSO + +L, L, L + +=head1 AUTHOR + +Paul Marquess pmqs@cpan.org + diff --git a/gnu/usr.bin/perl/lib/Dumpvalue.t b/gnu/usr.bin/perl/lib/Dumpvalue.t index d1af109f603..b22b86d7321 100644 --- a/gnu/usr.bin/perl/lib/Dumpvalue.t +++ b/gnu/usr.bin/perl/lib/Dumpvalue.t @@ -7,6 +7,11 @@ BEGIN { print "1..0 # skip: EBCDIC\n"; exit 0; } + require Config; + if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){ + print "1..0 # Skip -- Perl configured without List::Util module\n"; + exit 0; + } } use vars qw( $foo @bar %baz ); diff --git a/gnu/usr.bin/perl/lib/Exporter/Heavy.pm b/gnu/usr.bin/perl/lib/Exporter/Heavy.pm index 232238686dd..2cc792288f0 100644 --- a/gnu/usr.bin/perl/lib/Exporter/Heavy.pm +++ b/gnu/usr.bin/perl/lib/Exporter/Heavy.pm @@ -69,7 +69,7 @@ sub heavy_export { $cache_is_current = 1; } - if ($imports[0] =~ m#^[/!:]#){ + if (grep m{^[/!:]}, @imports) { my $tagsref = \%{"${pkg}::EXPORT_TAGS"}; my $tagdata; my %imports; diff --git a/gnu/usr.bin/perl/lib/File/Find/t/find.t b/gnu/usr.bin/perl/lib/File/Find/t/find.t index c55b4a9aac0..85123732118 100644 --- a/gnu/usr.bin/perl/lib/File/Find/t/find.t +++ b/gnu/usr.bin/perl/lib/File/Find/t/find.t @@ -15,8 +15,8 @@ BEGIN { $SIG{'__WARN__'} = sub { $warn_msg = $_[0]; warn "# $_[0]"; } } -if ( $symlink_exists ) { print "1..189\n"; } -else { print "1..79\n"; } +if ( $symlink_exists ) { print "1..199\n"; } +else { print "1..85\n"; } # Uncomment this to see where File::Find is chdir'ing to. Helpful for # debugging its little jaunts around the filesystem. @@ -122,8 +122,7 @@ sub MkDir($$) { } sub wanted_File_Dir { - print "# \$File::Find::dir => '$File::Find::dir'\n"; - print "# \$_ => '$_'\n"; + printf "# \$File::Find::dir => '$File::Find::dir'\t\$_ => '$_'\n"; s#\.$## if ($^O eq 'VMS' && $_ ne '.'); Check( $Expect_File{$_} ); if ( $FastFileTests_OK ) { @@ -497,6 +496,41 @@ Check( scalar(keys %Expect_Dir) == 0 ); Check( scalar( keys %pre ) == 0 ); } +# see thread starting +# http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-02/msg00351.html +{ + print "# checking that &_ and %_ are still accessible and that\n", + "# tie magic on \$_ is not triggered\n"; + + my $true_count; + my $sub = 0; + sub _ { + ++$sub; + } + my $tie_called = 0; + + package Foo; + sub STORE { + ++$tie_called; + } + sub FETCH {return 'N'}; + sub TIESCALAR {bless []}; + package main; + + Check( scalar( keys %_ ) == 0 ); + my @foo = 'n'; + tie $foo[0], "Foo"; + + File::Find::find( sub { $true_count++; $_{$_}++; &_; } , 'fa' ) for @foo; + untie $_; + + Check( $tie_called == 0); + Check( scalar( keys %_ ) == $true_count ); + Check( $sub == $true_count ); + Check( scalar( @foo ) == 1); + Check( $foo[0] eq 'N' ); +} + if ( $symlink_exists ) { print "# --- symbolic link tests --- \n"; $FastFileTests_OK= 1; @@ -690,7 +724,9 @@ if ( $symlink_exists ) { # the expected paths for %Expect_File %Expect_File = (file_path_name('fa') => 1, - file_path_name('fa', 'fa_ord') => 1, + file_path_name('fa', 'fa_ord') => 2, + # We may encounter the symlink first + file_path_name('fa', 'fa_ord_sl') => 2, file_path_name('fa', 'fsl') => 1, file_path_name('fa', 'fsl', 'fb_ord') => 1, file_path_name('fa', 'fsl', 'fba') => 1, @@ -715,7 +751,9 @@ if ( $symlink_exists ) { follow_skip => 1, no_chdir => 1}, topdir('fa') ); - Check( scalar(keys %Expect_File) == 0 ); + Check( scalar(keys %Expect_File) == 1 ); + # Only the file and its symlink have value 2;< + Check( (values %Expect_File)[0] == 2); unlink file_path('fa', 'fa_ord_sl'); @@ -756,7 +794,10 @@ if ( $symlink_exists ) { file_path_name('fa', 'fab', 'faba') => 1, file_path_name('fa', 'fab', 'faba', 'faba_ord') => 1, file_path_name('fa', 'faa') => 1, - file_path_name('fa', 'faa', 'faa_ord') => 1); + file_path_name('fa', 'faa', 'faa_ord') => 1, + # We may actually encounter the symlink first. + file_path_name('fa', 'faa_sl') => 1, + file_path_name('fa', 'faa_sl', 'faa_ord') => 1); %Expect_Name = (); @@ -770,7 +811,16 @@ if ( $symlink_exists ) { File::Find::find( {wanted => \&wanted_File_Dir, follow => 1, follow_skip => 2, no_chdir => 1}, topdir('fa') ); - Check( scalar(keys %Expect_File) == 0 ); + # If we encountered the symlink first, then the entries corresponding to + # the real name remain, if the real name first then the symlink + my @names = sort keys %Expect_File; + Check( @names == 2 ); + # In sorted order the directory name comes first + Check ($names[1] =~ /^$names[0]/); + # Normalise both to the original name + s/_sl// foreach @names; + Check ($names[0] eq file_path_name('fa', 'faa')); + Check ($names[1] eq file_path_name('fa', 'faa', 'faa_ord')); unlink file_path('fa', 'faa_sl'); } diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/Detect.pm b/gnu/usr.bin/perl/lib/I18N/LangTags/Detect.pm new file mode 100644 index 00000000000..3f1b7c006ac --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/Detect.pm @@ -0,0 +1,237 @@ + +# Time-stamp: "2004-06-20 21:47:55 ADT" + +require 5; +package I18N::LangTags::Detect; +use strict; + +use vars qw( @ISA $VERSION $MATCH_SUPERS $USING_LANGUAGE_TAGS + $USE_LITERALS $MATCH_SUPERS_TIGHTLY); + +BEGIN { unless(defined &DEBUG) { *DEBUG = sub () {0} } } + # define the constant 'DEBUG' at compile-time + +$VERSION = "1.03"; +@ISA = (); +use I18N::LangTags qw(alternate_language_tags locale2language_tag); + +sub _uniq { my %seen; return grep(!($seen{$_}++), @_); } +sub _normalize { + my(@languages) = + map lc($_), + grep $_, + map {; $_, alternate_language_tags($_) } @_; + return _uniq(@languages) if wantarray; + return $languages[0]; +} + +#--------------------------------------------------------------------------- +# The extent of our functional interface: + +sub detect () { return __PACKAGE__->ambient_langprefs; } + +#=========================================================================== + +sub ambient_langprefs { # always returns things untainted + my $base_class = $_[0]; + + return $base_class->http_accept_langs + if length( $ENV{'REQUEST_METHOD'} || '' ); # I'm a CGI + # it's off in its own routine because it's complicated + + # Not running as a CGI: try to puzzle out from the environment + my @languages; + + foreach my $envname (qw( LANGUAGE LC_ALL LC_MESSAGES LANG )) { + next unless $ENV{$envname}; + DEBUG and print "Noting \$$envname: $ENV{$envname}\n"; + push @languages, + map locale2language_tag($_), + # if it's a lg tag, fine, pass thru (untainted) + # if it's a locale ID, try converting to a lg tag (untainted), + # otherwise nix it. + + split m/[,:]/, + $ENV{$envname} + ; + last; # first one wins + } + + if($ENV{'IGNORE_WIN32_LOCALE'}) { + # no-op + } elsif(&_try_use('Win32::Locale')) { + # If we have that module installed... + push @languages, Win32::Locale::get_language() || '' + if defined &Win32::Locale::get_language; + } + return _normalize @languages; +} + +#--------------------------------------------------------------------------- + +sub http_accept_langs { + # Deal with HTTP "Accept-Language:" stuff. Hassle. + # This code is more lenient than RFC 3282, which you must read. + # Hm. Should I just move this into I18N::LangTags at some point? + no integer; + + my $in = (@_ > 1) ? $_[1] : $ENV{'HTTP_ACCEPT_LANGUAGE'}; + # (always ends up untainting) + + return() unless defined $in and length $in; + + $in =~ s/\([^\)]*\)//g; # nix just about any comment + + if( $in =~ m/^\s*([a-zA-Z][-a-zA-Z]+)\s*$/s ) { + # Very common case: just one language tag + return _normalize $1; + } elsif( $in =~ m/^\s*[a-zA-Z][-a-zA-Z]+(?:\s*,\s*[a-zA-Z][-a-zA-Z]+)*\s*$/s ) { + # Common case these days: just "foo, bar, baz" + return _normalize( $in =~ m/([a-zA-Z][-a-zA-Z]+)/g ); + } + + # Else it's complicated... + + $in =~ s/\s+//g; # Yes, we can just do without the WS! + my @in = $in =~ m/([^,]+)/g; + my %pref; + + my $q; + foreach my $tag (@in) { + next unless $tag =~ + m/^([a-zA-Z][-a-zA-Z]+) + (?: + ;q= + ( + \d* # a bit too broad of a RE, but so what. + (?: + \.\d+ + )? + ) + )? + $ + /sx + ; + $q = (defined $2 and length $2) ? $2 : 1; + #print "$1 with q=$q\n"; + push @{ $pref{$q} }, lc $1; + } + + return _normalize( + # Read off %pref, in descending key order... + map @{$pref{$_}}, + sort {$b <=> $a} + keys %pref + ); +} + +#=========================================================================== + +my %tried = (); + # memoization of whether we've used this module, or found it unusable. + +sub _try_use { # Basically a wrapper around "require Modulename" + # "Many men have tried..." "They tried and failed?" "They tried and died." + return $tried{$_[0]} if exists $tried{$_[0]}; # memoization + + my $module = $_[0]; # ASSUME sane module name! + { no strict 'refs'; + return($tried{$module} = 1) + if defined(%{$module . "::Lexicon"}) or defined(@{$module . "::ISA"}); + # weird case: we never use'd it, but there it is! + } + + print " About to use $module ...\n" if DEBUG; + { + local $SIG{'__DIE__'}; + eval "require $module"; # used to be "use $module", but no point in that. + } + if($@) { + print "Error using $module \: $@\n" if DEBUG > 1; + return $tried{$module} = 0; + } else { + print " OK, $module is used\n" if DEBUG; + return $tried{$module} = 1; + } +} + +#--------------------------------------------------------------------------- +1; +__END__ + + +=head1 NAME + +I18N::LangTags::Detect - detect the user's language preferences + +=head1 SYNOPSIS + + use I18N::LangTags::Detect; + my @user_wants = I18N::LangTags::Detect::detect(); + +=head1 DESCRIPTION + +It is a common problem to want to detect what language(s) the user would +prefer output in. + +=head1 FUNCTIONS + +This module defines one public function, +C. This function is not exported +(nor is even exportable), and it takes no parameters. + +In scalar context, the function returns the most preferred language +tag (or undef if no preference was seen). + +In list context (which is usually what you want), +the function returns a +(possibly empty) list of language tags representing (best first) what +languages the user apparently would accept output in. You will +probably want to pass the output of this through +C +or +C, like so: + + my @languages = + I18N::LangTags::implicate_supers_tightly( + I18N::LangTags::Detect::detect() + ); + + +=head1 ENVIRONMENT + +This module looks for several environment variables, including +REQUEST_METHOD, HTTP_ACCEPT_LANGUAGE, +LANGUAGE, LC_ALL, LC_MESSAGES, and LANG. + +It will also use the L module, if it's installed. + + +=head1 SEE ALSO + +L, L, L. + +(This module's core code started out as a routine in Locale::Maketext; +but I moved it here once I realized it was more generally useful.) + + +=head1 COPYRIGHT + +Copyright (c) 1998-2004 Sean M. Burke. All rights reserved. + +This library is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +The programs and documentation in this dist are distributed in +the hope that they will be useful, but without any warranty; without +even the implied warranty of merchantability or fitness for a +particular purpose. + + +=head1 AUTHOR + +Sean M. Burke C + +=cut + +# a tip: Put a bit of chopped up pickled ginger in your salad. It's tasty! diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/t/01_about_verbose.t b/gnu/usr.bin/perl/lib/I18N/LangTags/t/01_about_verbose.t new file mode 100644 index 00000000000..3abc68d537a --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/t/01_about_verbose.t @@ -0,0 +1,89 @@ + +require 5; +# Time-stamp: "2004-03-30 17:02:59 AST" + +# Summary of, well, things. + +use Test; +BEGIN {plan tests => 2}; + +ok 1; + +use I18N::LangTags; +use I18N::LangTags::List; +use I18N::LangTags::Detect; + +#chdir "t" if -e "t"; + +{ + my @out; + push @out, + "\n\nPerl v", + defined($^V) ? sprintf('%vd', $^V) : $], + " under $^O ", + (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber()) + ? ("(Win32::BuildNumber ", &Win32::BuildNumber(), ")") : (), + (defined $MacPerl::Version) + ? ("(MacPerl version $MacPerl::Version)") : (), + "\n" + ; + + # Ugly code to walk the symbol tables: + my %v; + my @stack = (''); # start out in %:: + my $this; + my $count = 0; + my $pref; + while(@stack) { + $this = shift @stack; + die "Too many packages?" if ++$count > 1000; + next if exists $v{$this}; + next if $this eq 'main'; # %main:: is %:: + + #print "Peeking at $this => ${$this . '::VERSION'}\n"; + + if(defined ${$this . '::VERSION'} ) { + $v{$this} = ${$this . '::VERSION'} + } elsif( + defined *{$this . '::ISA'} or defined &{$this . '::import'} + or ($this ne '' and grep defined *{$_}{'CODE'}, values %{$this . "::"}) + # If it has an ISA, an import, or any subs... + ) { + # It's a class/module with no version. + $v{$this} = undef; + } else { + # It's probably an unpopulated package. + ## $v{$this} = '...'; + } + + $pref = length($this) ? "$this\::" : ''; + push @stack, map m/^(.+)::$/ ? "$pref$1" : (), keys %{$this . '::'}; + #print "Stack: @stack\n"; + } + push @out, " Modules in memory:\n"; + delete @v{'', '[none]'}; + foreach my $p (sort {lc($a) cmp lc($b)} keys %v) { + $indent = ' ' x (2 + ($p =~ tr/:/:/)); + push @out, ' ', $indent, $p, defined($v{$p}) ? " v$v{$p};\n" : ";\n"; + } + push @out, sprintf "[at %s (local) / %s (GMT)]\n", + scalar(gmtime), scalar(localtime); + my $x = join '', @out; + $x =~ s/^/#/mg; + print $x; +} + +print "# Running", + (chr(65) eq 'A') ? " in an ASCII world.\n" : " in a non-ASCII world.\n", + "#\n", +; + +print "# \@INC:\n", map("# [$_]\n", @INC), "#\n#\n"; + +print "# \%INC:\n"; +foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) { + print "# [$x] = [", $INC{$x} || '', "]\n"; +} + +ok 1; + diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/t/05_main.t b/gnu/usr.bin/perl/lib/I18N/LangTags/t/05_main.t new file mode 100644 index 00000000000..056baafc558 --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/t/05_main.t @@ -0,0 +1,98 @@ + +require 5; + # Time-stamp: "2004-03-30 17:52:14 AST" +use strict; +use Test; +BEGIN { plan tests => 64 }; +BEGIN { ok 1 } +use I18N::LangTags (':ALL'); + +print "# Perl v$], I18N::LangTags v$I18N::LangTags::VERSION\n"; + +ok !is_language_tag(''); +ok is_language_tag('fr'); +ok is_language_tag('fr-ca'); +ok is_language_tag('fr-CA'); +ok !is_language_tag('fr-CA-'); +ok !is_language_tag('fr_CA'); +ok is_language_tag('fr-ca-joual'); +ok !is_language_tag('frca'); +ok is_language_tag('nav'); # (not actual tag) +ok is_language_tag('nav-shiprock'); # (not actual tag) +ok !is_language_tag('nav-ceremonial'); # subtag too long +ok !is_language_tag('x'); +ok !is_language_tag('i'); +ok is_language_tag('i-borg'); # NB: fictitious tag +ok is_language_tag('x-borg'); +ok is_language_tag('x-borg-prot5123'); +ok same_language_tag('x-borg-prot5123', 'i-BORG-Prot5123' ); +ok !same_language_tag('en', 'en-us' ); + +ok 0 == similarity_language_tag('en-ca', 'fr-ca'); +ok 1 == similarity_language_tag('en-ca', 'en-us'); +ok 2 == similarity_language_tag('en-us-southern', 'en-us-western'); +ok 2 == similarity_language_tag('en-us-southern', 'en-us'); + +ok grep $_ eq 'hi', panic_languages('kok'); +ok grep $_ eq 'en', panic_languages('x-woozle-wuzzle'); +ok ! grep $_ eq 'mr', panic_languages('it'); +ok grep $_ eq 'es', panic_languages('it'); +ok grep $_ eq 'it', panic_languages('es'); + + +print "# Now the ::List tests...\n"; +print "# Perl v$], I18N::LangTags::List v$I18N::LangTags::List::VERSION\n"; + +use I18N::LangTags::List; +foreach my $lt (qw( + en + en-us + en-kr + el + elx + i-mingo + i-mingo-tom + x-mingo-tom + it + it-it + it-IT + it-FR + ak + aka + jv + jw + no + no-nyn + nn + i-lux + lb + wa + yi + ji + den-syllabic + den-syllabic-western + den-western + den-latin + cre-syllabic + cre-syllabic-western + cre-western + cre-latin + cr-syllabic + cr-syllabic-western + cr-western + cr-latin +)) { + my $name = I18N::LangTags::List::name($lt); + if($name) { + ok(1); + print "# $lt -> $name\n"; + } else { + ok(0); + print "# Failed lookup on $lt\n"; + } +} + + + +print "# So there!\n"; + diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/t/07_listy.t b/gnu/usr.bin/perl/lib/I18N/LangTags/t/07_listy.t new file mode 100644 index 00000000000..a56a798a333 --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/t/07_listy.t @@ -0,0 +1,30 @@ + +require 5; + # Time-stamp: "2003-10-10 17:37:34 ADT" +use strict; +use Test; +BEGIN { plan tests => 17 }; +BEGIN { ok 1 } +use I18N::LangTags::List; + +print "# Perl v$], I18N::LangTags::List v$I18N::LangTags::List::VERSION\n"; + +ok I18N::LangTags::List::name('fr'), 'French'; +ok I18N::LangTags::List::name('fr-fr'); +ok !I18N::LangTags::List::name('El Zorcho'); +ok !I18N::LangTags::List::name(); + + +ok !I18N::LangTags::List::is_decent(); +ok I18N::LangTags::List::is_decent('fr'); +ok I18N::LangTags::List::is_decent('fr-blorch'); +ok !I18N::LangTags::List::is_decent('El Zorcho'); +ok !I18N::LangTags::List::is_decent('sgn'); +ok I18N::LangTags::List::is_decent('sgn-us'); +ok !I18N::LangTags::List::is_decent('i'); +ok I18N::LangTags::List::is_decent('i-mingo'); +ok I18N::LangTags::List::is_decent('i-mingo-tom'); +ok !I18N::LangTags::List::is_decent('cel'); +ok I18N::LangTags::List::is_decent('cel-gaulish'); + +ok 1; # one for the road diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/t/10_http.t b/gnu/usr.bin/perl/lib/I18N/LangTags/t/10_http.t new file mode 100644 index 00000000000..36341f77cf6 --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/t/10_http.t @@ -0,0 +1,104 @@ + +# Time-stamp: "2004-06-17 23:06:22 PDT" + +use I18N::LangTags::Detect; + +use Test; +BEGIN { plan tests => 87 }; + +my @in = grep m/\S/, split /\n/, q{ + +[ sv ] sv +[ en ] en +[ en fi ] en, fi +[ en-us ] en-us +[ en-us ] en-US +[ en-us ] EN-US + +[ en-au en i-klingon x-klingon en-gb en-us mt-mt mt ja ] EN-au, JA;q=0.14, i-klingon;q=0.83, en-gb;q=0.71, en-us;q=0.57, mt-mt;q=0.43, mt;q=0.29, en;q=0.86 +[ en-au en i-klingon x-klingon en-gb en-us mt-mt mt tli ja ] EN-au, tli;q=0.201, JA;q=0.14, i-klingon;q=0.83, en-gb;q=0.71, en-us;q=0.57, mt-mt;q=0.43, mt;q=0.29, en;q=0.86 +[ en-au en en-gb en-us ja ] en-au, ja;q=0.20, en-gb;q=0.60, en-us;q=0.40, en;q=0.80 + +[ en-au en en-gb en-us mt-mt mt ja ] EN-au, JA;q=0.14, en-gb;q=0.71, en-us;q=0.57, mt-mt;q=0.43, mt;q=0.29, en;q=0.86 +[ en-au en en-gb en-us ja ] en-au, ja;q=0.20, en-gb;q=0.60, en-us;q=0.40, en;q=0.80 +[ en fr ] en;q=1,fr;q=.5 +[ en fr ] en;q=1,fr;q=.99 +[ en ru ko ] en, ru;q=0.7, ko;q=0.3 +[ en ru ko ] en, ru;q=0.7, KO;q=0.3 +[ en-us en ] en-us, en;q=0.50 +[ en fr ] fr ; q = 0.9, en +[ en fr ] en,fr;q=.90 +[ ru en-uk en fr ] ru, en-UK;q=0.5, en;q=0.3, fr;q=0.1 +[ en-us fr es-mx ] en-us,fr;q=0.7,es-mx;q=0.3 +[ en-us en ] en-us, en;q=0.50 + +[ da en-gb en ] da, en-gb;q=0.8, en;q=0.7 +[ da en-gb en ] da, en;q=0.7, en-gb;q=0.8 +[ da en-gb en ] da, en-gb;q=0.8, en;q=0.7 +[ da en-gb en ] da,en;q=0.7,en-gb;q=0.8 +[ da en-gb en ] da, en-gb ; q=0.8, en ; q=0.7 +[ da en-gb en ] da , en-gb ; q = 0.8 , en ; q =0.7 +[ da en-gb en ] da (yup, Danish) , en-gb ; q = 0.8 , en ; q =0.7 + +[ no dk en-uk en-us ] en-UK;q=0.7, en-US;q=0.6, no;q=1.0, dk;q=0.8 +[ no dk en-uk en-us ] en-US;q=0.6, en-UK;q=0.7, no;q=1.0, dk;q=0.8 +[ no dk en-uk en-us ] en-UK;q=0.7, no;q=1.0, en-US;q=0.6, dk;q=0.8 +[ no dk en-uk en-us ] en-UK;q=0.7, no;q=1.0, dk;q=0.8, en-US;q=0.6 + +[ fi en ] fi;q=1, en;q=0.2 +[ de-de de en en-us en-gb ] de-DE, de;q=0.80, en;q=0.60, en-US;q=0.40, en-GB;q=0.20 +[ ru ] ru; q=1, *; q=0.1 +[ ru en ] ru, en; q=0.1 +[ ja en ] ja,en;q=0.5 +[ en ] en; q=1.0 +[ ja ] ja; q=1.0 +[ ja ] ja; q=1.0 +[ en ja ] en; q=0.5, ja; q=0.5 +[ fr-ca fr en ] fr-ca, fr;q=0.8, en;q=0.7 +[ NIX ] NIX +}; + +foreach my $in (@in) { + $in =~ s/^\s*\[([^\]]+)\]\s*//s or die "Bad input: $in"; + my @should = do { my $x = $1; $x =~ m/(\S+)/g }; + + if($in eq 'NIX') { $in = ''; @should = (); } + + local $ENV{'HTTP_ACCEPT_LANGUAGE'}; + + foreach my $modus ( + sub { + print "# Testing with arg...\n"; + $ENV{'HTTP_ACCEPT_LANGUAGE'} = 'PLORK'; + return $_[0]; + }, + sub { + print "# Testing wath HTTP_ACCEPT_LANGUAGE...\n"; + $ENV{'HTTP_ACCEPT_LANGUAGE'} = $_[0]; + return(); + }, + ) { + my @args = &$modus($in); + + # //////////////////////////////////////////////////// + my @out = I18N::LangTags::Detect->http_accept_langs(@args); + # \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + + if( + @out == @should + and lc( join "\e", @out ) eq lc( join "\e", @should ) + ) { + print "# Happily got [@out] from [$in]\n"; + ok 1; + } else { + ok 0; + print "#Got: [@out]\n", + "# but wanted: [@should]\n", + "# < \"$in\"\n#\n"; + } + } +} + +print "#\n#\n# Bye-bye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/t/50_super.t b/gnu/usr.bin/perl/lib/I18N/LangTags/t/50_super.t new file mode 100644 index 00000000000..9923c840685 --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/t/50_super.t @@ -0,0 +1,88 @@ + +# Time-stamp: "2004-03-30 17:46:17 AST" + +use Test; +BEGIN { plan tests => 26 }; +print "#\n# Testing normal (tight) insertion of super-ordinate language tags...\n#\n"; + +use I18N::LangTags qw(implicate_supers); + +my @in = grep m/\S/, split /[\n\r]/, q{ + NIX => NIX + sv => sv + en => en + hai => hai + + pt-br => pt-br pt + pt-br fr => pt-br pt fr + pt-br fr pt => pt-br fr pt + + pt-br fr pt de => pt-br fr pt de + de pt-br fr pt => de pt-br fr pt + de pt-br fr => de pt-br pt fr + hai pt-br fr => hai pt-br pt fr + + # Now test multi-part complicateds: + pt-br-janeiro => pt-br-janeiro pt-br pt + pt-br-janeiro fr => pt-br-janeiro pt-br pt fr + pt-br-janeiro de fr => pt-br-janeiro pt-br pt de fr + pt-br-janeiro de pt fr => pt-br-janeiro pt-br de pt fr + + pt-br-janeiro pt-br-saopaolo => pt-br-janeiro pt-br pt pt-br-saopaolo + pt-br-janeiro fr pt-br-saopaolo => pt-br-janeiro pt-br pt fr pt-br-saopaolo + pt-br-janeiro de pt-br-saopaolo fr => pt-br-janeiro pt-br pt de pt-br-saopaolo fr + pt-br-janeiro de pt-br fr pt-br-saopaolo => pt-br-janeiro de pt-br pt fr pt-br-saopaolo + + pt-br de en fr pt-br-janeiro => pt-br pt de en fr pt-br-janeiro + pt-br de en fr => pt-br pt de en fr + + ja pt-br-janeiro fr => ja pt-br-janeiro pt-br pt fr + ja pt-br-janeiro de fr => ja pt-br-janeiro pt-br pt de fr + ja pt-br-janeiro de pt fr => ja pt-br-janeiro pt-br de pt fr + + pt-br-janeiro de pt-br fr => pt-br-janeiro de pt-br pt fr +# an odd case, since we don't filter for uniqueness in this sub + +}; + +sub uniq { my %seen; return grep(!($seen{$_}++), @_); } + +foreach my $in (@in) { + $in =~ s/^\s+//s; + $in =~ s/\s+$//s; + $in =~ s/#.+//s; + next unless $in =~ m/\S/; + + my(@in, @should); + { + die "What kind of line is <$in>?!" + unless $in =~ m/^(.+)=>(.+)$/s; + + my($i,$s) = ($1, $2); + @in = ($i =~ m/(\S+)/g); + @should = ($s =~ m/(\S+)/g); + #print "{@in}{@should}\n"; + } + my @out = implicate_supers( + ("@in" eq 'NIX') ? () : @in + ); + #print "O: ", join(' ', map "<$_>", @out), "\n"; + @out = 'NIX' unless @out; + + + if( @out == @should + and lc( join "\e", @out ) eq lc( join "\e", @should ) + ) { + print "# Happily got [@out] from [$in]\n"; + ok 1; + } else { + ok 0; + print "#!!Got: [@out]\n", + "#!! but wanted: [@should]\n", + "#!! from \"$in\"\n#\n"; + } +} + +print "#\n#\n# Bye-bye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/t/55_supers_strict.t b/gnu/usr.bin/perl/lib/I18N/LangTags/t/55_supers_strict.t new file mode 100644 index 00000000000..3b285157a10 --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/t/55_supers_strict.t @@ -0,0 +1,78 @@ + +# Time-stamp: "2004-03-30 17:49:58 AST" +#sub I18N::LangTags::Detect::DEBUG () {10} +use I18N::LangTags qw(implicate_supers_strictly); + +use Test; +BEGIN { plan tests => 19 }; + +print "#\n# Testing strict (non-tight) insertion of super-ordinate language tags...\n#\n"; + +my @in = grep m/\S/, split /[\n\r]/, q{ + NIX => NIX + sv => sv + en => en + hai => hai + + pt-br => pt-br pt + pt-br fr => pt-br fr pt + pt-br fr pt => pt-br fr pt + pt-br fr pt de => pt-br fr pt de + de pt-br fr pt => de pt-br fr pt + de pt-br fr => de pt-br fr pt + hai pt-br fr => hai pt-br fr pt + +# Now test multi-part complicateds: + pt-br-janeiro fr => pt-br-janeiro fr pt-br pt +pt-br-janeiro de fr => pt-br-janeiro de fr pt-br pt +pt-br-janeiro de pt fr => pt-br-janeiro de pt fr pt-br + +ja pt-br-janeiro fr => ja pt-br-janeiro fr pt-br pt +ja pt-br-janeiro de fr => ja pt-br-janeiro de fr pt-br pt +ja pt-br-janeiro de pt fr => ja pt-br-janeiro de pt fr pt-br + +pt-br-janeiro de pt-br fr => pt-br-janeiro de pt-br fr pt + # an odd case, since we don't filter for uniqueness in this sub + +}; + + +foreach my $in (@in) { + $in =~ s/^\s+//s; + $in =~ s/\s+$//s; + $in =~ s/#.+//s; + next unless $in =~ m/\S/; + + my(@in, @should); + { + die "What kind of line is <$in>?!" + unless $in =~ m/^(.+)=>(.+)$/s; + + my($i,$s) = ($1, $2); + @in = ($i =~ m/(\S+)/g); + @should = ($s =~ m/(\S+)/g); + #print "{@in}{@should}\n"; + } + my @out = I18N::LangTags::implicate_supers_strictly( + ("@in" eq 'NIX') ? () : @in + ); + #print "O: ", join(' ', map "<$_>", @out), "\n"; + @out = 'NIX' unless @out; + + + if( @out == @should + and lc( join "\e", @out ) eq lc( join "\e", @should ) + ) { + print "# Happily got [@out] from [$in]\n"; + ok 1; + } else { + ok 0; + print "#!!Got: [@out]\n", + "#!! but wanted: [@should]\n", + "#!! from \"$in\"\n#\n"; + } +} + +print "#\n#\n# Bye-bye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/I18N/LangTags/t/80_all_env.t b/gnu/usr.bin/perl/lib/I18N/LangTags/t/80_all_env.t new file mode 100644 index 00000000000..1362d5ebf51 --- /dev/null +++ b/gnu/usr.bin/perl/lib/I18N/LangTags/t/80_all_env.t @@ -0,0 +1,115 @@ + +require 5; +use Test; +# Time-stamp: "2004-07-01 14:33:50 ADT" +BEGIN { plan tests => 20; } +use I18N::LangTags::Detect 1.01; +print "# Hi there...\n"; +ok 1; + +print "# Using I18N::LangTags::Detect v$I18N::LangTags::Detect::VERSION\n"; + +print "# Make sure we can assign to ENV entries\n", + "# (Otherwise we can't run the subsequent tests)...\n"; +$ENV{'MYORP'} = 'Zing'; ok $ENV{'MYORP'}, 'Zing'; +$ENV{'SWUZ'} = 'KLORTHO HOOBOY'; ok $ENV{'SWUZ'}, 'KLORTHO HOOBOY'; + +delete $ENV{'MYORP'}; +delete $ENV{'SWUZ'}; + +sub j { "[" . join(' ', map "\"$_\"", @_) . "]" ;} + +sub show { + print "# (Seeing {", join(' ', + map(qq{<$_>}, @_)), "} at line ", (caller)[2], ")\n"; + printenv(); + return $_[0] || ''; +} +sub printenv { + print "# ENV:\n"; + foreach my $k (sort keys %ENV) { + my $p = $ENV{$k}; $p =~ s/\n/\n#/g; + print "# [$k] = [$p]\n"; } + print "# [end of ENV]\n#\n"; +} + +$ENV{'IGNORE_WIN32_LOCALE'} = 1; # a hack, just for testing's sake. + + +print "# Test LANGUAGE...\n"; +$ENV{'REQUEST_METHOD'} = ''; +$ENV{'LANGUAGE'} = 'Eu-MT'; +$ENV{'LC_ALL'} = ''; +$ENV{'LC_MESSAGES'} = ''; +$ENV{'LANG'} = ''; +ok show( scalar I18N::LangTags::Detect::detect()), "eu-mt"; +ok show( j I18N::LangTags::Detect::detect()), q{["eu-mt"]}; + + +print "# Test LC_ALL...\n"; +$ENV{'REQUEST_METHOD'} = ''; +$ENV{'LANGUAGE'} = ''; +$ENV{'LC_ALL'} = 'Eu-MT'; +$ENV{'LC_MESSAGES'} = ''; +$ENV{'LANG'} = ''; + +ok show( scalar I18N::LangTags::Detect::detect()), "eu-mt"; +ok show( j I18N::LangTags::Detect::detect()), q{["eu-mt"]}; + +print "# Test LC_MESSAGES...\n"; +$ENV{'REQUEST_METHOD'} = ''; +$ENV{'LANGUAGE'} = ''; +$ENV{'LC_ALL'} = ''; +$ENV{'LC_MESSAGES'} = 'Eu-MT'; +$ENV{'LANG'} = ''; + +ok show( scalar I18N::LangTags::Detect::detect()), "eu-mt"; +ok show( j I18N::LangTags::Detect::detect()), q{["eu-mt"]}; + + +print "# Test LANG...\n"; +$ENV{'REQUEST_METHOD'} = ''; +$ENV{'LANGUAGE'} = ''; +$ENV{'LC_ALL'} = ''; +$ENV{'LC_MESSAGES'} = ''; +$ENV{'LANG'} = 'Eu_MT'; + +ok show( scalar I18N::LangTags::Detect::detect()), "eu-mt"; +ok show( j I18N::LangTags::Detect::detect()), q{["eu-mt"]}; + + + +print "# Test LANG...\n"; +$ENV{'LANGUAGE'} = ''; +$ENV{'REQUEST_METHOD'} = ''; +$ENV{'LC_ALL'} = ''; +$ENV{'LC_MESSAGES'} = ''; +$ENV{'LANG'} = 'Eu_MT'; + +ok show( scalar I18N::LangTags::Detect::detect()), "eu-mt"; +ok show( j I18N::LangTags::Detect::detect()), q{["eu-mt"]}; + + + + +print "# Test HTTP_ACCEPT_LANGUAGE...\n"; +$ENV{'REQUEST_METHOD'} = 'GET'; +$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'eu-MT'; +ok show( scalar I18N::LangTags::Detect::detect()), "eu-mt"; +ok show( j I18N::LangTags::Detect::detect()), q{["eu-mt"]}; + + +$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'x-plorp, zaz, eu-MT, i-klung'; +ok show( scalar I18N::LangTags::Detect::detect()), "x-plorp"; +ok show( j I18N::LangTags::Detect::detect()), qq{["x-plorp" "i-plorp" "zaz" "eu-mt" "i-klung" "x-klung"]}; + +$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'x-plorp, zaz, eU-Mt, i-klung'; +ok show( scalar I18N::LangTags::Detect::detect()), "x-plorp"; +ok show( j I18N::LangTags::Detect::detect()), qq{["x-plorp" "i-plorp" "zaz" "eu-mt" "i-klung" "x-klung"]}; + + + + +print "# Byebye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Locale/Maketext/t/01_about_verbose.t b/gnu/usr.bin/perl/lib/Locale/Maketext/t/01_about_verbose.t new file mode 100644 index 00000000000..1e268d2a4eb --- /dev/null +++ b/gnu/usr.bin/perl/lib/Locale/Maketext/t/01_about_verbose.t @@ -0,0 +1,87 @@ + +require 5; +# Time-stamp: "2004-03-30 17:02:53 AST" + +# Summary of, well, things. + +use Test; +BEGIN {plan tests => 2}; + +ok 1; + +use Locale::Maketext; + +#chdir "t" if -e "t"; + +{ + my @out; + push @out, + "\n\nPerl v", + defined($^V) ? sprintf('%vd', $^V) : $], + " under $^O ", + (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber()) + ? ("(Win32::BuildNumber ", &Win32::BuildNumber(), ")") : (), + (defined $MacPerl::Version) + ? ("(MacPerl version $MacPerl::Version)") : (), + "\n" + ; + + # Ugly code to walk the symbol tables: + my %v; + my @stack = (''); # start out in %:: + my $this; + my $count = 0; + my $pref; + while(@stack) { + $this = shift @stack; + die "Too many packages?" if ++$count > 1000; + next if exists $v{$this}; + next if $this eq 'main'; # %main:: is %:: + + #print "Peeking at $this => ${$this . '::VERSION'}\n"; + + if(defined ${$this . '::VERSION'} ) { + $v{$this} = ${$this . '::VERSION'} + } elsif( + defined *{$this . '::ISA'} or defined &{$this . '::import'} + or ($this ne '' and grep defined *{$_}{'CODE'}, values %{$this . "::"}) + # If it has an ISA, an import, or any subs... + ) { + # It's a class/module with no version. + $v{$this} = undef; + } else { + # It's probably an unpopulated package. + ## $v{$this} = '...'; + } + + $pref = length($this) ? "$this\::" : ''; + push @stack, map m/^(.+)::$/ ? "$pref$1" : (), keys %{$this . '::'}; + #print "Stack: @stack\n"; + } + push @out, " Modules in memory:\n"; + delete @v{'', '[none]'}; + foreach my $p (sort {lc($a) cmp lc($b)} keys %v) { + $indent = ' ' x (2 + ($p =~ tr/:/:/)); + push @out, ' ', $indent, $p, defined($v{$p}) ? " v$v{$p};\n" : ";\n"; + } + push @out, sprintf "[at %s (local) / %s (GMT)]\n", + scalar(gmtime), scalar(localtime); + my $x = join '', @out; + $x =~ s/^/#/mg; + print $x; +} + +print "# Running", + (chr(65) eq 'A') ? " in an ASCII world.\n" : " in a non-ASCII world.\n", + "#\n", +; + +print "# \@INC:\n", map("# [$_]\n", @INC), "#\n#\n"; + +print "# \%INC:\n"; +foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) { + print "# [$x] = [", $INC{$x} || '', "]\n"; +} + +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Locale/Maketext/t/10_make.t b/gnu/usr.bin/perl/lib/Locale/Maketext/t/10_make.t new file mode 100644 index 00000000000..d9352d03407 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Locale/Maketext/t/10_make.t @@ -0,0 +1,34 @@ + +require 5; +use Test; +BEGIN { plan tests => 6; } +use Locale::Maketext 1.01; +print "# Hi there...\n"; +ok 1; + +# declare some classes... +{ + package Woozle; + @ISA = ('Locale::Maketext'); + sub dubbil { return $_[1] * 2 } + sub numerate { return $_[2] . 'en' } +} +{ + package Woozle::elx; + @ISA = ('Woozle'); + %Lexicon = ( + 'd2' => 'hum [dubbil,_1]', + 'd3' => 'hoo [quant,_1,zaz]', + 'd4' => 'hoo [*,_1,zaz]', + ); + keys %Lexicon; # dodges the 'used only once' warning +} + +ok defined( $lh = Woozle->get_handle('elx') ) && ref($lh); +ok $lh && $lh->maketext('d2', 7), "hum 14" ; +ok $lh && $lh->maketext('d3', 7), "hoo 7 zazen" ; +ok $lh && $lh->maketext('d4', 7), "hoo 7 zazen" ; + +print "# Byebye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Locale/Maketext/t/20_get.t b/gnu/usr.bin/perl/lib/Locale/Maketext/t/20_get.t new file mode 100644 index 00000000000..c9ad01c738f --- /dev/null +++ b/gnu/usr.bin/perl/lib/Locale/Maketext/t/20_get.t @@ -0,0 +1,72 @@ + +require 5; +use Test; +BEGIN { plan tests => 11; } +use Locale::Maketext 1.01; +print "# Hi there...\n"; +ok 1; + +print "# --- Making sure that get_handle works ---\n"; + +# declare some classes... +{ + package Woozle; + @ISA = ('Locale::Maketext'); + sub dubbil { return $_[1] * 2 } + sub numerate { return $_[2] . 'en' } +} +{ + package Woozle::eu_mt; + @ISA = ('Woozle'); + %Lexicon = ( + 'd2' => 'hum [dubbil,_1]', + 'd3' => 'hoo [quant,_1,zaz]', + 'd4' => 'hoo [*,_1,zaz]', + ); + keys %Lexicon; # dodges the 'used only once' warning +} + +my $lh; +print "# Basic sanity:\n"; +ok defined( $lh = Woozle->get_handle('eu-mt') ) && ref($lh); +ok $lh && $lh->maketext('d2', 7), "hum 14" ; + + + +print "# Make sure we can assign to ENV entries\n", + "# (Otherwise we can't run the subsequent tests)...\n"; +$ENV{'MYORP'} = 'Zing'; +ok $ENV{'MYORP'}, 'Zing'; +$ENV{'SWUZ'} = 'KLORTHO HOOBOY'; +ok $ENV{'SWUZ'}, 'KLORTHO HOOBOY'; + +delete $ENV{'MYORP'}; +delete $ENV{'SWUZ'}; + + +print "# Test LANG...\n"; +$ENV{'LC_ALL'} = ''; +$ENV{'LC_MESSAGES'} = ''; +$ENV{'REQUEST_METHOD'} = ''; +$ENV{'LANG'} = 'Eu_MT'; +$ENV{'LANGUAGE'} = ''; +ok defined( $lh = Woozle->get_handle() ) && ref($lh); + +print "# Test LANGUAGE...\n"; +$ENV{'LANG'} = ''; +$ENV{'LANGUAGE'} = 'Eu-MT'; +ok defined( $lh = Woozle->get_handle() ) && ref($lh); + +print "# Test HTTP_ACCEPT_LANGUAGE...\n"; +$ENV{'REQUEST_METHOD'} = 'GET'; +$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'eu-MT'; +ok defined( $lh = Woozle->get_handle() ) && ref($lh); +$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'x-plorp, zaz, eu-MT, i-klung'; +ok defined( $lh = Woozle->get_handle() ) && ref($lh); +$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'x-plorp, zaz, eU-Mt, i-klung'; +ok defined( $lh = Woozle->get_handle() ) && ref($lh); + + +print "# Byebye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Locale/Maketext/t/40_super.t b/gnu/usr.bin/perl/lib/Locale/Maketext/t/40_super.t new file mode 100644 index 00000000000..388326c52d2 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Locale/Maketext/t/40_super.t @@ -0,0 +1,79 @@ + +# Time-stamp: "2004-03-30 18:02:24 AST" +#sub Locale::Maketext::DEBUG () {10} +use Locale::Maketext; + +use Test; +BEGIN { plan tests => 19 }; + +print "#\n# Testing non-tight insertion of super-ordinate language tags...\n#\n"; + +my @in = grep m/\S/, split /[\n\r]/, q{ + NIX => NIX + sv => sv + en => en + hai => hai + + pt-br => pt-br pt + pt-br fr => pt-br fr pt + pt-br fr pt => pt-br fr pt + pt-br fr pt de => pt-br fr pt de + de pt-br fr pt => de pt-br fr pt + de pt-br fr => de pt-br fr pt + hai pt-br fr => hai pt-br fr pt + +# Now test multi-part complicateds: + pt-br-janeiro fr => pt-br-janeiro fr pt-br pt +pt-br-janeiro de fr => pt-br-janeiro de fr pt-br pt +pt-br-janeiro de pt fr => pt-br-janeiro de pt fr pt-br + +ja pt-br-janeiro fr => ja pt-br-janeiro fr pt-br pt +ja pt-br-janeiro de fr => ja pt-br-janeiro de fr pt-br pt +ja pt-br-janeiro de pt fr => ja pt-br-janeiro de pt fr pt-br + +pt-br-janeiro de pt-br fr => pt-br-janeiro de pt-br fr pt + # an odd case, since we don't filter for uniqueness in this sub + +}; + +$Locale::Maketext::MATCH_SUPERS_TIGHTLY = 0; + +foreach my $in (@in) { + $in =~ s/^\s+//s; + $in =~ s/\s+$//s; + $in =~ s/#.+//s; + next unless $in =~ m/\S/; + + my(@in, @should); + { + die "What kind of line is <$in>?!" + unless $in =~ m/^(.+)=>(.+)$/s; + + my($i,$s) = ($1, $2); + @in = ($i =~ m/(\S+)/g); + @should = ($s =~ m/(\S+)/g); + #print "{@in}{@should}\n"; + } + my @out = Locale::Maketext->_add_supers( + ("@in" eq 'NIX') ? () : @in + ); + #print "O: ", join(' ', map "<$_>", @out), "\n"; + @out = 'NIX' unless @out; + + + if( @out == @should + and lc( join "\e", @out ) eq lc( join "\e", @should ) + ) { + print "# Happily got [@out] from [$in]\n"; + ok 1; + } else { + ok 0; + print "#!!Got: [@out]\n", + "#!! but wanted: [@should]\n", + "#!! from \"$in\"\n#\n"; + } +} + +print "#\n#\n# Bye-bye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Locale/Maketext/t/50_super.t b/gnu/usr.bin/perl/lib/Locale/Maketext/t/50_super.t new file mode 100644 index 00000000000..a5814165cea --- /dev/null +++ b/gnu/usr.bin/perl/lib/Locale/Maketext/t/50_super.t @@ -0,0 +1,87 @@ + +#sub Locale::Maketext::DEBUG () {10} +use Locale::Maketext; + +use Test; +BEGIN { plan tests => 26 }; +print "#\n# Testing tight insertion of super-ordinate language tags...\n#\n"; + +my @in = grep m/\S/, split /[\n\r]/, q{ + NIX => NIX + sv => sv + en => en + hai => hai + + pt-br => pt-br pt + pt-br fr => pt-br pt fr + pt-br fr pt => pt-br fr pt + + pt-br fr pt de => pt-br fr pt de + de pt-br fr pt => de pt-br fr pt + de pt-br fr => de pt-br pt fr + hai pt-br fr => hai pt-br pt fr + + # Now test multi-part complicateds: + pt-br-janeiro => pt-br-janeiro pt-br pt + pt-br-janeiro fr => pt-br-janeiro pt-br pt fr + pt-br-janeiro de fr => pt-br-janeiro pt-br pt de fr + pt-br-janeiro de pt fr => pt-br-janeiro pt-br de pt fr + + pt-br-janeiro pt-br-saopaolo => pt-br-janeiro pt-br pt pt-br-saopaolo + pt-br-janeiro fr pt-br-saopaolo => pt-br-janeiro pt-br pt fr pt-br-saopaolo + pt-br-janeiro de pt-br-saopaolo fr => pt-br-janeiro pt-br pt de pt-br-saopaolo fr + pt-br-janeiro de pt-br fr pt-br-saopaolo => pt-br-janeiro de pt-br pt fr pt-br-saopaolo + + pt-br de en fr pt-br-janeiro => pt-br pt de en fr pt-br-janeiro + pt-br de en fr => pt-br pt de en fr + + ja pt-br-janeiro fr => ja pt-br-janeiro pt-br pt fr + ja pt-br-janeiro de fr => ja pt-br-janeiro pt-br pt de fr + ja pt-br-janeiro de pt fr => ja pt-br-janeiro pt-br de pt fr + + pt-br-janeiro de pt-br fr => pt-br-janeiro de pt-br pt fr +# an odd case, since we don't filter for uniqueness in this sub + +}; + +sub uniq { my %seen; return grep(!($seen{$_}++), @_); } + +foreach my $in (@in) { + $in =~ s/^\s+//s; + $in =~ s/\s+$//s; + $in =~ s/#.+//s; + next unless $in =~ m/\S/; + + my(@in, @should); + { + die "What kind of line is <$in>?!" + unless $in =~ m/^(.+)=>(.+)$/s; + + my($i,$s) = ($1, $2); + @in = ($i =~ m/(\S+)/g); + @should = ($s =~ m/(\S+)/g); + #print "{@in}{@should}\n"; + } + my @out = uniq( Locale::Maketext->_add_supers( + ("@in" eq 'NIX') ? () : @in + ) ); + #print "O: ", join(' ', map "<$_>", @out), "\n"; + @out = 'NIX' unless @out; + + + if( @out == @should + and lc( join "\e", @out ) eq lc( join "\e", @should ) + ) { + print "# Happily got [@out] from [$in]\n"; + ok 1; + } else { + ok 0; + print "#!!Got: [@out]\n", + "#!! but wanted: [@should]\n", + "#!! from \"$in\"\n#\n"; + } +} + +print "#\n#\n# Bye-bye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Locale/Maketext/t/60_super.t b/gnu/usr.bin/perl/lib/Locale/Maketext/t/60_super.t new file mode 100644 index 00000000000..922275d179d --- /dev/null +++ b/gnu/usr.bin/perl/lib/Locale/Maketext/t/60_super.t @@ -0,0 +1,31 @@ + +require 5; +use strict; +use Test; + +# use a BEGIN block so we print our plan before MyModule is loaded +BEGIN { plan tests => 3 } + +ok 1; +print "# Locale::Maketext version $Locale::Maketext::VERSION\n"; + +#sub Locale::Maketext::DEBUG () {10}; +use Locale::Maketext (); +{ package Whunk::L10N; use vars qw(@ISA %Lexicon); @ISA = 'Locale::Maketext'; + %Lexicon = ("hello" => "SROBLR!"); +} +{ package Whunk::L10N::en; use vars qw(@ISA %Lexicon); @ISA = 'Whunk::L10N'; + %Lexicon = ("hello" => "HI AND STUFF!"); +} +{ package Whunk::L10N::zh_tw; use vars qw(@ISA %Lexicon); @ISA = 'Whunk::L10N'; + %Lexicon = ("hello" => "NIHAU JOE!"); +} + +$ENV{'REQUEST_METHOD'} = 'GET'; +$ENV{'HTTP_ACCEPT_LANGUAGE'} = 'en-US, zh-TW'; + +my $x = Whunk::L10N->get_handle; +print "# LH object: $x\n"; +ok $x->maketext('hello'), "HI AND STUFF!"; +print "# OK bye\n"; +ok 1; diff --git a/gnu/usr.bin/perl/lib/Locale/Maketext/t/90_utf8.t b/gnu/usr.bin/perl/lib/Locale/Maketext/t/90_utf8.t new file mode 100644 index 00000000000..96731e2b192 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Locale/Maketext/t/90_utf8.t @@ -0,0 +1,39 @@ + +require 5; +use Test; +BEGIN { plan tests => 4; } +use Locale::Maketext 1.01; +print "# Hi there...\n"; +ok 1; + + +print "# --- Making sure that get_handle works with utf8 ---\n"; +use utf8; + +# declare some classes... +{ + package Woozle; + @ISA = ('Locale::Maketext'); + sub dubbil { return $_[1] * 2 .chr(2000)} + sub numerate { return $_[2] . 'en' } +} +{ + package Woozle::eu_mt; + @ISA = ('Woozle'); + %Lexicon = ( + 'd2' => chr(1000) . 'hum [dubbil,_1]', + 'd3' => chr(1000) . 'hoo [quant,_1,zaz]', + 'd4' => chr(1000) . 'hoo [*,_1,zaz]', + ); + keys %Lexicon; # dodges the 'used only once' warning +} + +my $lh; +print "# Basic sanity:\n"; +ok defined( $lh = Woozle->get_handle('eu-mt') ) && ref($lh); +ok $lh && $lh->maketext('d2', 7), chr(1000)."hum 14".chr(2000) ; + + +print "# Byebye!\n"; +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Math/BigInt/t/_e_math.t b/gnu/usr.bin/perl/lib/Math/BigInt/t/_e_math.t new file mode 100644 index 00000000000..3db33183a85 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Math/BigInt/t/_e_math.t @@ -0,0 +1,111 @@ +#!/usr/bin/perl -w + +# test the helper math routines in Math::BigFloat + +use Test::More; +use strict; + +BEGIN + { + $| = 1; + # to locate the testing files + my $location = $0; $location =~ s/_e_math.t//i; + if ($ENV{PERL_CORE}) + { + # testing with the core distribution + @INC = qw(../lib); + } + unshift @INC, '../lib'; + if (-d 't') + { + chdir 't'; + require File::Spec; + unshift @INC, File::Spec->catdir(File::Spec->updir, $location); + } + else + { + unshift @INC, $location; + } + print "# INC = @INC\n"; + + plan tests => 26; + } + +use Math::BigFloat; + +############################################################################# +# add + +my $a = Math::BigInt::Calc->_new("123"); +my $b = Math::BigInt::Calc->_new("321"); + +my ($x, $xs) = Math::BigFloat::_e_add($a,$b,'+','+'); +is (_str($x,$xs), '+444', 'add two positive numbers'); +is (_str($a,''), '444', 'a modified'); + +($x,$xs) = _add (123,321,'+','+'); +is (_str($x,$xs), '+444', 'add two positive numbers'); + +($x,$xs) = _add (123,321,'+','-'); +is (_str($x,$xs), '-198', 'add +x + -y'); +($x,$xs) = _add (123,321,'-','+'); +is (_str($x,$xs), '+198', 'add -x + +y'); + +($x,$xs) = _add (321,123,'-','+'); +is (_str($x,$xs), '-198', 'add -x + +y'); +($x,$xs) = _add (321,123,'+','-'); +is (_str($x,$xs), '+198', 'add +x + -y'); + +($x,$xs) = _add (10,1,'+','-'); +is (_str($x,$xs), '+9', 'add 10 + -1'); +($x,$xs) = _add (10,1,'-','+'); +is (_str($x,$xs), '-9', 'add -10 + +1'); +($x,$xs) = _add (1,10,'-','+'); +is (_str($x,$xs), '+9', 'add -1 + 10'); +($x,$xs) = _add (1,10,'+','-'); +is (_str($x,$xs), '-9', 'add 1 + -10'); + +############################################################################# +# sub + +$a = Math::BigInt::Calc->_new("123"); +$b = Math::BigInt::Calc->_new("321"); +($x, $xs) = Math::BigFloat::_e_sub($b,$a,'+','+'); +is (_str($x,$xs), '+198', 'sub two positive numbers'); +is (_str($b,''), '198', 'a modified'); + +($x,$xs) = _sub (123,321,'+','-'); +is (_str($x,$xs), '+444', 'sub +x + -y'); +($x,$xs) = _sub (123,321,'-','+'); +is (_str($x,$xs), '-444', 'sub -x + +y'); + +sub _add + { + my ($a,$b,$as,$bs) = @_; + + my $aa = Math::BigInt::Calc->_new($a); + my $bb = Math::BigInt::Calc->_new($b); + my ($x, $xs) = Math::BigFloat::_e_add($aa,$bb,$as,$bs); + is (Math::BigInt::Calc->_str($x), Math::BigInt::Calc->_str($aa), + 'param0 modified'); + ($x,$xs); + } + +sub _sub + { + my ($a,$b,$as,$bs) = @_; + + my $aa = Math::BigInt::Calc->_new($a); + my $bb = Math::BigInt::Calc->_new($b); + my ($x, $xs) = Math::BigFloat::_e_sub($aa,$bb,$as,$bs); + is (Math::BigInt::Calc->_str($x), Math::BigInt::Calc->_str($aa), + 'param0 modified'); + ($x,$xs); + } + +sub _str + { + my ($x,$s) = @_; + + $s . Math::BigInt::Calc->_str($x); + } diff --git a/gnu/usr.bin/perl/lib/Net/Changes.libnet b/gnu/usr.bin/perl/lib/Net/Changes.libnet new file mode 100644 index 00000000000..724135cda63 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Net/Changes.libnet @@ -0,0 +1,37 @@ +libnet 1.19 -- Wed Jun 30 14:53:48 BST 2004 + +Bug Fixes + * Fixed datasend test to work on Win32 platform + * Fixed Authen::SASL checking in SMTP.pm and POP3.pm + * Fixed bug that a restarted get with Net::FTP did not append to local file + +libnet 1.18 -- Mon Mar 22 16:19:01 GMT 2004 + +Bug Fixes + * Fixed bug in CRLF translation in Net::Cmd datasend/dataend methods + * Fixed bug in converting numbers returned by PASV command into a + packed IP address + * Fixed bug that caused Net::FTP->get to truncate the local file after + the restart method had been called + * Fixed bug in Net::FTP-.rmdir when the server returned . and .. in + the contents of a directory + * Fixed bug in POP3 that was sending unnecessary RSETs + +Enhancements + * Added support for POP3 CAPA command + * Added support for XVERP to Net::SMTP + * Added Net::POP3->banner method to return the banner received from + the server during connect + * Added Net::POP3->auth method for performing authentication using + SASL, requires Authen::SASL + * Added Host option to ->new constructor of FTP, NNTP, SMTP and POP3 + which can be used instead of passing the host as the first argument + * Added ->host method to FTP, NNTP, SMTP and POP3 to return the host + string used for the connect. This is useful to determine which host + was connected to when multiple hosts are specified + * Added support for more non-standard responses to Net::FTP->size + * Updated POD for Net::SMTP wrt. not passing a Hello parameter to the + constructor. (Jeff Macdonald) + +ChangeLogs for releases prior to 1.18 may be found at +http://svn.mutatus.co.uk/browse/libnet/tags/libnet-1.17/ChangeLog diff --git a/gnu/usr.bin/perl/lib/Net/t/datasend.t b/gnu/usr.bin/perl/lib/Net/t/datasend.t new file mode 100644 index 00000000000..07867093599 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Net/t/datasend.t @@ -0,0 +1,146 @@ +#!./perl -w + +BEGIN { + package Foo; + + use IO::File; + use Net::Cmd; + @ISA = qw(Net::Cmd IO::File); + + sub timeout { 0 } + + sub new { + my $fh = shift->new_tmpfile; + binmode($fh); + $fh; + } + + sub output { + my $self = shift; + seek($self,0,0); + local $/ = undef; + scalar(<$self>); + } + + sub response { + return Net::Cmd::CMD_OK; + } +} + +(my $libnet_t = __FILE__) =~ s/datasend.t/libnet_t.pl/; +require $libnet_t or die; + +print "1..51\n"; + +sub check { + my $expect = pop; + my $cmd = Foo->new; + ok($cmd->datasend, 'datasend') unless @_; + foreach my $line (@_) { + ok($cmd->datasend($line), 'datasend'); + } + ok($cmd->dataend, 'dataend'); + is( + unpack("H*",$cmd->output), + unpack("H*",$expect) + ); +} + +my $cmd; + +check( + # nothing + + ".\015\012" +); + +check( + "a", + + "a\015\012.\015\012", +); + +check( + "a\r", + + "a\015\015\012.\015\012", +); + +check( + "a\rb", + + "a\015b\015\012.\015\012", +); + +check( + "a\rb\n", + + "a\015b\015\012.\015\012", +); + +check( + "a\rb\n\n", + + "a\015b\015\012\015\012.\015\012", +); + +check( + "a\r", + "\nb", + + "a\015\012b\015\012.\015\012", +); + +check( + "a\r", + "\nb\n", + + "a\015\012b\015\012.\015\012", +); + +check( + "a\r", + "\nb\r\n", + + "a\015\012b\015\012.\015\012", +); + +check( + "a\r", + "\nb\r\n\n", + + "a\015\012b\015\012\015\012.\015\012", +); + +check( + "a\n.b\n", + + "a\015\012..b\015\012.\015\012", +); + +check( + ".a\n.b\n", + + "..a\015\012..b\015\012.\015\012", +); + +check( + ".a\n", + ".b\n", + + "..a\015\012..b\015\012.\015\012", +); + +check( + ".a", + ".b\n", + + "..a.b\015\012.\015\012", +); + +check( + "a\n.", + + "a\015\012..\015\012.\015\012", +); + diff --git a/gnu/usr.bin/perl/lib/Pod/Perldoc/t/01_about_verbose.t b/gnu/usr.bin/perl/lib/Pod/Perldoc/t/01_about_verbose.t new file mode 100644 index 00000000000..eb2f411fe9a --- /dev/null +++ b/gnu/usr.bin/perl/lib/Pod/Perldoc/t/01_about_verbose.t @@ -0,0 +1,87 @@ + +require 5; +# Time-stamp: "2004-04-09 18:02:36 ADT" + +# Summary of, well, things. + +use Test; +BEGIN {plan tests => 2}; + +ok 1; + +use Pod::Perldoc; + +#chdir "t" if -e "t"; + +{ + my @out; + push @out, + "\n\nPerl v", + defined($^V) ? sprintf('%vd', $^V) : $], + " under $^O ", + (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber()) + ? ("(Win32::BuildNumber ", &Win32::BuildNumber(), ")") : (), + (defined $MacPerl::Version) + ? ("(MacPerl version $MacPerl::Version)") : (), + "\n" + ; + + # Ugly code to walk the symbol tables: + my %v; + my @stack = (''); # start out in %:: + my $this; + my $count = 0; + my $pref; + while(@stack) { + $this = shift @stack; + die "Too many packages?" if ++$count > 1000; + next if exists $v{$this}; + next if $this eq 'main'; # %main:: is %:: + + #print "Peeking at $this => ${$this . '::VERSION'}\n"; + + if(defined ${$this . '::VERSION'} ) { + $v{$this} = ${$this . '::VERSION'} + } elsif( + defined *{$this . '::ISA'} or defined &{$this . '::import'} + or ($this ne '' and grep defined *{$_}{'CODE'}, values %{$this . "::"}) + # If it has an ISA, an import, or any subs... + ) { + # It's a class/module with no version. + $v{$this} = undef; + } else { + # It's probably an unpopulated package. + ## $v{$this} = '...'; + } + + $pref = length($this) ? "$this\::" : ''; + push @stack, map m/^(.+)::$/ ? "$pref$1" : (), keys %{$this . '::'}; + #print "Stack: @stack\n"; + } + push @out, " Modules in memory:\n"; + delete @v{'', '[none]'}; + foreach my $p (sort {lc($a) cmp lc($b)} keys %v) { + $indent = ' ' x (2 + ($p =~ tr/:/:/)); + push @out, ' ', $indent, $p, defined($v{$p}) ? " v$v{$p};\n" : ";\n"; + } + push @out, sprintf "[at %s (local) / %s (GMT)]\n", + scalar(gmtime), scalar(localtime); + my $x = join '', @out; + $x =~ s/^/#/mg; + print $x; +} + +print "# Running", + (chr(65) eq 'A') ? " in an ASCII world.\n" : " in a non-ASCII world.\n", + "#\n", +; + +print "# \@INC:\n", map("# [$_]\n", @INC), "#\n#\n"; + +print "# \%INC:\n"; +foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) { + print "# [$x] = [", $INC{$x} || '', "]\n"; +} + +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Pod/t/user.t b/gnu/usr.bin/perl/lib/Pod/t/user.t new file mode 100644 index 00000000000..04776de5ace --- /dev/null +++ b/gnu/usr.bin/perl/lib/Pod/t/user.t @@ -0,0 +1,104 @@ +#!perl + +# Purpose: test UserPreamble and UserPostamble +# It's a minor variation of 'pod2latex.t', +# subject to the same limitations. +# Variant provided by +# Adriano Rodrigues Ferreira + +use Test; +use strict; + +BEGIN { plan tests => 17 } + +use Pod::LaTeX; + +# The link parsing changed between v0.22 and v0.30 of Pod::ParseUtils +use Pod::ParseUtils; +my $linkver = $Pod::ParseUtils::VERSION; + +# Set up an END block to remove the test output file +END { + unlink "test.tex"; +}; + +ok(1); + +# First thing to do is to read the expected output from +# the DATA filehandle and store it in a scalar. +# Do this until we read an =pod +my @reference; +while (my $line = ) { + last if $line =~ /^=pod/; + push(@reference,$line); +} + +my $user_preamble = < $user_preamble, + UserPostamble => $user_postamble +); + +my $parser = Pod::LaTeX->new(%params); +ok($parser); + +# Create an output file +open(OUTFH, "> test.tex" ) or die "Unable to open test tex file: $!\n"; + +# Read from the DATA filehandle and write to a new output file +# Really want to write this to a scalar +$parser->parse_from_filehandle(\*DATA,\*OUTFH); + +close(OUTFH) or die "Error closing OUTFH test.tex: $!\n"; + +# Now read in OUTFH and compare +open(INFH, "< test.tex") or die "Unable to read test tex file: $!\n"; +my @output = ; + +ok(@output, @reference); + +for my $i (0..$#reference) { + next if $reference[$i] =~ /^%%/; # skip timestamp comments + ok($output[$i], $reference[$i]); +} + +close(INFH) or die "Error closing INFH test.tex: $!\n"; + + +__DATA__ + +\documentclass{article} + +\begin{document} + +%% Latex generated from POD in document (unknown) +%% Using the perl module Pod::LaTeX +%% Converted on Wed Jan 14 19:04:22 2004 + +%% Preamble supplied by user. + +\section{POD\label{POD}\index{POD}} + + +This is a POD file, very simple. \textit{Bye}. + +\end{document} + +=pod + +=head1 POD + +This is a POD file, very simple. I. + diff --git a/gnu/usr.bin/perl/lib/Test/t/05_about_verbose.t b/gnu/usr.bin/perl/lib/Test/t/05_about_verbose.t new file mode 100644 index 00000000000..70152e44c53 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Test/t/05_about_verbose.t @@ -0,0 +1,82 @@ +require 5; +# Time-stamp: "2004-04-24 16:53:03 ADT" + +# Summary of, well, things. + +use Test; +BEGIN {plan tests => 2}; + +ok 1; + +{ + my @out; + push @out, + "\n\nPerl v", + defined($^V) ? sprintf('%vd', $^V) : $], + " under $^O ", + (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber()) + ? ("(Win32::BuildNumber ", &Win32::BuildNumber(), ")") : (), + (defined $MacPerl::Version) + ? ("(MacPerl version $MacPerl::Version)") : (), + "\n" + ; + + # Ugly code to walk the symbol tables: + my %v; + my @stack = (''); # start out in %:: + my $this; + my $count = 0; + my $pref; + while(@stack) { + $this = shift @stack; + die "Too many packages?" if ++$count > 1000; + next if exists $v{$this}; + next if $this eq 'main'; # %main:: is %:: + + #print "Peeking at $this => ${$this . '::VERSION'}\n"; + + if(defined ${$this . '::VERSION'} ) { + $v{$this} = ${$this . '::VERSION'} + } elsif( + defined *{$this . '::ISA'} or defined &{$this . '::import'} + or ($this ne '' and grep defined *{$_}{'CODE'}, values %{$this . "::"}) + # If it has an ISA, an import, or any subs... + ) { + # It's a class/module with no version. + $v{$this} = undef; + } else { + # It's probably an unpopulated package. + ## $v{$this} = '...'; + } + + $pref = length($this) ? "$this\::" : ''; + push @stack, map m/^(.+)::$/ ? "$pref$1" : (), keys %{$this . '::'}; + #print "Stack: @stack\n"; + } + push @out, " Modules in memory:\n"; + delete @v{'', '[none]'}; + foreach my $p (sort {lc($a) cmp lc($b)} keys %v) { + $indent = ' ' x (2 + ($p =~ tr/:/:/)); + push @out, ' ', $indent, $p, defined($v{$p}) ? " v$v{$p};\n" : ";\n"; + } + push @out, sprintf "[at %s (local) / %s (GMT)]\n", + scalar(gmtime), scalar(localtime); + my $x = join '', @out; + $x =~ s/^/#/mg; + print $x; +} + +print "# Running", + (chr(65) eq 'A') ? " in an ASCII world.\n" : " in a non-ASCII world.\n", + "#\n", +; + +print "# \@INC:\n", map("# [$_]\n", @INC), "#\n#\n"; + +print "# \%INC:\n"; +foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) { + print "# [$x] = [", $INC{$x} || '', "]\n"; +} + +ok 1; + diff --git a/gnu/usr.bin/perl/lib/Test/t/multiline.t b/gnu/usr.bin/perl/lib/Test/t/multiline.t new file mode 100644 index 00000000000..f91ff290d33 --- /dev/null +++ b/gnu/usr.bin/perl/lib/Test/t/multiline.t @@ -0,0 +1,47 @@ +#!./perl -w + +BEGIN { open(STDERR, ">&STDOUT"); } + +use strict; +use Test; plan tests => 2, todo => [1,2]; # actually false failure + +# perl -Ilib -It/noinck t/multiline.t + +ok( +q{ +Jojo was a man who thought he was a loner +But he knew it couldn't last +Jojo left his home in Tucson, Arizona +For some California Grass +Get back, get back +Get back to where you once belonged +Get back, get back +Get back to where you once belonged +Get back Jojo Go home +Get back, get back +Back to where you once belonged +Get back, get back +Back to where you once belonged +Get back Jo +} +, +q{ +Sweet Loretta Martin thought she was a woman +But she was another man +All the girls around her say she's got it coming +But she gets it while she can +Get back, get back +Get back to where you once belonged +Get back, get back +Get back to where you once belonged +Get back Loretta Go home +Get back, get back +Get back to where you once belonged +Get back, get back +Get back to where you once belonged +Get home Loretta +}); + +ok "zik\nzak\n wazaaaaap\ncha ching!\n", "crunk\n\t zonk\nbjork\nchachacha!\n"; + + diff --git a/gnu/usr.bin/perl/lib/Unicode/UCD.pm b/gnu/usr.bin/perl/lib/Unicode/UCD.pm index baafd1a2579..dfdd2dcb519 100644 --- a/gnu/usr.bin/perl/lib/Unicode/UCD.pm +++ b/gnu/usr.bin/perl/lib/Unicode/UCD.pm @@ -3,7 +3,7 @@ package Unicode::UCD; use strict; use warnings; -our $VERSION = '0.21'; +our $VERSION = '0.22'; use Storable qw(dclone); @@ -125,6 +125,7 @@ you will need also the compexcl(), casefold(), and casespec() functions. =cut +# NB: This function is duplicated in charnames.pm sub _getcode { my $arg = shift; diff --git a/gnu/usr.bin/perl/lib/Unicode/UCD.t b/gnu/usr.bin/perl/lib/Unicode/UCD.t index 067172d1b54..c4046bcdcab 100644 --- a/gnu/usr.bin/perl/lib/Unicode/UCD.t +++ b/gnu/usr.bin/perl/lib/Unicode/UCD.t @@ -1,3 +1,4 @@ +#!perl -w BEGIN { if (ord("A") == 193) { print "1..0 # Skip: EBCDIC\n"; @@ -6,6 +7,11 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; @INC = "::lib" if $^O eq 'MacOS'; # module parses @INC itself + require Config; import Config; + if ($Config{'extensions'} !~ /\bStorable\b/) { + print "1..0 # Skip: Storable was not built; Unicode::UCD uses Storable\n"; + exit 0; + } } use strict; @@ -164,7 +170,7 @@ is($charinfo->{upper}, ''); is($charinfo->{lower}, ''); is($charinfo->{title}, ''); is($charinfo->{block}, 'Mathematical Alphanumeric Symbols'); -is($charinfo->{script}, undef); +is($charinfo->{script}, 'Common'); use Unicode::UCD qw(charblock charscript); @@ -191,7 +197,7 @@ is($charinfo->{upper}, ''); is($charinfo->{lower}, ''); is($charinfo->{title}, ''); is($charinfo->{block}, 'Latin-1 Supplement'); -is($charinfo->{script}, undef); +is($charinfo->{script}, 'Common'); use Unicode::UCD qw(charblocks charscripts); @@ -221,8 +227,8 @@ is($charscript, 'Ethiopic'); my $ranges; $ranges = charscript('Ogham'); -is($ranges->[0]->[0], hex('1681'), 'Ogham charscript'); -is($ranges->[0]->[1], hex('169a')); +is($ranges->[1]->[0], hex('1681'), 'Ogham charscript'); +is($ranges->[1]->[1], hex('169a')); use Unicode::UCD qw(charinrange); @@ -232,7 +238,7 @@ ok( charinrange($ranges, "13a0")); ok( charinrange($ranges, "13f4")); ok(!charinrange($ranges, "13f5")); -is(Unicode::UCD::UnicodeVersion, '4.0.0', 'UnicodeVersion'); +is(Unicode::UCD::UnicodeVersion, '4.0.1', 'UnicodeVersion'); use Unicode::UCD qw(compexcl); @@ -269,12 +275,12 @@ ok($casespec->{code} eq '00DF' && $casespec->{lower} eq '00DF' && $casespec->{title} eq '0053 0073' && $casespec->{upper} eq '0053 0053' && - $casespec->{condition} eq undef, 'casespec 0xDF'); + !defined $casespec->{condition}, 'casespec 0xDF'); $casespec = casespec(0x307); ok($casespec->{az}->{code} eq '0307' && - $casespec->{az}->{lower} eq '' && + !defined $casespec->{az}->{lower} && $casespec->{az}->{title} eq '0307' && $casespec->{az}->{upper} eq '0307' && $casespec->{az}->{condition} eq 'az After_I', @@ -282,7 +288,7 @@ ok($casespec->{az}->{code} eq '0307' && # perl #7305 UnicodeCD::compexcl is weird -for (1) {$a=compexcl $_} +for (1) {my $a=compexcl $_} ok(1, 'compexcl read-only $_: perl #7305'); grep {compexcl $_} %{{1=>2}}; ok(1, 'compexcl read-only hash: perl #7305'); @@ -311,4 +317,4 @@ is(Unicode::UCD::_getcode('U+123x'), undef, "_getcode(x123)"); { is(charinfo(0xdeadbeef), undef, "[perl #23273] warnings in Unicode::UCD"); -} \ No newline at end of file +} diff --git a/gnu/usr.bin/perl/lib/charnames.pm b/gnu/usr.bin/perl/lib/charnames.pm index 3457b8b66b2..f895d379673 100644 --- a/gnu/usr.bin/perl/lib/charnames.pm +++ b/gnu/usr.bin/perl/lib/charnames.pm @@ -3,7 +3,7 @@ use strict; use warnings; use Carp; use File::Spec; -our $VERSION = '1.02'; +our $VERSION = '1.04'; use bytes (); # for $bytes::hint_bits $charnames::hint_bits = 0x20000; # HINT_LOCALIZE_HH @@ -190,8 +190,8 @@ sub import ## fill %h keys with our @_ args. ## my ($promote, %h, @args) = (0); - while (@_ and $_ = shift) { - if ($_ eq ":alias") { + while (my $arg = shift) { + if ($arg eq ":alias") { @_ or croak ":alias needs an argument in charnames"; my $alias = shift; @@ -210,11 +210,11 @@ sub import alias_file ($alias); next; } - if (m/^:/ and ! ($_ eq ":full" || $_ eq ":short")) { - warn "unsupported special '$_' in charnames"; + if (substr($arg, 0, 1) eq ':' and ! ($arg eq ":full" || $arg eq ":short")) { + warn "unsupported special '$arg' in charnames"; next; } - push @args, $_; + push @args, $arg; } @args == 0 && $promote and @args = (":full"); @h{@args} = (1) x @args; @@ -238,7 +238,19 @@ sub import } } # import -require Unicode::UCD; # for Unicode::UCD::_getcode() +# this comes actually from Unicode::UCD, but it avoids the +# overhead of loading it +sub _getcode { + my $arg = shift; + + if ($arg =~ /^[1-9]\d*$/) { + return $arg; + } elsif ($arg =~ /^(?:[Uu]\+|0[xX])?([[:xdigit:]]+)$/) { + return hex($1); + } + + return; +} my %viacode; @@ -250,7 +262,7 @@ sub viacode } my $arg = shift; - my $code = Unicode::UCD::_getcode($arg); + my $code = _getcode($arg); my $hex; diff --git a/gnu/usr.bin/perl/lib/charnames.t b/gnu/usr.bin/perl/lib/charnames.t index 34fe56d3dd6..02d685c5299 100644 --- a/gnu/usr.bin/perl/lib/charnames.t +++ b/gnu/usr.bin/perl/lib/charnames.t @@ -15,7 +15,7 @@ require File::Spec; $| = 1; -print "1..73\n"; +print "1..74\n"; use charnames ':full'; @@ -328,6 +328,12 @@ for (@prgs) { 1 while unlink $alifile; } +# [perl #30409] charnames.pm clobbers default variable +$_ = 'foobar'; +eval "use charnames ':full';"; +print "not " unless $_ eq 'foobar'; +print "ok 74\n"; + __END__ # unsupported pragma use charnames ":scoobydoo"; diff --git a/gnu/usr.bin/perl/lib/dbm_filter_util.pl b/gnu/usr.bin/perl/lib/dbm_filter_util.pl new file mode 100644 index 00000000000..2f8af209e22 --- /dev/null +++ b/gnu/usr.bin/perl/lib/dbm_filter_util.pl @@ -0,0 +1,68 @@ +use strict; +use warnings; + +sub StoreData +{ + my $hashref = shift ; + my $store = shift ; + + my (undef, $file, $line) = caller; + ok 1, "StoreData called from $file, line $line"; + + ok ref $store eq 'HASH', "Store Data is a hash reference"; + ok tied %$hashref, "Storing to tied hash"; + + while (my ($k, $v) = each %$store) { + no warnings 'uninitialized'; + #diag "Stored [$k][$v]"; + $$hashref{$k} = $v ; + } + +} + +sub VerifyData +{ + my $hashref = shift ; + my $expected = shift ; + my %expected = %$expected; + + my (undef, $file, $line) = caller; + ok 1, "VerifyData called from $file, line $line"; + + ok ref $expected eq 'HASH', "Expected data is a hash reference"; + ok tied %$hashref, "Verifying a tied hash"; + + my %bad = (); + while (my ($k, $v) = each %$hashref) { + no warnings 'uninitialized'; + if ($expected{$k} eq $v) { + #diag "Match [$k][$v]"; + delete $expected{$k} ; + } + else { + #diag "No Match [$k][$v]"; + $bad{$k} = $v; + } + } + + if( ! ok(keys(%bad) + keys(%expected) == 0, "Expected == Actual") ) { + my $bad = "Expected does not match actual\n"; + if (keys %expected ) { + $bad .=" No Match from Expected:\n" ; + while (my ($k, $v) = each %expected) { + $bad .= "\t'$k' =>\t'$v'\n"; + } + } + if (keys %bad ) { + $bad .= "\n No Match from Actual:\n" ; + while (my ($k, $v) = each %bad) { + no warnings 'uninitialized'; + $bad .= "\t'$k' =>\t'$v'\n"; + } + } + diag "${bad}\n" ; + } +} + + +1; diff --git a/gnu/usr.bin/perl/lib/dumpvar.t b/gnu/usr.bin/perl/lib/dumpvar.t index f13bcee9aca..843ba1c0563 100644 --- a/gnu/usr.bin/perl/lib/dumpvar.t +++ b/gnu/usr.bin/perl/lib/dumpvar.t @@ -3,6 +3,11 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require Config; + if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){ + print "1..0 # Skip -- Perl configured without List::Util module\n"; + exit 0; + } } use strict; diff --git a/gnu/usr.bin/perl/lib/h2xs.t b/gnu/usr.bin/perl/lib/h2xs.t index 2a5e14b66d5..e6c75c091d6 100644 --- a/gnu/usr.bin/perl/lib/h2xs.t +++ b/gnu/usr.bin/perl/lib/h2xs.t @@ -12,6 +12,12 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + # FIXME (or rather FIXh2xs) + require Config; + if (($Config::Config{'extensions'} !~ m!\bDevel/PPPort\b!) ){ + print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; + exit 0; + } } # use strict; # we are not really testing this @@ -117,7 +123,7 @@ Writing $name/Changes Writing $name/MANIFEST EONOXSFILES -"-f -n $name $header -b $thisversion", $], <<"EOXSFILES", +"-f -n $name -b $thisversion $header", $], <<"EOXSFILES", Writing $name/ppport.h Writing $name/lib/$name.pm Writing $name/$name.xs diff --git a/gnu/usr.bin/perl/lib/locale.t b/gnu/usr.bin/perl/lib/locale.t index a294d2fbc2b..037e2710e6b 100644 --- a/gnu/usr.bin/perl/lib/locale.t +++ b/gnu/usr.bin/perl/lib/locale.t @@ -382,6 +382,10 @@ delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; if (-x "/usr/bin/locale" && open(LOCALES, "/usr/bin/locale -a 2>/dev/null|")) { while () { + # It seems that /usr/bin/locale steadfastly outputs 8 bit data, which + # ain't great when we're running this testPERL_UNICODE= so that utf8 + # locales will cause all IO hadles to default to (assume) utf8 + next unless utf8::valid($_); chomp; trylocale($_); } diff --git a/gnu/usr.bin/perl/lib/open.pm b/gnu/usr.bin/perl/lib/open.pm index fa2a5181b2f..32c5118be9d 100644 --- a/gnu/usr.bin/perl/lib/open.pm +++ b/gnu/usr.bin/perl/lib/open.pm @@ -3,7 +3,7 @@ use warnings; use Carp; $open::hint_bits = 0x20000; # HINT_LOCALIZE_HH -our $VERSION = '1.02'; +our $VERSION = '1.03'; my $locale_encoding; @@ -41,7 +41,7 @@ sub _get_locale_encoding { # would be excellent!) --jhi } if (defined $locale_encoding && - $locale_encoding eq 'euc' && + lc($locale_encoding) eq 'euc' && defined $country_language) { if ($country_language =~ /^ja_JP|japan(?:ese)?$/i) { $locale_encoding = 'euc-jp'; @@ -51,9 +51,9 @@ sub _get_locale_encoding { $locale_encoding = 'euc-cn'; } elsif ($country_language =~ /^zh_TW|taiwan(?:ese)?$/i) { $locale_encoding = 'euc-tw'; + } else { + croak "Locale encoding 'euc' too ambiguous"; } - croak "Locale encoding 'euc' too ambiguous" - if $locale_encoding eq 'euc'; } } } diff --git a/gnu/usr.bin/perl/lib/overload.t b/gnu/usr.bin/perl/lib/overload.t index 3490b5bf6a4..f743a822116 100644 --- a/gnu/usr.bin/perl/lib/overload.t +++ b/gnu/usr.bin/perl/lib/overload.t @@ -3,6 +3,11 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require Config; + if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){ + print "1..0 # Skip -- Perl configured without List::Util module\n"; + exit 0; + } } package Oscalar; diff --git a/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt b/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt index df1f1933a39..84c308ac8a2 100644 --- a/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt +++ b/gnu/usr.bin/perl/lib/unicore/ArabicShaping.txt @@ -1,4 +1,4 @@ -# ArabicShaping-4.0.0.txt +# ArabicShaping-4.0.1.txt # # This file is a normative contributory data file in the # Unicode Character Database. @@ -192,10 +192,10 @@ 06DD; ARABIC END OF AYAH; U; 06EE; DAL WITH INVERTED V; R; DAL 06EF; REH WITH INVERTED V; R; REH -06FF; HEH WITH INVERTED V; D; KNOTTED HEH 06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN 06FB; DAD WITH DOT BELOW; D; SAD 06FC; GHAIN WITH DOT BELOW; D; AIN +06FF; HEH WITH INVERTED V; D; KNOTTED HEH # Syriac characters diff --git a/gnu/usr.bin/perl/lib/unicore/Blocks.txt b/gnu/usr.bin/perl/lib/unicore/Blocks.txt index 6dc2bd2fe09..aeed970ac5f 100644 --- a/gnu/usr.bin/perl/lib/unicore/Blocks.txt +++ b/gnu/usr.bin/perl/lib/unicore/Blocks.txt @@ -1,11 +1,25 @@ -# Blocks-4.0.0.txt -# Correlated with Unicode 4.0 -# Note: The casing of block names is not normative. -# For example, "Basic Latin" and "BASIC LATIN" are equivalent. +# Blocks-4.0.1.txt +# Date: 2004-03-01, 15:52 [KW] # -# Code points not explicitly listed in this file are given the value No_Block. +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html +# +# Note: When comparing block names, casing, whitespace, hyphens, +# and underbars are ignored. +# For example, "Latin Extended-A" and "latin extended a" are equivalent. +# For more information on the comparison of property values, +# see UCD.html. # +# Code points not explicitly listed in this file are given the value No_Block. +# Format: # Start Code..End Code; Block Name + +# ================================================ + +# Property: Block + 0000..007F; Basic Latin 0080..00FF; Latin-1 Supplement 0100..017F; Latin Extended-A @@ -15,7 +29,7 @@ 0300..036F; Combining Diacritical Marks 0370..03FF; Greek and Coptic 0400..04FF; Cyrillic -0500..052F; Cyrillic Supplementary +0500..052F; Cyrillic Supplement 0530..058F; Armenian 0590..05FF; Hebrew 0600..06FF; Arabic diff --git a/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt b/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt index 8d9b44ac772..65f78ffdeec 100644 --- a/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt +++ b/gnu/usr.bin/perl/lib/unicore/CaseFolding.txt @@ -1,6 +1,10 @@ -# CaseFolding-4.0.0.txt -# Date: 2003-03-14, 20:22:08 GMT [MD] +# CaseFolding-4.0.1.txt +# Date: 2004-03-02, 02:41:24 GMT [MD] # +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html # Case Folding Properties # # This file is a supplement to the UnicodeData file. diff --git a/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt b/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt index dfbf78767a2..d906fb1ac7b 100644 --- a/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt +++ b/gnu/usr.bin/perl/lib/unicore/HangulSyllableType.txt @@ -1,19 +1,22 @@ -# HangulSyllableType-4.0.0.txt -# Date: 2003-03-20, 20:08:09 GMT [MD] +# HangulSyllableType-4.0.1.txt +# Date: 2004-03-02, 02:42:32 GMT [MD] # -# Unicode Character Database: Extended Properties +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see UCD.html -# Note: Unassigned and Noncharacter codepoints may be omitted -# if they have default property values. + # ================================================ +# Property: Hangul_Syllable_Type + +# All code points not explicitly listed for Hangul_Syllable_Type +# have the value Not_Applicable (NA). -# ================================================ -# Hangul Syllable Type -# All code points not explicitly listed in this file have the property -# value: NA. # ================================================ +# Hangul_Syllable_Type=Leading_Jamo + 1100..1159 ; L # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH 115F ; L # Lo HANGUL CHOSEONG FILLER @@ -21,18 +24,24 @@ # ================================================ +# Hangul_Syllable_Type=Vowel_Jamo + 1160..11A2 ; V # Lo [67] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA # Total code points: 67 # ================================================ +# Hangul_Syllable_Type=Trailing_Jamo + 11A8..11F9 ; T # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH # Total code points: 82 # ================================================ +# Hangul_Syllable_Type=LV_Syllable + AC00 ; LV # Lo HANGUL SYLLABLE GA AC1C ; LV # Lo HANGUL SYLLABLE GAE AC38 ; LV # Lo HANGUL SYLLABLE GYA @@ -437,6 +446,8 @@ D788 ; LV # Lo HANGUL SYLLABLE HI # ================================================ +# Hangul_Syllable_Type=LVT_Syllable + AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH @@ -838,4 +849,3 @@ D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH # Total code points: 10773 - diff --git a/gnu/usr.bin/perl/lib/unicore/Index.txt b/gnu/usr.bin/perl/lib/unicore/Index.txt index 9adb1605972..c55a1f8bca4 100644 --- a/gnu/usr.bin/perl/lib/unicore/Index.txt +++ b/gnu/usr.bin/perl/lib/unicore/Index.txt @@ -8,6 +8,7 @@ A, COMBINING LATIN SMALL LETTER 0363 a, latin small letter script 0251 A, LATIN SMALL LETTER TURNED 0250 ABBREVIATION MARK, ARMENIAN 055F +ABBREVIATION MARK, SYRIAC 070F ABBREVIATION SIGN, DEVANAGARI 0970 Abbreviations, Squared Latin 3371 Aboriginal Syllabics, Unified Canadian 1400 @@ -84,6 +85,10 @@ ACUTE TONE MARK, COMBINING 0341 ADDRESSED TO THE SUBJECT 2101 Addu dialect, consonant for 0780 AE, LATIN SMALL LETTER 00E6 +Aegean Numbers 10100 +AEGEAN CHECK MARK 10102 +AEGEAN WORD SEPARATOR DOT 10101 +AEGEAN WORD SEPARATOR LINE 10100 Ainu, Phonetic Extensions For 31F0 AIRPLANE 2708 aldus leaf 2766 @@ -131,6 +136,8 @@ ANGLE BELOW, COMBINING LEFT 0349 ANGLE BRACKET, LEFT 3008 ANGLE BRACKET, LEFT DOUBLE 300A ANGLE BRACKET, LEFT-POINTING 2329 +ANGLE BRACKET, MATHEMATICAL LEFT 27E8 +ANGLE BRACKET, MATHEMATICAL LEFT DOUBLE 27EA ANGLE BRACKET, RIGHT-POINTING 232A ANGLE OPENING LEFT, SPHERICAL 29A0 ANGLE OPENING UP, SPHERICAL 29A1 @@ -142,13 +149,14 @@ Angle Quotation Marks, Ornamental 276E ANGLE WITH ARC, RIGHT 22BE ANGLE WITH DOWNWARDS ZIGZAG ARROW, RIGHT 237C angled dash 00AC -Angles And Measured Angles 299B +Angles and Measured Angles 299B ANGSTROM SIGN 212B ANKH 2625 Annotation, Interlinear FFF9 Annotation, Kanbun Ideographic 3190 Annotation Signs, Koranic 06D6 ANNUITY SYMBOL, COMBINING 20E7 +ano teleia 00B7 ANTICLOCKWISE INTEGRATION 2A11 ANTICLOCKWISE-ROTATED DIVISION SIGN, CIRCLED 29BC ANTIRESTRICTION, Z NOTATION DOMAIN 2A64 @@ -183,19 +191,27 @@ Arabic 0600 Arabic, Extended 0671 ARABIC COMMA 060C ARABIC DECIMAL SEPARATOR 066B +ARABIC END OF AYAH 06DD ARABIC FIVE POINTED STAR 066D +ARABIC FOOTNOTE MARKER 0602 ARABIC FORM SHAPING, ACTIVATE 206D ARABIC FORM SHAPING, INHIBIT 206C ARABIC FULL STOP 06D4 +Arabic Honorifics 0610 ARABIC LETTER DOTLESS BEH 066E ARABIC LETTER DOTLESS QAF 066F Arabic Letters 0627 +ARABIC NUMBER SIGN 0600 ARABIC PERCENT SIGN 066A Arabic Points 064B Arabic Presentation Forms-A FB50 Arabic Presentation Forms-B FE70 ARABIC QUESTION MARK 061F ARABIC SEMICOLON 061B +ARABIC SIGN SAFHA 0603 +ARABIC SIGN SANAH 0601 +Arabic Poetic Marks 0610 +Arabic Subtending Marks 0600 ARABIC TAIL FRAGMENT FE73 ARABIC THOUSANDS SEPARATOR 066C Arabic-Indic Digits 0660 @@ -242,6 +258,7 @@ ARROWHEAD, UP 2303 Arrowheads, Modifier Letter 02C2 Arrows 2190 Arrows, Long 27F5 +Arrows, Other White and Black 2B00 arrows extension 23AF Arrows-A, Supplemental 27F0 Arrows-B, Supplemental 2900 @@ -267,6 +284,7 @@ asymptotic to 2248 ASYMPTOTICALLY EQUAL TO 2243 AT, COMMERCIAL 0040 AVERAGE WITH SLASH, INTEGRAL 2A0F +AYAH, ARABIC END OF 06DD B, LATIN LETTER SMALL CAPITAL 0299 B, SCRIPT CAPITAL 212C baby gamma, latin small letter 0264 @@ -275,6 +293,7 @@ BACKSLASH, COMBINING ENCLOSING CIRCLE 20E0 backspace 0008 BACKSPACE, SYMBOL FOR 2408 backward difference 2207 +bag bracket, z notation left 27E6 BAG MEMBERSHIP, Z NOTATION 22FF bag subtraction, z notation 2A41 BAHT, THAI CURRENCY SYMBOL 0E3F @@ -352,13 +371,15 @@ BENGALI RUPEE SIGN 09F3 BENZENE RING 232C bernoulli function 212C BET SYMBOL 2136 -Betty BOOP +Betty BOOP 263A BETWEEN 226C +BEVERAGE, HOT 2615 BIDENTAL PERCUSSIVE, LATIN LETTER 02AD Bidirectional Formatting Controls 202A Big 5, Duplicates from FA0C BIG REVERSE SOLIDUS 29F9 BIG SOLIDUS 29F8 +bijection, z notation 2917 bijective mapping 2916 BILABIAL CLICK, LATIN LETTER 0298 BILABIAL PERCUSSIVE, LATIN LETTER 02AC @@ -377,6 +398,7 @@ BLACK CIRCLE WITH TWO WHITE DOTS 2689 BLACK CIRCLE WITH WHITE DOT RIGHT 2688 Black Circled Numbers, White On 24EB BLACK DIAMOND WITH DOWN ARROW 29EA +BLACK FLAG 2691 BLACK HOURGLASS 29D7 BLACK LEFT POINTING INDEX 261A BLACK LEFTWARDS BULLET 204C @@ -424,6 +446,7 @@ BOX WITH X, BALLOT 2612 bra 27E6 brace, closing 007D brace, opening 007B +bracket, z notation left bag 27E6 bracket, closing curly 007D bracket, closing square 005D BRACKET, LEFT ANGLE 3008 @@ -446,7 +469,11 @@ Bracket Pieces 239B Bracket Pieces 23B0 BRACKET WITH QUILL, LEFT SQUARE 2045 Brackets 2983 -Brackets, CJK Punctuation 3008 +Brackets, CJK Angle 3008 +Brackets, Corner 2308 +Brackets, CJK Corner 300C +Brackets, CJK 3010 +Brackets, CJK 3014 Brackets, Fullwidth FF5F Brackets, Mathematical 27E6 Brackets, Ornamental 2768 @@ -537,6 +564,7 @@ CENTRE LINE SYMBOL 2104 CENTRED LEFT HALF RING, MODIFIER LETTER 02D3 CENTRELINE LOW LINE FE4E CENTRELINE OVERLINE FE4A +cgj 034F character introducer, single 009A character tabulation set 0088 character tabulation with justification 0089 @@ -544,6 +572,7 @@ CHARACTER TIE 2040 Chart Components, Form and 2500 CHECK, BALLOT BOX WITH 2611 CHECK MARK 2713 +CHECK MARK, AEGEAN 10102 CHECK MARK, HEAVY 2714 CHECK MARK, NOT 237B Cherokee 13A0 @@ -667,6 +696,7 @@ closing square bracket 005D CLOUD 2601 cloudy weather 2601 Codes, Process Internal FDD0 +coffee 2615 COLON 003A COLON, ETHIOPIC 1365 COLON, MODIFIER LETTER HALF TRIANGULAR 02D1 @@ -839,6 +869,7 @@ COMPOSITION, Z NOTATION RELATIONAL 2A3E COMPOSITION, Z NOTATION SCHEMA 2A1F composition circle, jis 20DD COMPOSITION SYMBOL 2384 +concatenation, z notation sequence 2040 CONCAVE-SIDED DIAMOND, WHITE 27E1 CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK, WHITE 27E2 CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK, WHITE 27E3 @@ -888,8 +919,11 @@ COPYRIGHT SIGN 00A9 CORNER, TOP LEFT 231C CORNER BRACKET, LEFT 300C CORNER BRACKET, LEFT WHITE 300E +Corner brackets 2308 +Corner brackets, CJK 300C CORNER WITH DOT, LOWER RIGHT 27D3 CORNER WITH DOT, UPPER LEFT 27D4 +corners, Quine 231C CORPORATION, SQUARE 337F CORRESPONDS TO 2258 corresponds to 2259 @@ -956,6 +990,7 @@ current, alternating 223F CURRENT SYMBOL FORM TWO, DIRECT 2393 cycle 223C CYLINDRICITY 232D +Cypriot Syllabary 10800 Cyrillic 0400 Cyrillic, Extended 048C Cyrillic Capital Letters 0401 @@ -984,7 +1019,7 @@ DASH, EN 2013 DASH, FIGURE 2012 dash, long 2015 dash, quotation 2015 -dash, swung 007E +DASH, SWUNG 2053 DASH, WAVE 301C DASH, WAVY 3030 DASHED LOW LINE FE4D @@ -996,10 +1031,12 @@ DATA LINK ESCAPE, SYMBOL FOR 2410 Database Theory Operators 27D5 DAVID, STAR OF 2721 Days, Telegraph Symbols for 33E0 +DAY SIGN, TAMIL 0BF3 decimal point 002E decimal separator 002C DECIMAL SEPARATOR, ARABIC 066B DECIMAL SEPARATOR KEY SYMBOL 2396 +deergh viram 0965 definition, equal to by 225C DEFINITION, EQUAL TO BY 225D DEGREE CELSIUS 2103 @@ -1101,6 +1138,7 @@ Digits, Malayalam 0D66 Digits, Mongolian 1810 Digits, Myanmar 1040 Digits, Oriya 0B66 +Digits, Osmanya 104A0 Digits, Subscript 2080 Digits, Superscript 2070 Digits, Tamil 0BE7 @@ -1113,6 +1151,8 @@ DIGRAPH YORI, HIRAGANA 309F Digraphs, Phonetic 02A3 Digraphs, Yiddish 05F0 Digraphs Matching Serbian Cyrillic Letters, Croatian 01C4 +Digram Symbols, Yijing Monogram and 268A +Digram Symbols, Tai Xuan Jing 1D301 dijkstra choice 2AFE dijkstra choice, n-ary 2AFF DIMENSION ORIGIN 2331 @@ -1150,10 +1190,11 @@ DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR, CIRCLE 29BA DIVIDED BY HORIZONTAL RULE, LOZENGE 27E0 DIVIDED BY VERTICAL BAR, CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF 29BA DIVIDES 2223 +Divination Lore, Khmer Symbols for 17F0 DIVISION SIGN 00F7 DIVISION SIGN, CIRCLED 2A38 DIVISION SIGN, CIRCLED ANTICLOCKWISE-ROTATED 29BC -Division Sign Operators, Multiplication And 2A2F +Division Sign Operators, Multiplication and 2A2F DIVISION SLASH 2215 DIVISION SLASH, CIRCLED 2298 DIVISION TIMES 22C7 @@ -1163,6 +1204,7 @@ DOLLAR SIGN 0024 DOMAIN ANTIRESTRICTION, Z NOTATION 2A64 DONG SIGN 20AB dot 002E +DOT, AEGEAN LINE SEPARATOR 10101 dot, greek middle 00B7 DOT, KATAKANA MIDDLE 30FB DOT, MIDDLE 00B7 @@ -1292,6 +1334,7 @@ DOWN TACK BELOW, COMBINING 031E DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK 29E8 DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK 29E9 DRACHMA SIGN 20AF +Drafting Symbols 232D dram 0292 drop 264F Duplicates from Big 5 FA0C @@ -1314,6 +1357,7 @@ ecu 20A0 EIGHTH NOTE 266A EIGHTH NOTES, BEAMED 266B Eighths, Fractions 215B +EJECT SYMBOL 23CF EK ONKAR, GURMUKHI 0A74 el salvadorian currency 20A1 ELECTRIC ARROW 2301 @@ -1334,6 +1378,7 @@ ELEMENT OF WITH TWO HORIZONTAL STROKES 22F9 ELEMENT OF WITH UNDERBAR 22F8 ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F3 ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE, SMALL 22F4 +ell, mathematical symbol 2113 ELLIPSIS, HORIZONTAL 2026 ELLIPSIS, MIDLINE HORIZONTAL 22EF ELLIPSIS, UP RIGHT DIAGONAL 22F0 @@ -1551,6 +1596,7 @@ Extended-B, Latin 0180 extension, arrows 23AF EXTENSION, HORIZONTAL LINE 23AF EXTENSION, INTEGRAL 23AE +EXTENSION, VERTICAL LINE 23D0 Extension A, CJK Unified Ideographs 3400 Extensions, Cyrillic 0450 Extensions, IPA 0250 @@ -1568,6 +1614,7 @@ FACE, BLACK SMILING 263B FACE, POSTAL MARK 3020 FACE, WHITE FROWNING 2639 FACE, WHITE SMILING 263A +FACSIMILE SIGN 213B factorial 0021 FAHRENHEIT, DEGREE 2109 FALLING DIAGONAL SLASH, SQUARED 29C5 @@ -1602,12 +1649,14 @@ FISHEYE 25C9 fist 261E FIVE, LATIN SMALL LETTER TONE 01BD FIVE POINTED STAR, ARABIC 066D +FLAG, BLACK 2691 FLAT SIGN, MUSIC 266D FLOOR, LEFT 230A FLORAL HEART BULLET, REVERSED ROTATED 2619 florin currency symbol 0192 folder 0192 FOOT, SQUARE 23CD +FOONOTE MARKER, ARABIC 0602 FOR ALL 2200 FORCES 22A9 FORKING 2ADC @@ -1662,6 +1711,7 @@ function, z notation finite 21FB function, z notation partial 21F8 FUNCTION APPLICATION 2061 function symbol 0192 +fvs 180B G, LATIN LETTER SMALL CAPITAL 0262 G, LATIN SMALL LETTER SCRIPT 0261 G, SCRIPT SMALL 210A @@ -1778,6 +1828,7 @@ group separator 001D GROUP SEPARATOR, SYMBOL FOR 241D guarded area, end of 0097 guarded area, start of 0096 +gui icons 231A guillemet, left pointing 00AB guillemet, left pointing single 2039 guillemet, right pointing 00BB @@ -1785,6 +1836,7 @@ guillemet, right pointing single 203A Gujarati 0A80 Gujarati Digits 0AE6 Gujarati Letters 0A85 +GUJARATI RUPEE SIGN 0AF1 Gurmukhi 0A00 Gurmukhi Digits 0A66 Gurmukhi Letters 0A05 @@ -1842,6 +1894,7 @@ Hanunoo 1720 HANUNOO SIGN PAMUDPOD 1734 Hanunóo-specific punctuation 1734 HARPOON ABOVE, COMBINING LEFT 20D0 +hasant 09CD hash 0023 hat 0302 hat 2229 @@ -1861,8 +1914,10 @@ Hebrew Points 05B0 Hebrew Presentation Forms FB1D HELM SYMBOL 2388 HERMITIAN CONJUGATE MATRIX 22B9 +Hexagram Symbols, Yijing 4DC0 hiding, z notation schema 29F9 High Surrogates D800 +HIGH VOLTAGE SIGN 26A1 HIGH-REVERSED-9 QUOTATION MARK, DOUBLE 201F HIGH-REVERSED-9 QUOTATION MARK, SINGLE 201B higher rank than 227B @@ -1876,6 +1931,7 @@ home 21B8 home 21F1 HOMOTHETIC 223B HOMOTHETIC ABOVE, COMBINING 034B +Honorific Signs, Arabic 0610 HOOK, MODIFIER LETTER RHOTIC 02DE hook, nasal 0328 HOOK ABOVE, COMBINING 0309 @@ -1893,6 +1949,7 @@ horizontal tabulation 0009 HORIZONTAL TABULATION, SYMBOL FOR 2409 HORN, COMBINING 031B HORN, LATIN SMALL LETTER RAMS 0264 +HOT BEVERAGE 2615 HOT SPRINGS 2668 HOURGLASS 231B HOURGLASS, BLACK 29D7 @@ -1922,6 +1979,7 @@ I, SCRIPT CAPITAL 2110 I, SUPERSCRIPT LATIN SMALL LETTER 2071 I WITH DOT ABOVE, LATIN CAPITAL LETTER 0130 IBM CJK Compatibility Ideographs FA0E +icons, gui 231A identical and parallel to 2A68 IDENTICAL TO 2261 IDENTICAL TO AND SLANTED PARALLEL 29E5 @@ -1991,7 +2049,7 @@ INTEGRAL, SURFACE 222F INTEGRAL, TOP HALF 2320 INTEGRAL, TRIPLE 222D INTEGRAL, VOLUME 2230 -Integrals, Summations And 2A0A +Integrals, Summations and 2A0A INTERCALATE 22BA INTERIOR PRODUCT 2A3C INTERIOR PRODUCT, RIGHTHAND 2A3D @@ -2008,7 +2066,7 @@ intersection, proper 22D4 INTERSECTION, TRANSVERSAL 2ADB INTERSECTION OPERATOR, N-ARY SQUARE 2A05 INTERSECTION WITH DOT 2A40 -Intersections And Unions 2A40 +Intersections and Unions 2A40 introducer, control sequence 009B introducer, single character 009A Inverse Numbers, Circled 2776 @@ -2024,6 +2082,7 @@ INVERTED OHM SIGN 2127 INVERTED QUESTION MARK 00BF INVERTED R, LATIN LETTER SMALL CAPITAL 0281 INVERTED R, MODIFIER LETTER SMALL CAPITAL 02B6 +INVERTED UNDERTIE 2054 Invisible Operators 2063 IOTA, LATIN CAPITAL LETTER 0196 IOTA, LATIN SMALL LETTER 0269 @@ -2113,11 +2172,16 @@ KEY, OPTION 2325 KEY SYMBOL, ALTERNATIVE 2387 KEY SYMBOL, DECIMAL SEPARATOR 2396 KEYBOARD 2328 +Keyboard Symbols 2324 Keyboard Symbols from ISO 9995-7 2380 Keyboard Symbols from ISO 9995-7 2396 +Keyboard and UI Symbols 23CE KEYCAP, COMBINING ENCLOSING 20E3 Khmer 1780 Khmer Digits 17E0 +Khmer Lunar Date Symbols 19E0 +Khmer Symbols 19E0 +Khmer Symbols for Divination Lore 17F0 KIP SIGN 20AD kome, japanese 203B Komi Letters, Cyrillic 0500 @@ -2241,15 +2305,21 @@ level 3 lock 21EF level 3 select 21EE LEZH, LATIN SMALL LETTER 026E lf 000A +LIABILITY SIGN, LIMITED 32CF LIBRA 264E ligature ae, latin small 00E6 LIGATURE IJ, LATIN SMALL 0133 LIGATURE LEFT HALF, COMBINING FE20 LIGATURE OE, LATIN SMALL 0153 +ligature tie 0361 Ligatures, Armenian FB13 Ligatures, Latin FB00 LIGHTNING 2607 LIMIT, APPROACHES THE 2250 +Limbu 1900 +Limbu Digits 1946 +LIMITED LIABILITY SIGN 32CF +LINE, AEGEAN WORD SEPARATOR 10100 line, beginning of 2310 LINE, CENTRELINE LOW FE4E LINE, COMBINING DOUBLE LOW 0333 @@ -2282,7 +2352,10 @@ LINE SYMBOL, CENTRE 2104 line tabulation set 008A line up, partial 008C LINE WITH MIDDLE DOT, VERTICAL 237F +Linear B Ideograms 10080 +Linear B Syllabary 10000 Lines For Terminal Graphics, Scan 23BA +Lira, Italian 00A3 LIRA SIGN 20A4 liter 2113 Livonian, Additions for 022A @@ -2299,7 +2372,7 @@ LOGICAL AND, CURLY 22CF LOGICAL AND, INTERSECTION WITH 2A44 LOGICAL AND, N-ARY 22C0 LOGICAL AND OPERATOR, TWO 2A07 -Logical Ands And Ors 2A51 +Logical Ands and Ors 2A51 LOGICAL OR 2228 LOGICAL OR, CURLY 22CE LOGICAL OR, N-ARY 22C1 @@ -2364,6 +2437,7 @@ Malayalam Letters 0D05 MALE SIGN 2642 MALTESE CROSS 2720 Manchu Letters, Mongolian 1873 +Map Markers 2690 mapping, bijective 2916 maps from 27FB maps from 2906 @@ -2372,7 +2446,8 @@ maps to 2905 maps to 2907 mark, german 2133 marker, histogram 25AE -Markers, Go 2686 +Markers, Go 2686 +Markers, Map 2690 mars 2642 MASCULINE ORDINAL INDICATOR 00BA MASU MARK 303C @@ -2386,7 +2461,7 @@ Mathematical Symbols-A, Miscellaneous 27C0 Mathematical Symbols-B, Miscellaneous 2980 MATRIX, HERMITIAN CONJUGATE 22B9 MEASURED ANGLE 2221 -Measured Angles, Angles And 299B +Measured Angles, Angles and 299B MEASURED BY 225E Medieval Superscript Letter Diacritics 0363 medium, end of 0019 @@ -2435,7 +2510,7 @@ MINUS SIGN, MODIFIER LETTER 02D7 MINUS SIGN, UNION WITH 2A41 MINUS SIGN BELOW, COMBINING 0320 MINUS SIGN IN TRIANGLE 2A3A -Minus Sign Operators, Plus And 2A22 +Minus Sign Operators, Plus and 2A22 MINUS SIMILAR, SIMILAR 2A6C MINUS TILDE 2242 MINUS-OR-PLUS SIGN 2213 @@ -2444,7 +2519,10 @@ MINY 29FF Miscellaneous Mathematical Symbols-A 27C0 Miscellaneous Mathematical Symbols-B 2980 Miscellaneous Symbols 2600 +Miscellaneous Symbols and Arrows 2B00 Miscellaneous Technical 2300 +MISRA, ARABIC SIGN 060F +mmsp 205F Modal Logic Operators 27E0 MODELS 22A7 Modifier Letters, Spacing 02B0 @@ -2460,7 +2538,10 @@ MONGOLIAN FULL STOP 1803 Mongolian Manchu Letters 1873 Mongolian Sibe Letters 185D Mongolian Todo Letters 1843 +Monogram and Digram Symbols, Yijing 268C +Monogram Symbol, Tai Xuan Jing 1D300 MONOSTABLE SYMBOL 238D +MONTH SIGN, TAMIL 0BF4 Months, Enclosed CJK Letters and 3200 Months, Telegraph Symbols for 32C0 MOON, FIRST QUARTER 263D @@ -2474,7 +2555,7 @@ MULTIMAP 22B8 MULTIMAP, DOUBLE-ENDED 29DF MULTIMAP, LEFT 27DC MULTIPLICATION, MULTISET 228D -Multiplication And Division Sign Operators 2A2F +Multiplication and Division Sign Operators 2A2F MULTIPLICATION SIGN 00D7 MULTIPLICATION SIGN BELOW, SUBSET WITH 2AC1 MULTIPLICATION SIGN BELOW, SUPERSET WITH 2AC2 @@ -2489,6 +2570,7 @@ MUSIC SHARP SIGN 266F Musical Symbols 2669 mutton 2003 mutton quad 2001 +mvs 180E Myanmar 1000 Myanmar Digits 1040 N, DOUBLE-STRUCK CAPITAL 2115 @@ -2514,6 +2596,7 @@ nasal hook 0328 NATIONAL DIGIT SHAPES 206E natural number 2115 NATURAL SIGN, MUSIC 266E +nbsp 0080 necessarily satisfies 2AF1 NEGATED WITH VERTICAL BAR, INFINITY 29DE negation 20D3 @@ -2533,6 +2616,7 @@ NEXT PAGE 2398 NIB, BLACK 2712 nigerian currency 20A6 nim-addition 2A27 +nnbsp 202F no break here 0083 no break space, graphic for 237D NO-BREAK SPACE 00A0 @@ -2545,6 +2629,24 @@ NON-BREAKING HYPHEN 2011 non-breaking space 00A0 NON-JOINER, ZERO WIDTH 200C non-theorem 22A3 +Noncharacters FDD0 +Noncharacters FFFE +Noncharacters 1FFFE +Noncharacters 2FFFE +Noncharacters 3FFFE +Noncharacters 4FFFE +Noncharacters 5FFFE +Noncharacters 6FFFE +Noncharacters 7FFFE +Noncharacters 8FFFE +Noncharacters 9FFFE +Noncharacters AFFFE +Noncharacters BFFFE +Noncharacters CFFFE +Noncharacters DFFFE +Noncharacters EFFFE +Noncharacters FFFFE +Noncharacters 10FFFE NONFORKING 2ADD NOR 22BD NORMAL SUBGROUP, CONTAINS AS 22B3 @@ -2587,8 +2689,11 @@ number, natural 2115 Number Forms 2150 Number Runes, Golden 16EE NUMBER SIGN 0023 +NUBMER SIGN, ARABIC 0600 +NUMBER SIGN, TAMIl 0BFA number symbol, real 210A NUMBER ZERO, IDEOGRAPHIC 3007 +Numbers, Aegean 10100 Numbers, Circled 2460 Numbers, Circled 3251 Numbers, Circled 32B1 @@ -2601,6 +2706,7 @@ numbers, the set of real 211D Numbers, White On Black Circled 24EB Numbers Period 2488 Numerals, Hangzhou-style 3021 +Numerals, Old Italic 10320 Numerals, Roman 2160 NUMERATOR ONE, FRACTION 215F numerics lock 21ED @@ -2666,9 +2772,9 @@ Operators, Database Theory 27D5 Operators, Invisible 2063 Operators, Mathematical 2200 Operators, Modal Logic 27E0 -Operators, Multiplication And Division Sign 2A2F +Operators, Multiplication and Division Sign 2A2F Operators, N-Ary 2A00 -Operators, Plus And Minus Sign 2A22 +Operators, Plus and Minus Sign 2A22 Operators, Relational 2A66 Operators, Specialized plus sign 29FA Operators, Supplemental Mathematical 2A00 @@ -2708,6 +2814,8 @@ ORNATE LEFT PARENTHESIS FD3E ors, logical ands and 2A51 ORTHODOX CROSS 2626 orthogonal to 22A5 +Osmanya 10480 +Osmanya Digits 104A0 OU, LATIN SMALL LETTER 0223 OUNCE SIGN 2125 OUTER JOIN, FULL 27D7 @@ -2796,6 +2904,7 @@ partial line up 008C partial relation, z notation 21F9 partial surjection, z notation 2900 PARTIALLY-RECYCLED PAPER SYMBOL 267D +PARTNERSHIP SIGN 3250 Parts, Summation Sign 23B2 pdf 202C PEACE SYMBOL 262E @@ -2822,8 +2931,10 @@ PHARYNGEAL VOICED FRICATIVE, LATIN LETTER 0295 PHI, LATIN SMALL LETTER 0278 Philippine Scripts, Generic Punctuation For 1735 Phonetic Alphabet, International 0250 +Phonetic Extensions 1D00 Phonetic Extensions, Katakana 31F0 -Phonetic extensions for Ainu 31F0 +Phonetic Extensions, non-IPA 1D00 +Phonetic Extensions for Ainu 31F0 Phonetic Modifiers Derived from Latin Letters 02B0 Phonetics and Symbols Area, CJK 2E00 phonorecord sign 2117 @@ -2854,7 +2965,7 @@ PLUS, DOUBLE 29FA PLUS, N-ARY UNION OPERATOR WITH 2A04 PLUS, SQUARED 229E PLUS, TRIPLE 29FB -Plus And Minus Sign Operators 2A22 +Plus and Minus Sign Operators 2A22 PLUS OPERATOR, N-ARY CIRCLED 2A01 PLUS SIGN 002B PLUS SIGN, EQUALS SIGN ABOVE 2A71 @@ -2871,6 +2982,7 @@ PLUS SIGN IN TRIANGLE 2A39 Plus Sign Operators, Specialized 29FA PLUS-MINUS SIGN 00B1 PLUTO 2647 +POETIC VERSE SIGN, ARABIC 060E POINT OPERATOR, INTEGRAL AROUND A 2A15 Pointers 25BA Points, Arabic 064B @@ -2920,9 +3032,10 @@ PRIME QUOTATION MARK, REVERSED DOUBLE 301D PRINT SCREEN SYMBOL 2399 privacy message 009E Private Use Area E000 +Private Use Area-A, Supplementary F0000 +Private Use Area-B, Supplementary 100000 private use one 0091 private use two 0092 -Process Internal Codes FDD0 PRODUCT, CLOSED UNION WITH SERIFS AND SMASH 2A50 product, direct 2299 PRODUCT, INTERIOR 2A3C @@ -2960,6 +3073,7 @@ Punctuation For Vertical Text, Double 2047 Punctuation Ornaments 275B PUNCTUATION SPACE 2008 punt, irish 00A3 +purna viram 0964 pushout 27D4 Q, DOUBLE-STRUCK CAPITAL 211A Q, ROTATED CAPITAL 213A @@ -2991,6 +3105,7 @@ QUESTION MARK ABOVE, GREATER-THAN WITH 2A7C QUESTION MARK ABOVE, LESS-THAN WITH 2A7B QUESTIONED EQUAL TO 225F QUILL, LEFT SQUARE BRACKET WITH 2045 +Quine Corners 231C quotation dash 2015 QUOTATION MARK 0022 quotation mark, double comma 201D @@ -3035,6 +3150,7 @@ Radicals, Kangxi 2F00 Radicals, Yi A490 Radicals Supplement, CJK 2E80 RADIOACTIVE SIGN 2622 +RAIN DROPS, UMBRELLA WITH 2614 rainy weather 2602 RAMS HORN, LATIN SMALL LETTER 0264 RANGE ANTIRESTRICTION, Z NOTATION 2A65 @@ -3166,6 +3282,8 @@ RUNOUT, TOTAL 2330 RUPEE MARK, BENGALI 09F2 RUPEE SIGN 20A8 RUPEE SIGN, BENGALI 09F3 +RUPEE SIGN, GUJARATI 0AF1 +RUPEE SIGN, TAMIL 0BF9 Russian Alphabet, Basic 0410 S, INVERTED LAZY 223E S, LATIN SMALL LETTER LONG 017F @@ -3174,8 +3292,11 @@ s, lazy 223D S, MODIFIER LETTER SMALL 02E2 S, PERPENDICULAR WITH 2AE1 S IN TRIANGLE 29CC +SAFHA, ARABIC SIGN 0603 SAGITTARIUS 2650 SALTIRE 2613 +sam 070F +SANAH, ARABIC SIGN 0601 SANS-SERIF CAPITAL G, TURNED 2141 SANS-SERIF CAPITAL L, REVERSED 2143 SANS-SERIF CAPITAL L, TURNED 2142 @@ -3232,6 +3353,8 @@ SEMICOLON, ETHIOPIC 1364 SEMICOLON, REVERSED 204F SEMIDIRECT PRODUCT, LEFT 22CB SEMIDIRECT PRODUCT WITH BOTTOM CLOSED 2A32 +SEPARATOR DOT, AEGEAN WORD 10101 +SEPARATOR LINE, AEGEAN WORD 10100 SEPARATOR, ARABIC DECIMAL 066B SEPARATOR, ARABIC THOUSANDS 066C separator, decimal 002C @@ -3250,6 +3373,7 @@ SEPARATOR, SYMBOL FOR UNIT 241F separator, unit 001F separator, urdu paragraph 203B SEPARATOR KEY SYMBOL, DECIMAL 2396 +sequence concatenation, z notation 2040 sequence introducer, control 009B Serbian Cyrillic Letters, Croatian Digraphs Matching 01C4 SERIFS, CLOSED INTERSECTION WITH 2A4D @@ -3277,6 +3401,7 @@ shamrock 2663 Shapes, Geometric 25A0 SHARP S, LATIN SMALL LETTER 00DF SHARP SIGN, MUSIC 266F +Shavian 10450 SHEQEL SIGN, NEW 20AA shift 21E7 shift in 000F @@ -3302,6 +3427,7 @@ SHORT UP TACK WITH UNDERBAR 2AE8 SHORT VERTICAL LINE OVERLAY, COMBINING 20D3 SHOULDERED OPEN BOX 237D SHUFFLE PRODUCT 29E2 +shy 00AD Sibe Letters, Mongolian 185D Sidelining Emphasis Marks FE45 SIMILAR, SIMILAR MINUS 2A6C @@ -3545,11 +3671,12 @@ SUBSCRIPT PLUS SIGN 208A SUBSCRIPT TWO, PLUS SIGN WITH 2A27 Subscripts 2080 SUBSET, DOUBLE 22D0 -Subset And Superset Relations 2ABD +Subset and Superset Relations 2ABD SUBSET OF 2282 substitute 001A SUBSTITUTE, SYMBOL FOR 241A SUBSTITUTE FORM TWO, SYMBOL FOR 2426 +Subtending Marks, Arabic 0600 subtraction, z notation bag 2A41 SUCCEEDS 227B SUCCEEDS, DOUBLE 2ABC @@ -3572,7 +3699,7 @@ SUMMATION, N-ARY 2211 SUMMATION BOTTOM 23B3 Summation Sign Parts 23B2 SUMMATION TOP 23B2 -Summations And Integrals 2A0A +Summations and Integrals 2A0A SUN 2609 SUN WITH RAYS, BLACK 2600 SUPERIMPOSED X, CIRCLE WITH 29BB @@ -3592,11 +3719,13 @@ Superscripts 2070 Superscripts and Subscripts 2070 SUPERSET, DOUBLE 22D1 SUPERSET OF 2283 -Superset Relations, Subset And 2ABD +Superset Relations, Subset and 2ABD Supplemental Arrows-A 27F0 Supplemental Arrows-B 2900 Supplemental Mathematical Operators 2A00 Supplementary, Cyrillic 0500 +Supplementary Private Use Area-A F0000 +Supplementary Private Use Area-B 100000 SURFACE INTEGRAL 222F surjection, z notation finite 2901 surjection, z notation partial 2900 @@ -3606,7 +3735,7 @@ Surrogates, High D800 Surrogates, Low DC00 Surrogates Area D800 swedish grave accent 02DF -swung dash 007E +SWUNG DASH 2053 Syllabics, Unified Canadian Aboriginal 1400 Syllables, Yi A000 Syllables Area, Korean Hangul AC00 @@ -3624,6 +3753,7 @@ Symbols, Miscellaneous 2600 Symbols, Recycling 2672 Symbols, Square 29C4 Symbols, Triangle 29CA +Symbols and Arrows, Miscellaneous 2B00 Symbols and Punctuation, CJK 3000 Symbols Area 2000 Symbols Area, CJK Phonetics and 2E00 @@ -3639,6 +3769,7 @@ SYMMETRY 232F synchronous idle 0016 SYNCHRONOUS IDLE, SYMBOL FOR 2416 Syriac 0700 +SYRIAC ABBREVIATION MARK 070F SYRIAC CROSS, EAST 2671 SYRIAC CROSS, WEST 2670 Syriac Format Control 070F @@ -3662,11 +3793,13 @@ TACK, RIGHT 22A2 TACK, UP 22A5 TACK BELOW, COMBINING LEFT 0318 TACK BELOW, COMBINING UP 031D -Tacks And Turnstiles 27D8 -Tacks And Turnstiles 2ADE +Tacks and Turnstiles 27D8 +Tacks and Turnstiles 2ADE Tagalog 1700 TAGALOG SIGN VIRAMA 1714 Tagbanwa 1760 +Tai Le 1950 +Tai Xuan Jing Symbols 1D300 TAIL FRAGMENT, ARABIC FE73 Tails, Fish 297C tainome (japanese, a kind of bullet) 25C9 @@ -3674,11 +3807,15 @@ TAKE, PRESCRIPTION 211E Tamil 0B80 Tamil Digits 0BE7 Tamil Letters 0B85 +TAMIL RUPEE SIGN 0BF9 +TAMIL NUMBER SIGN 0BFA +Tamil Symbols 0BF3 TAPE DRIVE 2707 TAPER, CONICAL 2332 TAURUS 2649 tautological equivalent 29E6 tautology 22A8 +tea 2615 Technical, Miscellaneous 2300 TEE TOP, PITCHFORK WITH 2ADA Telegraph Symbols for Days 33E0 @@ -3698,6 +3835,7 @@ Terminal graphic characters 23B7 Terminal Graphic Characters 2596 Terminal Graphics, Scan Lines For 23BA terminator, string 009C +Tetragram Symbols, Tai Xuan Jing 1D306 text, end of 0003 text, start of 0002 TEXT, SYMBOL FOR END OF 2403 @@ -3734,6 +3872,7 @@ TICK, WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS 27E3 TICK, WHITE SQUARE WITH LEFTWARDS 27E4 TICK, WHITE SQUARE WITH RIGHTWARDS 27E5 TIE, CHARACTER 2040 +tie, ligature 0361 TIE OVER INFINITY 29DD TILDE 007E tilde, apl 223C @@ -3871,8 +4010,8 @@ TURNED W, LATIN SMALL LETTER 028D TURNED Y, LATIN SMALL LETTER 028E turnstile 22A2 turnstile, reverse 22A3 -Turnstiles, Tacks And 27D8 -Turnstiles, Tacks And 2ADE +Turnstiles, Tacks and 27D8 +Turnstiles, Tacks and 2ADE TWO, SUPERSCRIPT 00B2 TWO DOT LEADER 2025 TWO-HEADED ARROW FROM BAR, RIGHTWARDS 2905 @@ -3880,7 +4019,9 @@ TWO-HEADED ARROW WITH TAIL, RIGHTWARDS 2916 TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE, RIGHTWARDS 2917 TYPE COLON, Z NOTATION 2982 U, COMBINING LATIN SMALL LETTER 0367 +Ugaritic 10380 UMBRELLA 2602 +UMBRELLA WITH RAIN DROPS 2614 umlaut 0308 UNASPIRATED, MODIFIER LETTER 02ED UNDERDOT, COMBINING TRIPLE 20E8 @@ -3894,6 +4035,7 @@ underscore, spacing 005F underscore, spacing double 2017 Underscores, Overscores and FE49 UNDERTIE 203F +UNDERTIE, INVERTED 2054 UNDO SYMBOL 238C undoable delete 2425 UNION 222A @@ -3916,7 +4058,7 @@ UNION WITH MINUS SIGN 2A41 UNION WITH OVERBAR 2A42 UNION WITH SERIFS, CLOSED 2A4C UNION WITH SERIFS AND SMASH PRODUCT, CLOSED 2A50 -Unions, Intersections And 2A40 +Unions, Intersections and 2A40 unique element 2129 unit separator 001F UNIT SEPARATOR, SYMBOL FOR 241F @@ -3929,6 +4071,7 @@ UP RIGHT DIAGONAL ELLIPSIS 22F0 UP TACK 22A5 UP TACK, MODIFIER LETTER 02D4 UP TACK BELOW, COMBINING 031D +UPA Modifiers 02EF UPPER BLADE SCISSORS 2701 UPPER RIGHT PENCIL 2710 UPSILON, LATIN CAPITAL LETTER 01B1 @@ -3947,6 +4090,7 @@ valentine 2665 valid 22A8 varia 0300 Variation Selectors FE00 +Variation Selectors Supplement E0100 varies with (proportional to) 223C vector 20D0 vector 20D6 @@ -3985,6 +4129,7 @@ VERTICAL LINE ABOVE, COMBINING 030D VERTICAL LINE ABOVE, COMBINING DOUBLE 030E VERTICAL LINE BELOW, COMBINING 0329 VERTICAL LINE BELOW, COMBINING DOUBLE 0348 +VERTICAL LINE EXTENSION 23D0 Vertical Line Operators 2AEE VERTICAL LINE OVERLAY, COMBINING LONG 20D2 VERTICAL LINE OVERLAY, COMBINING SHORT 20D3 @@ -4006,6 +4151,8 @@ vietnamese currency 20AB Vietnamese Tone Marks 0340 VIEWDATA SQUARE 2317 vinculum 0305 +viram, deergh 0965 +viram, purna 0964 VIRAMA, BENGALI SIGN 09CD VIRAMA, DEVANAGARI SIGN 094D VIRAMA, GUJARATI SIGN 0ACD @@ -4023,10 +4170,14 @@ VOICED SOUND MARK, COMBINING KATAKANA-HIRAGANA 3099 VOICED SOUND MARK, KATAKANA-HIRAGANA 309B VOICING, MODIFIER LETTER 02EC VOLUME INTEGRAL 2230 +VOLTAGE SIGN, HIGH 26A1 vrachy 0306 +VS1 FE00 W, LATIN SMALL LETTER TURNED 028D W, MODIFIER LETTER SMALL 02B7 +WARNING SIGN 26A0 Warning Signs 2620 +Warning Signs 26A0 WATCH 231A WAVE, SINE 223F WAVE DASH 301C @@ -4050,6 +4201,7 @@ WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK 27E3 WHITE DIAMOND WITH CENTRED DOT 27D0 WHITE DOT RIGHT, BLACK CIRCLE WITH 2688 WHITE DOTS, BLACK CIRCLE WITH TWO 2689 +WHITE FLAG 2690 white framus 29D6 WHITE HOURGLASS 29D6 WHITE MEDIUM SMALL SQUARE 25FD @@ -4066,8 +4218,11 @@ WIGGLY FENCE, LEFT 29D8 WIGGLY FENCE, LEFT DOUBLE 29DA WIGGLY FENCE, RIGHT 29D9 WIGGLY FENCE, RIGHT DOUBLE 29DB +wj 2060 WON SIGN 20A9 +WORD DIVIDER, UGARITIC 1039F WORD JOINER 2060 +Word Separators, Aegean 10100 Words, Squared Japanese Katakana 3300 WORDSPACE, ETHIOPIC 1361 WREATH PRODUCT 2240 @@ -4095,6 +4250,8 @@ Yi Radicals A490 Yi Syllables A000 Yiddish Digraphs 05F0 yields 22A2 +Yijing Monogram and Digram Symbols 268A +Yijing Hexagram Symbols 4DC0 Yijing Trigram Symbols 2630 YIN YANG 262F yogh, latin capital letter 01B7 @@ -4107,6 +4264,7 @@ Z, BLACK-LETTER CAPITAL 2128 Z, DOUBLE-STRUCK CAPITAL 2124 Z NOTATION BAG MEMBERSHIP 22FF z notation bag subtraction 2A41 +z notation bijection 2917 Z Notation Binding Brackets 2989 Z NOTATION DOMAIN ANTIRESTRICTION 2A64 z notation finite function 20E6 @@ -4116,6 +4274,7 @@ z notation finite relation 21FC z notation finite surjection 2901 z notation finite surjective injection 2918 Z Notation Image Brackets 2987 +z notation left bag bracket 27E6 z notation partial function 21F8 z notation partial injection 2914 z notation partial relation 21F9 @@ -4126,6 +4285,7 @@ Z NOTATION SCHEMA COMPOSITION 2A1F z notation schema hiding 29F9 Z NOTATION SCHEMA PIPING 2A20 Z NOTATION SCHEMA PROJECTION 2A21 +z notations sequence concatenation 2040 Z NOTATION SPOT 2981 z notation surjective injection 2917 Z NOTATION TYPE COLON 2982 @@ -4141,5 +4301,7 @@ ZIGZAG ARROW, RIGHT ANGLE WITH DOWNWARDS 237C ZIGZAG LINE, VERTICAL 299A Zodiacal Symbols 2648 zwj 200D +zwnbsp FEFF zwnj 200C +zwsp 200B diff --git a/gnu/usr.bin/perl/lib/unicore/Jamo.txt b/gnu/usr.bin/perl/lib/unicore/Jamo.txt index 5c0a5d07203..c8bcc881398 100644 --- a/gnu/usr.bin/perl/lib/unicore/Jamo.txt +++ b/gnu/usr.bin/perl/lib/unicore/Jamo.txt @@ -1,13 +1,14 @@ -# Jamo-3.2.0.txt +# Jamo-4.0.1.txt +# Date: 2004-03-02, 18:15 PST [KW] # -# This file is a normative contributory data file in the -# Unicode Character Database. +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html # -# This file defines the Jamo Short Name property, repeating -# in machine readable form the information printed in Table 4-4 -# of The Unicode Standard, Version 3.0. +# This file defines the Jamo Short Name property. # -# See sections 3.11 and 4.4 of The Unicode Standard, Version 3.0 +# See Section 3.12 of The Unicode Standard, Version 4.0 # for more information. # # Each line contains two fields, separated by a semicolon. diff --git a/gnu/usr.bin/perl/lib/unicore/LineBreak.txt b/gnu/usr.bin/perl/lib/unicore/LineBreak.txt index 90a116c2afb..43faf4f5f7f 100644 --- a/gnu/usr.bin/perl/lib/unicore/LineBreak.txt +++ b/gnu/usr.bin/perl/lib/unicore/LineBreak.txt @@ -1,4 +1,4 @@ -# LineBreak-4.0.0.txt +# LineBreak-4.0.1.txt # # Line Break Properties # @@ -221,7 +221,7 @@ 00C3;AL # LATIN CAPITAL LETTER A WITH TILDE 00C4;AL # LATIN CAPITAL LETTER A WITH DIAERESIS 00C5;AL # LATIN CAPITAL LETTER A WITH RING ABOVE -00C6;AI # LATIN CAPITAL LETTER AE +00C6;AL # LATIN CAPITAL LETTER AE 00C7;AL # LATIN CAPITAL LETTER C WITH CEDILLA 00C8;AL # LATIN CAPITAL LETTER E WITH GRAVE 00C9;AL # LATIN CAPITAL LETTER E WITH ACUTE @@ -231,7 +231,7 @@ 00CD;AL # LATIN CAPITAL LETTER I WITH ACUTE 00CE;AL # LATIN CAPITAL LETTER I WITH CIRCUMFLEX 00CF;AL # LATIN CAPITAL LETTER I WITH DIAERESIS -00D0;AI # LATIN CAPITAL LETTER ETH +00D0;AL # LATIN CAPITAL LETTER ETH 00D1;AL # LATIN CAPITAL LETTER N WITH TILDE 00D2;AL # LATIN CAPITAL LETTER O WITH GRAVE 00D3;AL # LATIN CAPITAL LETTER O WITH ACUTE @@ -239,48 +239,48 @@ 00D5;AL # LATIN CAPITAL LETTER O WITH TILDE 00D6;AL # LATIN CAPITAL LETTER O WITH DIAERESIS 00D7;AI # MULTIPLICATION SIGN -00D8;AI # LATIN CAPITAL LETTER O WITH STROKE +00D8;AL # LATIN CAPITAL LETTER O WITH STROKE 00D9;AL # LATIN CAPITAL LETTER U WITH GRAVE 00DA;AL # LATIN CAPITAL LETTER U WITH ACUTE 00DB;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX 00DC;AL # LATIN CAPITAL LETTER U WITH DIAERESIS 00DD;AL # LATIN CAPITAL LETTER Y WITH ACUTE -00DE;AI # LATIN CAPITAL LETTER THORN -00DF;AI # LATIN SMALL LETTER SHARP S -00E0;AI # LATIN SMALL LETTER A WITH GRAVE -00E1;AI # LATIN SMALL LETTER A WITH ACUTE +00DE;AL # LATIN CAPITAL LETTER THORN +00DF;AL # LATIN SMALL LETTER SHARP S +00E0;AL # LATIN SMALL LETTER A WITH GRAVE +00E1;AL # LATIN SMALL LETTER A WITH ACUTE 00E2;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX 00E3;AL # LATIN SMALL LETTER A WITH TILDE 00E4;AL # LATIN SMALL LETTER A WITH DIAERESIS 00E5;AL # LATIN SMALL LETTER A WITH RING ABOVE -00E6;AI # LATIN SMALL LETTER AE +00E6;AL # LATIN SMALL LETTER AE 00E7;AL # LATIN SMALL LETTER C WITH CEDILLA -00E8;AI # LATIN SMALL LETTER E WITH GRAVE -00E9;AI # LATIN SMALL LETTER E WITH ACUTE -00EA;AI # LATIN SMALL LETTER E WITH CIRCUMFLEX +00E8;AL # LATIN SMALL LETTER E WITH GRAVE +00E9;AL # LATIN SMALL LETTER E WITH ACUTE +00EA;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX 00EB;AL # LATIN SMALL LETTER E WITH DIAERESIS -00EC;AI # LATIN SMALL LETTER I WITH GRAVE -00ED;AI # LATIN SMALL LETTER I WITH ACUTE +00EC;AL # LATIN SMALL LETTER I WITH GRAVE +00ED;AL # LATIN SMALL LETTER I WITH ACUTE 00EE;AL # LATIN SMALL LETTER I WITH CIRCUMFLEX 00EF;AL # LATIN SMALL LETTER I WITH DIAERESIS -00F0;AI # LATIN SMALL LETTER ETH +00F0;AL # LATIN SMALL LETTER ETH 00F1;AL # LATIN SMALL LETTER N WITH TILDE -00F2;AI # LATIN SMALL LETTER O WITH GRAVE -00F3;AI # LATIN SMALL LETTER O WITH ACUTE +00F2;AL # LATIN SMALL LETTER O WITH GRAVE +00F3;AL # LATIN SMALL LETTER O WITH ACUTE 00F4;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX 00F5;AL # LATIN SMALL LETTER O WITH TILDE 00F6;AL # LATIN SMALL LETTER O WITH DIAERESIS 00F7;AI # DIVISION SIGN -00F8;AI # LATIN SMALL LETTER O WITH STROKE -00F9;AI # LATIN SMALL LETTER U WITH GRAVE -00FA;AI # LATIN SMALL LETTER U WITH ACUTE +00F8;AL # LATIN SMALL LETTER O WITH STROKE +00F9;AL # LATIN SMALL LETTER U WITH GRAVE +00FA;AL # LATIN SMALL LETTER U WITH ACUTE 00FB;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX -00FC;AI # LATIN SMALL LETTER U WITH DIAERESIS +00FC;AL # LATIN SMALL LETTER U WITH DIAERESIS 00FD;AL # LATIN SMALL LETTER Y WITH ACUTE -00FE;AI # LATIN SMALL LETTER THORN +00FE;AL # LATIN SMALL LETTER THORN 00FF;AL # LATIN SMALL LETTER Y WITH DIAERESIS 0100;AL # LATIN CAPITAL LETTER A WITH MACRON -0101;AI # LATIN SMALL LETTER A WITH MACRON +0101;AL # LATIN SMALL LETTER A WITH MACRON 0102;AL # LATIN CAPITAL LETTER A WITH BREVE 0103;AL # LATIN SMALL LETTER A WITH BREVE 0104;AL # LATIN CAPITAL LETTER A WITH OGONEK @@ -296,9 +296,9 @@ 010E;AL # LATIN CAPITAL LETTER D WITH CARON 010F;AL # LATIN SMALL LETTER D WITH CARON 0110;AL # LATIN CAPITAL LETTER D WITH STROKE -0111;AI # LATIN SMALL LETTER D WITH STROKE +0111;AL # LATIN SMALL LETTER D WITH STROKE 0112;AL # LATIN CAPITAL LETTER E WITH MACRON -0113;AI # LATIN SMALL LETTER E WITH MACRON +0113;AL # LATIN SMALL LETTER E WITH MACRON 0114;AL # LATIN CAPITAL LETTER E WITH BREVE 0115;AL # LATIN SMALL LETTER E WITH BREVE 0116;AL # LATIN CAPITAL LETTER E WITH DOT ABOVE @@ -306,7 +306,7 @@ 0118;AL # LATIN CAPITAL LETTER E WITH OGONEK 0119;AL # LATIN SMALL LETTER E WITH OGONEK 011A;AL # LATIN CAPITAL LETTER E WITH CARON -011B;AI # LATIN SMALL LETTER E WITH CARON +011B;AL # LATIN SMALL LETTER E WITH CARON 011C;AL # LATIN CAPITAL LETTER G WITH CIRCUMFLEX 011D;AL # LATIN SMALL LETTER G WITH CIRCUMFLEX 011E;AL # LATIN CAPITAL LETTER G WITH BREVE @@ -317,52 +317,52 @@ 0123;AL # LATIN SMALL LETTER G WITH CEDILLA 0124;AL # LATIN CAPITAL LETTER H WITH CIRCUMFLEX 0125;AL # LATIN SMALL LETTER H WITH CIRCUMFLEX -0126;AI # LATIN CAPITAL LETTER H WITH STROKE -0127;AI # LATIN SMALL LETTER H WITH STROKE +0126;AL # LATIN CAPITAL LETTER H WITH STROKE +0127;AL # LATIN SMALL LETTER H WITH STROKE 0128;AL # LATIN CAPITAL LETTER I WITH TILDE 0129;AL # LATIN SMALL LETTER I WITH TILDE 012A;AL # LATIN CAPITAL LETTER I WITH MACRON -012B;AI # LATIN SMALL LETTER I WITH MACRON +012B;AL # LATIN SMALL LETTER I WITH MACRON 012C;AL # LATIN CAPITAL LETTER I WITH BREVE 012D;AL # LATIN SMALL LETTER I WITH BREVE 012E;AL # LATIN CAPITAL LETTER I WITH OGONEK 012F;AL # LATIN SMALL LETTER I WITH OGONEK 0130;AL # LATIN CAPITAL LETTER I WITH DOT ABOVE -0131;AI # LATIN SMALL LETTER DOTLESS I -0132;AI # LATIN CAPITAL LIGATURE IJ -0133;AI # LATIN SMALL LIGATURE IJ +0131;AL # LATIN SMALL LETTER DOTLESS I +0132;AL # LATIN CAPITAL LIGATURE IJ +0133;AL # LATIN SMALL LIGATURE IJ 0134;AL # LATIN CAPITAL LETTER J WITH CIRCUMFLEX 0135;AL # LATIN SMALL LETTER J WITH CIRCUMFLEX 0136;AL # LATIN CAPITAL LETTER K WITH CEDILLA 0137;AL # LATIN SMALL LETTER K WITH CEDILLA -0138;AI # LATIN SMALL LETTER KRA +0138;AL # LATIN SMALL LETTER KRA 0139;AL # LATIN CAPITAL LETTER L WITH ACUTE 013A;AL # LATIN SMALL LETTER L WITH ACUTE 013B;AL # LATIN CAPITAL LETTER L WITH CEDILLA 013C;AL # LATIN SMALL LETTER L WITH CEDILLA 013D;AL # LATIN CAPITAL LETTER L WITH CARON 013E;AL # LATIN SMALL LETTER L WITH CARON -013F;AI # LATIN CAPITAL LETTER L WITH MIDDLE DOT -0140;AI # LATIN SMALL LETTER L WITH MIDDLE DOT -0141;AI # LATIN CAPITAL LETTER L WITH STROKE -0142;AI # LATIN SMALL LETTER L WITH STROKE +013F;AL # LATIN CAPITAL LETTER L WITH MIDDLE DOT +0140;AL # LATIN SMALL LETTER L WITH MIDDLE DOT +0141;AL # LATIN CAPITAL LETTER L WITH STROKE +0142;AL # LATIN SMALL LETTER L WITH STROKE 0143;AL # LATIN CAPITAL LETTER N WITH ACUTE -0144;AI # LATIN SMALL LETTER N WITH ACUTE +0144;AL # LATIN SMALL LETTER N WITH ACUTE 0145;AL # LATIN CAPITAL LETTER N WITH CEDILLA 0146;AL # LATIN SMALL LETTER N WITH CEDILLA 0147;AL # LATIN CAPITAL LETTER N WITH CARON -0148;AI # LATIN SMALL LETTER N WITH CARON -0149;AI # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -014A;AI # LATIN CAPITAL LETTER ENG +0148;AL # LATIN SMALL LETTER N WITH CARON +0149;AL # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +014A;AL # LATIN CAPITAL LETTER ENG 014B;AL # LATIN SMALL LETTER ENG 014C;AL # LATIN CAPITAL LETTER O WITH MACRON -014D;AI # LATIN SMALL LETTER O WITH MACRON +014D;AL # LATIN SMALL LETTER O WITH MACRON 014E;AL # LATIN CAPITAL LETTER O WITH BREVE 014F;AL # LATIN SMALL LETTER O WITH BREVE 0150;AL # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 0151;AL # LATIN SMALL LETTER O WITH DOUBLE ACUTE -0152;AI # LATIN CAPITAL LIGATURE OE -0153;AI # LATIN SMALL LIGATURE OE +0152;AL # LATIN CAPITAL LIGATURE OE +0153;AL # LATIN SMALL LIGATURE OE 0154;AL # LATIN CAPITAL LETTER R WITH ACUTE 0155;AL # LATIN SMALL LETTER R WITH ACUTE 0156;AL # LATIN CAPITAL LETTER R WITH CEDILLA @@ -381,12 +381,12 @@ 0163;AL # LATIN SMALL LETTER T WITH CEDILLA 0164;AL # LATIN CAPITAL LETTER T WITH CARON 0165;AL # LATIN SMALL LETTER T WITH CARON -0166;AI # LATIN CAPITAL LETTER T WITH STROKE -0167;AI # LATIN SMALL LETTER T WITH STROKE +0166;AL # LATIN CAPITAL LETTER T WITH STROKE +0167;AL # LATIN SMALL LETTER T WITH STROKE 0168;AL # LATIN CAPITAL LETTER U WITH TILDE 0169;AL # LATIN SMALL LETTER U WITH TILDE 016A;AL # LATIN CAPITAL LETTER U WITH MACRON -016B;AI # LATIN SMALL LETTER U WITH MACRON +016B;AL # LATIN SMALL LETTER U WITH MACRON 016C;AL # LATIN CAPITAL LETTER U WITH BREVE 016D;AL # LATIN SMALL LETTER U WITH BREVE 016E;AL # LATIN CAPITAL LETTER U WITH RING ABOVE @@ -485,21 +485,21 @@ 01CB;AL # LATIN CAPITAL LETTER N WITH SMALL LETTER J 01CC;AL # LATIN SMALL LETTER NJ 01CD;AL # LATIN CAPITAL LETTER A WITH CARON -01CE;AI # LATIN SMALL LETTER A WITH CARON +01CE;AL # LATIN SMALL LETTER A WITH CARON 01CF;AL # LATIN CAPITAL LETTER I WITH CARON -01D0;AI # LATIN SMALL LETTER I WITH CARON +01D0;AL # LATIN SMALL LETTER I WITH CARON 01D1;AL # LATIN CAPITAL LETTER O WITH CARON -01D2;AI # LATIN SMALL LETTER O WITH CARON +01D2;AL # LATIN SMALL LETTER O WITH CARON 01D3;AL # LATIN CAPITAL LETTER U WITH CARON -01D4;AI # LATIN SMALL LETTER U WITH CARON +01D4;AL # LATIN SMALL LETTER U WITH CARON 01D5;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01D6;AI # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON +01D6;AL # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON 01D7;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D8;AI # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE +01D8;AL # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE 01D9;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -01DA;AI # LATIN SMALL LETTER U WITH DIAERESIS AND CARON +01DA;AL # LATIN SMALL LETTER U WITH DIAERESIS AND CARON 01DB;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01DC;AI # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE +01DC;AL # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE 01DD;AL # LATIN SMALL LETTER TURNED E 01DE;AL # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON 01DF;AL # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON @@ -591,7 +591,7 @@ 0235;AL # LATIN SMALL LETTER N WITH CURL 0236;AL # LATIN SMALL LETTER T WITH CURL 0250;AL # LATIN SMALL LETTER TURNED A -0251;AI # LATIN SMALL LETTER ALPHA +0251;AL # LATIN SMALL LETTER ALPHA 0252;AL # LATIN SMALL LETTER TURNED ALPHA 0253;AL # LATIN SMALL LETTER B WITH HOOK 0254;AL # LATIN SMALL LETTER OPEN O @@ -607,7 +607,7 @@ 025E;AL # LATIN SMALL LETTER CLOSED REVERSED OPEN E 025F;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE 0260;AL # LATIN SMALL LETTER G WITH HOOK -0261;AI # LATIN SMALL LETTER SCRIPT G +0261;AL # LATIN SMALL LETTER SCRIPT G 0262;AL # LATIN LETTER SMALL CAPITAL G 0263;AL # LATIN SMALL LETTER GAMMA 0264;AL # LATIN SMALL LETTER RAMS HORN @@ -854,12 +854,12 @@ 0355;CM # COMBINING RIGHT ARROWHEAD BELOW 0356;CM # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW 0357;CM # COMBINING RIGHT HALF RING ABOVE -035D;CM # COMBINING DOUBLE BREVE -035E;CM # COMBINING DOUBLE MACRON -035F;CM # COMBINING DOUBLE MACRON BELOW -0360;CM # COMBINING DOUBLE TILDE -0361;CM # COMBINING DOUBLE INVERTED BREVE -0362;CM # COMBINING DOUBLE RIGHTWARDS ARROW BELOW +035D;GL # COMBINING DOUBLE BREVE +035E;GL # COMBINING DOUBLE MACRON +035F;GL # COMBINING DOUBLE MACRON BELOW +0360;GL # COMBINING DOUBLE TILDE +0361;GL # COMBINING DOUBLE INVERTED BREVE +0362;GL # COMBINING DOUBLE RIGHTWARDS ARROW BELOW 0363;CM # COMBINING LATIN SMALL LETTER A 0364;CM # COMBINING LATIN SMALL LETTER E 0365;CM # COMBINING LATIN SMALL LETTER I @@ -876,7 +876,7 @@ 0374;AL # GREEK NUMERAL SIGN 0375;AL # GREEK LOWER NUMERAL SIGN 037A;AL # GREEK YPOGEGRAMMENI -037E;AL # GREEK QUESTION MARK +037E;IS # GREEK QUESTION MARK 0384;AL # GREEK TONOS 0385;AL # GREEK DIALYTIKA TONOS 0386;AL # GREEK CAPITAL LETTER ALPHA WITH TONOS @@ -888,30 +888,30 @@ 038E;AL # GREEK CAPITAL LETTER UPSILON WITH TONOS 038F;AL # GREEK CAPITAL LETTER OMEGA WITH TONOS 0390;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -0391;AI # GREEK CAPITAL LETTER ALPHA -0392;AI # GREEK CAPITAL LETTER BETA -0393;AI # GREEK CAPITAL LETTER GAMMA -0394;AI # GREEK CAPITAL LETTER DELTA -0395;AI # GREEK CAPITAL LETTER EPSILON -0396;AI # GREEK CAPITAL LETTER ZETA -0397;AI # GREEK CAPITAL LETTER ETA -0398;AI # GREEK CAPITAL LETTER THETA -0399;AI # GREEK CAPITAL LETTER IOTA -039A;AI # GREEK CAPITAL LETTER KAPPA -039B;AI # GREEK CAPITAL LETTER LAMDA -039C;AI # GREEK CAPITAL LETTER MU -039D;AI # GREEK CAPITAL LETTER NU -039E;AI # GREEK CAPITAL LETTER XI -039F;AI # GREEK CAPITAL LETTER OMICRON -03A0;AI # GREEK CAPITAL LETTER PI -03A1;AI # GREEK CAPITAL LETTER RHO -03A3;AI # GREEK CAPITAL LETTER SIGMA -03A4;AI # GREEK CAPITAL LETTER TAU -03A5;AI # GREEK CAPITAL LETTER UPSILON -03A6;AI # GREEK CAPITAL LETTER PHI -03A7;AI # GREEK CAPITAL LETTER CHI -03A8;AI # GREEK CAPITAL LETTER PSI -03A9;AI # GREEK CAPITAL LETTER OMEGA +0391;AL # GREEK CAPITAL LETTER ALPHA +0392;AL # GREEK CAPITAL LETTER BETA +0393;AL # GREEK CAPITAL LETTER GAMMA +0394;AL # GREEK CAPITAL LETTER DELTA +0395;AL # GREEK CAPITAL LETTER EPSILON +0396;AL # GREEK CAPITAL LETTER ZETA +0397;AL # GREEK CAPITAL LETTER ETA +0398;AL # GREEK CAPITAL LETTER THETA +0399;AL # GREEK CAPITAL LETTER IOTA +039A;AL # GREEK CAPITAL LETTER KAPPA +039B;AL # GREEK CAPITAL LETTER LAMDA +039C;AL # GREEK CAPITAL LETTER MU +039D;AL # GREEK CAPITAL LETTER NU +039E;AL # GREEK CAPITAL LETTER XI +039F;AL # GREEK CAPITAL LETTER OMICRON +03A0;AL # GREEK CAPITAL LETTER PI +03A1;AL # GREEK CAPITAL LETTER RHO +03A3;AL # GREEK CAPITAL LETTER SIGMA +03A4;AL # GREEK CAPITAL LETTER TAU +03A5;AL # GREEK CAPITAL LETTER UPSILON +03A6;AL # GREEK CAPITAL LETTER PHI +03A7;AL # GREEK CAPITAL LETTER CHI +03A8;AL # GREEK CAPITAL LETTER PSI +03A9;AL # GREEK CAPITAL LETTER OMEGA 03AA;AL # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 03AB;AL # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 03AC;AL # GREEK SMALL LETTER ALPHA WITH TONOS @@ -919,31 +919,31 @@ 03AE;AL # GREEK SMALL LETTER ETA WITH TONOS 03AF;AL # GREEK SMALL LETTER IOTA WITH TONOS 03B0;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -03B1;AI # GREEK SMALL LETTER ALPHA -03B2;AI # GREEK SMALL LETTER BETA -03B3;AI # GREEK SMALL LETTER GAMMA -03B4;AI # GREEK SMALL LETTER DELTA -03B5;AI # GREEK SMALL LETTER EPSILON -03B6;AI # GREEK SMALL LETTER ZETA -03B7;AI # GREEK SMALL LETTER ETA -03B8;AI # GREEK SMALL LETTER THETA -03B9;AI # GREEK SMALL LETTER IOTA -03BA;AI # GREEK SMALL LETTER KAPPA -03BB;AI # GREEK SMALL LETTER LAMDA -03BC;AI # GREEK SMALL LETTER MU -03BD;AI # GREEK SMALL LETTER NU -03BE;AI # GREEK SMALL LETTER XI -03BF;AI # GREEK SMALL LETTER OMICRON -03C0;AI # GREEK SMALL LETTER PI -03C1;AI # GREEK SMALL LETTER RHO +03B1;AL # GREEK SMALL LETTER ALPHA +03B2;AL # GREEK SMALL LETTER BETA +03B3;AL # GREEK SMALL LETTER GAMMA +03B4;AL # GREEK SMALL LETTER DELTA +03B5;AL # GREEK SMALL LETTER EPSILON +03B6;AL # GREEK SMALL LETTER ZETA +03B7;AL # GREEK SMALL LETTER ETA +03B8;AL # GREEK SMALL LETTER THETA +03B9;AL # GREEK SMALL LETTER IOTA +03BA;AL # GREEK SMALL LETTER KAPPA +03BB;AL # GREEK SMALL LETTER LAMDA +03BC;AL # GREEK SMALL LETTER MU +03BD;AL # GREEK SMALL LETTER NU +03BE;AL # GREEK SMALL LETTER XI +03BF;AL # GREEK SMALL LETTER OMICRON +03C0;AL # GREEK SMALL LETTER PI +03C1;AL # GREEK SMALL LETTER RHO 03C2;AL # GREEK SMALL LETTER FINAL SIGMA -03C3;AI # GREEK SMALL LETTER SIGMA -03C4;AI # GREEK SMALL LETTER TAU -03C5;AI # GREEK SMALL LETTER UPSILON -03C6;AI # GREEK SMALL LETTER PHI -03C7;AI # GREEK SMALL LETTER CHI -03C8;AI # GREEK SMALL LETTER PSI -03C9;AI # GREEK SMALL LETTER OMEGA +03C3;AL # GREEK SMALL LETTER SIGMA +03C4;AL # GREEK SMALL LETTER TAU +03C5;AL # GREEK SMALL LETTER UPSILON +03C6;AL # GREEK SMALL LETTER PHI +03C7;AL # GREEK SMALL LETTER CHI +03C8;AL # GREEK SMALL LETTER PSI +03C9;AL # GREEK SMALL LETTER OMEGA 03CA;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA 03CB;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA 03CC;AL # GREEK SMALL LETTER OMICRON WITH TONOS @@ -994,7 +994,7 @@ 03FA;AL # GREEK CAPITAL LETTER SAN 03FB;AL # GREEK SMALL LETTER SAN 0400;AL # CYRILLIC CAPITAL LETTER IE WITH GRAVE -0401;AI # CYRILLIC CAPITAL LETTER IO +0401;AL # CYRILLIC CAPITAL LETTER IO 0402;AL # CYRILLIC CAPITAL LETTER DJE 0403;AL # CYRILLIC CAPITAL LETTER GJE 0404;AL # CYRILLIC CAPITAL LETTER UKRAINIAN IE @@ -1009,72 +1009,72 @@ 040D;AL # CYRILLIC CAPITAL LETTER I WITH GRAVE 040E;AL # CYRILLIC CAPITAL LETTER SHORT U 040F;AL # CYRILLIC CAPITAL LETTER DZHE -0410;AI # CYRILLIC CAPITAL LETTER A -0411;AI # CYRILLIC CAPITAL LETTER BE -0412;AI # CYRILLIC CAPITAL LETTER VE -0413;AI # CYRILLIC CAPITAL LETTER GHE -0414;AI # CYRILLIC CAPITAL LETTER DE -0415;AI # CYRILLIC CAPITAL LETTER IE -0416;AI # CYRILLIC CAPITAL LETTER ZHE -0417;AI # CYRILLIC CAPITAL LETTER ZE -0418;AI # CYRILLIC CAPITAL LETTER I -0419;AI # CYRILLIC CAPITAL LETTER SHORT I -041A;AI # CYRILLIC CAPITAL LETTER KA -041B;AI # CYRILLIC CAPITAL LETTER EL -041C;AI # CYRILLIC CAPITAL LETTER EM -041D;AI # CYRILLIC CAPITAL LETTER EN -041E;AI # CYRILLIC CAPITAL LETTER O -041F;AI # CYRILLIC CAPITAL LETTER PE -0420;AI # CYRILLIC CAPITAL LETTER ER -0421;AI # CYRILLIC CAPITAL LETTER ES -0422;AI # CYRILLIC CAPITAL LETTER TE -0423;AI # CYRILLIC CAPITAL LETTER U -0424;AI # CYRILLIC CAPITAL LETTER EF -0425;AI # CYRILLIC CAPITAL LETTER HA -0426;AI # CYRILLIC CAPITAL LETTER TSE -0427;AI # CYRILLIC CAPITAL LETTER CHE -0428;AI # CYRILLIC CAPITAL LETTER SHA -0429;AI # CYRILLIC CAPITAL LETTER SHCHA -042A;AI # CYRILLIC CAPITAL LETTER HARD SIGN -042B;AI # CYRILLIC CAPITAL LETTER YERU -042C;AI # CYRILLIC CAPITAL LETTER SOFT SIGN -042D;AI # CYRILLIC CAPITAL LETTER E -042E;AI # CYRILLIC CAPITAL LETTER YU -042F;AI # CYRILLIC CAPITAL LETTER YA -0430;AI # CYRILLIC SMALL LETTER A -0431;AI # CYRILLIC SMALL LETTER BE -0432;AI # CYRILLIC SMALL LETTER VE -0433;AI # CYRILLIC SMALL LETTER GHE -0434;AI # CYRILLIC SMALL LETTER DE -0435;AI # CYRILLIC SMALL LETTER IE -0436;AI # CYRILLIC SMALL LETTER ZHE -0437;AI # CYRILLIC SMALL LETTER ZE -0438;AI # CYRILLIC SMALL LETTER I -0439;AI # CYRILLIC SMALL LETTER SHORT I -043A;AI # CYRILLIC SMALL LETTER KA -043B;AI # CYRILLIC SMALL LETTER EL -043C;AI # CYRILLIC SMALL LETTER EM -043D;AI # CYRILLIC SMALL LETTER EN -043E;AI # CYRILLIC SMALL LETTER O -043F;AI # CYRILLIC SMALL LETTER PE -0440;AI # CYRILLIC SMALL LETTER ER -0441;AI # CYRILLIC SMALL LETTER ES -0442;AI # CYRILLIC SMALL LETTER TE -0443;AI # CYRILLIC SMALL LETTER U -0444;AI # CYRILLIC SMALL LETTER EF -0445;AI # CYRILLIC SMALL LETTER HA -0446;AI # CYRILLIC SMALL LETTER TSE -0447;AI # CYRILLIC SMALL LETTER CHE -0448;AI # CYRILLIC SMALL LETTER SHA -0449;AI # CYRILLIC SMALL LETTER SHCHA -044A;AI # CYRILLIC SMALL LETTER HARD SIGN -044B;AI # CYRILLIC SMALL LETTER YERU -044C;AI # CYRILLIC SMALL LETTER SOFT SIGN -044D;AI # CYRILLIC SMALL LETTER E -044E;AI # CYRILLIC SMALL LETTER YU -044F;AI # CYRILLIC SMALL LETTER YA +0410;AL # CYRILLIC CAPITAL LETTER A +0411;AL # CYRILLIC CAPITAL LETTER BE +0412;AL # CYRILLIC CAPITAL LETTER VE +0413;AL # CYRILLIC CAPITAL LETTER GHE +0414;AL # CYRILLIC CAPITAL LETTER DE +0415;AL # CYRILLIC CAPITAL LETTER IE +0416;AL # CYRILLIC CAPITAL LETTER ZHE +0417;AL # CYRILLIC CAPITAL LETTER ZE +0418;AL # CYRILLIC CAPITAL LETTER I +0419;AL # CYRILLIC CAPITAL LETTER SHORT I +041A;AL # CYRILLIC CAPITAL LETTER KA +041B;AL # CYRILLIC CAPITAL LETTER EL +041C;AL # CYRILLIC CAPITAL LETTER EM +041D;AL # CYRILLIC CAPITAL LETTER EN +041E;AL # CYRILLIC CAPITAL LETTER O +041F;AL # CYRILLIC CAPITAL LETTER PE +0420;AL # CYRILLIC CAPITAL LETTER ER +0421;AL # CYRILLIC CAPITAL LETTER ES +0422;AL # CYRILLIC CAPITAL LETTER TE +0423;AL # CYRILLIC CAPITAL LETTER U +0424;AL # CYRILLIC CAPITAL LETTER EF +0425;AL # CYRILLIC CAPITAL LETTER HA +0426;AL # CYRILLIC CAPITAL LETTER TSE +0427;AL # CYRILLIC CAPITAL LETTER CHE +0428;AL # CYRILLIC CAPITAL LETTER SHA +0429;AL # CYRILLIC CAPITAL LETTER SHCHA +042A;AL # CYRILLIC CAPITAL LETTER HARD SIGN +042B;AL # CYRILLIC CAPITAL LETTER YERU +042C;AL # CYRILLIC CAPITAL LETTER SOFT SIGN +042D;AL # CYRILLIC CAPITAL LETTER E +042E;AL # CYRILLIC CAPITAL LETTER YU +042F;AL # CYRILLIC CAPITAL LETTER YA +0430;AL # CYRILLIC SMALL LETTER A +0431;AL # CYRILLIC SMALL LETTER BE +0432;AL # CYRILLIC SMALL LETTER VE +0433;AL # CYRILLIC SMALL LETTER GHE +0434;AL # CYRILLIC SMALL LETTER DE +0435;AL # CYRILLIC SMALL LETTER IE +0436;AL # CYRILLIC SMALL LETTER ZHE +0437;AL # CYRILLIC SMALL LETTER ZE +0438;AL # CYRILLIC SMALL LETTER I +0439;AL # CYRILLIC SMALL LETTER SHORT I +043A;AL # CYRILLIC SMALL LETTER KA +043B;AL # CYRILLIC SMALL LETTER EL +043C;AL # CYRILLIC SMALL LETTER EM +043D;AL # CYRILLIC SMALL LETTER EN +043E;AL # CYRILLIC SMALL LETTER O +043F;AL # CYRILLIC SMALL LETTER PE +0440;AL # CYRILLIC SMALL LETTER ER +0441;AL # CYRILLIC SMALL LETTER ES +0442;AL # CYRILLIC SMALL LETTER TE +0443;AL # CYRILLIC SMALL LETTER U +0444;AL # CYRILLIC SMALL LETTER EF +0445;AL # CYRILLIC SMALL LETTER HA +0446;AL # CYRILLIC SMALL LETTER TSE +0447;AL # CYRILLIC SMALL LETTER CHE +0448;AL # CYRILLIC SMALL LETTER SHA +0449;AL # CYRILLIC SMALL LETTER SHCHA +044A;AL # CYRILLIC SMALL LETTER HARD SIGN +044B;AL # CYRILLIC SMALL LETTER YERU +044C;AL # CYRILLIC SMALL LETTER SOFT SIGN +044D;AL # CYRILLIC SMALL LETTER E +044E;AL # CYRILLIC SMALL LETTER YU +044F;AL # CYRILLIC SMALL LETTER YA 0450;AL # CYRILLIC SMALL LETTER IE WITH GRAVE -0451;AI # CYRILLIC SMALL LETTER IO +0451;AL # CYRILLIC SMALL LETTER IO 0452;AL # CYRILLIC SMALL LETTER DJE 0453;AL # CYRILLIC SMALL LETTER GJE 0454;AL # CYRILLIC SMALL LETTER UKRAINIAN IE @@ -1501,8 +1501,8 @@ 0668;NU # ARABIC-INDIC DIGIT EIGHT 0669;NU # ARABIC-INDIC DIGIT NINE 066A;AL # ARABIC PERCENT SIGN -066B;AL # ARABIC DECIMAL SEPARATOR -066C;AL # ARABIC THOUSANDS SEPARATOR +066B;NU # ARABIC DECIMAL SEPARATOR +066C;NU # ARABIC THOUSANDS SEPARATOR 066D;AL # ARABIC FIVE POINTED STAR 066E;AL # ARABIC LETTER DOTLESS BEH 066F;AL # ARABIC LETTER DOTLESS QAF @@ -5794,7 +5794,7 @@ 2123;AL # VERSICLE 2124;AL # DOUBLE-STRUCK CAPITAL Z 2125;AL # OUNCE SIGN -2126;PO # OHM SIGN +2126;AL # OHM SIGN 2127;AL # INVERTED OHM SIGN 2128;AL # BLACK-LETTER CAPITAL Z 2129;AL # TURNED GREEK SMALL LETTER IOTA @@ -5819,7 +5819,7 @@ 213D;AL # DOUBLE-STRUCK SMALL GAMMA 213E;AL # DOUBLE-STRUCK CAPITAL GAMMA 213F;AL # DOUBLE-STRUCK CAPITAL PI -2140;AI # DOUBLE-STRUCK N-ARY SUMMATION +2140;AL # DOUBLE-STRUCK N-ARY SUMMATION 2141;AL # TURNED SANS-SERIF CAPITAL G 2142;AL # TURNED SANS-SERIF CAPITAL L 2143;AL # REVERSED SANS-SERIF CAPITAL L @@ -6603,22 +6603,22 @@ 24BD;AI # CIRCLED LATIN CAPITAL LETTER H 24BE;AI # CIRCLED LATIN CAPITAL LETTER I 24BF;AI # CIRCLED LATIN CAPITAL LETTER J -24C0;AL # CIRCLED LATIN CAPITAL LETTER K -24C1;AL # CIRCLED LATIN CAPITAL LETTER L -24C2;AL # CIRCLED LATIN CAPITAL LETTER M -24C3;AL # CIRCLED LATIN CAPITAL LETTER N -24C4;AL # CIRCLED LATIN CAPITAL LETTER O -24C5;AL # CIRCLED LATIN CAPITAL LETTER P -24C6;AL # CIRCLED LATIN CAPITAL LETTER Q -24C7;AL # CIRCLED LATIN CAPITAL LETTER R -24C8;AL # CIRCLED LATIN CAPITAL LETTER S -24C9;AL # CIRCLED LATIN CAPITAL LETTER T -24CA;AL # CIRCLED LATIN CAPITAL LETTER U -24CB;AL # CIRCLED LATIN CAPITAL LETTER V -24CC;AL # CIRCLED LATIN CAPITAL LETTER W -24CD;AL # CIRCLED LATIN CAPITAL LETTER X -24CE;AL # CIRCLED LATIN CAPITAL LETTER Y -24CF;AL # CIRCLED LATIN CAPITAL LETTER Z +24C0;AI # CIRCLED LATIN CAPITAL LETTER K +24C1;AI # CIRCLED LATIN CAPITAL LETTER L +24C2;AI # CIRCLED LATIN CAPITAL LETTER M +24C3;AI # CIRCLED LATIN CAPITAL LETTER N +24C4;AI # CIRCLED LATIN CAPITAL LETTER O +24C5;AI # CIRCLED LATIN CAPITAL LETTER P +24C6;AI # CIRCLED LATIN CAPITAL LETTER Q +24C7;AI # CIRCLED LATIN CAPITAL LETTER R +24C8;AI # CIRCLED LATIN CAPITAL LETTER S +24C9;AI # CIRCLED LATIN CAPITAL LETTER T +24CA;AI # CIRCLED LATIN CAPITAL LETTER U +24CB;AI # CIRCLED LATIN CAPITAL LETTER V +24CC;AI # CIRCLED LATIN CAPITAL LETTER W +24CD;AI # CIRCLED LATIN CAPITAL LETTER X +24CE;AI # CIRCLED LATIN CAPITAL LETTER Y +24CF;AI # CIRCLED LATIN CAPITAL LETTER Z 24D0;AI # CIRCLED LATIN SMALL LETTER A 24D1;AI # CIRCLED LATIN SMALL LETTER B 24D2;AI # CIRCLED LATIN SMALL LETTER C @@ -6645,7 +6645,7 @@ 24E7;AI # CIRCLED LATIN SMALL LETTER X 24E8;AI # CIRCLED LATIN SMALL LETTER Y 24E9;AI # CIRCLED LATIN SMALL LETTER Z -24EA;AL # CIRCLED DIGIT ZERO +24EA;AI # CIRCLED DIGIT ZERO 24EB;AI # NEGATIVE CIRCLED NUMBER ELEVEN 24EC;AI # NEGATIVE CIRCLED NUMBER TWELVE 24ED;AI # NEGATIVE CIRCLED NUMBER THIRTEEN @@ -7173,36 +7173,36 @@ 2773;CL # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT 2774;OP # MEDIUM LEFT CURLY BRACKET ORNAMENT 2775;CL # MEDIUM RIGHT CURLY BRACKET ORNAMENT -2776;AL # DINGBAT NEGATIVE CIRCLED DIGIT ONE -2777;AL # DINGBAT NEGATIVE CIRCLED DIGIT TWO -2778;AL # DINGBAT NEGATIVE CIRCLED DIGIT THREE -2779;AL # DINGBAT NEGATIVE CIRCLED DIGIT FOUR -277A;AL # DINGBAT NEGATIVE CIRCLED DIGIT FIVE -277B;AL # DINGBAT NEGATIVE CIRCLED DIGIT SIX -277C;AL # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN -277D;AL # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT -277E;AL # DINGBAT NEGATIVE CIRCLED DIGIT NINE -277F;AL # DINGBAT NEGATIVE CIRCLED NUMBER TEN -2780;AL # DINGBAT CIRCLED SANS-SERIF DIGIT ONE -2781;AL # DINGBAT CIRCLED SANS-SERIF DIGIT TWO -2782;AL # DINGBAT CIRCLED SANS-SERIF DIGIT THREE -2783;AL # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR -2784;AL # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE -2785;AL # DINGBAT CIRCLED SANS-SERIF DIGIT SIX -2786;AL # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN -2787;AL # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT -2788;AL # DINGBAT CIRCLED SANS-SERIF DIGIT NINE -2789;AL # DINGBAT CIRCLED SANS-SERIF NUMBER TEN -278A;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE -278B;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO -278C;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE -278D;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR -278E;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE -278F;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX -2790;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN -2791;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT -2792;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE -2793;AL # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN +2776;AI # DINGBAT NEGATIVE CIRCLED DIGIT ONE +2777;AI # DINGBAT NEGATIVE CIRCLED DIGIT TWO +2778;AI # DINGBAT NEGATIVE CIRCLED DIGIT THREE +2779;AI # DINGBAT NEGATIVE CIRCLED DIGIT FOUR +277A;AI # DINGBAT NEGATIVE CIRCLED DIGIT FIVE +277B;AI # DINGBAT NEGATIVE CIRCLED DIGIT SIX +277C;AI # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN +277D;AI # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT +277E;AI # DINGBAT NEGATIVE CIRCLED DIGIT NINE +277F;AI # DINGBAT NEGATIVE CIRCLED NUMBER TEN +2780;AI # DINGBAT CIRCLED SANS-SERIF DIGIT ONE +2781;AI # DINGBAT CIRCLED SANS-SERIF DIGIT TWO +2782;AI # DINGBAT CIRCLED SANS-SERIF DIGIT THREE +2783;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR +2784;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE +2785;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SIX +2786;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN +2787;AI # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT +2788;AI # DINGBAT CIRCLED SANS-SERIF DIGIT NINE +2789;AI # DINGBAT CIRCLED SANS-SERIF NUMBER TEN +278A;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE +278B;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO +278C;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE +278D;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR +278E;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE +278F;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX +2790;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN +2791;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT +2792;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE +2793;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN 2794;AL # HEAVY WIDE-HEADED RIGHTWARDS ARROW 2798;AL # HEAVY SOUTH EAST ARROW 2799;AL # HEAVY RIGHTWARDS ARROW diff --git a/gnu/usr.bin/perl/lib/unicore/PropList.txt b/gnu/usr.bin/perl/lib/unicore/PropList.txt index 90176ad019b..964c40ac567 100644 --- a/gnu/usr.bin/perl/lib/unicore/PropList.txt +++ b/gnu/usr.bin/perl/lib/unicore/PropList.txt @@ -1,17 +1,16 @@ -# PropList-4.0.0.txt -# Date: 2003-03-20, 20:07:40 GMT [MD] +# PropList-4.0.1.txt +# Date: 2004-03-02, 02:42:40 GMT [MD] # -# Unicode Character Database: Extended Properties +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see UCD.html -# Note: Unassigned and Noncharacter codepoints may be omitted -# if they have default property values. -# ================================================ # ================================================ -0009..000D ; White_Space # Cc [5] .. +0009..000D ; White_Space # Cc [5] .. 0020 ; White_Space # Zs SPACE -0085 ; White_Space # Cc +0085 ; White_Space # Cc 00A0 ; White_Space # Zs NO-BREAK SPACE 1680 ; White_Space # Zs OGHAM SPACE MARK 180E ; White_Space # Zs MONGOLIAN VOWEL SEPARATOR @@ -112,6 +111,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET 037E ; Terminal_Punctuation # Po GREEK QUESTION MARK 0387 ; Terminal_Punctuation # Po GREEK ANO TELEIA 0589 ; Terminal_Punctuation # Po ARMENIAN FULL STOP +05C3 ; Terminal_Punctuation # Po HEBREW PUNCTUATION SOF PASUQ 060C ; Terminal_Punctuation # Po ARABIC COMMA 061B ; Terminal_Punctuation # Po ARABIC SEMICOLON 061F ; Terminal_Punctuation # Po ARABIC QUESTION MARK @@ -120,6 +120,8 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET 070C ; Terminal_Punctuation # Po SYRIAC HARKLEAN METOBELUS 0964..0965 ; Terminal_Punctuation # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA 0E5A..0E5B ; Terminal_Punctuation # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT +0F08 ; Terminal_Punctuation # Po TIBETAN MARK SBRUL SHAD +0F0D..0F12 ; Terminal_Punctuation # Po [6] TIBETAN MARK SHAD..TIBETAN MARK RGYA GRAM SHAD 104A..104B ; Terminal_Punctuation # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION 1361..1368 ; Terminal_Punctuation # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR 166D..166E ; Terminal_Punctuation # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP @@ -142,63 +144,80 @@ FF1F ; Terminal_Punctuation # Po FULLWIDTH QUESTION MARK FF61 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC FULL STOP FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA -# Total code points: 78 +# Total code points: 86 # ================================================ -0028 ; Other_Math # Ps LEFT PARENTHESIS -0029 ; Other_Math # Pe RIGHT PARENTHESIS -002A ; Other_Math # Po ASTERISK -002D ; Other_Math # Pd HYPHEN-MINUS -002F ; Other_Math # Po SOLIDUS -005B ; Other_Math # Ps LEFT SQUARE BRACKET -005C ; Other_Math # Po REVERSE SOLIDUS -005D ; Other_Math # Pe RIGHT SQUARE BRACKET 005E ; Other_Math # Sk CIRCUMFLEX ACCENT -007B ; Other_Math # Ps LEFT CURLY BRACKET -007D ; Other_Math # Pe RIGHT CURLY BRACKET +03D0..03D2 ; Other_Math # L& [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL +03D5 ; Other_Math # L& GREEK PHI SYMBOL +03F0..03F1 ; Other_Math # L& [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL +03F4..03F5 ; Other_Math # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL 2016 ; Other_Math # Po DOUBLE VERTICAL LINE 2032..2034 ; Other_Math # Po [3] PRIME..TRIPLE PRIME +2040 ; Other_Math # Pc CHARACTER TIE +2061..2063 ; Other_Math # Cf [3] FUNCTION APPLICATION..INVISIBLE SEPARATOR 207D ; Other_Math # Ps SUPERSCRIPT LEFT PARENTHESIS 207E ; Other_Math # Pe SUPERSCRIPT RIGHT PARENTHESIS 208D ; Other_Math # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Other_Math # Pe SUBSCRIPT RIGHT PARENTHESIS 20D0..20DC ; Other_Math # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20E1 ; Other_Math # Mn COMBINING LEFT RIGHT ARROW ABOVE +20E5..20E6 ; Other_Math # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY 2102 ; Other_Math # L& DOUBLE-STRUCK CAPITAL C 210A..2113 ; Other_Math # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; Other_Math # L& DOUBLE-STRUCK CAPITAL N 2119..211D ; Other_Math # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; Other_Math # L& DOUBLE-STRUCK CAPITAL Z 2128 ; Other_Math # L& BLACK-LETTER CAPITAL Z +2129 ; Other_Math # So TURNED GREEK SMALL LETTER IOTA 212C..212D ; Other_Math # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C 212F..2131 ; Other_Math # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F 2133..2134 ; Other_Math # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O 2135..2138 ; Other_Math # Lo [4] ALEF SYMBOL..DALET SYMBOL -FE35 ; Other_Math # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS -FE36 ; Other_Math # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS -FE37 ; Other_Math # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET -FE38 ; Other_Math # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET -FE47 ; Other_Math # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET -FE48 ; Other_Math # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET -FE59 ; Other_Math # Ps SMALL LEFT PARENTHESIS -FE5A ; Other_Math # Pe SMALL RIGHT PARENTHESIS -FE5B ; Other_Math # Ps SMALL LEFT CURLY BRACKET -FE5C ; Other_Math # Pe SMALL RIGHT CURLY BRACKET +213D..213F ; Other_Math # L& [3] DOUBLE-STRUCK SMALL GAMMA..DOUBLE-STRUCK CAPITAL PI +2145..2149 ; Other_Math # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J +23B7 ; Other_Math # So RADICAL SYMBOL BOTTOM +23D0 ; Other_Math # So VERTICAL LINE EXTENSION +27E6 ; Other_Math # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7 ; Other_Math # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8 ; Other_Math # Ps MATHEMATICAL LEFT ANGLE BRACKET +27E9 ; Other_Math # Pe MATHEMATICAL RIGHT ANGLE BRACKET +27EA ; Other_Math # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB ; Other_Math # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +2983 ; Other_Math # Ps LEFT WHITE CURLY BRACKET +2984 ; Other_Math # Pe RIGHT WHITE CURLY BRACKET +2985 ; Other_Math # Ps LEFT WHITE PARENTHESIS +2986 ; Other_Math # Pe RIGHT WHITE PARENTHESIS +2987 ; Other_Math # Ps Z NOTATION LEFT IMAGE BRACKET +2988 ; Other_Math # Pe Z NOTATION RIGHT IMAGE BRACKET +2989 ; Other_Math # Ps Z NOTATION LEFT BINDING BRACKET +298A ; Other_Math # Pe Z NOTATION RIGHT BINDING BRACKET +298B ; Other_Math # Ps LEFT SQUARE BRACKET WITH UNDERBAR +298C ; Other_Math # Pe RIGHT SQUARE BRACKET WITH UNDERBAR +298D ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F ; Other_Math # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990 ; Other_Math # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991 ; Other_Math # Ps LEFT ANGLE BRACKET WITH DOT +2992 ; Other_Math # Pe RIGHT ANGLE BRACKET WITH DOT +2993 ; Other_Math # Ps LEFT ARC LESS-THAN BRACKET +2994 ; Other_Math # Pe RIGHT ARC GREATER-THAN BRACKET +2995 ; Other_Math # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET +2996 ; Other_Math # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET +2997 ; Other_Math # Ps LEFT BLACK TORTOISE SHELL BRACKET +2998 ; Other_Math # Pe RIGHT BLACK TORTOISE SHELL BRACKET +29D8 ; Other_Math # Ps LEFT WIGGLY FENCE +29D9 ; Other_Math # Pe RIGHT WIGGLY FENCE +29DA ; Other_Math # Ps LEFT DOUBLE WIGGLY FENCE +29DB ; Other_Math # Pe RIGHT DOUBLE WIGGLY FENCE +29FC ; Other_Math # Ps LEFT-POINTING CURVED ANGLE BRACKET +29FD ; Other_Math # Pe RIGHT-POINTING CURVED ANGLE BRACKET FE61 ; Other_Math # Po SMALL ASTERISK FE63 ; Other_Math # Pd SMALL HYPHEN-MINUS FE68 ; Other_Math # Po SMALL REVERSE SOLIDUS -FF08 ; Other_Math # Ps FULLWIDTH LEFT PARENTHESIS -FF09 ; Other_Math # Pe FULLWIDTH RIGHT PARENTHESIS -FF0A ; Other_Math # Po FULLWIDTH ASTERISK -FF0D ; Other_Math # Pd FULLWIDTH HYPHEN-MINUS -FF0F ; Other_Math # Po FULLWIDTH SOLIDUS -FF3B ; Other_Math # Ps FULLWIDTH LEFT SQUARE BRACKET FF3C ; Other_Math # Po FULLWIDTH REVERSE SOLIDUS -FF3D ; Other_Math # Pe FULLWIDTH RIGHT SQUARE BRACKET FF3E ; Other_Math # Sk FULLWIDTH CIRCUMFLEX ACCENT -FF5B ; Other_Math # Ps FULLWIDTH LEFT CURLY BRACKET -FF5D ; Other_Math # Pe FULLWIDTH RIGHT CURLY BRACKET 1D400..1D454 ; Other_Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; Other_Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Other_Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D @@ -231,7 +250,7 @@ FF5D ; Other_Math # Pe FULLWIDTH RIGHT CURLY BRACKET 1D7C4..1D7C9 ; Other_Math # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL 1D7CE..1D7FF ; Other_Math # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE -# Total code points: 1069 +# Total code points: 1099 # ================================================ @@ -537,24 +556,24 @@ FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND # ================================================ -FDD0..FDEF ; Noncharacter_Code_Point # Cn [32] -FFFE..FFFF ; Noncharacter_Code_Point # Cn [2] -1FFFE..1FFFF ; Noncharacter_Code_Point # Cn [2] -2FFFE..2FFFF ; Noncharacter_Code_Point # Cn [2] -3FFFE..3FFFF ; Noncharacter_Code_Point # Cn [2] -4FFFE..4FFFF ; Noncharacter_Code_Point # Cn [2] -5FFFE..5FFFF ; Noncharacter_Code_Point # Cn [2] -6FFFE..6FFFF ; Noncharacter_Code_Point # Cn [2] -7FFFE..7FFFF ; Noncharacter_Code_Point # Cn [2] -8FFFE..8FFFF ; Noncharacter_Code_Point # Cn [2] -9FFFE..9FFFF ; Noncharacter_Code_Point # Cn [2] -AFFFE..AFFFF ; Noncharacter_Code_Point # Cn [2] -BFFFE..BFFFF ; Noncharacter_Code_Point # Cn [2] -CFFFE..CFFFF ; Noncharacter_Code_Point # Cn [2] -DFFFE..DFFFF ; Noncharacter_Code_Point # Cn [2] -EFFFE..EFFFF ; Noncharacter_Code_Point # Cn [2] -FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] -10FFFE..10FFFF; Noncharacter_Code_Point # Cn [2] +FDD0..FDEF ; Noncharacter_Code_Point # Cn [32] .. +FFFE..FFFF ; Noncharacter_Code_Point # Cn [2] .. +1FFFE..1FFFF ; Noncharacter_Code_Point # Cn [2] .. +2FFFE..2FFFF ; Noncharacter_Code_Point # Cn [2] .. +3FFFE..3FFFF ; Noncharacter_Code_Point # Cn [2] .. +4FFFE..4FFFF ; Noncharacter_Code_Point # Cn [2] .. +5FFFE..5FFFF ; Noncharacter_Code_Point # Cn [2] .. +6FFFE..6FFFF ; Noncharacter_Code_Point # Cn [2] .. +7FFFE..7FFFF ; Noncharacter_Code_Point # Cn [2] .. +8FFFE..8FFFF ; Noncharacter_Code_Point # Cn [2] .. +9FFFE..9FFFF ; Noncharacter_Code_Point # Cn [2] .. +AFFFE..AFFFF ; Noncharacter_Code_Point # Cn [2] .. +BFFFE..BFFFF ; Noncharacter_Code_Point # Cn [2] .. +CFFFE..CFFFF ; Noncharacter_Code_Point # Cn [2] .. +DFFFE..DFFFF ; Noncharacter_Code_Point # Cn [2] .. +EFFFE..EFFFF ; Noncharacter_Code_Point # Cn [2] .. +FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] .. +10FFFE..10FFFF; Noncharacter_Code_Point # Cn [2] .. # Total code points: 66 @@ -572,10 +591,11 @@ FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] 0D57 ; Other_Grapheme_Extend # Mc MALAYALAM AU LENGTH MARK 0DCF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN AELA-PILLA 0DDF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA +200C..200D ; Other_Grapheme_Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER 1D165 ; Other_Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM 1D16E..1D16F ; Other_Grapheme_Extend # Mc [2] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-2 -# Total code points: 16 +# Total code points: 18 # ================================================ @@ -636,20 +656,17 @@ FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..C 034F ; Other_Default_Ignorable_Code_Point # Mn COMBINING GRAPHEME JOINER 115F..1160 ; Other_Default_Ignorable_Code_Point # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER -180B..180D ; Other_Default_Ignorable_Code_Point # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE -200B ; Other_Default_Ignorable_Code_Point # Zs ZERO WIDTH SPACE -2064..2069 ; Other_Default_Ignorable_Code_Point # Cn [6] +200B ; Other_Default_Ignorable_Code_Point # Cf ZERO WIDTH SPACE +2064..2069 ; Other_Default_Ignorable_Code_Point # Cn [6] .. 3164 ; Other_Default_Ignorable_Code_Point # Lo HANGUL FILLER -FE00..FE0F ; Other_Default_Ignorable_Code_Point # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FFA0 ; Other_Default_Ignorable_Code_Point # Lo HALFWIDTH HANGUL FILLER -FFF0..FFF8 ; Other_Default_Ignorable_Code_Point # Cn [9] -E0000 ; Other_Default_Ignorable_Code_Point # Cn -E0002..E001F ; Other_Default_Ignorable_Code_Point # Cn [30] -E0080..E00FF ; Other_Default_Ignorable_Code_Point # Cn [128] -E0100..E01EF ; Other_Default_Ignorable_Code_Point # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 -E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] +FFF0..FFF8 ; Other_Default_Ignorable_Code_Point # Cn [9] .. +E0000 ; Other_Default_Ignorable_Code_Point # Cn +E0002..E001F ; Other_Default_Ignorable_Code_Point # Cn [30] .. +E0080..E00FF ; Other_Default_Ignorable_Code_Point # Cn [128] .. +E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] .. -# Total code points: 4039 +# Total code points: 3780 # ================================================ @@ -665,14 +682,31 @@ E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] 0069..006A ; Soft_Dotted # L& [2] LATIN SMALL LETTER I..LATIN SMALL LETTER J 012F ; Soft_Dotted # L& LATIN SMALL LETTER I WITH OGONEK 0268 ; Soft_Dotted # L& LATIN SMALL LETTER I WITH STROKE +029D ; Soft_Dotted # L& LATIN SMALL LETTER J WITH CROSSED-TAIL +02B2 ; Soft_Dotted # Lm MODIFIER LETTER SMALL J +03F3 ; Soft_Dotted # L& GREEK LETTER YOT 0456 ; Soft_Dotted # L& CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 0458 ; Soft_Dotted # L& CYRILLIC SMALL LETTER JE 1D62 ; Soft_Dotted # L& LATIN SUBSCRIPT SMALL LETTER I 1E2D ; Soft_Dotted # L& LATIN SMALL LETTER I WITH TILDE BELOW 1ECB ; Soft_Dotted # L& LATIN SMALL LETTER I WITH DOT BELOW 2071 ; Soft_Dotted # L& SUPERSCRIPT LATIN SMALL LETTER I - -# Total code points: 10 +2148..2149 ; Soft_Dotted # L& [2] DOUBLE-STRUCK ITALIC SMALL I..DOUBLE-STRUCK ITALIC SMALL J +1D422..1D423 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SMALL I..MATHEMATICAL BOLD SMALL J +1D456..1D457 ; Soft_Dotted # L& [2] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL J +1D48A..1D48B ; Soft_Dotted # L& [2] MATHEMATICAL BOLD ITALIC SMALL I..MATHEMATICAL BOLD ITALIC SMALL J +1D4BE..1D4BF ; Soft_Dotted # L& [2] MATHEMATICAL SCRIPT SMALL I..MATHEMATICAL SCRIPT SMALL J +1D4F2..1D4F3 ; Soft_Dotted # L& [2] MATHEMATICAL BOLD SCRIPT SMALL I..MATHEMATICAL BOLD SCRIPT SMALL J +1D526..1D527 ; Soft_Dotted # L& [2] MATHEMATICAL FRAKTUR SMALL I..MATHEMATICAL FRAKTUR SMALL J +1D55A..1D55B ; Soft_Dotted # L& [2] MATHEMATICAL DOUBLE-STRUCK SMALL I..MATHEMATICAL DOUBLE-STRUCK SMALL J +1D58E..1D58F ; Soft_Dotted # L& [2] MATHEMATICAL BOLD FRAKTUR SMALL I..MATHEMATICAL BOLD FRAKTUR SMALL J +1D5C2..1D5C3 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF SMALL I..MATHEMATICAL SANS-SERIF SMALL J +1D5F6..1D5F7 ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD SMALL I..MATHEMATICAL SANS-SERIF BOLD SMALL J +1D62A..1D62B ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J +1D65E..1D65F ; Soft_Dotted # L& [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J +1D692..1D693 ; Soft_Dotted # L& [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J + +# Total code points: 41 # ================================================ @@ -689,3 +723,41 @@ E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] # Total code points: 4 +# ================================================ + +0021 ; STerm # Po EXCLAMATION MARK +002E ; STerm # Po FULL STOP +003F ; STerm # Po QUESTION MARK +055C ; STerm # Po ARMENIAN EXCLAMATION MARK +055E ; STerm # Po ARMENIAN QUESTION MARK +0589 ; STerm # Po ARMENIAN FULL STOP +061F ; STerm # Po ARABIC QUESTION MARK +06D4 ; STerm # Po ARABIC FULL STOP +0700..0702 ; STerm # Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP +0964..0965 ; STerm # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA +104A..104B ; STerm # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION +1362 ; STerm # Po ETHIOPIC FULL STOP +1367..1368 ; STerm # Po [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR +166E ; STerm # Po CANADIAN SYLLABICS FULL STOP +1803 ; STerm # Po MONGOLIAN FULL STOP +1809 ; STerm # Po MONGOLIAN MANCHU FULL STOP +1944..1945 ; STerm # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK +203C..203D ; STerm # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG +2047..2049 ; STerm # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK +3002 ; STerm # Po IDEOGRAPHIC FULL STOP +FE52 ; STerm # Po SMALL FULL STOP +FE56..FE57 ; STerm # Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK +FF01 ; STerm # Po FULLWIDTH EXCLAMATION MARK +FF0E ; STerm # Po FULLWIDTH FULL STOP +FF1F ; STerm # Po FULLWIDTH QUESTION MARK +FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP + +# Total code points: 36 + +# ================================================ + +180B..180D ; Variation_Selector # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE +FE00..FE0F ; Variation_Selector # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 +E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + +# Total code points: 259 diff --git a/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt b/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt index fe82f236177..74460d5c478 100644 --- a/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt +++ b/gnu/usr.bin/perl/lib/unicore/PropValueAliases.txt @@ -1,6 +1,10 @@ -# PropertyValueAliases-4.0.0.txt -# Date: 2003-03-12, 23:46:08 GMT [MD] +# PropertyValueAliases-4.0.1.txt +# Date: 2004-03-02, 19:46:47 GMT [MD] # +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html # This file contains aliases for property values used in the UCD. # These names can be used for XML formats of UCD data, for regular-expression # property tests, and other programmatic textual descriptions of Unicode data. @@ -12,11 +16,10 @@ # FORMAT # # Each line describes a property value name. -# This consists of three fields, separated by semicolons. +# This consists of three or more fields, separated by semicolons. # # First Field: The first field describes the property for which that # property value name is used. -# There is one special pseudo-property: "qc" stands for any quick-check property # # Second Field: The second field is an abbreviated name. # If there is no abbreviated name available, the field is marked with "n/a". @@ -26,32 +29,44 @@ # In the case of ccc, there are 4 fields. The second field is numeric, third # is abbreviated, and fourth is long. # -# With loose matching of property names, the case distinctions, whitespace, -# and '_' are ignored. +# The above are the preferred aliases. Other aliases may be listed in additional fields. # -# NOTE: Currently there is at most one abbreviated name and one long name for -# property value. However, in the future additional aliases may be added. -# In such a case, the first line for the property value would have -# the preferred alias for output. +# Loose matching should be applied to all property names and property values, with +# the exception of String Property values. With loose matching of property names and +# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property +# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1". # -# NOTE: The property value names are NOT unique across properties, especially -# with loose matches. For example: +# NOTE: Property value names are NOT unique across properties. For example: # -# AL means Arabic Letter for the Bidi_Class property, and -# AL means Alpha_Left for the Combining_Class property, and -# AL means Alphabetic for the Line_Break property. +# AL means Arabic Letter for the Bidi_Class property, and +# AL means Alpha_Left for the Combining_Class property, and +# AL means Alphabetic for the Line_Break property. # # In addition, some property names may be the same as some property value names. # For example: # -# cc means Combining_Class property, and -# cc means the General_Category property value Control (cc) +# sc means the Script property, and +# Sc means the General_Category property value Currency_Symbol (Sc) # # The combination of property value and property name is, however, unique. -# For more information, see UTR #18: Regular Expression Guidelines +# +# For more information, see UTS #18: Regular Expression Guidelines # ================================================ +# Age (age) + +age; n/a ; 1.1 +age; n/a ; 2.0 +age; n/a ; 2.1 +age; n/a ; 3.0 +age; n/a ; 3.1 +age; n/a ; 3.2 +age; n/a ; 4.0 +age; n/a ; unassigned + +# Bidi_Class (bc) + bc ; AL ; Arabic_Letter bc ; AN ; Arabic_Number bc ; B ; Paragraph_Separator @@ -72,6 +87,8 @@ bc ; RLO ; Right_To_Left_Override bc ; S ; Segment_Separator bc ; WS ; White_Space +# Block (blk) + blk; n/a ; Aegean_Numbers blk; n/a ; Alphabetic_Presentation_Forms blk; n/a ; Arabic @@ -105,7 +122,7 @@ blk; n/a ; Control_Pictures blk; n/a ; Currency_Symbols blk; n/a ; Cypriot_Syllabary blk; n/a ; Cyrillic -blk; n/a ; Cyrillic_Supplementary +blk; n/a ; Cyrillic_Supplement ; Cyrillic_Supplementary blk; n/a ; Deseret blk; n/a ; Devanagari blk; n/a ; Dingbats @@ -139,10 +156,10 @@ blk; n/a ; Katakana_Phonetic_Extensions blk; n/a ; Khmer blk; n/a ; Khmer_Symbols blk; n/a ; Lao -blk; n/a ; Latin_Extended_Additional +blk; n/a ; Latin-1_Supplement blk; n/a ; Latin_Extended-A blk; n/a ; Latin_Extended-B -blk; n/a ; Latin-1_Supplement +blk; n/a ; Latin_Extended_Additional blk; n/a ; Letterlike_Symbols blk; n/a ; Limbu blk; n/a ; Linear_B_Ideograms @@ -199,8 +216,14 @@ blk; n/a ; Yi_Radicals blk; n/a ; Yi_Syllables blk; n/a ; Yijing_Hexagram_Symbols +# Canonical_Combining_Class (ccc) + ccc; 0; NR ; Not_Reordered ccc; 1; OV ; Overlay +ccc; 7; NK ; Nukta +ccc; 8; KV ; Kana_Voicing +ccc; 9; VR ; Virama +ccc; 200; ATBL ; Attached_Below_Left ccc; 202; ATB ; Attached_Below ccc; 216; ATAR ; Attached_Above_Right ccc; 218; BL ; Below_Left @@ -214,28 +237,29 @@ ccc; 232; AR ; Above_Right ccc; 233; DB ; Double_Below ccc; 234; DA ; Double_Above ccc; 240; IS ; Iota_Subscript -ccc; 7; NK ; Nukta -ccc; 8; KV ; Kana_Voicing -ccc; 9; VR ; Virama -dt ; can ; canonical -dt ; com ; compat -dt ; enc ; circle -dt ; fin ; final -dt ; font ; font -dt ; fra ; fraction -dt ; init ; initial -dt ; iso ; isolated -dt ; med ; medial -dt ; n/a ; none -dt ; nar ; narrow -dt ; nb ; noBreak -dt ; sml ; small -dt ; sqr ; square -dt ; sub ; sub -dt ; sup ; super -dt ; vert ; vertical -dt ; wide ; wide +# Decomposition_Type (dt) + +dt ; can ; Canonical +dt ; com ; Compat +dt ; enc ; Circle +dt ; fin ; Final +dt ; font ; Font +dt ; fra ; Fraction +dt ; init ; Initial +dt ; iso ; Isolated +dt ; med ; Medial +dt ; nar ; Narrow +dt ; nb ; Nobreak +dt ; none ; None +dt ; sml ; Small +dt ; sqr ; Square +dt ; sub ; Sub +dt ; sup ; Super +dt ; vert ; Vertical +dt ; wide ; Wide + +# East_Asian_Width (ea) ea ; A ; Ambiguous ea ; F ; Fullwidth @@ -244,6 +268,8 @@ ea ; N ; Neutral ea ; Na ; Narrow ea ; W ; Wide +# General_Category (gc) + gc ; C ; Other # Cc | Cf | Cn | Co | Cs gc ; Cc ; Control gc ; Cf ; Format @@ -283,6 +309,8 @@ gc ; Zl ; Line_Separator gc ; Zp ; Paragraph_Separator gc ; Zs ; Space_Separator +# Hangul_Syllable_Type (hst) + hst; L ; Leading_Jamo hst; LV ; LV_Syllable hst; LVT ; LVT_Syllable @@ -290,60 +318,64 @@ hst; NA ; Not_Applicable hst; T ; Trailing_Jamo hst; V ; Vowel_Jamo -jg ; n/a ; AIN -jg ; n/a ; ALAPH -jg ; n/a ; ALEF -jg ; n/a ; BEH -jg ; n/a ; BETH -jg ; n/a ; DAL -jg ; n/a ; DALATH_RISH +# Joining_Group (jg) + +jg ; n/a ; Ain +jg ; n/a ; Alaph +jg ; n/a ; Alef +jg ; n/a ; Beh +jg ; n/a ; Beth +jg ; n/a ; Dal +jg ; n/a ; Dalath_Rish jg ; n/a ; E -jg ; n/a ; FE -jg ; n/a ; FEH -jg ; n/a ; FINAL_SEMKATH -jg ; n/a ; GAF -jg ; n/a ; GAMAL -jg ; n/a ; HAH -jg ; n/a ; HAMZA_ON_HEH_GOAL -jg ; n/a ; HE -jg ; n/a ; HEH -jg ; n/a ; HEH_GOAL -jg ; n/a ; HETH -jg ; n/a ; KAF -jg ; n/a ; KAPH -jg ; n/a ; KHAPH -jg ; n/a ; KNOTTED_HEH -jg ; n/a ; LAM -jg ; n/a ; LAMADH -jg ; n/a ; MEEM -jg ; n/a ; MIM -jg ; n/a ; NO_JOINING_GROUP -jg ; n/a ; NOON -jg ; n/a ; NUN -jg ; n/a ; PE -jg ; n/a ; QAF -jg ; n/a ; QAPH -jg ; n/a ; REH -jg ; n/a ; REVERSED_PE -jg ; n/a ; SAD -jg ; n/a ; SADHE -jg ; n/a ; SEEN -jg ; n/a ; SEMKATH -jg ; n/a ; SHIN -jg ; n/a ; SWASH_KAF -jg ; n/a ; SYRIAC_WAW -jg ; n/a ; TAH -jg ; n/a ; TAW -jg ; n/a ; TEH_MARBUTA -jg ; n/a ; TETH -jg ; n/a ; WAW -jg ; n/a ; YEH -jg ; n/a ; YEH_BARREE -jg ; n/a ; YEH_WITH_TAIL -jg ; n/a ; YUDH -jg ; n/a ; YUDH_HE -jg ; n/a ; ZAIN -jg ; n/a ; ZHAIN +jg ; n/a ; Fe +jg ; n/a ; Feh +jg ; n/a ; Final_Semkath +jg ; n/a ; Gaf +jg ; n/a ; Gamal +jg ; n/a ; Hah +jg ; n/a ; Hamza_On_Heh_Goal +jg ; n/a ; He +jg ; n/a ; Heh +jg ; n/a ; Heh_Goal +jg ; n/a ; Heth +jg ; n/a ; Kaf +jg ; n/a ; Kaph +jg ; n/a ; Khaph +jg ; n/a ; Knotted_Heh +jg ; n/a ; Lam +jg ; n/a ; Lamadh +jg ; n/a ; Meem +jg ; n/a ; Mim +jg ; n/a ; No_Joining_Group +jg ; n/a ; Noon +jg ; n/a ; Nun +jg ; n/a ; Pe +jg ; n/a ; Qaf +jg ; n/a ; Qaph +jg ; n/a ; Reh +jg ; n/a ; Reversed_Pe +jg ; n/a ; Sad +jg ; n/a ; Sadhe +jg ; n/a ; Seen +jg ; n/a ; Semkath +jg ; n/a ; Shin +jg ; n/a ; Swash_Kaf +jg ; n/a ; Syriac_Waw +jg ; n/a ; Tah +jg ; n/a ; Taw +jg ; n/a ; Teh_Marbuta +jg ; n/a ; Teth +jg ; n/a ; Waw +jg ; n/a ; Yeh +jg ; n/a ; Yeh_Barree +jg ; n/a ; Yeh_With_Tail +jg ; n/a ; Yudh +jg ; n/a ; Yudh_He +jg ; n/a ; Zain +jg ; n/a ; Zhain + +# Joining_Type (jt) jt ; C ; Join_Causing jt ; D ; Dual_Joining @@ -352,6 +384,8 @@ jt ; R ; Right_Joining jt ; T ; Transparent jt ; U ; Non_Joining +# Line_Break (lb) + lb ; AI ; Ambiguous lb ; AL ; Alphabetic lb ; B2 ; Break_Both @@ -366,7 +400,7 @@ lb ; EX ; Exclamation lb ; GL ; Glue lb ; HY ; Hyphen lb ; ID ; Ideographic -lb ; IN ; Inseperable +lb ; IN ; Inseparable ; Inseperable lb ; IS ; Infix_Numeric lb ; LF ; Line_Feed lb ; NL ; Next_Line @@ -384,14 +418,36 @@ lb ; WJ ; Word_Joiner lb ; XX ; Unknown lb ; ZW ; ZWSpace -nt ; de ; Decimal -nt ; di ; Digit -nt ; n/a ; None -nt ; nu ; Numeric +# NFC_Quick_Check (NFC_QC) + +NFC_QC; M ; Maybe +NFC_QC; N ; No +NFC_QC; Y ; Yes + +# NFD_Quick_Check (NFD_QC) + +NFD_QC; N ; No +NFD_QC; Y ; Yes + +# NFKC_Quick_Check (NFKC_QC) + +NFKC_QC; M ; Maybe +NFKC_QC; N ; No +NFKC_QC; Y ; Yes + +# NFKD_Quick_Check (NFKD_QC) + +NFKD_QC; N ; No +NFKD_QC; Y ; Yes + +# Numeric_Type (nt) + +nt ; De ; Decimal +nt ; Di ; Digit +nt ; None ; None +nt ; Nu ; Numeric -qc ; M ; Maybe -qc ; N ; No -qc ; Y ; Yes +# Script (sc) sc ; Arab ; Arabic sc ; Armn ; Armenian @@ -416,6 +472,7 @@ sc ; Hani ; Han sc ; Hano ; Hanunoo sc ; Hebr ; Hebrew sc ; Hira ; Hiragana +sc ; Hrkt ; Katakana_Or_Hiragana sc ; Ital ; Old_Italic sc ; Kana ; Katakana sc ; Khmr ; Khmer diff --git a/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt b/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt index 1195e8f0ce7..cf9950f92b8 100644 --- a/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt +++ b/gnu/usr.bin/perl/lib/unicore/PropertyAliases.txt @@ -1,6 +1,10 @@ -# PropertyAliases-4.0.0.txt -# Date: 2003-03-12, 23:46:08 GMT [MD] +# PropertyAliases-4.0.1.txt +# Date: 2004-03-02, 19:47:55 GMT [MD] # +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see UCD.html # This file contains aliases for properties used in the UCD. # These names can be used for XML formats of UCD data, for regular-expression # property tests, and other programmatic textual descriptions of Unicode data. @@ -11,46 +15,50 @@ # # FORMAT # -# Each line has two fields, separated by semicolons. +# Each line has two or more fields, separated by semicolons. # # First Field: The first field is an abbreviated name for the property. # # Second Field: The second field is a long name # -# With loose matching of property names, the case distinctions, whitespace, -# and '_' are ignored. +# The above are the preferred aliases. Other aliases may be listed in additional fields. # -# NOTE: Currently there is at most one abbreviated name and one long name for -# each property. However, in the future additional aliases may be added. +# Loose matching should be applied to all property names and property values, with +# the exception of String Property values. With loose matching of property names and +# values, the case distinctions, whitespace, and '_' are ignored. For Numeric Property +# values, numeric equivalencies are applied: thus "01.00" is equivalent to "1". # -# NOTE: The property value names are NOT unique across properties, especially -# with loose matches. For example: +# NOTE: Property value names are NOT unique across properties. For example: # # AL means Arabic Letter for the Bidi_Class property, and # AL means Alpha_Left for the Combining_Class property, and # AL means Alphabetic for the Line_Break property. # # In addition, some property names may be the same as some property value names. +# For example: +# +# sc means the Script property, and +# Sc means the General_Category property value Currency_Symbol (Sc) # # The combination of property value and property name is, however, unique. -# For more information, see UTR #18: Regular Expression Guidelines +# +# For more information, see UTS #18: Regular Expression Guidelines # ================================================ # ================================================ -# Non-enumerated Properties +# Numeric Properties +# ================================================ +nv ; Numeric_Value + +# ================================================ +# String Properties # ================================================ -age ; Age -blk ; Block bmg ; Bidi_Mirroring_Glyph cf ; Case_Folding dm ; Decomposition_Mapping FC_NFKC ; FC_NFKC_Closure -isc ; ISO_Comment lc ; Lowercase_Mapping -na ; Name -na1 ; Unicode_1_Name -nv ; Numeric_Value scc ; Special_Case_Condition sfc ; Simple_Case_Folding slc ; Simple_Lowercase_Mapping @@ -58,10 +66,24 @@ stc ; Simple_Titlecase_Mapping suc ; Simple_Uppercase_Mapping tc ; Titlecase_Mapping uc ; Uppercase_Mapping + +# ================================================ +# Miscellaneous Properties +# ================================================ +isc ; ISO_Comment +na ; Name +na1 ; Unicode_1_Name URS ; Unicode_Radical_Stroke # ================================================ -# Enumerated Non-Binary Properties +# Catalog Properties +# ================================================ +age ; Age +blk ; Block +sc ; Script + +# ================================================ +# Enumerated Properties # ================================================ bc ; Bidi_Class ccc ; Canonical_Combining_Class @@ -77,7 +99,6 @@ NFD_QC ; NFD_Quick_Check NFKC_QC ; NFKC_Quick_Check NFKD_QC ; NFKD_Quick_Check nt ; Numeric_Type -sc ; Script # ================================================ # Binary Properties @@ -118,9 +139,11 @@ OUpper ; Other_Uppercase QMark ; Quotation_Mark Radical ; Radical SD ; Soft_Dotted +STerm ; STerm Term ; Terminal_Punctuation UIdeo ; Unified_Ideograph Upper ; Uppercase +VS ; Variation_Selector WSpace ; White_Space XIDC ; XID_Continue XIDS ; XID_Start @@ -128,3 +151,7 @@ XO_NFC ; Expands_On_NFC XO_NFD ; Expands_On_NFD XO_NFKC ; Expands_On_NFKC XO_NFKD ; Expands_On_NFKD + +# ================================================ +# Total: 82 + diff --git a/gnu/usr.bin/perl/lib/unicore/README.perl b/gnu/usr.bin/perl/lib/unicore/README.perl index d9961d34a9e..45c88d38d5e 100644 --- a/gnu/usr.bin/perl/lib/unicore/README.perl +++ b/gnu/usr.bin/perl/lib/unicore/README.perl @@ -2,11 +2,15 @@ The *.txt files were copied from http://www.unicode.org/Public/UNIDATA/ -as of Unicode 4.0.0 (April 2003). +as of Unicode 4.0.0 (April 2003), updated with + + http://www.unicode.org/Public/4.0-Update1/ + +as of Unicode 4.0.1 (March 2004) The two big files, NormalizationTest.txt (2.0MB) and Unihan.txt (25.7MB) were not included due to space considerations. Also NOT -included were any *.html files and the Derived* files +included were any *.html files and the Derived*.txt files DerivedAge.txt DerivedCoreProperties.txt @@ -16,7 +20,36 @@ To be 8.3-friendly, the lib/unicore/PropertyValueAliases.txt was renamed to be lib/unicore/PropValueAliases.txt, since otherwise it would have conflicted with lib/unicore/PropertyAliases.txt. -The *.pl files are generated from these files by the mktables script. +FOR PUMPKINS + +The *.pl files are generated from the *.txt files by the mktables script: + + cd lib/unicore + cp .../UnicodeOriginal/*.txt . + rm NormalizationTest.txt Unihan.txt Derived*.txt + p4 edit Properties *.pl */*.pl + perl ./mktables + p4 revert -a + cd ../.. + perl Porting/manicheck + +You need to update version by hand + + p4 edit version + ... + +If any new (or deleted, unlikely but not impossible) *.pl files are indicated: + + cd lib/unicore + p4 add ... + p4 delete ... + cd ../... + p4 edit MANIFEST + ... + +And finally: + + p4 submit -- -jhi@iki.fi +jhi@iki.fi; updated by nick@ccl4.org diff --git a/gnu/usr.bin/perl/lib/unicore/ReadMe.txt b/gnu/usr.bin/perl/lib/unicore/ReadMe.txt index b8869c0b42b..212bbdca7c4 100644 --- a/gnu/usr.bin/perl/lib/unicore/ReadMe.txt +++ b/gnu/usr.bin/perl/lib/unicore/ReadMe.txt @@ -1,41 +1,19 @@ -2003 April 16 +2004 March 30 -This directory contains the Unicode Character Database -data files. - -Currently, the Unicode Character Database files are at -the version level: - - Unicode Standard, Version 4.0.0 - -For information about the standard itself, see: - -http://www.unicode.org/versions/Unicode4.0.0/ +This directory contains the updated data +files for Version 4.0.1 of the Unicode Standard. Detailed documentation of the files constituting the Unicode Character Database (contributory data files for the standard itself) can be found in UCD.html. -Unihan.txt is a very large file and is unchanged from -its Unicode 3.2.0 version. A zipped version is -also provided for downloading convenience: Unihan.zip. - -The current Unicode 3.2.0 version of Unihan.txt is also available in -two compressed formats in the Unicode 3.2.0 update directory. See: -http://www.unicode.org/Public/3.2-Update/ -or -ftp://ftp.unicode.org/Public/3.2-Update/ - -Unihan-3.2.0.zip for Windows. (Use winzip) -Unihan-3.2.0.txt.gz for Unix. (Use gzip or gunzip) - -Note that the files are zipped in -exactly the same format they have on the server (with Unix -line endings). From a browser, right-clicking on -Unihan-3.2.0.zip will allow automatic download and unzip on a -Windows system with winzip installed. - +See: +http://www.unicode.org/versions/enumeratedversions.html +for exact details of the definition of Version 4.0.1 +of the Unicode Standard. That listing details which +contributory files are new in this version and which +are retained unchanged from prior versions of the standard. diff --git a/gnu/usr.bin/perl/lib/unicore/Scripts.txt b/gnu/usr.bin/perl/lib/unicore/Scripts.txt index 696720aaa04..2aa0630ddfe 100644 --- a/gnu/usr.bin/perl/lib/unicore/Scripts.txt +++ b/gnu/usr.bin/perl/lib/unicore/Scripts.txt @@ -1,774 +1,1336 @@ -# Scripts-4.0.0.txt -# Date: 2003-03-20, 20:07:48 GMT [MD] +# Scripts-4.0.1.txt +# Date: 2004-03-11, 18:47:37 GMT [MD] # +# Unicode Character Database +# Copyright (c) 1991-2004 Unicode, Inc. +# For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see UCD.html -# Note: Unassigned and Noncharacter codepoints may be omitted -# if they have default property values. -# ================================================ - - -# ================================================ -# Script -# All code points not explicitly listed in this file have the property -# value: COMMON. -# ================================================ - -0041..005A ; LATIN # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z -0061..007A ; LATIN # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z -00AA ; LATIN # L& FEMININE ORDINAL INDICATOR -00BA ; LATIN # L& MASCULINE ORDINAL INDICATOR -00C0..00D6 ; LATIN # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS -00D8..00F6 ; LATIN # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS -00F8..01BA ; LATIN # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL -01BB ; LATIN # Lo LATIN LETTER TWO WITH STROKE -01BC..01BF ; LATIN # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN -01C0..01C3 ; LATIN # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK -01C4..0236 ; LATIN # L& [115] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER T WITH CURL -0250..02AF ; LATIN # L& [96] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL -02B0..02B8 ; LATIN # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y -02E0..02E4 ; LATIN # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP -1D00..1D25 ; LATIN # L& [38] LATIN LETTER SMALL CAPITAL A..LATIN LETTER AIN -1D2C..1D5C ; LATIN # Lm [49] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL AIN -1D62..1D65 ; LATIN # L& [4] LATIN SUBSCRIPT SMALL LETTER I..LATIN SUBSCRIPT SMALL LETTER V -1D6B ; LATIN # L& LATIN SMALL LETTER UE -1E00..1E9B ; LATIN # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE -1EA0..1EF9 ; LATIN # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE -2071 ; LATIN # L& SUPERSCRIPT LATIN SMALL LETTER I -207F ; LATIN # L& SUPERSCRIPT LATIN SMALL LETTER N -212A..212B ; LATIN # L& [2] KELVIN SIGN..ANGSTROM SIGN -FB00..FB06 ; LATIN # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST -FF21..FF3A ; LATIN # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z -FF41..FF5A ; LATIN # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z + +# ================================================ + +# Property: Script + +# All code points not explicitly listed for Script +# have the value Common (Zyyy). + +# ================================================ + +0000..001F ; Common # Cc [32] .. +0020 ; Common # Zs SPACE +0021..0023 ; Common # Po [3] EXCLAMATION MARK..NUMBER SIGN +0024 ; Common # Sc DOLLAR SIGN +0025..0027 ; Common # Po [3] PERCENT SIGN..APOSTROPHE +0028 ; Common # Ps LEFT PARENTHESIS +0029 ; Common # Pe RIGHT PARENTHESIS +002A ; Common # Po ASTERISK +002B ; Common # Sm PLUS SIGN +002C ; Common # Po COMMA +002D ; Common # Pd HYPHEN-MINUS +002E..002F ; Common # Po [2] FULL STOP..SOLIDUS +0030..0039 ; Common # Nd [10] DIGIT ZERO..DIGIT NINE +003A..003B ; Common # Po [2] COLON..SEMICOLON +003C..003E ; Common # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN +003F..0040 ; Common # Po [2] QUESTION MARK..COMMERCIAL AT +005B ; Common # Ps LEFT SQUARE BRACKET +005C ; Common # Po REVERSE SOLIDUS +005D ; Common # Pe RIGHT SQUARE BRACKET +005E ; Common # Sk CIRCUMFLEX ACCENT +005F ; Common # Pc LOW LINE +0060 ; Common # Sk GRAVE ACCENT +007B ; Common # Ps LEFT CURLY BRACKET +007C ; Common # Sm VERTICAL LINE +007D ; Common # Pe RIGHT CURLY BRACKET +007E ; Common # Sm TILDE +007F..009F ; Common # Cc [33] .. +00A0 ; Common # Zs NO-BREAK SPACE +00A1 ; Common # Po INVERTED EXCLAMATION MARK +00A2..00A5 ; Common # Sc [4] CENT SIGN..YEN SIGN +00A6..00A7 ; Common # So [2] BROKEN BAR..SECTION SIGN +00A8 ; Common # Sk DIAERESIS +00A9 ; Common # So COPYRIGHT SIGN +00AB ; Common # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +00AC ; Common # Sm NOT SIGN +00AD ; Common # Cf SOFT HYPHEN +00AE ; Common # So REGISTERED SIGN +00AF ; Common # Sk MACRON +00B0 ; Common # So DEGREE SIGN +00B1 ; Common # Sm PLUS-MINUS SIGN +00B2..00B3 ; Common # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE +00B4 ; Common # Sk ACUTE ACCENT +00B5 ; Common # L& MICRO SIGN +00B6 ; Common # So PILCROW SIGN +00B7 ; Common # Po MIDDLE DOT +00B8 ; Common # Sk CEDILLA +00B9 ; Common # No SUPERSCRIPT ONE +00BB ; Common # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +00BC..00BE ; Common # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS +00BF ; Common # Po INVERTED QUESTION MARK +00D7 ; Common # Sm MULTIPLICATION SIGN +00F7 ; Common # Sm DIVISION SIGN +02B9..02C1 ; Common # Lm [9] MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP +02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD +02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON +02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT +02E5..02ED ; Common # Sk [9] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER UNASPIRATED +02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE +02EF..02FF ; Common # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW +037E ; Common # Po GREEK QUESTION MARK +0387 ; Common # Po GREEK ANO TELEIA +0589 ; Common # Po ARMENIAN FULL STOP +0600..0603 ; Common # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA +060C ; Common # Po ARABIC COMMA +061B ; Common # Po ARABIC SEMICOLON +061F ; Common # Po ARABIC QUESTION MARK +0640 ; Common # Lm ARABIC TATWEEL +0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE +06DD ; Common # Cf ARABIC END OF AYAH +0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA +0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN +0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT +10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR +16EB..16ED ; Common # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION +1735..1736 ; Common # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION +2000..200A ; Common # Zs [11] EN QUAD..HAIR SPACE +200B ; Common # Cf ZERO WIDTH SPACE +200E..200F ; Common # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK +2010..2015 ; Common # Pd [6] HYPHEN..HORIZONTAL BAR +2016..2017 ; Common # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE +2018 ; Common # Pi LEFT SINGLE QUOTATION MARK +2019 ; Common # Pf RIGHT SINGLE QUOTATION MARK +201A ; Common # Ps SINGLE LOW-9 QUOTATION MARK +201B..201C ; Common # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK +201D ; Common # Pf RIGHT DOUBLE QUOTATION MARK +201E ; Common # Ps DOUBLE LOW-9 QUOTATION MARK +201F ; Common # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK +2020..2027 ; Common # Po [8] DAGGER..HYPHENATION POINT +2028 ; Common # Zl LINE SEPARATOR +2029 ; Common # Zp PARAGRAPH SEPARATOR +202A..202E ; Common # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE +202F ; Common # Zs NARROW NO-BREAK SPACE +2030..2038 ; Common # Po [9] PER MILLE SIGN..CARET +2039 ; Common # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK +203A ; Common # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +203B..203E ; Common # Po [4] REFERENCE MARK..OVERLINE +203F..2040 ; Common # Pc [2] UNDERTIE..CHARACTER TIE +2041..2043 ; Common # Po [3] CARET INSERTION POINT..HYPHEN BULLET +2044 ; Common # Sm FRACTION SLASH +2045 ; Common # Ps LEFT SQUARE BRACKET WITH QUILL +2046 ; Common # Pe RIGHT SQUARE BRACKET WITH QUILL +2047..2051 ; Common # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY +2052 ; Common # Sm COMMERCIAL MINUS SIGN +2053 ; Common # Po SWUNG DASH +2054 ; Common # Pc INVERTED UNDERTIE +2057 ; Common # Po QUADRUPLE PRIME +205F ; Common # Zs MEDIUM MATHEMATICAL SPACE +2060..2063 ; Common # Cf [4] WORD JOINER..INVISIBLE SEPARATOR +206A..206F ; Common # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES +2070 ; Common # No SUPERSCRIPT ZERO +2074..2079 ; Common # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE +207A..207C ; Common # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN +207D ; Common # Ps SUPERSCRIPT LEFT PARENTHESIS +207E ; Common # Pe SUPERSCRIPT RIGHT PARENTHESIS +2080..2089 ; Common # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE +208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN +208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS +208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS +20A0..20B1 ; Common # Sc [18] EURO-CURRENCY SIGN..PESO SIGN +2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT +2102 ; Common # L& DOUBLE-STRUCK CAPITAL C +2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA +2107 ; Common # L& EULER CONSTANT +2108..2109 ; Common # So [2] SCRUPLE..DEGREE FAHRENHEIT +210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L +2114 ; Common # So L B BAR SYMBOL +2115 ; Common # L& DOUBLE-STRUCK CAPITAL N +2116..2118 ; Common # So [3] NUMERO SIGN..SCRIPT CAPITAL P +2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R +211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE +2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z +2125 ; Common # So OUNCE SIGN +2127 ; Common # So INVERTED OHM SIGN +2128 ; Common # L& BLACK-LETTER CAPITAL Z +2129 ; Common # So TURNED GREEK SMALL LETTER IOTA +212C..212D ; Common # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C +212E ; Common # So ESTIMATED SYMBOL +212F..2131 ; Common # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F +2132 ; Common # So TURNED CAPITAL F +2133..2134 ; Common # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O +2135..2138 ; Common # Lo [4] ALEF SYMBOL..DALET SYMBOL +2139 ; Common # L& INFORMATION SOURCE +213A..213B ; Common # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN +213D..213F ; Common # L& [3] DOUBLE-STRUCK SMALL GAMMA..DOUBLE-STRUCK CAPITAL PI +2140..2144 ; Common # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y +2145..2149 ; Common # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J +214A ; Common # So PROPERTY LINE +214B ; Common # Sm TURNED AMPERSAND +2153..215F ; Common # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE +2160..2183 ; Common # Nl [36] ROMAN NUMERAL ONE..ROMAN NUMERAL REVERSED ONE HUNDRED +2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW +2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW +219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE +219C..219F ; Common # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW +21A0 ; Common # Sm RIGHTWARDS TWO HEADED ARROW +21A1..21A2 ; Common # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL +21A3 ; Common # Sm RIGHTWARDS ARROW WITH TAIL +21A4..21A5 ; Common # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR +21A6 ; Common # Sm RIGHTWARDS ARROW FROM BAR +21A7..21AD ; Common # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW +21AE ; Common # Sm LEFT RIGHT ARROW WITH STROKE +21AF..21CD ; Common # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE +21CE..21CF ; Common # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE +21D0..21D1 ; Common # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW +21D2 ; Common # Sm RIGHTWARDS DOUBLE ARROW +21D3 ; Common # So DOWNWARDS DOUBLE ARROW +21D4 ; Common # Sm LEFT RIGHT DOUBLE ARROW +21D5..21F3 ; Common # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW +21F4..22FF ; Common # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP +2300..2307 ; Common # So [8] DIAMETER SIGN..WAVY LINE +2308..230B ; Common # Sm [4] LEFT CEILING..RIGHT FLOOR +230C..231F ; Common # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER +2320..2321 ; Common # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL +2322..2328 ; Common # So [7] FROWN..KEYBOARD +2329 ; Common # Ps LEFT-POINTING ANGLE BRACKET +232A ; Common # Pe RIGHT-POINTING ANGLE BRACKET +232B..237B ; Common # So [81] ERASE TO THE LEFT..NOT CHECK MARK +237C ; Common # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW +237D..239A ; Common # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL +239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM +23B4 ; Common # Ps TOP SQUARE BRACKET +23B5 ; Common # Pe BOTTOM SQUARE BRACKET +23B6 ; Common # Po BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET +23B7..23D0 ; Common # So [26] RADICAL SYMBOL BOTTOM..VERTICAL LINE EXTENSION +2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO +2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH +2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP +249C..24E9 ; Common # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z +24EA..24FF ; Common # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO +2500..25B6 ; Common # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE +25B7 ; Common # Sm WHITE RIGHT-POINTING TRIANGLE +25B8..25C0 ; Common # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE +25C1 ; Common # Sm WHITE LEFT-POINTING TRIANGLE +25C2..25F7 ; Common # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT +25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE +2600..2617 ; Common # So [24] BLACK SUN WITH RAYS..BLACK SHOGI PIECE +2619..266E ; Common # So [86] REVERSED ROTATED FLORAL HEART BULLET..MUSIC NATURAL SIGN +266F ; Common # Sm MUSIC SHARP SIGN +2670..267D ; Common # So [14] WEST SYRIAC CROSS..PARTIALLY-RECYCLED PAPER SYMBOL +2680..2691 ; Common # So [18] DIE FACE-1..BLACK FLAG +26A0..26A1 ; Common # So [2] WARNING SIGN..HIGH VOLTAGE SIGN +2701..2704 ; Common # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS +2706..2709 ; Common # So [4] TELEPHONE LOCATION SIGN..ENVELOPE +270C..2727 ; Common # So [28] VICTORY HAND..WHITE FOUR POINTED STAR +2729..274B ; Common # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK +274D ; Common # So SHADOWED WHITE CIRCLE +274F..2752 ; Common # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE +2756 ; Common # So BLACK DIAMOND MINUS WHITE X +2758..275E ; Common # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT +2761..2767 ; Common # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET +2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT +2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT +276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT +276B ; Common # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT +276C ; Common # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT +276D ; Common # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT +276E ; Common # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT +276F ; Common # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT +2770 ; Common # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT +2771 ; Common # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT +2772 ; Common # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT +2773 ; Common # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT +2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT +2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT +2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN +2794 ; Common # So HEAVY WIDE-HEADED RIGHTWARDS ARROW +2798..27AF ; Common # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW +27B1..27BE ; Common # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW +27D0..27E5 ; Common # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK +27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET +27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET +27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET +27E9 ; Common # Pe MATHEMATICAL RIGHT ANGLE BRACKET +27EA ; Common # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET +27EB ; Common # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET +27F0..27FF ; Common # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW +2900..2982 ; Common # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON +2983 ; Common # Ps LEFT WHITE CURLY BRACKET +2984 ; Common # Pe RIGHT WHITE CURLY BRACKET +2985 ; Common # Ps LEFT WHITE PARENTHESIS +2986 ; Common # Pe RIGHT WHITE PARENTHESIS +2987 ; Common # Ps Z NOTATION LEFT IMAGE BRACKET +2988 ; Common # Pe Z NOTATION RIGHT IMAGE BRACKET +2989 ; Common # Ps Z NOTATION LEFT BINDING BRACKET +298A ; Common # Pe Z NOTATION RIGHT BINDING BRACKET +298B ; Common # Ps LEFT SQUARE BRACKET WITH UNDERBAR +298C ; Common # Pe RIGHT SQUARE BRACKET WITH UNDERBAR +298D ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +298E ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +298F ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER +2990 ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER +2991 ; Common # Ps LEFT ANGLE BRACKET WITH DOT +2992 ; Common # Pe RIGHT ANGLE BRACKET WITH DOT +2993 ; Common # Ps LEFT ARC LESS-THAN BRACKET +2994 ; Common # Pe RIGHT ARC GREATER-THAN BRACKET +2995 ; Common # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET +2996 ; Common # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET +2997 ; Common # Ps LEFT BLACK TORTOISE SHELL BRACKET +2998 ; Common # Pe RIGHT BLACK TORTOISE SHELL BRACKET +2999..29D7 ; Common # Sm [63] DOTTED FENCE..BLACK HOURGLASS +29D8 ; Common # Ps LEFT WIGGLY FENCE +29D9 ; Common # Pe RIGHT WIGGLY FENCE +29DA ; Common # Ps LEFT DOUBLE WIGGLY FENCE +29DB ; Common # Pe RIGHT DOUBLE WIGGLY FENCE +29DC..29FB ; Common # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS +29FC ; Common # Ps LEFT-POINTING CURVED ANGLE BRACKET +29FD ; Common # Pe RIGHT-POINTING CURVED ANGLE BRACKET +29FE..2AFF ; Common # Sm [258] TINY..N-ARY WHITE VERTICAL BAR +2B00..2B0D ; Common # So [14] NORTH EAST WHITE ARROW..UP DOWN BLACK ARROW +2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID +3000 ; Common # Zs IDEOGRAPHIC SPACE +3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK +3004 ; Common # So JAPANESE INDUSTRIAL STANDARD SYMBOL +3006 ; Common # Lo IDEOGRAPHIC CLOSING MARK +3008 ; Common # Ps LEFT ANGLE BRACKET +3009 ; Common # Pe RIGHT ANGLE BRACKET +300A ; Common # Ps LEFT DOUBLE ANGLE BRACKET +300B ; Common # Pe RIGHT DOUBLE ANGLE BRACKET +300C ; Common # Ps LEFT CORNER BRACKET +300D ; Common # Pe RIGHT CORNER BRACKET +300E ; Common # Ps LEFT WHITE CORNER BRACKET +300F ; Common # Pe RIGHT WHITE CORNER BRACKET +3010 ; Common # Ps LEFT BLACK LENTICULAR BRACKET +3011 ; Common # Pe RIGHT BLACK LENTICULAR BRACKET +3012..3013 ; Common # So [2] POSTAL MARK..GETA MARK +3014 ; Common # Ps LEFT TORTOISE SHELL BRACKET +3015 ; Common # Pe RIGHT TORTOISE SHELL BRACKET +3016 ; Common # Ps LEFT WHITE LENTICULAR BRACKET +3017 ; Common # Pe RIGHT WHITE LENTICULAR BRACKET +3018 ; Common # Ps LEFT WHITE TORTOISE SHELL BRACKET +3019 ; Common # Pe RIGHT WHITE TORTOISE SHELL BRACKET +301A ; Common # Ps LEFT WHITE SQUARE BRACKET +301B ; Common # Pe RIGHT WHITE SQUARE BRACKET +301C ; Common # Pd WAVE DASH +301D ; Common # Ps REVERSED DOUBLE PRIME QUOTATION MARK +301E..301F ; Common # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK +3020 ; Common # So POSTAL MARK FACE +3030 ; Common # Pd WAVY DASH +3036..3037 ; Common # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL +303C ; Common # Lo MASU MARK +303D ; Common # Po PART ALTERNATION MARK +303E..303F ; Common # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE +30A0 ; Common # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN +30FB ; Common # Pc KATAKANA MIDDLE DOT +30FC ; Common # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK +3190..3191 ; Common # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK +3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK +3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK +3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN +322A..3243 ; Common # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH +3250 ; Common # So PARTNERSHIP SIGN +3251..325F ; Common # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE +327F ; Common # So KOREAN STANDARD SYMBOL +3280..3289 ; Common # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN +328A..32B0 ; Common # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT +32B1..32BF ; Common # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY +32C0..32FE ; Common # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO +3300..33FF ; Common # So [256] SQUARE APAATO..SQUARE GAL +4DC0..4DFF ; Common # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION +E000..F8FF ; Common # Co [6400] .. +FD3E ; Common # Ps ORNATE LEFT PARENTHESIS +FD3F ; Common # Pe ORNATE RIGHT PARENTHESIS +FDFD ; Common # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM +FE30 ; Common # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER +FE31..FE32 ; Common # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH +FE33..FE34 ; Common # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE +FE35 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS +FE36 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS +FE37 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET +FE38 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET +FE39 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET +FE3A ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET +FE3B ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET +FE3C ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET +FE3D ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET +FE3E ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET +FE3F ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET +FE40 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET +FE41 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET +FE42 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET +FE43 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET +FE44 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET +FE45..FE46 ; Common # Po [2] SESAME DOT..WHITE SESAME DOT +FE47 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET +FE48 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET +FE49..FE4C ; Common # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE +FE4D..FE4F ; Common # Pc [3] DASHED LOW LINE..WAVY LOW LINE +FE50..FE52 ; Common # Po [3] SMALL COMMA..SMALL FULL STOP +FE54..FE57 ; Common # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK +FE58 ; Common # Pd SMALL EM DASH +FE59 ; Common # Ps SMALL LEFT PARENTHESIS +FE5A ; Common # Pe SMALL RIGHT PARENTHESIS +FE5B ; Common # Ps SMALL LEFT CURLY BRACKET +FE5C ; Common # Pe SMALL RIGHT CURLY BRACKET +FE5D ; Common # Ps SMALL LEFT TORTOISE SHELL BRACKET +FE5E ; Common # Pe SMALL RIGHT TORTOISE SHELL BRACKET +FE5F..FE61 ; Common # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK +FE62 ; Common # Sm SMALL PLUS SIGN +FE63 ; Common # Pd SMALL HYPHEN-MINUS +FE64..FE66 ; Common # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN +FE68 ; Common # Po SMALL REVERSE SOLIDUS +FE69 ; Common # Sc SMALL DOLLAR SIGN +FE6A..FE6B ; Common # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT +FEFF ; Common # Cf ZERO WIDTH NO-BREAK SPACE +FF01..FF03 ; Common # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN +FF04 ; Common # Sc FULLWIDTH DOLLAR SIGN +FF05..FF07 ; Common # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE +FF08 ; Common # Ps FULLWIDTH LEFT PARENTHESIS +FF09 ; Common # Pe FULLWIDTH RIGHT PARENTHESIS +FF0A ; Common # Po FULLWIDTH ASTERISK +FF0B ; Common # Sm FULLWIDTH PLUS SIGN +FF0C ; Common # Po FULLWIDTH COMMA +FF0D ; Common # Pd FULLWIDTH HYPHEN-MINUS +FF0E..FF0F ; Common # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS +FF10..FF19 ; Common # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE +FF1A..FF1B ; Common # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON +FF1C..FF1E ; Common # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN +FF1F..FF20 ; Common # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT +FF3B ; Common # Ps FULLWIDTH LEFT SQUARE BRACKET +FF3C ; Common # Po FULLWIDTH REVERSE SOLIDUS +FF3D ; Common # Pe FULLWIDTH RIGHT SQUARE BRACKET +FF3E ; Common # Sk FULLWIDTH CIRCUMFLEX ACCENT +FF3F ; Common # Pc FULLWIDTH LOW LINE +FF40 ; Common # Sk FULLWIDTH GRAVE ACCENT +FF5B ; Common # Ps FULLWIDTH LEFT CURLY BRACKET +FF5C ; Common # Sm FULLWIDTH VERTICAL LINE +FF5D ; Common # Pe FULLWIDTH RIGHT CURLY BRACKET +FF5E ; Common # Sm FULLWIDTH TILDE +FF5F ; Common # Ps FULLWIDTH LEFT WHITE PARENTHESIS +FF60 ; Common # Pe FULLWIDTH RIGHT WHITE PARENTHESIS +FF61 ; Common # Po HALFWIDTH IDEOGRAPHIC FULL STOP +FF62 ; Common # Ps HALFWIDTH LEFT CORNER BRACKET +FF63 ; Common # Pe HALFWIDTH RIGHT CORNER BRACKET +FF64 ; Common # Po HALFWIDTH IDEOGRAPHIC COMMA +FF65 ; Common # Pc HALFWIDTH KATAKANA MIDDLE DOT +FFE0..FFE1 ; Common # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN +FFE2 ; Common # Sm FULLWIDTH NOT SIGN +FFE3 ; Common # Sk FULLWIDTH MACRON +FFE4 ; Common # So FULLWIDTH BROKEN BAR +FFE5..FFE6 ; Common # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN +FFE8 ; Common # So HALFWIDTH FORMS LIGHT VERTICAL +FFE9..FFEC ; Common # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW +FFED..FFEE ; Common # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE +FFF9..FFFB ; Common # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR +FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER +10100..10101 ; Common # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT +10102 ; Common # So AEGEAN CHECK MARK +10107..10133 ; Common # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND +10137..1013F ; Common # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT +1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO +1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 +1D12A..1D164 ; Common # So [59] MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE +1D165..1D166 ; Common # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM +1D16A..1D16C ; Common # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 +1D16D..1D172 ; Common # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 +1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE +1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN +1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH +1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS +1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING +1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G +1D456..1D49C ; Common # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A +1D49E..1D49F ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D +1D4A2 ; Common # L& MATHEMATICAL SCRIPT CAPITAL G +1D4A5..1D4A6 ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K +1D4A9..1D4AC ; Common # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q +1D4AE..1D4B9 ; Common # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D +1D4BB ; Common # L& MATHEMATICAL SCRIPT SMALL F +1D4BD..1D4C3 ; Common # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N +1D4C5..1D505 ; Common # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B +1D507..1D50A ; Common # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G +1D50D..1D514 ; Common # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q +1D516..1D51C ; Common # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y +1D51E..1D539 ; Common # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B +1D53B..1D53E ; Common # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G +1D540..1D544 ; Common # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M +1D546 ; Common # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O +1D54A..1D550 ; Common # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y +1D552..1D6A3 ; Common # L& [338] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL MONOSPACE SMALL Z +1D6A8..1D6C0 ; Common # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA +1D6C1 ; Common # Sm MATHEMATICAL BOLD NABLA +1D6C2..1D6DA ; Common # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA +1D6DB ; Common # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL +1D6DC..1D6FA ; Common # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA +1D6FB ; Common # Sm MATHEMATICAL ITALIC NABLA +1D6FC..1D714 ; Common # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA +1D715 ; Common # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL +1D716..1D734 ; Common # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA +1D735 ; Common # Sm MATHEMATICAL BOLD ITALIC NABLA +1D736..1D74E ; Common # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA +1D74F ; Common # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL +1D750..1D76E ; Common # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA +1D76F ; Common # Sm MATHEMATICAL SANS-SERIF BOLD NABLA +1D770..1D788 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA +1D789 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL +1D78A..1D7A8 ; Common # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA +1D7A9 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA +1D7AA..1D7C2 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA +1D7C3 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL +1D7C4..1D7C9 ; Common # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL +1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE +E0001 ; Common # Cf LANGUAGE TAG +E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG +F0000..FFFFD ; Common # Co [65534] .. +100000..10FFFD; Common # Co [65534] .. + +# The above property value applies to 880197 code points not listed here. +# Total code points: 1022471 + +# ================================================ + +0041..005A ; Latin # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z +0061..007A ; Latin # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z +00AA ; Latin # L& FEMININE ORDINAL INDICATOR +00BA ; Latin # L& MASCULINE ORDINAL INDICATOR +00C0..00D6 ; Latin # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS +00D8..00F6 ; Latin # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS +00F8..01BA ; Latin # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL +01BB ; Latin # Lo LATIN LETTER TWO WITH STROKE +01BC..01BF ; Latin # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN +01C0..01C3 ; Latin # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK +01C4..0236 ; Latin # L& [115] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER T WITH CURL +0250..02AF ; Latin # L& [96] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL +02B0..02B8 ; Latin # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y +02E0..02E4 ; Latin # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP +1D00..1D25 ; Latin # L& [38] LATIN LETTER SMALL CAPITAL A..LATIN LETTER AIN +1D2C..1D5C ; Latin # Lm [49] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL AIN +1D62..1D65 ; Latin # L& [4] LATIN SUBSCRIPT SMALL LETTER I..LATIN SUBSCRIPT SMALL LETTER V +1D6B ; Latin # L& LATIN SMALL LETTER UE +1E00..1E9B ; Latin # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE +1EA0..1EF9 ; Latin # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE +2071 ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER I +207F ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER N +212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN +FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST +FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z +FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z # Total code points: 938 # ================================================ -00B5 ; GREEK # L& MICRO SIGN -037A ; GREEK # Lm GREEK YPOGEGRAMMENI -0386 ; GREEK # L& GREEK CAPITAL LETTER ALPHA WITH TONOS -0388..038A ; GREEK # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS -038C ; GREEK # L& GREEK CAPITAL LETTER OMICRON WITH TONOS -038E..03A1 ; GREEK # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO -03A3..03CE ; GREEK # L& [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS -03D0..03F5 ; GREEK # L& [38] GREEK BETA SYMBOL..GREEK LUNATE EPSILON SYMBOL -03F7..03FB ; GREEK # L& [5] GREEK CAPITAL LETTER SHO..GREEK SMALL LETTER SAN -1D26..1D2A ; GREEK # L& [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI -1D5D..1D61 ; GREEK # Lm [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI -1D66..1D6A ; GREEK # L& [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI -1F00..1F15 ; GREEK # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA -1F18..1F1D ; GREEK # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F20..1F45 ; GREEK # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA -1F48..1F4D ; GREEK # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50..1F57 ; GREEK # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F59 ; GREEK # L& GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B ; GREEK # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D ; GREEK # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F..1F7D ; GREEK # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA -1F80..1FB4 ; GREEK # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6..1FBC ; GREEK # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBE ; GREEK # L& GREEK PROSGEGRAMMENI -1FC2..1FC4 ; GREEK # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6..1FCC ; GREEK # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FD0..1FD3 ; GREEK # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6..1FDB ; GREEK # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA -1FE0..1FEC ; GREEK # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA -1FF2..1FF4 ; GREEK # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6..1FFC ; GREEK # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -2126 ; GREEK # L& OHM SIGN - -# Total code points: 348 - -# ================================================ - -0400..0481 ; CYRILLIC # L& [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA -0483..0486 ; CYRILLIC # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA -048A..04CE ; CYRILLIC # L& [69] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EM WITH TAIL -04D0..04F5 ; CYRILLIC # L& [38] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER CHE WITH DIAERESIS -04F8..04F9 ; CYRILLIC # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS -0500..050F ; CYRILLIC # L& [16] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER KOMI TJE -1D2B ; CYRILLIC # L& CYRILLIC LETTER SMALL CAPITAL EL - -# Total code points: 260 - -# ================================================ - -0531..0556 ; ARMENIAN # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH -0559 ; ARMENIAN # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING -0561..0587 ; ARMENIAN # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN -FB13..FB17 ; ARMENIAN # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH +0374..0375 ; Greek # Sk [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN +037A ; Greek # Lm GREEK YPOGEGRAMMENI +0384..0385 ; Greek # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS +0386 ; Greek # L& GREEK CAPITAL LETTER ALPHA WITH TONOS +0388..038A ; Greek # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS +038C ; Greek # L& GREEK CAPITAL LETTER OMICRON WITH TONOS +038E..03A1 ; Greek # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO +03A3..03CE ; Greek # L& [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS +03D0..03F5 ; Greek # L& [38] GREEK BETA SYMBOL..GREEK LUNATE EPSILON SYMBOL +03F6 ; Greek # Sm GREEK REVERSED LUNATE EPSILON SYMBOL +03F7..03FB ; Greek # L& [5] GREEK CAPITAL LETTER SHO..GREEK SMALL LETTER SAN +1D26..1D2A ; Greek # L& [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI +1D5D..1D61 ; Greek # Lm [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI +1D66..1D6A ; Greek # L& [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI +1F00..1F15 ; Greek # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA +1F18..1F1D ; Greek # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA +1F20..1F45 ; Greek # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA +1F48..1F4D ; Greek # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA +1F50..1F57 ; Greek # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI +1F59 ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA +1F5B ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA +1F5D ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA +1F5F..1F7D ; Greek # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA +1F80..1FB4 ; Greek # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI +1FB6..1FBC ; Greek # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI +1FBD ; Greek # Sk GREEK KORONIS +1FBE ; Greek # L& GREEK PROSGEGRAMMENI +1FBF..1FC1 ; Greek # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI +1FC2..1FC4 ; Greek # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI +1FC6..1FCC ; Greek # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI +1FCD..1FCF ; Greek # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI +1FD0..1FD3 ; Greek # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA +1FD6..1FDB ; Greek # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA +1FDD..1FDF ; Greek # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI +1FE0..1FEC ; Greek # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA +1FED..1FEF ; Greek # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA +1FF2..1FF4 ; Greek # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI +1FF6..1FFC ; Greek # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI +1FFD..1FFE ; Greek # Sk [2] GREEK OXIA..GREEK DASIA +2126 ; Greek # L& OHM SIGN + +# Total code points: 367 -# Total code points: 83 +# ================================================ + +0400..0481 ; Cyrillic # L& [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA +0482 ; Cyrillic # So CYRILLIC THOUSANDS SIGN +0483..0486 ; Cyrillic # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA +0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN +048A..04CE ; Cyrillic # L& [69] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EM WITH TAIL +04D0..04F5 ; Cyrillic # L& [38] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER CHE WITH DIAERESIS +04F8..04F9 ; Cyrillic # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS +0500..050F ; Cyrillic # L& [16] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER KOMI TJE +1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL + +# Total code points: 263 # ================================================ -05D0..05EA ; HEBREW # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV -05F0..05F2 ; HEBREW # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD -FB1D ; HEBREW # Lo HEBREW LETTER YOD WITH HIRIQ -FB1F..FB28 ; HEBREW # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV -FB2A..FB36 ; HEBREW # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH -FB38..FB3C ; HEBREW # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH -FB3E ; HEBREW # Lo HEBREW LETTER MEM WITH DAGESH -FB40..FB41 ; HEBREW # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH -FB43..FB44 ; HEBREW # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH -FB46..FB4F ; HEBREW # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED +0531..0556 ; Armenian # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH +0559 ; Armenian # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING +055A..055F ; Armenian # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK +0561..0587 ; Armenian # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN +058A ; Armenian # Pd ARMENIAN HYPHEN +FB13..FB17 ; Armenian # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH -# Total code points: 74 +# Total code points: 90 # ================================================ -0621..063A ; ARABIC # Lo [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN -0641..064A ; ARABIC # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH -066E..066F ; ARABIC # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF -0671..06D3 ; ARABIC # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -06D5 ; ARABIC # Lo ARABIC LETTER AE -06E5..06E6 ; ARABIC # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH -06EE..06EF ; ARABIC # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V -06FA..06FC ; ARABIC # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW -06FF ; ARABIC # Lo ARABIC LETTER HEH WITH INVERTED V -FB50..FBB1 ; ARABIC # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM -FBD3..FD3D ; ARABIC # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM -FD50..FD8F ; ARABIC # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM -FD92..FDC7 ; ARABIC # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM -FDF0..FDFB ; ARABIC # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU -FE70..FE74 ; ARABIC # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM -FE76..FEFC ; ARABIC # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM +0591..05A1 ; Hebrew # Mn [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER +05A3..05B9 ; Hebrew # Mn [23] HEBREW ACCENT MUNAH..HEBREW POINT HOLAM +05BB..05BD ; Hebrew # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG +05BE ; Hebrew # Po HEBREW PUNCTUATION MAQAF +05BF ; Hebrew # Mn HEBREW POINT RAFE +05C0 ; Hebrew # Po HEBREW PUNCTUATION PASEQ +05C1..05C2 ; Hebrew # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT +05C3 ; Hebrew # Po HEBREW PUNCTUATION SOF PASUQ +05C4 ; Hebrew # Mn HEBREW MARK UPPER DOT +05D0..05EA ; Hebrew # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV +05F0..05F2 ; Hebrew # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD +05F3..05F4 ; Hebrew # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM +FB1D ; Hebrew # Lo HEBREW LETTER YOD WITH HIRIQ +FB1E ; Hebrew # Mn HEBREW POINT JUDEO-SPANISH VARIKA +FB1F..FB28 ; Hebrew # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV +FB29 ; Hebrew # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN +FB2A..FB36 ; Hebrew # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH +FB38..FB3C ; Hebrew # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH +FB3E ; Hebrew # Lo HEBREW LETTER MEM WITH DAGESH +FB40..FB41 ; Hebrew # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH +FB43..FB44 ; Hebrew # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH +FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED + +# Total code points: 128 + +# ================================================ -# Total code points: 877 +060D ; Arabic # Po ARABIC DATE SEPARATOR +060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA +0610..0615 ; Arabic # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH +0621..063A ; Arabic # Lo [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN +0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH +0656..0658 ; Arabic # Mn [3] ARABIC SUBSCRIPT ALEF..ARABIC MARK NOON GHUNNA +066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR +066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF +0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE +06D4 ; Arabic # Po ARABIC FULL STOP +06D5 ; Arabic # Lo ARABIC LETTER AE +06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN +06DE ; Arabic # Me ARABIC START OF RUB EL HIZB +06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA +06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH +06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON +06E9 ; Arabic # So ARABIC PLACE OF SAJDAH +06EA..06ED ; Arabic # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM +06EE..06EF ; Arabic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V +06F0..06F9 ; Arabic # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE +06FA..06FC ; Arabic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW +06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN +06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V +FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM +FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM +FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM +FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM +FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU +FDFC ; Arabic # Sc RIAL SIGN +FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM +FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM + +# Total code points: 928 # ================================================ -0710 ; SYRIAC # Lo SYRIAC LETTER ALAPH -0711 ; SYRIAC # Mn SYRIAC LETTER SUPERSCRIPT ALAPH -0712..072F ; SYRIAC # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH -0730..074A ; SYRIAC # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH -074D..074F ; SYRIAC # Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE +0700..070D ; Syriac # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS +070F ; Syriac # Cf SYRIAC ABBREVIATION MARK +0710 ; Syriac # Lo SYRIAC LETTER ALAPH +0711 ; Syriac # Mn SYRIAC LETTER SUPERSCRIPT ALAPH +0712..072F ; Syriac # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH +0730..074A ; Syriac # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH +074D..074F ; Syriac # Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE -# Total code points: 62 +# Total code points: 77 # ================================================ -0780..07A5 ; THAANA # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU -07A6..07B0 ; THAANA # Mn [11] THAANA ABAFILI..THAANA SUKUN -07B1 ; THAANA # Lo THAANA LETTER NAA +0780..07A5 ; Thaana # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU +07A6..07B0 ; Thaana # Mn [11] THAANA ABAFILI..THAANA SUKUN +07B1 ; Thaana # Lo THAANA LETTER NAA # Total code points: 50 # ================================================ -0901..0902 ; DEVANAGARI # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA -0903 ; DEVANAGARI # Mc DEVANAGARI SIGN VISARGA -0904..0939 ; DEVANAGARI # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA -093C ; DEVANAGARI # Mn DEVANAGARI SIGN NUKTA -093D ; DEVANAGARI # Lo DEVANAGARI SIGN AVAGRAHA -093E..0940 ; DEVANAGARI # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II -0941..0948 ; DEVANAGARI # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI -0949..094C ; DEVANAGARI # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU -094D ; DEVANAGARI # Mn DEVANAGARI SIGN VIRAMA -0950 ; DEVANAGARI # Lo DEVANAGARI OM -0951..0954 ; DEVANAGARI # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT -0958..0961 ; DEVANAGARI # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL -0962..0963 ; DEVANAGARI # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL -0966..096F ; DEVANAGARI # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE +0901..0902 ; Devanagari # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA +0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA +0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA +093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA +093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA +093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II +0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI +0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU +094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA +0950 ; Devanagari # Lo DEVANAGARI OM +0951..0954 ; Devanagari # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT +0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL +0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL +0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE # Total code points: 102 # ================================================ -0981 ; BENGALI # Mn BENGALI SIGN CANDRABINDU -0982..0983 ; BENGALI # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA -0985..098C ; BENGALI # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L -098F..0990 ; BENGALI # Lo [2] BENGALI LETTER E..BENGALI LETTER AI -0993..09A8 ; BENGALI # Lo [22] BENGALI LETTER O..BENGALI LETTER NA -09AA..09B0 ; BENGALI # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA -09B2 ; BENGALI # Lo BENGALI LETTER LA -09B6..09B9 ; BENGALI # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA -09BC ; BENGALI # Mn BENGALI SIGN NUKTA -09BD ; BENGALI # Lo BENGALI SIGN AVAGRAHA -09BE..09C0 ; BENGALI # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II -09C1..09C4 ; BENGALI # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR -09C7..09C8 ; BENGALI # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI -09CB..09CC ; BENGALI # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU -09CD ; BENGALI # Mn BENGALI SIGN VIRAMA -09D7 ; BENGALI # Mc BENGALI AU LENGTH MARK -09DC..09DD ; BENGALI # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA -09DF..09E1 ; BENGALI # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL -09E2..09E3 ; BENGALI # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL -09E6..09EF ; BENGALI # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE -09F0..09F1 ; BENGALI # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL +0981 ; Bengali # Mn BENGALI SIGN CANDRABINDU +0982..0983 ; Bengali # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA +0985..098C ; Bengali # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L +098F..0990 ; Bengali # Lo [2] BENGALI LETTER E..BENGALI LETTER AI +0993..09A8 ; Bengali # Lo [22] BENGALI LETTER O..BENGALI LETTER NA +09AA..09B0 ; Bengali # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA +09B2 ; Bengali # Lo BENGALI LETTER LA +09B6..09B9 ; Bengali # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA +09BC ; Bengali # Mn BENGALI SIGN NUKTA +09BD ; Bengali # Lo BENGALI SIGN AVAGRAHA +09BE..09C0 ; Bengali # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II +09C1..09C4 ; Bengali # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR +09C7..09C8 ; Bengali # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI +09CB..09CC ; Bengali # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU +09CD ; Bengali # Mn BENGALI SIGN VIRAMA +09D7 ; Bengali # Mc BENGALI AU LENGTH MARK +09DC..09DD ; Bengali # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA +09DF..09E1 ; Bengali # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL +09E2..09E3 ; Bengali # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL +09E6..09EF ; Bengali # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE +09F0..09F1 ; Bengali # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL +09F2..09F3 ; Bengali # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN +09F4..09F9 ; Bengali # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN +09FA ; Bengali # So BENGALI ISSHAR + +# Total code points: 90 -# Total code points: 81 +# ================================================ + +0A01..0A02 ; Gurmukhi # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI +0A03 ; Gurmukhi # Mc GURMUKHI SIGN VISARGA +0A05..0A0A ; Gurmukhi # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU +0A0F..0A10 ; Gurmukhi # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI +0A13..0A28 ; Gurmukhi # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA +0A2A..0A30 ; Gurmukhi # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA +0A32..0A33 ; Gurmukhi # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA +0A35..0A36 ; Gurmukhi # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA +0A38..0A39 ; Gurmukhi # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA +0A3C ; Gurmukhi # Mn GURMUKHI SIGN NUKTA +0A3E..0A40 ; Gurmukhi # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II +0A41..0A42 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU +0A47..0A48 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI +0A4B..0A4D ; Gurmukhi # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA +0A59..0A5C ; Gurmukhi # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA +0A5E ; Gurmukhi # Lo GURMUKHI LETTER FA +0A66..0A6F ; Gurmukhi # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE +0A70..0A71 ; Gurmukhi # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK +0A72..0A74 ; Gurmukhi # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR + +# Total code points: 77 # ================================================ -0A02 ; GURMUKHI # Mn GURMUKHI SIGN BINDI -0A03 ; GURMUKHI # Mc GURMUKHI SIGN VISARGA -0A05..0A0A ; GURMUKHI # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU -0A0F..0A10 ; GURMUKHI # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI -0A13..0A28 ; GURMUKHI # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA -0A2A..0A30 ; GURMUKHI # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA -0A32..0A33 ; GURMUKHI # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA -0A35..0A36 ; GURMUKHI # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA -0A38..0A39 ; GURMUKHI # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA -0A3C ; GURMUKHI # Mn GURMUKHI SIGN NUKTA -0A3E..0A40 ; GURMUKHI # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II -0A41..0A42 ; GURMUKHI # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU -0A47..0A48 ; GURMUKHI # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI -0A4B..0A4D ; GURMUKHI # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA -0A59..0A5C ; GURMUKHI # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA -0A5E ; GURMUKHI # Lo GURMUKHI LETTER FA -0A66..0A6F ; GURMUKHI # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE -0A70..0A71 ; GURMUKHI # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK -0A72..0A74 ; GURMUKHI # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR - -# Total code points: 76 - -# ================================================ - -0A81..0A82 ; GUJARATI # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA -0A83 ; GUJARATI # Mc GUJARATI SIGN VISARGA -0A85..0A8D ; GUJARATI # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E -0A8F..0A91 ; GUJARATI # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O -0A93..0AA8 ; GUJARATI # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA -0AAA..0AB0 ; GUJARATI # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA -0AB2..0AB3 ; GUJARATI # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA -0AB5..0AB9 ; GUJARATI # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA -0ABC ; GUJARATI # Mn GUJARATI SIGN NUKTA -0ABD ; GUJARATI # Lo GUJARATI SIGN AVAGRAHA -0ABE..0AC0 ; GUJARATI # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II -0AC1..0AC5 ; GUJARATI # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E -0AC7..0AC8 ; GUJARATI # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI -0AC9 ; GUJARATI # Mc GUJARATI VOWEL SIGN CANDRA O -0ACB..0ACC ; GUJARATI # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU -0ACD ; GUJARATI # Mn GUJARATI SIGN VIRAMA -0AD0 ; GUJARATI # Lo GUJARATI OM -0AE0..0AE1 ; GUJARATI # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL -0AE2..0AE3 ; GUJARATI # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL -0AE6..0AEF ; GUJARATI # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE +0A81..0A82 ; Gujarati # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA +0A83 ; Gujarati # Mc GUJARATI SIGN VISARGA +0A85..0A8D ; Gujarati # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E +0A8F..0A91 ; Gujarati # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O +0A93..0AA8 ; Gujarati # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA +0AAA..0AB0 ; Gujarati # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA +0AB2..0AB3 ; Gujarati # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA +0AB5..0AB9 ; Gujarati # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA +0ABC ; Gujarati # Mn GUJARATI SIGN NUKTA +0ABD ; Gujarati # Lo GUJARATI SIGN AVAGRAHA +0ABE..0AC0 ; Gujarati # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II +0AC1..0AC5 ; Gujarati # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E +0AC7..0AC8 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI +0AC9 ; Gujarati # Mc GUJARATI VOWEL SIGN CANDRA O +0ACB..0ACC ; Gujarati # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU +0ACD ; Gujarati # Mn GUJARATI SIGN VIRAMA +0AD0 ; Gujarati # Lo GUJARATI OM +0AE0..0AE1 ; Gujarati # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL +0AE2..0AE3 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL +0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE +0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN -# Total code points: 82 +# Total code points: 83 # ================================================ -0B01 ; ORIYA # Mn ORIYA SIGN CANDRABINDU -0B02..0B03 ; ORIYA # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA -0B05..0B0C ; ORIYA # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L -0B0F..0B10 ; ORIYA # Lo [2] ORIYA LETTER E..ORIYA LETTER AI -0B13..0B28 ; ORIYA # Lo [22] ORIYA LETTER O..ORIYA LETTER NA -0B2A..0B30 ; ORIYA # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA -0B32..0B33 ; ORIYA # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA -0B35..0B39 ; ORIYA # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA -0B3C ; ORIYA # Mn ORIYA SIGN NUKTA -0B3D ; ORIYA # Lo ORIYA SIGN AVAGRAHA -0B3E ; ORIYA # Mc ORIYA VOWEL SIGN AA -0B3F ; ORIYA # Mn ORIYA VOWEL SIGN I -0B40 ; ORIYA # Mc ORIYA VOWEL SIGN II -0B41..0B43 ; ORIYA # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R -0B47..0B48 ; ORIYA # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI -0B4B..0B4C ; ORIYA # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU -0B4D ; ORIYA # Mn ORIYA SIGN VIRAMA -0B56 ; ORIYA # Mn ORIYA AI LENGTH MARK -0B57 ; ORIYA # Mc ORIYA AU LENGTH MARK -0B5C..0B5D ; ORIYA # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA -0B5F..0B61 ; ORIYA # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL -0B66..0B6F ; ORIYA # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE -0B71 ; ORIYA # Lo ORIYA LETTER WA +0B01 ; Oriya # Mn ORIYA SIGN CANDRABINDU +0B02..0B03 ; Oriya # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA +0B05..0B0C ; Oriya # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L +0B0F..0B10 ; Oriya # Lo [2] ORIYA LETTER E..ORIYA LETTER AI +0B13..0B28 ; Oriya # Lo [22] ORIYA LETTER O..ORIYA LETTER NA +0B2A..0B30 ; Oriya # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA +0B32..0B33 ; Oriya # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA +0B35..0B39 ; Oriya # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA +0B3C ; Oriya # Mn ORIYA SIGN NUKTA +0B3D ; Oriya # Lo ORIYA SIGN AVAGRAHA +0B3E ; Oriya # Mc ORIYA VOWEL SIGN AA +0B3F ; Oriya # Mn ORIYA VOWEL SIGN I +0B40 ; Oriya # Mc ORIYA VOWEL SIGN II +0B41..0B43 ; Oriya # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R +0B47..0B48 ; Oriya # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI +0B4B..0B4C ; Oriya # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU +0B4D ; Oriya # Mn ORIYA SIGN VIRAMA +0B56 ; Oriya # Mn ORIYA AI LENGTH MARK +0B57 ; Oriya # Mc ORIYA AU LENGTH MARK +0B5C..0B5D ; Oriya # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA +0B5F..0B61 ; Oriya # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL +0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE +0B70 ; Oriya # So ORIYA ISSHAR +0B71 ; Oriya # Lo ORIYA LETTER WA -# Total code points: 80 +# Total code points: 81 + +# ================================================ + +0B82 ; Tamil # Mn TAMIL SIGN ANUSVARA +0B83 ; Tamil # Lo TAMIL SIGN VISARGA +0B85..0B8A ; Tamil # Lo [6] TAMIL LETTER A..TAMIL LETTER UU +0B8E..0B90 ; Tamil # Lo [3] TAMIL LETTER E..TAMIL LETTER AI +0B92..0B95 ; Tamil # Lo [4] TAMIL LETTER O..TAMIL LETTER KA +0B99..0B9A ; Tamil # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA +0B9C ; Tamil # Lo TAMIL LETTER JA +0B9E..0B9F ; Tamil # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA +0BA3..0BA4 ; Tamil # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA +0BA8..0BAA ; Tamil # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA +0BAE..0BB5 ; Tamil # Lo [8] TAMIL LETTER MA..TAMIL LETTER VA +0BB7..0BB9 ; Tamil # Lo [3] TAMIL LETTER SSA..TAMIL LETTER HA +0BBE..0BBF ; Tamil # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I +0BC0 ; Tamil # Mn TAMIL VOWEL SIGN II +0BC1..0BC2 ; Tamil # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU +0BC6..0BC8 ; Tamil # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI +0BCA..0BCC ; Tamil # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU +0BCD ; Tamil # Mn TAMIL SIGN VIRAMA +0BD7 ; Tamil # Mc TAMIL AU LENGTH MARK +0BE7..0BEF ; Tamil # Nd [9] TAMIL DIGIT ONE..TAMIL DIGIT NINE +0BF0..0BF2 ; Tamil # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND +0BF3..0BF8 ; Tamil # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN +0BF9 ; Tamil # Sc TAMIL RUPEE SIGN +0BFA ; Tamil # So TAMIL NUMBER SIGN + +# Total code points: 69 # ================================================ -0B82 ; TAMIL # Mn TAMIL SIGN ANUSVARA -0B83 ; TAMIL # Lo TAMIL SIGN VISARGA -0B85..0B8A ; TAMIL # Lo [6] TAMIL LETTER A..TAMIL LETTER UU -0B8E..0B90 ; TAMIL # Lo [3] TAMIL LETTER E..TAMIL LETTER AI -0B92..0B95 ; TAMIL # Lo [4] TAMIL LETTER O..TAMIL LETTER KA -0B99..0B9A ; TAMIL # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA -0B9C ; TAMIL # Lo TAMIL LETTER JA -0B9E..0B9F ; TAMIL # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA -0BA3..0BA4 ; TAMIL # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA -0BA8..0BAA ; TAMIL # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA -0BAE..0BB5 ; TAMIL # Lo [8] TAMIL LETTER MA..TAMIL LETTER VA -0BB7..0BB9 ; TAMIL # Lo [3] TAMIL LETTER SSA..TAMIL LETTER HA -0BBE..0BBF ; TAMIL # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I -0BC0 ; TAMIL # Mn TAMIL VOWEL SIGN II -0BC1..0BC2 ; TAMIL # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU -0BC6..0BC8 ; TAMIL # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI -0BCA..0BCC ; TAMIL # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU -0BCD ; TAMIL # Mn TAMIL SIGN VIRAMA -0BD7 ; TAMIL # Mc TAMIL AU LENGTH MARK -0BE7..0BEF ; TAMIL # Nd [9] TAMIL DIGIT ONE..TAMIL DIGIT NINE -0BF0..0BF2 ; TAMIL # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND - -# Total code points: 61 - -# ================================================ - -0C01..0C03 ; TELUGU # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA -0C05..0C0C ; TELUGU # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L -0C0E..0C10 ; TELUGU # Lo [3] TELUGU LETTER E..TELUGU LETTER AI -0C12..0C28 ; TELUGU # Lo [23] TELUGU LETTER O..TELUGU LETTER NA -0C2A..0C33 ; TELUGU # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA -0C35..0C39 ; TELUGU # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA -0C3E..0C40 ; TELUGU # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II -0C41..0C44 ; TELUGU # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR -0C46..0C48 ; TELUGU # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI -0C4A..0C4D ; TELUGU # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA -0C55..0C56 ; TELUGU # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK -0C60..0C61 ; TELUGU # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL -0C66..0C6F ; TELUGU # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE +0C01..0C03 ; Telugu # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA +0C05..0C0C ; Telugu # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L +0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI +0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA +0C2A..0C33 ; Telugu # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA +0C35..0C39 ; Telugu # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA +0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II +0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR +0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI +0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA +0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK +0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL +0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE # Total code points: 80 # ================================================ -0C82..0C83 ; KANNADA # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA -0C85..0C8C ; KANNADA # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L -0C8E..0C90 ; KANNADA # Lo [3] KANNADA LETTER E..KANNADA LETTER AI -0C92..0CA8 ; KANNADA # Lo [23] KANNADA LETTER O..KANNADA LETTER NA -0CAA..0CB3 ; KANNADA # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA -0CB5..0CB9 ; KANNADA # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA -0CBD ; KANNADA # Lo KANNADA SIGN AVAGRAHA -0CBE ; KANNADA # Mc KANNADA VOWEL SIGN AA -0CBF ; KANNADA # Mn KANNADA VOWEL SIGN I -0CC0..0CC4 ; KANNADA # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR -0CC6 ; KANNADA # Mn KANNADA VOWEL SIGN E -0CC7..0CC8 ; KANNADA # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI -0CCA..0CCB ; KANNADA # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO -0CCC..0CCD ; KANNADA # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA -0CD5..0CD6 ; KANNADA # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK -0CDE ; KANNADA # Lo KANNADA LETTER FA -0CE0..0CE1 ; KANNADA # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL -0CE6..0CEF ; KANNADA # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE +0C82..0C83 ; Kannada # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA +0C85..0C8C ; Kannada # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L +0C8E..0C90 ; Kannada # Lo [3] KANNADA LETTER E..KANNADA LETTER AI +0C92..0CA8 ; Kannada # Lo [23] KANNADA LETTER O..KANNADA LETTER NA +0CAA..0CB3 ; Kannada # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA +0CB5..0CB9 ; Kannada # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA +0CBC ; Kannada # Mn KANNADA SIGN NUKTA +0CBD ; Kannada # Lo KANNADA SIGN AVAGRAHA +0CBE ; Kannada # Mc KANNADA VOWEL SIGN AA +0CBF ; Kannada # Mn KANNADA VOWEL SIGN I +0CC0..0CC4 ; Kannada # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR +0CC6 ; Kannada # Mn KANNADA VOWEL SIGN E +0CC7..0CC8 ; Kannada # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI +0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO +0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA +0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK +0CDE ; Kannada # Lo KANNADA LETTER FA +0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL +0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE -# Total code points: 81 +# Total code points: 82 # ================================================ -0D02..0D03 ; MALAYALAM # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA -0D05..0D0C ; MALAYALAM # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L -0D0E..0D10 ; MALAYALAM # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI -0D12..0D28 ; MALAYALAM # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA -0D2A..0D39 ; MALAYALAM # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA -0D3E..0D40 ; MALAYALAM # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II -0D41..0D43 ; MALAYALAM # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R -0D46..0D48 ; MALAYALAM # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI -0D4A..0D4C ; MALAYALAM # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU -0D4D ; MALAYALAM # Mn MALAYALAM SIGN VIRAMA -0D57 ; MALAYALAM # Mc MALAYALAM AU LENGTH MARK -0D60..0D61 ; MALAYALAM # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL -0D66..0D6F ; MALAYALAM # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE +0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA +0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L +0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI +0D12..0D28 ; Malayalam # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA +0D2A..0D39 ; Malayalam # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA +0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II +0D41..0D43 ; Malayalam # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R +0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI +0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU +0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA +0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK +0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL +0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE # Total code points: 78 # ================================================ -0D82..0D83 ; SINHALA # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA -0D85..0D96 ; SINHALA # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA -0D9A..0DB1 ; SINHALA # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA -0DB3..0DBB ; SINHALA # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA -0DBD ; SINHALA # Lo SINHALA LETTER DANTAJA LAYANNA -0DC0..0DC6 ; SINHALA # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA -0DCA ; SINHALA # Mn SINHALA SIGN AL-LAKUNA -0DCF..0DD1 ; SINHALA # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA -0DD2..0DD4 ; SINHALA # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA -0DD6 ; SINHALA # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA -0DD8..0DDF ; SINHALA # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA -0DF2..0DF3 ; SINHALA # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA +0D82..0D83 ; Sinhala # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA +0D85..0D96 ; Sinhala # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA +0D9A..0DB1 ; Sinhala # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA +0DB3..0DBB ; Sinhala # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA +0DBD ; Sinhala # Lo SINHALA LETTER DANTAJA LAYANNA +0DC0..0DC6 ; Sinhala # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA +0DCA ; Sinhala # Mn SINHALA SIGN AL-LAKUNA +0DCF..0DD1 ; Sinhala # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA +0DD2..0DD4 ; Sinhala # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA +0DD6 ; Sinhala # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA +0DD8..0DDF ; Sinhala # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA +0DF2..0DF3 ; Sinhala # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA +0DF4 ; Sinhala # Po SINHALA PUNCTUATION KUNDDALIYA -# Total code points: 79 +# Total code points: 80 # ================================================ -0E01..0E30 ; THAI # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A -0E31 ; THAI # Mn THAI CHARACTER MAI HAN-AKAT -0E32..0E33 ; THAI # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM -0E34..0E3A ; THAI # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU -0E40..0E45 ; THAI # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO -0E46 ; THAI # Lm THAI CHARACTER MAIYAMOK -0E47..0E4E ; THAI # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN -0E50..0E59 ; THAI # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE +0E01..0E30 ; Thai # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A +0E31 ; Thai # Mn THAI CHARACTER MAI HAN-AKAT +0E32..0E33 ; Thai # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM +0E34..0E3A ; Thai # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU +0E40..0E45 ; Thai # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO +0E46 ; Thai # Lm THAI CHARACTER MAIYAMOK +0E47..0E4E ; Thai # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN +0E4F ; Thai # Po THAI CHARACTER FONGMAN +0E50..0E59 ; Thai # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE +0E5A..0E5B ; Thai # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT -# Total code points: 83 +# Total code points: 86 # ================================================ -0E81..0E82 ; LAO # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG -0E84 ; LAO # Lo LAO LETTER KHO TAM -0E87..0E88 ; LAO # Lo [2] LAO LETTER NGO..LAO LETTER CO -0E8A ; LAO # Lo LAO LETTER SO TAM -0E8D ; LAO # Lo LAO LETTER NYO -0E94..0E97 ; LAO # Lo [4] LAO LETTER DO..LAO LETTER THO TAM -0E99..0E9F ; LAO # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG -0EA1..0EA3 ; LAO # Lo [3] LAO LETTER MO..LAO LETTER LO LING -0EA5 ; LAO # Lo LAO LETTER LO LOOT -0EA7 ; LAO # Lo LAO LETTER WO -0EAA..0EAB ; LAO # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG -0EAD..0EB0 ; LAO # Lo [4] LAO LETTER O..LAO VOWEL SIGN A -0EB1 ; LAO # Mn LAO VOWEL SIGN MAI KAN -0EB2..0EB3 ; LAO # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM -0EB4..0EB9 ; LAO # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU -0EBB..0EBC ; LAO # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO -0EBD ; LAO # Lo LAO SEMIVOWEL SIGN NYO -0EC0..0EC4 ; LAO # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI -0EC6 ; LAO # Lm LAO KO LA -0EC8..0ECD ; LAO # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA -0ED0..0ED9 ; LAO # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE -0EDC..0EDD ; LAO # Lo [2] LAO HO NO..LAO HO MO +0E81..0E82 ; Lao # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG +0E84 ; Lao # Lo LAO LETTER KHO TAM +0E87..0E88 ; Lao # Lo [2] LAO LETTER NGO..LAO LETTER CO +0E8A ; Lao # Lo LAO LETTER SO TAM +0E8D ; Lao # Lo LAO LETTER NYO +0E94..0E97 ; Lao # Lo [4] LAO LETTER DO..LAO LETTER THO TAM +0E99..0E9F ; Lao # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG +0EA1..0EA3 ; Lao # Lo [3] LAO LETTER MO..LAO LETTER LO LING +0EA5 ; Lao # Lo LAO LETTER LO LOOT +0EA7 ; Lao # Lo LAO LETTER WO +0EAA..0EAB ; Lao # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG +0EAD..0EB0 ; Lao # Lo [4] LAO LETTER O..LAO VOWEL SIGN A +0EB1 ; Lao # Mn LAO VOWEL SIGN MAI KAN +0EB2..0EB3 ; Lao # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM +0EB4..0EB9 ; Lao # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU +0EBB..0EBC ; Lao # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO +0EBD ; Lao # Lo LAO SEMIVOWEL SIGN NYO +0EC0..0EC4 ; Lao # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI +0EC6 ; Lao # Lm LAO KO LA +0EC8..0ECD ; Lao # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA +0ED0..0ED9 ; Lao # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE +0EDC..0EDD ; Lao # Lo [2] LAO HO NO..LAO HO MO # Total code points: 65 # ================================================ -0F00 ; TIBETAN # Lo TIBETAN SYLLABLE OM -0F18..0F19 ; TIBETAN # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS -0F20..0F29 ; TIBETAN # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE -0F2A..0F33 ; TIBETAN # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO -0F35 ; TIBETAN # Mn TIBETAN MARK NGAS BZUNG NYI ZLA -0F37 ; TIBETAN # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS -0F39 ; TIBETAN # Mn TIBETAN MARK TSA -PHRU -0F40..0F47 ; TIBETAN # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA -0F49..0F6A ; TIBETAN # Lo [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA -0F71..0F7E ; TIBETAN # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO -0F7F ; TIBETAN # Mc TIBETAN SIGN RNAM BCAD -0F80..0F84 ; TIBETAN # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA -0F86..0F87 ; TIBETAN # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS -0F88..0F8B ; TIBETAN # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS -0F90..0F97 ; TIBETAN # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA -0F99..0FBC ; TIBETAN # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA -0FC6 ; TIBETAN # Mn TIBETAN SYMBOL PADMA GDAN - -# Total code points: 139 +0F00 ; Tibetan # Lo TIBETAN SYLLABLE OM +0F01..0F03 ; Tibetan # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA +0F04..0F12 ; Tibetan # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD +0F13..0F17 ; Tibetan # So [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS +0F18..0F19 ; Tibetan # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS +0F1A..0F1F ; Tibetan # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG +0F20..0F29 ; Tibetan # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE +0F2A..0F33 ; Tibetan # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO +0F34 ; Tibetan # So TIBETAN MARK BSDUS RTAGS +0F35 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG NYI ZLA +0F36 ; Tibetan # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN +0F37 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS +0F38 ; Tibetan # So TIBETAN MARK CHE MGO +0F39 ; Tibetan # Mn TIBETAN MARK TSA -PHRU +0F3A ; Tibetan # Ps TIBETAN MARK GUG RTAGS GYON +0F3B ; Tibetan # Pe TIBETAN MARK GUG RTAGS GYAS +0F3C ; Tibetan # Ps TIBETAN MARK ANG KHANG GYON +0F3D ; Tibetan # Pe TIBETAN MARK ANG KHANG GYAS +0F3E..0F3F ; Tibetan # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES +0F40..0F47 ; Tibetan # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA +0F49..0F6A ; Tibetan # Lo [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA +0F71..0F7E ; Tibetan # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO +0F7F ; Tibetan # Mc TIBETAN SIGN RNAM BCAD +0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA +0F85 ; Tibetan # Po TIBETAN MARK PALUTA +0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS +0F88..0F8B ; Tibetan # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS +0F90..0F97 ; Tibetan # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA +0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA +0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE +0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN +0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL +0FCF ; Tibetan # So TIBETAN SIGN RDEL NAG GSUM + +# Total code points: 193 # ================================================ -1000..1021 ; MYANMAR # Lo [34] MYANMAR LETTER KA..MYANMAR LETTER A -1023..1027 ; MYANMAR # Lo [5] MYANMAR LETTER I..MYANMAR LETTER E -1029..102A ; MYANMAR # Lo [2] MYANMAR LETTER O..MYANMAR LETTER AU -102C ; MYANMAR # Mc MYANMAR VOWEL SIGN AA -102D..1030 ; MYANMAR # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU -1031 ; MYANMAR # Mc MYANMAR VOWEL SIGN E -1032 ; MYANMAR # Mn MYANMAR VOWEL SIGN AI -1036..1037 ; MYANMAR # Mn [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW -1038 ; MYANMAR # Mc MYANMAR SIGN VISARGA -1039 ; MYANMAR # Mn MYANMAR SIGN VIRAMA -1040..1049 ; MYANMAR # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE -1050..1055 ; MYANMAR # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL -1056..1057 ; MYANMAR # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR -1058..1059 ; MYANMAR # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL +1000..1021 ; Myanmar # Lo [34] MYANMAR LETTER KA..MYANMAR LETTER A +1023..1027 ; Myanmar # Lo [5] MYANMAR LETTER I..MYANMAR LETTER E +1029..102A ; Myanmar # Lo [2] MYANMAR LETTER O..MYANMAR LETTER AU +102C ; Myanmar # Mc MYANMAR VOWEL SIGN AA +102D..1030 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU +1031 ; Myanmar # Mc MYANMAR VOWEL SIGN E +1032 ; Myanmar # Mn MYANMAR VOWEL SIGN AI +1036..1037 ; Myanmar # Mn [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW +1038 ; Myanmar # Mc MYANMAR SIGN VISARGA +1039 ; Myanmar # Mn MYANMAR SIGN VIRAMA +1040..1049 ; Myanmar # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE +104A..104F ; Myanmar # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE +1050..1055 ; Myanmar # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL +1056..1057 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR +1058..1059 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL -# Total code points: 72 +# Total code points: 78 # ================================================ -10A0..10C5 ; GEORGIAN # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE -10D0..10F8 ; GEORGIAN # Lo [41] GEORGIAN LETTER AN..GEORGIAN LETTER ELIFI +10A0..10C5 ; Georgian # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE +10D0..10F8 ; Georgian # Lo [41] GEORGIAN LETTER AN..GEORGIAN LETTER ELIFI # Total code points: 79 # ================================================ -1100..1159 ; HANGUL # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH -115F..11A2 ; HANGUL # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA -11A8..11F9 ; HANGUL # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH -3131..318E ; HANGUL # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE -AC00..D7A3 ; HANGUL # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH -FFA0..FFBE ; HANGUL # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH -FFC2..FFC7 ; HANGUL # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E -FFCA..FFCF ; HANGUL # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE -FFD2..FFD7 ; HANGUL # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU -FFDA..FFDC ; HANGUL # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I - -# Total code points: 11558 - -# ================================================ - -1200..1206 ; ETHIOPIC # Lo [7] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO -1208..1246 ; ETHIOPIC # Lo [63] ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO -1248 ; ETHIOPIC # Lo ETHIOPIC SYLLABLE QWA -124A..124D ; ETHIOPIC # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE -1250..1256 ; ETHIOPIC # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO -1258 ; ETHIOPIC # Lo ETHIOPIC SYLLABLE QHWA -125A..125D ; ETHIOPIC # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE -1260..1286 ; ETHIOPIC # Lo [39] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO -1288 ; ETHIOPIC # Lo ETHIOPIC SYLLABLE XWA -128A..128D ; ETHIOPIC # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE -1290..12AE ; ETHIOPIC # Lo [31] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO -12B0 ; ETHIOPIC # Lo ETHIOPIC SYLLABLE KWA -12B2..12B5 ; ETHIOPIC # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE -12B8..12BE ; ETHIOPIC # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO -12C0 ; ETHIOPIC # Lo ETHIOPIC SYLLABLE KXWA -12C2..12C5 ; ETHIOPIC # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE -12C8..12CE ; ETHIOPIC # Lo [7] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO -12D0..12D6 ; ETHIOPIC # Lo [7] ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O -12D8..12EE ; ETHIOPIC # Lo [23] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO -12F0..130E ; ETHIOPIC # Lo [31] ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO -1310 ; ETHIOPIC # Lo ETHIOPIC SYLLABLE GWA -1312..1315 ; ETHIOPIC # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE -1318..131E ; ETHIOPIC # Lo [7] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO -1320..1346 ; ETHIOPIC # Lo [39] ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO -1348..135A ; ETHIOPIC # Lo [19] ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA -1369..1371 ; ETHIOPIC # Nd [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE -1372..137C ; ETHIOPIC # No [11] ETHIOPIC NUMBER TEN..ETHIOPIC NUMBER TEN THOUSAND - -# Total code points: 337 - -# ================================================ - -13A0..13F4 ; CHEROKEE # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV +1100..1159 ; Hangul # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH +115F..11A2 ; Hangul # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA +11A8..11F9 ; Hangul # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH +3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE +3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU +3260..327D ; Hangul # So [30] CIRCLED HANGUL KIYEOK..CIRCLED KOREAN CHARACTER JUEUI +AC00..D7A3 ; Hangul # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH +FFA0..FFBE ; Hangul # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH +FFC2..FFC7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E +FFCA..FFCF ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE +FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU +FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I + +# Total code points: 11619 + +# ================================================ + +1200..1206 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO +1208..1246 ; Ethiopic # Lo [63] ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO +1248 ; Ethiopic # Lo ETHIOPIC SYLLABLE QWA +124A..124D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE +1250..1256 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO +1258 ; Ethiopic # Lo ETHIOPIC SYLLABLE QHWA +125A..125D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE +1260..1286 ; Ethiopic # Lo [39] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO +1288 ; Ethiopic # Lo ETHIOPIC SYLLABLE XWA +128A..128D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE +1290..12AE ; Ethiopic # Lo [31] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO +12B0 ; Ethiopic # Lo ETHIOPIC SYLLABLE KWA +12B2..12B5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE +12B8..12BE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO +12C0 ; Ethiopic # Lo ETHIOPIC SYLLABLE KXWA +12C2..12C5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE +12C8..12CE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO +12D0..12D6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O +12D8..12EE ; Ethiopic # Lo [23] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO +12F0..130E ; Ethiopic # Lo [31] ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO +1310 ; Ethiopic # Lo ETHIOPIC SYLLABLE GWA +1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE +1318..131E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO +1320..1346 ; Ethiopic # Lo [39] ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO +1348..135A ; Ethiopic # Lo [19] ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA +1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR +1369..1371 ; Ethiopic # Nd [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE +1372..137C ; Ethiopic # No [11] ETHIOPIC NUMBER TEN..ETHIOPIC NUMBER TEN THOUSAND + +# Total code points: 345 + +# ================================================ + +13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV # Total code points: 85 # ================================================ -1401..166C ; CANADIAN_ABORIGINAL # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA -166F..1676 ; CANADIAN_ABORIGINAL # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA +1401..166C ; Canadian_Aboriginal # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA +166D..166E ; Canadian_Aboriginal # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP +166F..1676 ; Canadian_Aboriginal # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA -# Total code points: 628 +# Total code points: 630 # ================================================ -1681..169A ; OGHAM # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH +1680 ; Ogham # Zs OGHAM SPACE MARK +1681..169A ; Ogham # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH +169B ; Ogham # Ps OGHAM FEATHER MARK +169C ; Ogham # Pe OGHAM REVERSED FEATHER MARK -# Total code points: 26 +# Total code points: 29 # ================================================ -16A0..16EA ; RUNIC # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X -16EE..16F0 ; RUNIC # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL +16A0..16EA ; Runic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X +16EE..16F0 ; Runic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL # Total code points: 78 # ================================================ -1780..17B3 ; KHMER # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU -17B4..17B5 ; KHMER # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA -17B6 ; KHMER # Mc KHMER VOWEL SIGN AA -17B7..17BD ; KHMER # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA -17BE..17C5 ; KHMER # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU -17C6 ; KHMER # Mn KHMER SIGN NIKAHIT -17C7..17C8 ; KHMER # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU -17C9..17D3 ; KHMER # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT -17E0..17E9 ; KHMER # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE - -# Total code points: 94 +1780..17B3 ; Khmer # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU +17B4..17B5 ; Khmer # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA +17B6 ; Khmer # Mc KHMER VOWEL SIGN AA +17B7..17BD ; Khmer # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA +17BE..17C5 ; Khmer # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU +17C6 ; Khmer # Mn KHMER SIGN NIKAHIT +17C7..17C8 ; Khmer # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU +17C9..17D3 ; Khmer # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT +17D4..17D6 ; Khmer # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH +17D7 ; Khmer # Lm KHMER SIGN LEK TOO +17D8..17DA ; Khmer # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT +17DB ; Khmer # Sc KHMER CURRENCY SYMBOL RIEL +17DC ; Khmer # Lo KHMER SIGN AVAKRAHASANYA +17DD ; Khmer # Mn KHMER SIGN ATTHACAN +17E0..17E9 ; Khmer # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE +17F0..17F9 ; Khmer # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON +19E0..19FF ; Khmer # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC + +# Total code points: 146 # ================================================ -1810..1819 ; MONGOLIAN # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE -1820..1842 ; MONGOLIAN # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI -1843 ; MONGOLIAN # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN -1844..1877 ; MONGOLIAN # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA -1880..18A8 ; MONGOLIAN # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA -18A9 ; MONGOLIAN # Mn MONGOLIAN LETTER ALI GALI DAGALGA +1800..1805 ; Mongolian # Po [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS +1806 ; Mongolian # Pd MONGOLIAN TODO SOFT HYPHEN +1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU +180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE +180E ; Mongolian # Zs MONGOLIAN VOWEL SEPARATOR +1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE +1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI +1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN +1844..1877 ; Mongolian # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA +1880..18A8 ; Mongolian # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA +18A9 ; Mongolian # Mn MONGOLIAN LETTER ALI GALI DAGALGA -# Total code points: 140 +# Total code points: 155 # ================================================ -3041..3096 ; HIRAGANA # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE -309D..309E ; HIRAGANA # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK -309F ; HIRAGANA # Lo HIRAGANA DIGRAPH YORI +3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE +309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK +309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI # Total code points: 89 # ================================================ -30A1..30FA ; KATAKANA # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO -30FD..30FE ; KATAKANA # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK -30FF ; KATAKANA # Lo KATAKANA DIGRAPH KOTO -31F0..31FF ; KATAKANA # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO -FF66..FF6F ; KATAKANA # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU -FF71..FF9D ; KATAKANA # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N +30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO +30FD..30FE ; Katakana # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK +30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO +31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO +FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU +FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N # Total code points: 164 # ================================================ -3105..312C ; BOPOMOFO # Lo [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN -31A0..31B7 ; BOPOMOFO # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H +3105..312C ; Bopomofo # Lo [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN +31A0..31B7 ; Bopomofo # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H # Total code points: 64 # ================================================ -2E80..2E99 ; HAN # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP -2E9B..2EF3 ; HAN # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE -2F00..2FD5 ; HAN # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE -3005 ; HAN # Lm IDEOGRAPHIC ITERATION MARK -3007 ; HAN # Nl IDEOGRAPHIC NUMBER ZERO -3021..3029 ; HAN # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE -3038..303A ; HAN # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY -303B ; HAN # Lm VERTICAL IDEOGRAPHIC ITERATION MARK -3400..4DB5 ; HAN # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 -4E00..9FA5 ; HAN # Lo [20902] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5 -F900..FA2D ; HAN # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D -FA30..FA6A ; HAN # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A -20000..2A6D6 ; HAN # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 -2F800..2FA1D ; HAN # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D +2E80..2E99 ; Han # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP +2E9B..2EF3 ; Han # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE +2F00..2FD5 ; Han # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE +3005 ; Han # Lm IDEOGRAPHIC ITERATION MARK +3007 ; Han # Nl IDEOGRAPHIC NUMBER ZERO +3021..3029 ; Han # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE +3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY +303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK +3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 +4E00..9FA5 ; Han # Lo [20902] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5 +F900..FA2D ; Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D +FA30..FA6A ; Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A +20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 +2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D # Total code points: 71442 # ================================================ -A000..A48C ; YI # Lo [1165] YI SYLLABLE IT..YI SYLLABLE YYR -A490..A4C6 ; YI # So [55] YI RADICAL QOT..YI RADICAL KE +A000..A48C ; Yi # Lo [1165] YI SYLLABLE IT..YI SYLLABLE YYR +A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE # Total code points: 1220 # ================================================ -10300..1031E ; OLD_ITALIC # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU +10300..1031E ; Old_Italic # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU +10320..10323 ; Old_Italic # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY -# Total code points: 31 +# Total code points: 35 # ================================================ -10330..10349 ; GOTHIC # Lo [26] GOTHIC LETTER AHSA..GOTHIC LETTER OTHAL -1034A ; GOTHIC # Nl GOTHIC LETTER NINE HUNDRED +10330..10349 ; Gothic # Lo [26] GOTHIC LETTER AHSA..GOTHIC LETTER OTHAL +1034A ; Gothic # Nl GOTHIC LETTER NINE HUNDRED # Total code points: 27 # ================================================ -10400..1044F ; DESERET # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW +10400..1044F ; Deseret # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW # Total code points: 80 # ================================================ -0300..034F ; INHERITED # Mn [80] COMBINING GRAVE ACCENT..COMBINING GRAPHEME JOINER -0360..036F ; INHERITED # Mn [16] COMBINING DOUBLE TILDE..COMBINING LATIN SMALL LETTER X -0488..0489 ; INHERITED # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN -0591..05A1 ; INHERITED # Mn [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER -05A3..05B9 ; INHERITED # Mn [23] HEBREW ACCENT MUNAH..HEBREW POINT HOLAM -05BB..05BD ; INHERITED # Mn [3] HEBREW POINT QUBUTS..HEBREW POINT METEG -05BF ; INHERITED # Mn HEBREW POINT RAFE -05C1..05C2 ; INHERITED # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT -05C4 ; INHERITED # Mn HEBREW MARK UPPER DOT -064B..0655 ; INHERITED # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW -0670 ; INHERITED # Mn ARABIC LETTER SUPERSCRIPT ALEF -06D6..06DC ; INHERITED # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN -06DD ; INHERITED # Cf ARABIC END OF AYAH -06DE ; INHERITED # Me ARABIC START OF RUB EL HIZB -06DF..06E4 ; INHERITED # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA -06E7..06E8 ; INHERITED # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON -06EA..06ED ; INHERITED # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM -180B..180D ; INHERITED # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE -20D0..20DC ; INHERITED # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE -20DD..20E0 ; INHERITED # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH -20E1 ; INHERITED # Mn COMBINING LEFT RIGHT ARROW ABOVE -20E2..20E4 ; INHERITED # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE -20E5..20EA ; INHERITED # Mn [6] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING LEFTWARDS ARROW OVERLAY -302A..302F ; INHERITED # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK -3099..309A ; INHERITED # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK -FB1E ; INHERITED # Mn HEBREW POINT JUDEO-SPANISH VARIKA -FE00..FE0F ; INHERITED # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 -FE20..FE23 ; INHERITED # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF -1D167..1D169 ; INHERITED # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 -1D17B..1D182 ; INHERITED # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE -1D185..1D18B ; INHERITED # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE -1D1AA..1D1AD ; INHERITED # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO - -# Total code points: 259 - -# ================================================ - -1700..170C ; TAGALOG # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA -170E..1711 ; TAGALOG # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA -1712..1714 ; TAGALOG # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA +0300..0357 ; Inherited # Mn [88] COMBINING GRAVE ACCENT..COMBINING RIGHT HALF RING ABOVE +035D..036F ; Inherited # Mn [19] COMBINING DOUBLE BREVE..COMBINING LATIN SMALL LETTER X +064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW +0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF +200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER +20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE +20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH +20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE +20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE +20E5..20EA ; Inherited # Mn [6] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING LEFTWARDS ARROW OVERLAY +302A..302F ; Inherited # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK +3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 +FE20..FE23 ; Inherited # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF +1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 +1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE +1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE +1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO +E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + +# Total code points: 438 + +# ================================================ + +1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA +170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA +1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA # Total code points: 20 # ================================================ -1720..1731 ; HANUNOO # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA -1732..1734 ; HANUNOO # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD +1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA +1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD # Total code points: 21 # ================================================ -1740..1751 ; BUHID # Lo [18] BUHID LETTER A..BUHID LETTER HA -1752..1753 ; BUHID # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U +1740..1751 ; Buhid # Lo [18] BUHID LETTER A..BUHID LETTER HA +1752..1753 ; Buhid # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U # Total code points: 20 # ================================================ -1760..176C ; TAGBANWA # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA -176E..1770 ; TAGBANWA # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA -1772..1773 ; TAGBANWA # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U +1760..176C ; Tagbanwa # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA +176E..1770 ; Tagbanwa # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA +1772..1773 ; Tagbanwa # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U # Total code points: 18 # ================================================ -1900..191C ; LIMBU # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA -1920..1922 ; LIMBU # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U -1923..1926 ; LIMBU # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU -1927..1928 ; LIMBU # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O -1929..192B ; LIMBU # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA -1930..1931 ; LIMBU # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA -1932 ; LIMBU # Mn LIMBU SMALL LETTER ANUSVARA -1933..1938 ; LIMBU # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA -1939..193B ; LIMBU # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I -1946..194F ; LIMBU # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE - -# Total code points: 63 +1900..191C ; Limbu # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA +1920..1922 ; Limbu # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U +1923..1926 ; Limbu # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU +1927..1928 ; Limbu # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O +1929..192B ; Limbu # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA +1930..1931 ; Limbu # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA +1932 ; Limbu # Mn LIMBU SMALL LETTER ANUSVARA +1933..1938 ; Limbu # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA +1939..193B ; Limbu # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I +1940 ; Limbu # So LIMBU SIGN LOO +1944..1945 ; Limbu # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK +1946..194F ; Limbu # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE + +# Total code points: 66 # ================================================ -1950..196D ; TAI_LE # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI -1970..1974 ; TAI_LE # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 +1950..196D ; Tai_Le # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI +1970..1974 ; Tai_Le # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 # Total code points: 35 # ================================================ -10000..1000B ; LINEAR_B # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE -1000D..10026 ; LINEAR_B # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO -10028..1003A ; LINEAR_B # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO -1003C..1003D ; LINEAR_B # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE -1003F..1004D ; LINEAR_B # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO -10050..1005D ; LINEAR_B # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 -10080..100FA ; LINEAR_B # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 +10000..1000B ; Linear_B # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE +1000D..10026 ; Linear_B # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO +10028..1003A ; Linear_B # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO +1003C..1003D ; Linear_B # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE +1003F..1004D ; Linear_B # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO +10050..1005D ; Linear_B # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 +10080..100FA ; Linear_B # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 # Total code points: 211 # ================================================ -10380..1039D ; UGARITIC # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU +10380..1039D ; Ugaritic # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU +1039F ; Ugaritic # Po UGARITIC WORD DIVIDER -# Total code points: 30 +# Total code points: 31 # ================================================ -10450..1047F ; SHAVIAN # Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW +10450..1047F ; Shavian # Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW # Total code points: 48 # ================================================ -10480..1049D ; OSMANYA # Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO -104A0..104A9 ; OSMANYA # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE +10480..1049D ; Osmanya # Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO +104A0..104A9 ; Osmanya # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE # Total code points: 40 # ================================================ -10800..10805 ; CYPRIOT # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA -10808 ; CYPRIOT # Lo CYPRIOT SYLLABLE JO -1080A..10835 ; CYPRIOT # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO -10837..10838 ; CYPRIOT # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE -1083C ; CYPRIOT # Lo CYPRIOT SYLLABLE ZA -1083F ; CYPRIOT # Lo CYPRIOT SYLLABLE ZO +10800..10805 ; Cypriot # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA +10808 ; Cypriot # Lo CYPRIOT SYLLABLE JO +1080A..10835 ; Cypriot # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO +10837..10838 ; Cypriot # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE +1083C ; Cypriot # Lo CYPRIOT SYLLABLE ZA +1083F ; Cypriot # Lo CYPRIOT SYLLABLE ZO # Total code points: 55 # ================================================ -2800..28FF ; BRAILLE # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 +2800..28FF ; Braille # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 # Total code points: 256 +# ================================================ + +3031..3035 ; Katakana_Or_Hiragana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF +309B..309C ; Katakana_Or_Hiragana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK +FF70 ; Katakana_Or_Hiragana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK +FF9E..FF9F ; Katakana_Or_Hiragana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + +# Total code points: 10 diff --git a/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt b/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt index 34d1c61de37..c8401d6c421 100644 --- a/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt +++ b/gnu/usr.bin/perl/lib/unicore/SpecialCasing.txt @@ -1,5 +1,5 @@ -# SpecialCasing-4.0.0.txt -# Date: 2003-03-14, 20:22:04 GMT [MD] +# SpecialCasing-4.0.1.txt +# Date: 2003-10-06, 17:30:00 PST [KW] # # Special Casing Properties # @@ -170,7 +170,7 @@ FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH 1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI 1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -# Some characters with YPOGEGRAMMENI are also have no corresponding titlecases +# Some characters with YPOGEGRAMMENI also have no corresponding titlecases 1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI 1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI diff --git a/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt b/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt index 86ea1cf9f68..3710e172943 100644 --- a/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt +++ b/gnu/usr.bin/perl/lib/unicore/UnicodeData.txt @@ -41,11 +41,11 @@ 0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; 0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; 002A;ASTERISK;Po;0;ON;;;;;N;;;;; -002B;PLUS SIGN;Sm;0;ET;;;;;N;;;;; +002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; 002C;COMMA;Po;0;CS;;;;;N;;;;; -002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;; +002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; 002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; -002F;SOLIDUS;Po;0;ES;;;;;N;SLASH;;;; +002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; 0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; 0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; 0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; @@ -171,7 +171,7 @@ 00AA;FEMININE ORDINAL INDICATOR;Ll;0;L; 0061;;;;N;;;;; 00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; 00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; -00AD;SOFT HYPHEN;Cf;0;ON;;;;;N;;;;; +00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; 00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; 00AF;MACRON;Sk;0;ON; 0020 0304;;;;N;SPACING MACRON;;;; 00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; @@ -659,7 +659,7 @@ 02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; 02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; 02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK ;Ll;0;L;;;;;N;;;;; +02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; 02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; 02B0;MODIFIER LETTER SMALL H;Lm;0;L; 0068;;;;N;;;;; 02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L; 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; @@ -1411,7 +1411,7 @@ 0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; 0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; 0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; -0615;ARABIC SMALL HIGH TAH ;Mn;230;NSM;;;;;N;;;;; +0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; 061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; 061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; 0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; @@ -3645,15 +3645,15 @@ 1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; 1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; 1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -1369;ETHIOPIC DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1369;ETHIOPIC DIGIT ONE;Nd;0;L;;;1;1;N;;;;; +136A;ETHIOPIC DIGIT TWO;Nd;0;L;;;2;2;N;;;;; +136B;ETHIOPIC DIGIT THREE;Nd;0;L;;;3;3;N;;;;; +136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;;4;4;N;;;;; +136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;;5;5;N;;;;; +136E;ETHIOPIC DIGIT SIX;Nd;0;L;;;6;6;N;;;;; +136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;;7;7;N;;;;; +1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;;8;8;N;;;;; +1371;ETHIOPIC DIGIT NINE;Nd;0;L;;;9;9;N;;;;; 1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; 1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; 1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; @@ -5571,7 +5571,7 @@ 2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; 2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; 200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; -200B;ZERO WIDTH SPACE;Zs;0;BN;;;;;N;;;;; +200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; 200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; 200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; 200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; @@ -5628,7 +5628,7 @@ 2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; 2042;ASTERISM;Po;0;ON;;;;;N;;;;; 2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; -2044;FRACTION SLASH;Sm;0;ON;;;;;N;;;;; +2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; 2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; 2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; 2047;DOUBLE QUESTION MARK;Po;0;ON; 003F 003F;;;;N;;;;; @@ -6482,46 +6482,46 @@ 2448;OCR DASH;So;0;ON;;;;;N;;;;; 2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; 244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; -2460;CIRCLED DIGIT ONE;No;0;EN; 0031;;1;1;N;;;;; -2461;CIRCLED DIGIT TWO;No;0;EN; 0032;;2;2;N;;;;; -2462;CIRCLED DIGIT THREE;No;0;EN; 0033;;3;3;N;;;;; -2463;CIRCLED DIGIT FOUR;No;0;EN; 0034;;4;4;N;;;;; -2464;CIRCLED DIGIT FIVE;No;0;EN; 0035;;5;5;N;;;;; -2465;CIRCLED DIGIT SIX;No;0;EN; 0036;;6;6;N;;;;; -2466;CIRCLED DIGIT SEVEN;No;0;EN; 0037;;7;7;N;;;;; -2467;CIRCLED DIGIT EIGHT;No;0;EN; 0038;;8;8;N;;;;; -2468;CIRCLED DIGIT NINE;No;0;EN; 0039;;9;9;N;;;;; -2469;CIRCLED NUMBER TEN;No;0;EN; 0031 0030;;;10;N;;;;; -246A;CIRCLED NUMBER ELEVEN;No;0;EN; 0031 0031;;;11;N;;;;; -246B;CIRCLED NUMBER TWELVE;No;0;EN; 0031 0032;;;12;N;;;;; -246C;CIRCLED NUMBER THIRTEEN;No;0;EN; 0031 0033;;;13;N;;;;; -246D;CIRCLED NUMBER FOURTEEN;No;0;EN; 0031 0034;;;14;N;;;;; -246E;CIRCLED NUMBER FIFTEEN;No;0;EN; 0031 0035;;;15;N;;;;; -246F;CIRCLED NUMBER SIXTEEN;No;0;EN; 0031 0036;;;16;N;;;;; -2470;CIRCLED NUMBER SEVENTEEN;No;0;EN; 0031 0037;;;17;N;;;;; -2471;CIRCLED NUMBER EIGHTEEN;No;0;EN; 0031 0038;;;18;N;;;;; -2472;CIRCLED NUMBER NINETEEN;No;0;EN; 0031 0039;;;19;N;;;;; -2473;CIRCLED NUMBER TWENTY;No;0;EN; 0032 0030;;;20;N;;;;; -2474;PARENTHESIZED DIGIT ONE;No;0;EN; 0028 0031 0029;;1;1;N;;;;; -2475;PARENTHESIZED DIGIT TWO;No;0;EN; 0028 0032 0029;;2;2;N;;;;; -2476;PARENTHESIZED DIGIT THREE;No;0;EN; 0028 0033 0029;;3;3;N;;;;; -2477;PARENTHESIZED DIGIT FOUR;No;0;EN; 0028 0034 0029;;4;4;N;;;;; -2478;PARENTHESIZED DIGIT FIVE;No;0;EN; 0028 0035 0029;;5;5;N;;;;; -2479;PARENTHESIZED DIGIT SIX;No;0;EN; 0028 0036 0029;;6;6;N;;;;; -247A;PARENTHESIZED DIGIT SEVEN;No;0;EN; 0028 0037 0029;;7;7;N;;;;; -247B;PARENTHESIZED DIGIT EIGHT;No;0;EN; 0028 0038 0029;;8;8;N;;;;; -247C;PARENTHESIZED DIGIT NINE;No;0;EN; 0028 0039 0029;;9;9;N;;;;; -247D;PARENTHESIZED NUMBER TEN;No;0;EN; 0028 0031 0030 0029;;;10;N;;;;; -247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN; 0028 0031 0031 0029;;;11;N;;;;; -247F;PARENTHESIZED NUMBER TWELVE;No;0;EN; 0028 0031 0032 0029;;;12;N;;;;; -2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN; 0028 0031 0033 0029;;;13;N;;;;; -2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN; 0028 0031 0034 0029;;;14;N;;;;; -2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN; 0028 0031 0035 0029;;;15;N;;;;; -2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN; 0028 0031 0036 0029;;;16;N;;;;; -2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN; 0028 0031 0037 0029;;;17;N;;;;; -2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN; 0028 0031 0038 0029;;;18;N;;;;; -2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN; 0028 0031 0039 0029;;;19;N;;;;; -2487;PARENTHESIZED NUMBER TWENTY;No;0;EN; 0028 0032 0030 0029;;;20;N;;;;; +2460;CIRCLED DIGIT ONE;No;0;ON; 0031;;1;1;N;;;;; +2461;CIRCLED DIGIT TWO;No;0;ON; 0032;;2;2;N;;;;; +2462;CIRCLED DIGIT THREE;No;0;ON; 0033;;3;3;N;;;;; +2463;CIRCLED DIGIT FOUR;No;0;ON; 0034;;4;4;N;;;;; +2464;CIRCLED DIGIT FIVE;No;0;ON; 0035;;5;5;N;;;;; +2465;CIRCLED DIGIT SIX;No;0;ON; 0036;;6;6;N;;;;; +2466;CIRCLED DIGIT SEVEN;No;0;ON; 0037;;7;7;N;;;;; +2467;CIRCLED DIGIT EIGHT;No;0;ON; 0038;;8;8;N;;;;; +2468;CIRCLED DIGIT NINE;No;0;ON; 0039;;9;9;N;;;;; +2469;CIRCLED NUMBER TEN;No;0;ON; 0031 0030;;;10;N;;;;; +246A;CIRCLED NUMBER ELEVEN;No;0;ON; 0031 0031;;;11;N;;;;; +246B;CIRCLED NUMBER TWELVE;No;0;ON; 0031 0032;;;12;N;;;;; +246C;CIRCLED NUMBER THIRTEEN;No;0;ON; 0031 0033;;;13;N;;;;; +246D;CIRCLED NUMBER FOURTEEN;No;0;ON; 0031 0034;;;14;N;;;;; +246E;CIRCLED NUMBER FIFTEEN;No;0;ON; 0031 0035;;;15;N;;;;; +246F;CIRCLED NUMBER SIXTEEN;No;0;ON; 0031 0036;;;16;N;;;;; +2470;CIRCLED NUMBER SEVENTEEN;No;0;ON; 0031 0037;;;17;N;;;;; +2471;CIRCLED NUMBER EIGHTEEN;No;0;ON; 0031 0038;;;18;N;;;;; +2472;CIRCLED NUMBER NINETEEN;No;0;ON; 0031 0039;;;19;N;;;;; +2473;CIRCLED NUMBER TWENTY;No;0;ON; 0032 0030;;;20;N;;;;; +2474;PARENTHESIZED DIGIT ONE;No;0;ON; 0028 0031 0029;;1;1;N;;;;; +2475;PARENTHESIZED DIGIT TWO;No;0;ON; 0028 0032 0029;;2;2;N;;;;; +2476;PARENTHESIZED DIGIT THREE;No;0;ON; 0028 0033 0029;;3;3;N;;;;; +2477;PARENTHESIZED DIGIT FOUR;No;0;ON; 0028 0034 0029;;4;4;N;;;;; +2478;PARENTHESIZED DIGIT FIVE;No;0;ON; 0028 0035 0029;;5;5;N;;;;; +2479;PARENTHESIZED DIGIT SIX;No;0;ON; 0028 0036 0029;;6;6;N;;;;; +247A;PARENTHESIZED DIGIT SEVEN;No;0;ON; 0028 0037 0029;;7;7;N;;;;; +247B;PARENTHESIZED DIGIT EIGHT;No;0;ON; 0028 0038 0029;;8;8;N;;;;; +247C;PARENTHESIZED DIGIT NINE;No;0;ON; 0028 0039 0029;;9;9;N;;;;; +247D;PARENTHESIZED NUMBER TEN;No;0;ON; 0028 0031 0030 0029;;;10;N;;;;; +247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON; 0028 0031 0031 0029;;;11;N;;;;; +247F;PARENTHESIZED NUMBER TWELVE;No;0;ON; 0028 0031 0032 0029;;;12;N;;;;; +2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON; 0028 0031 0033 0029;;;13;N;;;;; +2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON; 0028 0031 0034 0029;;;14;N;;;;; +2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON; 0028 0031 0035 0029;;;15;N;;;;; +2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON; 0028 0031 0036 0029;;;16;N;;;;; +2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON; 0028 0031 0037 0029;;;17;N;;;;; +2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON; 0028 0031 0038 0029;;;18;N;;;;; +2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON; 0028 0031 0039 0029;;;19;N;;;;; +2487;PARENTHESIZED NUMBER TWENTY;No;0;ON; 0028 0032 0030 0029;;;20;N;;;;; 2488;DIGIT ONE FULL STOP;No;0;EN; 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; 2489;DIGIT TWO FULL STOP;No;0;EN; 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; 248A;DIGIT THREE FULL STOP;No;0;EN; 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; @@ -6620,7 +6620,7 @@ 24E7;CIRCLED LATIN SMALL LETTER X;So;0;L; 0078;;;;N;;;24CD;;24CD 24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L; 0079;;;;N;;;24CE;;24CE 24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L; 007A;;;;N;;;24CF;;24CF -24EA;CIRCLED DIGIT ZERO;No;0;EN; 0030;;0;0;N;;;;; +24EA;CIRCLED DIGIT ZERO;No;0;ON; 0030;;0;0;N;;;;; 24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; 24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; 24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; @@ -7261,262 +7261,262 @@ 27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;; -2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;; -2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;; -2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;; -2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;; -2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;; -2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;; -2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;; -2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;; -2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;; -280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;; -280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;; -280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;; -280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;; -280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;; -280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;; -2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;; -2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;; -2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;; -2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;; -2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;; -2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;; -2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;; -2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;; -2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;; -2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;; -281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;; -281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;; -281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;; -281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;; -281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;; -281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;; -2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;; -2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;; -2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;; -2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;; -2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;; -2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;; -2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;; -2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;; -2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;; -2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;; -282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;; -282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;; -282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;; -282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;; -282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;; -282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;; -2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;; -2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;; -2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;; -2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;; -2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;; -2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;; -2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;; -2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;; -2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;; -2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;; -283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;; -283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;; -283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;; -283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;; -283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;; -283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;; -2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;; -2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;; -2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;; -2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;; -2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;; -2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;; -2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;; -2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;; -2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;; -2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;; -284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;; -284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;; -284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;; -284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;; -284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;; -284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;; -2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;; -2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;; -2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;; -2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;; -2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;; -2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;; -2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;; -2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;; -2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;; -2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;; -285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;; -285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;; -285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;; -285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;; -285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;; -285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;; -2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;; -2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;; -2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;; -2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;; -2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;; -2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;; -2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;; -2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;; -2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;; -2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;; -286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;; -286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;; -286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;; -286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;; -286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;; -286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;; -2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;; -2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;; -2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;; -2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;; -2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;; -2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;; -2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;; -2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;; -2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;; -2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;; -287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;; -287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;; -287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;; -287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;; -287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;; -287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;; -2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;; -2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;; -2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;; -2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;; -2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;; -2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;; -2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;; -2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;; -2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;; -2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;; -288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;; -288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;; -288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;; -288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;; -288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;; -288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;; -2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;; -2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;; -2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;; -2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;; -2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;; -2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;; -2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;; -2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;; -2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;; -2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;; -289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;; -289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;; -289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;; -289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;; -289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;; -289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;; -28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;; -28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;; -28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;; -28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;; -28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;; -28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;; -28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;; -28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;; -28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;; -28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;; -28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;; -28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;; -28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;; -28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;; -28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;; -28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;; -28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;; -28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;; -28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;; -28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;; -28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;; -28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;; -28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;; -28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;; -28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;; -28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;; -28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;; -28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;; -28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;; -28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;; -28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;; -28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;; -28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;; -28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;; -28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;; -28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;; -28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;; -28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;; -28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;; -28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;; -28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;; -28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;; -28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;; -28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;; -28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;; -28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;; -28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;; -28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;; -28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;; -28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;; -28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;; -28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;; -28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;; -28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;; -28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;; -28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;; -28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;; -28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;; -28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;; -28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;; -28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;; -28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;; -28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;; -28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;; -28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;; -28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;; -28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;; -28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;; -28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;; -28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;; -28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;; -28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;; -28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;; -28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;; -28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;; -28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;; -28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;; -28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;; -28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;; -28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;; -28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;; -28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;; -28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;; -28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;; -28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;; -28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;; -28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;; -28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;; -28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;; -28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;; -28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;; -28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;; -28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;; -28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;; -28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;; -28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;; +2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; +2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; +2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; +2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; +2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; +2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; +2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; +2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; +2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; +2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; +280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; +280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; +280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; +280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; +280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; +280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; +2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; +2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; +2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; +2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; +2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; +2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; +2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; +2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; +2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; +2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; +281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; +281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; +281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; +281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; +281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; +281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; +2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; +2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; +2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; +2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; +2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; +2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; +2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; +2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; +2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; +2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; +282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; +282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; +282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; +282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; +282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; +282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; +2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; +2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; +2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; +2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; +2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; +2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; +2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; +2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; +2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; +2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; +283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; +283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; +283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; +283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; +283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; +283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; +2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; +2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; +2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; +2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; +2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; +2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; +2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; +2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; +2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; +2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; +284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; +284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; +284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; +284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; +284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; +284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; +2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; +2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; +2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; +2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; +2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; +2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; +2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; +2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; +2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; +2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; +285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; +285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; +285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; +285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; +285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; +285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; +2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; +2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; +2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; +2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; +2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; +2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; +2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; +2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; +2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; +2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; +286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; +286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; +286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; +286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; +286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; +286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; +2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; +2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; +2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; +2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; +2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; +2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; +2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; +2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; +2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; +2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; +287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; +287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; +287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; +287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; +287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; +287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; +2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; +2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; +2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; +2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; +2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; +2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; +2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; +2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; +2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; +2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; +288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; +288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; +288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; +288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; +288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; +288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; +2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; +2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; +2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; +2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; +2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; +2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; +2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; +2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; +2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; +2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; +289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; +289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; +289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; +289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; +289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; +289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; +28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; +28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; +28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; +28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; +28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; +28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; +28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; +28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; +28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; +28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; +28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; +28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; +28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; +28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; +28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; +28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; +28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; +28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; +28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; +28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; +28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; +28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; +28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; +28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; +28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; +28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; +28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; +28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; +28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; +28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; +28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; +28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; +28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; +28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; +28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; +28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; +28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; +28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; +28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; +28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; +28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; +28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; +28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; +28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; +28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; +28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; +28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; +28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; +28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; +28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; +28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; +28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; +28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; +28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; +28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; +28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; +28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; +28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; +28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; +28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; +28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; +28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; +28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; +28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; +28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; +28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; +28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; +28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; +28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; +28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; +28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; +28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; +28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; +28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; +28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; +28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; +28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; +28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; +28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; +28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; +28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; +28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; +28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; +28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; +28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; +28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; +28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; +28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; +28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; +28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; +28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; +28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; +28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; +28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; +28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; +28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; 2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; @@ -12080,9 +12080,9 @@ FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON; 2192;;;;N;;;;; FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON; 2193;;;;N;;;;; FFED;HALFWIDTH BLACK SQUARE;So;0;ON; 25A0;;;;N;;;;; FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON; 25CB;;;;N;;;;; -FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;BN;;;;;N;;;;; -FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;; -FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;; +FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; +FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; +FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; diff --git a/gnu/usr.bin/perl/lib/unicore/mktables b/gnu/usr.bin/perl/lib/unicore/mktables index 5fdac52dc61..18f0033506c 100644 --- a/gnu/usr.bin/perl/lib/unicore/mktables +++ b/gnu/usr.bin/perl/lib/unicore/mktables @@ -1,23 +1,33 @@ #!/usr/bin/perl -w +require 5.008; # Needs pack "U". Probably safest to run on 5.8.x use strict; use Carp; - -die "$0: Please run me as ./mktables to avoid unnecessary differences\n" - unless $0 eq "./mktables"; +use File::Spec; ## ## mktables -- create the runtime Perl Unicode files (lib/unicore/**/*.pl) ## from the Unicode database files (lib/unicore/*.txt). ## -mkdir("lib", 0755); -mkdir("To", 0755); +## "Fuzzy" means this section in Unicode TR18: +## +## The recommended names for UCD properties and property values are in +## PropertyAliases.txt [Prop] and PropertyValueAliases.txt +## [PropValue]. There are both abbreviated names and longer, more +## descriptive names. It is strongly recommended that both names be +## recognized, and that loose matching of property names be used, +## whereby the case distinctions, whitespace, hyphens, and underbar +## are ignored. + +## Base names already used in lib/gc_sc (for avoiding 8.3 conflicts) +my %BaseNames; ## ## Process any args. ## my $Verbose = 0; my $MakeTestScript = 0; +my $AlwaysWrite = 0; while (@ARGV) { @@ -26,13 +36,24 @@ while (@ARGV) $Verbose = 1; } elsif ($arg eq '-q') { $Verbose = 0; + } elsif ($arg eq '-w') { + $AlwaysWrite = 1; # update the files even if they havent changed } elsif ($arg eq '-maketest') { $MakeTestScript = 1; + } elsif ($arg eq '-C' && defined (my $dir = shift)) { + chdir $dir or die "chdir $_: $!"; } else { - die "usage: $0 [-v|-q] [-maketest]"; + die "usage: $0 [-v|-q|-C dir] [-maketest]"; } } +foreach my $lib ('To', 'lib', + map {File::Spec->catdir("lib",$_)} + qw(gc_sc dt bc hst ea jt lb nt ccc)) { + next if -d $lib; + mkdir $lib, 0755 or die "mkdir '$lib': $!"; +} + my $LastUnicodeCodepoint = 0x10FFFF; # As of Unicode 3.1.1. my $HEADER=<<"EOF"; @@ -42,16 +63,27 @@ my $HEADER=<<"EOF"; EOF +sub force_unlink { + my $filename = shift; + return unless -e $filename; + return if CORE::unlink($filename); + # We might need write permission + chmod 0777, $filename; + CORE::unlink($filename) or die "Couldn't unlink $filename: $!\n"; +} ## ## Given a filename and a reference to an array of lines, ## write the lines to the file only if the contents have not changed. +## Filename can be given as an arrayref of directory names ## sub WriteIfChanged($\@) { my $file = shift; my $lines = shift; + $file = File::Spec->catfile(@$file) if ref $file; + my $TextToWrite = join '', @$lines; if (open IN, $file) { local($/) = undef; @@ -59,9 +91,10 @@ sub WriteIfChanged($\@) close IN; if ($PreviousText eq $TextToWrite) { print "$file unchanged.\n" if $Verbose; - return; + return unless $AlwaysWrite; } } + force_unlink ($file); if (not open OUT, ">$file") { die "$0: can't open $file for output: $!\n"; } @@ -109,6 +142,88 @@ sub CanonicalName($) return $name; } + +## +## Store the alias definitions for later use. +## +my %PropertyAlias; +my %PropValueAlias; + +my %PA_reverse; +my %PVA_reverse; + +sub Build_Aliases() +{ + ## + ## Most of the work with aliases doesn't occur here, + ## but rather in utf8_heavy.pl, which uses PVA.pl, + + # Placate the warnings about used only once. (They are used again, but + # via a typeglob lookup) + %utf8::PropertyAlias = (); + %utf8::PA_reverse = (); + %utf8::PropValueAlias = (); + %utf8::PVA_reverse = (); + %utf8::PVA_abbr_map = (); + + open PA, "< PropertyAliases.txt" + or confess "Can't open PropertyAliases.txt: $!"; + while () { + s/#.*//; + s/\s+$//; + next if /^$/; + + my ($abbrev, $name) = split /\s*;\s*/; + next if $abbrev eq "n/a"; + $PropertyAlias{$abbrev} = $name; + $PA_reverse{$name} = $abbrev; + + # The %utf8::... versions use japhy's code originally from utf8_pva.pl + # However, it's moved here so that we build the tables at runtime. + tr/ _-//d for $abbrev, $name; + $utf8::PropertyAlias{lc $abbrev} = $name; + $utf8::PA_reverse{lc $name} = $abbrev; + } + close PA; + + open PVA, "< PropValueAliases.txt" + or confess "Can't open PropValueAliases.txt: $!"; + while () { + s/#.*//; + s/\s+$//; + next if /^$/; + + my ($prop, @data) = split /\s*;\s*/; + + if ($prop eq 'ccc') { + $PropValueAlias{$prop}{$data[1]} = [ @data[0,2] ]; + $PVA_reverse{$prop}{$data[2]} = [ @data[0,1] ]; + } + else { + next if $data[0] eq "n/a"; + $PropValueAlias{$prop}{$data[0]} = $data[1]; + $PVA_reverse{$prop}{$data[1]} = $data[0]; + } + + shift @data if $prop eq 'ccc'; + next if $data[0] eq "n/a"; + + $data[1] =~ tr/ _-//d; + $utf8::PropValueAlias{$prop}{lc $data[0]} = $data[1]; + $utf8::PVA_reverse{$prop}{lc $data[1]} = $data[0]; + + my $abbr_class = ($prop eq 'gc' or $prop eq 'sc') ? 'gc_sc' : $prop; + $utf8::PVA_abbr_map{$abbr_class}{lc $data[0]} = $data[0]; + } + close PVA; + + # backwards compatibility for L& -> LC + $utf8::PropValueAlias{gc}{'l&'} = $utf8::PropValueAlias{gc}{lc}; + $utf8::PVA_abbr_map{gc_sc}{'l&'} = $utf8::PVA_abbr_map{gc_sc}{lc}; + +} + + ## ## Associates a property ("Greek", "Lu", "Assigned",...) with a Table. ## @@ -390,6 +505,7 @@ sub Table::Merge ## ## Given a filename, write a representation of the Table to a file. ## May have an optional comment as a 2nd arg. +## Filename may actually be an arrayref of directories ## sub Table::Write { @@ -511,7 +627,7 @@ sub New_Alias($$$@) if ($TableInfo{$Type}->{$CName}) { confess "$0: Use canonical form '$CName' instead of '$Name' for alias."; } else { - confess "$0: don't have orignial $Type => $Name to make alias"; + confess "$0: don't have original $Type => $Name to make alias\n"; } } if ($TableInfo{$Alias}) { @@ -535,6 +651,33 @@ my $General = Table->New(); ## all characters, grouped by category my %General; my %Cat; +## Simple Data::Dumper alike. Good enough for our needs. We can't use the real +## thing as we have to run under miniperl +sub simple_dumper { + my @lines; + my $item; + foreach $item (@_) { + if (ref $item) { + if (ref $item eq 'ARRAY') { + push @lines, "[\n", simple_dumper (@$item), "],\n"; + } elsif (ref $item eq 'HASH') { + push @lines, "{\n", simple_dumper (%$item), "},\n"; + } else { + die "Can't cope with $item"; + } + } else { + if (defined $item) { + my $copy = $item; + $copy =~ s/([\'\\])/\\$1/gs; + push @lines, "'$copy',\n"; + } else { + push @lines, "undef,\n"; + } + } + } + @lines; +} + ## ## Process UnicodeData.txt (Categories, etc.) ## @@ -544,19 +687,15 @@ sub UnicodeData_Txt() my $Deco = Table->New(); my $Comb = Table->New(); my $Number = Table->New(); - my $Mirrored = Table->New(Is => 'Mirrored', - Desc => "Mirrored in bidirectional text", - Fuzzy => 0); + my $Mirrored = Table->New();#Is => 'Mirrored', + #Desc => "Mirrored in bidirectional text", + #Fuzzy => 0); my %DC; my %Bidi; - my %Deco; - $Deco{Canon} = Table->New(Is => 'Canon', - Desc => 'Decomposes to multiple characters', - Fuzzy => 0); - $Deco{Compat} = Table->New(Is => 'Compat', - Desc => 'Compatible with a more-basic character', - Fuzzy => 0); + my %Number; + $DC{can} = Table->New(); + $DC{com} = Table->New(); ## Initialize Perl-generated categories ## (Categories from UnicodeData.txt are auto-initialized in gencat) @@ -757,11 +896,17 @@ sub UnicodeData_Txt() $Comb->Append($code, $comb) if $comb; $Number->Append($code, $number) if length $number; + length($decimal) and ($Number{De} ||= Table->New())->Append($code) + or + length($digit) and ($Number{Di} ||= Table->New())->Append($code) + or + length($number) and ($Number{Nu} ||= Table->New())->Append($code); + $Mirrored->Append($code) if $mirrored eq "Y"; - $Bidi{$bidi} ||= Table->New(Is => "Bidi$bidi", - Desc => "Bi-directional category '$bidi'", - Fuzzy => 0); + $Bidi{$bidi} ||= Table->New();#Is => "bt/$bidi", + #Desc => "Bi-directional category '$bidi'", + #Fuzzy => 0); $Bidi{$bidi}->Append($code); if ($deco) @@ -769,16 +914,15 @@ sub UnicodeData_Txt() $Deco->Append($code, $deco); if ($deco =~/^<(\w+)>/) { - $Deco{Compat}->Append($code); + my $dshort = $PVA_reverse{dt}{ucfirst lc $1}; + $DC{com}->Append($code); - $DC{$1} ||= Table->New(Is => "DC$1", - Desc => "Compatible with '$1'", - Fuzzy => 0); - $DC{$1}->Append($code); + $DC{$dshort} ||= Table->New(); + $DC{$dshort}->Append($code); } else { - $Deco{Canon}->Append($code); + $DC{can}->Append($code); } } } @@ -801,8 +945,9 @@ sub UnicodeData_Txt() $Cat{C}->Replace($Cat{C}->Merge($Cat{Cn})); ## Now merge in Cn into C - # L& is Ll, Lu, and Lt. - New_Prop(Is => 'L&', + # LC is Ll, Lu, and Lt. + # (used to be L& or L_, but PropValueAliases.txt defines it as LC) + New_Prop(Is => 'LC', Table->Merge(@Cat{qw[Ll Lu Lt]}), Desc => '[\p{Ll}\p{Lu}\p{Lt}]', Fuzzy => 0); @@ -868,14 +1013,61 @@ sub UnicodeData_Txt() ## Now dump the files. ## $Name->Write("Name.pl"); - $Bidi->Write("Bidirectional.pl"); + + { + my @PVA = $HEADER; + foreach my $name (qw (PropertyAlias PA_reverse PropValueAlias + PVA_reverse PVA_abbr_map)) { + # Should I really jump through typeglob hoops just to avoid a + # symbolic reference? (%{"utf8::$name}) + push @PVA, "\n", "\%utf8::$name = (\n", + simple_dumper (%{$utf8::{$name}}), ");\n"; + } + WriteIfChanged("PVA.pl", @PVA); + } + + # $Bidi->Write("Bidirectional.pl"); + for (keys %Bidi) { + $Bidi{$_}->Write( + ["lib","bc","$_.pl"], + "BidiClass category '$PropValueAlias{bc}{$_}'" + ); + } + $Comb->Write("CombiningClass.pl"); + for (keys %{ $PropValueAlias{ccc} }) { + my ($code, $name) = @{ $PropValueAlias{ccc}{$_} }; + (my $c = Table->New())->Append($code); + $c->Write( + ["lib","ccc","$_.pl"], + "CombiningClass category '$name'" + ); + } + $Deco->Write("Decomposition.pl"); - $Number->Write("Number.pl"); - $General->Write("Category.pl"); + for (keys %DC) { + $DC{$_}->Write( + ["lib","dt","$_.pl"], + "DecompositionType category '$PropValueAlias{dt}{$_}'" + ); + } + + # $Number->Write("Number.pl"); + for (keys %Number) { + $Number{$_}->Write( + ["lib","nt","$_.pl"], + "NumericType category '$PropValueAlias{nt}{$_}'" + ); + } + + # $General->Write("Category.pl"); for my $to (sort keys %To) { - $To{$to}->Write("To/$to.pl"); + $To{$to}->Write(["To","$to.pl"]); + } + + for (keys %{ $PropValueAlias{gc} }) { + New_Alias(Is => $PropValueAlias{gc}{$_}, SameAs => $_, Fuzzy => 1); } } @@ -899,9 +1091,7 @@ sub LineBreak_Txt() $Lbrk->Append($first, $lbrk); - $Lbrk{$lbrk} ||= Table->New(Is => "Lbrk$lbrk", - Desc => "Linebreak category '$lbrk'", - Fuzzy => 0); + $Lbrk{$lbrk} ||= Table->New(); $Lbrk{$lbrk}->Append($first); if ($last) { @@ -911,7 +1101,15 @@ sub LineBreak_Txt() } close IN; - $Lbrk->Write("Lbrk.pl"); + # $Lbrk->Write("Lbrk.pl"); + + + for (keys %Lbrk) { + $Lbrk{$_}->Write( + ["lib","lb","$_.pl"], + "Linebreak category '$PropValueAlias{lb}{$_}'" + ); + } } ## @@ -926,6 +1124,8 @@ sub ArabicShaping_txt() my $ArabLink = Table->New(); my $ArabLinkGroup = Table->New(); + my %JoinType; + while () { next unless /^[0-9A-Fa-f]+;/; @@ -935,11 +1135,86 @@ sub ArabicShaping_txt() my $code = hex($hexcode); $ArabLink->Append($code, $link); $ArabLinkGroup->Append($code, $linkgroup); + + $JoinType{$link} ||= Table->New(Is => "JoinType$link"); + $JoinType{$link}->Append($code); } close IN; - $ArabLink->Write("ArabLink.pl"); - $ArabLinkGroup->Write("ArabLnkGrp.pl"); + # $ArabLink->Write("ArabLink.pl"); + # $ArabLinkGroup->Write("ArabLnkGrp.pl"); + + + for (keys %JoinType) { + $JoinType{$_}->Write( + ["lib","jt","$_.pl"], + "JoiningType category '$PropValueAlias{jt}{$_}'" + ); + } +} + +## +## Process EastAsianWidth.txt. +## +sub EastAsianWidth_txt() +{ + if (not open IN, "EastAsianWidth.txt") { + die "$0: EastAsianWidth.txt: $!\n"; + } + + my %EAW; + + while () + { + next unless /^[0-9A-Fa-f]+;/; + s/#.*//; + s/\s+$//; + + my ($hexcode, $pv) = split(/\s*;\s*/); + my $code = hex($hexcode); + $EAW{$pv} ||= Table->New(Is => "EastAsianWidth$pv"); + $EAW{$pv}->Append($code); + } + close IN; + + + for (keys %EAW) { + $EAW{$_}->Write( + ["lib","ea","$_.pl"], + "EastAsianWidth category '$PropValueAlias{ea}{$_}'" + ); + } +} + +## +## Process HangulSyllableType.txt. +## +sub HangulSyllableType_txt() +{ + if (not open IN, "HangulSyllableType.txt") { + die "$0: HangulSyllableType.txt: $!\n"; + } + + my %HST; + + while () + { + next unless /^([0-9A-Fa-f]+)(?:\.\.([0-9A-Fa-f]+))?\s*;\s*(\w+)/; + my ($first, $last, $pv) = (hex($1), hex($2||""), $3); + + $HST{$pv} ||= Table->New(Is => "HangulSyllableType$pv"); + $HST{$pv}->Append($first); + + if ($last) { $HST{$pv}->Extend($last) } + } + close IN; + + for (keys %HST) { + $HST{$_}->Write( + ["lib","hst","$_.pl"], + "HangulSyllableType category '$PropValueAlias{hst}{$_}'" + ); + } } ## @@ -960,7 +1235,7 @@ sub Jamo_txt() $Short->Append($code, $short); } close IN; - $Short->Write("JamoShort.pl"); + # $Short->Write("JamoShort.pl"); } ## @@ -1003,7 +1278,7 @@ sub Scripts_txt() } } - $Scripts->Write("Scripts.pl"); + # $Scripts->Write("Scripts.pl"); ## Common is everything not explicitly assigned to a Script ## @@ -1064,7 +1339,7 @@ sub Blocks_txt() } close IN; - $Blocks->Write("Blocks.pl"); + # $Blocks->Write("Blocks.pl"); } ## @@ -1112,6 +1387,16 @@ sub PropList_txt() } } + for (keys %Prop) { + (my $file = $PA_reverse{$_}) =~ tr/_//d; + # XXX I'm assuming that the names from %Prop don't suffer 8.3 clashes. + $BaseNames{lc $file}++; + $Prop{$_}->Write( + ["lib","gc_sc","$file.pl"], + "Binary property '$_'" + ); + } + # Alphabetic is L and Other_Alphabetic. New_Prop(Is => 'Alphabetic', Table->Merge($Cat{L}, $Prop{Other_Alphabetic}), @@ -1149,65 +1434,6 @@ sub PropList_txt() Fuzzy => 1); } -sub Make_GC_Aliases() -{ - ## - ## The mapping from General Category long forms to short forms is - ## currently hardwired here since no simple data file in the UCD - ## seems to do that. Unicode 3.2 will assumedly correct this. - ## - my %Is = ( - 'Letter' => 'L', - 'Uppercase_Letter' => 'Lu', - 'Lowercase_Letter' => 'Ll', - 'Titlecase_Letter' => 'Lt', - 'Modifier_Letter' => 'Lm', - 'Other_Letter' => 'Lo', - - 'Mark' => 'M', - 'Non_Spacing_Mark' => 'Mn', - 'Spacing_Mark' => 'Mc', - 'Enclosing_Mark' => 'Me', - - 'Separator' => 'Z', - 'Space_Separator' => 'Zs', - 'Line_Separator' => 'Zl', - 'Paragraph_Separator' => 'Zp', - - 'Number' => 'N', - 'Decimal_Number' => 'Nd', - 'Letter_Number' => 'Nl', - 'Other_Number' => 'No', - - 'Punctuation' => 'P', - 'Connector_Punctuation' => 'Pc', - 'Dash_Punctuation' => 'Pd', - 'Open_Punctuation' => 'Ps', - 'Close_Punctuation' => 'Pe', - 'Initial_Punctuation' => 'Pi', - 'Final_Punctuation' => 'Pf', - 'Other_Punctuation' => 'Po', - - 'Symbol' => 'S', - 'Math_Symbol' => 'Sm', - 'Currency_Symbol' => 'Sc', - 'Modifier_Symbol' => 'Sk', - 'Other_Symbol' => 'So', - - 'Other' => 'C', - 'Control' => 'Cc', - 'Format' => 'Cf', - 'Surrogate' => 'Cs', - 'Private Use' => 'Co', - 'Unassigned' => 'Cn', - ); - - ## make the aliases.... - while (my ($Alias, $Name) = each %Is) { - New_Alias(Is => $Alias, SameAs => $Name, Fuzzy => 1); - } -} - ## ## These are used in: @@ -1311,6 +1537,7 @@ sub RandomlyFuzzifyName($;$) sub MakePropTestScript() { ## this written directly -- it's huge. + force_unlink ("TestProp.pl"); if (not open OUT, ">TestProp.pl") { die "$0: TestProp.pl: $!\n"; } @@ -1413,8 +1640,6 @@ sub WriteAllMappings() { my @MAP; - my %BaseNames; ## Base names already used (for avoiding 8.3 conflicts) - ## 'Is' *MUST* come first, so its names have precidence over 'In's for my $Type ('Is', 'In') { @@ -1430,7 +1655,9 @@ sub WriteAllMappings() my $filename; { ## 'Is' items lose 'Is' from the basename. - $filename = $Type eq 'Is' ? $Name : "$Type$Name"; + $filename = $Type eq 'Is' ? + ($PVA_reverse{sc}{$Name} || $Name) : + "$Type$Name"; $filename =~ s/[^\w_]+/_/g; # "L&" -> "L_" substr($filename, 8) = '' if length($filename) > 8; @@ -1503,7 +1730,7 @@ sub WriteAllMappings() ## ## Okay, write the file... ## - $Table->Write("lib/$filename.pl", $Comment); + $Table->Write(["lib","gc_sc","$filename.pl"], $Comment); ## and register it $RawNameToFile{$Name} = $filename; @@ -1567,10 +1794,11 @@ sub WriteAllMappings() "##\n", "## Data in this file used by ../utf8_heavy.pl\n", "##\n\n", - "## Mapping from name to filename in ./lib\n", + "## Mapping from name to filename in ./lib/gc_sc\n", "%utf8::Exact = (\n", ); + $Exact{InGreek} = 'InGreekA'; # this is evil kludge for my $Name (sort keys %Exact) { my $File = $Exact{$Name}; @@ -1658,16 +1886,18 @@ sub SpecialCasing_txt() { my $NormalCase = do "To/$case.pl" || die "$0: $@\n"; - my @OUT = ( - $HEADER, "\n", - "%utf8::ToSpec$case =\n(\n", - ); + my @OUT = + ( + $HEADER, "\n", + "# The key UTF-8 _bytes_, the value UTF-8 (speed hack)\n", + "%utf8::ToSpec$case =\n(\n", + ); for my $prop (sort { $a->[0] <=> $b->[0] } @{$CaseInfo{$case}}) { my ($ix, $code, $to) = @$prop; my $tostr = join "", map { sprintf "\\x{%s}", $_ } split ' ', $to; - push @OUT, sprintf qq['%04X' => "$tostr",\n], $ix; + push @OUT, sprintf qq["%s" => "$tostr",\n], join("", map { sprintf "\\x%02X", $_ } unpack("U0C*", pack("U", $ix))); # Remove any single-character mappings for # the same character since we are going for # the special casing rules. @@ -1679,7 +1909,7 @@ sub SpecialCasing_txt() $NormalCase, "END\n" ); - WriteIfChanged("To/$case.pl", @OUT); + WriteIfChanged(["To","$case.pl"], @OUT); } } @@ -1719,14 +1949,16 @@ sub CaseFolding_txt() # my $CommonFold = do "To/Fold.pl" || die "$0: To/Fold.pl: $!\n"; - my @OUT = ( - $HEADER, "\n", - "%utf8::ToSpecFold =\n(\n", - ); + my @OUT = + ( + $HEADER, "\n", + "# The ke UTF-8 _bytes_, the value UTF-8 (speed hack)\n", + "%utf8::ToSpecFold =\n(\n", + ); for my $code (sort { $a <=> $b } keys %Fold) { my $foldstr = join "", map { sprintf "\\x{%s}", $_ } split ' ', $Fold{$code}; - push @OUT, sprintf qq['%04X' => "$foldstr",\n], $code; + push @OUT, sprintf qq["%s" => "$foldstr",\n], join("", map { sprintf "\\x%02X", $_ } unpack("U0C*", pack("U", $code))); } push @OUT, ( ");\n\n", @@ -1735,13 +1967,13 @@ sub CaseFolding_txt() "END\n", ); - WriteIfChanged("To/Fold.pl", @OUT); + WriteIfChanged(["To","Fold.pl"], @OUT); } ## Do it.... +Build_Aliases(); UnicodeData_Txt(); -Make_GC_Aliases(); PropList_txt(); Scripts_txt(); @@ -1751,6 +1983,8 @@ WriteAllMappings(); LineBreak_Txt(); ArabicShaping_txt(); +EastAsianWidth_txt(); +HangulSyllableType_txt(); Jamo_txt(); SpecialCasing_txt(); CaseFolding_txt(); diff --git a/gnu/usr.bin/perl/lib/unicore/version b/gnu/usr.bin/perl/lib/unicore/version index fcdb2e109f6..1454f6ed4b7 100644 --- a/gnu/usr.bin/perl/lib/unicore/version +++ b/gnu/usr.bin/perl/lib/unicore/version @@ -1 +1 @@ -4.0.0 +4.0.1 diff --git a/gnu/usr.bin/perl/lib/utf8.pm b/gnu/usr.bin/perl/lib/utf8.pm index f5eebe7fba2..817a61ccbd8 100644 --- a/gnu/usr.bin/perl/lib/utf8.pm +++ b/gnu/usr.bin/perl/lib/utf8.pm @@ -2,7 +2,7 @@ package utf8; $utf8::hint_bits = 0x00800000; -our $VERSION = '1.02'; +our $VERSION = '1.04'; sub import { $^H |= $utf8::hint_bits; @@ -31,9 +31,11 @@ utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code use utf8; no utf8; + # Convert a Perl scalar to/from UTF-8. $num_octets = utf8::upgrade($string); $success = utf8::downgrade($string[, FAIL_OK]); + # Change the native bytes of a Perl scalar to/from UTF-8 bytes. utf8::encode($string); utf8::decode($string); @@ -111,40 +113,59 @@ you should not say that unless you really want to have UTF-8 source code. =item * $num_octets = utf8::upgrade($string) -Converts (in-place) internal representation of string to Perl's -internal I form. Returns the number of octets necessary to -represent the string as I. Can be used to make sure that the -UTF-8 flag is on, so that C<\w> or C work as expected on strings -containing characters in the range 0x80-0xFF (oon ASCII and -derivatives). Note that this should not be used to convert a legacy -byte encoding to Unicode: use Encode for that. Affected by the -encoding pragma. +Converts in-place the octet sequence in the native encoding +(Latin-1 or EBCDIC) to the equivalent character sequence in I. +I<$string> already encoded as characters does no harm. +Returns the number of octets necessary to represent the string as I. +Can be used to make sure that the UTF-8 flag is on, +so that C<\w> or C work as Unicode on strings +containing characters in the range 0x80-0xFF (on ASCII and +derivatives). + +B +Therefore I is recommended for the general purposes. + +Affected by the encoding pragma. =item * $success = utf8::downgrade($string[, FAIL_OK]) -Converts (in-place) internal representation of string to be un-encoded -bytes. Returns true on success. On failure dies or, if the value of -FAIL_OK is true, returns false. Can be used to make sure that the -UTF-8 flag is off, e.g. when you want to make sure that the substr() -or length() function works with the usually faster byte algorithm. -Note that this should not be used to convert Unicode back to a legacy -byte encoding: use Encode for that. B affected by the encoding -pragma. +Converts in-place the character sequence in I +to the equivalent octet sequence in the native encoding (Latin-1 or EBCDIC). +I<$string> already encoded as octets does no harm. +Returns true on success. On failure dies or, if the value of +C is true, returns false. +Can be used to make sure that the UTF-8 flag is off, +e.g. when you want to make sure that the substr() or length() function +works with the usually faster byte algorithm. + +B +Therefore I is recommended for the general purposes. + +B affected by the encoding pragma. + +B this function is experimental and may change +or be removed without notice. =item * utf8::encode($string) -Converts (in-place) I<$string> from logical characters to octet -sequence representing it in Perl's I encoding. Returns -nothing. Same as Encode::encode_utf8(). Note that this should not be -used to convert a legacy byte encoding to Unicode: use Encode for -that. +Converts in-place the character sequence to the corresponding octet sequence +in I. The UTF-8 flag is turned off. Returns nothing. + +B +Therefore I is recommended for the general purposes. =item * utf8::decode($string) -Attempts to convert I<$string> in-place from Perl's I encoding -into logical characters. Returns nothing. Same as Encode::decode_utf8(). -Note that this should not be used to convert Unicode back to a legacy -byte encoding: use Encode for that. +Attempts to convert in-place the octet sequence in I +to the corresponding character sequence. The UTF-8 flag is turned on +only if the source string contains multiple-byte I characters. +If I<$string> is invalid as I, returns false; otherwise returns true. + +B +Therefore I is recommended for the general purposes. + +B this function is experimental and may change +or be removed without notice. =item * $flag = utf8::is_utf8(STRING) diff --git a/gnu/usr.bin/perl/lib/utf8_heavy.pl b/gnu/usr.bin/perl/lib/utf8_heavy.pl index f4a0aaa3e8d..b6fdeb997b3 100644 --- a/gnu/usr.bin/perl/lib/utf8_heavy.pl +++ b/gnu/usr.bin/perl/lib/utf8_heavy.pl @@ -8,6 +8,8 @@ sub DESTROY {} my %Cache; +our (%PropertyAlias, %PA_reverse, %PropValueAlias, %PVA_reverse, %PVA_abbr_map); + sub croak { require Carp; Carp::croak(@_) } ## @@ -45,28 +47,67 @@ sub SWASHNEW { GETFILE: { - ## - ## 'Is' is always optional, so if it's there, remove it. - ## Same with 'Category=' and 'Script='. - ## - ## 'Block=' is replaced by 'In'. - ## + ## + ## It could be a user-defined property. + ## + + my $caller1 = $type =~ s/(.+)::// ? $1 : caller(1); + + if (defined $caller1 && $type =~ /^(?:\w+)$/) { + my $prop = "${caller1}::$type"; + if (exists &{$prop}) { + no strict 'refs'; + + $list = &{$prop}; + last GETFILE; + } + } + my $wasIs; ($wasIs = $type =~ s/^Is(?:\s+|[-_])?//i) or - $type =~ s/^Category\s*=\s*//i + $type =~ s/^(?:(?:General(?:\s+|_)?)?Category|gc)\s*[:=]\s*//i or - $type =~ s/^Script\s*=\s*//i + $type =~ s/^(?:Script|sc)\s*[:=]\s*//i or - $type =~ s/^Block\s*=\s*/In/i; + $type =~ s/^Block\s*[:=]\s*/In/i; + + + ## + ## See if it's in some enumeration. + ## + require "unicore/PVA.pl"; + if ($type =~ /^([\w\s]+)[:=]\s*(.*)/) { + my ($enum, $val) = (lc $1, lc $2); + $enum =~ tr/ _-//d; + $val =~ tr/ _-//d; + + my $pa = $PropertyAlias{$enum} ? $enum : $PA_reverse{$enum}; + my $f = $PropValueAlias{$pa}{$val} ? $val : $PVA_reverse{$pa}{lc $val}; + + if ($pa and $f) { + $pa = "gc_sc" if $pa eq "gc" or $pa eq "sc"; + $file = "unicore/lib/$pa/$PVA_abbr_map{$pa}{lc $f}.pl"; + last GETFILE; + } + } + else { + my $t = lc $type; + $t =~ tr/ _-//d; + + if ($PropValueAlias{gc}{$t} or $PropValueAlias{sc}{$t}) { + $file = "unicore/lib/gc_sc/$PVA_abbr_map{gc_sc}{$t}.pl"; + last GETFILE; + } + } ## ## See if it's in the direct mapping table. ## require "unicore/Exact.pl"; if (my $base = $utf8::Exact{$type}) { - $file = "unicore/lib/$base.pl"; + $file = "unicore/lib/gc_sc/$base.pl"; last GETFILE; } @@ -79,27 +120,11 @@ sub SWASHNEW { print "canonical = $canonical\n" if DEBUG; require "unicore/Canonical.pl"; - if (my $base = $utf8::Canonical{$canonical}) { - $file = "unicore/lib/$base.pl"; + if (my $base = ($utf8::Canonical{$canonical} || $utf8::Canonical{ lc $utf8::PropertyAlias{$canonical} })) { + $file = "unicore/lib/gc_sc/$base.pl"; last GETFILE; } - ## - ## It could be a user-defined property. - ## - - my $caller1 = caller(1); - - if (defined $caller1 && $type =~ /^(?:\w+)$/) { - my $prop = $caller1 . "::" . ( $wasIs ? "Is" : "" ) . $type; - if (exists &{$prop}) { - no strict 'refs'; - - $list = &{$prop}; - last GETFILE; - } - } - ## ## See if it's a user-level "To". ## @@ -108,6 +133,7 @@ sub SWASHNEW { if (defined $caller0 && $type =~ /^To(?:\w+)$/) { my $map = $caller0 . "::" . $type; + if (exists &{$map}) { no strict 'refs'; @@ -203,11 +229,14 @@ sub SWASHNEW { my $char = $1; my $name = $2; print STDERR "$1 => $2\n" if DEBUG; - if ($char =~ /[-+!]/) { + if ($char =~ /[-+!&]/) { my ($c,$t) = split(/::/, $name, 2); # bogus use of ::, really my $subobj; if ($c eq 'utf8') { - $subobj = $c->SWASHNEW($t, "", 0, 0, 0); + $subobj = utf8->SWASHNEW($t, "", 0, 0, 0); + } + elsif (exists &$name) { + $subobj = utf8->SWASHNEW($name, "", 0, 0, 0); } elsif ($c =~ /^([0-9a-fA-F]+)/) { $subobj = utf8->SWASHNEW("", $c, 0, 0, 0); @@ -315,7 +344,7 @@ sub SWASHGET { } for my $x ($self->{EXTRAS}) { pos $x = 0; - while ($x =~ /^([-+!])(.*)/mg) { + while ($x =~ /^([-+!&])(.*)/mg) { my $char = $1; my $name = $2; print STDERR "INDIRECT $1 $2\n" if DEBUG; @@ -356,6 +385,18 @@ sub SWASHGET { } } } + elsif ($char eq '&') { + if ($bits == 1 and $otherbits == 1) { + $swatch &= $other; + } + else { + for ($key = 0; $key < $len; $key++) { + if (!vec($other, $key, $otherbits)) { + vec($swatch, $key, $bits) = 0; + } + } + } + } } } if (DEBUG) { diff --git a/gnu/usr.bin/perl/lib/vmsish.t b/gnu/usr.bin/perl/lib/vmsish.t index aad4a4a66f8..71ca3b5e983 100644 --- a/gnu/usr.bin/perl/lib/vmsish.t +++ b/gnu/usr.bin/perl/lib/vmsish.t @@ -112,19 +112,17 @@ is($?,0,"outer lex scope of vmsish [POSIX status]"); eval "END { \$ENV{'SYS\$TIMEZONE_DIFFERENTIAL'} = $oldtz; }"; gmtime(0); # Force reset of tz offset } - # This test script might have been invoked in at least one of four different ways: - # perl lib/vmsish.t - # perl [.lib]vmsish.t - # set def [.t] && perl ../lib/vmsish.t - # set def [.t] && perl [-.lib]vmsish.t - # In the following we attempt to find ourselves without resorting to VMS::Filespec. - # Note that the chdir in the BEGIN block above complicates matters. - my $self = $0; - if ( ! -e $self && -e "../$0" ) { $self = "../$0"; } - if ( ! -e $self ) { - $self =~ s/\[//; - $self = "[-$self"; - } + + # Unless we are prepared to parse the timezone rules here and figure out + # what the correct offset was when the file was last revised, we need to + # use a file for which the current offset is known to be valid. That's why + # we create a file rather than using an existing one for the stat() test. + + my $file = 'sys$scratch:vmsish_t_flirble.tmp'; + open TMP, ">$file" or die "Couldn't open file $file"; + close TMP; + END { 1 while unlink $file; } + { use_ok('vmsish qw(time)'); @@ -134,12 +132,12 @@ is($?,0,"outer lex scope of vmsish [POSIX status]"); $vmstime = time; @vmslocal = localtime($vmstime); @vmsgmtime = gmtime($vmstime); - $vmsmtime = (stat $self)[9]; + $vmsmtime = (stat $file)[9]; } $utctime = time; @utclocal = localtime($vmstime); @utcgmtime = gmtime($vmstime); - $utcmtime = (stat $self)[9]; + $utcmtime = (stat $file)[9]; $offset = $ENV{'SYS$TIMEZONE_DIFFERENTIAL'}; diff --git a/gnu/usr.bin/perl/mpeix/nm b/gnu/usr.bin/perl/mpeix/nm index e2a5d27c25e..64e58be4d82 100644 --- a/gnu/usr.bin/perl/mpeix/nm +++ b/gnu/usr.bin/perl/mpeix/nm @@ -22,12 +22,12 @@ esac # I wanted to pipe this into awk, but it fell victim to a known pipe/streams # bug on my multiprocessor machine. -callci xeq linkedit.pub.sys \"$LIST\" >/tmp/nm.$$ +callci xeq linkedit.pub.sys \"$LIST\" >nm.$$ /bin/awk '\ / data univ / { printf "%-20s|%10s|%-6s|%-7s|%s\n",$1,$5,"extern","data","?"} \ - / entry univ / { printf "%-20s|%10s|%-6s|%-7s|%s\n",$1,$7,"extern","entry","?"}' /tmp/nm.$$ + / entry univ / { printf "%-20s|%10s|%-6s|%-7s|%s\n",$1,$7,"extern","entry","?"}' nm.$$ -rm -f /tmp/nm.$$ +rm -f nm.$$ exit 0 diff --git a/gnu/usr.bin/perl/mpeix/relink b/gnu/usr.bin/perl/mpeix/relink index 0ba9aebadad..ec371421949 100644 --- a/gnu/usr.bin/perl/mpeix/relink +++ b/gnu/usr.bin/perl/mpeix/relink @@ -14,7 +14,7 @@ RAND=/$HPACCOUNT/$HPGROUP/libcrand echo "Creating $RAND.sl...\n" -TEMP=/tmp/perlmpe.$$ +TEMP=perlmpe.$$ rm -f $TEMP $RAND.a $RAND.sl diff --git a/gnu/usr.bin/perl/myconfig.SH b/gnu/usr.bin/perl/myconfig.SH index 737c6eca7be..ab1884df544 100644 --- a/gnu/usr.bin/perl/myconfig.SH +++ b/gnu/usr.bin/perl/myconfig.SH @@ -27,7 +27,7 @@ $startsh # Note that the text lines /^Summary of/ .. /^\s*$/ are copied into Config.pm. cat <<'!NO!SUBS!' -Summary of my $package (revision $baserev $version_patchlevel_string) configuration: +Summary of my $package (revision $revision $version_patchlevel_string) configuration: Platform: osname=$osname, osvers=$osvers, archname=$archname uname='$myuname' diff --git a/gnu/usr.bin/perl/opnames.h b/gnu/usr.bin/perl/opnames.h index c59e631508e..ef34bb31113 100644 --- a/gnu/usr.bin/perl/opnames.h +++ b/gnu/usr.bin/perl/opnames.h @@ -1,7 +1,7 @@ /* * opnames.h * - * Copyright (C) 1999, 2000, 2001, 2002, 2003, by Larry Wall and others + * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/gnu/usr.bin/perl/pad.c b/gnu/usr.bin/perl/pad.c index 3f26d1a4f04..aabb2a1b7ed 100644 --- a/gnu/usr.bin/perl/pad.c +++ b/gnu/usr.bin/perl/pad.c @@ -1,6 +1,6 @@ /* pad.c * - * Copyright (C) 2002, by Larry Wall and others + * Copyright (C) 2002, 2003, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -83,6 +83,12 @@ is a CV representing a possible closure. (SvFAKE and name of '&' is not a meaningful combination currently but could become so if C is implemented.) +The flag SVf_PADSTALE is cleared on lexicals each time the my() is executed, +and set on scope exit. This allows the 'Variable $x is not available' warning +to be generated in evals, such as + + { my $x = 1; sub f { eval '$x'} } f(); + =cut */ @@ -247,8 +253,11 @@ Perl_pad_undef(pTHX_ CV* cv) CV *innercv = (CV*)curpad[ix]; namepad[ix] = Nullsv; SvREFCNT_dec(namesv); - curpad[ix] = Nullsv; - SvREFCNT_dec(innercv); + + if (SvREFCNT(comppad) < 2) { /* allow for /(?{ sub{} })/ */ + curpad[ix] = Nullsv; + SvREFCNT_dec(innercv); + } if (SvREFCNT(innercv) /* in use, not just a prototype */ && CvOUTSIDE(innercv) == cv) { @@ -1479,6 +1488,9 @@ If has_args is true, give the new pad an @_ in slot zero. =cut */ +/* XXX pad_push is now always called with has_args == 1. Get rid of + * this arg at some point */ + void Perl_pad_push(pTHX_ PADLIST *padlist, int depth, int has_args) { diff --git a/gnu/usr.bin/perl/perlapi.h b/gnu/usr.bin/perl/perlapi.h index 4f73b6277f8..b5cc9b76ea0 100644 --- a/gnu/usr.bin/perl/perlapi.h +++ b/gnu/usr.bin/perl/perlapi.h @@ -1,7 +1,7 @@ /* * perlapi.h * - * Copyright (C) 1999, 2000, 2001, 2002, 2003, by Larry Wall and others + * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -258,6 +258,8 @@ END_EXTERN_C #define PL_fdpid (*Perl_Ifdpid_ptr(aTHX)) #undef PL_fdpid_mutex #define PL_fdpid_mutex (*Perl_Ifdpid_mutex_ptr(aTHX)) +#undef PL_fdscript +#define PL_fdscript (*Perl_Ifdscript_ptr(aTHX)) #undef PL_filemode #define PL_filemode (*Perl_Ifilemode_ptr(aTHX)) #undef PL_forkprocess @@ -562,6 +564,8 @@ END_EXTERN_C #define PL_subline (*Perl_Isubline_ptr(aTHX)) #undef PL_subname #define PL_subname (*Perl_Isubname_ptr(aTHX)) +#undef PL_suidscript +#define PL_suidscript (*Perl_Isuidscript_ptr(aTHX)) #undef PL_sv_arenaroot #define PL_sv_arenaroot (*Perl_Isv_arenaroot_ptr(aTHX)) #undef PL_sv_count diff --git a/gnu/usr.bin/perl/plan9/config_sh.sample b/gnu/usr.bin/perl/plan9/config_sh.sample index 1f0cb3ec12d..9b14b391ec3 100644 --- a/gnu/usr.bin/perl/plan9/config_sh.sample +++ b/gnu/usr.bin/perl/plan9/config_sh.sample @@ -784,7 +784,6 @@ pg='pg' phostname='uname -n' pidtype='pid_t' plibpth='' -pm_apiversion='5.005' pmake='' pr='' prefix='/usr' @@ -966,7 +965,6 @@ versiononly='undef' vi='' voidflags='15' xlibpth='' -xs_apiversion='5.8.0' yacc='yacc' yaccflags='' zcat='' diff --git a/gnu/usr.bin/perl/pod.lst b/gnu/usr.bin/perl/pod.lst index 0645e0377ef..de777ea0784 100644 --- a/gnu/usr.bin/perl/pod.lst +++ b/gnu/usr.bin/perl/pod.lst @@ -120,7 +120,9 @@ h Miscellaneous perlhist Perl history records d perldelta Perl changes since previous version -D perl583delta Perl changes in version 5.8.3 +D perl585delta Perl changes in version 5.8.5 + perl584delta Perl changes in version 5.8.4 + perl583delta Perl changes in version 5.8.3 perl582delta Perl changes in version 5.8.2 perl581delta Perl changes in version 5.8.1 perl58delta Perl changes in version 5.8.0 diff --git a/gnu/usr.bin/perl/pod/perl571delta.pod b/gnu/usr.bin/perl/pod/perl571delta.pod index 431c35928bd..aff02e5addf 100644 --- a/gnu/usr.bin/perl/pod/perl571delta.pod +++ b/gnu/usr.bin/perl/pod/perl571delta.pod @@ -771,17 +771,17 @@ SOCKS support is now much more robust. If your file system supports symbolic links you can build Perl outside of the source directory by - mkdir /tmp/perl/build/directory - cd /tmp/perl/build/directory + mkdir perl/build/directory + cd perl/build/directory sh /path/to/perl/source/Configure -Dmksymlinks ... -This will create in /tmp/perl/build/directory a tree of symbolic links +This will create in perl/build/directory a tree of symbolic links pointing to files in /path/to/perl/source. The original files are left unaffected. After Configure has finished you can just say make all test -and Perl will be built and tested, all in /tmp/perl/build/directory. +and Perl will be built and tested, all in perl/build/directory. =back diff --git a/gnu/usr.bin/perl/pod/perl583delta.pod b/gnu/usr.bin/perl/pod/perl583delta.pod index 2967647cde1..2981a9834a8 100644 --- a/gnu/usr.bin/perl/pod/perl583delta.pod +++ b/gnu/usr.bin/perl/pod/perl583delta.pod @@ -1,6 +1,6 @@ =head1 NAME -perldelta - what is new for perl v5.8.3 +perl583delta - what is new for perl v5.8.3 =head1 DESCRIPTION @@ -179,7 +179,7 @@ the end of June, with release by mid July. =head1 Obituary -Iain 'Spoon' Truskett, Perl hacker, author of and +Iain 'Spoon' Truskett, Perl hacker, author of L and contributor to CPAN, died suddenly on 29th December 2003, aged 24. He will be missed. diff --git a/gnu/usr.bin/perl/pod/perl584delta.pod b/gnu/usr.bin/perl/pod/perl584delta.pod new file mode 100644 index 00000000000..b2cdcc6b822 --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl584delta.pod @@ -0,0 +1,263 @@ +=head1 NAME + +perl584delta - what is new for perl v5.8.4 + +=head1 DESCRIPTION + +This document describes differences between the 5.8.3 release and +the 5.8.4 release. + +=head1 Incompatible Changes + +Many minor bugs have been fixed. Scripts which happen to rely on previously +erroneous behaviour will consider these fixes as incompatible changes :-) +You are advised to perform sufficient acceptance testing on this release +to satisfy yourself that this does not affect you, before putting this +release into production. + +The diagnostic output of Carp has been changed slightly, to add a space after +the comma between arguments. This makes it much easier for tools such as +web browsers to wrap it, but might confuse any automatic tools which perform +detailed parsing of Carp output. + +The internal dump output has been improved, so that non-printable characters +such as newline and backspace are output in C<\x> notation, rather than +octal. This might just confuse non-robust tools which parse the output of +modules such as Devel::Peek. + +=head1 Core Enhancements + +=head2 Malloc wrapping + +Perl can now be built to detect attempts to assign pathologically large chunks +of memory. Previously such assignments would suffer from integer wrap-around +during size calculations causing a misallocation, which would crash perl, and +could theoretically be used for "stack smashing" attacks. The wrapping +defaults to enabled on platforms where we know it works (most AIX +configurations, BSDi, Darwin, DEC OSF/1, FreeBSD, HP/UX, GNU Linux, OpenBSD, +Solaris, VMS and most Win32 compilers) and defaults to disabled on other +platforms. + +=head2 Unicode Character Database 4.0.1 + +The copy of the Unicode Character Database included in Perl 5.8 has +been updated to 4.0.1 from 4.0.0. + +=head2 suidperl less insecure + +Paul Szabo has analysed and patched C to remove existing known +insecurities. Currently there are no known holes in C, but previous +experience shows that we cannot be confident that these were the last. You may +no longer invoke the set uid perl directly, so to preserve backwards +compatibility with scripts that invoke #!/usr/bin/suidperl the only set uid +binary is now CI (C for this release). C +is installed as a hard link to C; both C and C will +invoke C automatically the set uid binary, so this change should +be completely transparent. + +For new projects the core perl team would strongly recommend that you use +dedicated, single purpose security tools such as C in preference to +C. + +=head2 format + +In addition to bug fixes, C's features have been enhanced. See +L + +=head1 Modules and Pragmata + +The (mis)use of C in core modules and documentation has been tidied up. +Some modules available both within the perl core and independently from CPAN +("dual-life modules") have not yet had these changes applied; the changes +will be integrated into future stable perl releases as the modules are +updated on CPAN. + +=head2 Updated modules + +=over 4 + +=item Attribute::Handlers + +=item B + +=item Benchmark + +=item CGI + +=item Carp + +=item Cwd + +=item Exporter + +=item File::Find + +=item IO + +=item IPC::Open3 + +=item Local::Maketext + +=item Math::BigFloat + +=item Math::BigInt + +=item Math::BigRat + +=item MIME::Base64 + +=item ODBM_File + +=item POSIX + +=item Shell + +=item Socket + +There is experimental support for Linux abstract Unix domain sockets. + +=item Storable + +=item Switch + +Synced with its CPAN version 2.10 + +=item Sys::Syslog + +C can now use numeric constants for facility names and priorities, +in addition to strings. + +=item Term::ANSIColor + +=item Time::HiRes + +=item Unicode::UCD + +=item Win32 + +Win32.pm/Win32.xs has moved from the libwin32 module to core Perl + +=item base + +=item open + +=item threads + +Detached threads are now also supported on Windows. + +=item utf8 + +=back + +=head1 Performance Enhancements + +=over 4 + +=item * + +Accelerated Unicode case mappings (C, C, C, etc). + +=item * + +In place sort optimised (eg C<@a = sort @a>) + +=item * + +Unnecessary assignment optimised away in + + my $s = undef; + my @a = (); + my %h = (); + +=item * + +Optimised C in scalar context + +=back + +=head1 Utility Changes + +The Perl debugger (F) can now save all debugger commands for +sourcing later, and can display the parent inheritance tree of a given class. + +=head1 Installation and Configuration Improvements + +The build process on both VMS and Windows has had several minor improvements +made. On Windows Borland's C compiler can now compile perl with PerlIO and/or +USE_LARGE_FILES enabled. + +C on Windows now has a "Camel" logo icon. The use of a camel with +the topic of Perl is a trademark of O'Reilly and Associates Inc., and is used +with their permission (ie distribution of the source, compiling a Windows +executable from it, and using that executable locally). Use of the supplied +camel for anything other than a perl executable's icon is specifically not +covered, and anyone wishing to redistribute perl binaries I the icon +should check directly with O'Reilly beforehand. + +Perl should build cleanly on Stratus VOS once more. + +=head1 Selected Bug Fixes + +More utf8 bugs fixed, notably in how C, C, C, and +C and interact with utf8 data. Concatenation now works correctly +when C is in scope. + +Pragmata are now correctly propagated into (?{...}) constructions in regexps. +Code such as + + my $x = qr{ ... (??{ $x }) ... }; + +will now (correctly) fail under use strict. (As the inner C<$x> is and +has always referred to C<$::x>) + +The "const in void context" warning has been suppressed for a constant in an +optimised-away boolean expression such as C<5 || print;> + +C could C by mistake. This is serious if stdin is +attached to a terminal, and perl is running as root. Now fixed. + +=head1 New or Changed Diagnostics + +C and the internal diagnostic routines used by C have been +made clearer, as described in L + +=head1 Changed Internals + +Some bugs have been fixed in the hash internals. Restricted hashes and +their place holders are now allocated and deleted at slightly different times, +but this should not be visible to user code. + +=head1 Future Directions + +Code freeze for the next maintenance release (5.8.5) will be on 30th June +2004, with release by mid July. + +=head1 Platform Specific Problems + +This release is known not to build on Windows 95. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the articles +recently posted to the comp.lang.perl.misc newsgroup and the perl +bug database at http://bugs.perl.org. There may also be +information at http://www.perl.org, the Perl Home Page. + +If you believe you have an unreported bug, please run the B +program included with your release. Be sure to trim your bug down +to a tiny but sufficient test case. Your bug report, along with the +output of C, will be sent off to perlbug@perl.org to be +analysed by the Perl porting team. You can browse and search +the Perl 5 bugs at http://bugs.perl.org/ + +=head1 SEE ALSO + +The F file for exhaustive details on what changed. + +The F file for how to build Perl. + +The F file for general stuff. + +The F and F files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perl585delta.pod b/gnu/usr.bin/perl/pod/perl585delta.pod new file mode 100644 index 00000000000..6d23f4f6aba --- /dev/null +++ b/gnu/usr.bin/perl/pod/perl585delta.pod @@ -0,0 +1,257 @@ +=head1 NAME + +perldelta - what is new for perl v5.8.5 + +=head1 DESCRIPTION + +This document describes differences between the 5.8.4 release and +the 5.8.5 release. + +=head1 Incompatible Changes + +There are no changes incompatible with 5.8.4. + +=head1 Core Enhancements + +Perl's regular expression engine now contains support for matching on the +intersection of two Unicode character classes. You can also now refer to +user-defined character classes from within other user defined character +classes. + +=head1 Modules and Pragmata + +=over 4 + +=item * + +Carp improved to work nicely with Safe. Carp's message reporting should now +be anomaly free - it will always print out line number information. + +=item * + +CGI upgraded to version 3.05 + +=item * + +charnames now avoids clobbering $_ + +=item * + +Digest upgraded to version 1.08 + +=item * + +Encode upgraded to version 2.01 + +=item * + +FileCache upgraded to version 1.04 + +=item * + +libnet upgraded to version 1.19 + +=item * + +Pod::Parser upgraded to version 1.28 + +=item * + +Pod::Perldoc upgraded to version 3.13 + +=item * + +Pod::LaTeX upgraded to version 0.57 + +=item * + +Safe now works properly with Carp + +=item * + +Scalar-List-Utils upgraded to version 1.14 + +=item * + +Shell's documentation has been re-written, and its historical partial +auto-quoting of command arguments can now be disabled. + +=item * + +Test upgraded to version 1.25 + +=item * + +Test::Harness upgraded to version 2.42 + +=item * + +Time::Local upgraded to version 1.10 + +=item * + +Unicode::Collate upgraded to version 0.40 + +=item * + +Unicode::Normalize upgraded to version 0.30 + +=back + +=head1 Utility Changes + +=head2 Perl's debugger + +The debugger can now emulate stepping backwards, by restarting and rerunning +all bar the last command from a saved command history. + +=head2 h2ph + +F is now able to understand a very limited set of C inline functions +-- basically, the inline functions that look like CPP macros. This has +been introduced to deal with some of the headers of the newest versions of +the glibc. The standard warning still applies; to quote F's +documentation, I. + +=head1 Installation and Configuration Improvements + +Perl 5.8.5 should build cleanly from source on LynxOS. + +=head1 Selected Bug Fixes + +=over 4 + +=item * + +The in-place sort optimisation introduced in 5.8.4 had a bug. For example, +in code such as + + @a = sort ($b, @a) + +the result would omit the value $b. This is now fixed. + +=item * + +The optimisation for unnecessary assignments introduced in 5.8.4 could give +spurious warnings. This has been fixed. + +=item * + +Perl should now correctly detect and read BOM-marked and (BOMless) UTF-16 +scripts of either endianness. + +=item * + +Creating a new thread when weak references exist was buggy, and would often +cause warnings at interpreter destruction time. The known bug is now fixed. + +=item * + +Several obscure bugs involving manipulating Unicode strings with C have +been fixed. + +=item * + +Previously if Perl's file globbing function encountered a directory that it +did not have permission to open it would return immediately, leading to +unexpected truncation of the list of results. This has been fixed, to be +consistent with Unix shells' globbing behaviour. + +=item * + +Thread creation time could vary wildly between identical runs. This was caused +by a poor hashing algorithm in the thread cloning routines, which has now +been fixed. + +=item * + +The internals of the ithreads implementation were not checking if OS-level +thread creation had failed. threads->create() now returns C in if +thead creation fails instead of crashing perl. + +=back + +=head1 New or Changed Diagnostics + +=over 4 + +=item * + +Perl -V has several improvements + +=over 4 + +=item * + +correctly outputs local patch names that contain embedded code snippets +or other characters that used to confuse it. + +=item * + +arguments to -V that look like regexps will give multiple lines of output. + +=item * + +a trailing colon suppresses the linefeed and ';' terminator, allowing +embedding of queries into shell commands. + +=item * + +a leading colon removes the 'name=' part of the response, allowing mapping to +any name. + +=back + +=item * + +When perl fails to find the specified script, it now outputs a second line +suggesting that the user use the C<-S> flag: + + $ perl5.8.5 missing.pl + Can't open perl script "missing.pl": No such file or directory. + Use -S to search $PATH for it. + +=back + +=head1 Changed Internals + +The Unicode character class files used by the regular expression engine are +now built at build time from the supplied Unicode consortium data files, +instead of being shipped prebuilt. This makes the compressed Perl source +tarball about 200K smaller. A side effect is that the layout of files inside +lib/unicore has changed. + +=head1 Known Problems + +The regression test F is now performing considerably more +tests, and can take several minutes to run even on a fast machine. + +=head1 Platform Specific Problems + +This release is known not to build on Windows 95. + +=head1 Reporting Bugs + +If you find what you think is a bug, you might check the articles +recently posted to the comp.lang.perl.misc newsgroup and the perl +bug database at http://bugs.perl.org. There may also be +information at http://www.perl.org, the Perl Home Page. + +If you believe you have an unreported bug, please run the B +program included with your release. Be sure to trim your bug down +to a tiny but sufficient test case. Your bug report, along with the +output of C, will be sent off to perlbug@perl.org to be +analysed by the Perl porting team. You can browse and search +the Perl 5 bugs at http://bugs.perl.org/ + +=head1 SEE ALSO + +The F file for exhaustive details on what changed. + +The F file for how to build Perl. + +The F file for general stuff. + +The F and F files for copyright information. + +=cut diff --git a/gnu/usr.bin/perl/pod/perldbmfilter.pod b/gnu/usr.bin/perl/pod/perldbmfilter.pod index 8384999e6a7..d62e496f9f1 100644 --- a/gnu/usr.bin/perl/pod/perldbmfilter.pod +++ b/gnu/usr.bin/perl/pod/perldbmfilter.pod @@ -91,7 +91,7 @@ fix very easily. use Fcntl ; my %hash ; - my $filename = "/tmp/filt" ; + my $filename = "filt" ; unlink $filename ; my $db = tie(%hash, 'SDBM_File', $filename, O_RDWR|O_CREAT, 0640) @@ -137,7 +137,7 @@ Here is a DBM Filter that does it: use warnings ; use DB_File ; my %hash ; - my $filename = "/tmp/filt" ; + my $filename = "filt" ; unlink $filename ; diff --git a/gnu/usr.bin/perl/pod/perlfork.pod b/gnu/usr.bin/perl/pod/perlfork.pod index 8ce0739794d..832710a80cd 100644 --- a/gnu/usr.bin/perl/pod/perlfork.pod +++ b/gnu/usr.bin/perl/pod/perlfork.pod @@ -208,7 +208,6 @@ write to a forked child: else { # child while () { print; } - close STDIN; exit(0); } @@ -238,7 +237,6 @@ And this one reads from the child: else { # child print "pipe_from_fork\n"; - close STDOUT; exit(0); } diff --git a/gnu/usr.bin/perl/pod/perlhack.pod b/gnu/usr.bin/perl/pod/perlhack.pod index 5d746acb7b7..0d7581cc9cc 100644 --- a/gnu/usr.bin/perl/pod/perlhack.pod +++ b/gnu/usr.bin/perl/pod/perlhack.pod @@ -479,6 +479,93 @@ for reference. =back +=head2 Working with the source + +Because you cannot use the Perforce client, you cannot easily generate +diffs against the repository, nor will merges occur when you update +via rsync. If you edit a file locally and then rsync against the +latest source, changes made in the remote copy will I your +local versions! + +The best way to deal with this is to maintain a tree of symlinks to +the rsync'd source. Then, when you want to edit a file, you remove +the symlink, copy the real file into the other tree, and edit it. You +can then diff your edited file against the original to generate a +patch, and you can safely update the original tree. + +Perl's F script can generate this tree of symlinks for you. +The following example assumes that you have used rsync to pull a copy +of the Perl source into the F directory. In the directory +above that one, you can execute the following commands: + + mkdir perl-dev + cd perl-dev + ../perl-rsync/Configure -Dmksymlinks -Dusedevel -D"optimize=-g" + +This will start the Perl configuration process. After a few prompts, +you should see something like this: + + Symbolic links are supported. + + Checking how to test for symbolic links... + Your builtin 'test -h' may be broken. + Trying external '/usr/bin/test -h'. + You can test for symbolic links with '/usr/bin/test -h'. + + Creating the symbolic links... + (First creating the subdirectories...) + (Then creating the symlinks...) + +The specifics may vary based on your operating system, of course. +After you see this, you can abort the F script, and you +will see that the directory you are in has a tree of symlinks to the +F directories and files. + +If you plan to do a lot of work with the Perl source, here are some +Bourne shell script functions that can make your life easier: + + function edit { + if [ -L $1 ]; then + mv $1 $1.orig + cp $1.orig $1 + vi $1 + else + /bin/vi $1 + fi + } + + function unedit { + if [ -L $1.orig ]; then + rm $1 + mv $1.orig $1 + fi + } + +Replace "vi" with your favorite flavor of editor. + +Here is another function which will quickly generate a patch for the +files which have been edited in your symlink tree: + + mkpatchorig() { + local diffopts + for f in `find . -name '*.orig' | sed s,^\./,,` + do + case `echo $f | sed 's,.orig$,,;s,.*\.,,'` in + c) diffopts=-p ;; + pod) diffopts='-F^=' ;; + *) diffopts= ;; + esac + diff -du $diffopts $f `echo $f | sed 's,.orig$,,'` + done + } + +This function produces patches which include enough context to make +your changes obvious. This makes it easier for the Perl pumpking(s) +to review them when you send them to the perl5-porters list, and that +means they're more likely to get applied. + +This function assumed a GNU diff, and may require some tweaking for +other diff variants. =head2 Perlbug administration diff --git a/gnu/usr.bin/perl/pod/perllexwarn.pod b/gnu/usr.bin/perl/pod/perllexwarn.pod index 8ee7fc32483..911de2b72ed 100644 --- a/gnu/usr.bin/perl/pod/perllexwarn.pod +++ b/gnu/usr.bin/perl/pod/perllexwarn.pod @@ -381,9 +381,9 @@ Consider the module C below. sub open { my $path = shift ; if ($path !~ m#^/#) { - warnings::warn("changing relative path to /tmp/") + warnings::warn("changing relative path to /var/abc") if warnings::enabled(); - $path = "/tmp/$path" ; + $path = "/var/abc/$path"; } } diff --git a/gnu/usr.bin/perl/pod/perlopentut.pod b/gnu/usr.bin/perl/pod/perlopentut.pod index 5389c1f722c..3116f785c17 100644 --- a/gnu/usr.bin/perl/pod/perlopentut.pod +++ b/gnu/usr.bin/perl/pod/perlopentut.pod @@ -192,11 +192,11 @@ whether it only works on existing files or always clobbers existing ones. open(WTMP, "+< /usr/adm/wtmp") || die "can't open /usr/adm/wtmp: $!"; - open(SCREEN, "+> /tmp/lkscreen") - || die "can't open /tmp/lkscreen: $!"; + open(SCREEN, "+> lkscreen") + || die "can't open lkscreen: $!"; - open(LOGFILE, "+>> /tmp/applog" - || die "can't open /tmp/applog: $!"; + open(LOGFILE, "+>> /var/log/applog" + || die "can't open /var/log/applog: $!"; The first one won't create a new file, and the second one will always clobber an old one. The third one will create a new file if necessary @@ -723,7 +723,9 @@ With descriptors that you haven't opened using C, such as sockets, you can set them to be non-blocking using C: use Fcntl; - fcntl(Connection, F_SETFL, O_NONBLOCK) + my $old_flags = fcntl($handle, F_GETFL, 0) + or die "can't get flags: $!"; + fcntl($handle, F_SETFL, $old_flags | O_NONBLOCK) or die "can't set non blocking: $!"; Rather than losing yourself in a morass of twisting, turning Cs, diff --git a/gnu/usr.bin/perl/pod/perlpodspec.pod b/gnu/usr.bin/perl/pod/perlpodspec.pod index 40e5371fe3a..1e08c2b69a3 100644 --- a/gnu/usr.bin/perl/pod/perlpodspec.pod +++ b/gnu/usr.bin/perl/pod/perlpodspec.pod @@ -486,7 +486,7 @@ L. This formatting code is syntactically simple, but semantically complex. What it means is that each space in the printable -content of this code signifies a nonbreaking space. +content of this code signifies a non-breaking space. Consider: @@ -497,7 +497,7 @@ Consider: Both signify the monospace (c[ode] style) text consisting of "$x", one space, "?", one space, ":", one space, "$z". The difference is that in the latter, with the S code, those spaces -are not "normal" spaces, but instead are nonbreaking spaces. +are not "normal" spaces, but instead are non-breaking spaces. =back @@ -732,10 +732,10 @@ paragraphs. =item * When rendering Pod to a format that has two kinds of hyphens (-), one -that's a nonbreaking hyphen, and another that's a breakable hyphen +that's a non-breaking hyphen, and another that's a breakable hyphen (as in "object-oriented", which can be split across lines as "object-", newline, "oriented"), formatters are encouraged to -generally translate "-" to nonbreaking hyphen, but may apply +generally translate "-" to non-breaking hyphen, but may apply heuristics to convert some of these to breaking hyphens. =item * @@ -992,15 +992,15 @@ EEeuro>1,000,000 Solution|Million::Euros>". =item * -Some Pod formatters output to formats that implement nonbreaking +Some Pod formatters output to formats that implement non-breaking spaces as an individual character (which I'll call "NBSP"), and -others output to formats that implement nonbreaking spaces just as +others output to formats that implement non-breaking spaces just as spaces wrapped in a "don't break this across lines" code. Note that at the level of Pod, both sorts of codes can occur: Pod can contain a NBSP character (whether as a literal, or as a "EE160>" or "EEnbsp>" code); and Pod can contain "SEfoo IEbarE baz>" codes, where "mere spaces" (character 32) in -such codes are taken to represent nonbreaking spaces. Pod +such codes are taken to represent non-breaking spaces. Pod parsers should consider supporting the optional parsing of "SEfoo IEbarE baz>" as if it were "fooIIEbarEIbaz", and, going the other way, the diff --git a/gnu/usr.bin/perl/pod/perlrequick.pod b/gnu/usr.bin/perl/pod/perlrequick.pod index bb15c46e5c7..7abd895e8a8 100644 --- a/gnu/usr.bin/perl/pod/perlrequick.pod +++ b/gnu/usr.bin/perl/pod/perlrequick.pod @@ -380,8 +380,9 @@ C<$pattern> won't be changing, use the C modifier, to only perform variable substitutions once. If you don't want any substitutions at all, use the special delimiter C: - $pattern = 'Seuss'; - m'$pattern'; # matches '$pattern', not 'Seuss' + @pattern = ('Seuss'); + m/@pattern/; # matches 'Seuss' + m'@pattern'; # matches the literal string '@pattern' The global modifier C allows the matching operator to match within a string as many times as possible. In scalar context, diff --git a/gnu/usr.bin/perl/pod/perlretut.pod b/gnu/usr.bin/perl/pod/perlretut.pod index be4693dd0f8..b738c3b2cbe 100644 --- a/gnu/usr.bin/perl/pod/perlretut.pod +++ b/gnu/usr.bin/perl/pod/perlretut.pod @@ -1325,9 +1325,9 @@ If you change C<$pattern> after the first substitution happens, perl will ignore it. If you don't want any substitutions at all, use the special delimiter C: - $pattern = 'Seuss'; + @pattern = ('Seuss'); while (<>) { - print if m'$pattern'; # matches '$pattern', not 'Seuss' + print if m'@pattern'; # matches literal '@pattern', not 'Seuss' } C acts like single quotes on a regexp; all other C delimiters diff --git a/gnu/usr.bin/perl/pod/perltodo.pod b/gnu/usr.bin/perl/pod/perltodo.pod index e92d4742454..5dbe882eb15 100644 --- a/gnu/usr.bin/perl/pod/perltodo.pod +++ b/gnu/usr.bin/perl/pod/perltodo.pod @@ -13,675 +13,75 @@ of archives may be found at: http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/ -=head1 To do during 5.6.x +=head1 assertions -=head2 Support for I/O disciplines +Clean up and finish support for assertions. See L. -C provides this, but the interface could be a lot more -straightforward. +=head1 iCOW -=head2 Autoload bytes.pm +Sarathy and Arthur have a proposal for an improved Copy On Write which +specifically will be able to COW new ithreads. If this can be implemented +it would be a good thing. -When the lexer sees, for instance, C, it should -automatically load the C pragma. +=head1 (?{...}) closures in regexps -=head2 Make "\u{XXXX}" et al work +Fix (or rewrite) the implementation of the C closures. -Danger, Will Robinson! Discussing the semantics of C<"\x{F00}">, -C<"\xF00"> and C<"\U{F00}"> on P5P I lead to a long and boring -flamewar. +=head1 A re-entrant regexp engine -=head2 Create a char *sv_pvprintify(sv, STRLEN *lenp, UV flags) +This will allow the use of a regex from inside (?{ }), (??{ }) and +(?(?{ })|) constructs. -For displaying PVs with control characters, embedded nulls, and Unicode. -This would be useful for printing warnings, or data and regex dumping, -not_a_number(), and so on. +=head1 pragmata -Requirements: should handle both byte and UTF-8 strings. isPRINT() -characters printed as-is, character less than 256 as \xHH, Unicode -characters as \x{HHH}. Don't assume ASCII-like, either, get somebody -on EBCDIC to test the output. +=head2 lexical pragmas -Possible options, controlled by the flags: -- whitespace (other than ' ' of isPRINT()) printed as-is -- use isPRINT_LC() instead of isPRINT() -- print control characters like this: "\cA" -- print control characters like this: "^A" -- non-PRINTables printed as '.' instead of \xHH -- use \OOO instead of \xHH -- use the C/Perl-metacharacters like \n, \t -- have a maximum length for the produced string (read it from *lenp) -- append a "..." to the produced string if the maximum length is exceeded -- really fancy: print unicode characters as \N{...} +Reimplement the mechanism of lexical pragmas to be more extensible. Fix +current pragmas that don't work well (or at all) with lexical scopes or in +run-time eval(STRING) (C, C, C for example). MJD has a +preliminary patch that implements this. -NOTE: pv_display(), pv_uni_display(), sv_uni_display() are already -doing something like the above. +=head2 use less 'memory' -=head2 Overloadable regex assertions +Investigate trade offs to switch out perl's choices on memory usage. +Particularly perl should be able to give memory back. -This may or may not be possible with the current regular expression -engine. The idea is that, for instance, C<\b> needs to be -algorithmically computed if you're dealing with Thai text. Hence, the -B<\b> assertion wants to be overloaded by a function. +=head1 prototypes and functions -=head2 Unicode +=head2 _ prototype character -=over 4 +Study the possibility of adding a new prototype character, C<_>, meaning +"this argument defaults to $_". -=item * +=head2 inlining autoloaded constants -Allow for long form of the General Category Properties, e.g -C<\p{IsOpenPunctuation}>, not just the abbreviated form, e.g. -C<\p{IsPs}>. - -=item * - -Allow for the metaproperties: C, C, -C, C (require the DerivedCoreProperties and -DerviceNormalizationProperties files). - -There are also multiple value properties still unimplemented: -C, C. - -=item * - - Case Mappings? http://www.unicode.org/unicode/reports/tr21/ - -Mostly implemented (all of 1:1, 1:N, N:1), only the "final sigma" -and locale-specific rules of SpecCase are not implemented. - -=item * - -UTF-8 identifier names should probably be canonicalized: NFC? - -=item * - -UTF-8 in package names and sub names? The first is problematic -because of the mapping to pathnames, ditto for the second one if -one does autosplitting, for example. Some of this works already -in 5.8.0, but essentially it is unsupported. Constructs to consider, -at the very least: - - use utf8; - package UnicodePackage; - sub new { bless {}, shift }; - sub UnicodeMethod1 { ... $_[0]->UnicodeMethod2(...) ... } - sub UnicodeMethod2 { ... } # in here caller(0) should contain Unicode - ... - package main; - my $x = UnicodePackage->new; - print ref $x, "\n"; # should be Unicode - $x->UnicodeMethod1(...); - my $y = UnicodeMethod3 UnicodePackage ...; - -In the above all I contain (identifier-worthy) characters -beyond the code point 255, for example 256. Wherever package/class or -subroutine names can be returned needs to be checked for Unicodeness. - -=back - -See L for what's -there and what's missing. Almost all of Levels 2 and 3 is missing, -and as of 5.8.0 not even all of Level 1 is there. -They have some tricks Perl doesn't yet implement, such as character -class subtraction. - - http://www.unicode.org/unicode/reports/tr18/ - -=head2 Work out exit/die semantics for threads - -There are some suggestions to use for example something like this: -default to "(thread exiting first will) wait for the other threads -until up to 60 seconds". Other possibilities: - - use threads wait => 0; - -Do not wait. - - use threads wait_for => 10; - -Wait up to 10 seconds. - - use threads wait_for => -1; - -Wait for ever. - -http://archive.develooper.com/perl5-porters@perl.org/msg79618.html - -=head2 Better support for nonpreemptive threading systems like GNU pth - -To better support nonpreemptive threading systems, perhaps some of the -blocking functions internally in Perl should do a yield() before a -blocking call. (Now certain threads tests ({basic,list,thread.t}) -simply do a yield() before they sleep() to give nonpreemptive thread -implementations a chance). - -In some cases, like the GNU pth, which has replacement functions that -are nonblocking (pth_select instead of select), maybe Perl should be -using them instead when built for threading. - -=head2 Typed lexicals for compiler - -=head2 Compiler workarounds for Win32 - -=head2 AUTOLOADing in the compiler - -=head2 Fixing comppadlist when compiling - -=head2 Cleaning up exported namespace - -=head2 Complete signal handling - -Add C to opcodes which loop; replace C with -C; check C for signal safety. - -=head2 Out-of-source builds - -This was done for 5.6.0, but needs reworking for 5.7.x - -=head2 POSIX realtime support - -POSIX 1003.1 1996 Edition support--realtime stuff: POSIX semaphores, -message queues, shared memory, realtime clocks, timers, signals (the -metaconfig units mostly already exist for these) - -=head2 UNIX98 support - -Reader-writer locks, realtime/asynchronous IO - -=head2 IPv6 Support - -There are non-core modules, such as C, but these will need -integrating when IPv6 actually starts to really happen. See RFC 2292 -and RFC 2553. - -=head2 Long double conversion - -Floating point formatting is still causing some weird test failures. - -=head2 Locales - -Locales and Unicode interact with each other in unpleasant ways. -One possible solution would be to adopt/support ICU: - - http://oss.software.ibm.com/icu/index.html - -=head2 Arithmetic on non-Arabic numerals - -C<[1234567890]> aren't the only numerals any more. - -=head2 POSIX Unicode character classes - -(C<[=a=]> for equivalence classes, C<[.ch.]> for collation.) -These are dependent on Unicode normalization and collation. - -=head2 Factoring out common suffices/prefices in regexps (trie optimization) - -Currently, the user has to optimize C and C into -C and C<[fg]oo> by hand; this could be done automatically. - -=head2 Security audit shipped utilities - -All the code we ship with Perl needs to be sensible about temporary file -handling, locking, input validation, and so on. - -=head2 Sort out the uid-setting mess - -Currently there are several problems with the setting of uids ($<, $> -for the real and effective uids). Firstly, what exactly setuid() call -gets invoked in which platform is simply a big mess that needs to be -untangled. Secondly, the effects are apparently not standard across -platforms, (if you first set $< and then $>, or vice versa, being -uid == euid == zero, or just euid == zero, or as a normal user, what are -the results?). The test suite not (usually) being run as root means -that these things do not get much testing. Thirdly, there's quite -often a third uid called saved uid, and Perl has no knowledge of that -feature in any way. (If one has the saved uid of zero, one can get -back any real and effective uids.) As an example, to change also the -saved uid, one needs to set the real and effective uids B-- in -most systems, that is: in HP-UX that doesn't seem to work. - -=head2 Custom opcodes - -Have a way to introduce user-defined opcodes without the subroutine call -overhead of an XSUB; the user should be able to create PP code. Simon -Cozens has some ideas on this. - -=head2 DLL Versioning - -Windows needs a way to know what version of an XS or C DLL it's -loading. - -=head2 Introduce @( and @) - -C<$(> may return "foo bar baz". Unfortunately, since groups can -theoretically have spaces in their names, this could be one, two or -three groups. - -=head2 Floating point handling - -C and C support is particularly troublesome. -(fp_classify(), fp_class(), fp_class_d(), class(), isinf(), -isfinite(), finite(), isnormal(), unordered(), , - (there are metaconfig units for all these) (I think), -fp_setmask(), fp_getmask(), fp_setround(), fp_getround() -(no metaconfig units yet for these). Don't forget finitel(), fp_classl(), -fp_class_l(), (yes, both do, unfortunately, exist), and unorderedl().) - -As of Perl 5.6.1, there is a Perl macro, Perl_isnan(). - -=head2 IV/UV preservation - -Nicholas Clark has done a lot of work on this, but work is continuing. -C<+>, C<-> and C<*> work, but guards need to be in place for C<%>, C, -C<&>, C, C and C. - -=head2 Replace pod2html with something using Pod::Parser - -The CPAN module C may be a more suitable basis for a -C converter; the current one duplicates the functionality -abstracted in C, which makes updating the POD language -difficult. - -=head2 Automate module testing on CPAN - -When a new Perl is being beta tested, porters have to manually grab -their favourite CPAN modules and test them - this should be done -automatically. - -=head2 sendmsg and recvmsg - -We have all the other BSD socket functions but these. There are -metaconfig units for these functions which can be added. To avoid these -being new opcodes, a solution similar to the way C was added -would be preferable. (Autoload the C module.) - -=head2 Rewrite perlre documentation - -The new-style patterns need full documentation, and the whole document -needs to be a lot clearer. - -=head2 Convert example code to IO::Handle filehandles - -=head2 Document Win32 choices - -=head2 Check new modules - -=head2 Make roffitall find pods and libs itself - -Simon Cozens has done some work on this but it needs a rethink. - -=head1 To do at some point - -These are ideas that have been regularly tossed around, that most -people believe should be done maybe during 5.8.x - -=head2 Remove regular expression recursion - -Because the regular expression engine is recursive, badly designed -expressions can lead to lots of recursion filling up the stack. Ilya -claims that it is easy to convert the engine to being iterative, but -this has still not yet been done. There may be a regular expression -engine hit squad meeting at TPC5. - -=head2 Memory leaks after failed eval - -Perl will leak memory if you C. This is -partially because it attempts to build up an op tree for that code and -doesn't properly free it. The same goes for non-syntactically-correct -regular expressions. Hugo looked into this, but decided it needed a -mark-and-sweep GC implementation. - -Alan notes that: The basic idea was to extend the parser token stack -(C) to include a type field so we knew what sort of thing each -element of the stack was. The F code would then have to be -postprocessed to record the type of each entry on the stack as it was -created, and the parser patched so that it could unroll the stack -properly on error. - -This is possible to do, but would be pretty messy to implement, as it -would rely on even more sed hackery in F. - -=head2 bitfields in pack - -=head2 Cross compilation - -Make Perl buildable with a cross-compiler. This will play havoc with -Configure, which needs to know how the target system will respond to -its tests; maybe C will be a good starting point here. -(Indeed, Bart Schuller reports that he compiled up C for -the Agenda PDA and it works fine.) A really big spanner in the works -is the bootstrapping build process of Perl: if the filesystem the -target systems sees is not the same what the build host sees, various -input, output, and (Perl) library files need to be copied back and forth. - -As of 5.8.0 Configure mostly works for cross-compilation -(used successfully for iPAQ Linux), miniperl gets built, -but then building DynaLoader (and other extensions) fails -since MakeMaker knows nothing of cross-compilation. -(See INSTALL/Cross-compilation for the state of things.) - -=head2 Perl preprocessor / macros - -Source filters help with this, but do not get us all the way. For -instance, it should be possible to implement the C operator somehow; -source filters don't (quite) cut it. - -=head2 Perl lexer in Perl - -Damian Conway is planning to work on this, but it hasn't happened yet. - -=head2 Using POSIX calls internally - -When faced with a BSD vs. SysV -style interface to some library or -system function, perl's roots show in that it typically prefers the BSD -interface (but falls back to the SysV one). One example is getpgrp(). -Other examples include C vs. C. There are others, mostly in -F. - -Mostly, this item is a suggestion for which way to start a journey into -an C<#ifdef> forest. It is not primarily a suggestion to eliminate any of -the C<#ifdef> forests. - -POSIX calls are perhaps more likely to be portable to unexpected -architectures. They are also perhaps more likely to be actively -maintained by a current vendor. They are also perhaps more likely to be -available in thread-safe versions, if appropriate. - -=head2 -i rename file when changed - -It's only necessary to rename a file when inplace editing when the file -has changed. Detecting a change is perhaps the difficult bit. - -=head2 All ARGV input should act like EE - -eg C doesn't currently read across multiple files. - -=head2 Support for rerunning debugger - -There should be a way of restarting the debugger on demand. - -=head2 Test Suite for the Debugger - -The debugger is a complex piece of software and fixing something -here may inadvertently break something else over there. To tame -this chaotic behaviour, a test suite is necessary. - -=head2 my sub foo { } - -The basic principle is sound, but there are problems with the semantics -of self-referential and mutually referential lexical subs: how to -declare the subs? - -=head2 One-pass global destruction - -Sweeping away all the allocated memory in one go is a laudable goal, but -it's difficult and in most cases, it's easier to let the memory get -freed by exiting. - -=head2 Rewrite regexp parser - -There has been talk recently of rewriting the regular expression parser -to produce an optree instead of a chain of opcodes; it's unclear whether -or not this would be a win. - -=head2 Cache recently used regexps - -This is to speed up - - for my $re (@regexps) { - $matched++ if /$re/ - } - -C already gives us a way of saving compiled regexps, but it should -be done automatically. - -=head2 Cross-compilation support - -Bart Schuller reports that using C and a cross-compiler, he -got Perl working on the Agenda PDA. However, one cannot build a full -Perl because Configure needs to get the results for the target platform, -for the host. - -=head2 Bit-shifting bitvectors - -Given: - - vec($v, 1000, 1) = 1; - -One should be able to do - - $v <<= 1; - -and have the 999'th bit set. - -Currently if you try with shift bitvectors you shift the NV/UV, instead -of the bits in the PV. Not very logical. - -=head2 debugger pragma - -The debugger is implemented in Perl in F; turning it into a -pragma should be easy, but making it work lexically might be more -difficult. Fiddling with C<$^P> would be necessary. - -=head2 use less pragma - -Identify areas where speed/memory tradeoffs can be made and have a hint -to switch between them. - -=head2 switch structures - -Although we have C in core, Larry points to the dormant -C and C ops in F; using these opcodes would be -much faster. - -=head2 Cache eval tree - -=head2 rcatmaybe - -=head2 Shrink opcode tables - -=head2 Optimize away @_ - -Look at the "reification" code in C - -=head2 Prototypes versus indirect objects - -Currently, indirect object syntax bypasses prototype checks. - -=head2 Install HTML - -HTML versions of the documentation need to be installed by default; a -call to C from C may be all that's necessary. - -=head2 Prototype method calls - -=head2 Return context prototype declarations - -=head2 magic_setisa - -=head2 Garbage collection - -There have been persistent mumblings about putting a mark-and-sweep -garbage detector into Perl; Alan Burlison has some ideas about this. - -=head2 IO tutorial - -Mark-Jason Dominus has the beginnings of one of these. - -=head2 Rewrite perldoc - -There are a few suggestions for what to do with C: maybe a -full-text search, an index function, locating pages on a particular -high-level subject, and so on. - -=head2 Install .3p manpages - -This is a bone of contention; we can create C<.3p> manpages for each -built-in function, but should we install them by default? Tcl does this, -and it clutters up C. - -=head2 Unicode tutorial - -Simon Cozens promises to do this before he gets old. - -=head2 Update POSIX.pm for 1003.1-2 - -=head2 Retargetable installation - -Allow C<@INC> to be changed after Perl is built. - -=head2 POSIX emulation on non-POSIX systems - -Make C behave as POSIXly as possible everywhere, meaning we -have to implement POSIX equivalents for some functions if necessary. - -=head2 Rename Win32 headers +Currently the optimiser can inline constants when expressed as subroutines +with prototype ($) that return a constant. Likewise, many packages wrapping +C libraries export lots of constants as subroutines which are AUTOLOADed on +demand. However, these have no prototypes, so can't be seen as constants by +the optimiser. Some way of cheaply (low syntax, low memory overhead) to the +perl compiler that a name is a constant would be great, so that it knows to +call the AUTOLOAD routine at compile time, and then inline the constant. =head2 Finish off lvalue functions -They don't work in the debugger, and they don't work for list or hash -slices. - -=head2 Update sprintf documentation - -Hugo van der Sanden plans to look at this. - -=head2 Use fchown/fchmod internally - -This has been done in places, but needs a thorough code review. -Also fchdir is available in some platforms. - -=head2 Make v-strings overloaded objects - -Instead of having to guess whether a string is a v-string and thus -needs to be displayed with %vd, make v-strings (readonly) objects -(class "vstring"?) with a stringify overload. - -=head2 Allow restricted hash assignment - -Currently you're not allowed to assign to a restricted hash at all, -even with the same keys. - - %restricted = (foo => 42); # error - -This should be allowed if the new keyset is a subset of the old -keyset. May require more extra code than we'd like in pp_aassign. - -=head2 Should overload be inheritable? - -Should overload be 'contagious' through @ISA so that derived classes -would inherit their base classes' overload definitions? What to do -in case of overload conflicts? - -=head2 Taint rethink - -Should taint be stopped from affecting control flow, if ($tainted)? -Should tainted symbolic method calls and subref calls be stopped? -(Look at Ruby's $SAFE levels for inspiration?) - -=head2 Perform correctly when XSUBs call subroutines that exit via goto(LABEL) and friends - -If an XSUB calls a subroutine that exits using goto(LABEL), -last(LABEL) or next(LABEL), then the interpreter will very probably crash -with a segfault because the execution resumes in the XSUB instead of -never returning there. - -=head1 Vague ideas - -Ideas which have been discussed, and which may or may not happen. - -=head2 ref() in list context - -It's unclear what this should do or how to do it without breaking old -code. - -=head2 Make tr/// return histogram of characters in list context - -There is a patch for this, but it may require Unicodification. - -=head2 Compile to real threaded code - -=head2 Structured types - -=head2 Modifiable $1 et al. - - ($x = "elephant") =~ /e(ph)/; - $1 = "g"; # $x = "elegant" - -What happens if there are multiple (nested?) brackets? What if the -string changes between the match and the assignment? - -=head2 Procedural interfaces for IO::*, etc. - -Some core modules have been accused of being overly-OO. Adding -procedural interfaces could demystify them. - -=head2 RPC modules - -=head2 Attach/detach debugger from running program - -With C, you can attach the debugger to a running program if you -pass the process ID. It would be good to do this with the Perl debugger -on a running Perl program, although I'm not sure how it would be done. +The old perltodo notes "They don't work in the debugger, and they don't work for +list or hash slices." -=head2 GUI::Native +=head1 Unicode and UTF8 -A non-core module that would use "native" GUI to create graphical -applications. +=head2 Implicit Latin 1 => Unicode translation -=head2 foreach(reverse ...) +Conversions from byte strings to UTF-8 currently map high bit characters +to Unicode without translation (or, depending on how you look at it, by +implicitly assuming that the byte strings are in Latin-1). As perl assumes +the C locale by default, upgrading a string to UTF-8 may change the +meaning of its contents regarding character classes, case mapping, etc. +This should probably emit a warning (at least). -Currently +=head2 UTF8 caching code - foreach (reverse @_) { ... } - -puts C<@_> on the stack, reverses it putting the reversed version on the -stack, then iterates forwards. Instead, it could be special-cased to put -C<@_> on the stack then iterate backwards. - -=head2 Constant function cache - -=head2 Approximate regular expression matching - -=head1 Ongoing - -These items B need doing: - -=head2 Update guts documentation - -Simon Cozens tries to do this when possible, and contributions to the -C documentation is welcome. - -=head2 Add more tests - -Michael Schwern will donate $500 to Yet Another Society when all core -modules have tests. - -=head2 Update auxiliary tools - -The code we ship with Perl should look like good Perl 5. - -=head2 Create debugging macros - -Debugging macros (like printsv, dump) can make debugging perl inside a -C debugger much easier. A good set for gdb comes with mod_perl. -Something similar should be distributed with perl. - -The proper way to do this is to use and extend Devel::DebugInit. -Devel::DebugInit also needs to be extended to support threads. - -See p5p archives for late May/early June 2001 for a recent discussion -on this topic. - -=head2 truncate to the people - -One can emulate ftruncate() using F_FREESP and F_CHSIZ fcntls -(see the UNIX FAQ for details). This needs to go somewhere near -pp_sys.c:pp_truncate(). - -One can emulate truncate() easily if one has ftruncate(). -This emulation should also go near pp_sys.pp_truncate(). +The string position/offset cache is not optional. It should be. =head2 Unicode in Filenames @@ -706,276 +106,194 @@ filesystem. temporarily retired in 5.8.1, and the -C has been repurposed, see L.) -=head1 Unicode in %ENV +=head2 Unicode in %ENV Currently the %ENV entries are always byte strings. -=head1 Recently done things - -These are things which have been on the todo lists in previous releases -but have recently been completed. - -=head2 Alternative RE syntax module - -The C module, available from the CPAN, provides this: - - my $re = Regexp::English - -> start_of_line - -> literal('Flippers') - -> literal(':') - -> optional - -> whitespace_char - -> end - -> remember - -> multiple - -> digit; - - /$re/; - -=head2 Safe signal handling - -A new signal model went into 5.7.1 without much fanfare. Operations and -Cs are no longer interrupted by signals, which are handled -between opcodes. This means that C now actually does -something. However, there are still a few things that need to be done. - -=head2 Tie Modules - -Modules which implement arrays in terms of strings, substrings or files -can be found on the CPAN. - -=head2 gettimeofday - -C has been integrated into the core. - -=head2 setitimer and getimiter - -Adding C got us this too. - -=head2 Testing __DIE__ hook - -Tests have been added. +=head1 Regexps -=head2 CPP equivalent in Perl +=head2 regexp optimiser optional -A C Yardley will probably have done this by the time you can read this. -This allows for a generalization of the C constant detection used in -building C. +The regexp optimiser is not optional. It should configurable to be, to allow +its performance to be measured, and its bugs to be easily demonstrated. -=head2 Explicit switch statements +=head2 common suffices/prefices in regexps (trie optimization) -C has been integrated into the core to give you all manner of -C semantics. - -=head2 autocroak - -This is C. - -=head2 UTF/EBCDIC - -Nick Ing-Simmons has made UTF-EBCDIC (UTR13) work with Perl. - - EBCDIC? http://www.unicode.org/unicode/reports/tr16/ - -=head2 UTF Regexes - -Although there are probably some small bugs to be rooted out, Jarkko -Hietaniemi has made regular expressions polymorphic between bytes and -characters. - -=head2 perlcc to produce executable - -C was recently rewritten, and can now produce standalone -executables. - -=head2 END blocks saved in compiled output - -=head2 Secure temporary file module - -Tim Jenness' C is now in core. - -=head2 Integrate Time::HiRes - -This module is now part of core. - -=head2 Turn Cwd into XS - -Benjamin Sugars has done this. - -=head2 Mmap for input - -Nick Ing-Simmons' C supports an C IO method. - -=head2 Byte to/from UTF-8 and UTF-8 to/from local conversion - -C provides this. - -=head2 Add sockatmark support - -Added in 5.7.1 - -=head2 Mailing list archives - -http://lists.perl.org/ , http://archive.develooper.com/ - -=head2 Bug tracking - -Since 5.8.0 perl uses the RT bug tracking system from Jesse Vincent, -implemented by Robert Spier at http://bugs.perl.org/ - -=head2 Integrate MacPerl - -Chris Nandor and Matthias Neeracher have integrated the MacPerl changes -into 5.6.0. +Currently, the user has to optimize C and C into +C and C<[fg]oo> by hand; this could be done automatically. -=head2 Web "nerve center" for Perl +=head1 POD -http://use.perl.org/ is what you're looking for. +=head2 POD -> HTML conversion still sucks -=head2 Regular expression tutorial +Which is crazy given just how simple POD purports to be, and how simple HTML +can be. -C, provided by Mark Kvale. +=head1 Misc medium sized projects -=head2 Debugging Tutorial +=head2 UNITCHECK -C, written by Richard Foley. +Introduce a new special block, UNITCHECK, which is run at the end of a +compilation unit (module, file, eval(STRING) block). This will correspond to +the Perl 6 CHECK. Perl 5's CHECK cannot be changed or removed because the +O.pm/B.pm backend framework depends on it. -=head2 Integrate new modules +=head2 optional optimizer -Jarkko has been integrating madly into 5.7.x +Make the peephole optimizer optional. -=head2 Integrate profiler +=head2 You WANT *how* many -C is now a core module. +Currently contexts are void, scalar and list. split has a special mechanism in +place to pass in the number of return values wanted. It would be useful to +have a general mechanism for this, backwards compatible and little speed hit. +This would allow proposals such as short circuiting sort to be implemented +as a module on CPAN. -=head2 Y2K error detection +=head2 lexical aliases -There's a configure option to detect unsafe concatenation with "19", and -a CPAN module. (C) +Allow lexical aliases (maybe via the syntax C. -=head2 Regular expression debugger +=head2 no 6 -While not part of core, Mark-Jason Dominus has written C and has -also come up with a generalised strategy for regular expression -debugging. +Make C and C work (opposite of C, etc.). -=head2 POD checker +=head2 IPv6 -That's, uh, F +Clean this up. Check everything in core works -=head2 "Dynamic" lexicals +=head2 entersub XS vs Perl -=head2 Cache precompiled modules +At the moment pp_entersub is huge, and has code to deal with entering both +perl and and XS subroutines. Subroutine implementations rarely change between +perl and XS at run time, so investigate using 2 ops to enter subs (one for +XS, one for perl) and swap between if a sub is redefined. -=head1 Deprecated Wishes +=head2 @INC source filter to Filter::Simple -These are items which used to be in the todo file, but have been -deprecated for some reason. +The second return value from a sub in @INC can be a source filter. This isn't +documented. It should be changed to use Filter::Simple, tested and documented. -=head2 Loop control on do{} +=head2 bincompat functions -This would break old code; use C instead. +There are lots of functions which are retained for binary compatibility. +Clean these up. Move them to mathom.c, and don't compile for blead? -=head2 Lexically scoped typeglobs +=head2 Use fchown/fchmod internally -Not needed now we have lexical IO handles. +The old perltodo notes "This has been done in places, but needs a thorough +code review. Also fchdir is available in some platforms." -=head2 format BOTTOM +=head1 Tests -=head2 report HANDLE +=head2 Make Schwern poorer -Damian Conway's text formatting modules seem to be the Way To Go. +Tests for everything, At which point Schwern coughs up $500 to TPF. -=head2 Generalised want()/caller()) +=head2 test B -Robin Houston's C module does this. +A test suite for the B module would be nice. -=head2 Named prototypes +=head2 Improve tests for Config.pm -This seems to be delayed until Perl 6. +Config.pm doesn't appear to be well tested. -=head2 Built-in globbing +=head2 common test code for timed bailout -The C module has been used to replace the C function. +Write portable self destruct code for tests to stop them burning CPU in +infinite loops. Needs to avoid using alarm, as some of the tests are testing +alarm/sleep or timers. -=head2 Regression tests for suidperl +=head1 Installation -C is deprecated in favour of common sense. +=head2 compressed man pages -=head2 Cached hash values +Be able to install them -We have shared hash keys, which perform the same job. +=head2 Make Config.pm cope with differences between build and installed perl -=head2 Add compression modules +=head2 Relocatable perl -The compression modules are a little heavy; meanwhile, Nick Clark is -working on experimental pragmata to do transparent decompression on -input. +Make it possible to create a relocatable perl binary. Will need some collusion +with Config.pm. We could use a syntax of ... for location of current binary? -=head2 Reorganise documentation into tutorials/references +=head2 make HTML install work -Could not get consensus on P5P about this. +=head2 put patchlevel in -v -=head2 Remove distinction between functions and operators +Currently perl from p4/rsync ships with a patchlevel.h file that usually +defines one local patch, of the form "MAINT12345" or "RC1". The output of +perl -v doesn't report that a perl isn't an official release, and this +information can get lost in bugs reports. Because of this, the minor version +isn't bumped up util RC time, to minimise the possibility of versions of perl +escaping that believe themselves to be newer than they actually are. -Caution: highly flammable. +It would be useful to find an elegant way to have the "this is an interim +maintenance release" or "this is a release candidate" in the terse -v output, +and have it so that it's easy for the pumpking to remove this just as the +release tarball is rolled up. This way the version pulled out of rsync would +always say "I'm a development release" and it would be safe to bump the +reported minor version as soon as a release ships, which would aid perl +developers. -=head2 Make XS easier to use +=head1 Incremental things -Use C instead, or SWIG. +Some tasks that don't need to get done in one big hit. -=head2 Make embedding easier to use +=head2 autovivification -Use C. +Make all autovivification consistent w.r.t LVALUE/RVALUE and strict/no strict; -=head2 man for perl +=head2 fix tainting bugs -See the Perl Power Tools. ( http://language.perl.com/ppt/ ) +Fix the bugs revealed by running the test suite with the C<-t> switch (via +C). -=head2 my $Package::variable +=head2 Make tainting consistent -Use C instead. +Tainting would be easier to use if it didn't take documented shortcuts and allow +taint to "leak" everywhere within an expression. -=head2 "or" tests defined, not truth +=head2 Dual life everything -Suggesting this on P5P B cause a boring and interminable flamewar. +As part of the "dists" plan, anything that doesn't belong in the smallest perl +distribution needs to be dual lifed. Anything else can be too. -=head2 "class"-based lexicals +=head1 Vague things -Use flyweight objects, secure hashes or, dare I say it, pseudo-hashes instead. -(Or whatever will replace pseudohashes in 5.10.) +Some more nebulous ideas -=head2 byteperl +=head2 threads -C covers this. +Make threads more robust. -=head2 Lazy evaluation / tail recursion removal +=head2 POSIX memory footprint -C gives first() (a short-circuiting grep); tail recursion -removal is done manually, with C. (However, MJD has -found that C introduces a performance penalty, so maybe -there should be a way to do this after all: C is better.) +Ilya observed that use POSIX; eats memory like there's no tomorrow, and at +various times worked to cut it down. There is probably still fat to cut out - +for example POSIX passes Exporter some very memory hungry data structures. -=head2 Make "use utf8" the default +=head2 Optimize away @_ -Because of backward compatibility this is difficult: scripts could not -contain B (like Latin-1) anymore, even in -string literals or pod. Also would introduce a measurable slowdown of -at least few percentages since all regular expression operations would -be done in full UTF-8. But if you want to try this, add --DUSE_UTF8_SCRIPTS to your compilation flags. +The old perltodo notes "Look at the "reification" code in C" -=head2 Unicode collation and normalization +=head2 switch ops -The Unicode::Collate and Unicode::Normalize modules -by SADAHIRO Tomoyuki have been included since 5.8.0. +The old perltodo notes "Although we have C in core, Larry points to +the dormant C and C ops in F; using these opcodes would +be much faster." - Collation? http://www.unicode.org/unicode/reports/tr10/ - Normalization? http://www.unicode.org/unicode/reports/tr15/ +=head2 Attach/detach debugger from running program -=head2 pack/unpack tutorial +The old perltodo notes "With C, you can attach the debugger to a running +program if you pass the process ID. It would be good to do this with the Perl +debugger on a running Perl program, although I'm not sure how it would be done." +ssh and screen do this with named pipes in tmp. Maybe we can too. -Wolfgang Laun finished what Simon Cozens started. +=head2 A decent benchmark -=cut +perlbench seems impervious to any recent changes made to the perl core. It would +be useful to have a reasonable general benchmarking suite that roughly +represented what current perl programs do, and measurably reported whether +tweaks to the core improve, degrade or don't really affect performance, to +guide people attempting to optimise the guts of perl. diff --git a/gnu/usr.bin/perl/pod/perlunicode.pod b/gnu/usr.bin/perl/pod/perlunicode.pod index b05edab7b58..23bee6eacf3 100644 --- a/gnu/usr.bin/perl/pod/perlunicode.pod +++ b/gnu/usr.bin/perl/pod/perlunicode.pod @@ -42,6 +42,14 @@ is needed.> See L. You can also use the C pragma to change the default encoding of the data in your script; see L. +=item BOM-marked scripts and UTF-16 scripts autodetected + +If a Perl script begins marked with the Unicode BOM (UTF-16LE, UTF16-BE, +or UTF-8), or if the script looks like non-BOM-marked UTF-16 of either +endianness, Perl will correctly read in the script as Unicode. +(BOMless UTF-8 cannot be effectively recognized or differentiated from +ISO 8859-1 or other eight-bit encodings.) + =item C needed to upgrade non-Latin-1 byte strings By default, there is a fundamental asymmetry in Perl's unicode model: @@ -207,6 +215,7 @@ for instance, are identical. Short Long L Letter + LC CasedLetter Lu UppercaseLetter Ll LowercaseLetter Lt TitlecaseLetter @@ -254,7 +263,8 @@ for instance, are identical. Single-letter properties match all characters in any of the two-letter sub-properties starting with the same letter. -C is a special case, which is an alias for C, C, and C. +C and C are special cases, which are aliases for the set of +C, C, and C. Because Perl hides the need for the user to understand the internal representation of Unicode characters, there is no need to implement @@ -262,31 +272,32 @@ the somewhat messy concept of surrogates. C is therefore not supported. Because scripts differ in their directionality--Hebrew is -written right to left, for example--Unicode supplies these properties: +written right to left, for example--Unicode supplies these properties in +the BidiClass class: Property Meaning - BidiL Left-to-Right - BidiLRE Left-to-Right Embedding - BidiLRO Left-to-Right Override - BidiR Right-to-Left - BidiAL Right-to-Left Arabic - BidiRLE Right-to-Left Embedding - BidiRLO Right-to-Left Override - BidiPDF Pop Directional Format - BidiEN European Number - BidiES European Number Separator - BidiET European Number Terminator - BidiAN Arabic Number - BidiCS Common Number Separator - BidiNSM Non-Spacing Mark - BidiBN Boundary Neutral - BidiB Paragraph Separator - BidiS Segment Separator - BidiWS Whitespace - BidiON Other Neutrals - -For example, C<\p{BidiR}> matches characters that are normally + L Left-to-Right + LRE Left-to-Right Embedding + LRO Left-to-Right Override + R Right-to-Left + AL Right-to-Left Arabic + RLE Right-to-Left Embedding + RLO Right-to-Left Override + PDF Pop Directional Format + EN European Number + ES European Number Separator + ET European Number Terminator + AN Arabic Number + CS Common Number Separator + NSM Non-Spacing Mark + BN Boundary Neutral + B Paragraph Separator + S Segment Separator + WS Whitespace + ON Other Neutrals + +For example, C<\p{BidiClass:R}> matches characters that are normally written right to left. =back @@ -559,10 +570,10 @@ that make the distinction. Most operators that deal with positions or lengths in a string will automatically switch to using character positions, including -C, C, C, C, C, +C, C, C, C, C, C, C, C, and C. Operators that specifically do not switch include C, C, and -C. Operators that really don't care include C, +C. Operators that really don't care include operators that treats strings as a bucket of bits such as C, and operators dealing with filenames. @@ -632,10 +643,21 @@ And finally, C reverses by character rather than by byte. =head2 User-Defined Character Properties You can define your own character properties by defining subroutines -whose names begin with "In" or "Is". The subroutines must be defined -in the C
package. The user-defined properties can be used in the -regular expression C<\p> and C<\P> constructs. Note that the effect -is compile-time and immutable once defined. +whose names begin with "In" or "Is". The subroutines can be defined in +any package. The user-defined properties can be used in the regular +expression C<\p> and C<\P> constructs; if you are using a user-defined +property from a package other than the one you are in, you must specify +its package in the C<\p> or C<\P> construct. + + # assuming property IsForeign defined in Lang:: + package main; # property package name required + if ($txt =~ /\p{Lang::IsForeign}+/) { ... } + + package Lang; # property package name not required + if ($txt =~ /\p{IsForeign}+/) { ... } + + +Note that the effect is compile-time and immutable once defined. The subroutines must return a specially-formatted string, with one or more newline-separated lines. Each line must be one of the following: @@ -650,23 +672,30 @@ tabular characters) denoting a range of Unicode code points to include. =item * Something to include, prefixed by "+": a built-in character -property (prefixed by "utf8::"), to represent all the characters in that -property; two hexadecimal code points for a range; or a single -hexadecimal code point. +property (prefixed by "utf8::") or a user-defined character property, +to represent all the characters in that property; two hexadecimal code +points for a range; or a single hexadecimal code point. =item * Something to exclude, prefixed by "-": an existing character -property (prefixed by "utf8::"), for all the characters in that -property; two hexadecimal code points for a range; or a single -hexadecimal code point. +property (prefixed by "utf8::") or a user-defined character property, +to represent all the characters in that property; two hexadecimal code +points for a range; or a single hexadecimal code point. =item * Something to negate, prefixed "!": an existing character -property (prefixed by "utf8::") for all the characters except the -characters in the property; two hexadecimal code points for a range; -or a single hexadecimal code point. +property (prefixed by "utf8::") or a user-defined character property, +to represent all the characters in that property; two hexadecimal code +points for a range; or a single hexadecimal code point. + +=item * + +Something to intersect with, prefixed by "&": an existing character +property (prefixed by "utf8::") or a user-defined character property, +for all the characters except the characters in the property; two +hexadecimal code points for a range; or a single hexadecimal code point. =back @@ -714,6 +743,19 @@ The negation is useful for defining (surprise!) negated classes. END } +Intersection is useful for getting the common characters matched by +two (or more) classes. + + sub InFooAndBar { + return <<'END'; + +main::Foo + &main::Bar + END + } + +It's important to remember not to use "&" for the first set -- that +would be intersecting with nothing (resulting in an empty set). + You can also define your own mappings to be used in the lc(), lcfirst(), uc(), and ucfirst() (or their string-inlined versions). The principle is the same: define subroutines in the C
package @@ -793,7 +835,9 @@ Level 1 - Basic Unicode Support [ 1] \x{...} [ 2] \N{...} [ 3] . \p{...} \P{...} - [ 4] now scripts (see UTR#24 Script Names) in addition to blocks + [ 4] support for scripts (see UTR#24 Script Names), blocks, + binary properties, enumerated non-binary properties, and + numeric properties (as listed in UTR#18 Other Properties) [ 5] have negation [ 6] can use regular expression look-ahead [a] or user-defined character properties [b] to emulate subtraction diff --git a/gnu/usr.bin/perl/pod/perluniintro.pod b/gnu/usr.bin/perl/pod/perluniintro.pod index 71d0e57cca8..81efd6bba4c 100644 --- a/gnu/usr.bin/perl/pod/perluniintro.pod +++ b/gnu/usr.bin/perl/pod/perluniintro.pod @@ -246,16 +246,14 @@ Note that both C<\x{...}> and C<\N{...}> are compile-time string constants: you cannot use variables in them. if you want similar run-time functionality, use C and C. -Also note that if all the code points for pack "U" are below 0x100, -bytes will be generated, just like if you were using C. - - my $bytes = pack("U*", 0x80, 0xFF); - If you want to force the result to Unicode characters, use the special C<"U0"> prefix. It consumes no arguments but forces the result to be in Unicode characters, instead of bytes. - my $chars = pack("U0U*", 0x80, 0xFF); + my $chars = pack("U0C*", 0x80, 0x42); + +Likewise, you can force the result to be bytes by using the special +C<"C0"> prefix. =head2 Handling Unicode @@ -265,7 +263,7 @@ C will work on the Unicode characters; regular expressions will work on the Unicode characters (see L and L). Note that Perl considers combining character sequences to be -characters, so for example +separate characters, so for example use charnames ':full'; print length("\N{LATIN CAPITAL LETTER A}\N{COMBINING ACUTE ACCENT}"), "\n"; @@ -299,8 +297,8 @@ If that variable isn't set, the encoding pragma will fail. The C module knows about many encodings and has interfaces for doing conversions between those encodings: - use Encode 'from_to'; - from_to($data, "iso-8859-3", "utf-8"); # from legacy to utf-8 + use Encode 'decode'; + $data = decode("iso-8859-3", $data); # convert from legacy to utf-8 =head2 Unicode I/O @@ -670,8 +668,8 @@ How Do I Detect Data That's Not Valid In a Particular Encoding? Use the C package to try converting it. For example, - use Encode 'encode_utf8'; - if (encode_utf8($string_of_bytes_that_I_think_is_utf8)) { + use Encode 'decode_utf8'; + if (decode_utf8($string_of_bytes_that_I_think_is_utf8)) { # valid } else { # invalid diff --git a/gnu/usr.bin/perl/pod/podchecker.PL b/gnu/usr.bin/perl/pod/podchecker.PL index 400522c60f8..1858e6f7186 100644 --- a/gnu/usr.bin/perl/pod/podchecker.PL +++ b/gnu/usr.bin/perl/pod/podchecker.PL @@ -114,8 +114,10 @@ L and L =head1 AUTHORS +Please report bugs using L. + Brad Appleton Ebradapp@enteract.comE, -Marek Rouchal Emarek@saftsack.fs.uni-bayreuth.deE +Marek Rouchal Emarekr@cpan.orgE Based on code for B written by Tom Christiansen Etchrist@mox.perl.comE diff --git a/gnu/usr.bin/perl/pp_pack.c b/gnu/usr.bin/perl/pp_pack.c index 3e4993d2e2f..7dbc0b87fc7 100644 --- a/gnu/usr.bin/perl/pp_pack.c +++ b/gnu/usr.bin/perl/pp_pack.c @@ -1,7 +1,7 @@ /* pp_pack.c * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, by Larry Wall and others + * 2000, 2001, 2002, 2003, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -20,17 +20,6 @@ #define PERL_IN_PP_PACK_C #include "perl.h" -/* - * The compiler on Concurrent CX/UX systems has a subtle bug which only - * seems to show up when compiling pp.c - it generates the wrong double - * precision constant value for (double)UV_MAX when used inline in the body - * of the code below, so this makes a static variable up front (which the - * compiler seems to get correct) and uses it in place of UV_MAX below. - */ -#ifdef CXUX_BROKEN_CONSTANT_CONVERT -static double UV_MAX_cxux = ((double)UV_MAX); -#endif - /* * Offset for integer pack/unpack. * @@ -2429,11 +2418,17 @@ S_pack_rec(pTHX_ SV *cat, register tempsym_t* symptr, register SV **beglist, SV given 10**(NV_MAX_10_EXP+1) == 128 ** x solve for x: x = (NV_MAX_10_EXP+1) * log (10) / log (128) And with that many bytes only Inf can overflow. + Some C compilers are strict about integral constant + expressions so we conservatively divide by a slightly + smaller integer instead of multiplying by the exact + floating-point value. */ #ifdef NV_MAX_10_EXP - char buf[1 + (int)((NV_MAX_10_EXP + 1) * 0.47456)]; +/* char buf[1 + (int)((NV_MAX_10_EXP + 1) * 0.47456)]; -- invalid C */ + char buf[1 + (int)((NV_MAX_10_EXP + 1) / 2)]; /* valid C */ #else - char buf[1 + (int)((308 + 1) * 0.47456)]; +/* char buf[1 + (int)((308 + 1) * 0.47456)]; -- invalid C */ + char buf[1 + (int)((308 + 1) / 2)]; /* valid C */ #endif char *in = buf + sizeof(buf); diff --git a/gnu/usr.bin/perl/pp_sort.c b/gnu/usr.bin/perl/pp_sort.c index 26ea9c06b49..e45e4d30ccd 100644 --- a/gnu/usr.bin/perl/pp_sort.c +++ b/gnu/usr.bin/perl/pp_sort.c @@ -1,7 +1,7 @@ /* pp_sort.c * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, by Larry Wall and others + * 2000, 2001, 2002, 2003, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -1413,9 +1413,9 @@ Perl_sortsv(pTHX_ SV **array, size_t nmemb, SVCOMPARE_t cmp) PP(pp_sort) { dSP; dMARK; dORIGMARK; - register SV **up; - SV **myorigmark = ORIGMARK; - register I32 max; + register SV **p1 = ORIGMARK+1, **p2; + register I32 max, i; + AV* av = Nullav; HV *stash; GV *gv; CV *cv = 0; @@ -1424,6 +1424,7 @@ PP(pp_sort) I32 overloading = 0; bool hasargs = FALSE; I32 is_xsub = 0; + I32 sorting_av = 0; if (gimme != G_ARRAY) { SP = MARK; @@ -1480,24 +1481,54 @@ PP(pp_sort) stash = CopSTASH(PL_curcop); } - up = myorigmark + 1; - while (MARK < SP) { /* This may or may not shift down one here. */ - /*SUPPRESS 560*/ - if ((*up = *++MARK)) { /* Weed out nulls. */ - SvTEMP_off(*up); - if (!PL_sortcop && !SvPOK(*up)) { + /* optimiser converts "@a = sort @a" to "sort \@a"; + * in case of tied @a, pessimise: push (@a) onto stack, then assign + * result back to @a at the end of this function */ + if (PL_op->op_private & OPpSORT_INPLACE) { + assert( MARK+1 == SP && *SP && SvTYPE(*SP) == SVt_PVAV); + (void)POPMARK; /* remove mark associated with ex-OP_AASSIGN */ + av = (AV*)(*SP); + max = AvFILL(av) + 1; + if (SvMAGICAL(av)) { + MEXTEND(SP, max); + p2 = SP; + for (i=0; i < (U32)max; i++) { + SV **svp = av_fetch(av, i, FALSE); + *SP++ = (svp) ? *svp : Nullsv; + } + } + else { + p1 = p2 = AvARRAY(av); + sorting_av = 1; + } + } + else { + p2 = MARK+1; + max = SP - MARK; + } + + /* shuffle stack down, removing optional initial cv (p1!=p2), plus any + * nulls; also stringify any args */ + for (i=max; i > 0 ; i--) { + if ((*p1 = *p2++)) { /* Weed out nulls. */ + SvTEMP_off(*p1); + if (!PL_sortcop && !SvPOK(*p1)) { STRLEN n_a; - if (SvAMAGIC(*up)) + if (SvAMAGIC(*p1)) overloading = 1; else - (void)sv_2pv(*up, &n_a); + (void)sv_2pv(*p1, &n_a); } - up++; + p1++; } + else + max--; } - max = --up - myorigmark; - if (PL_sortcop) { - if (max > 1) { + if (sorting_av) + AvFILLp(av) = max-1; + + if (max > 1) { + if (PL_sortcop) { PERL_CONTEXT *cx; SV** newsp; bool oldcatch = CATCH_GET; @@ -1528,8 +1559,6 @@ PP(pp_sort) cx->cx_type = CXt_SUB; cx->blk_gimme = G_SCALAR; PUSHSUB(cx); - if (!CvDEPTH(cv)) - (void)SvREFCNT_inc(cv); /* in preparation for POPSUB */ } PL_sortcxix = cxstack_ix; @@ -1544,7 +1573,7 @@ PP(pp_sort) CX_CURPAD_SAVE(cx->blk_sub); cx->blk_sub.argarray = av; } - sortsv((myorigmark+1), max, + sortsv(p1-max, max, is_xsub ? sortcv_xsub : hasargs ? sortcv_stacked : sortcv); POPBLOCK(cx,PL_curpm); @@ -1552,11 +1581,9 @@ PP(pp_sort) POPSTACK; CATCH_SET(oldcatch); } - } - else { - if (max > 1) { + else { MEXTEND(SP, 20); /* Can't afford stack realloc on signal. */ - sortsv(ORIGMARK+1, max, + sortsv(sorting_av ? AvARRAY(av) : ORIGMARK+1, max, (PL_op->op_private & OPpSORT_NUMERIC) ? ( (PL_op->op_private & OPpSORT_INTEGER) ? ( overloading ? amagic_i_ncmp : sv_i_ncmp) @@ -1567,8 +1594,8 @@ PP(pp_sort) : sv_cmp_locale_static) : ( overloading ? amagic_cmp : sv_cmp_static))); if (PL_op->op_private & OPpSORT_REVERSE) { - SV **p = ORIGMARK+1; - SV **q = ORIGMARK+max; + SV **p = sorting_av ? AvARRAY(av) : ORIGMARK+1; + SV **q = p+max-1; while (p < q) { SV *tmp = *p; *p++ = *q; @@ -1577,8 +1604,28 @@ PP(pp_sort) } } } + if (av && !sorting_av) { + /* simulate pp_aassign of tied AV */ + SV *sv; + SV** base, **didstore; + for (base = ORIGMARK+1, i=0; i < max; i++) { + sv = NEWSV(28,0); + sv_setsv(sv, base[i]); + base[i] = sv; + } + av_clear(av); + av_extend(av, max); + for (i=0; i < max; i++) { + sv = base[i]; + didstore = av_store(av, i, sv); + if (SvSMAGICAL(sv)) + mg_set(sv); + if (!didstore) + sv_2mortal(sv); + } + } LEAVE; - PL_stack_sp = ORIGMARK + max; + PL_stack_sp = ORIGMARK + (sorting_av ? 0 : max); return nextop; } diff --git a/gnu/usr.bin/perl/t/comp/hints.t b/gnu/usr.bin/perl/t/comp/hints.t index 117096860f4..f00bb6a893e 100644 --- a/gnu/usr.bin/perl/t/comp/hints.t +++ b/gnu/usr.bin/perl/t/comp/hints.t @@ -2,7 +2,13 @@ # Tests the scoping of $^H and %^H -BEGIN { print "1..14\n"; } +BEGIN { + chdir 't' if -d 't'; + @INC = qw(. ../lib); +} + + +BEGIN { print "1..15\n"; } BEGIN { print "not " if exists $^H{foo}; print "ok 1 - \$^H{foo} doesn't exist initially\n"; @@ -55,3 +61,15 @@ BEGIN { print "not " if $^H & 0x00020000; print "ok 8 - \$^H doesn't contain HINT_LOCALIZE_HH while finishing compilation\n"; } + +require 'test.pl'; + +# bug #27040: hints hash was being double-freed +my $result = runperl( + prog => '$^H |= 0x20000; eval q{BEGIN { $^H |= 0x20000 }}', + stderr => 1 +); +print "not " if length $result; +print "ok 15 - double-freeing hints hash\n"; +print "# got: $result\n" if length $result; + diff --git a/gnu/usr.bin/perl/t/comp/parser.t b/gnu/usr.bin/perl/t/comp/parser.t index 730f187cec8..cd00b749c50 100644 --- a/gnu/usr.bin/perl/t/comp/parser.t +++ b/gnu/usr.bin/perl/t/comp/parser.t @@ -9,7 +9,7 @@ BEGIN { } require "./test.pl"; -plan( tests => 42 ); +plan( tests => 46 ); eval '%@x=0;'; like( $@, qr/^Can't modify hash dereference in repeat \(x\)/, '%@x=0' ); @@ -141,3 +141,24 @@ EOF eval q{ *foo{CODE} ? 1 : 0 }; is( $@, '', "glob subscript in conditional" ); } + +# Bug #27024 +{ + # this used to segfault (because $[=1 is optimized away to a null block) + my $x; + $[ = 1 while $x; + pass(); + $[ = 0; # restore the original value for less side-effects +} + +# [perl #2738] perl segfautls on input +{ + eval q{ sub _ <> {} }; + like($@, qr/Illegal declaration of subroutine main::_/, "readline operator as prototype"); + + eval q{ $s = sub <> {} }; + like($@, qr/Illegal declaration of anonymous subroutine/, "readline operator as prototype"); + + eval q{ sub _ __FILE__ {} }; + like($@, qr/Illegal declaration of subroutine main::_/, "__FILE__ as prototype"); +} diff --git a/gnu/usr.bin/perl/t/comp/utf.t b/gnu/usr.bin/perl/t/comp/utf.t new file mode 100644 index 00000000000..90a9e5e11bb --- /dev/null +++ b/gnu/usr.bin/perl/t/comp/utf.t @@ -0,0 +1,57 @@ +#!./perl + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + unless (find PerlIO::Layer 'perlio') { + print "1..0 # Skip: not perlio\n"; + exit 0; + } + if ($ENV{PERL_CORE_MINITEST}) { + print "1..0 # Skip: no dynamic loading on miniperl, no threads\n"; + exit 0; + } + require Config; import Config; + if ($Config{'extensions'} !~ /\bEncode\b/) { + print "1..0 # Skip: Encode was not built\n"; + exit 0; + } +} + +require "./test.pl"; + +plan(tests => 15); + +my $BOM = chr(0xFEFF); + +sub test { + my ($enc, $tag, $bom) = @_; + open(UTF_PL, ">:raw:encoding($enc)", "utf.pl") + or die "utf.pl($enc,$tag,$bom): $!"; + print UTF_PL $BOM if $bom; + print UTF_PL "$tag\n"; + close(UTF_PL); + my $got = do "./utf.pl"; + is($got, $tag); +} + +test("utf16le", 123, 1); +test("utf16le", 1234, 1); +test("utf16le", 12345, 1); +test("utf16be", 123, 1); +test("utf16be", 1234, 1); +test("utf16be", 12345, 1); +test("utf8", 123, 1); +test("utf8", 1234, 1); +test("utf8", 12345, 1); + +test("utf16le", 123, 0); +test("utf16le", 1234, 0); +test("utf16le", 12345, 0); +test("utf16be", 123, 0); +test("utf16be", 1234, 0); +test("utf16be", 12345, 0); + +END { + 1 while unlink "utf.pl"; +} diff --git a/gnu/usr.bin/perl/t/io/binmode.t b/gnu/usr.bin/perl/t/io/binmode.t index f50d0f7fa80..be198ae645c 100644 --- a/gnu/usr.bin/perl/t/io/binmode.t +++ b/gnu/usr.bin/perl/t/io/binmode.t @@ -7,8 +7,9 @@ BEGIN { } use Config; -use Errno; - +BEGIN { + eval {require Errno; Errno->import;}; +} plan(tests => 9); ok( binmode(STDERR), 'STDERR made binary' ); @@ -31,6 +32,7 @@ ok( binmode(STDOUT, ":raw"), ' raw' ); ok( binmode(STDOUT, ":crlf"), ' and crlf' ); SKIP: { + skip "minitest", 1 if $ENV{PERL_CORE_MINITEST}; skip "no EBADF", 1 if (!exists &Errno::EBADF); no warnings 'io'; diff --git a/gnu/usr.bin/perl/t/io/crlf.t b/gnu/usr.bin/perl/t/io/crlf.t index 2ee7b831912..be514003a5c 100644 --- a/gnu/usr.bin/perl/t/io/crlf.t +++ b/gnu/usr.bin/perl/t/io/crlf.t @@ -32,9 +32,10 @@ if (find PerlIO::Layer 'perlio') { SKIP: { - eval 'use PerlIO::scalar'; - skip(q/miniperl cannnot load PerlIO::scalar/) - if $@ =~ /dynamic loading not available/; + skip("miniperl can't rely on loading PerlIO::scalar") + if $ENV{PERL_CORE_MINITEST}; + skip("no PerlIO::scalar") unless $Config{extensions} =~ m!\bPerlIO/scalar\b!; + require PerlIO::scalar; my $fcontents = join "", map {"$_\015\012"} "a".."zzz"; open my $fh, "<:crlf", \$fcontents; local $/ = "xxx"; diff --git a/gnu/usr.bin/perl/t/io/layers.t b/gnu/usr.bin/perl/t/io/layers.t index 904ef93fa2b..d0e37a3c8db 100644 --- a/gnu/usr.bin/perl/t/io/layers.t +++ b/gnu/usr.bin/perl/t/io/layers.t @@ -44,8 +44,10 @@ print <<__EOH__; __EOH__ SKIP: { + # FIXME - more of these could be tested without Encode or full perl skip("This perl does not have Encode", $NTEST) unless " $Config{extensions} " =~ / Encode /; + skip("miniperl does not have Encode", $NTEST) if $ENV{PERL_CORE_MINITEST}; sub check { my ($result, $expected, $id) = @_; diff --git a/gnu/usr.bin/perl/t/lib/1_compile.t b/gnu/usr.bin/perl/t/lib/1_compile.t index 6ee59cce2e1..9c378301661 100644 --- a/gnu/usr.bin/perl/t/lib/1_compile.t +++ b/gnu/usr.bin/perl/t/lib/1_compile.t @@ -25,6 +25,9 @@ if (eval { require Socket }) { push @Core_Modules, qw(Net::Cmd Net::POP3); } } +if(eval { require B }) { + push @Core_Modules, qw(B::C B::CC B::Stackobj); +} @Core_Modules = sort @Core_Modules; @@ -66,9 +69,6 @@ sub compile_module { # http://www.pobox.com/~schwern/cgi-bin/perl-qa-wiki.cgi?UntestedModules # and vice-versa. The list should only shrink. __DATA__ -B::C -B::CC -B::Stackobj ByteLoader CPAN::FirstTime DynaLoader diff --git a/gnu/usr.bin/perl/t/lib/strict/refs b/gnu/usr.bin/perl/t/lib/strict/refs index 10599b0bb28..b6a2753360f 100644 --- a/gnu/usr.bin/perl/t/lib/strict/refs +++ b/gnu/usr.bin/perl/t/lib/strict/refs @@ -295,3 +295,9 @@ eval ' my $a = ${"Fred"} ; EXPECT Can't use string ("Fred") as a SCALAR ref while "strict refs" in use at - line 8. +######## +# [perl #26910] hints not propagated into (?{...}) +use strict 'refs'; +/(?{${"foo"}++})/; +EXPECT +Can't use string ("foo") as a SCALAR ref while "strict refs" in use at (re_eval 1) line 1. diff --git a/gnu/usr.bin/perl/t/lib/strict/subs b/gnu/usr.bin/perl/t/lib/strict/subs index 4516de7be34..e53d8b8f4b8 100644 --- a/gnu/usr.bin/perl/t/lib/strict/subs +++ b/gnu/usr.bin/perl/t/lib/strict/subs @@ -361,3 +361,30 @@ print 1..1, bad; EXPECT Bareword "bad" not allowed while "strict subs" in use at - line 3. Execution of - aborted due to compilation errors. +######## +# [perl #25147] +use strict; +print "" if BAREWORD; +EXPECT +Bareword "BAREWORD" not allowed while "strict subs" in use at - line 3. +Execution of - aborted due to compilation errors. +######## +# [perl #26910] hints not propagated into (?{...}) +use strict 'subs'; +qr/(?{my $x=foo})/; +EXPECT +Bareword "foo" not allowed while "strict subs" in use at (re_eval 1) line 1. +Compilation failed in regexp at - line 3. +######## +# [perl #27628] strict 'subs' didn't warn on bareword array index +use strict 'subs'; +my $x=$a[FOO]; +EXPECT +Bareword "FOO" not allowed while "strict subs" in use at - line 3. +Execution of - aborted due to compilation errors. +######## +use strict 'subs'; +my @a;my $x=$a[FOO]; +EXPECT +Bareword "FOO" not allowed while "strict subs" in use at - line 2. +Execution of - aborted due to compilation errors. diff --git a/gnu/usr.bin/perl/t/lib/strict/vars b/gnu/usr.bin/perl/t/lib/strict/vars index de517078be1..c01d79b7b5d 100644 --- a/gnu/usr.bin/perl/t/lib/strict/vars +++ b/gnu/usr.bin/perl/t/lib/strict/vars @@ -421,3 +421,10 @@ no warnings; EXPECT Global symbol "@i_like_crackers" requires explicit package name at - line 7. Execution of - aborted due to compilation errors. +######## +# [perl #26910] hints not propagated into (?{...}) +use strict 'vars'; +qr/(?{$foo++})/; +EXPECT +Global symbol "$foo" requires explicit package name at (re_eval 1) line 1. +Compilation failed in regexp at - line 3. diff --git a/gnu/usr.bin/perl/t/lib/warnings/op b/gnu/usr.bin/perl/t/lib/warnings/op index 4978cea65ec..6d62d54517c 100644 --- a/gnu/usr.bin/perl/t/lib/warnings/op +++ b/gnu/usr.bin/perl/t/lib/warnings/op @@ -528,6 +528,9 @@ Useless use of a variable in void context at - line 6. use warnings 'void' ; "abc"; # OP_CONST 7 ; # OP_CONST +5 || print "bad\n"; # test OPpCONST_SHORTCIRCUIT +use constant U => undef; +print "boo\n" if U; # test OPpCONST_SHORTCIRCUIT no warnings 'void' ; "abc"; # OP_CONST 7 ; # OP_CONST @@ -587,6 +590,7 @@ BEGIN not safe after errors--compilation aborted at - line 18. use warnings 'parenthesis' ; my $a, $b = (1,2); my @foo,%bar, $quux; # there's a TAB here +my $x, $y or print; no warnings 'parenthesis' ; my $c, $d = (1,2); EXPECT diff --git a/gnu/usr.bin/perl/t/lib/warnings/toke b/gnu/usr.bin/perl/t/lib/warnings/toke index b2c15ba1019..e49376c92bd 100644 --- a/gnu/usr.bin/perl/t/lib/warnings/toke +++ b/gnu/usr.bin/perl/t/lib/warnings/toke @@ -799,4 +799,21 @@ use warnings 'ambiguous'; $s = "(@-)(@+)"; EXPECT +######## +# toke.c +# mandatory warning +eval q/if ($a) { } elseif ($b) { }/; +no warnings "syntax"; +eval q/if ($a) { } elseif ($b) { }/; +EXPECT +elseif should be elsif at (eval 1) line 1. +######## +# toke.c +# mandatory warning +eval q/5 6/; +no warnings "syntax"; +eval q/5 6/; +EXPECT +Number found where operator expected at (eval 1) line 1, near "5 6" + (Missing operator before 6?) diff --git a/gnu/usr.bin/perl/t/op/args.t b/gnu/usr.bin/perl/t/op/args.t index bac8fd0301e..4528bfa7bc7 100644 --- a/gnu/usr.bin/perl/t/op/args.t +++ b/gnu/usr.bin/perl/t/op/args.t @@ -1,56 +1,45 @@ #!./perl -print "1..9\n"; +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; +} + +require './test.pl'; +plan( tests => 14 ); # test various operations on @_ -my $ord = 0; sub new1 { bless \@_ } { my $x = new1("x"); my $y = new1("y"); - ++$ord; - print "# got [@$y], expected [y]\nnot " unless "@$y" eq "y"; - print "ok $ord\n"; - ++$ord; - print "# got [@$x], expected [x]\nnot " unless "@$x" eq "x"; - print "ok $ord\n"; + is("@$y","y"); + is("@$x","x"); } sub new2 { splice @_, 0, 0, "a", "b", "c"; return \@_ } { my $x = new2("x"); my $y = new2("y"); - ++$ord; - print "# got [@$x], expected [a b c x]\nnot " unless "@$x" eq "a b c x"; - print "ok $ord\n"; - ++$ord; - print "# got [@$y], expected [a b c y]\nnot " unless "@$y" eq "a b c y"; - print "ok $ord\n"; + is("@$x","a b c x"); + is("@$y","a b c y"); } sub new3 { goto &new1 } { my $x = new3("x"); my $y = new3("y"); - ++$ord; - print "# got [@$y], expected [y]\nnot " unless "@$y" eq "y"; - print "ok $ord\n"; - ++$ord; - print "# got [@$x], expected [x]\nnot " unless "@$x" eq "x"; - print "ok $ord\n"; + is("@$y","y"); + is("@$x","x"); } sub new4 { goto &new2 } { my $x = new4("x"); my $y = new4("y"); - ++$ord; - print "# got [@$x], expected [a b c x]\nnot " unless "@$x" eq "a b c x"; - print "ok $ord\n"; - ++$ord; - print "# got [@$y], expected [a b c y]\nnot " unless "@$y" eq "a b c y"; - print "ok $ord\n"; + is("@$x","a b c x"); + is("@$y","a b c y"); } # see if POPSUB gets to see the right pad across a dounwind() with @@ -71,22 +60,36 @@ sub try { } for (1..5) { try() } -++$ord; -print "ok $ord\n"; +pass(); -# These tests disabled because the change #19064 was retracted. -# http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2003-08/msg01485.html -if (0) { # bug #21542 local $_[0] causes reify problems and coredumps sub local1 { local $_[0] } my $foo = 'foo'; local1($foo); local1($foo); print "got [$foo], expected [foo]\nnot " if $foo ne 'foo'; -$ord++; -print "ok $ord\n"; +pass(); sub local2 { local $_[0]; last L } L: { local2 } -$ord++; -print "ok $ord\n"; +pass(); + +# blead has 9 tests for local(@_) from in t/op/nothr5005.t inserted here + +# [perl #28032] delete $_[0] was freeing things too early + +{ + my $flag = 0; + sub X::DESTROY { $flag = 1 } + sub f { + delete $_[0]; + ok(!$flag, 'delete $_[0] : in f'); + } + { + my $x = bless [], 'X'; + f($x); + ok(!$flag, 'delete $_[0] : after f'); + } + ok($flag, 'delete $_[0] : outside block'); } + + diff --git a/gnu/usr.bin/perl/t/op/concat.t b/gnu/usr.bin/perl/t/op/concat.t index 865a498f221..5ef40dd8c17 100644 --- a/gnu/usr.bin/perl/t/op/concat.t +++ b/gnu/usr.bin/perl/t/op/concat.t @@ -18,7 +18,7 @@ sub ok { return $ok; } -print "1..20\n"; +print "1..28\n"; ($a, $b, $c) = qw(foo bar); @@ -117,3 +117,32 @@ sub beq { use bytes; $_[0] eq $_[1]; } $y = ($x = '' . strfoo()) . "y"; ok( "$x,$y" eq "x,xy", 'figures out correct target' ); } + +{ + # [perl #26905] "use bytes" doesn't apply byte semantics to concatenation + + my $p = "\xB6"; # PILCROW SIGN (ASCII/EBCDIC), 2bytes in UTF-X + my $u = "\x{100}"; + my $b = pack 'a*', "\x{100}"; + my $pu = "\xB6\x{100}"; + my $up = "\x{100}\xB6"; + my $x1 = $p; + my $y1 = $u; + + use bytes; + ok(beq($p.$u, $p.$b), "perl #26905, left eq bytes"); + ok(beq($u.$p, $b.$p), "perl #26905, right eq bytes"); + ok(!beq($p.$u, $pu), "perl #26905, left ne unicode"); + ok(!beq($u.$p, $up), "perl #26905, right ne unicode"); + + $x1 .= $u; + $x2 = $p . $u; + $y1 .= $p; + $y2 = $u . $p; + + no bytes; + ok(beq($x1, $x2), "perl #26905, left, .= vs = . in bytes"); + ok(beq($y1, $y2), "perl #26905, right, .= vs = . in bytes"); + ok(($x1 eq $x2), "perl #26905, left, .= vs = . in chars"); + ok(($y1 eq $y2), "perl #26905, right, .= vs = . in chars"); +} diff --git a/gnu/usr.bin/perl/t/op/filetest.t b/gnu/usr.bin/perl/t/op/filetest.t index fcded7ad037..b080d57683a 100644 --- a/gnu/usr.bin/perl/t/op/filetest.t +++ b/gnu/usr.bin/perl/t/op/filetest.t @@ -6,47 +6,40 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require './test.pl'; } use Config; -print "1..10\n"; +plan(tests => 10); -print "not " unless -d 'op'; -print "ok 1\n"; - -print "not " unless -f 'TEST'; -print "ok 2\n"; - -print "not " if -f 'op'; -print "ok 3\n"; - -print "not " if -d 'TEST'; -print "ok 4\n"; - -print "not " unless -r 'TEST'; -print "ok 5\n"; +ok( -d 'op' ); +ok( -f 'TEST' ); +ok( !-f 'op' ); +ok( !-d 'TEST' ); +ok( -r 'TEST' ); # make sure TEST is r-x -eval { chmod 0555, 'TEST' }; -$bad_chmod = $@; +eval { chmod 0555, 'TEST' or die "chmod 0555, 'TEST' failed: $!" }; +chomp ($bad_chmod = $@); $oldeuid = $>; # root can read and write anything eval '$> = 1'; # so switch uid (may not be implemented) print "# oldeuid = $oldeuid, euid = $>\n"; -if (!$Config{d_seteuid}) { - print "ok 6 #skipped, no seteuid\n"; -} -elsif ($Config{config_args} =~/Dmksymlinks/) { - print "ok 6 #skipped, we cannot chmod symlinks\n"; -} -elsif ($bad_chmod) { - print "#[$@]\nok 6 #skipped\n"; -} -else { - print "not " if -w 'TEST'; - print "ok 6\n"; +SKIP: { + if (!$Config{d_seteuid}) { + skip('no seteuid'); + } + elsif ($Config{config_args} =~/Dmksymlinks/) { + skip('we cannot chmod symlinks'); + } + elsif ($bad_chmod) { + skip( $bad_chmod ); + } + else { + ok( !-w 'TEST' ); + } } # Scripts are not -x everywhere so cannot test that. @@ -55,20 +48,18 @@ eval '$> = $oldeuid'; # switch uid back (may not be implemented) # this would fail for the euid 1 # (unless we have unpacked the source code as uid 1...) -print "not " unless -r 'op'; -print "ok 7\n"; +ok( -r 'op' ); # this would fail for the euid 1 # (unless we have unpacked the source code as uid 1...) -if ($Config{d_seteuid}) { - print "not " unless -w 'op'; - print "ok 8\n"; -} else { - print "ok 8 #skipped, no seteuid\n"; +SKIP: { + if ($Config{d_seteuid}) { + ok( -w 'op' ); + } else { + skip('no seteuid'); + } } -print "not " unless -x 'op'; # Hohum. Are directories -x everywhere? -print "ok 9\n"; +ok( -x 'op' ); # Hohum. Are directories -x everywhere? -print "not " unless "@{[grep -r, qw(foo io noo op zoo)]}" eq "io op"; -print "ok 10\n"; +is( "@{[grep -r, qw(foo io noo op zoo)]}", "io op" ); diff --git a/gnu/usr.bin/perl/t/op/getpid.t b/gnu/usr.bin/perl/t/op/getpid.t index a2c5f5f0e20..b51b0646fca 100644 --- a/gnu/usr.bin/perl/t/op/getpid.t +++ b/gnu/usr.bin/perl/t/op/getpid.t @@ -20,11 +20,11 @@ BEGIN { print "1..0 # Skip: no getppid\n"; exit; } - eval 'use threads; use threads::shared'; - if ($@ =~ /dynamic loading not available/) { - print "1..0 # Skip: no dynamic loading, no threads\n"; - exit; + if ($ENV{PERL_CORE_MINITEST}) { + print "1..0 # Skip: no dynamic loading on miniperl, no threads\n"; + exit 0; } + eval 'use threads; use threads::shared'; plan tests => 3; if ($@) { fail("unable to load thread modules"); diff --git a/gnu/usr.bin/perl/t/op/grep.t b/gnu/usr.bin/perl/t/op/grep.t index 4696224c449..3e5d7168a0d 100644 --- a/gnu/usr.bin/perl/t/op/grep.t +++ b/gnu/usr.bin/perl/t/op/grep.t @@ -4,7 +4,7 @@ # grep() and map() tests # -print "1..37\n"; +print "1..38\n"; $test = 1; @@ -162,3 +162,8 @@ sub ok { undef $gimme; map { gimme } @list; ok($gimme, 'list'); $test++; } +{ + # This shouldn't loop indefinitively. + my @empty = map { while (1) {} } (); + ok("@empty", ''); +} diff --git a/gnu/usr.bin/perl/t/op/localref.t b/gnu/usr.bin/perl/t/op/localref.t index 9379575ede9..3f4934423e0 100644 --- a/gnu/usr.bin/perl/t/op/localref.t +++ b/gnu/usr.bin/perl/t/op/localref.t @@ -3,7 +3,7 @@ chdir 't' if -d 't'; @INC = qw(. ../lib); require "test.pl"; -plan( tests => 63 ); +plan( tests => 64 ); $aa = 1; { local $aa; $aa = 2; is($aa,2); } @@ -83,3 +83,17 @@ eval { local %$y; }; test_err_localref; eval { local %{$y}; }; test_err_localref; eval { local %{\%aa}; }; test_err_localref; eval { local %{{a=>1}}; };test_err_localref; + + +{ + # [perl #27638] when restoring a localized variable, the thing being + # freed shouldn't be visible + my $ok; + $x = 0; + sub X::DESTROY { $ok = !ref($x); } + { + local $x = \ bless {}, 'X'; + 1; + } +ok($ok,'old value not visible during restore'); +} diff --git a/gnu/usr.bin/perl/t/op/loopctl.t b/gnu/usr.bin/perl/t/op/loopctl.t index 2ed9df1432b..bc326c7b1a3 100644 --- a/gnu/usr.bin/perl/t/op/loopctl.t +++ b/gnu/usr.bin/perl/t/op/loopctl.t @@ -31,7 +31,7 @@ # # -- .robin. 2001-03-13 -print "1..41\n"; +print "1..43\n"; my $ok; @@ -944,3 +944,26 @@ TEST41: { $ok = 0; } print ($ok ? "ok 41\n" : "not ok 41\n"); + + +# [perl #27206] Memory leak in continue loop +# Ensure that the temporary object is freed each time round the loop, +# rather then all 10 of them all being freed right at the end + +{ + my $n=10; my $late_free = 0; + sub X::DESTROY { $late_free++ if $n < 0 }; + { + ($n-- && bless {}, 'X') && redo; + } + print $late_free ? "not " : "", "ok 42 - redo memory leak\n"; + + $n = 10; $late_free = 0; + { + ($n-- && bless {}, 'X') && redo; + } + continue { } + print $late_free ? "not " : "", "ok 43 - redo with continue memory leak\n"; +} + + diff --git a/gnu/usr.bin/perl/t/op/utfhash.t b/gnu/usr.bin/perl/t/op/utfhash.t index 9e0196b6b8f..33909c0cbc7 100644 --- a/gnu/usr.bin/perl/t/op/utfhash.t +++ b/gnu/usr.bin/perl/t/op/utfhash.t @@ -32,8 +32,9 @@ is($hashu{"\xff"},0xFF); is($hashu{"\x7f"},0x7F); # Now try same thing with variables forced into various forms. -foreach my $a ("\x7f","\xff") +foreach ("\x7f","\xff") { + my $a = $_; # Force a copy utf8::upgrade($a); is($hash8{$a},ord($a)); is($hashu{$a},ord($a)); @@ -56,8 +57,9 @@ $hash8{chr(0x1ff)} = 0x1ff; # Check we have not got an spurious extra keys is(join('',sort { ord $a <=> ord $b } keys %hash8),"\x7f\xff\x{1ff}"); -foreach my $a ("\x7f","\xff","\x{1ff}") +foreach ("\x7f","\xff","\x{1ff}") { + my $a = $_; utf8::upgrade($a); is($hash8{$a},ord($a)); my $b = $a.chr(100); @@ -69,8 +71,9 @@ foreach my $a ("\x7f","\xff","\x{1ff}") is(delete $hashu{chr(0x1ff)},0x1ff); is(join('',sort keys %hashu),"\x7f\xff"); -foreach my $a ("\x7f","\xff") +foreach ("\x7f","\xff") { + my $a = $_; utf8::upgrade($a); is($hashu{$a},ord($a)); utf8::downgrade($a); diff --git a/gnu/usr.bin/perl/t/op/utftaint.t b/gnu/usr.bin/perl/t/op/utftaint.t new file mode 100644 index 00000000000..cd44503e749 --- /dev/null +++ b/gnu/usr.bin/perl/t/op/utftaint.t @@ -0,0 +1,186 @@ +#!./perl -T +# tests whether tainting works with UTF-8 + +BEGIN { + if ($ENV{PERL_CORE_MINITEST}) { + print "1..0 # Skip: no dynamic loading on miniperl, no threads\n"; + exit 0; + } + chdir 't' if -d 't'; + @INC = qw(../lib); +} + +use strict; +use Config; + +BEGIN { + if ($Config{extensions} !~ m(\bList/Util\b)) { + print "1..0 # Skip: no Scalar::Util module\n"; + exit 0; + } +} + +use Scalar::Util qw(tainted); + +use Test; +plan tests => 3*10 + 3*8 + 2*16; +my $cnt = 0; + +my $arg = $ENV{PATH}; # a tainted value +use constant UTF8 => "\x{1234}"; + +sub is_utf8 { + my $s = shift; + return 0xB6 != ord pack('a*', chr(0xB6).$s); +} + +for my $ary ([ascii => 'perl'], [latin1 => "\xB6"], [utf8 => "\x{100}"]) { + my $encode = $ary->[0]; + my $string = $ary->[1]; + + my $taint = $arg; substr($taint, 0) = $ary->[1]; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, before test\n"; + + my $lconcat = $taint; + $lconcat .= UTF8; + print $lconcat eq $string.UTF8 + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, concat left\n"; + + print tainted($lconcat) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, concat left\n"; + + my $rconcat = UTF8; + $rconcat .= $taint; + print $rconcat eq UTF8.$string + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, concat right\n"; + + print tainted($rconcat) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, concat right\n"; + + my $ljoin = join('!', $taint, UTF8); + print $ljoin eq join('!', $string, UTF8) + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, join left\n"; + + print tainted($ljoin) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, join left\n"; + + my $rjoin = join('!', UTF8, $taint); + print $rjoin eq join('!', UTF8, $string) + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, join right\n"; + + print tainted($rjoin) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, join right\n"; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, after test\n"; +} + + +for my $ary ([ascii => 'perl'], [latin1 => "\xB6"], [utf8 => "\x{100}"]) { + my $encode = $ary->[0]; + + my $utf8 = pack('U*') . $ary->[1]; + my $byte = pack('C0a*', $utf8); + + my $taint = $arg; substr($taint, 0) = $utf8; + utf8::encode($taint); + + print $taint eq $byte + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, encode utf8\n"; + + print pack('a*',$taint) eq pack('a*',$byte) + ? "ok " : "not ok ", ++$cnt, " # bytecmp: $encode, encode utf8\n"; + + print !is_utf8($taint) + ? "ok " : "not ok ", ++$cnt, " # is_utf8: $encode, encode utf8\n"; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, encode utf8\n"; + + my $taint = $arg; substr($taint, 0) = $byte; + utf8::decode($taint); + + print $taint eq $utf8 + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, decode byte\n"; + + print pack('a*',$taint) eq pack('a*',$utf8) + ? "ok " : "not ok ", ++$cnt, " # bytecmp: $encode, decode byte\n"; + + print is_utf8($taint) eq ($encode ne 'ascii') + ? "ok " : "not ok ", ++$cnt, " # is_utf8: $encode, decode byte\n"; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, decode byte\n"; +} + + +for my $ary ([ascii => 'perl'], [latin1 => "\xB6"]) { + my $encode = $ary->[0]; + + my $up = pack('U*') . $ary->[1]; + my $down = pack('C0a*', $ary->[1]); + + my $taint = $arg; substr($taint, 0) = $up; + utf8::upgrade($taint); + + print $taint eq $up + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, upgrade up\n"; + + print pack('a*',$taint) eq pack('a*',$up) + ? "ok " : "not ok ", ++$cnt, " # bytecmp: $encode, upgrade up\n"; + + print is_utf8($taint) + ? "ok " : "not ok ", ++$cnt, " # is_utf8: $encode, upgrade up\n"; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, upgrade up\n"; + + my $taint = $arg; substr($taint, 0) = $down; + utf8::upgrade($taint); + + print $taint eq $up + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, upgrade down\n"; + + print pack('a*',$taint) eq pack('a*',$up) + ? "ok " : "not ok ", ++$cnt, " # bytecmp: $encode, upgrade down\n"; + + print is_utf8($taint) + ? "ok " : "not ok ", ++$cnt, " # is_utf8: $encode, upgrade down\n"; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, upgrade down\n"; + + my $taint = $arg; substr($taint, 0) = $up; + utf8::downgrade($taint); + + print $taint eq $down + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, downgrade up\n"; + + print pack('a*',$taint) eq pack('a*',$down) + ? "ok " : "not ok ", ++$cnt, " # bytecmp: $encode, downgrade up\n"; + + print !is_utf8($taint) + ? "ok " : "not ok ", ++$cnt, " # is_utf8: $encode, downgrade up\n"; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, downgrade up\n"; + + my $taint = $arg; substr($taint, 0) = $down; + utf8::downgrade($taint); + + print $taint eq $down + ? "ok " : "not ok ", ++$cnt, " # compare: $encode, downgrade down\n"; + + print pack('a*',$taint) eq pack('a*',$down) + ? "ok " : "not ok ", ++$cnt, " # bytecmp: $encode, downgrade down\n"; + + print !is_utf8($taint) + ? "ok " : "not ok ", ++$cnt, " # is_utf8: $encode, downgrade down\n"; + + print tainted($taint) == tainted($arg) + ? "ok " : "not ok ", ++$cnt, " # tainted: $encode, downgrade down\n"; +} + + diff --git a/gnu/usr.bin/perl/t/op/wantarray.t b/gnu/usr.bin/perl/t/op/wantarray.t index 28936f419cc..350270d11c2 100644 --- a/gnu/usr.bin/perl/t/op/wantarray.t +++ b/gnu/usr.bin/perl/t/op/wantarray.t @@ -1,6 +1,6 @@ #!./perl -print "1..9\n"; +print "1..12\n"; sub context { my ( $cona, $testnum ) = @_; my $conb = (defined wantarray) ? ( wantarray ? 'A' : 'S' ) : 'V'; @@ -31,4 +31,14 @@ $a = scalar context('S',5); print +($c == 2) ? "ok 9\n" : "not ok 9\t# <$c>\n"; } +my $qcontext = q{ + $q = (defined wantarray) ? ( wantarray ? 'A' : 'S' ) : 'V'; +}; +eval $qcontext; +print $q eq 'V' ? "ok 10\n" : "not ok 10\n"; +$a = eval $qcontext; +print $q eq 'S' ? "ok 11\n" : "not ok 11\n"; +@a = eval $qcontext; +print $q eq 'A' ? "ok 12\n" : "not ok 12\n"; + 1; diff --git a/gnu/usr.bin/perl/t/run/switch0.t b/gnu/usr.bin/perl/t/run/switch0.t new file mode 100644 index 00000000000..9919e1231a2 --- /dev/null +++ b/gnu/usr.bin/perl/t/run/switch0.t @@ -0,0 +1,3 @@ +#!./perl -0 +print "1..1\n"; +print ord $/ == 0 ? "ok 1\n" : "not ok 1\n"; diff --git a/gnu/usr.bin/perl/t/test.pl b/gnu/usr.bin/perl/t/test.pl index 15202853714..94071292715 100644 --- a/gnu/usr.bin/perl/t/test.pl +++ b/gnu/usr.bin/perl/t/test.pl @@ -235,21 +235,18 @@ sub within ($$$@) { } # Note: this isn't quite as fancy as Test::More::like(). -sub like ($$@) { - my ($got, $expected, $name, @mess) = @_; + +sub like ($$@) { like_yn (0,@_) }; # 0 for - +sub unlike ($$@) { like_yn (1,@_) }; # 1 for un- + +sub like_yn ($$$@) { + my ($flip, $got, $expected, $name, @mess) = @_; my $pass; - if (ref $expected eq 'Regexp') { - $pass = $got =~ $expected; - unless ($pass) { - unshift(@mess, "# got '$got'\n", - "# expected /$expected/\n"); - } - } else { - $pass = $got =~ /$expected/; - unless ($pass) { - unshift(@mess, "# got '$got'\n", - "# expected /$expected/\n"); - } + $pass = $got =~ /$expected/ if !$flip; + $pass = $got !~ /$expected/ if $flip; + unless ($pass) { + unshift(@mess, "# got '$got'\n", + "# expected /$expected/\n"); } _ok($pass, _where(), $name, @mess); } diff --git a/gnu/usr.bin/perl/t/uni/case.pl b/gnu/usr.bin/perl/t/uni/case.pl index b6df5a8089b..0402be402f9 100644 --- a/gnu/usr.bin/perl/t/uni/case.pl +++ b/gnu/usr.bin/perl/t/uni/case.pl @@ -20,15 +20,15 @@ sub casetest { my %seen; for my $i (sort keys %simple) { - $seen{hex $i}++; + $seen{$i}++; } print "# ", scalar keys %simple, " simple mappings\n"; my $both; for my $i (sort keys %$spec) { - if (++$seen{hex $i} == 2) { - warn "$base: $i seen twice\n"; + if (++$seen{$i} == 2) { + warn sprintf "$base: $i seen twice\n"; $both++; } } @@ -52,7 +52,7 @@ sub casetest { my $test = 1; - for my $i (sort { hex $a <=> hex $b } keys %simple) { + for my $i (sort keys %simple) { my $w = $simple{$i}; my $c = pack "U0U", hex $i; my $d = $func->($c); @@ -62,9 +62,11 @@ sub casetest { $test++; } - for my $i (sort { hex $a <=> hex $b } keys %$spec) { + for my $i (sort keys %$spec) { my $w = unidump($spec->{$i}); - my $c = pack "U0U", hex $i; + my $u = unpack "U0U", $i; + my $h = sprintf "%04X", $u; + my $c = chr($u); $c .= chr(0x100); chop $c; my $d = $func->($c); my $e = unidump($d); if (ord "A" == 193) { # EBCDIC @@ -116,7 +118,7 @@ sub casetest { # just undo our remapping. } print $w eq $e ? - "ok $test # $i -> $w\n" : "not ok $test # $i -> $e ($w)\n"; + "ok $test # $i -> $w\n" : "not ok $test # $h -> $e ($w)\n"; $test++; } diff --git a/gnu/usr.bin/perl/t/uni/chomp.t b/gnu/usr.bin/perl/t/uni/chomp.t new file mode 100644 index 00000000000..5f52558ab61 --- /dev/null +++ b/gnu/usr.bin/perl/t/uni/chomp.t @@ -0,0 +1,88 @@ +#!./perl -w + +BEGIN { + if ($ENV{'PERL_CORE'}){ + chdir 't'; + @INC = '../lib'; + } + require Config; import Config; + if ($Config{'extensions'} !~ /\bEncode\b/) { + print "1..0 # Skip: Encode was not built\n"; + exit 0; + } + if (ord("A") == 193) { + print "1..0 # Skip: EBCDIC\n"; + exit 0; + } + unless (PerlIO::Layer->find('perlio')){ + print "1..0 # Skip: PerlIO required\n"; + exit 0; + } + if ($ENV{PERL_CORE_MINITEST}) { + print "1..0 # Skip: no dynamic loading on miniperl, no Encode\n"; + exit 0; + } +} + +use Encode; +use strict; +use Test::More; + +# %mbchars = (encoding => { bytes => utf8, ... }, ...); +# * pack('C*') is expected to return bytes even if ${^ENCODING} is true. +our %mbchars = ( + 'big-5' => { + pack('C*', 0x40) => pack('U*', 0x40), # COMMERCIAL AT + pack('C*', 0xA4, 0x40) => "\x{4E00}", # CJK-4E00 + }, + 'euc-jp' => { + pack('C*', 0xB0, 0xA1) => "\x{4E9C}", # CJK-4E9C + pack('C*', 0x8F, 0xB0, 0xA1) => "\x{4E02}", # CJK-4E02 + }, + 'shift-jis' => { + pack('C*', 0xA9) => "\x{FF69}", # halfwidth katakana small U + pack('C*', 0x82, 0xA9) => "\x{304B}", # hiragana KA + }, +); + +# 4 == @char; paired tests inside 3 nested loops, +# plus extra pair of tests in a loop, plus extra pair of tests. +plan tests => 2 * (4 ** 3 + 4 + 1) * (keys %mbchars); + +for my $enc (sort keys %mbchars) { + local ${^ENCODING} = find_encoding($enc); + my @char = (sort(keys %{ $mbchars{$enc} }), + sort(values %{ $mbchars{$enc} })); + + for my $rs (@char) { + local $/ = $rs; + for my $start (@char) { + for my $end (@char) { + my $string = $start.$end; + my ($expect, $return); + if ($end eq $rs) { + $expect = $start; + # The answer will always be a length in utf8, even if the + # scalar was encoded with a different length + $return = length ($end . "\x{100}") - 1; + } else { + $expect = $string; + $return = 0; + } + is (chomp ($string), $return); + is ($string, $expect); # "$enc \$/=$rs $start $end" + } + } + # chomp should not stringify references unless it decides to modify + # them + $_ = []; + my $got = chomp(); + is ($got, 0); + is (ref($_), "ARRAY", "chomp ref (no modify)"); + } + + $/ = ")"; # the last char of something like "ARRAY(0x80ff6e4)" + my $got = chomp(); + is ($got, 1); + ok (!ref($_), "chomp ref (modify)"); +} diff --git a/gnu/usr.bin/perl/t/uni/class.t b/gnu/usr.bin/perl/t/uni/class.t new file mode 100644 index 00000000000..130b720eacc --- /dev/null +++ b/gnu/usr.bin/perl/t/uni/class.t @@ -0,0 +1,166 @@ +BEGIN { + chdir 't' if -d 't'; + @INC = qw(../lib .); + require "test.pl"; +} + +plan tests => 4334; + +sub MyUniClass { + <?@ABCDEFGHIJKLMNO'); + +# make sure it finds class in other package +is(($str =~ /(\p{Other::Class}+)/)[0], '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'); + +# make sure it finds class in other OTHER package +is(($str =~ /(\p{A::B::Intersection}+)/)[0], '@ABCDEFGHIJKLMNO'); + +# all of these should look in lib/unicore/bc/AL.pl +$str = "\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}"; +is(($str =~ /(\P{BidiClass: ArabicLetter}+)/)[0], "\x{070E}\x{070F}"); +is(($str =~ /(\P{BidiClass: AL}+)/)[0], "\x{070E}\x{070F}"); +is(($str =~ /(\P{BC :ArabicLetter}+)/)[0], "\x{070E}\x{070F}"); +is(($str =~ /(\P{bc=AL}+)/)[0], "\x{070E}\x{070F}"); + +# make sure InGreek works +$str = "[\x{038B}\x{038C}\x{038D}]"; + +is(($str =~ /(\p{InGreek}+)/)[0], "\x{038B}\x{038C}\x{038D}"); +is(($str =~ /(\p{Script:InGreek}+)/)[0], "\x{038B}\x{038C}\x{038D}"); +is(($str =~ /(\p{Script=InGreek}+)/)[0], "\x{038B}\x{038C}\x{038D}"); +is(($str =~ /(\p{sc:InGreek}+)/)[0], "\x{038B}\x{038C}\x{038D}"); +is(($str =~ /(\p{sc=InGreek}+)/)[0], "\x{038B}\x{038C}\x{038D}"); + + +use File::Spec; +my $updir = File::Spec->updir; + + +# the %utf8::... hashes are already in existence +# because utf8_pva.pl was run by utf8_heavy.pl + +# non-General Category and non-Script +while (my ($abbrev, $files) = each %utf8::PVA_abbr_map) { + my $prop_name = $utf8::PropertyAlias{$abbrev}; + next unless $prop_name; + next if $abbrev eq "gc_sc"; + + for (sort keys %$files) { + my $filename = File::Spec->catfile( + $updir => lib => unicore => lib => $abbrev => "$files->{$_}.pl" + ); + + next unless -e $filename; + my ($h1, $h2) = map hex, split /\t/, (do $filename); + my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + + for my $p ($prop_name, $abbrev) { + for my $c ($files->{$_}, $_) { + is($str =~ /(\p{$p: $c}+)/ && $1, substr($str, 0, -1)); + is($str =~ /(\P{$p= $c}+)/ && $1, substr($str, -1)); + } + } + } +} + +# General Category and Script +for my $p ('gc', 'sc') { + while (my ($abbr) = each %{ $utf8::PropValueAlias{$p} }) { + my $filename = File::Spec->catfile( + $updir => lib => unicore => lib => gc_sc => "$utf8::PVA_abbr_map{gc_sc}{$abbr}.pl" + ); + + next unless -e $filename; + my ($h1, $h2) = map hex, split /\t/, (do $filename); + my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + + for my $x ($p, { gc => 'General Category', sc => 'Script' }->{$p}) { + for my $y ($abbr, $utf8::PropValueAlias{$p}{$abbr}, $utf8::PVA_abbr_map{gc_sc}{$abbr}) { + is($str =~ /(\p{$x: $y}+)/ && $1, substr($str, 0, -1)); + is($str =~ /(\P{$x= $y}+)/ && $1, substr($str, -1)); + is($str =~ /(\p{$y}+)/ && $1, substr($str, 0, -1)); + is($str =~ /(\P{$y}+)/ && $1, substr($str, -1)); + } + } + } +} + +# test extra properties (ASCII_Hex_Digit, Bidi_Control, etc.) +{ + # Aargh. Nasty case insensitive filesystems mean that Cf.pl will cause a -e + # test for cf.pl to return true. So need to read the filenames explicitly + # to get a case sensitive test + my %files; + + my $dirname = File::Spec->catdir($updir => lib => unicore => lib => gc_sc); + opendir D, $dirname or die $!; + @files{readdir D} = (); + closedir D; + + for (keys %utf8::PA_reverse) { + my $leafname = "$utf8::PA_reverse{$_}.pl"; + next unless exists $files{$leafname}; + + my $filename = File::Spec->catfile($dirname, $leafname); + + my ($h1, $h2) = map hex, split /\t/, (do $filename); + my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + + for my $x ('gc', 'General Category') { + print "# $filename $x $_, $utf8::PA_reverse{$_}\n"; + for my $y ($_, $utf8::PA_reverse{$_}) { + is($str =~ /(\p{$x: $y}+)/ && $1, substr($str, 0, -1)); + is($str =~ /(\P{$x= $y}+)/ && $1, substr($str, -1)); + is($str =~ /(\p{$y}+)/ && $1, substr($str, 0, -1)); + is($str =~ /(\P{$y}+)/ && $1, substr($str, -1)); + } + } + } +} + +# test the blocks (InFoobar) +for (grep $utf8::Canonical{$_} =~ /^In/, keys %utf8::Canonical) { + my $filename = File::Spec->catfile( + $updir => lib => unicore => lib => gc_sc => "$utf8::Canonical{$_}.pl" + ); + + next unless -e $filename; + my ($h1, $h2) = map hex, split /\t/, (do $filename); + my $str = join "", map chr, $h1 .. (($h2 || $h1) + 1); + + my $blk = $_; + + is($str =~ /(\p{$blk}+)/ && $1, substr($str, 0, -1)); + is($str =~ /(\P{$blk}+)/ && $1, substr($str, -1)); + + $blk =~ s/^In/Block:/; + + is($str =~ /(\p{$blk}+)/ && $1, substr($str, 0, -1)); + is($str =~ /(\P{$blk}+)/ && $1, substr($str, -1)); +} diff --git a/gnu/usr.bin/perl/t/win32/getosversion.t b/gnu/usr.bin/perl/t/win32/getosversion.t new file mode 100644 index 00000000000..2a708cb80a4 --- /dev/null +++ b/gnu/usr.bin/perl/t/win32/getosversion.t @@ -0,0 +1,13 @@ +#!perl -w + +# tests for Win32::GetOSVersion() + +$^O =~ /^MSWin/ or print("1..0 # not win32\n" ), exit; + +print "1..1\n"; + +my $scalar = Win32::GetOSVersion(); +my @array = Win32::GetOSVersion(); + +print "not " unless $scalar == $array[4]; +print "ok 1\n"; diff --git a/gnu/usr.bin/perl/thread.h b/gnu/usr.bin/perl/thread.h index 7531f5b41de..e7baf723c79 100644 --- a/gnu/usr.bin/perl/thread.h +++ b/gnu/usr.bin/perl/thread.h @@ -1,6 +1,6 @@ /* thread.h * - * Copyright (C) 1999, 2000, 2001, 2002, by Larry Wall and others + * Copyright (C) 1999, 2000, 2001, 2002, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -22,9 +22,11 @@ # ifdef OLD_PTHREADS_API /* Here be dragons. */ # define DETACH(t) \ STMT_START { \ - if (pthread_detach(&(t)->self)) { \ + int _eC_; \ + if ((_eC_ = pthread_detach(&(t)->self))) { \ MUTEX_UNLOCK(&(t)->mutex); \ - Perl_croak_nocontext("panic: DETACH"); \ + Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } \ } STMT_END @@ -107,7 +109,8 @@ if (*m) { \ mutex_init(*m); \ } else { \ - Perl_croak_nocontext("panic: MUTEX_INIT"); \ + Perl_croak_nocontext("panic: MUTEX_INIT [%s:%d]", \ + __FILE__, __LINE__); \ } \ } STMT_END @@ -126,7 +129,8 @@ condition_init(*c); \ } \ else { \ - Perl_croak_nocontext("panic: COND_INIT"); \ + Perl_croak_nocontext("panic: COND_INIT [%s:%d]", \ + __FILE__, __LINE__); \ } \ } STMT_END @@ -185,66 +189,86 @@ /* Temporary workaround, true bug is deeper. --jhi 1999-02-25 */ # define MUTEX_INIT(m) \ STMT_START { \ + int _eC_; \ Zero((m), 1, perl_mutex); \ - if (pthread_mutex_init((m), pthread_mutexattr_default)) \ - Perl_croak_nocontext("panic: MUTEX_INIT"); \ + if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \ + Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # else # define MUTEX_INIT(m) \ STMT_START { \ - if (pthread_mutex_init((m), pthread_mutexattr_default)) \ - Perl_croak_nocontext("panic: MUTEX_INIT"); \ + int _eC_; \ + if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \ + Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # endif # define MUTEX_LOCK(m) \ STMT_START { \ - if (pthread_mutex_lock((m))) \ - Perl_croak_nocontext("panic: MUTEX_LOCK"); \ + int _eC_; \ + if ((_eC_ = pthread_mutex_lock((m)))) \ + Perl_croak_nocontext("panic: MUTEX_LOCK (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define MUTEX_UNLOCK(m) \ STMT_START { \ - if (pthread_mutex_unlock((m))) \ - Perl_croak_nocontext("panic: MUTEX_UNLOCK"); \ + int _eC_; \ + if ((_eC_ = pthread_mutex_unlock((m)))) \ + Perl_croak_nocontext("panic: MUTEX_UNLOCK (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define MUTEX_DESTROY(m) \ STMT_START { \ - if (pthread_mutex_destroy((m))) \ - Perl_croak_nocontext("panic: MUTEX_DESTROY"); \ + int _eC_; \ + if ((_eC_ = pthread_mutex_destroy((m)))) \ + Perl_croak_nocontext("panic: MUTEX_DESTROY (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* MUTEX_INIT */ #ifndef COND_INIT # define COND_INIT(c) \ STMT_START { \ - if (pthread_cond_init((c), pthread_condattr_default)) \ - Perl_croak_nocontext("panic: COND_INIT"); \ + int _eC_; \ + if ((_eC_ = pthread_cond_init((c), pthread_condattr_default))) \ + Perl_croak_nocontext("panic: COND_INIT (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_SIGNAL(c) \ STMT_START { \ - if (pthread_cond_signal((c))) \ - Perl_croak_nocontext("panic: COND_SIGNAL"); \ + int _eC_; \ + if ((_eC_ = pthread_cond_signal((c)))) \ + Perl_croak_nocontext("panic: COND_SIGNAL (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_BROADCAST(c) \ STMT_START { \ - if (pthread_cond_broadcast((c))) \ - Perl_croak_nocontext("panic: COND_BROADCAST"); \ + int _eC_; \ + if ((_eC_ = pthread_cond_broadcast((c)))) \ + Perl_croak_nocontext("panic: COND_BROADCAST (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_WAIT(c, m) \ STMT_START { \ - if (pthread_cond_wait((c), (m))) \ - Perl_croak_nocontext("panic: COND_WAIT"); \ + int _eC_; \ + if ((_eC_ = pthread_cond_wait((c), (m)))) \ + Perl_croak_nocontext("panic: COND_WAIT (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_DESTROY(c) \ STMT_START { \ - if (pthread_cond_destroy((c))) \ - Perl_croak_nocontext("panic: COND_DESTROY"); \ + int _eC_; \ + if ((_eC_ = pthread_cond_destroy((c)))) \ + Perl_croak_nocontext("panic: COND_DESTROY (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* COND_INIT */ @@ -252,9 +276,11 @@ #ifndef DETACH # define DETACH(t) \ STMT_START { \ - if (pthread_detach((t)->self)) { \ + int _eC_; \ + if ((_eC_ = pthread_detach((t)->self))) { \ MUTEX_UNLOCK(&(t)->mutex); \ - Perl_croak_nocontext("panic: DETACH"); \ + Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } \ } STMT_END #endif /* DETACH */ @@ -262,8 +288,10 @@ #ifndef JOIN # define JOIN(t, avp) \ STMT_START { \ - if (pthread_join((t)->self, (void**)(avp))) \ - Perl_croak_nocontext("panic: pthread_join"); \ + int _eC_; \ + if ((_eC_ = pthread_join((t)->self, (void**)(avp)))) \ + Perl_croak_nocontext("panic: pthread_join (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* JOIN */ @@ -288,8 +316,10 @@ #ifndef PERL_SET_CONTEXT # define PERL_SET_CONTEXT(t) \ STMT_START { \ - if (pthread_setspecific(PL_thr_key, (void *)(t))) \ - Perl_croak_nocontext("panic: pthread_setspecific"); \ + int _eC_; \ + if ((_eC_ = pthread_setspecific(PL_thr_key, (void *)(t)))) \ + Perl_croak_nocontext("panic: pthread_setspecific (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* PERL_SET_CONTEXT */ @@ -302,8 +332,10 @@ #ifndef ALLOC_THREAD_KEY # define ALLOC_THREAD_KEY \ STMT_START { \ - if (pthread_key_create(&PL_thr_key, 0)) { \ - PerlIO_printf(PerlIO_stderr(), "panic: pthread_key_create"); \ + int _eC_; \ + if ((_eC_ = pthread_key_create(&PL_thr_key, 0))) { \ + PerlIO_printf(PerlIO_stderr(), "panic: pthread_key_create (%d) [%s:%d]", \ + _eC_, __FILE__, __LINE__); \ exit(1); \ } \ } STMT_END diff --git a/gnu/usr.bin/perl/uconfig.h b/gnu/usr.bin/perl/uconfig.h index ae3467b8588..a81a24055fd 100644 --- a/gnu/usr.bin/perl/uconfig.h +++ b/gnu/usr.bin/perl/uconfig.h @@ -1338,8 +1338,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -/*#define ARCHLIB "/usr/local/lib/perl5/5.7/unknown" / **/ -/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.7/unknown" / **/ +/*#define ARCHLIB "/usr/local/lib/perl5/5.9/unknown" / **/ +/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.9/unknown" / **/ /* BIN: * This symbol holds the path of the bin directory where the package will @@ -1377,6 +1377,18 @@ */ /*#define PERL_OTHERLIBDIRS "" / **/ +/* INSTALL_PREFIX: + * This symbol contains the "root" of installation tree for this package. + * The program should be prepared to do ~ expansion. + */ +/* INSTALL_PREFIX_EXP: + * This symbol contains the "root" of installation tree for this package + * to be used in programs that are not prepared to deal with ~ expansion + * at run-time. + */ +#define INSTALL_PREFIX "" /**/ +#define INSTALL_PREFIX_EXP "" /**/ + /* PRIVLIB: * This symbol contains the name of the private library for this package. * The library is private in the sense that it needn't be in anyone's @@ -1387,8 +1399,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "/usr/local/lib/perl5/5.7" /**/ -#define PRIVLIB_EXP "/usr/local/lib/perl5/5.7" /**/ +#define PRIVLIB "/usr/local/lib/perl5/5.9" /**/ +#define PRIVLIB_EXP "/usr/local/lib/perl5/5.9" /**/ /* SITEARCH: * This symbol contains the name of the private library for this package. @@ -2150,6 +2162,11 @@ */ /*#define MYMALLOC / **/ +/* PERL_MALLOC_WRAP: + * This symbol, if defined, indicates that we'd like malloc wrap checks. + */ +/*#define PERL_MALLOC_WRAP / **/ + /* CAN_PROTOTYPE: * If defined, this macro indicates that the C compiler can handle * function prototypes. @@ -3204,6 +3221,19 @@ #define NVSIZE 8 /**/ #undef NV_PRESERVES_UV #define NV_PRESERVES_UV_BITS 0 +#if UVSIZE == 8 +# ifdef BYTEORDER +# if BYTEORDER == 0x1234 +# undef BYTEORDER +# define BYTEORDER 0x12345678 +# else +# if BYTEORDER == 0x4321 +# undef BYTEORDER +# define BYTEORDER 0x87654321 +# endif +# endif +# endif +#endif /* IVdf: * This symbol defines the format string used for printing a Perl IV @@ -3357,41 +3387,6 @@ /*#define USE_SOCKS / **/ #endif -/* PERL_XS_APIVERSION: - * This variable contains the version of the oldest perl binary - * compatible with the present perl. perl.c:incpush() and - * lib/lib.pm will automatically search in for older - * directories across major versions back to xs_apiversion. - * This is only useful if you have a perl library directory tree - * structured like the default one. - * See INSTALL for how this works. - * The versioned site_perl directory was introduced in 5.005, - * so that is the lowest possible value. - * Since this can depend on compile time options - * it is set by Configure. Other non-default sources - * of potential incompatibility, such as multiplicity, threads, - * debugging, 64bits, sfio, etc., are not checked for currently, - * though in principle we could go snooping around in old - * Config.pm files. - */ -/* PERL_PM_APIVERSION: - * This variable contains the version of the oldest perl - * compatible with the present perl. (That is, pure perl modules - * written for pm_apiversion will still work for the current - * version). perl.c:incpush() and lib/lib.pm will automatically - * search in for older directories across major versions - * back to pm_apiversion. This is only useful if you have a perl - * library directory tree structured like the default one. The - * versioned site_perl library was introduced in 5.005, so that's - * the default setting for this variable. It's hard to imagine - * it changing before Perl6. It is included here for symmetry - * with xs_apiveprsion -- the searching algorithms will - * (presumably) be similar. - * See the INSTALL file for how this works. - */ -#define PERL_XS_APIVERSION "5.008" -#define PERL_PM_APIVERSION "5.005" - /* HAS_DRAND48_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the drand48() function. Otherwise, it is up @@ -4270,7 +4265,7 @@ * unsigned long, int, etc. It may be necessary to include * to get any typedef'ed information. */ -#define Size_t int /* length paramater for string functions */ +#define Size_t size_t /* length paramater for string functions */ /* Uid_t_f: * This symbol defines the format string used for printing a Uid_t. diff --git a/gnu/usr.bin/perl/uconfig.sh b/gnu/usr.bin/perl/uconfig.sh index 2060b439121..87be6395243 100644 --- a/gnu/usr.bin/perl/uconfig.sh +++ b/gnu/usr.bin/perl/uconfig.sh @@ -4,9 +4,8 @@ _o='.o' afs='false' afsroot='/afs' alignbytes='4' -apiversion='5.005' -archlib='/usr/local/lib/perl5/5.7/unknown' -archlibexp='/usr/local/lib/perl5/5.7/unknown' +archlib='/usr/local/lib/perl5/5.9/unknown' +archlibexp='/usr/local/lib/perl5/5.9/unknown' archname='unknown' asctime_r_proto='0' bin='/usr/local/bin' @@ -598,9 +597,8 @@ orderlib='false' osname='unknown' phostname='hostname' pidtype=int -pm_apiversion='5.005' -privlib='/usr/local/lib/perl5/5.7' -privlibexp='/usr/local/lib/perl5/5.7' +privlib='/usr/local/lib/perl5/5.9' +privlibexp='/usr/local/lib/perl5/5.9' procselfexe='' prototype='undef' ptrsize='4' @@ -646,7 +644,7 @@ sig_num_init='0' sig_size='1' signal_t=int sizesize=4 -sizetype=int +sizetype='size_t' socksizetype='int' srand48_r_proto='0' srandom_r_proto='0' @@ -685,6 +683,7 @@ usefaststdio='undef' useithreads='undef' uselargefiles='undef' uselongdouble='undef' +usemallocwrap='undef' usemorebits='undef' usemultiplicity='undef' usemymalloc='n' @@ -707,4 +706,3 @@ uvuformat='"lu"' uvxformat='"lx"' versiononly='undef' voidflags=1 -xs_apiversion='5.008' diff --git a/gnu/usr.bin/perl/utf8.c b/gnu/usr.bin/perl/utf8.c index 6a665eb1102..6155fabe3cd 100644 --- a/gnu/usr.bin/perl/utf8.c +++ b/gnu/usr.bin/perl/utf8.c @@ -1,6 +1,6 @@ /* utf8.c * - * Copyright (C) 2000, 2001, 2002, 2003, by Larry Wall and others + * Copyright (C) 2000, 2001, 2002, 2003, 2004, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -232,7 +232,7 @@ Perl_is_utf8_string(pTHX_ U8 *s, STRLEN len) U8* send; STRLEN c; - if (!len) + if (!len && s) len = strlen((char *)s); send = s + len; @@ -272,7 +272,7 @@ Perl_is_utf8_string_loc(pTHX_ U8 *s, STRLEN len, U8 **p) U8* send; STRLEN c; - if (!len) + if (!len && s) len = strlen((char *)s); send = s + len; @@ -1401,21 +1401,19 @@ Perl_to_utf8_case(pTHX_ U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, char *norma if (!*swashp) /* load on-demand */ *swashp = swash_init("utf8", normal, &PL_sv_undef, 4, 0); - if (special) { + /* The 0xDF is the only special casing Unicode code point below 0x100. */ + if (special && (uv1 == 0xDF || uv1 > 0xFF)) { /* It might be "special" (sometimes, but not always, * a multicharacter mapping) */ HV *hv; - SV *keysv; - HE *he; - SV *val; - - if ((hv = get_hv(special, FALSE)) && - (keysv = sv_2mortal(Perl_newSVpvf(aTHX_ "%04"UVXf, uv1))) && - (he = hv_fetch_ent(hv, keysv, FALSE, 0)) && - (val = HeVAL(he))) { - char *s; + SV **svp; + + if ((hv = get_hv(special, FALSE)) && + (svp = hv_fetch(hv, (const char*)tmpbuf, UNISKIP(uv1), FALSE)) && + (*svp)) { + char *s; - s = SvPV(val, len); + s = SvPV(*svp, len); if (len == 1) len = uvuni_to_utf8(ustrp, NATIVE_TO_UNI(*(U8*)s)) - ustrp; else { @@ -1426,7 +1424,7 @@ Perl_to_utf8_case(pTHX_ U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, char *norma U8 *t = (U8*)s, *tend = t + len, *d; d = tmpbuf; - if (SvUTF8(val)) { + if (SvUTF8(*svp)) { STRLEN tlen = 0; while (t < tend) { @@ -1566,13 +1564,16 @@ Perl_swash_init(pTHX_ char* pkg, char* name, SV *listsv, I32 minbits, I32 none) SV* retval; SV* tokenbufsv = sv_2mortal(NEWSV(0,0)); dSP; - HV *stash = gv_stashpvn(pkg, strlen(pkg), FALSE); + size_t pkg_len = strlen(pkg); + size_t name_len = strlen(name); + HV *stash = gv_stashpvn(pkg, pkg_len, FALSE); SV* errsv_save; if (!gv_fetchmeth(stash, "SWASHNEW", 8, -1)) { /* demand load utf8 */ ENTER; errsv_save = newSVsv(ERRSV); - Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, newSVpv(pkg,0), Nullsv); + Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, newSVpvn(pkg,pkg_len), + Nullsv); if (!SvTRUE(ERRSV)) sv_setsv(ERRSV, errsv_save); SvREFCNT_dec(errsv_save); @@ -1582,8 +1583,8 @@ Perl_swash_init(pTHX_ char* pkg, char* name, SV *listsv, I32 minbits, I32 none) PUSHSTACKi(PERLSI_MAGIC); PUSHMARK(SP); EXTEND(SP,5); - PUSHs(sv_2mortal(newSVpvn(pkg, strlen(pkg)))); - PUSHs(sv_2mortal(newSVpvn(name, strlen(name)))); + PUSHs(sv_2mortal(newSVpvn(pkg, pkg_len))); + PUSHs(sv_2mortal(newSVpvn(name, name_len))); PUSHs(listsv); PUSHs(sv_2mortal(newSViv(minbits))); PUSHs(sv_2mortal(newSViv(none))); diff --git a/gnu/usr.bin/perl/utils/perlivp.PL b/gnu/usr.bin/perl/utils/perlivp.PL index 7db1090dd6e..90598691d65 100644 --- a/gnu/usr.bin/perl/utils/perlivp.PL +++ b/gnu/usr.bin/perl/utils/perlivp.PL @@ -123,7 +123,7 @@ my \$ivp_VERSION = $]; !GROK!THIS! print OUT <<'!NO!SUBS!'; -if ($ivp_VERSION == $]) { +if ($ivp_VERSION eq $]) { print "## Perl version `$]' appears installed as expected.\n" if $opt{'v'}; print "ok 2\n"; $pass__total++; diff --git a/gnu/usr.bin/perl/vms/descrip_mms.template b/gnu/usr.bin/perl/vms/descrip_mms.template index 624c4fd70d7..42c9435e263 100644 --- a/gnu/usr.bin/perl/vms/descrip_mms.template +++ b/gnu/usr.bin/perl/vms/descrip_mms.template @@ -33,6 +33,11 @@ ~FLAGS~ #: >>>>> Architecture-specific options <<<<< +.ifdef IXE +O = .ibj +OLB = .ilb +E = .ixe +.else .ifdef AXE # File type to use for object files O = .abj @@ -48,7 +53,12 @@ OLB = .olb # File type to use for executable images E = .exe .endif +.endif +.ifdef __IA64__ +ARCH = VMS_IA64 +OBJVAL = $(O) +.else .ifdef __AXP__ ARCH = VMS_AXP OBJVAL = $(O) @@ -56,6 +66,7 @@ OBJVAL = $(O) ARCH = VMS_VAX OBJVAL = $(MMS$TARGET_NAME)$(O) .endif +.endif PERL_VERSION = ~PV~ @@ -282,11 +293,7 @@ ac6 = $(ARCHCORE)op.h $(ARCHCORE)opcode.h $(ARCHCORE)opnames.h ac7 = $(ARCHCORE)pad.h $(ARCHCORE)patchlevel.h $(ARCHCORE)perl.h ac8 = $(ARCHCORE)perlapi.h $(ARCHCORE)perlio.h $(ARCHCORE)perlsdio.h ac9 = $(ARCHCORE)perlsfio.h $(ARCHCORE)perlvars.h $(ARCHCORE)perly.h $(ARCHCORE)pp.h -.ifdef THREADED ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)reentr.h $(ARCHCORE)reentr.inc $(ARCHCORE)regcomp.h -.else -ac10 = $(ARCHCORE)pp_proto.h $(ARCHCORE)proto.h $(ARCHCORE)regcomp.h -.endif ac11 = $(ARCHCORE)regexp.h $(ARCHCORE)regnodes.h $(ARCHCORE)scope.h .ifdef SOCKARCH ac12 = $(ARCHCORE)sv.h $(ARCHCORE)thrdvar.h $(SOCKARCH) @@ -318,12 +325,21 @@ CRTLOPTS =,$(CRTL)/Options $(CC) $(CFLAGS) $(MMS$SOURCE_NAME).c .endif +unidatafiles1 = [.lib.unicore]Canonical.pl [.lib.unicore]Exact.pl +unidatafiles2 = [.lib.unicore]Properties [.lib.unicore]Decomposition.pl +unidatafiles3 = [.lib.unicore]CombiningClass.pl [.lib.unicore]Name.pl +unidatafiles4 = [.lib.unicore]PVA.pl +unidatafiles = $(unidatafiles1) $(unidatafiles2) $(unidatafiles3) $(unidatafiles4) + +# Directories of Unicode data files generated by mktables +unidatadirs = lib/unicore/To lib/unicore/lib + # Modules which must be installed before we can build extensions -LIBPREREQ = $(ARCHDIR)Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]lib.pm [.lib.ExtUtils]XSSymSet.pm $(ARCHDIR)vmspipe.com [.lib]re.pm +LIBPREREQ = $(ARCHDIR)Config.pm [.lib.VMS]Filespec.pm [.lib]DynaLoader.pm [.lib]XSLoader.pm [.lib]lib.pm [.lib.ExtUtils]XSSymSet.pm $(ARCHDIR)vmspipe.com [.lib]re.pm $(unidatafiles) utils1 = [.lib.pod]perldoc.com [.lib.ExtUtils]Miniperl.pm [.utils]c2ph.com [.utils]h2ph.com utils2 = [.utils]h2xs.com [.utils]libnetcfg.com [.lib]perlbug.com [.lib]perlcc.com [.utils]dprofpp.com -utils3 = [.utils]perlivp.com [.lib]splain.com [.utils]pl2pm.com [.lib.ExtUtils]xsubpp.com +utils3 = [.utils]perlivp.com [.lib]splain.com [.utils]pl2pm.com [.utils]xsubpp.com [.utils]instmodsh.com utils4 = [.utils]enc2xs.com [.utils]piconv.com [.utils]cpan.com [.utils]prove.com .ifdef NOX2P @@ -356,32 +372,32 @@ extra.pods : miniperl pod0 = [.lib.pod]perl.pod [.lib.pod]perl5004delta.pod [.lib.pod]perl5005delta.pod [.lib.pod]perl561delta.pod [.lib.pod]perl56delta.pod pod1 = [.lib.pod]perl570delta.pod [.lib.pod]perl571delta.pod [.lib.pod]perl572delta.pod [.lib.pod]perl573delta.pod [.lib.pod]perl581delta.pod -pod2 = [.lib.pod]perl582delta.pod [.lib.pod]perl583delta.pod [.lib.pod]perl58delta.pod [.lib.pod]perlaix.pod [.lib.pod]perlamiga.pod [.lib.pod]perlapi.pod -pod3 = [.lib.pod]perlapio.pod [.lib.pod]perlapollo.pod [.lib.pod]perlartistic.pod [.lib.pod]perlbeos.pod [.lib.pod]perlbook.pod [.lib.pod]perlboot.pod -pod4 = [.lib.pod]perlbot.pod [.lib.pod]perlbs2000.pod [.lib.pod]perlcall.pod [.lib.pod]perlce.pod [.lib.pod]perlcheat.pod [.lib.pod]perlclib.pod -pod5 = [.lib.pod]perlcn.pod [.lib.pod]perlcompile.pod [.lib.pod]perlcygwin.pod [.lib.pod]perldata.pod [.lib.pod]perldbmfilter.pod [.lib.pod]perldebguts.pod -pod6 = [.lib.pod]perldebtut.pod [.lib.pod]perldebug.pod [.lib.pod]perldelta.pod [.lib.pod]perldgux.pod [.lib.pod]perldiag.pod [.lib.pod]perldoc.pod -pod7 = [.lib.pod]perldos.pod [.lib.pod]perldsc.pod [.lib.pod]perlebcdic.pod [.lib.pod]perlembed.pod [.lib.pod]perlepoc.pod [.lib.pod]perlfaq.pod -pod8 = [.lib.pod]perlfaq1.pod [.lib.pod]perlfaq2.pod [.lib.pod]perlfaq3.pod [.lib.pod]perlfaq4.pod [.lib.pod]perlfaq5.pod [.lib.pod]perlfaq6.pod -pod9 = [.lib.pod]perlfaq7.pod [.lib.pod]perlfaq8.pod [.lib.pod]perlfaq9.pod [.lib.pod]perlfilter.pod [.lib.pod]perlfork.pod [.lib.pod]perlform.pod -pod10 = [.lib.pod]perlfreebsd.pod [.lib.pod]perlfunc.pod [.lib.pod]perlgpl.pod [.lib.pod]perlguts.pod [.lib.pod]perlhack.pod [.lib.pod]perlhist.pod -pod11 = [.lib.pod]perlhpux.pod [.lib.pod]perlhurd.pod [.lib.pod]perlintern.pod [.lib.pod]perlintro.pod [.lib.pod]perliol.pod [.lib.pod]perlipc.pod -pod12 = [.lib.pod]perlirix.pod [.lib.pod]perljp.pod [.lib.pod]perlko.pod [.lib.pod]perllexwarn.pod [.lib.pod]perllocale.pod [.lib.pod]perllol.pod -pod13 = [.lib.pod]perlmachten.pod [.lib.pod]perlmacos.pod [.lib.pod]perlmacosx.pod [.lib.pod]perlmint.pod [.lib.pod]perlmod.pod [.lib.pod]perlmodinstall.pod -pod14 = [.lib.pod]perlmodlib.pod [.lib.pod]perlmodstyle.pod [.lib.pod]perlmpeix.pod [.lib.pod]perlnetware.pod [.lib.pod]perlnewmod.pod -pod15 = [.lib.pod]perlnumber.pod [.lib.pod]perlobj.pod [.lib.pod]perlop.pod [.lib.pod]perlopentut.pod [.lib.pod]perlos2.pod [.lib.pod]perlos390.pod -pod16 = [.lib.pod]perlos400.pod [.lib.pod]perlothrtut.pod [.lib.pod]perlpacktut.pod [.lib.pod]perlplan9.pod [.lib.pod]perlpod.pod [.lib.pod]perlpodspec.pod -pod17 = [.lib.pod]perlport.pod [.lib.pod]perlqnx.pod [.lib.pod]perlre.pod [.lib.pod]perlref.pod [.lib.pod]perlreftut.pod [.lib.pod]perlrequick.pod -pod18 = [.lib.pod]perlreref.pod [.lib.pod]perlretut.pod [.lib.pod]perlrun.pod [.lib.pod]perlsec.pod [.lib.pod]perlsolaris.pod [.lib.pod]perlstyle.pod -pod19 = [.lib.pod]perlsub.pod [.lib.pod]perlsyn.pod [.lib.pod]perlthrtut.pod [.lib.pod]perltie.pod [.lib.pod]perltoc.pod [.lib.pod]perltodo.pod -pod20 = [.lib.pod]perltooc.pod [.lib.pod]perltoot.pod [.lib.pod]perltrap.pod [.lib.pod]perltru64.pod [.lib.pod]perltw.pod [.lib.pod]perlunicode.pod -pod21 = [.lib.pod]perluniintro.pod [.lib.pod]perlutil.pod [.lib.pod]perluts.pod [.lib.pod]perlvar.pod [.lib.pod]perlvmesa.pod [.lib.pod]perlvms.pod -pod22 = [.lib.pod]perlvos.pod [.lib.pod]perlwin32.pod [.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod +pod2 = [.lib.pod]perl582delta.pod [.lib.pod]perl583delta.pod [.lib.pod]perl584delta.pod [.lib.pod]perl585delta.pod [.lib.pod]perl58delta.pod +pod3 = [.lib.pod]perlaix.pod [.lib.pod]perlamiga.pod [.lib.pod]perlapi.pod [.lib.pod]perlapio.pod [.lib.pod]perlapollo.pod [.lib.pod]perlartistic.pod +pod4 = [.lib.pod]perlbeos.pod [.lib.pod]perlbook.pod [.lib.pod]perlboot.pod [.lib.pod]perlbot.pod [.lib.pod]perlbs2000.pod [.lib.pod]perlcall.pod +pod5 = [.lib.pod]perlce.pod [.lib.pod]perlcheat.pod [.lib.pod]perlclib.pod [.lib.pod]perlcn.pod [.lib.pod]perlcompile.pod [.lib.pod]perlcygwin.pod +pod6 = [.lib.pod]perldata.pod [.lib.pod]perldbmfilter.pod [.lib.pod]perldebguts.pod [.lib.pod]perldebtut.pod [.lib.pod]perldebug.pod [.lib.pod]perldelta.pod +pod7 = [.lib.pod]perldgux.pod [.lib.pod]perldiag.pod [.lib.pod]perldoc.pod [.lib.pod]perldos.pod [.lib.pod]perldsc.pod [.lib.pod]perlebcdic.pod +pod8 = [.lib.pod]perlembed.pod [.lib.pod]perlepoc.pod [.lib.pod]perlfaq.pod [.lib.pod]perlfaq1.pod [.lib.pod]perlfaq2.pod [.lib.pod]perlfaq3.pod +pod9 = [.lib.pod]perlfaq4.pod [.lib.pod]perlfaq5.pod [.lib.pod]perlfaq6.pod [.lib.pod]perlfaq7.pod [.lib.pod]perlfaq8.pod [.lib.pod]perlfaq9.pod +pod10 = [.lib.pod]perlfilter.pod [.lib.pod]perlfork.pod [.lib.pod]perlform.pod [.lib.pod]perlfreebsd.pod [.lib.pod]perlfunc.pod [.lib.pod]perlgpl.pod +pod11 = [.lib.pod]perlguts.pod [.lib.pod]perlhack.pod [.lib.pod]perlhist.pod [.lib.pod]perlhpux.pod [.lib.pod]perlhurd.pod [.lib.pod]perlintern.pod +pod12 = [.lib.pod]perlintro.pod [.lib.pod]perliol.pod [.lib.pod]perlipc.pod [.lib.pod]perlirix.pod [.lib.pod]perljp.pod [.lib.pod]perlko.pod +pod13 = [.lib.pod]perllexwarn.pod [.lib.pod]perllocale.pod [.lib.pod]perllol.pod [.lib.pod]perlmachten.pod [.lib.pod]perlmacos.pod [.lib.pod]perlmacosx.pod +pod14 = [.lib.pod]perlmint.pod [.lib.pod]perlmod.pod [.lib.pod]perlmodinstall.pod [.lib.pod]perlmodlib.pod [.lib.pod]perlmodstyle.pod [.lib.pod]perlmpeix.pod +pod15 = [.lib.pod]perlnetware.pod [.lib.pod]perlnewmod.pod [.lib.pod]perlnumber.pod [.lib.pod]perlobj.pod [.lib.pod]perlop.pod [.lib.pod]perlopentut.pod +pod16 = [.lib.pod]perlos2.pod [.lib.pod]perlos390.pod [.lib.pod]perlos400.pod [.lib.pod]perlothrtut.pod [.lib.pod]perlpacktut.pod [.lib.pod]perlplan9.pod +pod17 = [.lib.pod]perlpod.pod [.lib.pod]perlpodspec.pod [.lib.pod]perlport.pod [.lib.pod]perlqnx.pod [.lib.pod]perlre.pod [.lib.pod]perlref.pod +pod18 = [.lib.pod]perlreftut.pod [.lib.pod]perlrequick.pod [.lib.pod]perlreref.pod [.lib.pod]perlretut.pod [.lib.pod]perlrun.pod [.lib.pod]perlsec.pod +pod19 = [.lib.pod]perlsolaris.pod [.lib.pod]perlstyle.pod [.lib.pod]perlsub.pod [.lib.pod]perlsyn.pod [.lib.pod]perlthrtut.pod [.lib.pod]perltie.pod +pod20 = [.lib.pod]perltoc.pod [.lib.pod]perltodo.pod [.lib.pod]perltooc.pod [.lib.pod]perltoot.pod [.lib.pod]perltrap.pod [.lib.pod]perltru64.pod +pod21 = [.lib.pod]perltw.pod [.lib.pod]perlunicode.pod [.lib.pod]perluniintro.pod [.lib.pod]perlutil.pod [.lib.pod]perluts.pod [.lib.pod]perlvar.pod +pod22 = [.lib.pod]perlvmesa.pod [.lib.pod]perlvms.pod [.lib.pod]perlvos.pod [.lib.pod]perlwin32.pod [.lib.pod]perlxs.pod [.lib.pod]perlxstut.pod pod = $(pod0) $(pod1) $(pod2) $(pod3) $(pod4) $(pod5) $(pod6) $(pod7) $(pod8) $(pod9) $(pod10) $(pod11) $(pod12) $(pod13) $(pod14) $(pod15) $(pod16) $(pod17) $(pod18) $(pod19) $(pod20) $(pod21) $(pod22) # Would be useful to automate the generation of this rule from pod/buildtoc # Plus its corresponding delete in the clean target. -[.pod]perldelta.pod : [.pod]perl583delta.pod +[.pod]perldelta.pod : [.pod]perl584delta.pod Copy/NoConfirm/Log $(MMS$SOURCE) $(MMS$TARGET) perlpods : $(pod) @@ -466,6 +482,11 @@ $(ARCHDIR)Config.pm : [.lib]Config.pm $(ARCHDIR)vmspipe.com : vmspipe.com Copy $(MMS$SOURCE) $(ARCHDIR) +# Aargh. I don't know how (if) it's possible to change directory +# So make the perl script do it +$(unidatafiles) : $(MINIPERL_EXE) [.lib]Config.pm [.lib.unicore]mktables + $(MINIPERL) [.lib.unicore]mktables "-C" lib "-C" unicore + [.ext.dynaloader]dl_vms.c : [.ext.dynaloader]dl_vms.xs $(ARCHDIR)Config.pm [.lib.ExtUtils]XSSymSet.pm $(MINIPERL_EXE) $(XSUBPP) $(MMS$SOURCE) >$(MMS$TARGET) @@ -536,6 +557,9 @@ dynext : $(LIBPREREQ) $(DBG)perlshr$(E) preplibrary [.utils]h2xs.com : [.utils]h2xs.PL $(ARCHDIR)Config.pm $(MINIPERL) $(MMS$SOURCE) +[.utils]instmodsh.com : [.utils]instmodsh.PL $(ARCHDIR)Config.pm + $(MINIPERL) $(MMS$SOURCE) + [.utils]libnetcfg.com : [.utils]libnetcfg.PL $(ARCHDIR)Config.pm $(MINIPERL) $(MMS$SOURCE) @@ -563,8 +587,8 @@ dynext : $(LIBPREREQ) $(DBG)perlshr$(E) preplibrary [.x2p]s2p.com : [.x2p]s2p.PL $(ARCHDIR)Config.pm $(MINIPERL) $(MMS$SOURCE) -[.lib.ExtUtils]xsubpp.com : [.lib.ExtUtils]xsubpp - Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.ExtUtils]xsubpp.com +[.utils]xsubpp.com : [.utils]xsubpp.PL $(ARCHDIR)Config.pm + $(MINIPERL) $(MMS$SOURCE) # Rename catches problem with some DECC versions in which object file is # placed in current default dir, not same one as source file. @@ -683,6 +707,14 @@ preplibrary : $(MINIPERL_EXE) $(LIBPREREQ) @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] +[.lib.pod]perl584delta.pod : [.pod]perl584delta.pod + @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] + Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] + +[.lib.pod]perl585delta.pod : [.pod]perl585delta.pod + @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] + Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] + [.lib.pod]perl58delta.pod : [.pod]perl58delta.pod @ If F$Search("[.lib]pod.dir").eqs."" Then Create/Directory [.lib.pod] Copy/NoConfirm/Log $(MMS$SOURCE) [.lib.pod] @@ -1374,14 +1406,12 @@ $(ARCHCORE)pp_proto.h : pp_proto.h $(ARCHCORE)proto.h : proto.h @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) -.ifdef THREADED $(ARCHCORE)reentr.h : reentr.h @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) $(ARCHCORE)reentr.inc : reentr.inc @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) -.endif $(ARCHCORE)regcomp.h : regcomp.h @ If F$Search("$(ARCHDIR)CORE.dir").eqs."" Then Create/Directory $(ARCHCORE) Copy/NoConfirm/Log $(MMS$SOURCE) $(ARCHCORE) @@ -1579,8 +1609,6 @@ tidy : cleanlis - If F$Search("[...]*$(E);-1").nes."" Then Purge/NoConfirm/Log [...]*$(E) - If F$Search("Config.H;-1").nes."" Then Purge/NoConfirm/Log Config.H - If F$Search("Config.SH;-1").nes."" Then Purge/NoConfirm/Log Config.SH - - If F$Search("perly.c;-1").nes."" Then Purge/NoConfirm/Log perly.c - - If F$Search("perly.h;-1").nes."" Then Purge/NoConfirm/Log perly.h - If F$Search("VMSish.H;-1").nes."" Then Purge/NoConfirm/Log VMSish.H - If F$Search("VMS.C;-1") .nes."" Then Purge/NoConfirm/Log VMS.C - If F$Search("Perlmain.C;-1") .nes."" Then Purge/NoConfirm/Log Perlmain.C @@ -1613,10 +1641,6 @@ clean : tidy cleantest - If F$Search("[...]*$(O);*") .nes."" Then Delete/NoConfirm/Log [...]*$(O);* - If F$Search(F$Parse("Sys$Disk:[]","$(SOCKH)")).nes."" Then Delete/NoConfirm/Log $(SOCKH);* - If F$Search(F$Parse("Sys$Disk:[]","$(SOCKC)")).nes."" Then Delete/NoConfirm/Log $(SOCKC);* - - If F$Search("perly.c").nes."" Then Delete/NoConfirm/Log perly.c;* - - Copy [.vms]perly_c.vms []perly.c - - If F$Search("perly.h").nes."" Then Delete/NoConfirm/Log perly.h;* - - Copy [.vms]perly_h.vms []perly.h - If F$Search("VMSish.H").nes."" Then Delete/NoConfirm/Log VMSish.H;* - If F$Search("VMS.C") .nes."" Then Delete/NoConfirm/Log VMS.C;* - If F$Search("Perlmain.C") .nes."" Then Delete/NoConfirm/Log Perlmain.C;* @@ -1639,6 +1663,8 @@ realclean : clean - If F$Search("Config.H").nes."" Then Delete/NoConfirm/Log Config.H;* - If F$Search("Config.SH").nes."" Then Delete/NoConfirm/Log Config.SH;* - $(MINIPERL) -e "use File::Path; rmtree(\@ARGV,1,0);" config + - $(MINIPERL) -e "foreach (@ARGV) {unlink qq{$_;*} or warn qq{unlink $_: $!}}" $(unidatafiles) + - $(MINIPERL) -e "use File::Path; rmtree(\@ARGV,1,0);" $(unidatadirs) - If F$Search("Descrip.MMS").nes."" Then Delete/NoConfirm/Log Descrip.MMS;* - If F$Search("make_ext.Com").nes."" Then Delete/NoConfirm/Log make_ext.Com;* - If F$Search("extra_pods.Com").nes."" Then Delete/NoConfirm/Log extra_pods.Com;* diff --git a/gnu/usr.bin/perl/vos/Changes b/gnu/usr.bin/perl/vos/Changes index 98bab9dbd85..ea01c47b999 100644 --- a/gnu/usr.bin/perl/vos/Changes +++ b/gnu/usr.bin/perl/vos/Changes @@ -1,6 +1,10 @@ This file documents the changes made to port Perl to the Stratus VOS operating system. +For 5.8.4: + Updated "config.alpha.def", "config.ga.def", "build.cm" and + "perl.bind" to build this version of perl. + For 5.8.0: Updated "config.alpha.def", "config.ga.def", "build.cm", and "install_perl.cm" to use directory naming conventions that diff --git a/gnu/usr.bin/perl/win32/config.gc b/gnu/usr.bin/perl/win32/config.gc index cc332a80e46..8a3cd4733e3 100644 --- a/gnu/usr.bin/perl/win32/config.gc +++ b/gnu/usr.bin/perl/win32/config.gc @@ -770,7 +770,6 @@ pg='' phostname='hostname' pidtype='int' plibpth='' -pm_apiversion='5.005' pmake='' pr='' prefix='~INST_TOP~' @@ -949,7 +948,6 @@ versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' -xs_apiversion='5.6.0' zcat='' zip='zip' PERL_REVISION='~PERL_REVISION~' diff --git a/gnu/usr.bin/perl/win32/config.vc64 b/gnu/usr.bin/perl/win32/config.vc64 index 5bc42618080..c4d2e8f1f03 100644 --- a/gnu/usr.bin/perl/win32/config.vc64 +++ b/gnu/usr.bin/perl/win32/config.vc64 @@ -770,7 +770,6 @@ pg='' phostname='hostname' pidtype='int' plibpth='' -pm_apiversion='5.005' pmake='' pr='' prefix='~INST_TOP~' @@ -949,7 +948,6 @@ versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' -xs_apiversion='5.6.0' zcat='' zip='zip' PERL_REVISION='~PERL_REVISION~' diff --git a/gnu/usr.bin/perl/win32/config_H.vc64 b/gnu/usr.bin/perl/win32/config_H.vc64 index 5a21ac03a8b..94a820e5c13 100644 --- a/gnu/usr.bin/perl/win32/config_H.vc64 +++ b/gnu/usr.bin/perl/win32/config_H.vc64 @@ -1344,7 +1344,7 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "c:\\perl\\5.8.3\\lib\\MSWin32-x86-multi-thread" /**/ +#define ARCHLIB "c:\\perl\\5.8.5\\lib\\MSWin32-x86-multi-thread" /**/ /*#define ARCHLIB_EXP "" /**/ /* BIN: @@ -1355,8 +1355,8 @@ * This symbol is the filename expanded version of the BIN symbol, for * programs that do not want to deal with that at run-time. */ -#define BIN "c:\\perl\\5.8.3\\bin\\MSWin32-x86-multi-thread" /**/ -#define BIN_EXP "c:\\perl\\5.8.3\\bin\\MSWin32-x86-multi-thread" /**/ +#define BIN "c:\\perl\\5.8.5\\bin\\MSWin32-x86-multi-thread" /**/ +#define BIN_EXP "c:\\perl\\5.8.5\\bin\\MSWin32-x86-multi-thread" /**/ /* PERL_INC_VERSION_LIST: * This variable specifies the list of subdirectories in over @@ -1393,8 +1393,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "c:\\perl\\5.8.3\\lib" /**/ -#define PRIVLIB_EXP (win32_get_privlib("5.8.3")) /**/ +#define PRIVLIB "c:\\perl\\5.8.5\\lib" /**/ +#define PRIVLIB_EXP (win32_get_privlib("5.8.5")) /**/ /* SITEARCH: * This symbol contains the name of the private library for this package. @@ -1411,7 +1411,7 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "c:\\perl\\site\\5.8.3\\lib\\MSWin32-x86-multi-thread" /**/ +#define SITEARCH "c:\\perl\\site\\5.8.5\\lib\\MSWin32-x86-multi-thread" /**/ /*#define SITEARCH_EXP "" /**/ /* SITELIB: @@ -1434,8 +1434,8 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "c:\\perl\\site\\5.8.3\\lib" /**/ -#define SITELIB_EXP (win32_get_sitelib("5.8.3")) /**/ +#define SITELIB "c:\\perl\\site\\5.8.5\\lib" /**/ +#define SITELIB_EXP (win32_get_sitelib("5.8.5")) /**/ #define SITELIB_STEM "" /**/ /* PERL_VENDORARCH: @@ -2156,6 +2156,11 @@ */ /*#define MYMALLOC /**/ +/* PERL_MALLOC_WRAP: + * This symbol, if defined, indicates that we'd like malloc wrap checks. + */ +#define PERL_MALLOC_WRAP /**/ + /* CAN_PROTOTYPE: * If defined, this macro indicates that the C compiler can handle * function prototypes. @@ -3366,41 +3371,6 @@ /*#define USE_SOCKS /**/ #endif -/* PERL_XS_APIVERSION: - * This variable contains the version of the oldest perl binary - * compatible with the present perl. perl.c:incpush() and - * lib/lib.pm will automatically search in c:\\perl\\site\\5.8.3\\lib\\MSWin32-x86-multi-thread for older - * directories across major versions back to xs_apiversion. - * This is only useful if you have a perl library directory tree - * structured like the default one. - * See INSTALL for how this works. - * The versioned site_perl directory was introduced in 5.005, - * so that is the lowest possible value. - * Since this can depend on compile time options - * it is set by Configure. Other non-default sources - * of potential incompatibility, such as multiplicity, threads, - * debugging, 64bits, sfio, etc., are not checked for currently, - * though in principle we could go snooping around in old - * Config.pm files. - */ -/* PERL_PM_APIVERSION: - * This variable contains the version of the oldest perl - * compatible with the present perl. (That is, pure perl modules - * written for pm_apiversion will still work for the current - * version). perl.c:incpush() and lib/lib.pm will automatically - * search in c:\\perl\\site\\5.8.3\\lib for older directories across major versions - * back to pm_apiversion. This is only useful if you have a perl - * library directory tree structured like the default one. The - * versioned site_perl library was introduced in 5.005, so that's - * the default setting for this variable. It's hard to imagine - * it changing before Perl6. It is included here for symmetry - * with xs_apiveprsion -- the searching algorithms will - * (presumably) be similar. - * See the INSTALL file for how this works. - */ -#define PERL_XS_APIVERSION "5.6.0" -#define PERL_PM_APIVERSION "5.005" - /* HAS_DRAND48_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the drand48() function. Otherwise, it is up diff --git a/gnu/usr.bin/perl/win32/ext/Win32/Makefile.PL b/gnu/usr.bin/perl/win32/ext/Win32/Makefile.PL new file mode 100644 index 00000000000..c167ab3704d --- /dev/null +++ b/gnu/usr.bin/perl/win32/ext/Win32/Makefile.PL @@ -0,0 +1,6 @@ +use ExtUtils::MakeMaker; + +WriteMakefile( + NAME => 'Win32', + VERSION_FROM => 'Win32.pm', +); diff --git a/gnu/usr.bin/perl/win32/ext/Win32/Win32.pm b/gnu/usr.bin/perl/win32/ext/Win32/Win32.pm new file mode 100644 index 00000000000..02e72bc7e63 --- /dev/null +++ b/gnu/usr.bin/perl/win32/ext/Win32/Win32.pm @@ -0,0 +1,689 @@ +package Win32; + +BEGIN { + use strict; + use vars qw|$VERSION @ISA @EXPORT @EXPORT_OK|; + + require Exporter; + require DynaLoader; + + @ISA = qw|Exporter DynaLoader|; + $VERSION = '0.23'; + + @EXPORT = qw( + NULL + WIN31_CLASS + OWNER_SECURITY_INFORMATION + GROUP_SECURITY_INFORMATION + DACL_SECURITY_INFORMATION + SACL_SECURITY_INFORMATION + MB_ICONHAND + MB_ICONQUESTION + MB_ICONEXCLAMATION + MB_ICONASTERISK + MB_ICONWARNING + MB_ICONERROR + MB_ICONINFORMATION + MB_ICONSTOP + ); + @EXPORT_OK = qw( + GetOSName + SW_HIDE + SW_SHOWNORMAL + SW_SHOWMINIMIZED + SW_SHOWMAXIMIZED + SW_SHOWNOACTIVATE + + CSIDL_DESKTOP + CSIDL_PROGRAMS + CSIDL_PERSONAL + CSIDL_FAVORITES + CSIDL_STARTUP + CSIDL_RECENT + CSIDL_SENDTO + CSIDL_STARTMENU + CSIDL_MYMUSIC + CSIDL_MYVIDEO + CSIDL_DESKTOPDIRECTORY + CSIDL_NETHOOD + CSIDL_FONTS + CSIDL_TEMPLATES + CSIDL_COMMON_STARTMENU + CSIDL_COMMON_PROGRAMS + CSIDL_COMMON_STARTUP + CSIDL_COMMON_DESKTOPDIRECTORY + CSIDL_APPDATA + CSIDL_PRINTHOOD + CSIDL_LOCAL_APPDATA + CSIDL_COMMON_FAVORITES + CSIDL_INTERNET_CACHE + CSIDL_COOKIES + CSIDL_HISTORY + CSIDL_COMMON_APPDATA + CSIDL_WINDOWS + CSIDL_SYSTEM + CSIDL_PROGRAM_FILES + CSIDL_MYPICTURES + CSIDL_PROFILE + CSIDL_PROGRAM_FILES_COMMON + CSIDL_COMMON_TEMPLATES + CSIDL_COMMON_DOCUMENTS + CSIDL_COMMON_ADMINTOOLS + CSIDL_ADMINTOOLS + CSIDL_COMMON_MUSIC + CSIDL_COMMON_PICTURES + CSIDL_COMMON_VIDEO + CSIDL_RESOURCES + CSIDL_RESOURCES_LOCALIZED + CSIDL_CDBURN_AREA + ); +} + +# Routines available in core: +# Win32::GetLastError +# Win32::LoginName +# Win32::NodeName +# Win32::DomainName +# Win32::FsType +# Win32::GetCwd +# Win32::GetOSVersion +# Win32::FormatMessage ERRORCODE +# Win32::Spawn COMMAND, ARGS, PID +# Win32::GetTickCount +# Win32::IsWinNT +# Win32::IsWin95 + +# We won't bother with the constant stuff, too much of a hassle. Just hard +# code it here. + +sub NULL { 0 } +sub WIN31_CLASS { &NULL } + +sub OWNER_SECURITY_INFORMATION { 0x00000001 } +sub GROUP_SECURITY_INFORMATION { 0x00000002 } +sub DACL_SECURITY_INFORMATION { 0x00000004 } +sub SACL_SECURITY_INFORMATION { 0x00000008 } + +sub MB_ICONHAND { 0x00000010 } +sub MB_ICONQUESTION { 0x00000020 } +sub MB_ICONEXCLAMATION { 0x00000030 } +sub MB_ICONASTERISK { 0x00000040 } +sub MB_ICONWARNING { 0x00000030 } +sub MB_ICONERROR { 0x00000010 } +sub MB_ICONINFORMATION { 0x00000040 } +sub MB_ICONSTOP { 0x00000010 } + +# +# Newly added constants. These have an empty prototype, unlike the +# the ones above, which aren't prototyped for compatibility reasons. +# +sub SW_HIDE () { 0 } +sub SW_SHOWNORMAL () { 1 } +sub SW_SHOWMINIMIZED () { 2 } +sub SW_SHOWMAXIMIZED () { 3 } +sub SW_SHOWNOACTIVATE () { 4 } + +sub CSIDL_DESKTOP () { 0x0000 } # +sub CSIDL_PROGRAMS () { 0x0002 } # Start Menu\Programs +sub CSIDL_PERSONAL () { 0x0005 } # "My Documents" folder +sub CSIDL_FAVORITES () { 0x0006 } # \Favorites +sub CSIDL_STARTUP () { 0x0007 } # Start Menu\Programs\Startup +sub CSIDL_RECENT () { 0x0008 } # \Recent +sub CSIDL_SENDTO () { 0x0009 } # \SendTo +sub CSIDL_STARTMENU () { 0x000B } # \Start Menu +sub CSIDL_MYMUSIC () { 0x000D } # "My Music" folder +sub CSIDL_MYVIDEO () { 0x000E } # "My Videos" folder +sub CSIDL_DESKTOPDIRECTORY () { 0x0010 } # \Desktop +sub CSIDL_NETHOOD () { 0x0013 } # \nethood +sub CSIDL_FONTS () { 0x0014 } # windows\fonts +sub CSIDL_TEMPLATES () { 0x0015 } +sub CSIDL_COMMON_STARTMENU () { 0x0016 } # All Users\Start Menu +sub CSIDL_COMMON_PROGRAMS () { 0x0017 } # All Users\Start Menu\Programs +sub CSIDL_COMMON_STARTUP () { 0x0018 } # All Users\Startup +sub CSIDL_COMMON_DESKTOPDIRECTORY () { 0x0019 } # All Users\Desktop +sub CSIDL_APPDATA () { 0x001A } # Application Data, new for NT4 +sub CSIDL_PRINTHOOD () { 0x001B } # \PrintHood +sub CSIDL_LOCAL_APPDATA () { 0x001C } # non roaming, user\Local Settings\Application Data +sub CSIDL_COMMON_FAVORITES () { 0x001F } +sub CSIDL_INTERNET_CACHE () { 0x0020 } +sub CSIDL_COOKIES () { 0x0021 } +sub CSIDL_HISTORY () { 0x0022 } +sub CSIDL_COMMON_APPDATA () { 0x0023 } # All Users\Application Data +sub CSIDL_WINDOWS () { 0x0024 } # GetWindowsDirectory() +sub CSIDL_SYSTEM () { 0x0025 } # GetSystemDirectory() +sub CSIDL_PROGRAM_FILES () { 0x0026 } # C:\Program Files +sub CSIDL_MYPICTURES () { 0x0027 } # "My Pictures", new for Win2K +sub CSIDL_PROFILE () { 0x0028 } # USERPROFILE +sub CSIDL_PROGRAM_FILES_COMMON () { 0x002B } # C:\Program Files\Common +sub CSIDL_COMMON_TEMPLATES () { 0x002D } # All Users\Templates +sub CSIDL_COMMON_DOCUMENTS () { 0x002E } # All Users\Documents +sub CSIDL_COMMON_ADMINTOOLS () { 0x002F } # All Users\Start Menu\Programs\Administrative Tools +sub CSIDL_ADMINTOOLS () { 0x0030 } # \Start Menu\Programs\Administrative Tools +sub CSIDL_COMMON_MUSIC () { 0x0035 } # All Users\My Music +sub CSIDL_COMMON_PICTURES () { 0x0036 } # All Users\My Pictures +sub CSIDL_COMMON_VIDEO () { 0x0037 } # All Users\My Video +sub CSIDL_RESOURCES () { 0x0038 } # %windir%\Resources\, For theme and other windows resources. +sub CSIDL_RESOURCES_LOCALIZED () { 0x0039 } # %windir%\Resources\, for theme and other windows specific resources. +sub CSIDL_CDBURN_AREA () { 0x003B } # \Local Settings\Application Data\Microsoft\CD Burning + +### This method is just a simple interface into GetOSVersion(). More +### specific or demanding situations should use that instead. + +my ($found_os, $found_desc); + +sub GetOSName { + my ($os,$desc,$major, $minor, $build, $id)=("",""); + unless (defined $found_os) { + # If we have a run this already, we have the results cached + # If so, return them + + # Use the standard API call to determine the version + ($desc, $major, $minor, $build, $id) = Win32::GetOSVersion(); + + # If id==0 then its a win32s box -- Meaning Win3.11 + unless($id) { + $os = 'Win32s'; + } + else { + # Magic numbers from MSDN documentation of OSVERSIONINFO + # Most version names can be parsed from just the id and minor + # version + $os = { + 1 => { + 0 => "95", + 10 => "98", + 90 => "Me" + }, + 2 => { + 0 => "2000", + 1 => "XP/.Net", + 2 => "2003", + 51 => "NT3.51" + } + }->{$id}->{$minor}; + } + + # This _really_ shouldnt happen. At least not for quite a while + # Politely warn and return undef + unless (defined $os) { + warn qq[Windows version [$id:$major:$minor] unknown!]; + return undef; + } + + my $tag = ""; + + # But distinguising W2k from NT4 requires looking at the major version + if ($os eq "2000" && $major != 5) { + $os = "NT4"; + } + + # For the rest we take a look at the build numbers and try to deduce + # the exact release name, but we put that in the $desc + elsif ($os eq "95") { + if ($build eq '67109814') { + $tag = '(a)'; + } + elsif ($build eq '67306684') { + $tag = '(b1)'; + } + elsif ($build eq '67109975') { + $tag = '(b2)'; + } + } + elsif ($os eq "98" && $build eq '67766446') { + $tag = '(2nd ed)'; + } + + if (length $tag) { + if (length $desc) { + $desc = "$tag $desc"; + } + else { + $desc = $tag; + } + } + + # cache the results, so we dont have to do this again + $found_os = "Win$os"; + $found_desc = $desc; + } + + return wantarray ? ($found_os, $found_desc) : $found_os; +} + +bootstrap Win32; + +1; + +__END__ + +=head1 NAME + +Win32 - Interfaces to some Win32 API Functions + +=head1 DESCRIPTION + +Perl on Win32 contains several functions to access Win32 APIs. Some +are included in Perl itself (on Win32) and some are only available +after explicitly requesting the Win32 module with: + + use Win32; + +The builtin functions are marked as [CORE] and the other ones +as [EXT] in the following alphabetical listing. + +=head2 Alphabetical Listing of Win32 Functions + +=over + +=item Win32::AbortSystemShutdown(MACHINE) + +[EXT] Aborts a system shutdown (started by the +InitiateSystemShutdown function) on the specified MACHINE. + +=item Win32::BuildNumber() + +[CORE] Returns the ActivePerl build number. This function is +only available in the ActivePerl binary distribution. + +=item Win32::CopyFile(FROM, TO, OVERWRITE) + +[CORE] The Win32::CopyFile() function copies an existing file to a new +file. All file information like creation time and file attributes will +be copied to the new file. However it will B copy the security +information. If the destination file already exists it will only be +overwritten when the OVERWRITE parameter is true. But even this will +not overwrite a read-only file; you have to unlink() it first +yourself. + +=item Win32::DomainName() + +[CORE] Returns the name of the Microsoft Network domain that the +owner of the current perl process is logged into. This function does +B work on Windows 9x. + +=item Win32::ExpandEnvironmentStrings(STRING) + +[EXT] Takes STRING and replaces all referenced environment variable +names with their defined values. References to environment variables +take the form C<%VariableName%>. Case is ignored when looking up the +VariableName in the environment. If the variable is not found then the +original C<%VariableName%> text is retained. Has the same effect +as the following: + + $string =~ s/%([^%]*)%/$ENV{$1} || "%$1%"/eg + +=item Win32::FormatMessage(ERRORCODE) + +[CORE] Converts the supplied Win32 error number (e.g. returned by +Win32::GetLastError()) to a descriptive string. Analogous to the +perror() standard-C library function. Note that C<$^E> used +in a string context has much the same effect. + + C:\> perl -e "$^E = 26; print $^E;" + The specified disk or diskette cannot be accessed + +=item Win32::FsType() + +[CORE] Returns the name of the filesystem of the currently active +drive (like 'FAT' or 'NTFS'). In list context it returns three values: +(FSTYPE, FLAGS, MAXCOMPLEN). FSTYPE is the filesystem type as +before. FLAGS is a combination of values of the following table: + + 0x00000001 supports case-sensitive filenames + 0x00000002 preserves the case of filenames + 0x00000004 supports Unicode in filenames + 0x00000008 preserves and enforces ACLs + 0x00000010 supports file-based compression + 0x00000020 supports disk quotas + 0x00000040 supports sparse files + 0x00000080 supports reparse points + 0x00000100 supports remote storage + 0x00008000 is a compressed volume (e.g. DoubleSpace) + 0x00010000 supports object identifiers + 0x00020000 supports the Encrypted File System (EFS) + +MAXCOMPLEN is the maximum length of a filename component (the part +between two backslashes) on this file system. + +=item Win32::FreeLibrary(HANDLE) + +[EXT] Unloads a previously loaded dynamic-link library. The HANDLE is +no longer valid after this call. See L +for information on dynamically loading a library. + +=item Win32::GetArchName() + +[EXT] Use of this function is deprecated. It is equivalent with +$ENV{PROCESSOR_ARCHITECTURE}. This might not work on Win9X. + +=item Win32::GetChipName() + +[EXT] Returns the processor type: 386, 486 or 586 for Intel processors, +21064 for the Alpha chip. + +=item Win32::GetCwd() + +[CORE] Returns the current active drive and directory. This function +does not return a UNC path, since the functionality required for such +a feature is not available under Windows 95. + +=item Win32::GetFolderPath(FOLDER [, CREATE]) + +[EXT] Returns the full pathname of one of the Windows special folders. +The folder will be created if it doesn't exist and the optional CREATE +argument is true. The following FOLDER constants are defined by the +Win32 module, but only exported on demand: + + CSIDL_ADMINTOOLS + CSIDL_APPDATA + CSIDL_CDBURN_AREA + CSIDL_COMMON_ADMINTOOLS + CSIDL_COMMON_APPDATA + CSIDL_COMMON_DESKTOPDIRECTORY + CSIDL_COMMON_DOCUMENTS + CSIDL_COMMON_FAVORITES + CSIDL_COMMON_MUSIC + CSIDL_COMMON_PICTURES + CSIDL_COMMON_PROGRAMS + CSIDL_COMMON_STARTMENU + CSIDL_COMMON_STARTUP + CSIDL_COMMON_TEMPLATES + CSIDL_COMMON_VIDEO + CSIDL_COOKIES + CSIDL_DESKTOP + CSIDL_DESKTOPDIRECTORY + CSIDL_FAVORITES + CSIDL_FONTS + CSIDL_HISTORY + CSIDL_INTERNET_CACHE + CSIDL_LOCAL_APPDATA + CSIDL_MYMUSIC + CSIDL_MYPICTURES + CSIDL_MYVIDEO + CSIDL_NETHOOD + CSIDL_PERSONAL + CSIDL_PRINTHOOD + CSIDL_PROFILE + CSIDL_PROGRAMS + CSIDL_PROGRAM_FILES + CSIDL_PROGRAM_FILES_COMMON + CSIDL_RECENT + CSIDL_RESOURCES + CSIDL_RESOURCES_LOCALIZED + CSIDL_SENDTO + CSIDL_STARTMENU + CSIDL_STARTUP + CSIDL_SYSTEM + CSIDL_TEMPLATES + CSIDL_WINDOWS + +Note that not all folders are defined on all versions of Windows. + +Please refer to the MSDN documentation of the CSIDL constants, +currently available at: + +http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp + +=item Win32::GetFullPathName(FILENAME) + +[CORE] GetFullPathName combines the FILENAME with the current drive +and directory name and returns a fully qualified (aka, absolute) +path name. In list context it returns two elements: (PATH, FILE) where +PATH is the complete pathname component (including trailing backslash) +and FILE is just the filename part. Note that no attempt is made to +convert 8.3 components in the supplied FILENAME to longnames or +vice-versa. Compare with Win32::GetShortPathName and +Win32::GetLongPathName. + +=item Win32::GetLastError() + +[CORE] Returns the last error value generated by a call to a Win32 API +function. Note that C<$^E> used in a numeric context amounts to the +same value. + +=item Win32::GetLongPathName(PATHNAME) + +[CORE] Returns a representation of PATHNAME composed of longname +components (if any). The result may not necessarily be longer +than PATHNAME. No attempt is made to convert PATHNAME to the +absolute path. Compare with Win32::GetShortPathName and +Win32::GetFullPathName. + +=item Win32::GetNextAvailDrive() + +[CORE] Returns a string in the form of ":" where is the first +available drive letter. + +=item Win32::GetOSVersion() + +[CORE] Returns the list (STRING, MAJOR, MINOR, BUILD, ID), where the +elements are, respectively: An arbitrary descriptive string, the major +version number of the operating system, the minor version number, the +build number, and a digit indicating the actual operating system. +For the ID, the values are 0 for Win32s, 1 for Windows 9X/Me and 2 for +Windows NT/2000/XP/2003. In scalar context it returns just the ID. + +Currently known values for ID MAJOR and MINOR are as follows: + + OS ID MAJOR MINOR + Win32s 0 - - + Windows 95 1 4 0 + Windows 98 1 4 10 + Windows Me 1 4 90 + Windows NT 3.51 2 3 51 + Windows NT 4 2 4 0 + Windows 2000 2 5 0 + Windows XP 2 5 1 + Windows Server 2003 2 5 2 + +On Windows NT 4 SP6 and later this function returns the following +additional values: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE. + +SPMAJOR and SPMINOR are are the version numbers of the latest +installed service pack. + +SUITEMASK is a bitfield identifying the product suites available on +the system. Known bits are: + + VER_SUITE_SMALLBUSINESS 0x00000001 + VER_SUITE_ENTERPRISE 0x00000002 + VER_SUITE_BACKOFFICE 0x00000004 + VER_SUITE_COMMUNICATIONS 0x00000008 + VER_SUITE_TERMINAL 0x00000010 + VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 + VER_SUITE_EMBEDDEDNT 0x00000040 + VER_SUITE_DATACENTER 0x00000080 + VER_SUITE_SINGLEUSERTS 0x00000100 + VER_SUITE_PERSONAL 0x00000200 + VER_SUITE_BLADE 0x00000400 + VER_SUITE_EMBEDDED_RESTRICTED 0x00000800 + VER_SUITE_SECURITY_APPLIANCE 0x00001000 + +The VER_SUITE_xxx names are listed here to crossreference the Microsoft +documentation. The Win32 module does not provide symbolic names for these +constants. + +PRODUCTTYPE provides additional information about the system. It should +be one of the following integer values: + + 1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro) + 2 - Domaincontroller + 3 - Server + +=item Win32::GetOSName() + +[EXT] In scalar context returns the name of the Win32 operating system +being used. In list context returns a two element list of the OS name +and whatever edition information is known about the particular build +(for Win9X boxes) and whatever service packs have been installed. +The latter is roughly equivalent to the first item returned by +GetOSVersion() in list context. + +Currently the possible values for the OS name are + + Win32s Win95 Win98 WinMe WinNT3.51 WinNT4 Win2000 WinXP/.Net Win2003 + +This routine is just a simple interface into GetOSVersion(). More +specific or demanding situations should use that instead. Another +option would be to use POSIX::uname(), however the latter appears to +report only the OS family name and not the specific OS. In scalar +context it returns just the ID. + +The name "WinXP/.Net" is used for historical reasons only, to maintain +backwards compatibility of the Win32 module. Windows .NET Server has +been renamed as Windows 2003 Server before final release and uses a +different major/minor version number than Windows XP. + +=item Win32::GetShortPathName(PATHNAME) + +[CORE] Returns a representation of PATHNAME composed only of +short (8.3) path components. The result may not necessarily be +shorter than PATHNAME. Compare with Win32::GetFullPathName and +Win32::GetLongPathName. + +=item Win32::GetProcAddress(INSTANCE, PROCNAME) + +[EXT] Returns the address of a function inside a loaded library. The +information about what you can do with this address has been lost in +the mist of time. Use the Win32::API module instead of this deprecated +function. + +=item Win32::GetTickCount() + +[CORE] Returns the number of milliseconds elapsed since the last +system boot. Resolution is limited to system timer ticks (about 10ms +on WinNT and 55ms on Win9X). + +=item Win32::InitiateSystemShutdown + +(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT) + +[EXT] Shutsdown the specified MACHINE, notifying users with the +supplied MESSAGE, within the specified TIMEOUT interval. Forces +closing of all documents without prompting the user if FORCECLOSE is +true, and reboots the machine if REBOOT is true. This function works +only on WinNT. + +=item Win32::IsAdminUser() + +[EXT] Returns non zero if the account in whose security context the +current process/thread is running belongs to the local group of +Administrators in the built-in system domain; returns 0 if not. +Returns the undefined value and prints a warning if an error occurred. +This function always returns 1 on Win9X. + +=item Win32::IsWinNT() + +[CORE] Returns non zero if the Win32 subsystem is Windows NT. + +=item Win32::IsWin95() + +[CORE] Returns non zero if the Win32 subsystem is Windows 95. + +=item Win32::LoadLibrary(LIBNAME) + +[EXT] Loads a dynamic link library into memory and returns its module +handle. This handle can be used with Win32::GetProcAddress and +Win32::FreeLibrary. This function is deprecated. Use the Win32::API +module instead. + +=item Win32::LoginName() + +[CORE] Returns the username of the owner of the current perl process. + +=item Win32::LookupAccountName(SYSTEM, ACCOUNT, DOMAIN, SID, SIDTYPE) + +[EXT] Looks up ACCOUNT on SYSTEM and returns the domain name the SID and +the SID type. + +=item Win32::LookupAccountSID(SYSTEM, SID, ACCOUNT, DOMAIN, SIDTYPE) + +[EXT] Looks up SID on SYSTEM and returns the account name, domain name, +and the SID type. + +=item Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]]) + +[EXT] Create a dialogbox containing MESSAGE. FLAGS specifies the +required icon and buttons according to the following table: + + 0 = OK + 1 = OK and Cancel + 2 = Abort, Retry, and Ignore + 3 = Yes, No and Cancel + 4 = Yes and No + 5 = Retry and Cancel + + MB_ICONSTOP "X" in a red circle + MB_ICONQUESTION question mark in a bubble + MB_ICONEXCLAMATION exclamation mark in a yellow triangle + MB_ICONINFORMATION "i" in a bubble + +TITLE specifies an optional window title. The default is "Perl". + +The function returns the menu id of the selected push button: + + 0 Error + + 1 OK + 2 Cancel + 3 Abort + 4 Retry + 5 Ignore + 6 Yes + 7 No + +=item Win32::NodeName() + +[CORE] Returns the Microsoft Network node-name of the current machine. + +=item Win32::RegisterServer(LIBRARYNAME) + +[EXT] Loads the DLL LIBRARYNAME and calls the function DllRegisterServer. + +=item Win32::SetChildShowWindow(SHOWWINDOW) + +[CORE] Sets the I of child processes started by system(). +By default system() will create a new console window for child +processes if Perl itself is not running from a console. Calling +SetChildShowWindow(0) will make these new console windows invisible. +Calling SetChildShowWindow() without arguments reverts system() to the +default behavior. The return value of SetChildShowWindow() is the +previous setting or C. + +[EXT] The following symbolic constants for SHOWWINDOW are available +(but not exported) from the Win32 module: SW_HIDE, SW_SHOWNORMAL, +SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED and SW_SHOWNOACTIVATE. + +=item Win32::SetCwd(NEWDIRECTORY) + +[CORE] Sets the current active drive and directory. This function does not +work with UNC paths, since the functionality required to required for +such a feature is not available under Windows 95. + +=item Win32::SetLastError(ERROR) + +[CORE] Sets the value of the last error encountered to ERROR. This is +that value that will be returned by the Win32::GetLastError() +function. + +=item Win32::Sleep(TIME) + +[CORE] Pauses for TIME milliseconds. The timeslices are made available +to other processes and threads. + +=item Win32::Spawn(COMMAND, ARGS, PID) + +[CORE] Spawns a new process using the supplied COMMAND, passing in +arguments in the string ARGS. The pid of the new process is stored in +PID. This function is deprecated. Please use the Win32::Process module +instead. + +=item Win32::UnregisterServer(LIBRARYNAME) + +[EXT] Loads the DLL LIBRARYNAME and calls the function +DllUnregisterServer. + +=back + +=cut diff --git a/gnu/usr.bin/perl/win32/ext/Win32/Win32.xs b/gnu/usr.bin/perl/win32/ext/Win32/Win32.xs new file mode 100644 index 00000000000..e15fc815ae3 --- /dev/null +++ b/gnu/usr.bin/perl/win32/ext/Win32/Win32.xs @@ -0,0 +1,652 @@ +#include + +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#define SE_SHUTDOWN_NAMEA "SeShutdownPrivilege" +#define SE_SHUTDOWN_NAMEW L"SeShutdownPrivilege" + +typedef BOOL (WINAPI *PFNSHGetSpecialFolderPath)(HWND, char*, int, BOOL); +typedef HRESULT (WINAPI *PFNSHGetFolderPath)(HWND, int, HANDLE, DWORD, LPTSTR); +#ifndef CSIDL_FLAG_CREATE +# define CSIDL_FLAG_CREATE 0x8000 +#endif + +XS(w32_ExpandEnvironmentStrings) +{ + dXSARGS; + char *lpSource; + BYTE buffer[4096]; + DWORD dwDataLen; + STRLEN n_a; + + if (items != 1) + croak("usage: Win32::ExpandEnvironmentStrings($String);\n"); + + lpSource = (char *)SvPV(ST(0), n_a); + + if (USING_WIDE()) { + WCHAR wSource[MAX_PATH+1]; + WCHAR wbuffer[4096]; + A2WHELPER(lpSource, wSource, sizeof(wSource)); + dwDataLen = ExpandEnvironmentStringsW(wSource, wbuffer, sizeof(wbuffer)/2); + W2AHELPER(wbuffer, buffer, sizeof(buffer)); + } + else + dwDataLen = ExpandEnvironmentStringsA(lpSource, (char*)buffer, sizeof(buffer)); + + XSRETURN_PV((char*)buffer); +} + +XS(w32_IsAdminUser) +{ + dXSARGS; + HINSTANCE hAdvApi32; + BOOL (__stdcall *pfnOpenThreadToken)(HANDLE hThr, DWORD dwDesiredAccess, + BOOL bOpenAsSelf, PHANDLE phTok); + BOOL (__stdcall *pfnOpenProcessToken)(HANDLE hProc, DWORD dwDesiredAccess, + PHANDLE phTok); + BOOL (__stdcall *pfnGetTokenInformation)(HANDLE hTok, + TOKEN_INFORMATION_CLASS TokenInformationClass, + LPVOID lpTokInfo, DWORD dwTokInfoLen, + PDWORD pdwRetLen); + BOOL (__stdcall *pfnAllocateAndInitializeSid)( + PSID_IDENTIFIER_AUTHORITY pIdAuth, + BYTE nSubAuthCount, DWORD dwSubAuth0, + DWORD dwSubAuth1, DWORD dwSubAuth2, + DWORD dwSubAuth3, DWORD dwSubAuth4, + DWORD dwSubAuth5, DWORD dwSubAuth6, + DWORD dwSubAuth7, PSID pSid); + BOOL (__stdcall *pfnEqualSid)(PSID pSid1, PSID pSid2); + PVOID (__stdcall *pfnFreeSid)(PSID pSid); + HANDLE hTok; + DWORD dwTokInfoLen; + TOKEN_GROUPS *lpTokInfo; + SID_IDENTIFIER_AUTHORITY NtAuth = SECURITY_NT_AUTHORITY; + PSID pAdminSid; + int iRetVal; + unsigned int i; + OSVERSIONINFO osver; + + if (items) + croak("usage: Win32::IsAdminUser()"); + + /* There is no concept of "Administrator" user accounts on Win9x systems, + so just return true. */ + memset(&osver, 0, sizeof(OSVERSIONINFO)); + osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osver); + if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) + XSRETURN_YES; + + hAdvApi32 = LoadLibrary("advapi32.dll"); + if (!hAdvApi32) { + warn("Cannot load advapi32.dll library"); + XSRETURN_UNDEF; + } + + pfnOpenThreadToken = (BOOL (__stdcall *)(HANDLE, DWORD, BOOL, PHANDLE)) + GetProcAddress(hAdvApi32, "OpenThreadToken"); + pfnOpenProcessToken = (BOOL (__stdcall *)(HANDLE, DWORD, PHANDLE)) + GetProcAddress(hAdvApi32, "OpenProcessToken"); + pfnGetTokenInformation = (BOOL (__stdcall *)(HANDLE, + TOKEN_INFORMATION_CLASS, LPVOID, DWORD, PDWORD)) + GetProcAddress(hAdvApi32, "GetTokenInformation"); + pfnAllocateAndInitializeSid = (BOOL (__stdcall *)( + PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, + DWORD, DWORD, DWORD, PSID)) + GetProcAddress(hAdvApi32, "AllocateAndInitializeSid"); + pfnEqualSid = (BOOL (__stdcall *)(PSID, PSID)) + GetProcAddress(hAdvApi32, "EqualSid"); + pfnFreeSid = (PVOID (__stdcall *)(PSID)) + GetProcAddress(hAdvApi32, "FreeSid"); + + if (!(pfnOpenThreadToken && pfnOpenProcessToken && + pfnGetTokenInformation && pfnAllocateAndInitializeSid && + pfnEqualSid && pfnFreeSid)) + { + warn("Cannot load functions from advapi32.dll library"); + FreeLibrary(hAdvApi32); + XSRETURN_UNDEF; + } + + if (!pfnOpenThreadToken(GetCurrentThread(), TOKEN_QUERY, FALSE, &hTok)) { + if (!pfnOpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hTok)) { + warn("Cannot open thread token or process token"); + FreeLibrary(hAdvApi32); + XSRETURN_UNDEF; + } + } + + pfnGetTokenInformation(hTok, TokenGroups, NULL, 0, &dwTokInfoLen); + if (!New(1, lpTokInfo, dwTokInfoLen, TOKEN_GROUPS)) { + warn("Cannot allocate token information structure"); + CloseHandle(hTok); + FreeLibrary(hAdvApi32); + XSRETURN_UNDEF; + } + + if (!pfnGetTokenInformation(hTok, TokenGroups, lpTokInfo, dwTokInfoLen, + &dwTokInfoLen)) + { + warn("Cannot get token information"); + Safefree(lpTokInfo); + CloseHandle(hTok); + FreeLibrary(hAdvApi32); + XSRETURN_UNDEF; + } + + if (!pfnAllocateAndInitializeSid(&NtAuth, 2, SECURITY_BUILTIN_DOMAIN_RID, + DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &pAdminSid)) + { + warn("Cannot allocate administrators' SID"); + Safefree(lpTokInfo); + CloseHandle(hTok); + FreeLibrary(hAdvApi32); + XSRETURN_UNDEF; + } + + iRetVal = 0; + for (i = 0; i < lpTokInfo->GroupCount; ++i) { + if (pfnEqualSid(lpTokInfo->Groups[i].Sid, pAdminSid)) { + iRetVal = 1; + break; + } + } + + pfnFreeSid(pAdminSid); + Safefree(lpTokInfo); + CloseHandle(hTok); + FreeLibrary(hAdvApi32); + + EXTEND(SP, 1); + ST(0) = sv_2mortal(newSViv(iRetVal)); + XSRETURN(1); +} + +XS(w32_LookupAccountName) +{ + dXSARGS; + char SID[400]; + DWORD SIDLen; + SID_NAME_USE snu; + char Domain[256]; + DWORD DomLen; + STRLEN n_a; + BOOL bResult; + + if (items != 5) + croak("usage: Win32::LookupAccountName($system, $account, $domain, " + "$sid, $sidtype);\n"); + + SIDLen = sizeof(SID); + DomLen = sizeof(Domain); + + if (USING_WIDE()) { + WCHAR wSID[sizeof(SID)]; + WCHAR wDomain[sizeof(Domain)]; + WCHAR wSystem[MAX_PATH+1]; + WCHAR wAccount[MAX_PATH+1]; + A2WHELPER(SvPV(ST(0),n_a), wSystem, sizeof(wSystem)); + A2WHELPER(SvPV(ST(1),n_a), wAccount, sizeof(wAccount)); + bResult = LookupAccountNameW(wSystem, /* System */ + wAccount, /* Account name */ + &wSID, /* SID structure */ + &SIDLen, /* Size of SID buffer */ + wDomain, /* Domain buffer */ + &DomLen, /* Domain buffer size */ + &snu); /* SID name type */ + if (bResult) { + W2AHELPER(wSID, SID, SIDLen); + W2AHELPER(wDomain, Domain, DomLen); + } + } + else + bResult = LookupAccountNameA(SvPV(ST(0),n_a), /* System */ + SvPV(ST(1),n_a), /* Account name */ + &SID, /* SID structure */ + &SIDLen, /* Size of SID buffer */ + Domain, /* Domain buffer */ + &DomLen, /* Domain buffer size */ + &snu); /* SID name type */ + if (bResult) { + sv_setpv(ST(2), Domain); + sv_setpvn(ST(3), SID, SIDLen); + sv_setiv(ST(4), snu); + XSRETURN_YES; + } + else { + GetLastError(); + XSRETURN_NO; + } +} /* NTLookupAccountName */ + + +XS(w32_LookupAccountSID) +{ + dXSARGS; + PSID sid; + char Account[256]; + DWORD AcctLen = sizeof(Account); + char Domain[256]; + DWORD DomLen = sizeof(Domain); + SID_NAME_USE snu; + long retval; + STRLEN n_a; + BOOL bResult; + + if (items != 5) + croak("usage: Win32::LookupAccountSID($system, $sid, $account, $domain, $sidtype);\n"); + + sid = SvPV(ST(1), n_a); + if (IsValidSid(sid)) { + if (USING_WIDE()) { + WCHAR wSID[sizeof(SID)]; + WCHAR wDomain[sizeof(Domain)]; + WCHAR wSystem[MAX_PATH+1]; + WCHAR wAccount[sizeof(Account)]; + A2WHELPER(SvPV(ST(0),n_a), wSystem, sizeof(wSystem)); + + bResult = LookupAccountSidW(wSystem, /* System */ + sid, /* SID structure */ + wAccount, /* Account name buffer */ + &AcctLen, /* name buffer length */ + wDomain, /* Domain buffer */ + &DomLen, /* Domain buffer length */ + &snu); /* SID name type */ + if (bResult) { + W2AHELPER(wAccount, Account, AcctLen); + W2AHELPER(wDomain, Domain, DomLen); + } + } + else + bResult = LookupAccountSidA(SvPV(ST(0),n_a), /* System */ + sid, /* SID structure */ + Account, /* Account name buffer */ + &AcctLen, /* name buffer length */ + Domain, /* Domain buffer */ + &DomLen, /* Domain buffer length */ + &snu); /* SID name type */ + if (bResult) { + sv_setpv(ST(2), Account); + sv_setpv(ST(3), Domain); + sv_setiv(ST(4), (IV)snu); + XSRETURN_YES; + } + else { + GetLastError(); + XSRETURN_NO; + } + } + else { + GetLastError(); + XSRETURN_NO; + } +} /* NTLookupAccountSID */ + +XS(w32_InitiateSystemShutdown) +{ + dXSARGS; + HANDLE hToken; /* handle to process token */ + TOKEN_PRIVILEGES tkp; /* pointer to token structure */ + BOOL bRet; + WCHAR wbuffer[MAX_PATH+1]; + char *machineName, *message; + STRLEN n_a; + + if (items != 5) + croak("usage: Win32::InitiateSystemShutdown($machineName, $message, " + "$timeOut, $forceClose, $reboot);\n"); + + machineName = SvPV(ST(0), n_a); + if (USING_WIDE()) { + A2WHELPER(machineName, wbuffer, sizeof(wbuffer)); + } + + if (OpenProcessToken(GetCurrentProcess(), + TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, + &hToken)) + { + if (USING_WIDE()) + LookupPrivilegeValueW(wbuffer, + SE_SHUTDOWN_NAMEW, + &tkp.Privileges[0].Luid); + else + LookupPrivilegeValueA(machineName, + SE_SHUTDOWN_NAMEA, + &tkp.Privileges[0].Luid); + + tkp.PrivilegeCount = 1; /* only setting one */ + tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + + /* Get shutdown privilege for this process. */ + AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, + (PTOKEN_PRIVILEGES)NULL, 0); + } + + message = SvPV(ST(1), n_a); + if (USING_WIDE()) { + WCHAR* pWBuf; + int length = strlen(message)+1; + New(0, pWBuf, length, WCHAR); + A2WHELPER(message, pWBuf, length*sizeof(WCHAR)); + bRet = InitiateSystemShutdownW(wbuffer, pWBuf, + SvIV(ST(2)), SvIV(ST(3)), SvIV(ST(4))); + Safefree(pWBuf); + } + else + bRet = InitiateSystemShutdownA(machineName, message, + SvIV(ST(2)), SvIV(ST(3)), SvIV(ST(4))); + + /* Disable shutdown privilege. */ + tkp.Privileges[0].Attributes = 0; + AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, + (PTOKEN_PRIVILEGES)NULL, 0); + CloseHandle(hToken); + XSRETURN_IV(bRet); +} + +XS(w32_AbortSystemShutdown) +{ + dXSARGS; + HANDLE hToken; /* handle to process token */ + TOKEN_PRIVILEGES tkp; /* pointer to token structure */ + BOOL bRet; + char *machineName; + STRLEN n_a; + WCHAR wbuffer[MAX_PATH+1]; + + if (items != 1) + croak("usage: Win32::AbortSystemShutdown($machineName);\n"); + + machineName = SvPV(ST(0), n_a); + if (USING_WIDE()) { + A2WHELPER(machineName, wbuffer, sizeof(wbuffer)); + } + + if (OpenProcessToken(GetCurrentProcess(), + TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, + &hToken)) + { + if (USING_WIDE()) + LookupPrivilegeValueW(wbuffer, + SE_SHUTDOWN_NAMEW, + &tkp.Privileges[0].Luid); + else + LookupPrivilegeValueA(machineName, + SE_SHUTDOWN_NAMEA, + &tkp.Privileges[0].Luid); + + tkp.PrivilegeCount = 1; /* only setting one */ + tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + + /* Get shutdown privilege for this process. */ + AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, + (PTOKEN_PRIVILEGES)NULL, 0); + } + + if (USING_WIDE()) { + bRet = AbortSystemShutdownW(wbuffer); + } + else + bRet = AbortSystemShutdownA(machineName); + + /* Disable shutdown privilege. */ + tkp.Privileges[0].Attributes = 0; + AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, + (PTOKEN_PRIVILEGES)NULL, 0); + CloseHandle(hToken); + XSRETURN_IV(bRet); +} + + +XS(w32_MsgBox) +{ + dXSARGS; + char *msg; + char *title = "Perl"; + DWORD flags = MB_ICONEXCLAMATION; + STRLEN n_a; + I32 result; + + if (items < 1 || items > 3) + croak("usage: Win32::MsgBox($message [, $flags [, $title]]);\n"); + + msg = SvPV(ST(0), n_a); + if (items > 1) { + flags = SvIV(ST(1)); + if (items > 2) + title = SvPV(ST(2), n_a); + } + if (USING_WIDE()) { + WCHAR* pMsg; + WCHAR* pTitle; + int length; + length = strlen(msg)+1; + New(0, pMsg, length, WCHAR); + A2WHELPER(msg, pMsg, length*sizeof(WCHAR)); + length = strlen(title)+1; + New(0, pTitle, length, WCHAR); + A2WHELPER(title, pTitle, length*sizeof(WCHAR)); + result = MessageBoxW(GetActiveWindow(), pMsg, pTitle, flags); + Safefree(pMsg); + Safefree(pTitle); + } + else + result = MessageBoxA(GetActiveWindow(), msg, title, flags); + + XSRETURN_IV(result); +} + +XS(w32_LoadLibrary) +{ + dXSARGS; + STRLEN n_a; + HANDLE hHandle; + char* lpName; + + if (items != 1) + croak("usage: Win32::LoadLibrary($libname)\n"); + lpName = (char *)SvPV(ST(0),n_a); + if (USING_WIDE()) { + WCHAR wbuffer[MAX_PATH+1]; + A2WHELPER(lpName, wbuffer, sizeof(wbuffer)); + hHandle = LoadLibraryW(wbuffer); + } + else + hHandle = LoadLibraryA(lpName); + XSRETURN_IV((long)hHandle); +} + +XS(w32_FreeLibrary) +{ + dXSARGS; + if (items != 1) + croak("usage: Win32::FreeLibrary($handle)\n"); + if (FreeLibrary((HINSTANCE) SvIV(ST(0)))) { + XSRETURN_YES; + } + XSRETURN_NO; +} + +XS(w32_GetProcAddress) +{ + dXSARGS; + STRLEN n_a; + if (items != 2) + croak("usage: Win32::GetProcAddress($hinstance, $procname)\n"); + XSRETURN_IV((long)GetProcAddress((HINSTANCE)SvIV(ST(0)), SvPV(ST(1), n_a))); +} + +XS(w32_RegisterServer) +{ + dXSARGS; + BOOL result = FALSE; + HINSTANCE hnd; + FARPROC func; + STRLEN n_a; + char* lpName; + + if (items != 1) + croak("usage: Win32::RegisterServer($libname)\n"); + + lpName = SvPV(ST(0),n_a); + if (USING_WIDE()) { + WCHAR wbuffer[MAX_PATH+1]; + A2WHELPER(lpName, wbuffer, sizeof(wbuffer)); + hnd = LoadLibraryW(wbuffer); + } + else + hnd = LoadLibraryA(lpName); + + if (hnd) { + func = GetProcAddress(hnd, "DllRegisterServer"); + if (func && func() == 0) + result = TRUE; + FreeLibrary(hnd); + } + if (result) + XSRETURN_YES; + else + XSRETURN_NO; +} + +XS(w32_UnregisterServer) +{ + dXSARGS; + BOOL result = FALSE; + HINSTANCE hnd; + FARPROC func; + STRLEN n_a; + char* lpName; + + if (items != 1) + croak("usage: Win32::UnregisterServer($libname)\n"); + + lpName = SvPV(ST(0),n_a); + if (USING_WIDE()) { + WCHAR wbuffer[MAX_PATH+1]; + A2WHELPER(lpName, wbuffer, sizeof(wbuffer)); + hnd = LoadLibraryW(wbuffer); + } + else + hnd = LoadLibraryA(lpName); + + if (hnd) { + func = GetProcAddress(hnd, "DllUnregisterServer"); + if (func && func() == 0) + result = TRUE; + FreeLibrary(hnd); + } + if (result) + XSRETURN_YES; + else + XSRETURN_NO; +} + +/* XXX rather bogus */ +XS(w32_GetArchName) +{ + dXSARGS; + XSRETURN_PV(getenv("PROCESSOR_ARCHITECTURE")); +} + +XS(w32_GetChipName) +{ + dXSARGS; + SYSTEM_INFO sysinfo; + + Zero(&sysinfo,1,SYSTEM_INFO); + GetSystemInfo(&sysinfo); + /* XXX docs say dwProcessorType is deprecated on NT */ + XSRETURN_IV(sysinfo.dwProcessorType); +} + +XS(w32_GuidGen) +{ + dXSARGS; + GUID guid; + char szGUID[50] = {'\0'}; + HRESULT hr = CoCreateGuid(&guid); + + if (SUCCEEDED(hr)) { + LPOLESTR pStr = NULL; + StringFromCLSID(&guid, &pStr); + WideCharToMultiByte(CP_ACP, 0, pStr, wcslen(pStr), szGUID, + sizeof(szGUID), NULL, NULL); + + XSRETURN_PV(szGUID); + } + else + XSRETURN_UNDEF; +} + +XS(w32_GetFolderPath) +{ + dXSARGS; + char path[MAX_PATH+1]; + int folder; + int create = 0; + HMODULE module; + + if (items != 1 && items != 2) + croak("usage: Win32::GetFolderPath($csidl [, $create])\n"); + + folder = SvIV(ST(0)); + if (items == 2) + create = SvTRUE(ST(1)) ? CSIDL_FLAG_CREATE : 0; + + /* We are not bothering with USING_WIDE() anymore, + * because this is not how Unicode works with Perl. + * Nobody seems to use "perl -C" anyways. + */ + module = LoadLibrary("shfolder.dll"); + if (module) { + PFNSHGetFolderPath pfn; + pfn = (PFNSHGetFolderPath)GetProcAddress(module, "SHGetFolderPathA"); + if (pfn && SUCCEEDED(pfn(NULL, folder|create, NULL, 0, path))) { + FreeLibrary(module); + XSRETURN_PV(path); + } + FreeLibrary(module); + } + + module = LoadLibrary("shell32.dll"); + if (module) { + PFNSHGetSpecialFolderPath pfn; + pfn = (PFNSHGetSpecialFolderPath) + GetProcAddress(module, "SHGetSpecialFolderPathA"); + if (pfn && pfn(NULL, path, folder, !!create)) { + FreeLibrary(module); + XSRETURN_PV(path); + } + FreeLibrary(module); + } + XSRETURN_UNDEF; +} + +XS(boot_Win32) +{ + dXSARGS; + char *file = __FILE__; + + newXS("Win32::LookupAccountName", w32_LookupAccountName, file); + newXS("Win32::LookupAccountSID", w32_LookupAccountSID, file); + newXS("Win32::InitiateSystemShutdown", w32_InitiateSystemShutdown, file); + newXS("Win32::AbortSystemShutdown", w32_AbortSystemShutdown, file); + newXS("Win32::ExpandEnvironmentStrings", w32_ExpandEnvironmentStrings, file); + newXS("Win32::MsgBox", w32_MsgBox, file); + newXS("Win32::LoadLibrary", w32_LoadLibrary, file); + newXS("Win32::FreeLibrary", w32_FreeLibrary, file); + newXS("Win32::GetProcAddress", w32_GetProcAddress, file); + newXS("Win32::RegisterServer", w32_RegisterServer, file); + newXS("Win32::UnregisterServer", w32_UnregisterServer, file); + newXS("Win32::GetArchName", w32_GetArchName, file); + newXS("Win32::GetChipName", w32_GetChipName, file); + newXS("Win32::GuidGen", w32_GuidGen, file); + newXS("Win32::GetFolderPath", w32_GetFolderPath, file); + newXS("Win32::IsAdminUser", w32_IsAdminUser, file); + + XSRETURN_YES; +} diff --git a/gnu/usr.bin/perl/win32/genmk95.pl b/gnu/usr.bin/perl/win32/genmk95.pl index 8fe4f86dbfc..cf31457ab10 100644 --- a/gnu/usr.bin/perl/win32/genmk95.pl +++ b/gnu/usr.bin/perl/win32/genmk95.pl @@ -64,6 +64,7 @@ while (<$in>) if (/^(.*?)(&&|\|\|)(.*)$/) # two commands separated by && or || { my ($one, $sep, $two) = ($1, $2, $3); + $one =~ s/^\t(?:-(?!-))?\@?(.*?)$/\t$1/; # no -,@ in group recipes LINE_CONT: if ($two =~ /\\\s*$/) { @@ -77,6 +78,7 @@ LINE_CONT: next; } # fall through - no need for special handling + s/^\t(?:-(?!-))?\@?(.*?)$/\t$1/; # no -,@ in group recipes print $out "$_\n"; } print $out "]\n" if ($inrec); diff --git a/gnu/usr.bin/perl/win32/makeico.pl b/gnu/usr.bin/perl/win32/makeico.pl new file mode 100644 index 00000000000..2585cf0d681 --- /dev/null +++ b/gnu/usr.bin/perl/win32/makeico.pl @@ -0,0 +1,100 @@ +binmode STDOUT; +while () { + chomp; + print pack "H*", $_; +} + +# Create new hex data with +# perl -wle "binmode STDIN; $/ = \32; while (<>) {print unpack 'H*', $_}"