Mercurial > illumos > illumos-gate
changeset 13162:61ea578f8715
7 Need locale databases
Reviewed by: richlowe@richlowe.net
Approved by: richlowe@richlowe.net
line wrap: on
line diff
--- a/exception_lists/hdrchk Tue Aug 31 01:26:06 2010 -0400 +++ b/exception_lists/hdrchk Mon Aug 30 23:48:20 2010 -0700 @@ -16,6 +16,9 @@ usr/src/cmd/krb5/ldap_util/kdb5_ldap_services.h usr/src/cmd/krb5/ldap_util/kdb5_ldap_util.h usr/src/cmd/krb5/slave/kprop.h +usr/src/cmd/mklocale/collate/common.h +usr/src/cmd/mklocale/ctype/extern.h +usr/src/cmd/mklocale/ctype/ldef.h usr/src/common/openssl/crypto/krb5/krb5_asn.h usr/src/lib/gss_mechs/mech_krb5/et/error_table.h usr/src/lib/gss_mechs/mech_krb5/et/internal.h
--- a/exception_lists/mapfilechk Tue Aug 31 01:26:06 2010 -0400 +++ b/exception_lists/mapfilechk Mon Aug 30 23:48:20 2010 -0700 @@ -43,5 +43,6 @@ usr/src/lib/README.mapfiles usr/src/lib/fm/topo/maps/Makefile.map usr/src/cmd/perl/* +usr/src/cmd/mklocale/* usr/src/tools/onbld/Checks/Mapfile* usr/src/tools/scripts/*
--- a/usr/src/cmd/Makefile Tue Aug 31 01:26:06 2010 -0400 +++ b/usr/src/cmd/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -254,6 +254,7 @@ mkdir \ mkfifo \ mkfile \ + mklocale \ mkmsgs \ mknod \ mkpwdict \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,41 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +PROG= mklocale + +include ../Makefile.cmd + +SUBDIRS = ctype collate messages monetary numeric time + +all:= TARGET= all +install:= TARGET= install +clean:= TARGET= clean +clobber:= TARGET= clobber +lint:= TARGET= lint +check:= TARGET= check + +.KEEP_STATE: + +.PARALLEL: $(SUBDIRS) + +all clean install lint check clobber: $(SUBDIRS) + +# We don't deliver any programs, so we don't deliver messaging +# data for them either. +_msg: + +$(SUBDIRS): FRC + cd $@; pwd; $(MAKE) $(TARGET) + +FRC:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/Makefile.common Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,42 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +include $(SRC)/cmd/Makefile.cmd + +LOCALES= \ + en_AU.ISO8859-1 en_AU.ISO8859-15 en_AU.US-ASCII en_AU.UTF-8 \ + en_CA.ISO8859-1 en_CA.ISO8859-15 en_CA.US-ASCII en_CA.UTF-8 \ + en_GB.ISO8859-1 en_GB.ISO8859-15 en_GB.US-ASCII en_GB.UTF-8 \ + en_IE.UTF-8 \ + en_NZ.ISO8859-1 en_NZ.ISO8859-15 en_NZ.US-ASCII en_NZ.UTF-8 \ + en_US.ISO8859-1 en_US.ISO8859-15 en_US.US-ASCII en_US.UTF-8 + +MACHLOCALES=$(LOCALES:%=$(MACH)/%) + +ROOTLOCALE=$(ROOT)/usr/lib/locale + +ROOTLOCDIRS=\ + $(ROOT)/usr .WAIT \ + $(ROOT)/usr/lib .WAIT \ + $(ROOT)/usr/lib/locale .WAIT \ + $(LOCALES:%=$(ROOTLOCALE)/%) .WAIT \ + $(LOCALES:%=$(ROOTLOCALE)/%/$(CATEGORY)) + +ROOTLOCDATA=\ + $(LOCALES:%=$(ROOTLOCALE)/%/$(CATEGORY)/LCL_DATA) + +$(ROOTLOCDATA) := FILEMODE=0444 + +HASHSTRIP = $(GREP) -v '^$(POUND_SIGN)' +INS.nohash = $(RM) $@; $(GREP) -v '^$(POUND_SIGN)' $< > $@
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/Makefile.targ Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,41 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +include $(SRC)/cmd/Makefile.targ + +install: all $(ROOTLOCDIRS) .WAIT $(ROOTLOCDATA) + +$(MACH) $(ROOTLOCDIRS): + $(INS.dir) + +$(MACH)/%.o: %.c $(MACH) + $(COMPILE.c) -o $@ $< + +$(ROOTLOCALE)/%/LC_CTYPE/LCL_DATA: $(MACH)/% + $(INS.rename) + +$(ROOTLOCALE)/%/LC_COLLATE/LCL_DATA: $(MACH)/% + $(INS.rename) + +$(ROOTLOCALE)/%/LC_MESSAGES/LCL_DATA: $(MACH)/% + $(INS.rename) + +$(ROOTLOCALE)/%/LC_MONETARY/LCL_DATA: $(MACH)/% + $(INS.rename) + +$(ROOTLOCALE)/%/LC_NUMERIC/LCL_DATA: $(MACH)/% + $(INS.rename) + +$(ROOTLOCALE)/%/LC_TIME/LCL_DATA: $(MACH)/% + $(INS.rename)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/README.locale_name Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,8 @@ + +Locale name string format must be compliant with XPG3 and +using following format. + <locale name> ::= <language>_<territory>.<encoding> + <language> ::= based on ISO 639 + <territory> ::= based on ISO 3166 (country code) + <encoding> ::= X11 codeset preferred +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,88 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +PROG= mkcollate +CATEGORY=LC_COLLATE + +include ../Makefile.common + +CPPFLAGS += -I$(SRC)/lib/libc/port/locale -D_FILE_OFFSET_BITS=64 +YFLAGS = -d -b mkcollate_yacc +LFLAGS = -t + +OBJS = $(MACH)/mkcollate_lex.o $(MACH)/mkcollate_yacc.tab.o +HDRS = common.h +CLEANFILES = mkcollate_yacc.tab.c mkcollate_yacc.tab.h mkcollate_lex.c + +en_COMMON = en_AU en_CA en_GB en_NZ en_US +en_ASCII = $(en_COMMON:%=%.US-ASCII) +en_LATIN1 = $(en_COMMON:%=%.ISO8859-1) +en_LATIN15 = $(en_COMMON:%=%.ISO8859-15) +en_UTF8 = $(en_COMMON:%=%.UTF-8) en_IE.UTF-8 +en_LOCALES = $(en_ASCII) $(en_LATIN1) $(en_LATIN15) $(en_UTF8) + +.KEEP_STATE: + +all: $(MACH)/$(PROG) $(MACHLOCALES) + +$(MACH)/$(PROG): $(OBJS) + $(LINK.c) $(OBJS) -o $@ $(LDLIBS) + $(POST_PROCESS) + +$(en_LATIN1:%=$(MACH)/%): $(MACH)/en.ISO8859-1 + $(RM) $@ + $(LN) $(MACH)/en.ISO8859-1 $@ + +$(en_LATIN15:%=$(MACH)/%): $(MACH)/en.ISO8859-15 + $(RM) $@ + $(LN) $(MACH)/en.ISO8859-15 $@ + +$(en_ASCII:%=$(MACH)/%): $(MACH)/en.US-ASCII + $(RM) $@ + $(LN) $(MACH)/en.US-ASCII $@ + +$(en_UTF8:%=$(MACH)/%): $(MACH)/en.UTF-8 + $(RM) $@ + $(LN) $(MACH)/en.UTF-8 $@ + +mkcollate_lex.c: mkcollate_lex.l mkcollate_yacc.tab.h $(HDRS) + $(FLEX) $(LFLAGS) mkcollate_lex.l > $@ + +mkcollate_yacc.tab.c mkcollate_yacc.tab.h: mkcollate_yacc.y $(HDRS) + $(YACC) $(YFLAGS) mkcollate_yacc.y + +clean: + $(RM) $(OBJS) $(CLEANFILES) + $(RM) -r $(MACH) + +# +# Lint does nothing for us, because yacc and lex outputs are themselves +# not lint clean. This is something that it would be good to address. +# +lint: + +# +# Likewise, the yacc and lex outputs are not cstyle clean. +# +check: + $(CSTYLE) -cPp $(HDRS) + + +# +# Rules for building encoding data files. +# +$(MACH)/%: data/%.src $(MACH)/$(PROG) + $(MACH)/$(PROG) -o $@ -I data $(@:$(MACH)/%=data/%.src) + +include ../Makefile.targ
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/THIRDPARTYLICENSE Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,24 @@ +Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua> + at Electronni Visti IA, Kiev, Ukraine. + All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/THIRDPARTYLICENSE.descrip Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,1 @@ +MKCOLLATE UTILITY
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/common.h Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,8 @@ + +#define CHARMAP_SYMBOL_LEN 64 +#define BUFSIZE 80 + +extern int line_no; + +extern uchar_t charmap_table[UCHAR_MAX + 1][CHARMAP_SYMBOL_LEN]; +extern char map_name[FILENAME_MAX];
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/en.ISO8859-1.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,36 @@ +# latin1 (backward compatible with ASCII) +# +charmap map.ISO8859-1 +order \ +# controls + <NU>;...;<US>;<PA>;...;<AC>;\ +# + <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\ + <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\ + %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\ +# digits + (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\ +# + :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\ +# capital + (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\ + B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\ + F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\ + J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\ + P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\ + V;W;X;(Y,<Y'>);Z;\ + <D->;<TH>;\ +# + [;\\;];^;<':>;_;<'m>;<''>;`;\ +# small + (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\ + b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\ + f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\ + j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\ + p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\ + v;w;x;(y,<y'>,<y:>);z;\ + <d->;<th>;<ss>;\ +# + \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\ +# remains + <-a>;<-o>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/en.ISO8859-15.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,36 @@ +# latin1 (backward compatible with ASCII) +# +charmap map.ISO8859-15 +order \ +# controls + <NU>;...;<US>;<PA>;...;<AC>;\ +# + <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\ + <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\ + %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\ +# digits + 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\ +# + :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\ +# capital + (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\ + B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\ + F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\ + J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\ + P;...;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\ + V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\ + <D->;<TH>;\ +# + [;\\;];^;_;<'m>;`;\ +# small + (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\ + b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\ + f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\ + j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\ + p;...;r;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\ + v;w;x;(y,<y'>,<y:>);(z,<z<>);\ + <d->;<th>;<ss>;\ +# + \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\ +# remains + <-a>;<-o>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/en.US-ASCII.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,6 @@ +# +# English locales are already in correct sorted order for the following +# encodings: US-ASCII, ISO8859-1, ISO8859-15, and UTF-8. +# +order \ + \x00;...;\xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/en.UTF-8.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,6 @@ +# +# English locales are already in correct sorted order for the following +# encodings: US-ASCII, ISO8859-1, ISO8859-15, and UTF-8. +# +order \ + \x00;...;\xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ARMSCII-8 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,143 @@ +# +# map.ARMSCII-8 defined by Vahe Khachikyan <vahe@khachikyan.de> +# +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +armeternity \xA1 +armew \xA2 +armfullstop \xA3 +armparenright \xA4 +armparenleft \xA5 +armquotright \xA6 +armquotleft \xA7 +armemdash \xA8 +armdot \xA9 +armsep \xAA +armcomma \xAB +armendash \xAC +armyentamna \xAD +armellipsis \xAE +armexclam \xAF +armaccent \xB0 +armquestion \xB1 +Armayb \xB2 +armayb \xB3 +Armben \xB4 +armben \xB5 +Armgim \xB6 +armgim \xB7 +Armda \xB8 +armda \xB9 +Armyech \xBA +armyech \xBB +Armza \xBC +armza \xBD +Arme \xBE +arme \xBF +Armat \xC0 +armat \xC1 +Armto \xC2 +armto \xC3 +Armzhe \xC4 +armzhe \xC5 +Armini \xC6 +armini \xC7 +Armlyun \xC8 +armlyun \xC9 +Armkhe \xCA +armkhe \xCB +Armtsa \xCC +armtsa \xCD +Armken \xCE +armken \xCF +Armho \xD0 +armho \xD1 +Armdza \xD2 +armdza \xD3 +Armghat \xD4 +armghat \xD5 +Armtche \xD6 +armtche \xD7 +Armmen \xD8 +armmen \xD9 +Armhi \xDA +armhi \xDB +Armnu \xDC +armnu \xDD +Armsha \xDE +armsha \xDF +Armvo \xE0 +armvo \xE1 +Armcha \xE2 +armcha \xE3 +Armpe \xE4 +armpe \xE5 +Armje \xE6 +armje \xE7 +Armra \xE8 +armra \xE9 +Armse \xEA +armse \xEB +Armvev \xEC +armvev \xED +Armtyun \xEE +armtyun \xEF +Armre \xF0 +armre \xF1 +Armtso \xF2 +armtso \xF3 +Armvyun \xF4 +armvyun \xF5 +Armpyur \xF6 +armpyur \xF7 +Armke \xF8 +armke \xF9 +Armo \xFA +armo \xFB +Armfe \xFC +armfe \xFD +armapostrophe \xFE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.CP1131 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +A= \x80 +B= \x81 +V= \x82 +G= \x83 +D= \x84 +E= \x85 +Z% \x86 +Z= \x87 +I= \x88 +J= \x89 +K= \x8a +L= \x8b +M= \x8c +N= \x8d +O= \x8e +P= \x8f +R= \x90 +S= \x91 +T= \x92 +U= \x93 +F= \x94 +H= \x95 +C= \x96 +C% \x97 +S% \x98 +Sc \x99 +=" \x9a +Y= \x9b +%" \x9c +JE \x9d +JU \x9e +JA \x9f +a= \xa0 +b= \xa1 +v= \xa2 +g= \xa3 +d= \xa4 +e= \xa5 +z% \xa6 +z= \xa7 +i= \xa8 +j= \xa9 +k= \xaa +l= \xab +m= \xac +n= \xad +o= \xae +p= \xaf +.S \xb0 +:S \xb1 +?S \xb2 +vv \xb3 +vl \xb4 +vL \xb5 +Vl \xb6 +Dl \xb7 +dL \xb8 +VL \xb9 +VV \xba +LD \xbb +UL \xbc +Ul \xbd +uL \xbe +dl \xbf +ur \xc0 +uh \xc1 +dh \xc2 +vr \xc3 +hh \xc4 +vh \xc5 +vR \xc6 +Vr \xc7 +UR \xc8 +DR \xc9 +UH \xca +DH \xcb +VR \xcc +HH \xcd +VH \xce +uH \xcf +Uh \xd0 +dH \xd1 +Dh \xd2 +Ur \xd3 +uR \xd4 +dR \xd5 +Dr \xd6 +Vh \xd7 +vH \xd8 +ul \xd9 +dr \xda +FB \xdb +LB \xdc +lB \xdd +RB \xde +TB \xdf +r= \xe0 +s= \xe1 +t= \xe2 +u= \xe3 +f= \xe4 +h= \xe5 +c= \xe6 +c% \xe7 +s% \xe8 +sc \xe9 +=' \xea +y= \xeb +%' \xec +je \xed +ju \xee +ja \xef +IO \xf0 +io \xf1 +IE \xf2 +ie \xf3 +YI \xf4 +yi \xf5 +V% \xf6 +v% \xf7 +II \xf8 +ii \xf9 +.M \xfa +Cu \xfb +G3 \xfc +g3 \xfd +Sb \xfe +NS \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.CP1251 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,256 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +! \x21 +" \x22 +Nb \x23 +DO \x24 +% \x25 +& \x26 +' \x27 +( \x28 +) \x29 +* \x2a ++ \x2b +, \x2c +- \x2d +. \x2e +/ \x2f +0 \x30 +1 \x31 +2 \x32 +3 \x33 +4 \x34 +5 \x35 +6 \x36 +7 \x37 +8 \x38 +9 \x39 +: \x3a +; \x3b +< \x3c += \x3d +> \x3e +? \x3f +At \x40 +A \x41 +B \x42 +C \x43 +D \x44 +E \x45 +F \x46 +G \x47 +H \x48 +I \x49 +J \x4a +K \x4b +L \x4c +M \x4d +N \x4e +O \x4f +P \x50 +Q \x51 +R \x52 +S \x53 +T \x54 +U \x55 +V \x56 +W \x57 +X \x58 +Y \x59 +Z \x5a +<( \x5b +// \x5c +)> \x5d +'> \x5e +_ \x5f +'! \x60 +a \x61 +b \x62 +c \x63 +d \x64 +e \x65 +f \x66 +g \x67 +h \x68 +i \x69 +j \x6a +k \x6b +l \x6c +m \x6d +n \x6e +o \x6f +p \x70 +q \x71 +r \x72 +s \x73 +t \x74 +u \x75 +v \x76 +w \x77 +x \x78 +y \x79 +z \x7a +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +D% \x80 +G% \x81 +.9 \x82 +g% \x83 +:9 \x84 +.3 \x85 +/- \x86 +/= \x87 +Eu \x88 +%0 \x89 +LJ \x8a +<1 \x8b +NJ \x8c +KJ \x8d +Ts \x8e +DZ \x8f +d% \x90 +'6 \x91 +'9 \x92 +"6 \x93 +"9 \x94 +sb \x95 +-N \x96 +-M \x97 +FB \x98 +TM \x99 +lj \x9a +>1 \x9b +nj \x9c +kj \x9d +ts \x9e +dz \x9f +NS \xa0 +V% \xa1 +v% \xa2 +J% \xa3 +Cu \xa4 +G3 \xa5 +BB \xa6 +SE \xa7 +IO \xa8 +Co \xa9 +IE \xaa +<< \xab +NO \xac +-- \xad +Rg \xae +YI \xaf +DG \xb0 ++- \xb1 +II \xb2 +ii \xb3 +g3 \xb4 +My \xb5 +PI \xb6 +.M \xb7 +io \xb8 +N0 \xb9 +ie \xba +>> \xbb +j% \xbc +DS \xbd +ds \xbe +yi \xbf +A= \xc0 +B= \xc1 +V= \xc2 +G= \xc3 +D= \xc4 +E= \xc5 +Z% \xc6 +Z= \xc7 +I= \xc8 +J= \xc9 +K= \xca +L= \xcb +M= \xcc +N= \xcd +O= \xce +P= \xcf +R= \xd0 +S= \xd1 +T= \xd2 +U= \xd3 +F= \xd4 +H= \xd5 +C= \xd6 +C% \xd7 +S% \xd8 +Sc \xd9 +=" \xda +Y= \xdb +%" \xdc +JE \xdd +JU \xde +JA \xdf +a= \xe0 +b= \xe1 +v= \xe2 +g= \xe3 +d= \xe4 +e= \xe5 +z% \xe6 +z= \xe7 +i= \xe8 +j= \xe9 +k= \xea +l= \xeb +m= \xec +n= \xed +o= \xee +p= \xef +r= \xf0 +s= \xf1 +t= \xf2 +u= \xf3 +f= \xf4 +h= \xf5 +c= \xf6 +c% \xf7 +s% \xf8 +sc \xf9 +=' \xfa +y= \xfb +%' \xfc +je \xfd +ju \xfe +ja \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.CP866 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +A= \x80 +B= \x81 +V= \x82 +G= \x83 +D= \x84 +E= \x85 +Z% \x86 +Z= \x87 +I= \x88 +J= \x89 +K= \x8a +L= \x8b +M= \x8c +N= \x8d +O= \x8e +P= \x8f +R= \x90 +S= \x91 +T= \x92 +U= \x93 +F= \x94 +H= \x95 +C= \x96 +C% \x97 +S% \x98 +Sc \x99 +=" \x9a +Y= \x9b +%" \x9c +JE \x9d +JU \x9e +JA \x9f +a= \xa0 +b= \xa1 +v= \xa2 +g= \xa3 +d= \xa4 +e= \xa5 +z% \xa6 +z= \xa7 +i= \xa8 +j= \xa9 +k= \xaa +l= \xab +m= \xac +n= \xad +o= \xae +p= \xaf +.S \xb0 +:S \xb1 +?S \xb2 +vv \xb3 +vl \xb4 +vL \xb5 +Vl \xb6 +Dl \xb7 +dL \xb8 +VL \xb9 +VV \xba +LD \xbb +UL \xbc +Ul \xbd +uL \xbe +dl \xbf +ur \xc0 +uh \xc1 +dh \xc2 +vr \xc3 +hh \xc4 +vh \xc5 +vR \xc6 +Vr \xc7 +UR \xc8 +DR \xc9 +UH \xca +DH \xcb +VR \xcc +HH \xcd +VH \xce +uH \xcf +Uh \xd0 +dH \xd1 +Dh \xd2 +Ur \xd3 +uR \xd4 +dR \xd5 +Dr \xd6 +Vh \xd7 +vH \xd8 +ul \xd9 +dr \xda +FB \xdb +LB \xdc +lB \xdd +RB \xde +TB \xdf +r= \xe0 +s= \xe1 +t= \xe2 +u= \xe3 +f= \xe4 +h= \xe5 +c= \xe6 +c% \xe7 +s% \xe8 +sc \xe9 +=' \xea +y= \xeb +%' \xec +je \xed +ju \xee +ja \xef +IO \xf0 +io \xf1 +IE \xf2 +ie \xf3 +YI \xf4 +yi \xf5 +V% \xf6 +v% \xf7 +DG \xf8 +Sb \xf9 +.M \xfa +RT \xfb +N0 \xfc +Cu \xfd +fS \xfe +NS \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISCII-DEV Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,163 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +Vowel-modifier-Chandrabindu ¡ +Vowel-modifier-Anuswar ¢ +Vowel-modifier-Visarg £ +Vowel-A ¤ +Vowel-AA ¥ +Vowel-I ¦ +Vowel-II § +Vowel-U ¨ +Vowel-UU © +Vowel-RI ª +Vowel-E « +Vowel-EY ¬ +Vowel-AI +Vowel-AYE ® +Vowel-O ¯ +Vowel-OW ° +Vowel-AU ± +Vowel-AWE ² +Consonant-KA ³ +Consonant-KHA ´ +Consonant-GA µ +Consonant-GHA ¶ +Consonant-NGA · +Consonant-CHA ¸ +Consonant-CHHA ¹ +Consonant-JA º +Consonant-JHA » +Consonant-JNA ¼ +Consonant-Hard-TA ½ +Consonant-Hard-THA ¾ +Consonant-Hard-DA ¿ +Consonant-Hard-DHA À +Consonant-Hard-NA Á +Consonant-Soft-TA Â +Consonant-Soft-THA Ã +Consonant-Soft-DA Ä +Consonant-Soft-DHA Å +Consonant-Soft-NA Æ +Consonant-NA-Tamil Ç +Consonant-PA È +Consonant-PHA É +Consonant-BA Ê +Consonant-BHA Ë +Consonant-MA Ì +Consonant-YA Í +Consonant-JYA Î +Consonant-RA Ï +Consonant-Hard-RA Ð +Consonant-LA Ñ +Consonant-Hard-LA Ò +Consonant-ZHA-Tamil Ó +Consonant-VA Ô +Consonant-SHA Õ +Consonant-Hard-SHA Ö +Consonant-SA × +Consonant-HA Ø +Consonant-invisible Ù +Vowel-sign-AA Ú +Vowel-sign-I Û +Vowel-sign-II Ü +Vowel-sign-U Ý +Vowel-sign-UU Þ +Vowel-sign-RI ß +Vowel-sign-E à +Vowel-sign-EY á +Vowel-sign-AI â +Vowel-sign-AYE ã +Vowel-sign-O ä +Vowel-sign-OW å +Vowel-sign-AU æ +Vowel-sign-AWE ç +Vowel-omission-sign è +Diacritic-sign-Nukta é +Full-Stop-Viram ê +Digit-0 ñ +Digit-1 ò +Digit-2 ó +Digit-3 ô +Digit-4 õ +Digit-5 ö +Digit-6 ÷ +Digit-7 ø +Digit-8 ù +Digit-9 ú
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-1 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +!I \xa1 +Ct \xa2 +Pd \xa3 +Cu \xa4 +Ye \xa5 +BB \xa6 +SE \xa7 +': \xa8 +Co \xa9 +-a \xaa +<< \xab +NO \xac +-- \xad +Rg \xae +'m \xaf +DG \xb0 ++- \xb1 +2S \xb2 +3S \xb3 +'' \xb4 +My \xb5 +PI \xb6 +.M \xb7 +', \xb8 +1S \xb9 +-o \xba +>> \xbb +14 \xbc +12 \xbd +34 \xbe +?I \xbf +A! \xc0 +A' \xc1 +A> \xc2 +A? \xc3 +A: \xc4 +AA \xc5 +AE \xc6 +C, \xc7 +E! \xc8 +E' \xc9 +E> \xca +E: \xcb +I! \xcc +I' \xcd +I> \xce +I: \xcf +D- \xd0 +N? \xd1 +O! \xd2 +O' \xd3 +O> \xd4 +O? \xd5 +O: \xd6 +*X \xd7 +O/ \xd8 +U! \xd9 +U' \xda +U> \xdb +U: \xdc +Y' \xdd +TH \xde +ss \xdf +a! \xe0 +a' \xe1 +a> \xe2 +a? \xe3 +a: \xe4 +aa \xe5 +ae \xe6 +c, \xe7 +e! \xe8 +e' \xe9 +e> \xea +e: \xeb +i! \xec +i' \xed +i> \xee +i: \xef +d- \xf0 +n? \xf1 +o! \xf2 +o' \xf3 +o> \xf4 +o? \xf5 +o: \xf6 +-: \xf7 +o/ \xf8 +u! \xf9 +u' \xfa +u> \xfb +u: \xfc +y' \xfd +th \xfe +y: \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-13 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +"" \xa1 +Ct \xa2 +Pd \xa3 +Cu \xa4 +,, \xa5 +BB \xa6 +SE \xa7 +O/ \xa8 +Co \xa9 +R, \xaa +<< \xab +NO \xac +-- \xad +Rg \xae +AE \xaf +DG \xb0 ++- \xb1 +2S \xb2 +3S \xb3 +`` \xb4 +My \xb5 +PI \xb6 +.M \xb7 +o/ \xb8 +1S \xb9 +r, \xba +>> \xbb +14 \xbc +12 \xbd +34 \xbe +ae \xbf +A; \xc0 +I; \xc1 +A- \xc2 +C' \xc3 +A: \xc4 +AA \xc5 +E; \xc6 +E- \xc7 +C< \xc8 +E' \xc9 +Z' \xca +E. \xcb +G, \xcc +K, \xcd +I- \xce +L, \xcf +S< \xd0 +N' \xd1 +N, \xd2 +O' \xd3 +O- \xd4 +O? \xd5 +O: \xd6 +*X \xd7 +U; \xd8 +L/ \xd9 +S' \xda +U- \xdb +U: \xdc +Z. \xdd +Z< \xde +ss \xdf +a; \xe0 +i; \xe1 +a- \xe2 +c' \xe3 +a: \xe4 +aa \xe5 +e; \xe6 +e- \xe7 +c< \xe8 +e' \xe9 +z' \xea +e. \xeb +g, \xec +k, \xed +i- \xee +l, \xef +s< \xf0 +n' \xf1 +n, \xf2 +o' \xf3 +o- \xf4 +o? \xf5 +o: \xf6 +-: \xf7 +u; \xf8 +l/ \xf9 +s' \xfa +u- \xfb +u: \xfc +z. \xfd +z< \xfe +'. \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-15 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +!I \xa1 +Ct \xa2 +Pd \xa3 +Eu \xa4 +Ye \xa5 +S< \xa6 +SE \xa7 +s< \xa8 +Co \xa9 +-a \xaa +<< \xab +NO \xac +-- \xad +Rg \xae +'m \xaf +DG \xb0 ++- \xb1 +2S \xb2 +3S \xb3 +Z< \xb4 +My \xb5 +PI \xb6 +.M \xb7 +z< \xb8 +1S \xb9 +-o \xba +>> \xbb +OE \xbc +oe \xbd +Y: \xbe +?I \xbf +A! \xc0 +A' \xc1 +A> \xc2 +A? \xc3 +A: \xc4 +AA \xc5 +AE \xc6 +C, \xc7 +E! \xc8 +E' \xc9 +E> \xca +E: \xcb +I! \xcc +I' \xcd +I> \xce +I: \xcf +D- \xd0 +N? \xd1 +O! \xd2 +O' \xd3 +O> \xd4 +O? \xd5 +O: \xd6 +*X \xd7 +O/ \xd8 +U! \xd9 +U' \xda +U> \xdb +U: \xdc +Y' \xdd +TH \xde +ss \xdf +a! \xe0 +a' \xe1 +a> \xe2 +a? \xe3 +a: \xe4 +aa \xe5 +ae \xe6 +c, \xe7 +e! \xe8 +e' \xe9 +e> \xea +e: \xeb +i! \xec +i' \xed +i> \xee +i: \xef +d- \xf0 +n? \xf1 +o! \xf2 +o' \xf3 +o> \xf4 +o? \xf5 +o: \xf6 +-: \xf7 +o/ \xf8 +u! \xf9 +u' \xfa +u> \xfb +u: \xfc +y' \xfd +th \xfe +y: \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-2 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +A; \xa1 +'( \xa2 +L/ \xa3 +Cu \xa4 +L< \xa5 +S' \xa6 +SE \xa7 +': \xa8 +S< \xa9 +S, \xaa +T< \xab +Z' \xac +-- \xad +Z< \xae +Z. \xaf +DG \xb0 +a; \xb1 +'; \xb2 +l/ \xb3 +'' \xb4 +l< \xb5 +s' \xb6 +'< \xb7 +', \xb8 +s< \xb9 +s, \xba +t< \xbb +z' \xbc +'" \xbd +z< \xbe +z. \xbf +R' \xc0 +A' \xc1 +A> \xc2 +A( \xc3 +A: \xc4 +L' \xc5 +C' \xc6 +C, \xc7 +C< \xc8 +E' \xc9 +E; \xca +E: \xcb +E< \xcc +I' \xcd +I> \xce +D< \xcf +D/ \xd0 +N' \xd1 +N< \xd2 +O' \xd3 +O> \xd4 +O" \xd5 +O: \xd6 +*X \xd7 +R< \xd8 +U0 \xd9 +U' \xda +U" \xdb +U: \xdc +Y' \xdd +T, \xde +ss \xdf +r' \xe0 +a' \xe1 +a> \xe2 +a( \xe3 +a: \xe4 +l' \xe5 +c' \xe6 +c, \xe7 +c< \xe8 +e' \xe9 +e; \xea +e: \xeb +e< \xec +i' \xed +i> \xee +d< \xef +d/ \xf0 +n' \xf1 +n< \xf2 +o' \xf3 +o> \xf4 +o" \xf5 +o: \xf6 +-: \xf7 +r< \xf8 +u0 \xf9 +u' \xfa +u" \xfb +u: \xfc +y' \xfd +t, \xfe +'. \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-4 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +A; \xa1 +kk \xa2 +R, \xa3 +Cu \xa4 +I? \xa5 +L, \xa6 +SE \xa7 +': \xa8 +S< \xa9 +E- \xaa +G, \xab +T/ \xac +-- \xad +Z< \xae +'m \xaf +DG \xb0 +a; \xb1 +'; \xb2 +r, \xb3 +'' \xb4 +i? \xb5 +l, \xb6 +'< \xb7 +', \xb8 +s< \xb9 +e- \xba +g, \xbb +t/ \xbc +NG \xbd +z< \xbe +ng \xbf +A- \xc0 +A' \xc1 +A> \xc2 +A? \xc3 +A: \xc4 +AA \xc5 +AE \xc6 +I; \xc7 +C< \xc8 +E' \xc9 +E; \xca +E: \xcb +E. \xcc +I' \xcd +I> \xce +I- \xcf +D/ \xd0 +N, \xd1 +O- \xd2 +K, \xd3 +O> \xd4 +O? \xd5 +O: \xd6 +*X \xd7 +O/ \xd8 +U; \xd9 +U' \xda +U> \xdb +U: \xdc +U? \xdd +U- \xde +ss \xdf +a- \xe0 +a' \xe1 +a> \xe2 +a? \xe3 +a: \xe4 +aa \xe5 +ae \xe6 +i; \xe7 +c< \xe8 +e' \xe9 +e; \xea +e: \xeb +e. \xec +i' \xed +i> \xee +i- \xef +d/ \xf0 +n, \xf1 +o- \xf2 +k, \xf3 +o> \xf4 +o? \xf5 +o: \xf6 +-: \xf7 +o/ \xf8 +u; \xf9 +u' \xfa +u> \xfb +u: \xfc +u? \xfd +u- \xfe +'. \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-5 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +IO \xa1 +D% \xa2 +G% \xa3 +IE \xa4 +DS \xa5 +II \xa6 +YI \xa7 +J% \xa8 +LJ \xa9 +NJ \xaa +Ts \xab +KJ \xac +-- \xad +V% \xae +DZ \xaf +A= \xb0 +B= \xb1 +V= \xb2 +G= \xb3 +D= \xb4 +E= \xb5 +Z% \xb6 +Z= \xb7 +I= \xb8 +J= \xb9 +K= \xba +L= \xbb +M= \xbc +N= \xbd +O= \xbe +P= \xbf +R= \xc0 +S= \xc1 +T= \xc2 +U= \xc3 +F= \xc4 +H= \xc5 +C= \xc6 +C% \xc7 +S% \xc8 +Sc \xc9 +=" \xca +Y= \xcb +%" \xcc +JE \xcd +JU \xce +JA \xcf +a= \xd0 +b= \xd1 +v= \xd2 +g= \xd3 +d= \xd4 +e= \xd5 +z% \xd6 +z= \xd7 +i= \xd8 +j= \xd9 +k= \xda +l= \xdb +m= \xdc +n= \xdd +o= \xde +p= \xdf +r= \xe0 +s= \xe1 +t= \xe2 +u= \xe3 +f= \xe4 +h= \xe5 +c= \xe6 +c% \xe7 +s% \xe8 +sc \xe9 +=' \xea +y= \xeb +%' \xec +je \xed +ju \xee +ja \xef +N0 \xf0 +io \xf1 +d% \xf2 +g% \xf3 +ie \xf4 +ds \xf5 +ii \xf6 +yi \xf7 +j% \xf8 +lj \xf9 +nj \xfa +ts \xfb +kj \xfc +SE \xfd +v% \xfe +dz \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-7 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +9' \xa1 +'9 \xa2 +Pd \xa3 +IE \xa4 +DS \xa5 +BB \xa6 +SE \xa7 +': \xa8 +Co \xa9 +NJ \xaa +<< \xab +NO \xac +-- \xad +V% \xae +-M \xaf +DG \xb0 ++- \xb1 +2S \xb2 +3S \xb3 +'' \xb4 +'% \xb5 +A% \xb6 +.M \xb7 +E% \xb8 +Y% \xb9 +I% \xba +>> \xbb +O% \xbc +12 \xbd +U% \xbe +W% \xbf +i3 \xc0 +A* \xc1 +B* \xc2 +G* \xc3 +D* \xc4 +E* \xc5 +Z* \xc6 +Y* \xc7 +H* \xc8 +I* \xc9 +K* \xca +L* \xcb +M* \xcc +N* \xcd +C* \xce +O* \xcf +P* \xd0 +R* \xd1 +v= \xd2 +S* \xd3 +T* \xd4 +U* \xd5 +F* \xd6 +X* \xd7 +Q* \xd8 +W* \xd9 +J* \xda +V* \xdb +a% \xdc +e% \xdd +y% \xde +i% \xdf +u3 \xe0 +a* \xe1 +b* \xe2 +g* \xe3 +d* \xe4 +e* \xe5 +z* \xe6 +y* \xe7 +h* \xe8 +i* \xe9 +k* \xea +l* \xeb +m* \xec +n* \xed +c* \xee +o* \xef +p* \xf0 +r* \xf1 +*s \xf2 +s* \xf3 +t* \xf4 +u* \xf5 +f* \xf6 +x* \xf7 +q* \xf8 +w* \xf9 +j* \xfa +v* \xfb +o% \xfc +u% \xfd +w% \xfe +dz \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.ISO8859-9 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +PA \x80 +HO \x81 +BH \x82 +NH \x83 +IN \x84 +NL \x85 +SA \x86 +ES \x87 +HS \x88 +HJ \x89 +VS \x8a +PD \x8b +PU \x8c +RI \x8d +S2 \x8e +S3 \x8f +DC \x90 +P1 \x91 +P2 \x92 +TS \x93 +CC \x94 +MW \x95 +SG \x96 +EG \x97 +SS \x98 +GC \x99 +SC \x9a +CI \x9b +ST \x9c +OC \x9d +PM \x9e +AC \x9f +NS \xa0 +!I \xa1 +Ct \xa2 +Pd \xa3 +Cu \xa4 +Ye \xa5 +BB \xa6 +SE \xa7 +': \xa8 +Co \xa9 +-a \xaa +<< \xab +NO \xac +-- \xad +Rg \xae +'m \xaf +DG \xb0 ++- \xb1 +2S \xb2 +3S \xb3 +'' \xb4 +My \xb5 +PI \xb6 +.M \xb7 +', \xb8 +1S \xb9 +-o \xba +>> \xbb +14 \xbc +12 \xbd +34 \xbe +?I \xbf +A! \xc0 +A' \xc1 +A> \xc2 +A? \xc3 +A: \xc4 +AA \xc5 +AE \xc6 +C, \xc7 +E! \xc8 +E' \xc9 +E> \xca +E: \xcb +I! \xcc +I' \xcd +I> \xce +I: \xcf +G( \xd0 +N? \xd1 +O! \xd2 +O' \xd3 +O> \xd4 +O? \xd5 +O: \xd6 +*X \xd7 +O/ \xd8 +U! \xd9 +U' \xda +U> \xdb +U: \xdc +I. \xdd +S, \xde +ss \xdf +a! \xe0 +a' \xe1 +a> \xe2 +a? \xe3 +a: \xe4 +aa \xe5 +ae \xe6 +c, \xe7 +e! \xe8 +e' \xe9 +e; \xea +e: \xeb +e. \xec +i' \xed +i> \xee +i- \xef +g( \xf0 +n? \xf1 +o! \xf2 +o' \xf3 +o> \xf4 +o? \xf5 +o: \xf6 +-: \xf7 +o/ \xf8 +u! \xf9 +u' \xfa +u> \xfb +u: \xfc +i. \xfd +s, \xfe +y: \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.KOI8-R Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +hh \x80 +vv \x81 +dr \x82 +dl \x83 +ur \x84 +ul \x85 +vr \x86 +vl \x87 +dh \x88 +uh \x89 +vh \x8a +TB \x8b +LB \x8c +FB \x8d +lB \x8e +RB \x8f +.S \x90 +:S \x91 +?S \x92 +Iu \x93 +fS \x94 +Sb \x95 +RT \x96 +?2 \x97 +=< \x98 +>= \x99 +NS \x9a +Il \x9b +DG \x9c +2S \x9d +.M \x9e +-: \x9f +HH \xa0 +VV \xa1 +dR \xa2 +io \xa3 +Dr \xa4 +DR \xa5 +dL \xa6 +Dl \xa7 +LD \xa8 +uR \xa9 +Ur \xaa +UR \xab +uL \xac +Ul \xad +UL \xae +vR \xaf +Vr \xb0 +VR \xb1 +vL \xb2 +IO \xb3 +Vl \xb4 +VL \xb5 +dH \xb6 +Dh \xb7 +DH \xb8 +uH \xb9 +Uh \xba +UH \xbb +vH \xbc +Vh \xbd +VH \xbe +Co \xbf +ju \xc0 +a= \xc1 +b= \xc2 +c= \xc3 +d= \xc4 +e= \xc5 +f= \xc6 +g= \xc7 +h= \xc8 +i= \xc9 +j= \xca +k= \xcb +l= \xcc +m= \xcd +n= \xce +o= \xcf +p= \xd0 +ja \xd1 +r= \xd2 +s= \xd3 +t= \xd4 +u= \xd5 +z% \xd6 +v= \xd7 +%' \xd8 +y= \xd9 +z= \xda +s% \xdb +je \xdc +sc \xdd +c% \xde +=' \xdf +JU \xe0 +A= \xe1 +B= \xe2 +C= \xe3 +D= \xe4 +E= \xe5 +F= \xe6 +G= \xe7 +H= \xe8 +I= \xe9 +J= \xea +K= \xeb +L= \xec +M= \xed +N= \xee +O= \xef +P= \xf0 +JA \xf1 +R= \xf2 +S= \xf3 +T= \xf4 +U= \xf5 +Z% \xf6 +V= \xf7 +%" \xf8 +Y= \xf9 +Z= \xfa +S% \xfb +JE \xfc +Sc \xfd +C% \xfe +=" \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.KOI8-U Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,174 @@ +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +Nb \x23 +DO \x24 +At \x40 +<( \x5b +// \x5c +)> \x5d +'> \x5e +'! \x60 +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +hh \x80 +vv \x81 +dr \x82 +dl \x83 +ur \x84 +ul \x85 +vr \x86 +vl \x87 +dh \x88 +uh \x89 +vh \x8a +TB \x8b +LB \x8c +FB \x8d +lB \x8e +RB \x8f +.S \x90 +:S \x91 +?S \x92 +Iu \x93 +fS \x94 +Sb \x95 +RT \x96 +?2 \x97 +=< \x98 +>= \x99 +NS \x9a +Il \x9b +DG \x9c +2S \x9d +.M \x9e +-: \x9f +HH \xa0 +VV \xa1 +dR \xa2 +io \xa3 +ie \xa4 +DR \xa5 +ii \xa6 +yi \xa7 +LD \xa8 +uR \xa9 +Ur \xaa +UR \xab +uL \xac +g3 \xad +UL \xae +vR \xaf +Vr \xb0 +VR \xb1 +vL \xb2 +IO \xb3 +IE \xb4 +VL \xb5 +II \xb6 +YI \xb7 +DH \xb8 +uH \xb9 +Uh \xba +UH \xbb +vH \xbc +G3 \xbd +VH \xbe +Co \xbf +ju \xc0 +a= \xc1 +b= \xc2 +c= \xc3 +d= \xc4 +e= \xc5 +f= \xc6 +g= \xc7 +h= \xc8 +i= \xc9 +j= \xca +k= \xcb +l= \xcc +m= \xcd +n= \xce +o= \xcf +p= \xd0 +ja \xd1 +r= \xd2 +s= \xd3 +t= \xd4 +u= \xd5 +z% \xd6 +v= \xd7 +%' \xd8 +y= \xd9 +z= \xda +s% \xdb +je \xdc +sc \xdd +c% \xde +=' \xdf +JU \xe0 +A= \xe1 +B= \xe2 +C= \xe3 +D= \xe4 +E= \xe5 +F= \xe6 +G= \xe7 +H= \xe8 +I= \xe9 +J= \xea +K= \xeb +L= \xec +M= \xed +N= \xee +O= \xef +P= \xf0 +JA \xf1 +R= \xf2 +S= \xf3 +T= \xf4 +U= \xf5 +Z% \xf6 +V= \xf7 +%" \xf8 +Y= \xf9 +Z= \xfa +S% \xfb +JE \xfc +Sc \xfd +C% \xfe +=" \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/data/map.PT154 Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,257 @@ +# Birsh T <birsh@mail.kz>, 2003-12-12 +NU \x00 +SH \x01 +SX \x02 +EX \x03 +ET \x04 +EQ \x05 +AK \x06 +BL \x07 +BS \x08 +HT \x09 +LF \x0a +VT \x0b +FF \x0c +CR \x0d +SO \x0e +SI \x0f +DL \x10 +D1 \x11 +D2 \x12 +D3 \x13 +D4 \x14 +NK \x15 +SY \x16 +EB \x17 +CN \x18 +EM \x19 +SB \x1a +EC \x1b +FS \x1c +GS \x1d +RS \x1e +US \x1f +SP \x20 +! \x21 +" \x22 +Nb \x23 +DO \x24 +% \x25 +& \x26 +' \x27 +( \x28 +) \x29 +* \x2a ++ \x2b +, \x2c +- \x2d +. \x2e +/ \x2f +0 \x30 +1 \x31 +2 \x32 +3 \x33 +4 \x34 +5 \x35 +6 \x36 +7 \x37 +8 \x38 +9 \x39 +: \x3a +; \x3b +< \x3c += \x3d +> \x3e +? \x3f +At \x40 +A \x41 +B \x42 +C \x43 +D \x44 +E \x45 +F \x46 +G \x47 +H \x48 +I \x49 +J \x4a +K \x4b +L \x4c +M \x4d +N \x4e +O \x4f +P \x50 +Q \x51 +R \x52 +S \x53 +T \x54 +U \x55 +V \x56 +W \x57 +X \x58 +Y \x59 +Z \x5a +<( \x5b +// \x5c +)> \x5d +'> \x5e +_ \x5f +'! \x60 +a \x61 +b \x62 +c \x63 +d \x64 +e \x65 +f \x66 +g \x67 +h \x68 +i \x69 +j \x6a +k \x6b +l \x6c +m \x6d +n \x6e +o \x6f +p \x70 +q \x71 +r \x72 +s \x73 +t \x74 +u \x75 +v \x76 +w \x77 +x \x78 +y \x79 +z \x7a +(! \x7b +!! \x7c +!) \x7d +'? \x7e +DT \x7f +Z. \x80 +G- \x81 +U' \x82 +g- \x83 +:9 \x84 +.3 \x85 +C. \x86 +Y" \x87 +H% \x88 +y" \x89 +BK \x8a +I' \x8b +N% \x8c +K% \x8d +HH \x8e +C! \x8f +z. \x90 +'6 \x91 +'9 \x92 +"6 \x93 +"9 \x94 +sb \x95 +-N \x96 +-M \x97 +h% \x98 +c. \x99 +bk \x9a +i' \x9b +n% \x9c +k% \x9d +hh \x9e +c! \x9f +NS \xa0 +V% \xa1 +v% \xa2 +J% \xa3 +O- \xa4 +X% \xa5 +Y- \xa6 +SE \xa7 +IO \xa8 +Co \xa9 +HW \xaa +<< \xab +NO \xac +u' \xad +Rg \xae +K! \xaf +DG \xb0 +y- \xb1 +II \xb2 +ii \xb3 +x% \xb4 +o- \xb5 +PI \xb6 +.M \xb7 +io \xb8 +N0 \xb9 +hw \xba +>> \xbb +j% \xbc +DS \xbd +ds \xbe +k! \xbf +A= \xc0 +B= \xc1 +V= \xc2 +G= \xc3 +D= \xc4 +E= \xc5 +Z% \xc6 +Z= \xc7 +I= \xc8 +J= \xc9 +K= \xca +L= \xcb +M= \xcc +N= \xcd +O= \xce +P= \xcf +R= \xd0 +S= \xd1 +T= \xd2 +U= \xd3 +F= \xd4 +H= \xd5 +C= \xd6 +C% \xd7 +S% \xd8 +Sc \xd9 +=" \xda +Y= \xdb +%" \xdc +JE \xdd +JU \xde +JA \xdf +a= \xe0 +b= \xe1 +v= \xe2 +g= \xe3 +d= \xe4 +e= \xe5 +z% \xe6 +z= \xe7 +i= \xe8 +j= \xe9 +k= \xea +l= \xeb +m= \xec +n= \xed +o= \xee +p= \xef +r= \xf0 +s= \xf1 +t= \xf2 +u= \xf3 +f= \xf4 +h= \xf5 +c= \xf6 +c% \xf7 +s% \xf8 +sc \xf9 +=' \xfa +y= \xfb +%' \xfc +je \xfd +ju \xfe +ja \xff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/mkcollate_lex.l Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,285 @@ +%x string name charmap defn nchar subs subs2 +%option noyywrap +%{ +/* + * Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua> + * at Electronni Visti IA, Kiev, Ukraine. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/types.h> +#include <ctype.h> +#include <err.h> +#include <limits.h> +#include <unistd.h> +#include <string.h> +#include <sysexits.h> +#include "common.h" +#include "mkcollate_yacc.tab.h" + +int line_no = 1, save_no, fromsubs; +uchar_t buf[BUFSIZE], *ptr; +FILE *map_fp; +YY_BUFFER_STATE main_buf, map_buf; +#ifdef FLEX_DEBUG +YYSTYPE yylval; +#endif /* FLEX_DEBUG */ +int yylex(void); +%} +%% +<INITIAL,charmap,nchar,subs,subs2>[ \t]+ ; +<subs2>\" { ptr = buf; BEGIN(string); } +<subs>\< { ptr = buf; fromsubs = 1; BEGIN(name); } +<INITIAL>\< { ptr = buf; fromsubs = 0; BEGIN(name); } +^#.*\n line_no++; +^\n line_no++; +<INITIAL>\\\n line_no++; +<INITIAL,nchar,subs>\\t { yylval.ch = '\t'; return CHAR; } +<INITIAL,nchar,subs>\\n { yylval.ch = '\n'; return CHAR; } +<INITIAL,nchar,subs>\\b { yylval.ch = '\b'; return CHAR; } +<INITIAL,nchar,subs>\\f { yylval.ch = '\f'; return CHAR; } +<INITIAL,nchar,subs>\\v { yylval.ch = '\v'; return CHAR; } +<INITIAL,nchar,subs>\\r { yylval.ch = '\r'; return CHAR; } +<INITIAL,nchar,subs>\\a { yylval.ch = '\a'; return CHAR; } +<subs2>\n { + line_no++; + BEGIN(INITIAL); + return '\n'; +} +<INITIAL,nchar>\n { + line_no++; + if (map_fp != NULL) { + ptr = buf; + BEGIN(defn); + } + return '\n'; +} +<INITIAL>[;,{}()] return *yytext; +<INITIAL>substitute { BEGIN(subs); return SUBSTITUTE; } +<subs>with { BEGIN(subs2); return WITH; } +<INITIAL>order return ORDER; +<INITIAL>charmap BEGIN(charmap); +<INITIAL>;[ \t]*\.\.\.[ \t]*; return RANGE; +<INITIAL,nchar,subs>\\[0-7]{3} { + u_int v; + + sscanf(&yytext[1], "%o", &v); + yylval.ch = (uchar_t)v; + return CHAR; +} +<INITIAL,nchar,subs>\\x[0-9a-fA-F]{2} { + u_int v; + + sscanf(&yytext[2], "%x", &v); + yylval.ch = (uchar_t)v; + return CHAR; +} +<INITIAL,nchar,subs>\\. { yylval.ch = yytext[1]; return CHAR; } +<INITIAL,nchar,subs>. { yylval.ch = *yytext; return CHAR; } +<defn>^#.*\n line_no++; +<defn>[ \t]+ { + if (ptr == buf) + errx(EX_UNAVAILABLE, "map expected near line %u of %s", + line_no, map_name); + *ptr = '\0'; + strcpy((char *)yylval.str, (char *)buf); + BEGIN(nchar); + return DEFN; +} +<name>\/\/ { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "name buffer overflow near line %u, character '/'", + line_no); + *ptr++ = '/'; +} +<name>\/\> { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "name buffer overflow near line %u, character '>'", + line_no); + *ptr++ = '>'; +} +<string>\\\" { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\"'", + line_no); + *ptr++ = '"'; +} +<name>\> { + u_int i; + + if (ptr == buf) + errx(EX_UNAVAILABLE, "non-empty name expected near line %u", + line_no); + *ptr = '\0'; + for (i = 0; i <= UCHAR_MAX; i++) { + if (strcmp((char *)charmap_table[i], (char *)buf) == 0) + goto findit; + } + errx(EX_UNAVAILABLE, "name <%s> not 'charmap'-defined near line %u", + buf, line_no); + findit: + yylval.ch = i; + if (fromsubs) + BEGIN(subs); + else + BEGIN(INITIAL); + return CHAR; +} +<string>\" { + *ptr = '\0'; + strcpy((char *)yylval.str, (char *)buf); + BEGIN(subs2); + return STRING; +} +<name,defn>. { + const char *s = (map_fp != NULL) ? map_name : "input"; + + if (!isascii(*yytext) || !isprint(*yytext)) + errx(EX_UNAVAILABLE, "non-ASCII or non-printable character 0x%02x not allowed in the map/name near line %u of %s", + *yytext, line_no, s); + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "map/name buffer overflow near line %u of %s, character '%c'", + line_no, s, *yytext); + *ptr++ = *yytext; +} +<string>\\t { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\\t'", + line_no); + *ptr++ = '\t'; +} +<string>\\b { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\\b'", + line_no); + *ptr++ = '\b'; +} +<string>\\f { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\\f'", + line_no); + *ptr++ = '\f'; +} +<string>\\v { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\\v'", + line_no); + *ptr++ = '\v'; +} +<string>\\n { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\\n'", + line_no); + *ptr++ = '\n'; +} +<string>\\r { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\\r'", + line_no); + *ptr++ = '\r'; +} +<string>\\a { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '\\a'", + line_no); + *ptr++ = '\a'; +} +<name,string,defn>\n { + const char *s = (map_fp != NULL) ? map_name : "input"; + + errx(EX_UNAVAILABLE, "unterminated map/name/string near line %u of %s", line_no, s); +} +<name,string,nchar><<EOF>> { + const char *s = (map_fp != NULL) ? map_name : "input"; + + errx(EX_UNAVAILABLE, "premature EOF in the name/string/char near line %u of %s", line_no, s); +} +<string>\\x[0-9a-f]{2} { + u_int v; + + sscanf(&yytext[2], "%x", &v); + *ptr++ = (uchar_t)v; +} +<string>\\[0-7]{3} { + u_int v; + + sscanf(&yytext[1], "%o", &v); + *ptr++ = (uchar_t)v; +} +<string>\\. { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '%c'", + line_no, yytext[1]); + *ptr++ = yytext[1]; +} +<string>. { + if(ptr >= buf + sizeof(buf) - 1) + errx(EX_UNAVAILABLE, "string buffer overflow near line %u, character '%c'", + line_no, *yytext); + *ptr++ = *yytext; +} +<charmap>[^ \t\n]+ { + strcat(map_name, "/"); + strcat(map_name, yytext); + if((map_fp = fopen(map_name, "r")) == NULL) + err(EX_UNAVAILABLE, "can't open 'charmap' file %s", + map_name); + save_no = line_no; + line_no = 1; + map_buf = yy_new_buffer(map_fp, YY_BUF_SIZE); + main_buf = YY_CURRENT_BUFFER; + yy_switch_to_buffer(map_buf); + ptr = buf; + BEGIN(defn); +} +<charmap>\n { + errx(EX_UNAVAILABLE, "'charmap' file name expected near line %u", + line_no); +} +<charmap><<EOF>> { + errx(EX_UNAVAILABLE, "'charmap' file name expected near line %u", + line_no); +} +<INITIAL,defn><<EOF>> { + if(map_fp != NULL) { + if (ptr != buf) + errx(EX_UNAVAILABLE, "premature EOF in the map near line %u of %s", line_no, map_name); + yy_switch_to_buffer(main_buf); + yy_delete_buffer(map_buf); + fclose(map_fp); + map_fp = NULL; + line_no = save_no; + BEGIN(INITIAL); + } else + yyterminate(); +} +%% +#ifdef FLEX_DEBUG +main() +{ + while(yylex()) + ; + return 0; +} +#endif /* FLEX_DEBUG */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/collate/mkcollate_yacc.y Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,381 @@ +%{ +/* + * Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua> + * at Electronni Visti IA, Kiev, Ukraine. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/types.h> +#include <arpa/inet.h> +#include <err.h> +#include <stdarg.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <sysexits.h> +#include "collate.h" +#include "common.h" + +extern FILE *yyin; +void yyerror(const char *fmt, ...); +int yyparse(void); +int yylex(void); +static void usage(void); +static void collate_print_tables(void); + +char map_name[FILENAME_MAX] = "."; +char curr_chain[STR_LEN]; + +char __collate_version[STR_LEN]; +u_char charmap_table[UCHAR_MAX + 1][CHARMAP_SYMBOL_LEN]; + +#undef __collate_substitute_table +u_char __collate_substitute_table[UCHAR_MAX + 1][STR_LEN]; +#undef __collate_char_pri_table +struct __collate_st_char_pri __collate_char_pri_table[UCHAR_MAX + 1]; +struct __collate_st_chain_pri *__collate_chain_pri_table; + +int chain_index = 0; +int prim_pri = 1, sec_pri = 1; +#ifdef COLLATE_DEBUG +int debug; +#endif + +const char *out_file = "LC_COLLATE"; +%} +%union { + u_char ch; + u_char str[BUFSIZE]; +} +%token SUBSTITUTE WITH ORDER RANGE +%token <str> STRING +%token <str> DEFN +%token <ch> CHAR +%% +collate : statment_list +; +statment_list : statment + | statment_list '\n' statment +; +statment : + | charmap + | substitute + | order +; +charmap : DEFN CHAR { + if (strlen((char *)$1) + 1 > CHARMAP_SYMBOL_LEN) + yyerror("Charmap symbol name '%s' is too long", $1); + strcpy((char *)charmap_table[$2], (char *)$1); +} +; +substitute : SUBSTITUTE CHAR WITH STRING { + if ($2 == '\0') + yyerror("NUL character can't be substituted"); + if (strchr((char *)$4, $2) != NULL) + yyerror("Char 0x%02x substitution is recursive", $2); + if (strlen((char *)$4) + 1 > STR_LEN) + yyerror("Char 0x%02x substitution is too long", $2); + strcpy((char *)__collate_substitute_table[$2], (char *)$4); +} +; +order : ORDER order_list { + FILE *fp; + int ch, substed, ordered; + uint32_t u32; + + for (ch = 0; ch < UCHAR_MAX + 1; ch++) { + substed = (__collate_substitute_table[ch][0] != ch); + ordered = !!__collate_char_pri_table[ch].prim; + if (!ordered && !substed) + yyerror("Char 0x%02x not found", ch); + if (substed && ordered) + yyerror("Char 0x%02x can't be ordered since substituted", ch); + } + + if ((__collate_chain_pri_table = realloc(__collate_chain_pri_table, + sizeof(*__collate_chain_pri_table) * (chain_index + 1))) == NULL) + yyerror("can't grow chain table"); + (void)memset(&__collate_chain_pri_table[chain_index], 0, + sizeof(__collate_chain_pri_table[0])); + chain_index++; + +#ifdef COLLATE_DEBUG + if (debug) + collate_print_tables(); +#endif + if ((fp = fopen(out_file, "w")) == NULL) + err(EX_UNAVAILABLE, "can't open destination file %s", + out_file); + + strcpy(__collate_version, COLLATE_VERSION1_2); + if (fwrite(__collate_version, sizeof(__collate_version), 1, fp) != 1) + err(EX_IOERR, + "IO error writting collate version to destination file %s", + out_file); + u32 = htonl(chain_index); + if (fwrite(&u32, sizeof(u32), 1, fp) != 1) + err(EX_IOERR, + "IO error writting chains number to destination file %s", + out_file); + if (fwrite(__collate_substitute_table, + sizeof(__collate_substitute_table), 1, fp) != 1) + err(EX_IOERR, + "IO error writting substitute table to destination file %s", + out_file); + for (ch = 0; ch < UCHAR_MAX + 1; ch++) { + __collate_char_pri_table[ch].prim = + htonl(__collate_char_pri_table[ch].prim); + __collate_char_pri_table[ch].sec = + htonl(__collate_char_pri_table[ch].sec); + } + if (fwrite(__collate_char_pri_table, + sizeof(__collate_char_pri_table), 1, fp) != 1) + err(EX_IOERR, + "IO error writting char table to destination file %s", + out_file); + for (ch = 0; ch < chain_index; ch++) { + __collate_chain_pri_table[ch].prim = + htonl(__collate_chain_pri_table[ch].prim); + __collate_chain_pri_table[ch].sec = + htonl(__collate_chain_pri_table[ch].sec); + } + if (fwrite(__collate_chain_pri_table, + sizeof(*__collate_chain_pri_table), chain_index, fp) != + (size_t)chain_index) + err(EX_IOERR, + "IO error writting chain table to destination file %s", + out_file); + if (fclose(fp) != 0) + err(EX_IOERR, "IO error closing destination file %s", + out_file); + exit(EX_OK); +} +; +order_list : item + | order_list ';' item +; +chain : CHAR CHAR { + curr_chain[0] = $1; + curr_chain[1] = $2; + if (curr_chain[0] == '\0' || curr_chain[1] == '\0') + yyerror("\\0 can't be chained"); + curr_chain[2] = '\0'; +} + | chain CHAR { + static char tb[2]; + + tb[0] = $2; + if (tb[0] == '\0') + yyerror("\\0 can't be chained"); + if (strlen(curr_chain) + 2 > STR_LEN) + yyerror("Chain '%s' grows too long", curr_chain); + (void)strcat(curr_chain, tb); +} +; +item : CHAR { + if (__collate_char_pri_table[$1].prim) + yyerror("Char 0x%02x duplicated", $1); + __collate_char_pri_table[$1].prim = prim_pri++; +} + | chain { + if ((__collate_chain_pri_table = realloc(__collate_chain_pri_table, + sizeof(*__collate_chain_pri_table) * (chain_index + 1))) == NULL) + yyerror("can't grow chain table"); + (void)memset(&__collate_chain_pri_table[chain_index], 0, + sizeof(__collate_chain_pri_table[0])); + (void)strcpy(__collate_chain_pri_table[chain_index].str, curr_chain); + __collate_chain_pri_table[chain_index].prim = prim_pri++; + chain_index++; +} + | CHAR RANGE CHAR { + u_int i; + + if ($3 <= $1) + yyerror("Illegal range 0x%02x -- 0x%02x", $1, $3); + + for (i = $1; i <= $3; i++) { + if (__collate_char_pri_table[(u_char)i].prim) + yyerror("Char 0x%02x duplicated", (u_char)i); + __collate_char_pri_table[(u_char)i].prim = prim_pri++; + } +} + | '{' prim_order_list '}' { + prim_pri++; +} + | '(' sec_order_list ')' { + prim_pri++; + sec_pri = 1; +} +; +prim_order_list : prim_sub_item + | prim_order_list ',' prim_sub_item +; +sec_order_list : sec_sub_item + | sec_order_list ',' sec_sub_item +; +prim_sub_item : CHAR { + if (__collate_char_pri_table[$1].prim) + yyerror("Char 0x%02x duplicated", $1); + __collate_char_pri_table[$1].prim = prim_pri; +} + | CHAR RANGE CHAR { + u_int i; + + if ($3 <= $1) + yyerror("Illegal range 0x%02x -- 0x%02x", + $1, $3); + + for (i = $1; i <= $3; i++) { + if (__collate_char_pri_table[(u_char)i].prim) + yyerror("Char 0x%02x duplicated", (u_char)i); + __collate_char_pri_table[(u_char)i].prim = prim_pri; + } +} + | chain { + if ((__collate_chain_pri_table = realloc(__collate_chain_pri_table, + sizeof(*__collate_chain_pri_table) * (chain_index + 1))) == NULL) + yyerror("can't grow chain table"); + (void)memset(&__collate_chain_pri_table[chain_index], 0, + sizeof(__collate_chain_pri_table[0])); + (void)strcpy(__collate_chain_pri_table[chain_index].str, curr_chain); + __collate_chain_pri_table[chain_index].prim = prim_pri; + chain_index++; +} +; +sec_sub_item : CHAR { + if (__collate_char_pri_table[$1].prim) + yyerror("Char 0x%02x duplicated", $1); + __collate_char_pri_table[$1].prim = prim_pri; + __collate_char_pri_table[$1].sec = sec_pri++; +} + | CHAR RANGE CHAR { + u_int i; + + if ($3 <= $1) + yyerror("Illegal range 0x%02x -- 0x%02x", + $1, $3); + + for (i = $1; i <= $3; i++) { + if (__collate_char_pri_table[(u_char)i].prim) + yyerror("Char 0x%02x duplicated", (u_char)i); + __collate_char_pri_table[(u_char)i].prim = prim_pri; + __collate_char_pri_table[(u_char)i].sec = sec_pri++; + } +} + | chain { + if ((__collate_chain_pri_table = realloc(__collate_chain_pri_table, + sizeof(*__collate_chain_pri_table) * (chain_index + 1))) == NULL) + yyerror("can't grow chain table"); + (void)memset(&__collate_chain_pri_table[chain_index], 0, + sizeof(__collate_chain_pri_table[0])); + (void)strcpy(__collate_chain_pri_table[chain_index].str, curr_chain); + __collate_chain_pri_table[chain_index].prim = prim_pri; + __collate_chain_pri_table[chain_index].sec = sec_pri++; + chain_index++; +} +; +%% +int +main(int ac, char **av) +{ + int ch; + +#ifdef COLLATE_DEBUG + while((ch = getopt(ac, av, ":do:I:")) != -1) { +#else + while((ch = getopt(ac, av, ":o:I:")) != -1) { +#endif + switch (ch) + { +#ifdef COLLATE_DEBUG + case 'd': + debug++; + break; +#endif + case 'o': + out_file = optarg; + break; + + case 'I': + strlcpy(map_name, optarg, sizeof(map_name)); + break; + + default: + usage(); + } + } + ac -= optind; + av += optind; + if (ac > 0) { + if ((yyin = fopen(*av, "r")) == NULL) + err(EX_UNAVAILABLE, "can't open source file %s", *av); + } + for (ch = 0; ch <= UCHAR_MAX; ch++) + __collate_substitute_table[ch][0] = ch; + yyparse(); + return 0; +} + +static void +usage(void) +{ + fprintf(stderr, "usage: colldef [-I map_dir] [-o out_file] [filename]\n"); + exit(EX_USAGE); +} + +void +yyerror(const char *fmt, ...) +{ + va_list ap; + char msg[128]; + + va_start(ap, fmt); + vsnprintf(msg, sizeof(msg), fmt, ap); + va_end(ap); + errx(EX_UNAVAILABLE, "%s near line %d", msg, line_no); +} + +#ifdef COLLATE_DEBUG +static void +collate_print_tables(void) +{ + int i; + + printf("Substitute table:\n"); + for (i = 0; i < UCHAR_MAX + 1; i++) + if (i != *__collate_substitute_table[i]) + printf("\t'%c' --> \"%s\"\n", i, + __collate_substitute_table[i]); + printf("Chain priority table:\n"); + for (i = 0; i < chain_index - 1; i++) + printf("\t\"%s\" : %d %d\n", + __collate_chain_pri_table[i].str, + __collate_chain_pri_table[i].prim, + __collate_chain_pri_table[i].sec); + printf("Char priority table:\n"); + for (i = 0; i < UCHAR_MAX + 1; i++) + printf("\t'%c' : %d %d\n", i, __collate_char_pri_table[i].prim, + __collate_char_pri_table[i].sec); +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,91 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +PROG= mkctype +CATEGORY=LC_CTYPE + +include ../Makefile.common + +CPPFLAGS += -I$(SRC)/lib/libc/port/locale -D_FILE_OFFSET_BITS=64 +YFLAGS = -d -b mkctype_yacc +LFLAGS = -t + +OBJS = $(MACH)/mkctype_lex.o $(MACH)/mkctype_yacc.tab.o +HDRS = ldef.h extern.h +CLEANFILES = mkctype_yacc.tab.c mkctype_yacc.tab.h mkctype_lex.c + +en_COMMON = en_AU en_CA en_GB en_NZ en_US + +ASCII = $(en_COMMON:%=%.US-ASCII) + +LATIN1 = $(en_COMMON:%=%.ISO8859-1) + +LATIN15 = $(en_COMMON:%=%.ISO8859-15) + +UTF8 = $(en_COMMON:%=%.UTF-8) en_IE.UTF-8 + +.KEEP_STATE: + +all: $(MACH)/$(PROG) $(MACHLOCALES) + +$(MACH)/$(PROG): $(OBJS) + $(LINK.c) $(OBJS) -o $@ $(LDLIBS) + $(POST_PROCESS) + +$(ASCII:%=$(MACH)/%): $(MACH)/US-ASCII + $(RM) $@ + $(LN) $(MACH)/US-ASCII $@ + +$(LATIN1:%=$(MACH)/%): $(MACH)/ISO8859-1 + $(RM) $@ + $(LN) $(MACH)/ISO8859-1 $@ + +$(LATIN15:%=$(MACH)/%): $(MACH)/ISO8859-15 + $(RM) $@ + $(LN) $(MACH)/ISO8859-15 $@ + +$(UTF8:%=$(MACH)/%): $(MACH)/UTF-8 + $(RM) $@ + $(LN) $(MACH)/UTF-8 $@ + +mkctype_lex.c: mkctype_lex.l mkctype_yacc.tab.h $(HDRS) + $(LEX) $(LFLAGS) mkctype_lex.l > $@ + +mkctype_yacc.tab.c mkctype_yacc.tab.h: mkctype_yacc.y $(HDRS) + $(YACC) $(YFLAGS) mkctype_yacc.y + +clean: + $(RM) $(OBJS) $(CLEANFILES) + $(RM) -r $(MACH) + +# +# Lint does nothing for us, because yacc and lex outputs are themselves +# not lint clean. This is something that it would be good to address. +# +lint: + +# +# Likewise, the yacc and lex outputs are not cstyle clean. +# +check: + $(CSTYLE) -cPp $(HDRS) + + +# +# Rules for building encoding data files. +# +$(MACH)/%: data/%.src $(MACH)/$(PROG) + $(MACH)/$(PROG) -o $@ $(@:$(MACH)/%=data/%.src) + +include ../Makefile.targ
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/THIRDPARTYLICENSE Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,33 @@ +Copyright (c) 1993 + The Regents of the University of California. All rights reserved. + +This code is derived from software contributed to Berkeley by +Paul Borman at Krystal Technologies. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/THIRDPARTYLICENSE.descrip Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,1 @@ +MKCTYPE UTILITY
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/data/ISO8859-1.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,38 @@ +/* + * Standard LOCALE_CTYPE for the ISO 8859-1 Locale + */ +ENCODING "NONE" +VARIABLE ISO 8859-1 Latin-1 character set + +# +# This is a comment +# +ALPHA 'A' - 'Z' 'a' - 'z' 0xc0 - 0xd6 0xd8 - 0xf6 0xf8 - 0xff +CONTROL 0x00 - 0x1f 0x7f - 0x9f +DIGIT '0' - '9' +GRAPH 0x21 - 0x7e 0xa1 - 0xff +LOWER 'a' - 'z' 0xdf - 0xf6 0xf8 - 0xff +PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa1 - 0xbf 0xd7 0xf7 +SPACE 0x09 - 0x0d ' ' 0xa0 +UPPER 'A' - 'Z' 0xc0 - 0xd6 0xd8 - 0xde +XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F' +BLANK ' ' '\t' 0xa0 +PRINT 0x20 - 0x7e 0xa0 - 0xff + +MAPLOWER <'A' - 'Z' : 'a'> +MAPLOWER <'a' - 'z' : 'a'> +MAPLOWER <0xc0 - 0xd6 : 0xe0> +MAPLOWER <0xd8 - 0xde : 0xf8> +MAPLOWER <0xdf - 0xf6 : 0xdf> +MAPLOWER <0xf8 - 0xff : 0xf8> + +MAPUPPER <'A' - 'Z' : 'A'> +MAPUPPER <'a' - 'z' : 'A'> +MAPUPPER <0xc0 - 0xd6 : 0xc0> +MAPUPPER <0xd8 - 0xde : 0xd8> +MAPUPPER <0xe0 - 0xf6 : 0xc0> +MAPUPPER <0xf8 - 0xfe : 0xd8> + +TODIGIT <'0' - '9' : 0> +TODIGIT <'A' - 'F' : 10> +TODIGIT <'a' - 'f' : 10>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/data/ISO8859-15.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,46 @@ +/* + * Standard LOCALE_CTYPE for the ISO 8859-15 Locale + */ +ENCODING "NONE" +VARIABLE ISO 8859-15 Latin-9 character set + +# +# This is a comment +# +ALPHA 'A' - 'Z' 'a' - 'z' 0xa6 0xa8 0xb4 0xb8 0xbc - 0xbe 0xc0 - 0xd6 0xd8 - 0xf6 0xf8 - 0xff +CONTROL 0x00 - 0x1f 0x7f - 0x9f +DIGIT '0' - '9' +GRAPH 0x21 - 0x7e 0xa1 - 0xff +LOWER 'a' - 'z' 0xa8 0xb8 0xbd 0xdf - 0xf6 0xf8 - 0xff +PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa1 - 0xa5 0xa7 0xa9 - 0xb3 0xb5 - 0xb7 0xb9 - 0xbb 0xbf 0xd7 0xf7 +SPACE 0x09 - 0x0d ' ' 0xa0 +UPPER 'A' - 'Z' 0xa6 0xb4 0xbc 0xbe 0xc0 - 0xd6 0xd8 - 0xde +XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F' +BLANK ' ' '\t' 0xa0 +PRINT 0x20 - 0x7e 0xa0 - 0xff + +MAPLOWER <'A' - 'Z' : 'a'> +MAPLOWER <'a' - 'z' : 'a'> +MAPLOWER <0xa6 - 0xa6 : 0xa8> +MAPLOWER <0xb4 - 0xb4 : 0xb8> +MAPLOWER <0xbc - 0xbc : 0xbd> +MAPLOWER <0xbe - 0xbe : 0xff> +MAPLOWER <0xc0 - 0xd6 : 0xe0> +MAPLOWER <0xd8 - 0xde : 0xf8> +MAPLOWER <0xdf - 0xf6 : 0xdf> +MAPLOWER <0xf8 - 0xff : 0xf8> + +MAPUPPER <'A' - 'Z' : 'A'> +MAPUPPER <'a' - 'z' : 'A'> +MAPUPPER <0xa8 - 0xa8 : 0xa6> +MAPUPPER <0xb8 - 0xb8 : 0xb4> +MAPUPPER <0xbd - 0xbd : 0xbc> +MAPUPPER <0xc0 - 0xd6 : 0xc0> +MAPUPPER <0xd8 - 0xde : 0xd8> +MAPUPPER <0xe0 - 0xf6 : 0xc0> +MAPUPPER <0xf8 - 0xfe : 0xd8> +MAPUPPER <0xff - 0xff : 0xbe> + +TODIGIT <'0' - '9' : 0> +TODIGIT <'A' - 'F' : 10> +TODIGIT <'a' - 'f' : 10>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/data/US-ASCII.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,27 @@ +/* + * Standard LOCALE_CTYPE for the US-ASCII Locale + */ +ENCODING "ASCII" +VARIABLE Strict 7bit US-ASCII locale + +ALPHA 'A' - 'Z' 'a' - 'z' +CONTROL 0x00 - 0x1f 0x7f +DIGIT '0' - '9' +GRAPH 0x21 - 0x7e +LOWER 'a' - 'z' +PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e +SPACE 0x09 - 0x0d 0x20 +UPPER 'A' - 'Z' +XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F' +BLANK ' ' '\t' +PRINT 0x20 - 0x7e + +MAPLOWER <'A' - 'Z' : 'a'> +MAPLOWER <'a' - 'z' : 'a'> + +MAPUPPER <'A' - 'Z' : 'A'> +MAPUPPER <'a' - 'z' : 'A'> + +TODIGIT <'0' - '9' : 0> +TODIGIT <'A' - 'F' : 10> +TODIGIT <'a' - 'f' : 10>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/data/UTF-8.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,2398 @@ +/* + * Unicode 3.2 ctypes table + * + * Generated by Hye-Shik Chang <perky@FreeBSD.org> + * + * WARNING: UCS-4 used here as the internal representation, not UTF-8. + * See lib/libc/locale/utf8.c. + */ + +/* + * UCD(Unicode Character Database) Terms of Use + * + * Disclaimer + * + * The Unicode Character Database is provided as is by Unicode, Inc. No claims + * are made as to fitness for any particular purpose. No warranties of any kind + * are expressed or implied. The recipient agrees to determine applicability of + * information provided. If this file has been purchased on magnetic or optical + * media from Unicode, Inc., the sole remedy for any claim will be exchange of + * defective media within 90 days of receipt. + * + * This disclaimer is applicable for all other data files accompanying the + * Unicode Character Database, some of which have been compiled by the Unicode + * Consortium, and some of which have been supplied by other sources. + * + * Limitations on Rights to Redistribute This Data + * + * Recipient is granted the right to make copies in any form for internal + * distribution and to freely use the information supplied in the creation of + * products supporting the UnicodeTM Standard. The files in the Unicode + * Character Database can be redistributed to third parties or other + * organizations (whether for profit or not) as long as this notice and the + * disclaimer notice are retained. Information can be extracted from these + * files and used in documentation or programs, as long as there is an + * accompanying notice indicating the source. + */ + +ENCODING "UTF-8" +VARIABLE Unicode 3.2 Character Types + + +/* + * U+0000 - U+007F : Basic Latin + */ + +ALPHA 'A' - 'Z' 'a' - 'z' +CONTROL 0x0000 - 0x001f 0x007f +DIGIT '0' - '9' +GRAPH 0x0021 - 0x007e +LOWER 'a' - 'z' +PUNCT 0x0021 - 0x002f 0x003a - 0x0040 0x005b - 0x0060 0x007b - 0x007e +SPACE 0x0009 - 0x000d 0x0020 +UPPER 'A' - 'Z' +XDIGIT '0' - '9' 'A' - 'F' 'a' - 'f' +BLANK 0x0009 0x000b 0x0020 +PRINT 0x0020 - 0x007e +SWIDTH1 0x0020 - 0x007e + +MAPUPPER < 'a' - 'z' : 'A' > +MAPLOWER < 'A' - 'Z' : 'a' > +TODIGIT < '0' - '9' : 0x0000 > +TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 > + + +/* + * U+0080 - U+00FF : Latin-1 Supplement + */ + +ALPHA 0x00aa 0x00b5 0x00ba 0x00c0 - 0x00d6 0x00d8 - 0x00f6 +ALPHA 0x00f8 - 0x00ff +CONTROL 0x0080 - 0x009f +GRAPH 0x00a1 - 0x00ff +LOWER 0x00aa 0x00b5 0x00ba 0x00df - 0x00f6 0x00f8 - 0x00ff +PUNCT 0x00a1 - 0x00a9 0x00ab - 0x00b1 0x00b4 0x00b6 - 0x00b8 +PUNCT 0x00bb 0x00bf 0x00d7 0x00f7 +SPACE 0x0085 0x00a0 +UPPER 0x00c0 - 0x00d6 0x00d8 - 0x00de +BLANK 0x00a0 +PRINT 0x00a0 - 0x00ff +SPECIAL 0x00b2 0x00b3 0x00b9 0x00bc - 0x00be +SWIDTH1 0x00a0 - 0x00ff + +MAPUPPER < 0x00b5 0x039c > +MAPUPPER < 0x00e0 - 0x00f6 : 0x00c0 > +MAPUPPER < 0x00f8 - 0x00fe : 0x00d8 > +MAPUPPER < 0x00ff 0x0178 > +MAPLOWER < 0x00c0 - 0x00d6 : 0x00e0 > +MAPLOWER < 0x00d8 - 0x00de : 0x00f8 > + + +/* + * U+0100 - U+017F : Latin Extended-A + */ + +ALPHA 0x0100 - 0x017f +GRAPH 0x0100 - 0x017f +LOWER 0x0101 0x0103 0x0105 0x0107 0x0109 0x010b 0x010d +LOWER 0x010f 0x0111 0x0113 0x0115 0x0117 0x0119 0x011b +LOWER 0x011d 0x011f 0x0121 0x0123 0x0125 0x0127 0x0129 +LOWER 0x012b 0x012d 0x012f 0x0131 0x0133 0x0135 0x0137 0x0138 +LOWER 0x013a 0x013c 0x013e 0x0140 0x0142 0x0144 0x0146 +LOWER 0x0148 0x0149 0x014b 0x014d 0x014f 0x0151 0x0153 +LOWER 0x0155 0x0157 0x0159 0x015b 0x015d 0x015f 0x0161 +LOWER 0x0163 0x0165 0x0167 0x0169 0x016b 0x016d 0x016f +LOWER 0x0171 0x0173 0x0175 0x0177 0x017a 0x017c 0x017e 0x017f +UPPER 0x0100 0x0102 0x0104 0x0106 0x0108 0x010a 0x010c +UPPER 0x010e 0x0110 0x0112 0x0114 0x0116 0x0118 0x011a +UPPER 0x011c 0x011e 0x0120 0x0122 0x0124 0x0126 0x0128 +UPPER 0x012a 0x012c 0x012e 0x0130 0x0132 0x0134 0x0136 +UPPER 0x0139 0x013b 0x013d 0x013f 0x0141 0x0143 0x0145 +UPPER 0x0147 0x014a 0x014c 0x014e 0x0150 0x0152 0x0154 +UPPER 0x0156 0x0158 0x015a 0x015c 0x015e 0x0160 0x0162 +UPPER 0x0164 0x0166 0x0168 0x016a 0x016c 0x016e 0x0170 +UPPER 0x0172 0x0174 0x0176 0x0178 0x0179 0x017b 0x017d +PRINT 0x0100 - 0x017f +SWIDTH1 0x0100 - 0x017f + +MAPUPPER < 0x0101 0x0100 > +MAPUPPER < 0x0103 0x0102 > +MAPUPPER < 0x0105 0x0104 > +MAPUPPER < 0x0107 0x0106 > +MAPUPPER < 0x0109 0x0108 > +MAPUPPER < 0x010b 0x010a > +MAPUPPER < 0x010d 0x010c > +MAPUPPER < 0x010f 0x010e > +MAPUPPER < 0x0111 0x0110 > +MAPUPPER < 0x0113 0x0112 > +MAPUPPER < 0x0115 0x0114 > +MAPUPPER < 0x0117 0x0116 > +MAPUPPER < 0x0119 0x0118 > +MAPUPPER < 0x011b 0x011a > +MAPUPPER < 0x011d 0x011c > +MAPUPPER < 0x011f 0x011e > +MAPUPPER < 0x0121 0x0120 > +MAPUPPER < 0x0123 0x0122 > +MAPUPPER < 0x0125 0x0124 > +MAPUPPER < 0x0127 0x0126 > +MAPUPPER < 0x0129 0x0128 > +MAPUPPER < 0x012b 0x012a > +MAPUPPER < 0x012d 0x012c > +MAPUPPER < 0x012f 0x012e > +MAPUPPER < 0x0131 'I' > +MAPUPPER < 0x0133 0x0132 > +MAPUPPER < 0x0135 0x0134 > +MAPUPPER < 0x0137 0x0136 > +MAPUPPER < 0x013a 0x0139 > +MAPUPPER < 0x013c 0x013b > +MAPUPPER < 0x013e 0x013d > +MAPUPPER < 0x0140 0x013f > +MAPUPPER < 0x0142 0x0141 > +MAPUPPER < 0x0144 0x0143 > +MAPUPPER < 0x0146 0x0145 > +MAPUPPER < 0x0148 0x0147 > +MAPUPPER < 0x014b 0x014a > +MAPUPPER < 0x014d 0x014c > +MAPUPPER < 0x014f 0x014e > +MAPUPPER < 0x0151 0x0150 > +MAPUPPER < 0x0153 0x0152 > +MAPUPPER < 0x0155 0x0154 > +MAPUPPER < 0x0157 0x0156 > +MAPUPPER < 0x0159 0x0158 > +MAPUPPER < 0x015b 0x015a > +MAPUPPER < 0x015d 0x015c > +MAPUPPER < 0x015f 0x015e > +MAPUPPER < 0x0161 0x0160 > +MAPUPPER < 0x0163 0x0162 > +MAPUPPER < 0x0165 0x0164 > +MAPUPPER < 0x0167 0x0166 > +MAPUPPER < 0x0169 0x0168 > +MAPUPPER < 0x016b 0x016a > +MAPUPPER < 0x016d 0x016c > +MAPUPPER < 0x016f 0x016e > +MAPUPPER < 0x0171 0x0170 > +MAPUPPER < 0x0173 0x0172 > +MAPUPPER < 0x0175 0x0174 > +MAPUPPER < 0x0177 0x0176 > +MAPUPPER < 0x017a 0x0179 > +MAPUPPER < 0x017c 0x017b > +MAPUPPER < 0x017e 0x017d > +MAPUPPER < 0x017f 'S' > +MAPLOWER < 0x0100 0x0101 > +MAPLOWER < 0x0102 0x0103 > +MAPLOWER < 0x0104 0x0105 > +MAPLOWER < 0x0106 0x0107 > +MAPLOWER < 0x0108 0x0109 > +MAPLOWER < 0x010a 0x010b > +MAPLOWER < 0x010c 0x010d > +MAPLOWER < 0x010e 0x010f > +MAPLOWER < 0x0110 0x0111 > +MAPLOWER < 0x0112 0x0113 > +MAPLOWER < 0x0114 0x0115 > +MAPLOWER < 0x0116 0x0117 > +MAPLOWER < 0x0118 0x0119 > +MAPLOWER < 0x011a 0x011b > +MAPLOWER < 0x011c 0x011d > +MAPLOWER < 0x011e 0x011f > +MAPLOWER < 0x0120 0x0121 > +MAPLOWER < 0x0122 0x0123 > +MAPLOWER < 0x0124 0x0125 > +MAPLOWER < 0x0126 0x0127 > +MAPLOWER < 0x0128 0x0129 > +MAPLOWER < 0x012a 0x012b > +MAPLOWER < 0x012c 0x012d > +MAPLOWER < 0x012e 0x012f > +MAPLOWER < 0x0130 'i' > +MAPLOWER < 0x0132 0x0133 > +MAPLOWER < 0x0134 0x0135 > +MAPLOWER < 0x0136 0x0137 > +MAPLOWER < 0x0139 0x013a > +MAPLOWER < 0x013b 0x013c > +MAPLOWER < 0x013d 0x013e > +MAPLOWER < 0x013f 0x0140 > +MAPLOWER < 0x0141 0x0142 > +MAPLOWER < 0x0143 0x0144 > +MAPLOWER < 0x0145 0x0146 > +MAPLOWER < 0x0147 0x0148 > +MAPLOWER < 0x014a 0x014b > +MAPLOWER < 0x014c 0x014d > +MAPLOWER < 0x014e 0x014f > +MAPLOWER < 0x0150 0x0151 > +MAPLOWER < 0x0152 0x0153 > +MAPLOWER < 0x0154 0x0155 > +MAPLOWER < 0x0156 0x0157 > +MAPLOWER < 0x0158 0x0159 > +MAPLOWER < 0x015a 0x015b > +MAPLOWER < 0x015c 0x015d > +MAPLOWER < 0x015e 0x015f > +MAPLOWER < 0x0160 0x0161 > +MAPLOWER < 0x0162 0x0163 > +MAPLOWER < 0x0164 0x0165 > +MAPLOWER < 0x0166 0x0167 > +MAPLOWER < 0x0168 0x0169 > +MAPLOWER < 0x016a 0x016b > +MAPLOWER < 0x016c 0x016d > +MAPLOWER < 0x016e 0x016f > +MAPLOWER < 0x0170 0x0171 > +MAPLOWER < 0x0172 0x0173 > +MAPLOWER < 0x0174 0x0175 > +MAPLOWER < 0x0176 0x0177 > +MAPLOWER < 0x0178 0x00ff > +MAPLOWER < 0x0179 0x017a > +MAPLOWER < 0x017b 0x017c > +MAPLOWER < 0x017d 0x017e > + + +/* + * U+0180 - U+024F : Latin Extended-B + */ + +ALPHA 0x0180 - 0x01ba 0x01bc - 0x01bf 0x01c4 - 0x0220 0x0222 - 0x0233 +GRAPH 0x0180 - 0x0220 0x0222 - 0x0233 +LOWER 0x0180 0x0183 0x0185 0x0188 0x018c 0x018d 0x0192 +LOWER 0x0195 0x0199 - 0x019b 0x019e 0x01a1 0x01a3 0x01a5 +LOWER 0x01a8 0x01aa 0x01ab 0x01ad 0x01b0 0x01b4 0x01b6 +LOWER 0x01b9 0x01ba 0x01bd - 0x01bf 0x01c6 0x01c9 0x01cc +LOWER 0x01ce 0x01d0 0x01d2 0x01d4 0x01d6 0x01d8 0x01da +LOWER 0x01dc 0x01dd 0x01df 0x01e1 0x01e3 0x01e5 0x01e7 +LOWER 0x01e9 0x01eb 0x01ed 0x01ef 0x01f0 0x01f3 0x01f5 +LOWER 0x01f9 0x01fb 0x01fd 0x01ff 0x0201 0x0203 0x0205 +LOWER 0x0207 0x0209 0x020b 0x020d 0x020f 0x0211 0x0213 +LOWER 0x0215 0x0217 0x0219 0x021b 0x021d 0x021f 0x0223 +LOWER 0x0225 0x0227 0x0229 0x022b 0x022d 0x022f 0x0231 +LOWER 0x0233 +UPPER 0x0181 0x0182 0x0184 0x0186 0x0187 0x0189 - 0x018b +UPPER 0x018e - 0x0191 0x0193 0x0194 0x0196 - 0x0198 0x019c 0x019d +UPPER 0x019f 0x01a0 0x01a2 0x01a4 0x01a6 0x01a7 0x01a9 +UPPER 0x01ac 0x01ae 0x01af 0x01b1 - 0x01b3 0x01b5 0x01b7 0x01b8 +UPPER 0x01bc 0x01c4 0x01c7 0x01ca 0x01cd 0x01cf 0x01d1 +UPPER 0x01d3 0x01d5 0x01d7 0x01d9 0x01db 0x01de 0x01e0 +UPPER 0x01e2 0x01e4 0x01e6 0x01e8 0x01ea 0x01ec 0x01ee +UPPER 0x01f1 0x01f4 0x01f6 - 0x01f8 0x01fa 0x01fc 0x01fe +UPPER 0x0200 0x0202 0x0204 0x0206 0x0208 0x020a 0x020c +UPPER 0x020e 0x0210 0x0212 0x0214 0x0216 0x0218 0x021a +UPPER 0x021c 0x021e 0x0220 0x0222 0x0224 0x0226 0x0228 +UPPER 0x022a 0x022c 0x022e 0x0230 0x0232 +PRINT 0x0180 - 0x0220 0x0222 - 0x0233 +SWIDTH1 0x0180 - 0x0220 0x0222 - 0x0233 + +MAPUPPER < 0x0183 0x0182 > +MAPUPPER < 0x0185 0x0184 > +MAPUPPER < 0x0188 0x0187 > +MAPUPPER < 0x018c 0x018b > +MAPUPPER < 0x0192 0x0191 > +MAPUPPER < 0x0195 0x01f6 > +MAPUPPER < 0x0199 0x0198 > +MAPUPPER < 0x019e 0x0220 > +MAPUPPER < 0x01a1 0x01a0 > +MAPUPPER < 0x01a3 0x01a2 > +MAPUPPER < 0x01a5 0x01a4 > +MAPUPPER < 0x01a8 0x01a7 > +MAPUPPER < 0x01ad 0x01ac > +MAPUPPER < 0x01b0 0x01af > +MAPUPPER < 0x01b4 0x01b3 > +MAPUPPER < 0x01b6 0x01b5 > +MAPUPPER < 0x01b9 0x01b8 > +MAPUPPER < 0x01bd 0x01bc > +MAPUPPER < 0x01bf 0x01f7 > +MAPUPPER < 0x01c5 0x01c4 > +MAPUPPER < 0x01c6 0x01c4 > +MAPUPPER < 0x01c8 0x01c7 > +MAPUPPER < 0x01c9 0x01c7 > +MAPUPPER < 0x01cb 0x01ca > +MAPUPPER < 0x01cc 0x01ca > +MAPUPPER < 0x01ce 0x01cd > +MAPUPPER < 0x01d0 0x01cf > +MAPUPPER < 0x01d2 0x01d1 > +MAPUPPER < 0x01d4 0x01d3 > +MAPUPPER < 0x01d6 0x01d5 > +MAPUPPER < 0x01d8 0x01d7 > +MAPUPPER < 0x01da 0x01d9 > +MAPUPPER < 0x01dc 0x01db > +MAPUPPER < 0x01dd 0x018e > +MAPUPPER < 0x01df 0x01de > +MAPUPPER < 0x01e1 0x01e0 > +MAPUPPER < 0x01e3 0x01e2 > +MAPUPPER < 0x01e5 0x01e4 > +MAPUPPER < 0x01e7 0x01e6 > +MAPUPPER < 0x01e9 0x01e8 > +MAPUPPER < 0x01eb 0x01ea > +MAPUPPER < 0x01ed 0x01ec > +MAPUPPER < 0x01ef 0x01ee > +MAPUPPER < 0x01f2 0x01f1 > +MAPUPPER < 0x01f3 0x01f1 > +MAPUPPER < 0x01f5 0x01f4 > +MAPUPPER < 0x01f9 0x01f8 > +MAPUPPER < 0x01fb 0x01fa > +MAPUPPER < 0x01fd 0x01fc > +MAPUPPER < 0x01ff 0x01fe > +MAPUPPER < 0x0201 0x0200 > +MAPUPPER < 0x0203 0x0202 > +MAPUPPER < 0x0205 0x0204 > +MAPUPPER < 0x0207 0x0206 > +MAPUPPER < 0x0209 0x0208 > +MAPUPPER < 0x020b 0x020a > +MAPUPPER < 0x020d 0x020c > +MAPUPPER < 0x020f 0x020e > +MAPUPPER < 0x0211 0x0210 > +MAPUPPER < 0x0213 0x0212 > +MAPUPPER < 0x0215 0x0214 > +MAPUPPER < 0x0217 0x0216 > +MAPUPPER < 0x0219 0x0218 > +MAPUPPER < 0x021b 0x021a > +MAPUPPER < 0x021d 0x021c > +MAPUPPER < 0x021f 0x021e > +MAPUPPER < 0x0223 0x0222 > +MAPUPPER < 0x0225 0x0224 > +MAPUPPER < 0x0227 0x0226 > +MAPUPPER < 0x0229 0x0228 > +MAPUPPER < 0x022b 0x022a > +MAPUPPER < 0x022d 0x022c > +MAPUPPER < 0x022f 0x022e > +MAPUPPER < 0x0231 0x0230 > +MAPUPPER < 0x0233 0x0232 > +MAPLOWER < 0x0181 0x0253 > +MAPLOWER < 0x0182 0x0183 > +MAPLOWER < 0x0184 0x0185 > +MAPLOWER < 0x0186 0x0254 > +MAPLOWER < 0x0187 0x0188 > +MAPLOWER < 0x0189 - 0x018a : 0x0256 > +MAPLOWER < 0x018b 0x018c > +MAPLOWER < 0x018e 0x01dd > +MAPLOWER < 0x018f 0x0259 > +MAPLOWER < 0x0190 0x025b > +MAPLOWER < 0x0191 0x0192 > +MAPLOWER < 0x0193 0x0260 > +MAPLOWER < 0x0194 0x0263 > +MAPLOWER < 0x0196 0x0269 > +MAPLOWER < 0x0197 0x0268 > +MAPLOWER < 0x0198 0x0199 > +MAPLOWER < 0x019c 0x026f > +MAPLOWER < 0x019d 0x0272 > +MAPLOWER < 0x019f 0x0275 > +MAPLOWER < 0x01a0 0x01a1 > +MAPLOWER < 0x01a2 0x01a3 > +MAPLOWER < 0x01a4 0x01a5 > +MAPLOWER < 0x01a6 0x0280 > +MAPLOWER < 0x01a7 0x01a8 > +MAPLOWER < 0x01a9 0x0283 > +MAPLOWER < 0x01ac 0x01ad > +MAPLOWER < 0x01ae 0x0288 > +MAPLOWER < 0x01af 0x01b0 > +MAPLOWER < 0x01b1 - 0x01b2 : 0x028a > +MAPLOWER < 0x01b3 0x01b4 > +MAPLOWER < 0x01b5 0x01b6 > +MAPLOWER < 0x01b7 0x0292 > +MAPLOWER < 0x01b8 0x01b9 > +MAPLOWER < 0x01bc 0x01bd > +MAPLOWER < 0x01c4 0x01c6 > +MAPLOWER < 0x01c5 0x01c6 > +MAPLOWER < 0x01c7 0x01c9 > +MAPLOWER < 0x01c8 0x01c9 > +MAPLOWER < 0x01ca 0x01cc > +MAPLOWER < 0x01cb 0x01cc > +MAPLOWER < 0x01cd 0x01ce > +MAPLOWER < 0x01cf 0x01d0 > +MAPLOWER < 0x01d1 0x01d2 > +MAPLOWER < 0x01d3 0x01d4 > +MAPLOWER < 0x01d5 0x01d6 > +MAPLOWER < 0x01d7 0x01d8 > +MAPLOWER < 0x01d9 0x01da > +MAPLOWER < 0x01db 0x01dc > +MAPLOWER < 0x01de 0x01df > +MAPLOWER < 0x01e0 0x01e1 > +MAPLOWER < 0x01e2 0x01e3 > +MAPLOWER < 0x01e4 0x01e5 > +MAPLOWER < 0x01e6 0x01e7 > +MAPLOWER < 0x01e8 0x01e9 > +MAPLOWER < 0x01ea 0x01eb > +MAPLOWER < 0x01ec 0x01ed > +MAPLOWER < 0x01ee 0x01ef > +MAPLOWER < 0x01f1 0x01f3 > +MAPLOWER < 0x01f2 0x01f3 > +MAPLOWER < 0x01f4 0x01f5 > +MAPLOWER < 0x01f6 0x0195 > +MAPLOWER < 0x01f7 0x01bf > +MAPLOWER < 0x01f8 0x01f9 > +MAPLOWER < 0x01fa 0x01fb > +MAPLOWER < 0x01fc 0x01fd > +MAPLOWER < 0x01fe 0x01ff > +MAPLOWER < 0x0200 0x0201 > +MAPLOWER < 0x0202 0x0203 > +MAPLOWER < 0x0204 0x0205 > +MAPLOWER < 0x0206 0x0207 > +MAPLOWER < 0x0208 0x0209 > +MAPLOWER < 0x020a 0x020b > +MAPLOWER < 0x020c 0x020d > +MAPLOWER < 0x020e 0x020f > +MAPLOWER < 0x0210 0x0211 > +MAPLOWER < 0x0212 0x0213 > +MAPLOWER < 0x0214 0x0215 > +MAPLOWER < 0x0216 0x0217 > +MAPLOWER < 0x0218 0x0219 > +MAPLOWER < 0x021a 0x021b > +MAPLOWER < 0x021c 0x021d > +MAPLOWER < 0x021e 0x021f > +MAPLOWER < 0x0220 0x019e > +MAPLOWER < 0x0222 0x0223 > +MAPLOWER < 0x0224 0x0225 > +MAPLOWER < 0x0226 0x0227 > +MAPLOWER < 0x0228 0x0229 > +MAPLOWER < 0x022a 0x022b > +MAPLOWER < 0x022c 0x022d > +MAPLOWER < 0x022e 0x022f > +MAPLOWER < 0x0230 0x0231 > +MAPLOWER < 0x0232 0x0233 > + + +/* + * U+0250 - U+02AF : IPA Extensions + */ + +ALPHA 0x0250 - 0x02ad +GRAPH 0x0250 - 0x02ad +LOWER 0x0250 - 0x02ad +PRINT 0x0250 - 0x02ad +SWIDTH1 0x0250 - 0x02ad + +MAPUPPER < 0x0253 0x0181 > +MAPUPPER < 0x0254 0x0186 > +MAPUPPER < 0x0256 - 0x0257 : 0x0189 > +MAPUPPER < 0x0259 0x018f > +MAPUPPER < 0x025b 0x0190 > +MAPUPPER < 0x0260 0x0193 > +MAPUPPER < 0x0263 0x0194 > +MAPUPPER < 0x0268 0x0197 > +MAPUPPER < 0x0269 0x0196 > +MAPUPPER < 0x026f 0x019c > +MAPUPPER < 0x0272 0x019d > +MAPUPPER < 0x0275 0x019f > +MAPUPPER < 0x0280 0x01a6 > +MAPUPPER < 0x0283 0x01a9 > +MAPUPPER < 0x0288 0x01ae > +MAPUPPER < 0x028a - 0x028b : 0x01b1 > +MAPUPPER < 0x0292 0x01b7 > + + +/* + * U+02B0 - U+02FF : Spacing Modifier Letters + */ + +GRAPH 0x02b0 - 0x02ee +PUNCT 0x02b9 0x02ba 0x02c2 - 0x02cf 0x02d2 - 0x02df 0x02e5 - 0x02ed +PRINT 0x02b0 - 0x02ee +SWIDTH1 0x02b0 - 0x02ee + + +/* + * U+0300 - U+036F : Combining Diacritical Marks + */ + +GRAPH 0x0300 - 0x034E 0x0350 - 0x036f +PRINT 0x0300 - 0x034E 0x0350 - 0x036f +SWIDTH0 0x0300 - 0x034E 0x0350 - 0x036f + +MAPUPPER < 0x0345 0x0399 > + + +/* + * U+0370 - U+03FF : Greek and Coptic + */ + +ALPHA 0x0386 0x0388 - 0x038a 0x038c 0x038e - 0x03a1 0x03a3 - 0x03ce +ALPHA 0x03d0 - 0x03f5 +GRAPH 0x0374 0x0375 0x037a 0x037e 0x0384 - 0x038a 0x038c +GRAPH 0x038e - 0x03a1 0x03a3 - 0x03ce 0x03d0 - 0x03f6 +LOWER 0x0390 0x03ac - 0x03ce 0x03d0 0x03d1 0x03d5 - 0x03d7 +LOWER 0x03d9 0x03db 0x03dd 0x03df 0x03e1 0x03e3 0x03e5 +LOWER 0x03e7 0x03e9 0x03eb 0x03ed 0x03ef - 0x03f3 0x03f5 +PUNCT 0x0374 0x0375 0x037e 0x0384 0x0385 0x0387 0x03f6 +UPPER 0x0386 0x0388 - 0x038a 0x038c 0x038e 0x038f 0x0391 - 0x03a1 +UPPER 0x03a3 - 0x03ab 0x03d2 - 0x03d4 0x03d8 0x03da 0x03dc +UPPER 0x03de 0x03e0 0x03e2 0x03e4 0x03e6 0x03e8 0x03ea +UPPER 0x03ec 0x03ee 0x03f4 +PRINT 0x0374 0x0375 0x037a 0x037e 0x0384 - 0x038a 0x038c +PRINT 0x038e - 0x03a1 0x03a3 - 0x03ce 0x03d0 - 0x03f6 +SWIDTH1 0x0374 0x0375 0x037a 0x037e 0x0384 - 0x038a 0x038c +SWIDTH1 0x038e - 0x03a1 0x03a3 - 0x03ce 0x03d0 - 0x03f6 + +MAPUPPER < 0x03ac 0x0386 > +MAPUPPER < 0x03ad - 0x03af : 0x0388 > +MAPUPPER < 0x03b1 - 0x03c1 : 0x0391 > +MAPUPPER < 0x03c2 0x03a3 > +MAPUPPER < 0x03c3 - 0x03cb : 0x03a3 > +MAPUPPER < 0x03cc 0x038c > +MAPUPPER < 0x03cd - 0x03ce : 0x038e > +MAPUPPER < 0x03d0 0x0392 > +MAPUPPER < 0x03d1 0x0398 > +MAPUPPER < 0x03d5 0x03a6 > +MAPUPPER < 0x03d6 0x03a0 > +MAPUPPER < 0x03d9 0x03d8 > +MAPUPPER < 0x03db 0x03da > +MAPUPPER < 0x03dd 0x03dc > +MAPUPPER < 0x03df 0x03de > +MAPUPPER < 0x03e1 0x03e0 > +MAPUPPER < 0x03e3 0x03e2 > +MAPUPPER < 0x03e5 0x03e4 > +MAPUPPER < 0x03e7 0x03e6 > +MAPUPPER < 0x03e9 0x03e8 > +MAPUPPER < 0x03eb 0x03ea > +MAPUPPER < 0x03ed 0x03ec > +MAPUPPER < 0x03ef 0x03ee > +MAPUPPER < 0x03f0 0x039a > +MAPUPPER < 0x03f1 0x03a1 > +MAPUPPER < 0x03f2 0x03a3 > +MAPUPPER < 0x03f5 0x0395 > +MAPLOWER < 0x0386 0x03ac > +MAPLOWER < 0x0388 - 0x038a : 0x03ad > +MAPLOWER < 0x038c 0x03cc > +MAPLOWER < 0x038e - 0x038f : 0x03cd > +MAPLOWER < 0x0391 - 0x03a1 : 0x03b1 > +MAPLOWER < 0x03a3 - 0x03ab : 0x03c3 > +MAPLOWER < 0x03d8 0x03d9 > +MAPLOWER < 0x03da 0x03db > +MAPLOWER < 0x03dc 0x03dd > +MAPLOWER < 0x03de 0x03df > +MAPLOWER < 0x03e0 0x03e1 > +MAPLOWER < 0x03e2 0x03e3 > +MAPLOWER < 0x03e4 0x03e5 > +MAPLOWER < 0x03e6 0x03e7 > +MAPLOWER < 0x03e8 0x03e9 > +MAPLOWER < 0x03ea 0x03eb > +MAPLOWER < 0x03ec 0x03ed > +MAPLOWER < 0x03ee 0x03ef > +MAPLOWER < 0x03f4 0x03b8 > + + +/* + * U+0400 - U+04FF : Cyrillic + */ + +ALPHA 0x0400 - 0x0481 0x048a - 0x04ce 0x04d0 - 0x04f5 0x04f8 0x04f9 +GRAPH 0x0400 - 0x0486 0x0488 - 0x04ce 0x04d0 - 0x04f5 0x04f8 0x04f9 +LOWER 0x0430 - 0x045f 0x0461 0x0463 0x0465 0x0467 0x0469 +LOWER 0x046b 0x046d 0x046f 0x0471 0x0473 0x0475 0x0477 +LOWER 0x0479 0x047b 0x047d 0x047f 0x0481 0x048b 0x048d +LOWER 0x048f 0x0491 0x0493 0x0495 0x0497 0x0499 0x049b +LOWER 0x049d 0x049f 0x04a1 0x04a3 0x04a5 0x04a7 0x04a9 +LOWER 0x04ab 0x04ad 0x04af 0x04b1 0x04b3 0x04b5 0x04b7 +LOWER 0x04b9 0x04bb 0x04bd 0x04bf 0x04c2 0x04c4 0x04c6 +LOWER 0x04c8 0x04ca 0x04cc 0x04ce 0x04d1 0x04d3 0x04d5 +LOWER 0x04d7 0x04d9 0x04db 0x04dd 0x04df 0x04e1 0x04e3 +LOWER 0x04e5 0x04e7 0x04e9 0x04eb 0x04ed 0x04ef 0x04f1 +LOWER 0x04f3 0x04f5 0x04f7 0x04f9 +PUNCT 0x0482 +UPPER 0x0400 - 0x042f 0x0460 0x0462 0x0464 0x0466 0x0468 +UPPER 0x046a 0x046c 0x046e 0x0470 0x0472 0x0474 0x0476 +UPPER 0x0478 0x047a 0x047c 0x047e 0x0480 0x048a 0x048c +UPPER 0x048e 0x0490 0x0492 0x0494 0x0496 0x0498 0x049a +UPPER 0x049c 0x049e 0x04a0 0x04a2 0x04a4 0x04a6 0x04a8 +UPPER 0x04aa 0x04ac 0x04ae 0x04b0 0x04b2 0x04b4 0x04b6 +UPPER 0x04b8 0x04ba 0x04bc 0x04be 0x04c0 0x04c1 0x04c3 +UPPER 0x04c5 0x04c7 0x04c9 0x04cb 0x04cd 0x04d0 0x04d2 +UPPER 0x04d4 0x04d6 0x04d8 0x04da 0x04dc 0x04de 0x04e0 +UPPER 0x04e2 0x04e4 0x04e6 0x04e8 0x04ea 0x04ec 0x04ee +UPPER 0x04f0 0x04f2 0x04f4 0x04f6 0x04f8 +PRINT 0x0400 - 0x0486 0x0488 - 0x04ce 0x04d0 - 0x04f9 +SWIDTH0 0x0483 - 0x0486 0x0488 - 0x0489 +SWIDTH1 0x0400 - 0x0482 0x048a - 0x04ce 0x04d0 - 0x04f9 + +MAPUPPER < 0x0430 - 0x044f : 0x0410 > +MAPUPPER < 0x0450 - 0x045f : 0x0400 > +MAPUPPER < 0x0461 0x0460 > +MAPUPPER < 0x0463 0x0462 > +MAPUPPER < 0x0465 0x0464 > +MAPUPPER < 0x0467 0x0466 > +MAPUPPER < 0x0469 0x0468 > +MAPUPPER < 0x046b 0x046a > +MAPUPPER < 0x046d 0x046c > +MAPUPPER < 0x046f 0x046e > +MAPUPPER < 0x0471 0x0470 > +MAPUPPER < 0x0473 0x0472 > +MAPUPPER < 0x0475 0x0474 > +MAPUPPER < 0x0477 0x0476 > +MAPUPPER < 0x0479 0x0478 > +MAPUPPER < 0x047b 0x047a > +MAPUPPER < 0x047d 0x047c > +MAPUPPER < 0x047f 0x047e > +MAPUPPER < 0x0481 0x0480 > +MAPUPPER < 0x048b 0x048a > +MAPUPPER < 0x048d 0x048c > +MAPUPPER < 0x048f 0x048e > +MAPUPPER < 0x0491 0x0490 > +MAPUPPER < 0x0493 0x0492 > +MAPUPPER < 0x0495 0x0494 > +MAPUPPER < 0x0497 0x0496 > +MAPUPPER < 0x0499 0x0498 > +MAPUPPER < 0x049b 0x049a > +MAPUPPER < 0x049d 0x049c > +MAPUPPER < 0x049f 0x049e > +MAPUPPER < 0x04a1 0x04a0 > +MAPUPPER < 0x04a3 0x04a2 > +MAPUPPER < 0x04a5 0x04a4 > +MAPUPPER < 0x04a7 0x04a6 > +MAPUPPER < 0x04a9 0x04a8 > +MAPUPPER < 0x04ab 0x04aa > +MAPUPPER < 0x04ad 0x04ac > +MAPUPPER < 0x04af 0x04ae > +MAPUPPER < 0x04b1 0x04b0 > +MAPUPPER < 0x04b3 0x04b2 > +MAPUPPER < 0x04b5 0x04b4 > +MAPUPPER < 0x04b7 0x04b6 > +MAPUPPER < 0x04b9 0x04b8 > +MAPUPPER < 0x04bb 0x04ba > +MAPUPPER < 0x04bd 0x04bc > +MAPUPPER < 0x04bf 0x04be > +MAPUPPER < 0x04c2 0x04c1 > +MAPUPPER < 0x04c4 0x04c3 > +MAPUPPER < 0x04c6 0x04c5 > +MAPUPPER < 0x04c8 0x04c7 > +MAPUPPER < 0x04ca 0x04c9 > +MAPUPPER < 0x04cc 0x04cb > +MAPUPPER < 0x04ce 0x04cd > +MAPUPPER < 0x04d1 0x04d0 > +MAPUPPER < 0x04d3 0x04d2 > +MAPUPPER < 0x04d5 0x04d4 > +MAPUPPER < 0x04d7 0x04d6 > +MAPUPPER < 0x04d9 0x04d8 > +MAPUPPER < 0x04db 0x04da > +MAPUPPER < 0x04dd 0x04dc > +MAPUPPER < 0x04df 0x04de > +MAPUPPER < 0x04e1 0x04e0 > +MAPUPPER < 0x04e3 0x04e2 > +MAPUPPER < 0x04e5 0x04e4 > +MAPUPPER < 0x04e7 0x04e6 > +MAPUPPER < 0x04e9 0x04e8 > +MAPUPPER < 0x04eb 0x04ea > +MAPUPPER < 0x04ed 0x04ec > +MAPUPPER < 0x04ef 0x04ee > +MAPUPPER < 0x04f1 0x04f0 > +MAPUPPER < 0x04f3 0x04f2 > +MAPUPPER < 0x04f5 0x04f4 > +MAPUPPER < 0x04f7 0x04f6 > +MAPUPPER < 0x04f9 0x04f8 > +MAPLOWER < 0x0400 - 0x040f : 0x0450 > +MAPLOWER < 0x0410 - 0x042f : 0x0430 > +MAPLOWER < 0x0460 0x0461 > +MAPLOWER < 0x0462 0x0463 > +MAPLOWER < 0x0464 0x0465 > +MAPLOWER < 0x0466 0x0467 > +MAPLOWER < 0x0468 0x0469 > +MAPLOWER < 0x046a 0x046b > +MAPLOWER < 0x046c 0x046d > +MAPLOWER < 0x046e 0x046f > +MAPLOWER < 0x0470 0x0471 > +MAPLOWER < 0x0472 0x0473 > +MAPLOWER < 0x0474 0x0475 > +MAPLOWER < 0x0476 0x0477 > +MAPLOWER < 0x0478 0x0479 > +MAPLOWER < 0x047a 0x047b > +MAPLOWER < 0x047c 0x047d > +MAPLOWER < 0x047e 0x047f > +MAPLOWER < 0x0480 0x0481 > +MAPLOWER < 0x048a 0x048b > +MAPLOWER < 0x048c 0x048d > +MAPLOWER < 0x048e 0x048f > +MAPLOWER < 0x0490 0x0491 > +MAPLOWER < 0x0492 0x0493 > +MAPLOWER < 0x0494 0x0495 > +MAPLOWER < 0x0496 0x0497 > +MAPLOWER < 0x0498 0x0499 > +MAPLOWER < 0x049a 0x049b > +MAPLOWER < 0x049c 0x049d > +MAPLOWER < 0x049e 0x049f > +MAPLOWER < 0x04a0 0x04a1 > +MAPLOWER < 0x04a2 0x04a3 > +MAPLOWER < 0x04a4 0x04a5 > +MAPLOWER < 0x04a6 0x04a7 > +MAPLOWER < 0x04a8 0x04a9 > +MAPLOWER < 0x04aa 0x04ab > +MAPLOWER < 0x04ac 0x04ad > +MAPLOWER < 0x04ae 0x04af > +MAPLOWER < 0x04b0 0x04b1 > +MAPLOWER < 0x04b2 0x04b3 > +MAPLOWER < 0x04b4 0x04b5 > +MAPLOWER < 0x04b6 0x04b7 > +MAPLOWER < 0x04b8 0x04b9 > +MAPLOWER < 0x04ba 0x04bb > +MAPLOWER < 0x04bc 0x04bd > +MAPLOWER < 0x04be 0x04bf > +MAPLOWER < 0x04c1 0x04c2 > +MAPLOWER < 0x04c3 0x04c4 > +MAPLOWER < 0x04c5 0x04c6 > +MAPLOWER < 0x04c7 0x04c8 > +MAPLOWER < 0x04c9 0x04ca > +MAPLOWER < 0x04cb 0x04cc > +MAPLOWER < 0x04cd 0x04ce > +MAPLOWER < 0x04d0 0x04d1 > +MAPLOWER < 0x04d2 0x04d3 > +MAPLOWER < 0x04d4 0x04d5 > +MAPLOWER < 0x04d6 0x04d7 > +MAPLOWER < 0x04d8 0x04d9 > +MAPLOWER < 0x04da 0x04db > +MAPLOWER < 0x04dc 0x04dd > +MAPLOWER < 0x04de 0x04df > +MAPLOWER < 0x04e0 0x04e1 > +MAPLOWER < 0x04e2 0x04e3 > +MAPLOWER < 0x04e4 0x04e5 > +MAPLOWER < 0x04e6 0x04e7 > +MAPLOWER < 0x04e8 0x04e9 > +MAPLOWER < 0x04ea 0x04eb > +MAPLOWER < 0x04ec 0x04ed > +MAPLOWER < 0x04ee 0x04ef > +MAPLOWER < 0x04f0 0x04f1 > +MAPLOWER < 0x04f2 0x04f3 > +MAPLOWER < 0x04f4 0x04f5 > +MAPLOWER < 0x04f6 0x04f7 > +MAPLOWER < 0x04f8 0x04f9 > + + +/* + * U+0500 - U+052F : Cyrillic Supplementary + */ + +ALPHA 0x0500 - 0x050f +GRAPH 0x0500 - 0x050f +LOWER 0x0501 0x0503 0x0505 0x0507 0x0509 0x050b 0x050d +LOWER 0x050f +UPPER 0x0500 0x0502 0x0504 0x0506 0x0508 0x050a 0x050c +UPPER 0x050e +PRINT 0x0500 - 0x050f +SWIDTH1 0x0500 - 0x050f + +MAPUPPER < 0x0501 0x0500 > +MAPUPPER < 0x0503 0x0502 > +MAPUPPER < 0x0505 0x0504 > +MAPUPPER < 0x0507 0x0506 > +MAPUPPER < 0x0509 0x0508 > +MAPUPPER < 0x050b 0x050a > +MAPUPPER < 0x050d 0x050c > +MAPUPPER < 0x050f 0x050e > +MAPLOWER < 0x0500 0x0501 > +MAPLOWER < 0x0502 0x0503 > +MAPLOWER < 0x0504 0x0505 > +MAPLOWER < 0x0506 0x0507 > +MAPLOWER < 0x0508 0x0509 > +MAPLOWER < 0x050a 0x050b > +MAPLOWER < 0x050c 0x050d > +MAPLOWER < 0x050e 0x050f > + + +/* + * U+0530 - U+058F : Armenian + */ + +ALPHA 0x0531 - 0x0556 0x0561 - 0x0587 +GRAPH 0x0531 - 0x0556 0x0559 - 0x055f 0x0561 - 0x0587 0x0589 0x058a +LOWER 0x0561 - 0x0587 +PUNCT 0x055a - 0x055f 0x0589 0x058a +UPPER 0x0531 - 0x0556 +PRINT 0x0531 - 0x0556 0x0559 - 0x055f 0x0561 - 0x0587 0x0589 0x058a +SWIDTH1 0x0531 - 0x0556 0x0559 - 0x055f 0x0561 - 0x0587 0x0589 0x058a + +MAPUPPER < 0x0561 - 0x0586 : 0x0531 > +MAPLOWER < 0x0531 - 0x0556 : 0x0561 > + + +/* + * U+0590 - U+05FF : Hebrew + */ + +GRAPH 0x0591 - 0x05a1 0x05a3 - 0x05b9 0x05bb - 0x05c4 0x05d0 - 0x05ea +GRAPH 0x05f0 - 0x05f4 +PUNCT 0x05be 0x05c0 0x05c3 0x05f3 0x05f4 +PRINT 0x0591 - 0x05a1 0x05a3 - 0x05b9 0x05bb - 0x05c4 0x05d0 - 0x05ea +PRINT 0x05f0 - 0x05f4 +SWIDTH1 0x0591 - 0x05a1 0x05a3 - 0x05b9 0x05bb - 0x05c4 0x05d0 - 0x05ea +SWIDTH1 0x05f0 - 0x05f4 + + +/* + * U+0600 - U+06FF : Arabic + */ + +CONTROL 0x06dd +GRAPH 0x060c 0x061b 0x061f 0x0621 - 0x063a 0x0640 - 0x0655 +GRAPH 0x0660 - 0x06dc 0x06de - 0x06ed 0x06f0 - 0x06fe +PUNCT 0x060c 0x061b 0x061f 0x066a - 0x066d 0x06d4 0x06e9 +PUNCT 0x06fd 0x06fe +PRINT 0x060c 0x061b 0x061f 0x0621 - 0x063a 0x0640 - 0x0655 +PRINT 0x0660 - 0x06dc 0x06de - 0x06ed 0x06f0 - 0x06fe +SWIDTH1 0x060c 0x061b 0x061f 0x0621 - 0x063a 0x0640 - 0x0655 +SWIDTH1 0x0660 - 0x06dc 0x06de - 0x06ed 0x06f0 - 0x06fe + + +/* + * U+0700 - U+074F : Syriac + */ + +CONTROL 0x070f +GRAPH 0x0700 - 0x070d 0x0710 - 0x072c 0x0730 - 0x074a +PUNCT 0x0700 - 0x070d +PRINT 0x0700 - 0x070d 0x0710 - 0x072c 0x0730 - 0x074a +SWIDTH1 0x0700 - 0x070d 0x0710 - 0x072c 0x0730 - 0x074a + + +/* + * U+0780 - U+07BF : Thaana + */ + +GRAPH 0x0780 - 0x07b1 +PRINT 0x0780 - 0x07b1 +SWIDTH1 0x0780 - 0x07b1 + + +/* + * U+0900 - U+097F : Devanagari + */ + +GRAPH 0x0901 - 0x0903 0x0905 - 0x0939 0x093c - 0x094d 0x0950 - 0x0954 +GRAPH 0x0958 - 0x0970 +PUNCT 0x0964 0x0965 0x0970 +PRINT 0x0901 - 0x0903 0x0905 - 0x0939 0x093c - 0x094d 0x0950 - 0x0954 +PRINT 0x0958 - 0x0970 +SWIDTH1 0x0901 - 0x0903 0x0905 - 0x0939 0x093c - 0x094d 0x0950 - 0x0954 +SWIDTH1 0x0958 - 0x0970 + + +/* + * U+0980 - U+09FF : Bengali + */ + +GRAPH 0x0981 - 0x0983 0x0985 - 0x098c 0x098f 0x0990 0x0993 - 0x09a8 +GRAPH 0x09aa - 0x09b0 0x09b2 0x09b6 - 0x09b9 0x09bc 0x09be - 0x09c4 +GRAPH 0x09c7 0x09c8 0x09cb - 0x09cd 0x09d7 0x09dc 0x09dd +GRAPH 0x09df - 0x09e3 0x09e6 - 0x09fa +PUNCT 0x09f2 0x09f3 0x09fa +PRINT 0x0981 - 0x0983 0x0985 - 0x098c 0x098f 0x0990 0x0993 - 0x09a8 +PRINT 0x09aa - 0x09b0 0x09b2 0x09b6 - 0x09b9 0x09bc 0x09be - 0x09c4 +PRINT 0x09c7 0x09c8 0x09cb - 0x09cd 0x09d7 0x09dc 0x09dd +PRINT 0x09df - 0x09e3 0x09e6 - 0x09fa +SPECIAL 0x09f4 - 0x09f9 +SWIDTH1 0x0981 - 0x0983 0x0985 - 0x098c 0x098f 0x0990 0x0993 - 0x09a8 +SWIDTH1 0x09aa - 0x09b0 0x09b2 0x09b6 - 0x09b9 0x09bc 0x09be - 0x09c4 +SWIDTH1 0x09c7 0x09c8 0x09cb - 0x09cd 0x09d7 0x09dc 0x09dd +SWIDTH1 0x09df - 0x09e3 0x09e6 - 0x09fa + + +/* + * U+0A00 - U+0A7F : Gurmukhi + */ + +GRAPH 0x0a02 0x0a05 - 0x0a0a 0x0a0f 0x0a10 0x0a13 - 0x0a28 +GRAPH 0x0a2a - 0x0a30 0x0a32 0x0a33 0x0a35 0x0a36 0x0a38 0x0a39 +GRAPH 0x0a3c 0x0a3e - 0x0a42 0x0a47 0x0a48 0x0a4b - 0x0a4d +GRAPH 0x0a59 - 0x0a5c 0x0a5e 0x0a66 - 0x0a74 +PRINT 0x0a02 0x0a05 - 0x0a0a 0x0a0f 0x0a10 0x0a13 - 0x0a28 +PRINT 0x0a2a - 0x0a30 0x0a32 0x0a33 0x0a35 0x0a36 0x0a38 0x0a39 +PRINT 0x0a3c 0x0a3e - 0x0a42 0x0a47 0x0a48 0x0a4b - 0x0a4d +PRINT 0x0a59 - 0x0a5c 0x0a5e 0x0a66 - 0x0a74 +SWIDTH1 0x0a02 0x0a05 - 0x0a0a 0x0a0f 0x0a10 0x0a13 - 0x0a28 +SWIDTH1 0x0a2a - 0x0a30 0x0a32 0x0a33 0x0a35 0x0a36 0x0a38 0x0a39 +SWIDTH1 0x0a3c 0x0a3e - 0x0a42 0x0a47 0x0a48 0x0a4b - 0x0a4d +SWIDTH1 0x0a59 - 0x0a5c 0x0a5e 0x0a66 - 0x0a74 + + +/* + * U+0A80 - U+0AFF : Gujarati + */ + +GRAPH 0x0a81 - 0x0a83 0x0a85 - 0x0a8b 0x0a8d 0x0a8f - 0x0a91 +GRAPH 0x0a93 - 0x0aa8 0x0aaa - 0x0ab0 0x0ab2 0x0ab3 0x0ab5 - 0x0ab9 +GRAPH 0x0abc - 0x0ac5 0x0ac7 - 0x0ac9 0x0acb - 0x0acd 0x0ad0 +GRAPH 0x0ae0 0x0ae6 - 0x0aef +PRINT 0x0a81 - 0x0a83 0x0a85 - 0x0a8b 0x0a8d 0x0a8f - 0x0a91 +PRINT 0x0a93 - 0x0aa8 0x0aaa - 0x0ab0 0x0ab2 0x0ab3 0x0ab5 - 0x0ab9 +PRINT 0x0abc - 0x0ac5 0x0ac7 - 0x0ac9 0x0acb - 0x0acd 0x0ad0 +PRINT 0x0ae0 0x0ae6 - 0x0aef +SWIDTH1 0x0a81 - 0x0a83 0x0a85 - 0x0a8b 0x0a8d 0x0a8f - 0x0a91 +SWIDTH1 0x0a93 - 0x0aa8 0x0aaa - 0x0ab0 0x0ab2 0x0ab3 0x0ab5 - 0x0ab9 +SWIDTH1 0x0abc - 0x0ac5 0x0ac7 - 0x0ac9 0x0acb - 0x0acd 0x0ad0 +SWIDTH1 0x0ae0 0x0ae6 - 0x0aef + + +/* + * U+0B00 - U+0B7F : Oriya + */ + +GRAPH 0x0b01 - 0x0b03 0x0b05 - 0x0b0c 0x0b0f 0x0b10 0x0b13 - 0x0b28 +GRAPH 0x0b2a - 0x0b30 0x0b32 0x0b33 0x0b36 - 0x0b39 0x0b3c - 0x0b43 +GRAPH 0x0b47 0x0b48 0x0b4b - 0x0b4d 0x0b56 0x0b57 0x0b5c 0x0b5d +GRAPH 0x0b5f - 0x0b61 0x0b66 - 0x0b70 +PUNCT 0x0b70 +PRINT 0x0b01 - 0x0b03 0x0b05 - 0x0b0c 0x0b0f 0x0b10 0x0b13 - 0x0b28 +PRINT 0x0b2a - 0x0b30 0x0b32 0x0b33 0x0b36 - 0x0b39 0x0b3c - 0x0b43 +PRINT 0x0b47 0x0b48 0x0b4b - 0x0b4d 0x0b56 0x0b57 0x0b5c 0x0b5d +PRINT 0x0b5f - 0x0b61 0x0b66 - 0x0b70 +SWIDTH1 0x0b01 - 0x0b03 0x0b05 - 0x0b0c 0x0b0f 0x0b10 0x0b13 - 0x0b28 +SWIDTH1 0x0b2a - 0x0b30 0x0b32 0x0b33 0x0b36 - 0x0b39 0x0b3c - 0x0b43 +SWIDTH1 0x0b47 0x0b48 0x0b4b - 0x0b4d 0x0b56 0x0b57 0x0b5c 0x0b5d +SWIDTH1 0x0b5f - 0x0b61 0x0b66 - 0x0b70 + + +/* + * U+0B80 - U+0BFF : Tamil + */ + +GRAPH 0x0b82 0x0b83 0x0b85 - 0x0b8a 0x0b8e - 0x0b90 0x0b92 - 0x0b95 +GRAPH 0x0b99 0x0b9a 0x0b9c 0x0b9e 0x0b9f 0x0ba3 0x0ba4 +GRAPH 0x0ba8 - 0x0baa 0x0bae - 0x0bb5 0x0bb7 - 0x0bb9 0x0bbe - 0x0bc2 +GRAPH 0x0bc6 - 0x0bc8 0x0bca - 0x0bcd 0x0bd7 0x0be7 - 0x0bf2 +PRINT 0x0b82 0x0b83 0x0b85 - 0x0b8a 0x0b8e - 0x0b90 0x0b92 - 0x0b95 +PRINT 0x0b99 0x0b9a 0x0b9c 0x0b9e 0x0b9f 0x0ba3 0x0ba4 +PRINT 0x0ba8 - 0x0baa 0x0bae - 0x0bb5 0x0bb7 - 0x0bb9 0x0bbe - 0x0bc2 +PRINT 0x0bc6 - 0x0bc8 0x0bca - 0x0bcd 0x0bd7 0x0be7 - 0x0bf2 +SPECIAL 0x0bf0 - 0x0bf2 +SWIDTH1 0x0b82 0x0b83 0x0b85 - 0x0b8a 0x0b8e - 0x0b90 0x0b92 - 0x0b95 +SWIDTH1 0x0b99 0x0b9a 0x0b9c 0x0b9e 0x0b9f 0x0ba3 0x0ba4 +SWIDTH1 0x0ba8 - 0x0baa 0x0bae - 0x0bb5 0x0bb7 - 0x0bb9 0x0bbe - 0x0bc2 +SWIDTH1 0x0bc6 - 0x0bc8 0x0bca - 0x0bcd 0x0bd7 0x0be7 - 0x0bf2 + + +/* + * U+0C00 - U+0C7F : Telugu + */ + +GRAPH 0x0c01 - 0x0c03 0x0c05 - 0x0c0c 0x0c0e - 0x0c10 0x0c12 - 0x0c28 +GRAPH 0x0c2a - 0x0c33 0x0c35 - 0x0c39 0x0c3e - 0x0c44 0x0c46 - 0x0c48 +GRAPH 0x0c4a - 0x0c4d 0x0c55 0x0c56 0x0c60 0x0c61 0x0c66 - 0x0c6f +PRINT 0x0c01 - 0x0c03 0x0c05 - 0x0c0c 0x0c0e - 0x0c10 0x0c12 - 0x0c28 +PRINT 0x0c2a - 0x0c33 0x0c35 - 0x0c39 0x0c3e - 0x0c44 0x0c46 - 0x0c48 +PRINT 0x0c4a - 0x0c4d 0x0c55 0x0c56 0x0c60 0x0c61 0x0c66 - 0x0c6f +SWIDTH1 0x0c01 - 0x0c03 0x0c05 - 0x0c0c 0x0c0e - 0x0c10 0x0c12 - 0x0c28 +SWIDTH1 0x0c2a - 0x0c33 0x0c35 - 0x0c39 0x0c3e - 0x0c44 0x0c46 - 0x0c48 +SWIDTH1 0x0c4a - 0x0c4d 0x0c55 0x0c56 0x0c60 0x0c61 0x0c66 - 0x0c6f + + +/* + * U+0C80 - U+0CFF : Kannada + */ + +GRAPH 0x0c82 0x0c83 0x0c85 - 0x0c8c 0x0c8e - 0x0c90 0x0c92 - 0x0ca8 +GRAPH 0x0caa - 0x0cb3 0x0cb5 - 0x0cb9 0x0cbe - 0x0cc4 0x0cc6 - 0x0cc8 +GRAPH 0x0cca - 0x0ccd 0x0cd5 0x0cd6 0x0cde 0x0ce0 0x0ce1 +GRAPH 0x0ce6 - 0x0cef +PRINT 0x0c82 0x0c83 0x0c85 - 0x0c8c 0x0c8e - 0x0c90 0x0c92 - 0x0ca8 +PRINT 0x0caa - 0x0cb3 0x0cb5 - 0x0cb9 0x0cbe - 0x0cc4 0x0cc6 - 0x0cc8 +PRINT 0x0cca - 0x0ccd 0x0cd5 0x0cd6 0x0cde 0x0ce0 0x0ce1 +PRINT 0x0ce6 - 0x0cef +SWIDTH1 0x0c82 0x0c83 0x0c85 - 0x0c8c 0x0c8e - 0x0c90 0x0c92 - 0x0ca8 +SWIDTH1 0x0caa - 0x0cb3 0x0cb5 - 0x0cb9 0x0cbe - 0x0cc4 0x0cc6 - 0x0cc8 +SWIDTH1 0x0cca - 0x0ccd 0x0cd5 0x0cd6 0x0cde 0x0ce0 0x0ce1 +SWIDTH1 0x0ce6 - 0x0cef + + +/* + * U+0D00 - U+0D7F : Malayalam + */ + +GRAPH 0x0d02 0x0d03 0x0d05 - 0x0d0c 0x0d0e - 0x0d10 0x0d12 - 0x0d28 +GRAPH 0x0d2a - 0x0d39 0x0d3e - 0x0d43 0x0d46 - 0x0d48 0x0d4a - 0x0d4d +GRAPH 0x0d57 0x0d60 0x0d61 0x0d66 - 0x0d6f +PRINT 0x0d02 0x0d03 0x0d05 - 0x0d0c 0x0d0e - 0x0d10 0x0d12 - 0x0d28 +PRINT 0x0d2a - 0x0d39 0x0d3e - 0x0d43 0x0d46 - 0x0d48 0x0d4a - 0x0d4d +PRINT 0x0d57 0x0d60 0x0d61 0x0d66 - 0x0d6f +SWIDTH1 0x0d02 0x0d03 0x0d05 - 0x0d0c 0x0d0e - 0x0d10 0x0d12 - 0x0d28 +SWIDTH1 0x0d2a - 0x0d39 0x0d3e - 0x0d43 0x0d46 - 0x0d48 0x0d4a - 0x0d4d +SWIDTH1 0x0d57 0x0d60 0x0d61 0x0d66 - 0x0d6f + + +/* + * U+0D80 - U+0DFF : Sinhala + */ + +GRAPH 0x0d82 0x0d83 0x0d85 - 0x0d96 0x0d9a - 0x0db1 0x0db3 - 0x0dbb +GRAPH 0x0dbd 0x0dc0 - 0x0dc6 0x0dca 0x0dcf - 0x0dd4 0x0dd6 +GRAPH 0x0dd8 - 0x0ddf 0x0df2 - 0x0df4 +PUNCT 0x0df4 +PRINT 0x0d82 0x0d83 0x0d85 - 0x0d96 0x0d9a - 0x0db1 0x0db3 - 0x0dbb +PRINT 0x0dbd 0x0dc0 - 0x0dc6 0x0dca 0x0dcf - 0x0dd4 0x0dd6 +PRINT 0x0dd8 - 0x0ddf 0x0df2 - 0x0df4 +SWIDTH1 0x0d82 0x0d83 0x0d85 - 0x0d96 0x0d9a - 0x0db1 0x0db3 - 0x0dbb +SWIDTH1 0x0dbd 0x0dc0 - 0x0dc6 0x0dca 0x0dcf - 0x0dd4 0x0dd6 +SWIDTH1 0x0dd8 - 0x0ddf 0x0df2 - 0x0df4 + + +/* + * U+0E00 - U+0E7F : Thai + */ + +GRAPH 0x0e01 - 0x0e3a 0x0e3f - 0x0e5b +PUNCT 0x0e3f 0x0e4f 0x0e5a 0x0e5b +PRINT 0x0e01 - 0x0e3a 0x0e3f - 0x0e5b +SWIDTH0 0x0e31 0x0e34 - 0x0e3a 0x0e47 - 0x0e4e +SWIDTH1 0x0e01 - 0x0e30 0x0e32 - 0x0e33 0x0e3f - 0x0e46 0x0e4f - 0x0e5b + + +/* + * U+0E80 - U+0EFF : Lao + */ + +GRAPH 0x0e81 0x0e82 0x0e84 0x0e87 0x0e88 0x0e8a 0x0e8d +GRAPH 0x0e94 - 0x0e97 0x0e99 - 0x0e9f 0x0ea1 - 0x0ea3 0x0ea5 +GRAPH 0x0ea7 0x0eaa 0x0eab 0x0ead - 0x0eb9 0x0ebb - 0x0ebd +GRAPH 0x0ec0 - 0x0ec4 0x0ec6 0x0ec8 - 0x0ecd 0x0ed0 - 0x0ed9 +GRAPH 0x0edc 0x0edd +PRINT 0x0e81 0x0e82 0x0e84 0x0e87 0x0e88 0x0e8a 0x0e8d +PRINT 0x0e94 - 0x0e97 0x0e99 - 0x0e9f 0x0ea1 - 0x0ea3 0x0ea5 +PRINT 0x0ea7 0x0eaa 0x0eab 0x0ead - 0x0eb9 0x0ebb - 0x0ebd +PRINT 0x0ec0 - 0x0ec4 0x0ec6 0x0ec8 - 0x0ecd 0x0ed0 - 0x0ed9 +PRINT 0x0edc 0x0edd +SWIDTH1 0x0e81 0x0e82 0x0e84 0x0e87 0x0e88 0x0e8a 0x0e8d +SWIDTH1 0x0e94 - 0x0e97 0x0e99 - 0x0e9f 0x0ea1 - 0x0ea3 0x0ea5 +SWIDTH1 0x0ea7 0x0eaa 0x0eab 0x0ead - 0x0eb9 0x0ebb - 0x0ebd +SWIDTH1 0x0ec0 - 0x0ec4 0x0ec6 0x0ec8 - 0x0ecd 0x0ed0 - 0x0ed9 +SWIDTH1 0x0edc 0x0edd + + +/* + * U+0F00 - U+0FFF : Tibetan + */ + +GRAPH 0x0f00 - 0x0f47 0x0f49 - 0x0f6a 0x0f71 - 0x0f8b 0x0f90 - 0x0f97 +GRAPH 0x0f99 - 0x0fbc 0x0fbe - 0x0fcc 0x0fcf +PUNCT 0x0f01 - 0x0f17 0x0f1a - 0x0f1f 0x0f34 0x0f36 0x0f38 +PUNCT 0x0f3a - 0x0f3d 0x0f85 0x0fbe - 0x0fc5 0x0fc7 - 0x0fcc +PUNCT 0x0fcf +PRINT 0x0f00 - 0x0f47 0x0f49 - 0x0f6a 0x0f71 - 0x0f8b 0x0f90 - 0x0f97 +PRINT 0x0f99 - 0x0fbc 0x0fbe - 0x0fcc 0x0fcf +SPECIAL 0x0f2a - 0x0f33 +PHONOGRAM 0x0f00 +SWIDTH1 0x0f00 - 0x0f47 0x0f49 - 0x0f6a 0x0f71 - 0x0f8b 0x0f90 - 0x0f97 +SWIDTH1 0x0f99 - 0x0fbc 0x0fbe - 0x0fcc 0x0fcf + + +/* + * U+1000 - U+109F : Myanmar + */ + +GRAPH 0x1000 - 0x1021 0x1023 - 0x1027 0x1029 0x102a 0x102c - 0x1032 +GRAPH 0x1036 - 0x1039 0x1040 - 0x1059 +PUNCT 0x104a - 0x104f +PRINT 0x1000 - 0x1021 0x1023 - 0x1027 0x1029 0x102a 0x102c - 0x1032 +PRINT 0x1036 - 0x1039 0x1040 - 0x1059 +SWIDTH1 0x1000 - 0x1021 0x1023 - 0x1027 0x1029 0x102a 0x102c - 0x1032 +SWIDTH1 0x1036 - 0x1039 0x1040 - 0x1059 + + +/* + * U+10A0 - U+10FF : Georgian + */ + +ALPHA 0x10a0 - 0x10c5 +GRAPH 0x10a0 - 0x10c5 0x10d0 - 0x10f8 0x10fb +PUNCT 0x10fb +UPPER 0x10a0 - 0x10c5 +PRINT 0x10a0 - 0x10c5 0x10d0 - 0x10f8 0x10fb +SWIDTH1 0x10a0 - 0x10c5 0x10d0 - 0x10f8 0x10fb + + +/* + * U+1100 - U+11FF : Hangul Jamo + */ + +GRAPH 0x1100 - 0x1159 0x115f - 0x11a2 0x11a8 - 0x11f9 +PRINT 0x1100 - 0x1159 0x115f - 0x11a2 0x11a8 - 0x11f9 +SWIDTH1 0x1160 - 0x11a2 0x11a8 - 0x11f9 +SWIDTH2 0x1100 - 0x1159 0x115f + + +/* + * U+1200 - U+137F : Ethiopic + */ + +GRAPH 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d +GRAPH 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286 +GRAPH 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5 +GRAPH 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce +GRAPH 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310 +GRAPH 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a +GRAPH 0x1361 - 0x137c +PUNCT 0x1361 - 0x1368 +PRINT 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d +PRINT 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286 +PRINT 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5 +PRINT 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce +PRINT 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310 +PRINT 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a +PRINT 0x1361 - 0x137c +SPECIAL 0x1372 - 0x137c +PHONOGRAM 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d +PHONOGRAM 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286 +PHONOGRAM 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5 +PHONOGRAM 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce +PHONOGRAM 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310 +PHONOGRAM 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a +SWIDTH1 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d +SWIDTH1 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286 +SWIDTH1 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5 +SWIDTH1 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce +SWIDTH1 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310 +SWIDTH1 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a +SWIDTH1 0x1361 - 0x137c + + +/* + * U+13A0 - U+13FF : Cherokee + */ + +GRAPH 0x13a0 - 0x13f4 +PRINT 0x13a0 - 0x13f4 +SWIDTH1 0x13a0 - 0x13f4 + + +/* + * U+1400 - U+167F : Unified Canadian Aboriginal Syllabics + */ + +GRAPH 0x1401 - 0x1676 +PUNCT 0x166d 0x166e +PRINT 0x1401 - 0x1676 +PHONOGRAM 0x1401 - 0x166c 0x166f - 0x1676 +SWIDTH1 0x1401 - 0x1676 + + +/* + * U+1680 - U+169F : Ogham + */ + +GRAPH 0x1681 - 0x169c +PUNCT 0x169b 0x169c +SPACE 0x1680 +BLANK 0x1680 +PRINT 0x1680 - 0x169c +SWIDTH1 0x1680 - 0x169c + + +/* + * U+16A0 - U+16FF : Runic + */ + +GRAPH 0x16a0 - 0x16f0 +PUNCT 0x16eb - 0x16ed +PRINT 0x16a0 - 0x16f0 +SPECIAL 0x16ee - 0x16f0 +SWIDTH1 0x16a0 - 0x16f0 + + +/* + * U+1700 - U+171F : Tagalog + */ + +GRAPH 0x1700 - 0x170c 0x170e - 0x1714 +PRINT 0x1700 - 0x170c 0x170e - 0x1714 +SWIDTH1 0x1700 - 0x170c 0x170e - 0x1714 + + +/* + * U+1720 - U+173F : Hanunoo + */ + +GRAPH 0x1720 - 0x1736 +PUNCT 0x1735 0x1736 +PRINT 0x1720 - 0x1736 +SWIDTH1 0x1720 - 0x1736 + + +/* + * U+1740 - U+175F : Buhid + */ + +GRAPH 0x1740 - 0x1753 +PRINT 0x1740 - 0x1753 +SWIDTH1 0x1740 - 0x1753 + + +/* + * U+1760 - U+177F : Tagbanwa + */ + +GRAPH 0x1760 - 0x176c 0x176e - 0x1770 0x1772 0x1773 +PRINT 0x1760 - 0x176c 0x176e - 0x1770 0x1772 0x1773 +SWIDTH1 0x1760 - 0x176c 0x176e - 0x1770 0x1772 0x1773 + + +/* + * U+1780 - U+17FF : Khmer + */ + +GRAPH 0x1780 - 0x17dc 0x17e0 - 0x17e9 +PUNCT 0x17d4 - 0x17d6 0x17d8 - 0x17db +PRINT 0x1780 - 0x17dc 0x17e0 - 0x17e9 +SWIDTH1 0x1780 - 0x17dc 0x17e0 - 0x17e9 + + +/* + * U+1800 - U+18AF : Mongolian + */ + +CONTROL 0x180e +GRAPH 0x1800 - 0x180d 0x1810 - 0x1819 0x1820 - 0x1877 0x1880 - 0x18a9 +PUNCT 0x1800 - 0x180a +PRINT 0x1800 - 0x180d 0x1810 - 0x1819 0x1820 - 0x1877 0x1880 - 0x18a9 +SWIDTH1 0x1800 - 0x180d 0x1810 - 0x1819 0x1820 - 0x1877 0x1880 - 0x18a9 + + +/* + * U+1DC0 - U+1DFF : Combining Diacritical Marks Supplement + */ + +GRAPH 0x1DC0 - 0x1DC3 +PRINT 0x1DC0 - 0x1DC3 +SWIDTH0 0x1DC0 - 0x1DC3 + + +/* + * U+1E00 - U+1EFF : Latin Extended Additional + */ + +ALPHA 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9 +GRAPH 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9 +LOWER 0x1e01 0x1e03 0x1e05 0x1e07 0x1e09 0x1e0b 0x1e0d +LOWER 0x1e0f 0x1e11 0x1e13 0x1e15 0x1e17 0x1e19 0x1e1b +LOWER 0x1e1d 0x1e1f 0x1e21 0x1e23 0x1e25 0x1e27 0x1e29 +LOWER 0x1e2b 0x1e2d 0x1e2f 0x1e31 0x1e33 0x1e35 0x1e37 +LOWER 0x1e39 0x1e3b 0x1e3d 0x1e3f 0x1e41 0x1e43 0x1e45 +LOWER 0x1e47 0x1e49 0x1e4b 0x1e4d 0x1e4f 0x1e51 0x1e53 +LOWER 0x1e55 0x1e57 0x1e59 0x1e5b 0x1e5d 0x1e5f 0x1e61 +LOWER 0x1e63 0x1e65 0x1e67 0x1e69 0x1e6b 0x1e6d 0x1e6f +LOWER 0x1e71 0x1e73 0x1e75 0x1e77 0x1e79 0x1e7b 0x1e7d +LOWER 0x1e7f 0x1e81 0x1e83 0x1e85 0x1e87 0x1e89 0x1e8b +LOWER 0x1e8d 0x1e8f 0x1e91 0x1e93 0x1e95 - 0x1e9b 0x1ea1 +LOWER 0x1ea3 0x1ea5 0x1ea7 0x1ea9 0x1eab 0x1ead 0x1eaf +LOWER 0x1eb1 0x1eb3 0x1eb5 0x1eb7 0x1eb9 0x1ebb 0x1ebd +LOWER 0x1ebf 0x1ec1 0x1ec3 0x1ec5 0x1ec7 0x1ec9 0x1ecb +LOWER 0x1ecd 0x1ecf 0x1ed1 0x1ed3 0x1ed5 0x1ed7 0x1ed9 +LOWER 0x1edb 0x1edd 0x1edf 0x1ee1 0x1ee3 0x1ee5 0x1ee7 +LOWER 0x1ee9 0x1eeb 0x1eed 0x1eef 0x1ef1 0x1ef3 0x1ef5 +LOWER 0x1ef7 0x1ef9 +UPPER 0x1e00 0x1e02 0x1e04 0x1e06 0x1e08 0x1e0a 0x1e0c +UPPER 0x1e0e 0x1e10 0x1e12 0x1e14 0x1e16 0x1e18 0x1e1a +UPPER 0x1e1c 0x1e1e 0x1e20 0x1e22 0x1e24 0x1e26 0x1e28 +UPPER 0x1e2a 0x1e2c 0x1e2e 0x1e30 0x1e32 0x1e34 0x1e36 +UPPER 0x1e38 0x1e3a 0x1e3c 0x1e3e 0x1e40 0x1e42 0x1e44 +UPPER 0x1e46 0x1e48 0x1e4a 0x1e4c 0x1e4e 0x1e50 0x1e52 +UPPER 0x1e54 0x1e56 0x1e58 0x1e5a 0x1e5c 0x1e5e 0x1e60 +UPPER 0x1e62 0x1e64 0x1e66 0x1e68 0x1e6a 0x1e6c 0x1e6e +UPPER 0x1e70 0x1e72 0x1e74 0x1e76 0x1e78 0x1e7a 0x1e7c +UPPER 0x1e7e 0x1e80 0x1e82 0x1e84 0x1e86 0x1e88 0x1e8a +UPPER 0x1e8c 0x1e8e 0x1e90 0x1e92 0x1e94 0x1ea0 0x1ea2 +UPPER 0x1ea4 0x1ea6 0x1ea8 0x1eaa 0x1eac 0x1eae 0x1eb0 +UPPER 0x1eb2 0x1eb4 0x1eb6 0x1eb8 0x1eba 0x1ebc 0x1ebe +UPPER 0x1ec0 0x1ec2 0x1ec4 0x1ec6 0x1ec8 0x1eca 0x1ecc +UPPER 0x1ece 0x1ed0 0x1ed2 0x1ed4 0x1ed6 0x1ed8 0x1eda +UPPER 0x1edc 0x1ede 0x1ee0 0x1ee2 0x1ee4 0x1ee6 0x1ee8 +UPPER 0x1eea 0x1eec 0x1eee 0x1ef0 0x1ef2 0x1ef4 0x1ef6 +UPPER 0x1ef8 +PRINT 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9 +SWIDTH1 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9 + +MAPUPPER < 0x1e01 0x1e00 > +MAPUPPER < 0x1e03 0x1e02 > +MAPUPPER < 0x1e05 0x1e04 > +MAPUPPER < 0x1e07 0x1e06 > +MAPUPPER < 0x1e09 0x1e08 > +MAPUPPER < 0x1e0b 0x1e0a > +MAPUPPER < 0x1e0d 0x1e0c > +MAPUPPER < 0x1e0f 0x1e0e > +MAPUPPER < 0x1e11 0x1e10 > +MAPUPPER < 0x1e13 0x1e12 > +MAPUPPER < 0x1e15 0x1e14 > +MAPUPPER < 0x1e17 0x1e16 > +MAPUPPER < 0x1e19 0x1e18 > +MAPUPPER < 0x1e1b 0x1e1a > +MAPUPPER < 0x1e1d 0x1e1c > +MAPUPPER < 0x1e1f 0x1e1e > +MAPUPPER < 0x1e21 0x1e20 > +MAPUPPER < 0x1e23 0x1e22 > +MAPUPPER < 0x1e25 0x1e24 > +MAPUPPER < 0x1e27 0x1e26 > +MAPUPPER < 0x1e29 0x1e28 > +MAPUPPER < 0x1e2b 0x1e2a > +MAPUPPER < 0x1e2d 0x1e2c > +MAPUPPER < 0x1e2f 0x1e2e > +MAPUPPER < 0x1e31 0x1e30 > +MAPUPPER < 0x1e33 0x1e32 > +MAPUPPER < 0x1e35 0x1e34 > +MAPUPPER < 0x1e37 0x1e36 > +MAPUPPER < 0x1e39 0x1e38 > +MAPUPPER < 0x1e3b 0x1e3a > +MAPUPPER < 0x1e3d 0x1e3c > +MAPUPPER < 0x1e3f 0x1e3e > +MAPUPPER < 0x1e41 0x1e40 > +MAPUPPER < 0x1e43 0x1e42 > +MAPUPPER < 0x1e45 0x1e44 > +MAPUPPER < 0x1e47 0x1e46 > +MAPUPPER < 0x1e49 0x1e48 > +MAPUPPER < 0x1e4b 0x1e4a > +MAPUPPER < 0x1e4d 0x1e4c > +MAPUPPER < 0x1e4f 0x1e4e > +MAPUPPER < 0x1e51 0x1e50 > +MAPUPPER < 0x1e53 0x1e52 > +MAPUPPER < 0x1e55 0x1e54 > +MAPUPPER < 0x1e57 0x1e56 > +MAPUPPER < 0x1e59 0x1e58 > +MAPUPPER < 0x1e5b 0x1e5a > +MAPUPPER < 0x1e5d 0x1e5c > +MAPUPPER < 0x1e5f 0x1e5e > +MAPUPPER < 0x1e61 0x1e60 > +MAPUPPER < 0x1e63 0x1e62 > +MAPUPPER < 0x1e65 0x1e64 > +MAPUPPER < 0x1e67 0x1e66 > +MAPUPPER < 0x1e69 0x1e68 > +MAPUPPER < 0x1e6b 0x1e6a > +MAPUPPER < 0x1e6d 0x1e6c > +MAPUPPER < 0x1e6f 0x1e6e > +MAPUPPER < 0x1e71 0x1e70 > +MAPUPPER < 0x1e73 0x1e72 > +MAPUPPER < 0x1e75 0x1e74 > +MAPUPPER < 0x1e77 0x1e76 > +MAPUPPER < 0x1e79 0x1e78 > +MAPUPPER < 0x1e7b 0x1e7a > +MAPUPPER < 0x1e7d 0x1e7c > +MAPUPPER < 0x1e7f 0x1e7e > +MAPUPPER < 0x1e81 0x1e80 > +MAPUPPER < 0x1e83 0x1e82 > +MAPUPPER < 0x1e85 0x1e84 > +MAPUPPER < 0x1e87 0x1e86 > +MAPUPPER < 0x1e89 0x1e88 > +MAPUPPER < 0x1e8b 0x1e8a > +MAPUPPER < 0x1e8d 0x1e8c > +MAPUPPER < 0x1e8f 0x1e8e > +MAPUPPER < 0x1e91 0x1e90 > +MAPUPPER < 0x1e93 0x1e92 > +MAPUPPER < 0x1e95 0x1e94 > +MAPUPPER < 0x1e9b 0x1e60 > +MAPUPPER < 0x1ea1 0x1ea0 > +MAPUPPER < 0x1ea3 0x1ea2 > +MAPUPPER < 0x1ea5 0x1ea4 > +MAPUPPER < 0x1ea7 0x1ea6 > +MAPUPPER < 0x1ea9 0x1ea8 > +MAPUPPER < 0x1eab 0x1eaa > +MAPUPPER < 0x1ead 0x1eac > +MAPUPPER < 0x1eaf 0x1eae > +MAPUPPER < 0x1eb1 0x1eb0 > +MAPUPPER < 0x1eb3 0x1eb2 > +MAPUPPER < 0x1eb5 0x1eb4 > +MAPUPPER < 0x1eb7 0x1eb6 > +MAPUPPER < 0x1eb9 0x1eb8 > +MAPUPPER < 0x1ebb 0x1eba > +MAPUPPER < 0x1ebd 0x1ebc > +MAPUPPER < 0x1ebf 0x1ebe > +MAPUPPER < 0x1ec1 0x1ec0 > +MAPUPPER < 0x1ec3 0x1ec2 > +MAPUPPER < 0x1ec5 0x1ec4 > +MAPUPPER < 0x1ec7 0x1ec6 > +MAPUPPER < 0x1ec9 0x1ec8 > +MAPUPPER < 0x1ecb 0x1eca > +MAPUPPER < 0x1ecd 0x1ecc > +MAPUPPER < 0x1ecf 0x1ece > +MAPUPPER < 0x1ed1 0x1ed0 > +MAPUPPER < 0x1ed3 0x1ed2 > +MAPUPPER < 0x1ed5 0x1ed4 > +MAPUPPER < 0x1ed7 0x1ed6 > +MAPUPPER < 0x1ed9 0x1ed8 > +MAPUPPER < 0x1edb 0x1eda > +MAPUPPER < 0x1edd 0x1edc > +MAPUPPER < 0x1edf 0x1ede > +MAPUPPER < 0x1ee1 0x1ee0 > +MAPUPPER < 0x1ee3 0x1ee2 > +MAPUPPER < 0x1ee5 0x1ee4 > +MAPUPPER < 0x1ee7 0x1ee6 > +MAPUPPER < 0x1ee9 0x1ee8 > +MAPUPPER < 0x1eeb 0x1eea > +MAPUPPER < 0x1eed 0x1eec > +MAPUPPER < 0x1eef 0x1eee > +MAPUPPER < 0x1ef1 0x1ef0 > +MAPUPPER < 0x1ef3 0x1ef2 > +MAPUPPER < 0x1ef5 0x1ef4 > +MAPUPPER < 0x1ef7 0x1ef6 > +MAPUPPER < 0x1ef9 0x1ef8 > +MAPLOWER < 0x1e00 0x1e01 > +MAPLOWER < 0x1e02 0x1e03 > +MAPLOWER < 0x1e04 0x1e05 > +MAPLOWER < 0x1e06 0x1e07 > +MAPLOWER < 0x1e08 0x1e09 > +MAPLOWER < 0x1e0a 0x1e0b > +MAPLOWER < 0x1e0c 0x1e0d > +MAPLOWER < 0x1e0e 0x1e0f > +MAPLOWER < 0x1e10 0x1e11 > +MAPLOWER < 0x1e12 0x1e13 > +MAPLOWER < 0x1e14 0x1e15 > +MAPLOWER < 0x1e16 0x1e17 > +MAPLOWER < 0x1e18 0x1e19 > +MAPLOWER < 0x1e1a 0x1e1b > +MAPLOWER < 0x1e1c 0x1e1d > +MAPLOWER < 0x1e1e 0x1e1f > +MAPLOWER < 0x1e20 0x1e21 > +MAPLOWER < 0x1e22 0x1e23 > +MAPLOWER < 0x1e24 0x1e25 > +MAPLOWER < 0x1e26 0x1e27 > +MAPLOWER < 0x1e28 0x1e29 > +MAPLOWER < 0x1e2a 0x1e2b > +MAPLOWER < 0x1e2c 0x1e2d > +MAPLOWER < 0x1e2e 0x1e2f > +MAPLOWER < 0x1e30 0x1e31 > +MAPLOWER < 0x1e32 0x1e33 > +MAPLOWER < 0x1e34 0x1e35 > +MAPLOWER < 0x1e36 0x1e37 > +MAPLOWER < 0x1e38 0x1e39 > +MAPLOWER < 0x1e3a 0x1e3b > +MAPLOWER < 0x1e3c 0x1e3d > +MAPLOWER < 0x1e3e 0x1e3f > +MAPLOWER < 0x1e40 0x1e41 > +MAPLOWER < 0x1e42 0x1e43 > +MAPLOWER < 0x1e44 0x1e45 > +MAPLOWER < 0x1e46 0x1e47 > +MAPLOWER < 0x1e48 0x1e49 > +MAPLOWER < 0x1e4a 0x1e4b > +MAPLOWER < 0x1e4c 0x1e4d > +MAPLOWER < 0x1e4e 0x1e4f > +MAPLOWER < 0x1e50 0x1e51 > +MAPLOWER < 0x1e52 0x1e53 > +MAPLOWER < 0x1e54 0x1e55 > +MAPLOWER < 0x1e56 0x1e57 > +MAPLOWER < 0x1e58 0x1e59 > +MAPLOWER < 0x1e5a 0x1e5b > +MAPLOWER < 0x1e5c 0x1e5d > +MAPLOWER < 0x1e5e 0x1e5f > +MAPLOWER < 0x1e60 0x1e61 > +MAPLOWER < 0x1e62 0x1e63 > +MAPLOWER < 0x1e64 0x1e65 > +MAPLOWER < 0x1e66 0x1e67 > +MAPLOWER < 0x1e68 0x1e69 > +MAPLOWER < 0x1e6a 0x1e6b > +MAPLOWER < 0x1e6c 0x1e6d > +MAPLOWER < 0x1e6e 0x1e6f > +MAPLOWER < 0x1e70 0x1e71 > +MAPLOWER < 0x1e72 0x1e73 > +MAPLOWER < 0x1e74 0x1e75 > +MAPLOWER < 0x1e76 0x1e77 > +MAPLOWER < 0x1e78 0x1e79 > +MAPLOWER < 0x1e7a 0x1e7b > +MAPLOWER < 0x1e7c 0x1e7d > +MAPLOWER < 0x1e7e 0x1e7f > +MAPLOWER < 0x1e80 0x1e81 > +MAPLOWER < 0x1e82 0x1e83 > +MAPLOWER < 0x1e84 0x1e85 > +MAPLOWER < 0x1e86 0x1e87 > +MAPLOWER < 0x1e88 0x1e89 > +MAPLOWER < 0x1e8a 0x1e8b > +MAPLOWER < 0x1e8c 0x1e8d > +MAPLOWER < 0x1e8e 0x1e8f > +MAPLOWER < 0x1e90 0x1e91 > +MAPLOWER < 0x1e92 0x1e93 > +MAPLOWER < 0x1e94 0x1e95 > +MAPLOWER < 0x1ea0 0x1ea1 > +MAPLOWER < 0x1ea2 0x1ea3 > +MAPLOWER < 0x1ea4 0x1ea5 > +MAPLOWER < 0x1ea6 0x1ea7 > +MAPLOWER < 0x1ea8 0x1ea9 > +MAPLOWER < 0x1eaa 0x1eab > +MAPLOWER < 0x1eac 0x1ead > +MAPLOWER < 0x1eae 0x1eaf > +MAPLOWER < 0x1eb0 0x1eb1 > +MAPLOWER < 0x1eb2 0x1eb3 > +MAPLOWER < 0x1eb4 0x1eb5 > +MAPLOWER < 0x1eb6 0x1eb7 > +MAPLOWER < 0x1eb8 0x1eb9 > +MAPLOWER < 0x1eba 0x1ebb > +MAPLOWER < 0x1ebc 0x1ebd > +MAPLOWER < 0x1ebe 0x1ebf > +MAPLOWER < 0x1ec0 0x1ec1 > +MAPLOWER < 0x1ec2 0x1ec3 > +MAPLOWER < 0x1ec4 0x1ec5 > +MAPLOWER < 0x1ec6 0x1ec7 > +MAPLOWER < 0x1ec8 0x1ec9 > +MAPLOWER < 0x1eca 0x1ecb > +MAPLOWER < 0x1ecc 0x1ecd > +MAPLOWER < 0x1ece 0x1ecf > +MAPLOWER < 0x1ed0 0x1ed1 > +MAPLOWER < 0x1ed2 0x1ed3 > +MAPLOWER < 0x1ed4 0x1ed5 > +MAPLOWER < 0x1ed6 0x1ed7 > +MAPLOWER < 0x1ed8 0x1ed9 > +MAPLOWER < 0x1eda 0x1edb > +MAPLOWER < 0x1edc 0x1edd > +MAPLOWER < 0x1ede 0x1edf > +MAPLOWER < 0x1ee0 0x1ee1 > +MAPLOWER < 0x1ee2 0x1ee3 > +MAPLOWER < 0x1ee4 0x1ee5 > +MAPLOWER < 0x1ee6 0x1ee7 > +MAPLOWER < 0x1ee8 0x1ee9 > +MAPLOWER < 0x1eea 0x1eeb > +MAPLOWER < 0x1eec 0x1eed > +MAPLOWER < 0x1eee 0x1eef > +MAPLOWER < 0x1ef0 0x1ef1 > +MAPLOWER < 0x1ef2 0x1ef3 > +MAPLOWER < 0x1ef4 0x1ef5 > +MAPLOWER < 0x1ef6 0x1ef7 > +MAPLOWER < 0x1ef8 0x1ef9 > + + +/* + * U+1F00 - U+1FFF : Greek Extended + */ + +ALPHA 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d +ALPHA 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d +ALPHA 0x1f80 - 0x1fb4 0x1fb6 - 0x1fbc 0x1fbe 0x1fc2 - 0x1fc4 +ALPHA 0x1fc6 - 0x1fcc 0x1fd0 - 0x1fd3 0x1fd6 - 0x1fdb 0x1fe0 - 0x1fec +ALPHA 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffc +GRAPH 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d +GRAPH 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d +GRAPH 0x1f80 - 0x1fb4 0x1fb6 - 0x1fc4 0x1fc6 - 0x1fd3 0x1fd6 - 0x1fdb +GRAPH 0x1fdd - 0x1fef 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffe +LOWER 0x1f00 - 0x1f07 0x1f10 - 0x1f15 0x1f20 - 0x1f27 0x1f30 - 0x1f37 +LOWER 0x1f40 - 0x1f45 0x1f50 - 0x1f57 0x1f60 - 0x1f67 0x1f70 - 0x1f7d +LOWER 0x1f80 - 0x1f87 0x1f90 - 0x1f97 0x1fa0 - 0x1fa7 0x1fb0 - 0x1fb4 +LOWER 0x1fb6 0x1fb7 0x1fbe 0x1fc2 - 0x1fc4 0x1fc6 0x1fc7 +LOWER 0x1fd0 - 0x1fd3 0x1fd6 0x1fd7 0x1fe0 - 0x1fe7 0x1ff2 - 0x1ff4 +LOWER 0x1ff6 0x1ff7 +PUNCT 0x1fbd 0x1fbf - 0x1fc1 0x1fcd - 0x1fcf 0x1fdd - 0x1fdf +PUNCT 0x1fed - 0x1fef 0x1ffd 0x1ffe +UPPER 0x1f08 - 0x1f0f 0x1f18 - 0x1f1d 0x1f28 - 0x1f2f 0x1f38 - 0x1f3f +UPPER 0x1f48 - 0x1f4d 0x1f59 0x1f5b 0x1f5d 0x1f5f 0x1f68 - 0x1f6f +UPPER 0x1fb8 - 0x1fbb 0x1fc8 - 0x1fcb 0x1fd8 - 0x1fdb 0x1fe8 - 0x1fec +UPPER 0x1ff8 - 0x1ffb +PRINT 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d +PRINT 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d +PRINT 0x1f80 - 0x1fb4 0x1fb6 - 0x1fc4 0x1fc6 - 0x1fd3 0x1fd6 - 0x1fdb +PRINT 0x1fdd - 0x1fef 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffe +SWIDTH1 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d +SWIDTH1 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d +SWIDTH1 0x1f80 - 0x1fb4 0x1fb6 - 0x1fc4 0x1fc6 - 0x1fd3 0x1fd6 - 0x1fdb +SWIDTH1 0x1fdd - 0x1fef 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffe + +MAPUPPER < 0x1f00 - 0x1f07 : 0x1f08 > +MAPUPPER < 0x1f10 - 0x1f15 : 0x1f18 > +MAPUPPER < 0x1f20 - 0x1f27 : 0x1f28 > +MAPUPPER < 0x1f30 - 0x1f37 : 0x1f38 > +MAPUPPER < 0x1f40 - 0x1f45 : 0x1f48 > +MAPUPPER < 0x1f51 0x1f59 > +MAPUPPER < 0x1f53 0x1f5b > +MAPUPPER < 0x1f55 0x1f5d > +MAPUPPER < 0x1f57 0x1f5f > +MAPUPPER < 0x1f60 - 0x1f67 : 0x1f68 > +MAPUPPER < 0x1f70 - 0x1f71 : 0x1fba > +MAPUPPER < 0x1f72 - 0x1f75 : 0x1fc8 > +MAPUPPER < 0x1f76 - 0x1f77 : 0x1fda > +MAPUPPER < 0x1f78 - 0x1f79 : 0x1ff8 > +MAPUPPER < 0x1f7a - 0x1f7b : 0x1fea > +MAPUPPER < 0x1f7c - 0x1f7d : 0x1ffa > +MAPUPPER < 0x1f80 - 0x1f87 : 0x1f88 > +MAPUPPER < 0x1f90 - 0x1f97 : 0x1f98 > +MAPUPPER < 0x1fa0 - 0x1fa7 : 0x1fa8 > +MAPUPPER < 0x1fb0 - 0x1fb1 : 0x1fb8 > +MAPUPPER < 0x1fb3 0x1fbc > +MAPUPPER < 0x1fbe 0x0399 > +MAPUPPER < 0x1fc3 0x1fcc > +MAPUPPER < 0x1fd0 - 0x1fd1 : 0x1fd8 > +MAPUPPER < 0x1fe0 - 0x1fe1 : 0x1fe8 > +MAPUPPER < 0x1fe5 0x1fec > +MAPUPPER < 0x1ff3 0x1ffc > +MAPLOWER < 0x1f08 - 0x1f0f : 0x1f00 > +MAPLOWER < 0x1f18 - 0x1f1d : 0x1f10 > +MAPLOWER < 0x1f28 - 0x1f2f : 0x1f20 > +MAPLOWER < 0x1f38 - 0x1f3f : 0x1f30 > +MAPLOWER < 0x1f48 - 0x1f4d : 0x1f40 > +MAPLOWER < 0x1f59 0x1f51 > +MAPLOWER < 0x1f5b 0x1f53 > +MAPLOWER < 0x1f5d 0x1f55 > +MAPLOWER < 0x1f5f 0x1f57 > +MAPLOWER < 0x1f68 - 0x1f6f : 0x1f60 > +MAPLOWER < 0x1f88 - 0x1f8f : 0x1f80 > +MAPLOWER < 0x1f98 - 0x1f9f : 0x1f90 > +MAPLOWER < 0x1fa8 - 0x1faf : 0x1fa0 > +MAPLOWER < 0x1fb8 - 0x1fb9 : 0x1fb0 > +MAPLOWER < 0x1fba - 0x1fbb : 0x1f70 > +MAPLOWER < 0x1fbc 0x1fb3 > +MAPLOWER < 0x1fc8 - 0x1fcb : 0x1f72 > +MAPLOWER < 0x1fcc 0x1fc3 > +MAPLOWER < 0x1fd8 - 0x1fd9 : 0x1fd0 > +MAPLOWER < 0x1fda - 0x1fdb : 0x1f76 > +MAPLOWER < 0x1fe8 - 0x1fe9 : 0x1fe0 > +MAPLOWER < 0x1fea - 0x1feb : 0x1f7a > +MAPLOWER < 0x1fec 0x1fe5 > +MAPLOWER < 0x1ff8 - 0x1ff9 : 0x1f78 > +MAPLOWER < 0x1ffa - 0x1ffb : 0x1f7c > +MAPLOWER < 0x1ffc 0x1ff3 > + + +/* + * U+2000 - U+206F : General Punctuation + */ + +CONTROL 0x200c - 0x200f 0x202a - 0x202e 0x2060 - 0x2063 0x206a - 0x206f +GRAPH 0x2010 - 0x2027 0x2030 - 0x2052 0x2057 +PUNCT 0x2010 - 0x2027 0x2030 - 0x2052 0x2057 +SPACE 0x2000 - 0x200b 0x2028 0x2029 0x202f 0x205f +BLANK 0x2000 - 0x200b 0x202f 0x205f +PRINT 0x2000 - 0x200b 0x2010 - 0x2029 0x202f - 0x2052 0x2057 +PRINT 0x205f +SWIDTH1 0x2000 - 0x200b 0x2010 - 0x2029 0x202f - 0x2052 0x2057 +SWIDTH1 0x205f + + +/* + * U+2070 - U+209F : Superscripts and Subscripts + */ + +ALPHA 0x2071 0x207f +GRAPH 0x2070 0x2071 0x2074 - 0x208e +LOWER 0x2071 0x207f +PUNCT 0x207a - 0x207e 0x208a - 0x208e +PRINT 0x2070 0x2071 0x2074 - 0x208e +SPECIAL 0x2070 0x2074 - 0x2079 0x2080 - 0x2089 +SWIDTH1 0x2070 0x2071 0x2074 - 0x208e + + +/* + * U+20A0 - U+20CF : Currency Symbols + */ + +GRAPH 0x20a0 - 0x20b1 +PUNCT 0x20a0 - 0x20b1 +PRINT 0x20a0 - 0x20b1 +SWIDTH1 0x20a0 - 0x20b1 + + +/* + * U+20D0 - U+20FF : Combining Diacritical Marks for Symbols + */ + +GRAPH 0x20d0 - 0x20eb +PRINT 0x20d0 - 0x20eb +SWIDTH0 0x20d0 - 0x20eb + + +/* + * U+2100 - U+214F : Letterlike Symbols + */ + +ALPHA 0x2102 0x2107 0x210a - 0x2113 0x2115 0x2119 - 0x211d +ALPHA 0x2124 0x2126 0x2128 0x212a - 0x212d 0x212f - 0x2131 +ALPHA 0x2133 0x2134 0x2139 0x213d - 0x213f 0x2145 - 0x2149 +GRAPH 0x2100 - 0x213a 0x213d - 0x214b +LOWER 0x210a 0x210e 0x210f 0x2113 0x212f 0x2134 0x2139 +LOWER 0x213d 0x2146 - 0x2149 +PUNCT 0x2100 0x2101 0x2103 - 0x2106 0x2108 0x2109 0x2114 +PUNCT 0x2116 - 0x2118 0x211e - 0x2123 0x2125 0x2127 0x2129 +PUNCT 0x212e 0x2132 0x213a 0x2140 - 0x2144 0x214a 0x214b +UPPER 0x2102 0x2107 0x210b - 0x210d 0x2110 - 0x2112 0x2115 +UPPER 0x2119 - 0x211d 0x2124 0x2126 0x2128 0x212a - 0x212d +UPPER 0x2130 0x2131 0x2133 0x213e 0x213f 0x2145 +PRINT 0x2100 - 0x213a 0x213d - 0x214b +SWIDTH1 0x2100 - 0x213a 0x213d - 0x214b + +MAPLOWER < 0x2126 0x03c9 > +MAPLOWER < 0x212a 'k' > +MAPLOWER < 0x212b 0x00e5 > + + +/* + * U+2150 - U+218F : Number Forms + */ + +GRAPH 0x2153 - 0x2183 +PRINT 0x2153 - 0x2183 +SPECIAL 0x2153 - 0x2183 +SWIDTH1 0x2153 - 0x2183 + +MAPUPPER < 0x2170 - 0x217f : 0x2160 > +MAPLOWER < 0x2160 - 0x216f : 0x2170 > + + +/* + * U+2190 - U+21FF : Arrows + */ + +GRAPH 0x2190 - 0x21ff +PUNCT 0x2190 - 0x21ff +PRINT 0x2190 - 0x21ff +SWIDTH1 0x2190 - 0x21ff + + +/* + * U+2200 - U+22FF : Mathematical Operators + */ + +GRAPH 0x2200 - 0x22ff +PUNCT 0x2200 - 0x22ff +PRINT 0x2200 - 0x22ff +SWIDTH1 0x2200 - 0x22ff + + +/* + * U+2300 - U+23FF : Miscellaneous Technical + */ + +GRAPH 0x2300 - 0x23ce +PUNCT 0x2300 - 0x23ce +PRINT 0x2300 - 0x23ce +SWIDTH1 0x2300 - 0x2328 0x232b - 0x23ce +SWIDTH2 0x2329 0x232a + + +/* + * U+2400 - U+243F : Control Pictures + */ + +GRAPH 0x2400 - 0x2426 +PUNCT 0x2400 - 0x2426 +PRINT 0x2400 - 0x2426 +SWIDTH1 0x2400 - 0x2426 + + +/* + * U+2440 - U+245F : Optical Character Recognition + */ + +GRAPH 0x2440 - 0x244a +PUNCT 0x2440 - 0x244a +PRINT 0x2440 - 0x244a +SWIDTH1 0x2440 - 0x244a + + +/* + * U+2460 - U+24FF : Enclosed Alphanumerics + */ + +GRAPH 0x2460 - 0x24fe +PUNCT 0x249c - 0x24e9 +PRINT 0x2460 - 0x24fe +SPECIAL 0x2460 - 0x249b 0x24ea - 0x24fe +SWIDTH1 0x2460 - 0x24fe + +MAPUPPER < 0x24d0 - 0x24e9 : 0x24b6 > +MAPLOWER < 0x24b6 - 0x24cf : 0x24d0 > + + +/* + * U+2500 - U+257F : Box Drawing + */ + +GRAPH 0x2500 - 0x257f +PUNCT 0x2500 - 0x257f +PRINT 0x2500 - 0x257f +SWIDTH1 0x2500 - 0x257f + + +/* + * U+2580 - U+259F : Block Elements + */ + +GRAPH 0x2580 - 0x259f +PUNCT 0x2580 - 0x259f +PRINT 0x2580 - 0x259f +SWIDTH1 0x2580 - 0x259f + + +/* + * U+25A0 - U+25FF : Geometric Shapes + */ + +GRAPH 0x25a0 - 0x25ff +PUNCT 0x25a0 - 0x25ff +PRINT 0x25a0 - 0x25ff +SWIDTH1 0x25a0 - 0x25ff + + +/* + * U+2600 - U+26FF : Miscellaneous Symbols + */ + +GRAPH 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689 +PUNCT 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689 +PRINT 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689 +SWIDTH1 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689 + + +/* + * U+2700 - U+27BF : Dingbats + */ + +GRAPH 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b +GRAPH 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2794 +GRAPH 0x2798 - 0x27af 0x27b1 - 0x27be +PUNCT 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b +PUNCT 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2775 +PUNCT 0x2794 0x2798 - 0x27af 0x27b1 - 0x27be +PRINT 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b +PRINT 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2794 +PRINT 0x2798 - 0x27af 0x27b1 - 0x27be +SPECIAL 0x2776 - 0x2793 +SWIDTH1 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b +SWIDTH1 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2794 +SWIDTH1 0x2798 - 0x27af 0x27b1 - 0x27be + + +/* + * U+27C0 - U+27EF : Miscellaneous Mathematical Symbols-A + */ + +GRAPH 0x27d0 - 0x27eb +PUNCT 0x27d0 - 0x27eb +PRINT 0x27d0 - 0x27eb +SWIDTH1 0x27d0 - 0x27eb + + +/* + * U+27F0 - U+27FF : Supplemental Arrows-A + */ + +GRAPH 0x27f0 - 0x27ff +PUNCT 0x27f0 - 0x27ff +PRINT 0x27f0 - 0x27ff +SWIDTH1 0x27f0 - 0x27ff + + +/* + * U+2800 - U+28FF : Braille Patterns + */ + +GRAPH 0x2800 - 0x28ff +PUNCT 0x2800 - 0x28ff +PRINT 0x2800 - 0x28ff +SWIDTH1 0x2800 - 0x28ff + + +/* + * U+2900 - U+297F : Supplemental Arrows-B + */ + +GRAPH 0x2900 - 0x297f +PUNCT 0x2900 - 0x297f +PRINT 0x2900 - 0x297f +SWIDTH1 0x2900 - 0x297f + + +/* + * U+2980 - U+29FF : Miscellaneous Mathematical Symbols-B + */ + +GRAPH 0x2980 - 0x29ff +PUNCT 0x2980 - 0x29ff +PRINT 0x2980 - 0x29ff +SWIDTH1 0x2980 - 0x29ff + + +/* + * U+2A00 - U+2AFF : Supplemental Mathematical Operators + */ + +GRAPH 0x2a00 - 0x2aff +PUNCT 0x2a00 - 0x2aff +PRINT 0x2a00 - 0x2aff +SWIDTH1 0x2a00 - 0x2aff + + +/* + * U+2E80 - U+2EFF : CJK Radicals Supplement + */ + +GRAPH 0x2e80 - 0x2e99 0x2e9b - 0x2ef3 +PUNCT 0x2e80 - 0x2e99 0x2e9b - 0x2ef3 +PRINT 0x2e80 - 0x2e99 0x2e9b - 0x2ef3 +SWIDTH2 0x2e80 - 0x2e99 0x2e9b - 0x2ef3 + + +/* + * U+2F00 - U+2FDF : Kangxi Radicals + */ + +GRAPH 0x2f00 - 0x2fd5 +PUNCT 0x2f00 - 0x2fd5 +PRINT 0x2f00 - 0x2fd5 +SWIDTH2 0x2f00 - 0x2fd5 + + +/* + * U+2FF0 - U+2FFF : Ideographic Description Characters + */ + +GRAPH 0x2ff0 - 0x2ffb +PUNCT 0x2ff0 - 0x2ffb +PRINT 0x2ff0 - 0x2ffb +SWIDTH2 0x2ff0 - 0x2ffb + + +/* + * U+3000 - U+303F : CJK Symbols and Punctuation + */ + +GRAPH 0x3001 - 0x303f +PUNCT 0x3001 - 0x3004 0x3008 - 0x3020 0x3030 0x3036 0x3037 +PUNCT 0x303d - 0x303f +SPACE 0x3000 +BLANK 0x3000 +PRINT 0x3000 - 0x303f +IDEOGRAM 0x3006 +SPECIAL 0x3007 0x3021 - 0x3029 0x3038 - 0x303a +SWIDTH1 0x303f +SWIDTH2 0x3000 - 0x303e + + +/* + * U+3040 - U+309F : Hiragana + */ + +GRAPH 0x3041 - 0x3096 0x3099 - 0x309f +PUNCT 0x309b 0x309c +PRINT 0x3041 - 0x3096 0x3099 - 0x309f +PHONOGRAM 0x3041 - 0x3096 0x309f +SWIDTH0 0x3099 - 0x309a +SWIDTH2 0x3041 - 0x3096 0x309b - 0x309f + + +/* + * U+30A0 - U+30FF : Katakana + */ + +GRAPH 0x30a0 - 0x30ff +PUNCT 0x30a0 0x30fb +PRINT 0x30a0 - 0x30ff +PHONOGRAM 0x30a1 - 0x30fa 0x30ff +SWIDTH2 0x30a0 - 0x30ff + + +/* + * U+3100 - U+312F : Bopomofo + */ + +GRAPH 0x3105 - 0x312c +PRINT 0x3105 - 0x312c +SWIDTH2 0x3105 - 0x312c + + +/* + * U+3130 - U+318F : Hangul Compatibility Jamo + */ + +GRAPH 0x3131 - 0x318e +PRINT 0x3131 - 0x318e +PHONOGRAM 0x3131 - 0x3163 0x3165 - 0x318e +SWIDTH2 0x3131 - 0x318e + + +/* + * U+3190 - U+319F : Kanbun + */ + +GRAPH 0x3190 - 0x319f +PUNCT 0x3190 0x3191 0x3196 - 0x319f +PRINT 0x3190 - 0x319f +SPECIAL 0x3192 - 0x3195 +SWIDTH2 0x3190 - 0x319f + + +/* + * U+31A0 - U+31BF : Bopomofo Extended + */ + +GRAPH 0x31a0 - 0x31b7 +PRINT 0x31a0 - 0x31b7 +SWIDTH2 0x31a0 - 0x31b7 + + +/* + * U+31F0 - U+31FF : Katakana Phonetic Extensions + */ + +GRAPH 0x31f0 - 0x31ff +PRINT 0x31f0 - 0x31ff +PHONOGRAM 0x31f0 - 0x31ff +SWIDTH2 0x31f0 - 0x31ff + + +/* + * U+3200 - U+32FF : Enclosed CJK Letters and Months + */ + +GRAPH 0x3200 - 0x321c 0x3220 - 0x3243 0x3251 - 0x327b 0x327f - 0x32cb +GRAPH 0x32d0 - 0x32fe +PUNCT 0x3200 - 0x321c 0x322a - 0x3243 0x3260 - 0x327b 0x327f +PUNCT 0x328a - 0x32b0 0x32c0 - 0x32cb 0x32d0 - 0x32fe +PRINT 0x3200 - 0x321c 0x3220 - 0x3243 0x3251 - 0x327b 0x327f - 0x32cb +PRINT 0x32d0 - 0x32fe +SPECIAL 0x3220 - 0x3229 0x3251 - 0x325f 0x3280 - 0x3289 0x32b1 - 0x32bf +SWIDTH2 0x3200 - 0x321c 0x3220 - 0x3243 0x3251 - 0x327b 0x327f - 0x32cb +SWIDTH2 0x32d0 - 0x32fe + + +/* + * U+3300 - U+33FF : CJK Compatibility + */ + +GRAPH 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe +PUNCT 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe +PRINT 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe +SWIDTH2 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe + + +/* + * U+3400 - U+4DBF : CJK Unified Ideographs Extension A + */ + +GRAPH 0x3400 - 0x4db5 +PRINT 0x3400 - 0x4db5 +IDEOGRAM 0x3400 - 0x4db5 +SWIDTH2 0x3400 - 0x4db5 + + +/* + * U+4E00 - U+9FFF : CJK Unified Ideographs + */ + +GRAPH 0x4e00 - 0x9fa5 +PRINT 0x4e00 - 0x9fa5 +IDEOGRAM 0x4e00 - 0x9fa5 +SWIDTH2 0x4e00 - 0x9fa5 + + +/* + * U+A000 - U+A48F : Yi Syllables + */ + +GRAPH 0xa000 - 0xa48c +PRINT 0xa000 - 0xa48c +PHONOGRAM 0xa000 - 0xa48c +SWIDTH2 0xa000 - 0xa48c + + +/* + * U+A490 - U+A4CF : Yi Radicals + */ + +GRAPH 0xa490 - 0xa4c6 +PUNCT 0xa490 - 0xa4c6 +PRINT 0xa490 - 0xa4c6 +SWIDTH2 0xa490 - 0xa4c6 + + +/* + * U+AC00 - U+D7AF : Hangul Syllables + */ + +GRAPH 0xac00 - 0xd7a3 +PRINT 0xac00 - 0xd7a3 +PHONOGRAM 0xac00 - 0xd7a3 +SWIDTH2 0xac00 - 0xd7a3 + + +/* + * U+D800 - U+DB7F : High Surrogates + */ + +PRINT 0xd800 - 0xdb7f +SWIDTH1 0xd800 - 0xdb7f + + +/* + * U+DB80 - U+DBFF : High Private Use Surrogates + */ + +PRINT 0xdb80 - 0xdbff +SWIDTH1 0xdb80 - 0xdbff + + +/* + * U+DC00 - U+DFFF : Low Surrogates + */ + +PRINT 0xdc00 - 0xdfff +SWIDTH1 0xdc00 - 0xdfff + + +/* + * U+E000 - U+F8FF : Private Use Area + */ + +GRAPH 0xe000 - 0xf8ff +PRINT 0xe000 - 0xf8ff +SWIDTH1 0xe000 - 0xf8ff + + +/* + * U+F900 - U+FAFF : CJK Compatibility Ideographs + */ + +GRAPH 0xf900 - 0xfa2d 0xfa30 - 0xfa6a +PRINT 0xf900 - 0xfa2d 0xfa30 - 0xfa6a +IDEOGRAM 0xf900 - 0xfa2d 0xfa30 - 0xfa6a +SWIDTH2 0xf900 - 0xfa2d 0xfa30 - 0xfa6a + + +/* + * U+FB00 - U+FB4F : Alphabetic Presentation Forms + */ + +ALPHA 0xfb00 - 0xfb06 0xfb13 - 0xfb17 +GRAPH 0xfb00 - 0xfb06 0xfb13 - 0xfb17 0xfb1d - 0xfb36 0xfb38 - 0xfb3c +GRAPH 0xfb3e 0xfb40 0xfb41 0xfb43 0xfb44 0xfb46 - 0xfb4f +LOWER 0xfb00 - 0xfb06 0xfb13 - 0xfb17 +PUNCT 0xfb29 +PRINT 0xfb00 - 0xfb06 0xfb13 - 0xfb17 0xfb1d - 0xfb36 0xfb38 - 0xfb3c +PRINT 0xfb3e 0xfb40 0xfb41 0xfb43 0xfb44 0xfb46 - 0xfb4f +SWIDTH1 0xfb00 - 0xfb06 0xfb13 - 0xfb17 0xfb1d - 0xfb36 0xfb38 - 0xfb3c +SWIDTH1 0xfb3e 0xfb40 0xfb41 0xfb43 0xfb44 0xfb46 - 0xfb4f + + +/* + * U+FB50 - U+FDFF : Arabic Presentation Forms-A + */ + +GRAPH 0xfb50 - 0xfbb1 0xfbd3 - 0xfd3f 0xfd50 - 0xfd8f 0xfd92 - 0xfdc7 +GRAPH 0xfdf0 - 0xfdfc +PUNCT 0xfd3e 0xfd3f 0xfdfc +PRINT 0xfb50 - 0xfbb1 0xfbd3 - 0xfd3f 0xfd50 - 0xfd8f 0xfd92 - 0xfdc7 +PRINT 0xfdf0 - 0xfdfc +SWIDTH1 0xfb50 - 0xfbb1 0xfbd3 - 0xfd3f 0xfd50 - 0xfd8f 0xfd92 - 0xfdc7 +SWIDTH1 0xfdf0 - 0xfdfc + + +/* + * U+FE00 - U+FE0F : Variation Selectors + */ + +GRAPH 0xfe00 - 0xfe0f +PRINT 0xfe00 - 0xfe0f +SWIDTH1 0xfe00 - 0xfe0f + + +/* + * U+FE20 - U+FE2F : Combining Half Marks + */ + +GRAPH 0xfe20 - 0xfe23 +PRINT 0xfe20 - 0xfe23 +SWIDTH0 0xfe20 - 0xfe23 + + +/* + * U+FE30 - U+FE4F : CJK Compatibility Forms + */ + +GRAPH 0xfe30 - 0xfe46 0xfe49 - 0xfe4f +PUNCT 0xfe30 - 0xfe46 0xfe49 - 0xfe4f +PRINT 0xfe30 - 0xfe46 0xfe49 - 0xfe4f +SWIDTH2 0xfe30 - 0xfe46 0xfe49 - 0xfe4f + + +/* + * U+FE50 - U+FE6F : Small Form Variants + */ + +GRAPH 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b +PUNCT 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b +PRINT 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b +SWIDTH2 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b + + +/* + * U+FE70 - U+FEFF : Arabic Presentation Forms-B + */ + +CONTROL 0xfeff +GRAPH 0xfe70 - 0xfe74 0xfe76 - 0xfefc +PRINT 0xfe70 - 0xfe74 0xfe76 - 0xfefc +SWIDTH1 0xfe70 - 0xfe74 0xfe76 - 0xfefc + + +/* + * U+FF00 - U+FFEF : Halfwidth and Fullwidth Forms + */ + +ALPHA 0xff21 - 0xff3a 0xff41 - 0xff5a +GRAPH 0xff01 - 0xffbe 0xffc2 - 0xffc7 0xffca - 0xffcf 0xffd2 - 0xffd7 +GRAPH 0xffda - 0xffdc 0xffe0 - 0xffe6 0xffe8 - 0xffee +LOWER 0xff41 - 0xff5a +PUNCT 0xff01 - 0xff0f 0xff1a - 0xff20 0xff3b - 0xff40 0xff5b - 0xff65 +PUNCT 0xffe0 - 0xffe6 0xffe8 - 0xffee +UPPER 0xff21 - 0xff3a +PRINT 0xff01 - 0xffbe 0xffc2 - 0xffc7 0xffca - 0xffcf 0xffd2 - 0xffd7 +PRINT 0xffda - 0xffdc 0xffe0 - 0xffe6 0xffe8 - 0xffee +PHONOGRAM 0xff66 - 0xff6f 0xff71 - 0xff9d 0xffa1 - 0xffbe 0xffc2 - 0xffc7 +PHONOGRAM 0xffca - 0xffcf 0xffd2 - 0xffd7 0xffda - 0xffdc +SWIDTH1 0xff61 - 0xffbe 0xffc2 - 0xffc7 0xffca - 0xffcf 0xffd2 - 0xffd7 +SWIDTH1 0xffda - 0xffdc 0xffe8 - 0xffee +SWIDTH2 0xff01 - 0xff60 0xffe0 - 0xffe6 + +MAPUPPER < 0xff41 - 0xff5a : 0xff21 > +MAPLOWER < 0xff21 - 0xff3a : 0xff41 > + + +/* + * U+FFF0 - U+FFFF : Specials + */ + +CONTROL 0xfff9 - 0xfffb +GRAPH 0xfffc 0xfffd +PUNCT 0xfffc 0xfffd +PRINT 0xfffc 0xfffd +SWIDTH1 0xfffc 0xfffd + + +/* + * U+10300 - U+1032F : Old Italic + */ + +GRAPH 0x10300 - 0x1031e 0x10320 - 0x10323 +PRINT 0x10300 - 0x1031e 0x10320 - 0x10323 +SPECIAL 0x10320 - 0x10323 +SWIDTH1 0x10300 - 0x1031e 0x10320 - 0x10323 + + +/* + * U+10330 - U+1034F : Gothic + */ + +GRAPH 0x10330 - 0x1034a +PRINT 0x10330 - 0x1034a +SPECIAL 0x1034a +SWIDTH1 0x10330 - 0x1034a + + +/* + * U+10400 - U+1044F : Deseret + */ + +ALPHA 0x10400 - 0x10425 0x10428 - 0x1044d +GRAPH 0x10400 - 0x10425 0x10428 - 0x1044d +LOWER 0x10428 - 0x1044d +UPPER 0x10400 - 0x10425 +PRINT 0x10400 - 0x10425 0x10428 - 0x1044d +SWIDTH1 0x10400 - 0x10425 0x10428 - 0x1044d + +MAPUPPER < 0x10428 - 0x1044d : 0x10400 > +MAPLOWER < 0x10400 - 0x10425 : 0x10428 > + + +/* + * U+1D000 - U+1D0FF : Byzantine Musical Symbols + */ + +GRAPH 0x1d000 - 0x1d0f5 +PUNCT 0x1d000 - 0x1d0f5 +PRINT 0x1d000 - 0x1d0f5 +SWIDTH1 0x1d000 - 0x1d0f5 + + +/* + * U+1D100 - U+1D1FF : Musical Symbols + */ + +CONTROL 0x1d173 - 0x1d17a +GRAPH 0x1d100 - 0x1d126 0x1d12a - 0x1d172 0x1d17b - 0x1d1dd +PUNCT 0x1d100 - 0x1d126 0x1d12a - 0x1d164 0x1d16a - 0x1d16c +PUNCT 0x1d183 0x1d184 0x1d18c - 0x1d1a9 0x1d1ae - 0x1d1dd +PRINT 0x1d100 - 0x1d126 0x1d12a - 0x1d158 0x1d15a - 0x1d172 +PRINT 0x1d17b - 0x1d1dd +SWIDTH0 0x1d165 - 0x1d169 0x1d16d - 0x1d172 0x1d17b - 0x1d182 +SWIDTH0 0x1d185 - 0x1d18b 0x1d1aa - 0x1d1ad +SWIDTH1 0x1d100 - 0x1d126 0x1d12a - 0x1d158 0x1d15a - 0x1d164 +SWIDTH1 0x1d16a - 0x1d16c 0x1d183 0x1d184 0x1d18c - 0x1d1a9 +SWIDTH1 0x1d1ae - 0x1d1dd + + +/* + * U+1D400 - U+1D7FF : Mathematical Alphanumeric Symbols + */ + +ALPHA 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f +ALPHA 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9 +ALPHA 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505 +ALPHA 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c +ALPHA 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544 +ALPHA 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d6c0 +ALPHA 0x1d6c2 - 0x1d6da 0x1d6dc - 0x1d6fa 0x1d6fc - 0x1d714 +ALPHA 0x1d716 - 0x1d734 0x1d736 - 0x1d74e 0x1d750 - 0x1d76e +ALPHA 0x1d770 - 0x1d788 0x1d78a - 0x1d7a8 0x1d7aa - 0x1d7c2 +ALPHA 0x1d7c4 - 0x1d7c9 +GRAPH 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f +GRAPH 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9 +GRAPH 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505 +GRAPH 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c +GRAPH 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544 +GRAPH 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d7c9 +GRAPH 0x1d7ce - 0x1d7ff +LOWER 0x1d41a - 0x1d433 0x1d44e - 0x1d454 0x1d456 - 0x1d467 +LOWER 0x1d482 - 0x1d49b 0x1d4b6 - 0x1d4b9 0x1d4bb 0x1d4bd - 0x1d4c0 +LOWER 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d4cf 0x1d4ea - 0x1d503 +LOWER 0x1d51e - 0x1d537 0x1d552 - 0x1d56b 0x1d586 - 0x1d59f +LOWER 0x1d5ba - 0x1d5d3 0x1d5ee - 0x1d607 0x1d622 - 0x1d63b +LOWER 0x1d656 - 0x1d66f 0x1d68a - 0x1d6a3 0x1d6c2 - 0x1d6da +LOWER 0x1d6dc - 0x1d6e1 0x1d6fc - 0x1d714 0x1d716 - 0x1d71b +LOWER 0x1d736 - 0x1d74e 0x1d750 - 0x1d755 0x1d770 - 0x1d788 +LOWER 0x1d78a - 0x1d78f 0x1d7aa - 0x1d7c2 0x1d7c4 - 0x1d7c9 +PUNCT 0x1d6c1 0x1d6db 0x1d6fb 0x1d715 0x1d735 0x1d74f +PUNCT 0x1d76f 0x1d789 0x1d7a9 0x1d7c3 +UPPER 0x1d400 - 0x1d419 0x1d434 - 0x1d44d 0x1d468 - 0x1d481 +UPPER 0x1d49c 0x1d49e 0x1d49f 0x1d4a2 0x1d4a5 0x1d4a6 +UPPER 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b5 0x1d4d0 - 0x1d4e9 +UPPER 0x1d504 0x1d505 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 +UPPER 0x1d516 - 0x1d51c 0x1d538 0x1d539 0x1d53b - 0x1d53e +UPPER 0x1d540 - 0x1d544 0x1d546 0x1d54a - 0x1d550 0x1d56c - 0x1d585 +UPPER 0x1d5a0 - 0x1d5b9 0x1d5d4 - 0x1d5ed 0x1d608 - 0x1d621 +UPPER 0x1d63c - 0x1d655 0x1d670 - 0x1d689 0x1d6a8 - 0x1d6c0 +UPPER 0x1d6e2 - 0x1d6fa 0x1d71c - 0x1d734 0x1d756 - 0x1d76e +UPPER 0x1d790 - 0x1d7a8 +PRINT 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f +PRINT 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9 +PRINT 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505 +PRINT 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c +PRINT 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544 +PRINT 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d7c9 +PRINT 0x1d7ce - 0x1d7ff +SWIDTH1 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f +SWIDTH1 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9 +SWIDTH1 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505 +SWIDTH1 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c +SWIDTH1 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544 +SWIDTH1 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d7c9 +SWIDTH1 0x1d7ce - 0x1d7ff + + +/* + * U+20000 - U+2A6DF : CJK Unified Ideographs Extension B + */ + +GRAPH 0x20000 - 0x2a6d6 +PRINT 0x20000 - 0x2a6d6 +IDEOGRAM 0x20000 - 0x2a6d6 +SWIDTH2 0x20000 - 0x2a6d6 + + +/* + * U+2F800 - U+2FA1F : CJK Compatibility Ideographs Supplement + */ + +GRAPH 0x2f800 - 0x2fa1d +PRINT 0x2f800 - 0x2fa1d +IDEOGRAM 0x2f800 - 0x2fa1d +SWIDTH2 0x2f800 - 0x2fa1d + + +/* + * U+E0000 - U+E007F : Tags + */ + +CONTROL 0xe0001 0xe0020 - 0xe007f + + +/* + * U+F0000 - U+FFFFF : Supplementary Private Use Area-A + */ + +GRAPH 0xf0000 - 0xffffd +PRINT 0xf0000 - 0xffffd +SWIDTH1 0xf0000 - 0xffffd + + +/* + * U+100000 - U+10FFFF : Supplementary Private Use Area-B + */ + +GRAPH 0x100000 - 0x10fffd +PRINT 0x100000 - 0x10fffd +SWIDTH1 0x100000 - 0x10fffd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/extern.h Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,38 @@ +/* + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +int yylex(void); +int yyparse(void);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/ldef.h Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/types.h> +#include "runefile.h" +#include "_ctype.h" +#include "wctype.h" + +/* + * This should look a LOT like a _RuneEntry + */ +typedef struct rune_list { + int32_t min; + int32_t max; + int32_t map; + uint32_t *types; + struct rune_list *next; +} rune_list; + +typedef struct rune_map { + uint32_t map[_CACHED_RUNES]; + rune_list *root; +} rune_map;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/mkctype_lex.l Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,169 @@ +%{ +/*- + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> + +#include "ldef.h" +#include "mkctype_yacc.tab.h" +#include "extern.h" +%} + +ODIGIT [0-7] +DIGIT [0-9] +XDIGIT [0-9a-fA-F] +W [\t\n\r ] + +%% +\'.\' { yylval.rune = (unsigned char)yytext[1]; + return(RUNE); } + +'\\a' { yylval.rune = '\a'; + return(RUNE); } +'\\b' { yylval.rune = '\b'; + return(RUNE); } +'\\f' { yylval.rune = '\f'; + return(RUNE); } +'\\n' { yylval.rune = '\n'; + return(RUNE); } +'\\r' { yylval.rune = '\r'; + return(RUNE); } +'\\t' { yylval.rune = '\t'; + return(RUNE); } +'\\v' { yylval.rune = '\v'; + return(RUNE); } + +0x{XDIGIT}+ { yylval.rune = strtol(yytext, 0, 16); + return(RUNE); } +0{ODIGIT}+ { yylval.rune = strtol(yytext, 0, 8); + return(RUNE); } +{DIGIT}+ { yylval.rune = strtol(yytext, 0, 10); + return(RUNE); } + + +MAPLOWER { return(MAPLOWER); } +MAPUPPER { return(MAPUPPER); } +TODIGIT { return(DIGITMAP); } +INVALID { return(INVALID); } + +ALPHA { yylval.i = _CTYPE_A|_CTYPE_R|_CTYPE_G; + return(LIST); } +CONTROL { yylval.i = _ISCNTRL; + return(LIST); } +DIGIT { yylval.i = _ISDIGIT|_ISPRINT|_ISGRAPH; + return(LIST); } +GRAPH { yylval.i = _ISGRAPH|_ISPRINT; + return(LIST); } +LOWER { yylval.i = _ISLOWER|_ISPRINT|_ISGRAPH; + return(LIST); } +PUNCT { yylval.i = _ISPUNCT|_ISPRINT|_ISGRAPH; + return(LIST); } +SPACE { yylval.i = _ISSPACE; + return(LIST); } +UPPER { yylval.i = _ISUPPER|_ISPRINT|_ISGRAPH; + return(LIST); } +XDIGIT { yylval.i = _ISXDIGIT|_ISPRINT|_ISGRAPH; + return(LIST); } +BLANK { yylval.i = _ISBLANK; + return(LIST); } +PRINT { yylval.i = _ISPRINT; + return(LIST); } +IDEOGRAM { yylval.i = _E2|_ISPRINT|_ISGRAPH; + return(LIST); } +SPECIAL { yylval.i = _E5|_ISPRINT|_ISGRAPH; + return(LIST); } +PHONOGRAM { yylval.i = _E1|_ISPRINT|_ISGRAPH; + return(LIST); } +SWIDTH0 { yylval.i = _CTYPE_SW0; return(LIST); } +SWIDTH1 { yylval.i = _CTYPE_SW1; return(LIST); } +SWIDTH2 { yylval.i = _CTYPE_SW2; return(LIST); } +SWIDTH3 { yylval.i = _CTYPE_SW3; return(LIST); } + +VARIABLE[\t ] { static char vbuf[1024]; + char *v = vbuf; + while (((*v = input()) != 0) && (*v != '\n')) + ++v; + if (*v) { + unput(*v); + *v = 0; + } + yylval.str = vbuf; + return(VARIABLE); + } + +ENCODING { return(ENCODING); } + +\".*\" { char *e = yytext + 1; + yylval.str = e; + while (*e && *e != '"') + ++e; + *e = 0; + return(STRING); } + +\<|\(|\[ { return(LBRK); } + +\>|\)|\] { return(RBRK); } + +\- { return(THRU); } +\.\.\. { return(THRU); } + +\: { return(':'); } + +{W}+ ; + +^\#.*\n ; +\/\* { char lc = 0; + do { + while ((lc) != '*') + if ((lc = input()) == 0) + break; + } while((lc = input()) != '/'); + } + +\\$ ; +. { (void) printf("Lex is skipping '%s'\n", + yytext); } +%% + +#if !defined(yywrap) +int +yywrap(void) +{ + return(1); +} +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/ctype/mkctype_yacc.y Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,848 @@ +%{ +/*- + * Copyright (c) 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Paul Borman at Krystal Technologies. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <arpa/inet.h> + +#include <ctype.h> +#include <err.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "ldef.h" +#include "extern.h" +#include "runefile.h" + +static void *xmalloc(unsigned int sz); +static uint32_t *xlalloc(unsigned int sz); +void yyerror(const char *s); +static uint32_t *xrelalloc(uint32_t *old, unsigned int sz); +static void dump_tables(void); +static void cleanout(void); + +const char *locale_file = "<stdout>"; + +rune_map maplower = { { 0 }, NULL }; +rune_map mapupper = { { 0 }, NULL }; +rune_map types = { { 0 }, NULL }; + +_FileRuneLocale new_locale = { 0 }; +char *variable = NULL; + +void set_map(rune_map *, rune_list *, uint32_t); +void add_map(rune_map *, rune_list *, uint32_t); +static void usage(void); +%} + +%union { + int32_t rune; + int i; + char *str; + + rune_list *list; +} + +%token <rune> RUNE +%token LBRK +%token RBRK +%token THRU +%token MAPLOWER +%token MAPUPPER +%token DIGITMAP +%token <i> LIST +%token <str> VARIABLE +%token ENCODING +%token INVALID +%token <str> STRING + +%type <list> list +%type <list> map + + +%% + +locale : /* empty */ + | table + { dump_tables(); } + ; + +table : entry + | table entry + ; + +entry : ENCODING STRING + { if (strcmp($2, "NONE") && + strcmp($2, "ASCII") && + strcmp($2, "UTF-8") && + strcmp($2, "EUC") && + strcmp($2, "GBK") && + strcmp($2, "GB18030") && + strcmp($2, "GB2312") && + strcmp($2, "BIG5") && + strcmp($2, "MSKanji")) + warnx("ENCODING %s is not supported by libc", $2); + (void) strncpy(new_locale.encoding, $2, + sizeof(new_locale.encoding)); } + | VARIABLE + { new_locale.variable_len = strlen($1) + 1; + variable = xmalloc(new_locale.variable_len); + (void) strcpy(variable, $1); + } + | INVALID RUNE + { warnx("the INVALID keyword is deprecated"); } + | LIST list + { set_map(&types, $2, $1); } + | MAPLOWER map + { set_map(&maplower, $2, 0); } + | MAPUPPER map + { set_map(&mapupper, $2, 0); } + | DIGITMAP map + { if (debug) + warnx("this system does not support DIGITMAP"); + } + ; + +list : RUNE + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $1; + $$->max = $1; + $$->next = 0; + } + | RUNE THRU RUNE + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $1; + $$->max = $3; + $$->next = 0; + } + | list RUNE + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $2; + $$->max = $2; + $$->next = $1; + } + | list RUNE THRU RUNE + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $2; + $$->max = $4; + $$->next = $1; + } + ; + +map : LBRK RUNE RUNE RBRK + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $2; + $$->max = $2; + $$->map = $3; + $$->next = 0; + } + | map LBRK RUNE RUNE RBRK + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $3; + $$->max = $3; + $$->map = $4; + $$->next = $1; + } + | LBRK RUNE THRU RUNE ':' RUNE RBRK + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $2; + $$->max = $4; + $$->map = $6; + $$->next = 0; + } + | map LBRK RUNE THRU RUNE ':' RUNE RBRK + { + $$ = (rune_list *)xmalloc(sizeof(rune_list)); + $$->min = $3; + $$->max = $5; + $$->map = $7; + $$->next = $1; + } + ; +%% + +int debug; +FILE *fp; + +static void +cleanout(void) +{ + if (fp != NULL) + (void) unlink(locale_file); +} + +int +main(int ac, char *av[]) +{ + int x; + + fp = stdout; + + while ((x = getopt(ac, av, "do:")) != -1) { + switch(x) { + case 'd': + debug = 1; + break; + case 'o': + locale_file = optarg; + if ((fp = fopen(locale_file, "w")) == NULL) + err(1, "%s", locale_file); + (void) atexit(cleanout); + break; + default: + usage(); + } + } + + switch (ac - optind) { + case 0: + break; + case 1: + if (freopen(av[optind], "r", stdin) == 0) + err(1, "%s", av[optind]); + break; + default: + usage(); + } + for (x = 0; x < _CACHED_RUNES; ++x) { + mapupper.map[x] = x; + maplower.map[x] = x; + } + (void) memcpy(new_locale.magic, _FILE_RUNE_MAGIC_1, + sizeof(new_locale.magic)); + + (void) yyparse(); + + return(0); +} + +static void +usage(void) +{ + (void) fprintf(stderr, "usage: mklocale [-d] [-o output] [source]\n"); + exit(1); +} + +void +yyerror(const char *s) +{ + (void) fprintf(stderr, "%s\n", s); +} + +static void * +xmalloc(unsigned int sz) +{ + void *r = malloc(sz); + if (!r) + errx(1, "xmalloc"); + return(r); +} + +static uint32_t * +xlalloc(unsigned int sz) +{ + uint32_t *r = (uint32_t *)malloc(sz * sizeof(uint32_t)); + if (!r) + errx(1, "xlalloc"); + return(r); +} + +static uint32_t * +xrelalloc(uint32_t *old, unsigned int sz) +{ + uint32_t *r = (uint32_t *)realloc((char *)old, + sz * sizeof(uint32_t)); + if (!r) + errx(1, "xrelalloc"); + return(r); +} + +void +set_map(rune_map *map, rune_list *list, uint32_t flag) +{ + while (list) { + rune_list *nlist = list->next; + add_map(map, list, flag); + list = nlist; + } +} + +void +add_map(rune_map *map, rune_list *list, uint32_t flag) +{ + int32_t i; + rune_list *lr = 0; + rune_list *r; + int32_t run; + + while (list->min < _CACHED_RUNES && list->min <= list->max) { + if (flag) + map->map[list->min++] |= flag; + else + map->map[list->min++] = list->map++; + } + + if (list->min > list->max) { + free(list); + return; + } + + run = list->max - list->min + 1; + + if (!(r = map->root) || (list->max < r->min - 1) + || (!flag && list->max == r->min - 1)) { + if (flag) { + list->types = xlalloc(run); + for (i = 0; i < run; ++i) + list->types[i] = flag; + } + list->next = map->root; + map->root = list; + return; + } + + for (r = map->root; r && r->max + 1 < list->min; r = r->next) + lr = r; + + if (!r) { + /* + * We are off the end. + */ + if (flag) { + list->types = xlalloc(run); + for (i = 0; i < run; ++i) + list->types[i] = flag; + } + list->next = 0; + lr->next = list; + return; + } + + if (list->max < r->min - 1) { + /* + * We come before this range and we do not intersect it. + * We are not before the root node, it was checked before the loop + */ + if (flag) { + list->types = xlalloc(run); + for (i = 0; i < run; ++i) + list->types[i] = flag; + } + list->next = lr->next; + lr->next = list; + return; + } + + /* + * At this point we have found that we at least intersect with + * the range pointed to by `r', we might intersect with one or + * more ranges beyond `r' as well. + */ + + if (!flag && list->map - list->min != r->map - r->min) { + /* + * There are only two cases when we are doing case maps and + * our maps needn't have the same offset. When we are adjoining + * but not intersecting. + */ + if (list->max + 1 == r->min) { + lr->next = list; + list->next = r; + return; + } + if (list->min - 1 == r->max) { + list->next = r->next; + r->next = list; + return; + } + errx(1, "error: conflicting map entries"); + } + + if (list->min >= r->min && list->max <= r->max) { + /* + * Subset case. + */ + + if (flag) { + for (i = list->min; i <= list->max; ++i) + r->types[i - r->min] |= flag; + } + free(list); + return; + } + if (list->min <= r->min && list->max >= r->max) { + /* + * Superset case. Make him big enough to hold us. + * We might need to merge with the guy after him. + */ + if (flag) { + list->types = xlalloc(list->max - list->min + 1); + + for (i = list->min; i <= list->max; ++i) + list->types[i - list->min] = flag; + + for (i = r->min; i <= r->max; ++i) + list->types[i - list->min] |= r->types[i - r->min]; + + free(r->types); + r->types = list->types; + } else { + r->map = list->map; + } + r->min = list->min; + r->max = list->max; + free(list); + } else if (list->min < r->min) { + /* + * Our tail intersects his head. + */ + if (flag) { + list->types = xlalloc(r->max - list->min + 1); + + for (i = r->min; i <= r->max; ++i) + list->types[i - list->min] = r->types[i - r->min]; + + for (i = list->min; i < r->min; ++i) + list->types[i - list->min] = flag; + + for (i = r->min; i <= list->max; ++i) + list->types[i - list->min] |= flag; + + free(r->types); + r->types = list->types; + } else { + r->map = list->map; + } + r->min = list->min; + free(list); + return; + } else { + /* + * Our head intersects his tail. + * We might need to merge with the guy after him. + */ + if (flag) { + r->types = xrelalloc(r->types, list->max - r->min + 1); + + for (i = list->min; i <= r->max; ++i) + r->types[i - r->min] |= flag; + + for (i = r->max+1; i <= list->max; ++i) + r->types[i - r->min] = flag; + } + r->max = list->max; + free(list); + } + + /* + * Okay, check to see if we grew into the next guy(s) + */ + while (((lr = r->next) != 0) && r->max >= lr->min) { + if (flag) { + if (r->max >= lr->max) { + /* + * Good, we consumed all of him. + */ + for (i = lr->min; i <= lr->max; ++i) + r->types[i - r->min] |= lr->types[i - lr->min]; + } else { + /* + * "append" him on to the end of us. + */ + r->types = xrelalloc(r->types, lr->max - r->min + 1); + + for (i = lr->min; i <= r->max; ++i) + r->types[i - r->min] |= lr->types[i - lr->min]; + + for (i = r->max+1; i <= lr->max; ++i) + r->types[i - r->min] = lr->types[i - lr->min]; + + r->max = lr->max; + } + } else { + if (lr->max > r->max) + r->max = lr->max; + } + + r->next = lr->next; + + if (flag) + free(lr->types); + free(lr); + } +} + +static void +dump_tables(void) +{ + int x, first_d, curr_d; + rune_list *list; + + /* + * See if we can compress some of the istype arrays + */ + for(list = types.root; list; list = list->next) { + list->map = list->types[0]; + for (x = 1; x < list->max - list->min + 1; ++x) { + if ((int32_t)list->types[x] != list->map) { + list->map = 0; + break; + } + } + } + + first_d = curr_d = -1; + for (x = 0; x < _CACHED_RUNES; ++x) { + uint32_t r = types.map[x]; + + if (r & _CTYPE_D) { + if (first_d < 0) + first_d = curr_d = x; + else if (x != curr_d + 1) + errx(1, "error: DIGIT range is not contiguous"); + else if (x - first_d > 9) + errx(1, "error: DIGIT range is too big"); + else + curr_d++; + if (!(r & _CTYPE_X)) + errx(1, + "error: DIGIT range is not a subset of XDIGIT range"); + } + } + if (first_d < 0) + errx(1, "error: no DIGIT range defined in the single byte area"); + else if (curr_d - first_d < 9) + errx(1, "error: DIGIT range is too small in the single byte area"); + + /* + * Fill in our tables. Do this in network order so that + * diverse machines have a chance of sharing data. + * (Machines like Crays cannot share with little machines due to + * word size. Sigh. We tried.) + */ + for (x = 0; x < _CACHED_RUNES; ++x) { + new_locale.runetype[x] = htonl(types.map[x]); + new_locale.maplower[x] = htonl(maplower.map[x]); + new_locale.mapupper[x] = htonl(mapupper.map[x]); + } + + /* + * Count up how many ranges we will need for each of the extents. + */ + list = types.root; + + while (list) { + new_locale.runetype_ext_nranges++; + list = list->next; + } + new_locale.runetype_ext_nranges = + htonl(new_locale.runetype_ext_nranges); + + list = maplower.root; + + while (list) { + new_locale.maplower_ext_nranges++; + list = list->next; + } + new_locale.maplower_ext_nranges = + htonl(new_locale.maplower_ext_nranges); + + list = mapupper.root; + + while (list) { + new_locale.mapupper_ext_nranges++; + list = list->next; + } + new_locale.mapupper_ext_nranges = + htonl(new_locale.mapupper_ext_nranges); + + new_locale.variable_len = htonl(new_locale.variable_len); + + /* + * Okay, we are now ready to write the new locale file. + */ + + /* + * PART 1: The _FileRuneLocale structure + */ + if (fwrite((char *)&new_locale, sizeof(new_locale), 1, fp) != 1) { + perror(locale_file); + exit(1); + } + /* + * PART 2: The runetype_ext structures (not the actual tables) + */ + list = types.root; + + while (list) { + _FileRuneEntry re; + + re.min = htonl(list->min); + re.max = htonl(list->max); + re.map = htonl(list->map); + + if (fwrite((char *)&re, sizeof(re), 1, fp) != 1) { + perror(locale_file); + exit(1); + } + + list = list->next; + } + /* + * PART 3: The maplower_ext structures + */ + list = maplower.root; + + while (list) { + _FileRuneEntry re; + + re.min = htonl(list->min); + re.max = htonl(list->max); + re.map = htonl(list->map); + + if (fwrite((char *)&re, sizeof(re), 1, fp) != 1) { + perror(locale_file); + exit(1); + } + + list = list->next; + } + /* + * PART 4: The mapupper_ext structures + */ + list = mapupper.root; + + while (list) { + _FileRuneEntry re; + + re.min = htonl(list->min); + re.max = htonl(list->max); + re.map = htonl(list->map); + + if (fwrite((char *)&re, sizeof(re), 1, fp) != 1) { + perror(locale_file); + exit(1); + } + + list = list->next; + } + /* + * PART 5: The runetype_ext tables + */ + list = types.root; + + while (list) { + for (x = 0; x < list->max - list->min + 1; ++x) + list->types[x] = htonl(list->types[x]); + + if (!list->map) { + if (fwrite((char *)list->types, + (list->max - list->min + 1) * sizeof(uint32_t), + 1, fp) != 1) { + perror(locale_file); + exit(1); + } + } + list = list->next; + } + /* + * PART 6: And finally the variable data + */ + if (new_locale.variable_len != 0 && + fwrite(variable, ntohl(new_locale.variable_len), 1, fp) != 1) { + perror(locale_file); + exit(1); + } + if (fclose(fp) != 0) { + perror(locale_file); + exit(1); + } + fp = NULL; + + if (!debug) + return; + + if (new_locale.encoding[0]) + (void) fprintf(stderr, "ENCODING %s\n", new_locale.encoding); + if (variable) + (void) fprintf(stderr, "VARIABLE %s\n", variable); + + (void) fprintf(stderr, "\nMAPLOWER:\n\n"); + + for (x = 0; x < _CACHED_RUNES; ++x) { + if (isprint(maplower.map[x])) + (void) fprintf(stderr, " '%c'", (int)maplower.map[x]); + else if (maplower.map[x]) + (void) fprintf(stderr, "%04x", maplower.map[x]); + else + (void) fprintf(stderr, "%4x", 0); + if ((x & 0xf) == 0xf) + (void) fprintf(stderr, "\n"); + else + (void) fprintf(stderr, " "); + } + (void) fprintf(stderr, "\n"); + + for (list = maplower.root; list; list = list->next) + (void) fprintf(stderr, "\t%04x - %04x : %04x\n", + list->min, list->max, list->map); + + (void) fprintf(stderr, "\nMAPUPPER:\n\n"); + + for (x = 0; x < _CACHED_RUNES; ++x) { + if (isprint(mapupper.map[x])) + (void) fprintf(stderr, " '%c'", (int)mapupper.map[x]); + else if (mapupper.map[x]) + (void) fprintf(stderr, "%04x", mapupper.map[x]); + else + (void) fprintf(stderr, "%4x", 0); + if ((x & 0xf) == 0xf) + (void) fprintf(stderr, "\n"); + else + (void) fprintf(stderr, " "); + } + (void) fprintf(stderr, "\n"); + + for (list = mapupper.root; list; list = list->next) + (void) fprintf(stderr, "\t%04x - %04x : %04x\n", + list->min, list->max, list->map); + + + (void) fprintf(stderr, "\nTYPES:\n\n"); + + for (x = 0; x < _CACHED_RUNES; ++x) { + uint32_t r = types.map[x]; + + if (r) { + if (isprint(x)) + (void) fprintf(stderr, " '%c': %2d", x, (int)(r & 0xff)); + else + (void) fprintf(stderr, "%04x: %2d", x, (int)(r & 0xff)); + + (void) fprintf(stderr, " %4s", (r & _CTYPE_A) ? "alph" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_C) ? "ctrl" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_D) ? "dig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_G) ? "graf" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_L) ? "low" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_P) ? "punc" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_S) ? "spac" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_U) ? "upp" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_X) ? "xdig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_B) ? "blnk" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_R) ? "prnt" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_I) ? "ideo" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_T) ? "spec" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_Q) ? "phon" : ""); + (void) fprintf(stderr, "\n"); + } + } + + for (list = types.root; list; list = list->next) { + if (list->map && list->min + 3 < list->max) { + uint32_t r = list->map; + + (void) fprintf(stderr, "%04x: %2d", + (uint32_t)list->min, (int)(r & 0xff)); + + (void) fprintf(stderr, " %4s", (r & _CTYPE_A) ? "alph" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_C) ? "ctrl" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_D) ? "dig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_G) ? "graf" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_L) ? "low" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_P) ? "punc" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_S) ? "spac" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_U) ? "upp" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_X) ? "xdig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_B) ? "blnk" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_R) ? "prnt" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_I) ? "ideo" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_T) ? "spec" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_Q) ? "phon" : ""); + (void) fprintf(stderr, "\n...\n"); + + (void) fprintf(stderr, "%04x: %2d", + (uint32_t)list->max, (int)(r & 0xff)); + + (void) fprintf(stderr, " %4s", (r & _CTYPE_A) ? "alph" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_C) ? "ctrl" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_D) ? "dig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_G) ? "graf" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_L) ? "low" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_P) ? "punc" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_S) ? "spac" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_U) ? "upp" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_X) ? "xdig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_B) ? "blnk" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_R) ? "prnt" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_I) ? "ideo" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_T) ? "spec" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_Q) ? "phon" : ""); + (void) fprintf(stderr, "\n"); + } else + for (x = list->min; x <= list->max; ++x) { + uint32_t r = ntohl(list->types[x - list->min]); + + if (r) { + (void) fprintf(stderr, "%04x: %2d", x, (int)(r & 0xff)); + + (void) fprintf(stderr, " %4s", (r & _CTYPE_A) ? "alph" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_C) ? "ctrl" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_D) ? "dig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_G) ? "graf" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_L) ? "low" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_P) ? "punc" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_S) ? "spac" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_U) ? "upp" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_X) ? "xdig" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_B) ? "blnk" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_R) ? "prnt" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_I) ? "ideo" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_T) ? "spec" : ""); + (void) fprintf(stderr, " %4s", (r & _CTYPE_Q) ? "phon" : ""); + (void) fprintf(stderr, "\n"); + } + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/messages/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,53 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +CATEGORY=LC_MESSAGES + +include ../Makefile.common + +en_COMMON = en_AU en_CA en_GB en_NZ en_US + +en_ASCII = $(en_COMMON:%=%.US-ASCII) +en_LATIN1 = $(en_COMMON:%=%.ISO8859-1) +en_LATIN15 = $(en_COMMON:%=%.ISO8859-15) +en_UTF8 = $(en_COMMON:%=%.UTF-8) en_IE.UTF-8 +en_LOCALES = $(en_ASCII) $(en_LATIN1) $(en_LATIN15) $(en_UTF8) + +.KEEP_STATE: + +all: $(MACH) .WAIT $(MACHLOCALES) + +$(ASCII:%=$(MACH)/%): $(MACH)/US-ASCII + $(RM) $@ + $(LN) $(MACH)/US-ASCII $@ + +$(en_LOCALES:%=$(MACH)/%): $(MACH)/en + $(RM) $@ + $(LN) $(MACH)/en $@ + +clean: + $(RM) $(OBJS) $(CLEANFILES) + $(RM) -r $(MACH) + +lint: +check: + + +# +# Rules for building encoding data files. +# +$(MACH)/%: data/%.src $(MACH) + $(INS.nohash) + +include ../Makefile.targ
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/messages/data/en.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,16 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# Note: FreeBSD had customizations for CA and US to add French and Spanish +# prefixes, but that that really isn't appropriate for an English locale. +# +# yesexpr +^[yY].* +# noexpr +^[nN].* +# yesstr +yes +# nostr +no +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,65 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +CATEGORY=LC_MONETARY + +include ../Makefile.common + +en_AU = en_AU.ISO8859-1 en_AU.ISO8859-15 en_AU.US-ASCII en_AU.UTF-8 +en_CA = en_CA.ISO8859-1 en_CA.ISO8859-15 en_CA.US-ASCII en_CA.UTF-8 +en_GB = en_GB.ISO8859-1 en_GB.ISO8859-15 en_GB.US-ASCII en_GB.UTF-8 +en_IE = en_IE.UTF-8 +en_NZ = en_NZ.ISO8859-1 en_NZ.ISO8859-15 en_NZ.US-ASCII en_NZ.UTF-8 +en_US = en_US.ISO8859-1 en_US.ISO8859-15 en_US.US-ASCII en_US.UTF-8 + +.KEEP_STATE: + +all: $(MACH) .WAIT $(MACHLOCALES) + +clean: + $(RM) $(OBJS) $(CLEANFILES) + $(RM) -r $(MACH) + +lint: +check: + +# +# Rules for building encoding data files. +# + +$(en_AU:%=$(MACH)/%): data/en_AU.src + $(RM) $@; $(HASHSTRIP) data/en_AU.src > $@ + +$(en_CA:%=$(MACH)/%): data/en_CA.src + $(RM) $@; $(HASHSTRIP) data/en_CA.src > $@ + +$(en_NZ:%=$(MACH)/%): data/en_NZ.src + $(RM) $@; $(HASHSTRIP) data/en_NZ.src > $@ + +$(en_US:%=$(MACH)/%): data/en_US.src + $(RM) $@; $(HASHSTRIP) data/en_US.src > $@ + +$(MACH)/en_IE.UTF-8: data/en_IE.UTF-8.src + $(RM) $@; $(HASHSTRIP) data/en_IE.UTF-8.src > $@ + +$(MACH)/en_GB.UTF-8: data/en_GB.UTF-8.src + $(RM) $@; $(HASHSTRIP) data/en_GB.UTF-8.src > $@ + +$(MACH)/en_GB.ISO8859-1 $(MACH)/en_GB.ISO8859-15: data/en_GB.LATIN.src + $(RM) $@; $(HASHSTRIP) data/en_GB.LATIN.src > $@ + +$(MACH)/en_GB.US-ASCII data/en_GB.ASCII.src: + $(RM) $@; $(HASHSTRIP) data/en_GB.ASCII.src > $@ + +include ../Makefile.targ
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_AU.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,47 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +AUD +# currency_symbol +$ +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# int_p_cs_precedes +1 +# int_n_cs_precedes; +1 +# int_p_sep_by_space; +0 +# int_n_sep_by_space; +0 +# int_p_sign_posn; +1 +# int_n_sign_posn; +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_CA.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,35 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +CAD +# currency_symbol +$ +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_GB.ASCII.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,35 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +GBP +# currency_symbol +GBP +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_GB.LATIN.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,35 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +GBP +# currency_symbol +£ +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_GB.UTF-8.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,35 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +GBP +# currency_symbol +£ +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_IE.UTF-8.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,35 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +EUR +# currency_symbol +€ +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_NZ.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,35 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +NZD +# currency_symbol +$ +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/monetary/data/en_US.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,35 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# int_curr_symbol (last character always SPACE) +USD +# currency_symbol +$ +# mon_decimal_point +. +# mon_thousands_sep +, +# mon_grouping, separated by ; +3;3 +# positive_sign + +# negative_sign +- +# int_frac_digits +2 +# frac_digits +2 +# p_cs_precedes +1 +# p_sep_by_space +0 +# n_cs_precedes +1 +# n_sep_by_space +0 +# p_sign_posn +1 +# n_sign_posn +1 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/numeric/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,53 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +CATEGORY=LC_NUMERIC + +include ../Makefile.common + +en_COMMON = en_AU en_CA en_GB en_NZ en_US + +en_ASCII = $(en_COMMON:%=%.US-ASCII) +en_LATIN1 = $(en_COMMON:%=%.ISO8859-1) +en_LATIN15 = $(en_COMMON:%=%.ISO8859-15) +en_UTF8 = $(en_COMMON:%=%.UTF-8) en_IE.UTF-8 +en_LOCALES = $(en_ASCII) $(en_LATIN1) $(en_LATIN15) $(en_UTF8) + +.KEEP_STATE: + +all: $(MACH) .WAIT $(MACHLOCALES) + +$(ASCII:%=$(MACH)/%): $(MACH)/US-ASCII + $(RM) $@ + $(LN) $(MACH)/US-ASCII $@ + +$(en_LOCALES:%=$(MACH)/%): $(MACH)/en + $(RM) $@ + $(LN) $(MACH)/en $@ + +clean: + $(RM) $(OBJS) $(CLEANFILES) + $(RM) -r $(MACH) + +lint: +check: + + +# +# Rules for building encoding data files. +# +$(MACH)/%: data/%.src $(MACH) + $(INS.nohash) + +include ../Makefile.targ
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/numeric/data/en.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,11 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# decimal_point +. +# thousands_sep +, +# grouping, separated by ; +3;3 +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/time/Makefile Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,49 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +CATEGORY=LC_TIME + +include ../Makefile.common + +# Apparently only the US uses month/day/year. Other English speaking +# countries place day/month/year. +en_GB = en_AU.ISO8859-1 en_AU.ISO8859-15 en_AU.US-ASCII en_AU.UTF-8 \ + en_CA.ISO8859-1 en_CA.ISO8859-15 en_CA.US-ASCII en_CA.UTF-8 \ + en_GB.ISO8859-1 en_GB.ISO8859-15 en_GB.US-ASCII en_GB.UTF-8 \ + en_IE.UTF-8 \ + en_NZ.ISO8859-1 en_NZ.ISO8859-15 en_NZ.US-ASCII en_NZ.UTF-8 +en_US = en_US.ISO8859-1 en_US.ISO8859-15 en_US.US-ASCII en_US.UTF-8 + +.KEEP_STATE: + +all: $(MACH) .WAIT $(MACHLOCALES) + +clean: + $(RM) $(OBJS) $(CLEANFILES) + $(RM) -r $(MACH) + +lint: +check: + +# +# Rules for building encoding data files. +# + +$(en_GB:%=$(MACH)/%): data/en_GB.src + $(RM) $@; $(HASHSTRIP) data/en_GB.src > $@ + +$(en_US:%=$(MACH)/%): data/en_US.src + $(RM) $@; $(HASHSTRIP) data/en_US.src > $@ + +include ../Makefile.targ
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/time/data/en_GB.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,101 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# Short month names +# +Jan +Feb +Mar +Apr +May +Jun +Jul +Aug +Sep +Oct +Nov +Dec +# +# Long month names (as in a date) +# +January +February +March +April +May +June +July +August +September +October +November +December +# +# Short weekday names +# +Sun +Mon +Tue +Wed +Thu +Fri +Sat +# +# Long weekday names +# +Sunday +Monday +Tuesday +Wednesday +Thursday +Friday +Saturday +# +# X_fmt +# +%H:%M:%S +# +# x_fmt +# +%d/%m/%Y +# +# c_fmt +# +%a %e %b %X %Y +# +# am +# +AM +# +# pm +# +PM +# +# date_fmt +# +%a %e %b %Y %X %Z +# +# Long month names (without case ending) +# +January +February +March +April +May +June +July +August +September +October +November +December +# +# md_order +# +dm +# +# ampm_fmt +# +%I:%M:%S %p +# EOF
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/cmd/mklocale/time/data/en_US.src Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,101 @@ +# +# WARNING: spaces may be essential at the end of lines +# WARNING: empty lines are essential too +# +# Short month names +# +Jan +Feb +Mar +Apr +May +Jun +Jul +Aug +Sep +Oct +Nov +Dec +# +# Long month names (as in a date) +# +January +February +March +April +May +June +July +August +September +October +November +December +# +# Short weekday names +# +Sun +Mon +Tue +Wed +Thu +Fri +Sat +# +# Long weekday names +# +Sunday +Monday +Tuesday +Wednesday +Thursday +Friday +Saturday +# +# X_fmt +# +%H:%M:%S +# +# x_fmt +# +%m/%d/%Y +# +# c_fmt +# +%a %b %e %X %Y +# +# am +# +AM +# +# pm +# +PM +# +# date_fmt +# +%a %b %e %X %Z %Y +# +# Long month names (without case ending) +# +January +February +March +April +May +June +July +August +September +October +November +December +# +# md_order +# +md +# +# ampm_fmt +# +%I:%M:%S %p +# EOF
--- a/usr/src/lib/libc/port/locale/collate.c Tue Aug 31 01:26:06 2010 -0400 +++ b/usr/src/lib/libc/port/locale/collate.c Mon Aug 30 23:48:20 2010 -0700 @@ -27,7 +27,6 @@ /* * Copyright 2010 Nexenta Systems, Inc. All rights reserved. - * Use is subject to license terms. */ #include "lint.h" @@ -79,12 +78,9 @@ * Slurp the locale file into the cache. */ - /* 'PathLocale' must be already set & checked. */ - /* Range checking not needed, encoding has fixed size */ - (void) strcpy(buf, _PathLocale); - (void) strcat(buf, "/"); - (void) strcat(buf, encoding); - (void) strcat(buf, "/LC_COLLATE"); + (void) snprintf(buf, sizeof (buf), "%s/%s/LC_COLLATE/LCL_DATA", + _PathLocale, encoding); + if ((fp = fopen(buf, "r")) == NULL) return (_LDP_ERROR);
--- a/usr/src/lib/libc/port/locale/ldpart.c Tue Aug 31 01:26:06 2010 -0400 +++ b/usr/src/lib/libc/port/locale/ldpart.c Mon Aug 30 23:48:20 2010 -0700 @@ -26,7 +26,6 @@ /* * Copyright 2010 Nexenta Systems, Inc. All rights reserved. - * Use is subject to license terms. */ #include "lint.h" @@ -39,6 +38,7 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <stdio.h> #include "ldpart.h" #include "setlocale.h" @@ -79,12 +79,9 @@ /* 'PathLocale' must be already set & checked. */ - /* Range checking not needed, 'name' size is limited */ - (void) strcpy(filename, _PathLocale); - (void) strcat(filename, "/"); - (void) strcat(filename, name); - (void) strcat(filename, "/"); - (void) strcat(filename, category_filename); + (void) snprintf(filename, sizeof (filename), "%s/%s/%s/LCL_DATA", + _PathLocale, name, category_filename); + if ((fd = open(filename, O_RDONLY)) < 0) return (_LDP_ERROR); if (fstat(fd, &st) != 0)
--- a/usr/src/lib/libc/port/locale/setlocale.c Tue Aug 31 01:26:06 2010 -0400 +++ b/usr/src/lib/libc/port/locale/setlocale.c Mon Aug 30 23:48:20 2010 -0700 @@ -33,7 +33,6 @@ /* * Copyright 2010 Nexenta Systems, Inc. All rights reserved. - * Use is subject to license terms. */ #include "lint.h"
--- a/usr/src/lib/libc/port/locale/setrunelocale.c Tue Aug 31 01:26:06 2010 -0400 +++ b/usr/src/lib/libc/port/locale/setrunelocale.c Mon Aug 30 23:48:20 2010 -0700 @@ -32,7 +32,6 @@ /* * Copyright 2010 Nexenta Systems, Inc. All rights reserved. - * Use is subject to license terms. */ #include "lint.h" @@ -112,11 +111,8 @@ * Slurp the locale file into the cache. */ - /* Range checking not needed, encoding length already checked before */ - (void) strcpy(name, _PathLocale); - (void) strcat(name, "/"); - (void) strcat(name, encoding); - (void) strcat(name, "/LC_CTYPE"); + (void) snprintf(name, sizeof (name), "%s/%s/LC_CTYPE/LCL_DATA", + _PathLocale, encoding); if ((fp = fopen(name, "r")) == NULL) return (errno == 0 ? ENOENT : errno);
--- a/usr/src/pkg/manifests/SUNWcs.mf Tue Aug 31 01:26:06 2010 -0400 +++ b/usr/src/pkg/manifests/SUNWcs.mf Mon Aug 30 23:48:20 2010 -0700 @@ -199,9 +199,6 @@ dir path=usr/lib/locale/C/LC_MONETARY dir path=usr/lib/locale/C/LC_NUMERIC dir path=usr/lib/locale/C/LC_TIME -dir path=usr/lib/localedef -dir path=usr/lib/localedef/extensions -dir path=usr/lib/localedef/src dir path=usr/lib/netsvc group=sys dir path=usr/lib/pci dir path=usr/lib/rcm @@ -816,7 +813,6 @@ file path=usr/bin/listdgrp mode=0555 file path=usr/bin/listusers mode=0555 file path=usr/bin/loadkeys mode=0555 -file path=usr/bin/localedef mode=0555 file path=usr/bin/logger mode=0555 file path=usr/bin/login mode=4555 file path=usr/bin/logins mode=0750
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/pkg/manifests/locale-en.mf Mon Aug 30 23:48:20 2010 -0700 @@ -0,0 +1,297 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL)". You may +# only use this file in accordance with the terms of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy is of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2010 Nexenta Systems, Inc. All rights reserved. +# + +set name=pkg.fmri value=pkg:/locale/en@$(PKGVERS) +set name=pkg.description value="localization definitions for English locales" +set name=pkg.summary value="English Locales" +set name=info.classification \ + value=org.opensolaris.category.2008:System/Localizations +set name=variant.arch value=$(ARCH) +dir path=usr group=sys +dir path=usr/lib +dir path=usr/lib/locale +dir path=usr/lib/locale/en_AU.ISO8859-1 +dir path=usr/lib/locale/en_AU.ISO8859-1/LC_COLLATE +dir path=usr/lib/locale/en_AU.ISO8859-1/LC_CTYPE +dir path=usr/lib/locale/en_AU.ISO8859-1/LC_MESSAGES +dir path=usr/lib/locale/en_AU.ISO8859-1/LC_MONETARY +dir path=usr/lib/locale/en_AU.ISO8859-1/LC_NUMERIC +dir path=usr/lib/locale/en_AU.ISO8859-1/LC_TIME +dir path=usr/lib/locale/en_AU.ISO8859-15 +dir path=usr/lib/locale/en_AU.ISO8859-15/LC_COLLATE +dir path=usr/lib/locale/en_AU.ISO8859-15/LC_CTYPE +dir path=usr/lib/locale/en_AU.ISO8859-15/LC_MESSAGES +dir path=usr/lib/locale/en_AU.ISO8859-15/LC_MONETARY +dir path=usr/lib/locale/en_AU.ISO8859-15/LC_NUMERIC +dir path=usr/lib/locale/en_AU.ISO8859-15/LC_TIME +dir path=usr/lib/locale/en_AU.US-ASCII +dir path=usr/lib/locale/en_AU.US-ASCII/LC_COLLATE +dir path=usr/lib/locale/en_AU.US-ASCII/LC_CTYPE +dir path=usr/lib/locale/en_AU.US-ASCII/LC_MESSAGES +dir path=usr/lib/locale/en_AU.US-ASCII/LC_MONETARY +dir path=usr/lib/locale/en_AU.US-ASCII/LC_NUMERIC +dir path=usr/lib/locale/en_AU.US-ASCII/LC_TIME +dir path=usr/lib/locale/en_AU.UTF-8 +dir path=usr/lib/locale/en_AU.UTF-8/LC_COLLATE +dir path=usr/lib/locale/en_AU.UTF-8/LC_CTYPE +dir path=usr/lib/locale/en_AU.UTF-8/LC_MESSAGES +dir path=usr/lib/locale/en_AU.UTF-8/LC_MONETARY +dir path=usr/lib/locale/en_AU.UTF-8/LC_NUMERIC +dir path=usr/lib/locale/en_AU.UTF-8/LC_TIME +dir path=usr/lib/locale/en_CA.ISO8859-1 +dir path=usr/lib/locale/en_CA.ISO8859-1/LC_COLLATE +dir path=usr/lib/locale/en_CA.ISO8859-1/LC_CTYPE +dir path=usr/lib/locale/en_CA.ISO8859-1/LC_MESSAGES +dir path=usr/lib/locale/en_CA.ISO8859-1/LC_MONETARY +dir path=usr/lib/locale/en_CA.ISO8859-1/LC_NUMERIC +dir path=usr/lib/locale/en_CA.ISO8859-1/LC_TIME +dir path=usr/lib/locale/en_CA.ISO8859-15 +dir path=usr/lib/locale/en_CA.ISO8859-15/LC_COLLATE +dir path=usr/lib/locale/en_CA.ISO8859-15/LC_CTYPE +dir path=usr/lib/locale/en_CA.ISO8859-15/LC_MESSAGES +dir path=usr/lib/locale/en_CA.ISO8859-15/LC_MONETARY +dir path=usr/lib/locale/en_CA.ISO8859-15/LC_NUMERIC +dir path=usr/lib/locale/en_CA.ISO8859-15/LC_TIME +dir path=usr/lib/locale/en_CA.US-ASCII +dir path=usr/lib/locale/en_CA.US-ASCII/LC_COLLATE +dir path=usr/lib/locale/en_CA.US-ASCII/LC_CTYPE +dir path=usr/lib/locale/en_CA.US-ASCII/LC_MESSAGES +dir path=usr/lib/locale/en_CA.US-ASCII/LC_MONETARY +dir path=usr/lib/locale/en_CA.US-ASCII/LC_NUMERIC +dir path=usr/lib/locale/en_CA.US-ASCII/LC_TIME +dir path=usr/lib/locale/en_CA.UTF-8 +dir path=usr/lib/locale/en_CA.UTF-8/LC_COLLATE +dir path=usr/lib/locale/en_CA.UTF-8/LC_CTYPE +dir path=usr/lib/locale/en_CA.UTF-8/LC_MESSAGES +dir path=usr/lib/locale/en_CA.UTF-8/LC_MONETARY +dir path=usr/lib/locale/en_CA.UTF-8/LC_NUMERIC +dir path=usr/lib/locale/en_CA.UTF-8/LC_TIME +dir path=usr/lib/locale/en_GB.ISO8859-1 +dir path=usr/lib/locale/en_GB.ISO8859-1/LC_COLLATE +dir path=usr/lib/locale/en_GB.ISO8859-1/LC_CTYPE +dir path=usr/lib/locale/en_GB.ISO8859-1/LC_MESSAGES +dir path=usr/lib/locale/en_GB.ISO8859-1/LC_MONETARY +dir path=usr/lib/locale/en_GB.ISO8859-1/LC_NUMERIC +dir path=usr/lib/locale/en_GB.ISO8859-1/LC_TIME +dir path=usr/lib/locale/en_GB.ISO8859-15 +dir path=usr/lib/locale/en_GB.ISO8859-15/LC_COLLATE +dir path=usr/lib/locale/en_GB.ISO8859-15/LC_CTYPE +dir path=usr/lib/locale/en_GB.ISO8859-15/LC_MESSAGES +dir path=usr/lib/locale/en_GB.ISO8859-15/LC_MONETARY +dir path=usr/lib/locale/en_GB.ISO8859-15/LC_NUMERIC +dir path=usr/lib/locale/en_GB.ISO8859-15/LC_TIME +dir path=usr/lib/locale/en_GB.US-ASCII +dir path=usr/lib/locale/en_GB.US-ASCII/LC_COLLATE +dir path=usr/lib/locale/en_GB.US-ASCII/LC_CTYPE +dir path=usr/lib/locale/en_GB.US-ASCII/LC_MESSAGES +dir path=usr/lib/locale/en_GB.US-ASCII/LC_MONETARY +dir path=usr/lib/locale/en_GB.US-ASCII/LC_NUMERIC +dir path=usr/lib/locale/en_GB.US-ASCII/LC_TIME +dir path=usr/lib/locale/en_GB.UTF-8 +dir path=usr/lib/locale/en_GB.UTF-8/LC_COLLATE +dir path=usr/lib/locale/en_GB.UTF-8/LC_CTYPE +dir path=usr/lib/locale/en_GB.UTF-8/LC_MESSAGES +dir path=usr/lib/locale/en_GB.UTF-8/LC_MONETARY +dir path=usr/lib/locale/en_GB.UTF-8/LC_NUMERIC +dir path=usr/lib/locale/en_GB.UTF-8/LC_TIME +dir path=usr/lib/locale/en_IE.UTF-8 +dir path=usr/lib/locale/en_IE.UTF-8/LC_COLLATE +dir path=usr/lib/locale/en_IE.UTF-8/LC_CTYPE +dir path=usr/lib/locale/en_IE.UTF-8/LC_MESSAGES +dir path=usr/lib/locale/en_IE.UTF-8/LC_MONETARY +dir path=usr/lib/locale/en_IE.UTF-8/LC_NUMERIC +dir path=usr/lib/locale/en_IE.UTF-8/LC_TIME +dir path=usr/lib/locale/en_NZ.ISO8859-1 +dir path=usr/lib/locale/en_NZ.ISO8859-1/LC_COLLATE +dir path=usr/lib/locale/en_NZ.ISO8859-1/LC_CTYPE +dir path=usr/lib/locale/en_NZ.ISO8859-1/LC_MESSAGES +dir path=usr/lib/locale/en_NZ.ISO8859-1/LC_MONETARY +dir path=usr/lib/locale/en_NZ.ISO8859-1/LC_NUMERIC +dir path=usr/lib/locale/en_NZ.ISO8859-1/LC_TIME +dir path=usr/lib/locale/en_NZ.ISO8859-15 +dir path=usr/lib/locale/en_NZ.ISO8859-15/LC_COLLATE +dir path=usr/lib/locale/en_NZ.ISO8859-15/LC_CTYPE +dir path=usr/lib/locale/en_NZ.ISO8859-15/LC_MESSAGES +dir path=usr/lib/locale/en_NZ.ISO8859-15/LC_MONETARY +dir path=usr/lib/locale/en_NZ.ISO8859-15/LC_NUMERIC +dir path=usr/lib/locale/en_NZ.ISO8859-15/LC_TIME +dir path=usr/lib/locale/en_NZ.US-ASCII +dir path=usr/lib/locale/en_NZ.US-ASCII/LC_COLLATE +dir path=usr/lib/locale/en_NZ.US-ASCII/LC_CTYPE +dir path=usr/lib/locale/en_NZ.US-ASCII/LC_MESSAGES +dir path=usr/lib/locale/en_NZ.US-ASCII/LC_MONETARY +dir path=usr/lib/locale/en_NZ.US-ASCII/LC_NUMERIC +dir path=usr/lib/locale/en_NZ.US-ASCII/LC_TIME +dir path=usr/lib/locale/en_NZ.UTF-8 +dir path=usr/lib/locale/en_NZ.UTF-8/LC_COLLATE +dir path=usr/lib/locale/en_NZ.UTF-8/LC_CTYPE +dir path=usr/lib/locale/en_NZ.UTF-8/LC_MESSAGES +dir path=usr/lib/locale/en_NZ.UTF-8/LC_MONETARY +dir path=usr/lib/locale/en_NZ.UTF-8/LC_NUMERIC +dir path=usr/lib/locale/en_NZ.UTF-8/LC_TIME +dir path=usr/lib/locale/en_US.ISO8859-1 +dir path=usr/lib/locale/en_US.ISO8859-1/LC_COLLATE +dir path=usr/lib/locale/en_US.ISO8859-1/LC_CTYPE +dir path=usr/lib/locale/en_US.ISO8859-1/LC_MESSAGES +dir path=usr/lib/locale/en_US.ISO8859-1/LC_MONETARY +dir path=usr/lib/locale/en_US.ISO8859-1/LC_NUMERIC +dir path=usr/lib/locale/en_US.ISO8859-1/LC_TIME +dir path=usr/lib/locale/en_US.ISO8859-15 +dir path=usr/lib/locale/en_US.ISO8859-15/LC_COLLATE +dir path=usr/lib/locale/en_US.ISO8859-15/LC_CTYPE +dir path=usr/lib/locale/en_US.ISO8859-15/LC_MESSAGES +dir path=usr/lib/locale/en_US.ISO8859-15/LC_MONETARY +dir path=usr/lib/locale/en_US.ISO8859-15/LC_NUMERIC +dir path=usr/lib/locale/en_US.ISO8859-15/LC_TIME +dir path=usr/lib/locale/en_US.US-ASCII +dir path=usr/lib/locale/en_US.US-ASCII/LC_COLLATE +dir path=usr/lib/locale/en_US.US-ASCII/LC_CTYPE +dir path=usr/lib/locale/en_US.US-ASCII/LC_MESSAGES +dir path=usr/lib/locale/en_US.US-ASCII/LC_MONETARY +dir path=usr/lib/locale/en_US.US-ASCII/LC_NUMERIC +dir path=usr/lib/locale/en_US.US-ASCII/LC_TIME +dir path=usr/lib/locale/en_US.UTF-8 +dir path=usr/lib/locale/en_US.UTF-8/LC_COLLATE +dir path=usr/lib/locale/en_US.UTF-8/LC_CTYPE +dir path=usr/lib/locale/en_US.UTF-8/LC_MESSAGES +dir path=usr/lib/locale/en_US.UTF-8/LC_MONETARY +dir path=usr/lib/locale/en_US.UTF-8/LC_NUMERIC +dir path=usr/lib/locale/en_US.UTF-8/LC_TIME +file path=usr/lib/locale/en_AU.ISO8859-1/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-1/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-1/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-1/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-1/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-1/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-15/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-15/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-15/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-15/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-15/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.ISO8859-15/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.US-ASCII/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.US-ASCII/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.US-ASCII/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.US-ASCII/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.US-ASCII/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.US-ASCII/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.UTF-8/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.UTF-8/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.UTF-8/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.UTF-8/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.UTF-8/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_AU.UTF-8/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-1/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-1/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-1/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-1/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-1/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-1/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-15/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-15/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-15/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-15/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-15/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.ISO8859-15/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.US-ASCII/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.US-ASCII/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.US-ASCII/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.US-ASCII/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.US-ASCII/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.US-ASCII/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.UTF-8/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.UTF-8/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.UTF-8/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.UTF-8/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.UTF-8/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_CA.UTF-8/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-1/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-1/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-1/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-1/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-1/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-1/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-15/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-15/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-15/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-15/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-15/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.ISO8859-15/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.US-ASCII/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.US-ASCII/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.US-ASCII/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.US-ASCII/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.US-ASCII/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.US-ASCII/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.UTF-8/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.UTF-8/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.UTF-8/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.UTF-8/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.UTF-8/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_GB.UTF-8/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_IE.UTF-8/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_IE.UTF-8/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_IE.UTF-8/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_IE.UTF-8/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_IE.UTF-8/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_IE.UTF-8/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-1/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-1/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-1/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-1/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-1/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-1/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-15/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-15/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-15/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-15/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-15/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.ISO8859-15/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.US-ASCII/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.US-ASCII/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.US-ASCII/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.US-ASCII/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.US-ASCII/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.US-ASCII/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.UTF-8/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.UTF-8/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.UTF-8/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.UTF-8/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.UTF-8/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_NZ.UTF-8/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-1/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-1/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-1/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-1/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-1/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-1/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-15/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-15/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-15/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-15/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-15/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.ISO8859-15/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.US-ASCII/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.US-ASCII/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.US-ASCII/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.US-ASCII/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.US-ASCII/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.US-ASCII/LC_TIME/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.UTF-8/LC_COLLATE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.UTF-8/LC_CTYPE/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.UTF-8/LC_MESSAGES/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.UTF-8/LC_MONETARY/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.UTF-8/LC_NUMERIC/LCL_DATA mode=0444 +file path=usr/lib/locale/en_US.UTF-8/LC_TIME/LCL_DATA mode=0444 +license lic_CDDL license=lic_CDDL
--- a/usr/src/pkg/manifests/text-locale.mf Tue Aug 31 01:26:06 2010 -0400 +++ b/usr/src/pkg/manifests/text-locale.mf Mon Aug 30 23:48:20 2010 -0700 @@ -38,13 +38,6 @@ dir path=usr/lib/iconv/geniconvtbl dir path=usr/lib/iconv/geniconvtbl/binarytables dir path=usr/lib/iconv/geniconvtbl/srcs -dir path=usr/lib/locale -dir path=usr/lib/locale/iso_8859_1 -dir path=usr/lib/locale/iso_8859_1/$(ARCH64) -dir path=usr/lib/locale/iso_8859_1/LC_CTYPE -dir path=usr/lib/localedef -dir path=usr/lib/localedef/src -dir path=usr/lib/localedef/src/iso_8859_1 file path=usr/bin/gencat mode=0555 file path=usr/bin/genmsg mode=0555 file path=usr/bin/gettxt mode=0555 @@ -66,11 +59,6 @@ file path=usr/lib/iconv/geniconvtbl/srcs/ISO8859-1_to_UTF-8.src mode=0444 file path=usr/lib/iconv/geniconvtbl/srcs/UTF-8_to_ISO8859-1.src mode=0444 file path=usr/lib/iconv/geniconvtbl/srcs/eucJP_to_ISO-2022-JP.src mode=0444 -file path=usr/lib/locale/iso_8859_1/$(ARCH64)/iso_8859_1.so.3 mode=0555 -file path=usr/lib/locale/iso_8859_1/iso_8859_1.so.3 mode=0555 -file path=usr/lib/localedef/src/iso_8859_1/charmap.src mode=0444 -file path=usr/lib/localedef/src/iso_8859_1/extension.src mode=0444 -file path=usr/lib/localedef/src/iso_8859_1/localedef.src mode=0444 legacy pkg=SUNWloc \ desc="localization utilities and C locale (POSIX default) definitions" \ name="System Localization"