Home | History | Annotate | Line # | Download | only in locale
runetable.c revision 1.2
      1 /*	$NetBSD: runetable.c,v 1.2 2000/12/21 11:29:47 itojun Exp $	*/
      2 
      3 /*-
      4  * Copyright (c) 1993
      5  *	The Regents of the University of California.  All rights reserved.
      6  *
      7  * This code is derived from software contributed to Berkeley by
      8  * Paul Borman at Krystal Technologies.
      9  *
     10  * Redistribution and use in source and binary forms, with or without
     11  * modification, are permitted provided that the following conditions
     12  * are met:
     13  * 1. Redistributions of source code must retain the above copyright
     14  *    notice, this list of conditions and the following disclaimer.
     15  * 2. Redistributions in binary form must reproduce the above copyright
     16  *    notice, this list of conditions and the following disclaimer in the
     17  *    documentation and/or other materials provided with the distribution.
     18  * 3. All advertising materials mentioning features or use of this software
     19  *    must display the following acknowledgement:
     20  *	This product includes software developed by the University of
     21  *	California, Berkeley and its contributors.
     22  * 4. Neither the name of the University nor the names of its contributors
     23  *    may be used to endorse or promote products derived from this software
     24  *    without specific prior written permission.
     25  *
     26  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     27  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     29  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     30  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     31  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     32  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     35  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     36  * SUCH DAMAGE.
     37  *
     38  * $FreeBSD: src/lib/libc/locale/table.c,v 1.13 2000/02/08 07:43:25 obrien Exp $
     39  */
     40 
     41 #include <sys/cdefs.h>
     42 #if defined(LIBC_SCCS) && !defined(lint)
     43 #if 0
     44 static char sccsid[] = "@(#)table.c	8.1 (Berkeley) 6/27/93";
     45 #else
     46 __RCSID("$NetBSD: runetable.c,v 1.2 2000/12/21 11:29:47 itojun Exp $");
     47 #endif
     48 #endif /* LIBC_SCCS and not lint */
     49 
     50 #include <ctype.h>
     51 #include <locale.h>
     52 #include "rune.h"
     53 #include <stdlib.h>
     54 
     55 extern rune_t	_none_sgetrune __P((_RuneLocale *, const char *, size_t,
     56 	char const **, void *));
     57 extern int	_none_sputrune __P((_RuneLocale *, rune_t, char *, size_t,
     58 	char **, void *));
     59 
     60 static _RuneState _DefaultRuneState = {
     61 	0,		/* sizestate */
     62 	NULL,		/* initstate */
     63 	NULL,		/* packstate */
     64 	NULL		/* unpackstate */
     65 };
     66 
     67 _RuneLocale _DefaultRuneLocale = {
     68     _RUNE_MAGIC_1,
     69     "NONE",
     70     0xFFFD,
     71 
     72     {	/*00*/	_CTYPE_C,
     73 		_CTYPE_C,
     74 		_CTYPE_C,
     75 		_CTYPE_C,
     76 		_CTYPE_C,
     77 		_CTYPE_C,
     78 		_CTYPE_C,
     79 		_CTYPE_C,
     80 	/*08*/	_CTYPE_C,
     81 		_CTYPE_C|_CTYPE_S|_CTYPE_B,
     82 		_CTYPE_C|_CTYPE_S,
     83 		_CTYPE_C|_CTYPE_S,
     84 		_CTYPE_C|_CTYPE_S,
     85 		_CTYPE_C|_CTYPE_S,
     86 		_CTYPE_C,
     87 		_CTYPE_C,
     88 	/*10*/	_CTYPE_C,
     89 		_CTYPE_C,
     90 		_CTYPE_C,
     91 		_CTYPE_C,
     92 		_CTYPE_C,
     93 		_CTYPE_C,
     94 		_CTYPE_C,
     95 		_CTYPE_C,
     96 	/*18*/	_CTYPE_C,
     97 		_CTYPE_C,
     98 		_CTYPE_C,
     99 		_CTYPE_C,
    100 		_CTYPE_C,
    101 		_CTYPE_C,
    102 		_CTYPE_C,
    103 		_CTYPE_C,
    104 	/*20*/	_CTYPE_S|_CTYPE_B|_CTYPE_R,
    105 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    106 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    107 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    108 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    109 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    110 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    111 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    112 	/*28*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
    113 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    114 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    115 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    116 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    117 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    118 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    119 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    120 	/*30*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|0,
    121 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|1,
    122 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|2,
    123 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|3,
    124 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|4,
    125 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|5,
    126 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|6,
    127 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|7,
    128 	/*38*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|8,
    129 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|9,
    130 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    131 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    132 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    133 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    134 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    135 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    136 	/*40*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
    137 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
    138 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
    139 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
    140 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
    141 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
    142 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
    143 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    144 	/*48*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    145 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    146 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    147 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    148 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    149 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    150 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    151 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    152 	/*50*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    153 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    154 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    155 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    156 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    157 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    158 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    159 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    160 	/*58*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    161 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    162 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    163 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    164 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    165 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    166 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    167 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    168 	/*60*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
    169 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
    170 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
    171 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
    172 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
    173 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
    174 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
    175 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    176 	/*68*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    177 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    178 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    179 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    180 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    181 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    182 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    183 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    184 	/*70*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    185 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    186 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    187 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    188 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    189 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    190 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    191 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    192 	/*78*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    193 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    194 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
    195 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    196 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    197 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    198 		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    199 		_CTYPE_C,
    200     },
    201     {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
    202      	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
    203 	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
    204      	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
    205 	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
    206      	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
    207 	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
    208      	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
    209 	0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
    210      	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
    211 	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
    212      	'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
    213 	0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
    214      	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
    215 	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
    216      	'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
    217 	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
    218      	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
    219 	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
    220      	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
    221 	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
    222      	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
    223 	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
    224      	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
    225 	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
    226      	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
    227 	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
    228      	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
    229 	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
    230      	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
    231 	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
    232      	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
    233     },
    234     {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
    235      	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
    236 	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
    237      	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
    238 	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
    239      	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
    240 	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
    241      	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
    242 	0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
    243      	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
    244 	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
    245      	'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
    246 	0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
    247      	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
    248 	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
    249      	'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
    250 	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
    251      	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
    252 	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
    253      	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
    254 	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
    255      	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
    256 	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
    257      	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
    258 	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
    259      	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
    260 	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
    261      	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
    262 	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
    263      	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
    264 	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
    265      	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
    266     },
    267     { 0, NULL },
    268     { 0, NULL },
    269     { 0, NULL },
    270     NULL, 0,
    271     (__rune_sgetrune_t)_none_sgetrune,
    272     (__rune_sputrune_t)_none_sputrune,
    273     &_DefaultRuneState, 1
    274 };
    275 
    276 _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
    277 
    278 void **_StreamStateTable = NULL;
    279 
    280 char	*_PathLocale;
    281