Index: share/locale/ctype/Makefile =================================================================== RCS file: /home/cvs/NetBSD/src/share/locale/ctype/Makefile,v retrieving revision 1.9 diff -u -r1.9 Makefile --- share/locale/ctype/Makefile 18 Sep 2002 03:02:12 -0000 1.9 +++ share/locale/ctype/Makefile 21 Mar 2003 13:41:47 -0000 @@ -9,6 +9,10 @@ FILESGRP= ${LOCALEGRP} FILESMODE= ${LOCALEMODE} +LOCALES += zh_CN.GB18030 + LOCALESRC_zh_CN.GB18030 = zh_CN.GB18030 + ALIASES_zh_CN.GB18030+= + LOCALES += da_DK.ISO8859-1 LOCALESRC_da_DK.ISO8859-1 = en_US.ISO_8859-1 ALIASES_da_DK.ISO8859-1+= Index: share/locale/ctype/zh_CN.GB18030.src =================================================================== RCS file: share/locale/ctype/zh_CN.GB18030.src diff -N share/locale/ctype/zh_CN.GB18030.src --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ share/locale/ctype/zh_CN.GB18030.src 21 Mar 2003 13:40:54 -0000 @@ -0,0 +1,519 @@ +/* $NetBSD$ */ + +/*- + * Copyright (c) 1998, Luoqi Chen + * 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 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 AUTHOR 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. + * + * NetBSD: zh_CN.eucCN.src,v 1.2 2001/03/26 19:56:37 tshiozak Exp + * FreeBSD: src/usr.bin/mklocale/data/zh_CN.EUC.src,v 1.2.2.1 1999/08/29 15:31:06 peter Exp + */ + +ENCODING "GBK2K" +VARIABLE CODESET=GB18030 + +/* + * ASCII + */ +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 +SWIDTH1 0x20 - 0x7e + +MAPLOWER < 'A' - 'Z' : 'a' > < 'a' - 'z' : 'a' > +MAPUPPER < 'A' - 'Z' : 'A' > < 'a' - 'z' : 'A' > +TODIGIT < '0' - '9' : 0 > +TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 > + +/* + * GB2312 + */ +SPACE 0xa1a1 +BLANK 0xa1a1 +PUNCT 0xa1a2 - 0xa1fe +SWIDTH2 0xa1a1 - 0xa1fe + +DIGIT 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc +SWIDTH2 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc + +TODIGIT < 0xa2b1 - 0xa2c4 : 0 > +TODIGIT < 0xa2c5 - 0xa2d8 : 0 > +TODIGIT < 0xa2d9 - 0xa2e2 : 0 > +TODIGIT < 0xa2e5 - 0xa2ee : 0 > +TODIGIT < 0xa2f1 - 0xa2fc : 0 > + +ALPHA 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa +SWIDTH2 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa +DIGIT 0xa3b0 - 0xa3b9 +SWIDTH2 0xa3b0 - 0xa3b9 +UPPER 0xa3c1 - 0xa3da +LOWER 0xa3e1 - 0xa3fa +PUNCT 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe +SWIDTH2 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe +XDIGIT 0xa3b0 - 0xa3b9 0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6 + +MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > < 0xa3e1 - 0xa3fa : 0xa3e1 > +MAPUPPER < 0xa3c1 - 0xa3da : 0xa3c1 > < 0xa3b0 - 0xa3b9 : 0xa3c1 > +TODIGIT < 0xa3b0 - 0xa3b9 : 0 > +TODIGIT < 0xa3c1 - 0xa3c6 : 10 > < 0xa3e1 - 0xa3e6 : 10 > + +PHONOGRAM 0xa4a1 - 0xa4f3 /* Hiragana */ +PHONOGRAM 0xa5a1 - 0xa5f6 /* Katakana */ +SWIDTH2 0xa4a1 - 0xa4f3 /* Hiragana */ +SWIDTH2 0xa5a1 - 0xa5f6 /* Katakana */ + +UPPER 0xa6a1 - 0xa6b8 /* Greek */ +LOWER 0xa6c1 - 0xa6d8 /* Greek */ +SWIDTH2 0xa6a1 - 0xa6b8 /* Greek */ +SWIDTH2 0xa6c1 - 0xa6d8 /* Greek */ +MAPLOWER < 0xa6a1 - 0xa6b8 : 0xa6c1 > < 0xa6c1 - 0xa6d8 : 0xa6c1 > +MAPUPPER < 0xa6a1 - 0xa6b8 : 0xa6a1 > < 0xa6c1 - 0xa6d8 : 0xa6a1 > + +UPPER 0xa7a1 - 0xa7c1 /* Cyrillic */ +LOWER 0xa7d1 - 0xa7f1 /* Cyrillic */ +SWIDTH2 0xa7a1 - 0xa7c1 /* Cyrillic */ +SWIDTH2 0xa7d1 - 0xa7f1 /* Cyrillic */ +MAPLOWER < 0xa7a1 - 0xa7c1 : 0xa7d1 > < 0xa7d1 - 0xa7f1 : 0xa7d1 > +MAPUPPER < 0xa7a1 - 0xa7c1 : 0xa7a1 > < 0xa7d1 - 0xa7f1 : 0xa7a1 > + +SPECIAL 0xa8a1 - 0xa8ba +SWIDTH2 0xa8a1 - 0xa8ba +PHONOGRAM 0xa8c5 - 0xa8e9 /* Pin yin */ +SWIDTH2 0xa8c5 - 0xa8e9 /* Pin yin */ +SPECIAL 0xa9a4 - 0xa9ef /* Box drawings */ +SWIDTH2 0xa9a4 - 0xa9ef /* Box drawings */ + +IDEOGRAM 0xb0a1 - 0xb0fe +IDEOGRAM 0xb1a1 - 0xb1fe +IDEOGRAM 0xb2a1 - 0xb2fe +IDEOGRAM 0xb3a1 - 0xb3fe +IDEOGRAM 0xb4a1 - 0xb4fe +IDEOGRAM 0xb5a1 - 0xb5fe +IDEOGRAM 0xb6a1 - 0xb6fe +IDEOGRAM 0xb7a1 - 0xb7fe +IDEOGRAM 0xb8a1 - 0xb8fe +IDEOGRAM 0xb9a1 - 0xb9fe +IDEOGRAM 0xbaa1 - 0xbafe +IDEOGRAM 0xbba1 - 0xbbfe +IDEOGRAM 0xbca1 - 0xbcfe +IDEOGRAM 0xbda1 - 0xbdfe +IDEOGRAM 0xbea1 - 0xbefe +IDEOGRAM 0xbfa1 - 0xbffe +IDEOGRAM 0xc0a1 - 0xc0fe +IDEOGRAM 0xc1a1 - 0xc1fe +IDEOGRAM 0xc2a1 - 0xc2fe +IDEOGRAM 0xc3a1 - 0xc3fe +IDEOGRAM 0xc4a1 - 0xc4fe +IDEOGRAM 0xc5a1 - 0xc5fe +IDEOGRAM 0xc6a1 - 0xc6fe +IDEOGRAM 0xc7a1 - 0xc7fe +IDEOGRAM 0xc8a1 - 0xc8fe +IDEOGRAM 0xc9a1 - 0xc9fe +IDEOGRAM 0xcaa1 - 0xcafe +IDEOGRAM 0xcba1 - 0xcbfe +IDEOGRAM 0xcca1 - 0xccfe +IDEOGRAM 0xcda1 - 0xcdfe +IDEOGRAM 0xcea1 - 0xcefe +IDEOGRAM 0xcfa1 - 0xcfd3 +IDEOGRAM 0xd0a1 - 0xd0fe +IDEOGRAM 0xd1a1 - 0xd1fe +IDEOGRAM 0xd2a1 - 0xd2fe +IDEOGRAM 0xd3a1 - 0xd3fe +IDEOGRAM 0xd4a1 - 0xd4fe +IDEOGRAM 0xd5a1 - 0xd5fe +IDEOGRAM 0xd6a1 - 0xd6fe +IDEOGRAM 0xd7a1 - 0xd7fe +IDEOGRAM 0xd8a1 - 0xd8fe +IDEOGRAM 0xd9a1 - 0xd9fe +IDEOGRAM 0xdaa1 - 0xdafe +IDEOGRAM 0xdba1 - 0xdbfe +IDEOGRAM 0xdca1 - 0xdcfe +IDEOGRAM 0xdda1 - 0xddfe +IDEOGRAM 0xdea1 - 0xdefe +IDEOGRAM 0xdfa1 - 0xdffe +IDEOGRAM 0xe0a1 - 0xe0fe +IDEOGRAM 0xe1a1 - 0xe1fe +IDEOGRAM 0xe2a1 - 0xe2fe +IDEOGRAM 0xe3a1 - 0xe3fe +IDEOGRAM 0xe4a1 - 0xe4fe +IDEOGRAM 0xe5a1 - 0xe5fe +IDEOGRAM 0xe6a1 - 0xe6fe +IDEOGRAM 0xe7a1 - 0xe7fe +IDEOGRAM 0xe8a1 - 0xe8fe +IDEOGRAM 0xe9a1 - 0xe9fe +IDEOGRAM 0xeaa1 - 0xeafe +IDEOGRAM 0xeba1 - 0xebfe +IDEOGRAM 0xeca1 - 0xecfe +IDEOGRAM 0xeda1 - 0xedfe +IDEOGRAM 0xeea1 - 0xeefe +IDEOGRAM 0xefa1 - 0xeffe +IDEOGRAM 0xf0a1 - 0xf0fe +IDEOGRAM 0xf1a1 - 0xf1fe +IDEOGRAM 0xf2a1 - 0xf2fe +IDEOGRAM 0xf3a1 - 0xf3fe +IDEOGRAM 0xf4a1 - 0xf4fe +IDEOGRAM 0xf5a1 - 0xf5fe +IDEOGRAM 0xf6a1 - 0xf6fe +IDEOGRAM 0xf7a1 - 0xf7fe + +SWIDTH2 0xb0a1 - 0xb0fe +SWIDTH2 0xb1a1 - 0xb1fe +SWIDTH2 0xb2a1 - 0xb2fe +SWIDTH2 0xb3a1 - 0xb3fe +SWIDTH2 0xb4a1 - 0xb4fe +SWIDTH2 0xb5a1 - 0xb5fe +SWIDTH2 0xb6a1 - 0xb6fe +SWIDTH2 0xb7a1 - 0xb7fe +SWIDTH2 0xb8a1 - 0xb8fe +SWIDTH2 0xb9a1 - 0xb9fe +SWIDTH2 0xbaa1 - 0xbafe +SWIDTH2 0xbba1 - 0xbbfe +SWIDTH2 0xbca1 - 0xbcfe +SWIDTH2 0xbda1 - 0xbdfe +SWIDTH2 0xbea1 - 0xbefe +SWIDTH2 0xbfa1 - 0xbffe +SWIDTH2 0xc0a1 - 0xc0fe +SWIDTH2 0xc1a1 - 0xc1fe +SWIDTH2 0xc2a1 - 0xc2fe +SWIDTH2 0xc3a1 - 0xc3fe +SWIDTH2 0xc4a1 - 0xc4fe +SWIDTH2 0xc5a1 - 0xc5fe +SWIDTH2 0xc6a1 - 0xc6fe +SWIDTH2 0xc7a1 - 0xc7fe +SWIDTH2 0xc8a1 - 0xc8fe +SWIDTH2 0xc9a1 - 0xc9fe +SWIDTH2 0xcaa1 - 0xcafe +SWIDTH2 0xcba1 - 0xcbfe +SWIDTH2 0xcca1 - 0xccfe +SWIDTH2 0xcda1 - 0xcdfe +SWIDTH2 0xcea1 - 0xcefe +SWIDTH2 0xcfa1 - 0xcfd3 +SWIDTH2 0xd0a1 - 0xd0fe +SWIDTH2 0xd1a1 - 0xd1fe +SWIDTH2 0xd2a1 - 0xd2fe +SWIDTH2 0xd3a1 - 0xd3fe +SWIDTH2 0xd4a1 - 0xd4fe +SWIDTH2 0xd5a1 - 0xd5fe +SWIDTH2 0xd6a1 - 0xd6fe +SWIDTH2 0xd7a1 - 0xd7fe +SWIDTH2 0xd8a1 - 0xd8fe +SWIDTH2 0xd9a1 - 0xd9fe +SWIDTH2 0xdaa1 - 0xdafe +SWIDTH2 0xdba1 - 0xdbfe +SWIDTH2 0xdca1 - 0xdcfe +SWIDTH2 0xdda1 - 0xddfe +SWIDTH2 0xdea1 - 0xdefe +SWIDTH2 0xdfa1 - 0xdffe +SWIDTH2 0xe0a1 - 0xe0fe +SWIDTH2 0xe1a1 - 0xe1fe +SWIDTH2 0xe2a1 - 0xe2fe +SWIDTH2 0xe3a1 - 0xe3fe +SWIDTH2 0xe4a1 - 0xe4fe +SWIDTH2 0xe5a1 - 0xe5fe +SWIDTH2 0xe6a1 - 0xe6fe +SWIDTH2 0xe7a1 - 0xe7fe +SWIDTH2 0xe8a1 - 0xe8fe +SWIDTH2 0xe9a1 - 0xe9fe +SWIDTH2 0xeaa1 - 0xeafe +SWIDTH2 0xeba1 - 0xebfe +SWIDTH2 0xeca1 - 0xecfe +SWIDTH2 0xeda1 - 0xedfe +SWIDTH2 0xeea1 - 0xeefe +SWIDTH2 0xefa1 - 0xeffe +SWIDTH2 0xf0a1 - 0xf0fe +SWIDTH2 0xf1a1 - 0xf1fe +SWIDTH2 0xf2a1 - 0xf2fe +SWIDTH2 0xf3a1 - 0xf3fe +SWIDTH2 0xf4a1 - 0xf4fe +SWIDTH2 0xf5a1 - 0xf5fe +SWIDTH2 0xf6a1 - 0xf6fe +SWIDTH2 0xf7a1 - 0xf7fe + +/* + * GBK (not enough) + */ +SWIDTH2 0x8140 - 0x81fe +SWIDTH2 0x8240 - 0x82fe +SWIDTH2 0x8340 - 0x83fe +SWIDTH2 0x8440 - 0x84fe +SWIDTH2 0x8540 - 0x85fe +SWIDTH2 0x8640 - 0x86fe +SWIDTH2 0x8740 - 0x87fe +SWIDTH2 0x8840 - 0x88fe +SWIDTH2 0x8940 - 0x89fe +SWIDTH2 0x8a40 - 0x8afe +SWIDTH2 0x8b40 - 0x8bfe +SWIDTH2 0x8c40 - 0x8cfe +SWIDTH2 0x8d40 - 0x8dfe +SWIDTH2 0x8e40 - 0x8efe +SWIDTH2 0x8f40 - 0x8ffe +SWIDTH2 0x9040 - 0x90fe +SWIDTH2 0x9140 - 0x91fe +SWIDTH2 0x9240 - 0x92fe +SWIDTH2 0x9340 - 0x93fe +SWIDTH2 0x9440 - 0x94fe +SWIDTH2 0x9540 - 0x95fe +SWIDTH2 0x9640 - 0x96fe +SWIDTH2 0x9740 - 0x97fe +SWIDTH2 0x9840 - 0x98fe +SWIDTH2 0x9940 - 0x99fe +SWIDTH2 0x9a40 - 0x9afe +SWIDTH2 0x9b40 - 0x9bfe +SWIDTH2 0x9c40 - 0x9cfe +SWIDTH2 0x9d40 - 0x9dfe +SWIDTH2 0x9e40 - 0x9efe +SWIDTH2 0x9f40 - 0x9ffe +SWIDTH2 0xa040 - 0xa0fe +SWIDTH2 0xa140 - 0xa1a0 +SWIDTH2 0xa240 - 0xa2a0 +SWIDTH2 0xa340 - 0xa3a0 +SWIDTH2 0xa440 - 0xa4a0 +SWIDTH2 0xa540 - 0xa5a0 +SWIDTH2 0xa640 - 0xa6a0 +SWIDTH2 0xa740 - 0xa7a0 +SWIDTH2 0xa840 - 0xa8a0 +SWIDTH2 0xa940 - 0xa9a0 +SWIDTH2 0xaa40 - 0xaaa0 +SWIDTH2 0xab40 - 0xaba0 +SWIDTH2 0xac40 - 0xaca0 +SWIDTH2 0xad40 - 0xada0 +SWIDTH2 0xae40 - 0xaea0 +SWIDTH2 0xaf40 - 0xafa0 +SWIDTH2 0xb040 - 0xb0a0 +SWIDTH2 0xb140 - 0xb1a0 +SWIDTH2 0xb240 - 0xb2a0 +SWIDTH2 0xb340 - 0xb3a0 +SWIDTH2 0xb440 - 0xb4a0 +SWIDTH2 0xb540 - 0xb5a0 +SWIDTH2 0xb640 - 0xb6a0 +SWIDTH2 0xb740 - 0xb7a0 +SWIDTH2 0xb840 - 0xb8a0 +SWIDTH2 0xb940 - 0xb9a0 +SWIDTH2 0xba40 - 0xbaa0 +SWIDTH2 0xbb40 - 0xbba0 +SWIDTH2 0xbc40 - 0xbca0 +SWIDTH2 0xbd40 - 0xbda0 +SWIDTH2 0xbe40 - 0xbea0 +SWIDTH2 0xbf40 - 0xbfa0 +SWIDTH2 0xc040 - 0xc0a0 +SWIDTH2 0xc140 - 0xc1a0 +SWIDTH2 0xc240 - 0xc2a0 +SWIDTH2 0xc340 - 0xc3a0 +SWIDTH2 0xc440 - 0xc4a0 +SWIDTH2 0xc540 - 0xc5a0 +SWIDTH2 0xc640 - 0xc6a0 +SWIDTH2 0xc740 - 0xc7a0 +SWIDTH2 0xc840 - 0xc8a0 +SWIDTH2 0xc940 - 0xc9a0 +SWIDTH2 0xca40 - 0xcaa0 +SWIDTH2 0xcb40 - 0xcba0 +SWIDTH2 0xcc40 - 0xcca0 +SWIDTH2 0xcd40 - 0xcda0 +SWIDTH2 0xce40 - 0xcea0 +SWIDTH2 0xcf40 - 0xcfa0 +SWIDTH2 0xd040 - 0xd0a0 +SWIDTH2 0xd140 - 0xd1a0 +SWIDTH2 0xd240 - 0xd2a0 +SWIDTH2 0xd340 - 0xd3a0 +SWIDTH2 0xd440 - 0xd4a0 +SWIDTH2 0xd540 - 0xd5a0 +SWIDTH2 0xd640 - 0xd6a0 +SWIDTH2 0xd740 - 0xd7a0 +SWIDTH2 0xd840 - 0xd8a0 +SWIDTH2 0xd940 - 0xd9a0 +SWIDTH2 0xda40 - 0xdaa0 +SWIDTH2 0xdb40 - 0xdba0 +SWIDTH2 0xdc40 - 0xdca0 +SWIDTH2 0xdd40 - 0xdda0 +SWIDTH2 0xde40 - 0xdea0 +SWIDTH2 0xdf40 - 0xdfa0 +SWIDTH2 0xe040 - 0xe0a0 +SWIDTH2 0xe140 - 0xe1a0 +SWIDTH2 0xe240 - 0xe2a0 +SWIDTH2 0xe340 - 0xe3a0 +SWIDTH2 0xe440 - 0xe4a0 +SWIDTH2 0xe540 - 0xe5a0 +SWIDTH2 0xe640 - 0xe6a0 +SWIDTH2 0xe740 - 0xe7a0 +SWIDTH2 0xe840 - 0xe8a0 +SWIDTH2 0xe940 - 0xe9a0 +SWIDTH2 0xea40 - 0xeaa0 +SWIDTH2 0xeb40 - 0xeba0 +SWIDTH2 0xec40 - 0xeca0 +SWIDTH2 0xed40 - 0xeda0 +SWIDTH2 0xee40 - 0xeea0 +SWIDTH2 0xef40 - 0xefa0 +SWIDTH2 0xf040 - 0xf0a0 +SWIDTH2 0xf140 - 0xf1a0 +SWIDTH2 0xf240 - 0xf2a0 +SWIDTH2 0xf340 - 0xf3a0 +SWIDTH2 0xf440 - 0xf4a0 +SWIDTH2 0xf540 - 0xf5a0 +SWIDTH2 0xf640 - 0xf6a0 +SWIDTH2 0xf740 - 0xf7a0 +SWIDTH2 0xf840 - 0xf8fe +SWIDTH2 0xf940 - 0xf9fe +SWIDTH2 0xfa40 - 0xfafe +SWIDTH2 0xfb40 - 0xfbfe +SWIDTH2 0xfc40 - 0xfcfe +SWIDTH2 0xfd40 - 0xfdfe +SWIDTH2 0xfe40 - 0xfefe + +IDEOGRAM 0x8140 - 0x81fe +IDEOGRAM 0x8240 - 0x82fe +IDEOGRAM 0x8340 - 0x83fe +IDEOGRAM 0x8440 - 0x84fe +IDEOGRAM 0x8540 - 0x85fe +IDEOGRAM 0x8640 - 0x86fe +IDEOGRAM 0x8740 - 0x87fe +IDEOGRAM 0x8840 - 0x88fe +IDEOGRAM 0x8940 - 0x89fe +IDEOGRAM 0x8a40 - 0x8afe +IDEOGRAM 0x8b40 - 0x8bfe +IDEOGRAM 0x8c40 - 0x8cfe +IDEOGRAM 0x8d40 - 0x8dfe +IDEOGRAM 0x8e40 - 0x8efe +IDEOGRAM 0x8f40 - 0x8ffe +IDEOGRAM 0x9040 - 0x90fe +IDEOGRAM 0x9140 - 0x91fe +IDEOGRAM 0x9240 - 0x92fe +IDEOGRAM 0x9340 - 0x93fe +IDEOGRAM 0x9440 - 0x94fe +IDEOGRAM 0x9540 - 0x95fe +IDEOGRAM 0x9640 - 0x96fe +IDEOGRAM 0x9740 - 0x97fe +IDEOGRAM 0x9840 - 0x98fe +IDEOGRAM 0x9940 - 0x99fe +IDEOGRAM 0x9a40 - 0x9afe +IDEOGRAM 0x9b40 - 0x9bfe +IDEOGRAM 0x9c40 - 0x9cfe +IDEOGRAM 0x9d40 - 0x9dfe +IDEOGRAM 0x9e40 - 0x9efe +IDEOGRAM 0x9f40 - 0x9ffe +IDEOGRAM 0xa040 - 0xa0fe +IDEOGRAM 0xa140 - 0xa1a0 +IDEOGRAM 0xa240 - 0xa2a0 +IDEOGRAM 0xa340 - 0xa3a0 +IDEOGRAM 0xa440 - 0xa4a0 +IDEOGRAM 0xa540 - 0xa5a0 +IDEOGRAM 0xa640 - 0xa6a0 +IDEOGRAM 0xa740 - 0xa7a0 +IDEOGRAM 0xa840 - 0xa8a0 +IDEOGRAM 0xa940 - 0xa9a0 +IDEOGRAM 0xaa40 - 0xaaa0 +IDEOGRAM 0xab40 - 0xaba0 +IDEOGRAM 0xac40 - 0xaca0 +IDEOGRAM 0xad40 - 0xada0 +IDEOGRAM 0xae40 - 0xaea0 +IDEOGRAM 0xaf40 - 0xafa0 +IDEOGRAM 0xb040 - 0xb0a0 +IDEOGRAM 0xb140 - 0xb1a0 +IDEOGRAM 0xb240 - 0xb2a0 +IDEOGRAM 0xb340 - 0xb3a0 +IDEOGRAM 0xb440 - 0xb4a0 +IDEOGRAM 0xb540 - 0xb5a0 +IDEOGRAM 0xb640 - 0xb6a0 +IDEOGRAM 0xb740 - 0xb7a0 +IDEOGRAM 0xb840 - 0xb8a0 +IDEOGRAM 0xb940 - 0xb9a0 +IDEOGRAM 0xba40 - 0xbaa0 +IDEOGRAM 0xbb40 - 0xbba0 +IDEOGRAM 0xbc40 - 0xbca0 +IDEOGRAM 0xbd40 - 0xbda0 +IDEOGRAM 0xbe40 - 0xbea0 +IDEOGRAM 0xbf40 - 0xbfa0 +IDEOGRAM 0xc040 - 0xc0a0 +IDEOGRAM 0xc140 - 0xc1a0 +IDEOGRAM 0xc240 - 0xc2a0 +IDEOGRAM 0xc340 - 0xc3a0 +IDEOGRAM 0xc440 - 0xc4a0 +IDEOGRAM 0xc540 - 0xc5a0 +IDEOGRAM 0xc640 - 0xc6a0 +IDEOGRAM 0xc740 - 0xc7a0 +IDEOGRAM 0xc840 - 0xc8a0 +IDEOGRAM 0xc940 - 0xc9a0 +IDEOGRAM 0xca40 - 0xcaa0 +IDEOGRAM 0xcb40 - 0xcba0 +IDEOGRAM 0xcc40 - 0xcca0 +IDEOGRAM 0xcd40 - 0xcda0 +IDEOGRAM 0xce40 - 0xcea0 +IDEOGRAM 0xcf40 - 0xcfa0 +IDEOGRAM 0xd040 - 0xd0a0 +IDEOGRAM 0xd140 - 0xd1a0 +IDEOGRAM 0xd240 - 0xd2a0 +IDEOGRAM 0xd340 - 0xd3a0 +IDEOGRAM 0xd440 - 0xd4a0 +IDEOGRAM 0xd540 - 0xd5a0 +IDEOGRAM 0xd640 - 0xd6a0 +IDEOGRAM 0xd740 - 0xd7a0 +IDEOGRAM 0xd840 - 0xd8a0 +IDEOGRAM 0xd940 - 0xd9a0 +IDEOGRAM 0xda40 - 0xdaa0 +IDEOGRAM 0xdb40 - 0xdba0 +IDEOGRAM 0xdc40 - 0xdca0 +IDEOGRAM 0xdd40 - 0xdda0 +IDEOGRAM 0xde40 - 0xdea0 +IDEOGRAM 0xdf40 - 0xdfa0 +IDEOGRAM 0xe040 - 0xe0a0 +IDEOGRAM 0xe140 - 0xe1a0 +IDEOGRAM 0xe240 - 0xe2a0 +IDEOGRAM 0xe340 - 0xe3a0 +IDEOGRAM 0xe440 - 0xe4a0 +IDEOGRAM 0xe540 - 0xe5a0 +IDEOGRAM 0xe640 - 0xe6a0 +IDEOGRAM 0xe740 - 0xe7a0 +IDEOGRAM 0xe840 - 0xe8a0 +IDEOGRAM 0xe940 - 0xe9a0 +IDEOGRAM 0xea40 - 0xeaa0 +IDEOGRAM 0xeb40 - 0xeba0 +IDEOGRAM 0xec40 - 0xeca0 +IDEOGRAM 0xed40 - 0xeda0 +IDEOGRAM 0xee40 - 0xeea0 +IDEOGRAM 0xef40 - 0xefa0 +IDEOGRAM 0xf040 - 0xf0a0 +IDEOGRAM 0xf140 - 0xf1a0 +IDEOGRAM 0xf240 - 0xf2a0 +IDEOGRAM 0xf340 - 0xf3a0 +IDEOGRAM 0xf440 - 0xf4a0 +IDEOGRAM 0xf540 - 0xf5a0 +IDEOGRAM 0xf640 - 0xf6a0 +IDEOGRAM 0xf740 - 0xf7a0 +IDEOGRAM 0xf840 - 0xf8fe +IDEOGRAM 0xf940 - 0xf9fe +IDEOGRAM 0xfa40 - 0xfafe +IDEOGRAM 0xfb40 - 0xfbfe +IDEOGRAM 0xfc40 - 0xfcfe +IDEOGRAM 0xfd40 - 0xfdfe +IDEOGRAM 0xfe40 - 0xfefe + +/* + * Unicode (to be written...) + */ Index: lib/i18n_module/Makefile =================================================================== RCS file: /home/cvs/NetBSD/src/lib/i18n_module/Makefile,v retrieving revision 1.1 diff -u -r1.1 Makefile --- lib/i18n_module/Makefile 17 Mar 2002 22:14:13 -0000 1.1 +++ lib/i18n_module/Makefile 21 Mar 2003 13:38:52 -0000 @@ -1,5 +1,5 @@ # $NetBSD: Makefile,v 1.1 2002/03/17 22:14:13 tshiozak Exp $ -SUBDIR= BIG5 EUC EUCTW ISO2022 MSKanji UTF8 +SUBDIR= BIG5 EUC EUCTW GBK2K ISO2022 MSKanji UTF8 .include Index: lib/i18n_module/GBK2K/Makefile =================================================================== RCS file: lib/i18n_module/GBK2K/Makefile diff -N lib/i18n_module/GBK2K/Makefile --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lib/i18n_module/GBK2K/Makefile 21 Mar 2003 13:37:10 -0000 @@ -0,0 +1,5 @@ +# $NetBSD$ + +SRCPRE=citrus_ +#CFLAGS+=-g +.include Index: lib/libc/citrus/modules/citrus_gbk2k.c =================================================================== RCS file: lib/libc/citrus/modules/citrus_gbk2k.c diff -N lib/libc/citrus/modules/citrus_gbk2k.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lib/libc/citrus/modules/citrus_gbk2k.c 21 Mar 2003 13:34:00 -0000 @@ -0,0 +1,348 @@ +/* $NetBSD$ */ + +/*- + * Copyright (c)2003 Citrus Project, + * 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 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 AUTHOR 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 +#if defined(LIBC_SCCS) && !defined(lint) +__RCSID("$NetBSD$"); +#endif /* LIBC_SCCS and not lint */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "citrus_module.h" +#include "citrus_ctype.h" +#include "citrus_gbk2k.h" + + +/* ---------------------------------------------------------------------- + * private stuffs used by templates + */ + +typedef struct _GBK2KState { + char ch[4]; + int chlen; +} _GBK2KState; + +typedef struct { + int dummy; +} _GBK2KEncodingInfo; + +typedef struct { + _GBK2KEncodingInfo ei; + struct { + /* for future multi-locale facility */ + _GBK2KState s_mblen; + _GBK2KState s_mbrlen; + _GBK2KState s_mbrtowc; + _GBK2KState s_mbtowc; + _GBK2KState s_mbsrtowcs; + _GBK2KState s_wcrtomb; + _GBK2KState s_wcsrtombs; + _GBK2KState s_wctomb; + } states; +} _GBK2KCTypeInfo; + +#define _CEI_TO_EI(_cei_) (&(_cei_)->ei) +#define _CEI_TO_STATE(_cei_, _func_) (_cei_)->states.s_##_func_ + +#define _FUNCNAME(m) _citrus_GBK2K_##m +#define _ENCODING_INFO _GBK2KEncodingInfo +#define _CTYPE_INFO _GBK2KCTypeInfo +#define _ENCODING_STATE _GBK2KState +#define _ENCODING_MB_CUR_MAX(_ei_) 4 +#define _ENCODING_IS_STATE_DEPENDENT 0 +#define _STATE_NEEDS_EXPLICIT_INIT(_ps_) 0 + +static __inline void +/*ARGSUSED*/ +_citrus_GBK2K_init_state(_GBK2KEncodingInfo * __restrict ei, + _GBK2KState * __restrict s) +{ + memset(s, 0, sizeof(*s)); +} + +static __inline void +/*ARGSUSED*/ +_citrus_GBK2K_pack_state(_GBK2KEncodingInfo * __restrict ei, + void * __restrict pspriv, + const _GBK2KState * __restrict s) +{ + memcpy(pspriv, (const void *)s, sizeof(*s)); +} + +static __inline void +/*ARGSUSED*/ +_citrus_GBK2K_unpack_state(_GBK2KEncodingInfo * __restrict ei, + _GBK2KState * __restrict s, + const void * __restrict pspriv) +{ + memcpy((void *)s, pspriv, sizeof(*s)); +} + +static __inline int +_mb_singlebyte(int c) +{ + c &= 0xff; + return (c <= 0x7f); +} + +static __inline int +_mb_leadbyte(int c) +{ + c &= 0xff; + return (0x81 <= c && c <= 0xfe); +} + +static __inline int +_mb_trailbyte(int c) +{ + c &= 0xff; + return ((0x40 <= c && c <= 0x7e) || (0x80 <= c && c <= 0xfe)); +} + +static __inline int +_mb_surrogate(int c) +{ + c &= 0xff; + return (0x30 <= c && c <= 0x39); +} + +static __inline int +_mb_count(wchar_t v) +{ + u_int32_t c; + + c = (u_int32_t)v; /* XXX */ + if (!(c & 0xffffff00)) + return (1); + if (!(c & 0xffff0000)) + return (2); + return (4); +} + +#define _PSENC (psenc->ch[psenc->chlen - 1]) +#define _PUSH_PSENC(c) (psenc->ch[psenc->chlen++] = (c)) + +static int +_citrus_GBK2K_mbrtowc_priv(_GBK2KEncodingInfo * __restrict ei, + wchar_t * __restrict pwc, + const char ** __restrict s, size_t n, + _GBK2KState * __restrict psenc, + size_t * __restrict nresult) +{ + int chlenbak, len; + const char *s0, *s1; + wchar_t wc; + + _DIAGASSERT(ei != NULL); + /* pwc may be NULL */ + _DIAGASSERT(s != NULL); + _DIAGASSERT(psenc != NULL); + + s0 = *s; + + if (s0 == NULL) { + /* _citrus_GBK2K_init_state(ei, psenc); */ + psenc->chlen = 0; + *nresult = 0; + return (0); + } + + chlenbak = psenc->chlen; + + switch (psenc->chlen) { + case 3: + if (!_mb_leadbyte (_PSENC)) + goto invalid; + /* FALLTHROUGH */ + case 2: + if (!_mb_surrogate(_PSENC) || _mb_trailbyte(_PSENC)) + goto invalid; + /* FALLTHROUGH */ + case 1: + if (!_mb_leadbyte (_PSENC)) + goto invalid; + /* FALLTHOROUGH */ + case 0: + break; + default: + goto invalid; + } + + for (;;) { + if (n-- < 1) + goto restart; + + _PUSH_PSENC(*s0++); + + switch (psenc->chlen) { + case 1: + if (_mb_singlebyte(_PSENC)) + goto convert; + if (_mb_leadbyte (_PSENC)) + continue; + goto ilseq; + case 2: + if (_mb_trailbyte (_PSENC)) + goto convert; + if (_mb_surrogate (_PSENC)) + continue; + goto ilseq; + case 3: + if (_mb_leadbyte (_PSENC)) + continue; + goto ilseq; + case 4: + if (_mb_surrogate (_PSENC)) + goto convert; + goto ilseq; + default: + /* NOT REACHED */ + } + } + +convert: + len = psenc->chlen; + s1 = &psenc->ch[0]; + wc = 0; + while (len-- > 0) + wc = (wc << 8) | (*s1++ & 0xff); + + if (pwc != NULL) + *pwc = wc; + *s = s0; + *nresult = (wc == 0) ? 0 : psenc->chlen - chlenbak; + /* _citrus_GBK2K_init_state(ei, psenc); */ + psenc->chlen = 0; + + return (0); + +restart: + *s = s0; + *nresult = (size_t)-2; + + return (0); + +invalid: + return (EINVAL); + +ilseq: + *nresult = (size_t)-1; + return (EILSEQ); +} + +static int +_citrus_GBK2K_wcrtomb_priv(_GBK2KEncodingInfo * __restrict ei, + char * __restrict s, size_t n, wchar_t wc, + _GBK2KState * __restrict psenc, + size_t * __restrict nresult) +{ + int len; + + _DIAGASSERT(ei != NULL); + _DIAGASSERT(s != NULL); + _DIAGASSERT(psenc != NULL); + + if (psenc->chlen != 0) + goto invalid; + + len = _mb_count(wc); + if (n < len) + goto ilseq; + + switch (len) { + case 1: + if (!_mb_singlebyte(_PUSH_PSENC(wc ))) + goto ilseq; + break; + case 2: + if (!_mb_leadbyte (_PUSH_PSENC(wc >> 8)) || + !_mb_trailbyte (_PUSH_PSENC(wc ))) + goto ilseq; + break; + case 4: + if (!_mb_leadbyte (_PUSH_PSENC(wc >> 24)) || + !_mb_surrogate (_PUSH_PSENC(wc >> 16)) || + !_mb_leadbyte (_PUSH_PSENC(wc >> 8)) || + !_mb_surrogate (_PUSH_PSENC(wc ))) + goto ilseq; + break; + default: + /* NOT REACHED */ + } + + _DIAGASSERT(len == psenc->chlen); + + memcpy(s, psenc->ch, psenc->chlen); + *nresult = psenc->chlen; + /* _citrus_GBK2K_init_state(ei, psenc); */ + psenc->chlen = 0; + + return (0); + +invalid: + return (EINVAL); + +ilseq: + *nresult = (size_t)-1; + return (EILSEQ); +} + +static int +/*ARGSUSED*/ +_citrus_GBK2K_stdencoding_init(_GBK2KEncodingInfo * __restrict ei, + const void * __restrict var, size_t lenvar) +{ + _DIAGASSERT(ei != NULL); + + memset((void *)ei, 0, sizeof(*ei)); + return (0); +} + +static void +/*ARGSUSED*/ +_citrus_GBK2K_stdencoding_uninit(_GBK2KEncodingInfo *ei) +{ +} + + +/* ---------------------------------------------------------------------- + * public interface for ctype + */ + +_CITRUS_CTYPE_DECLS(GBK2K); +_CITRUS_CTYPE_DEF_OPS(GBK2K); + +#include "citrus_ctype_template.h" Index: lib/libc/citrus/modules/citrus_gbk2k.h =================================================================== RCS file: lib/libc/citrus/modules/citrus_gbk2k.h diff -N lib/libc/citrus/modules/citrus_gbk2k.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lib/libc/citrus/modules/citrus_gbk2k.h 18 Mar 2003 11:25:36 -0000 @@ -0,0 +1,36 @@ +/* $NetBSD$ */ + +/*- + * Copyright (c)2003 Citrus Project, + * 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 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 AUTHOR 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. + */ + +#ifndef _CITRUS_GBK2K_H_ +#define _CITRUS_GBK2K_H_ + +__BEGIN_DECLS +_CITRUS_CTYPE_GETOPS_FUNC(GBK2K); +__END_DECLS + +#endif