xref: /netbsd/lib/libc/locale/runetable.c (revision c4a72b64)
1 /*	$NetBSD: runetable.c,v 1.9 2002/08/03 11:10:51 yamt 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.9 2002/08/03 11:10:51 yamt Exp $");
47 #endif
48 #endif /* LIBC_SCCS and not lint */
49 
50 #include <stdlib.h>
51 #include <ctype.h>
52 #include <locale.h>
53 #include <assert.h>
54 #include <citrus/citrus_module.h>
55 #include <citrus/citrus_ctype.h>
56 #include "rune.h"
57 #include "rune_local.h"
58 #include <stdlib.h>
59 
60 _RuneLocale _DefaultRuneLocale = {
61     _RUNE_MAGIC_1,
62     "NONE",
63     _DEFAULT_INVALID_RUNE,
64 
65     {	/*00*/	_CTYPE_C,
66 		_CTYPE_C,
67 		_CTYPE_C,
68 		_CTYPE_C,
69 		_CTYPE_C,
70 		_CTYPE_C,
71 		_CTYPE_C,
72 		_CTYPE_C,
73 	/*08*/	_CTYPE_C,
74 		_CTYPE_C|_CTYPE_S|_CTYPE_B,
75 		_CTYPE_C|_CTYPE_S,
76 		_CTYPE_C|_CTYPE_S,
77 		_CTYPE_C|_CTYPE_S,
78 		_CTYPE_C|_CTYPE_S,
79 		_CTYPE_C,
80 		_CTYPE_C,
81 	/*10*/	_CTYPE_C,
82 		_CTYPE_C,
83 		_CTYPE_C,
84 		_CTYPE_C,
85 		_CTYPE_C,
86 		_CTYPE_C,
87 		_CTYPE_C,
88 		_CTYPE_C,
89 	/*18*/	_CTYPE_C,
90 		_CTYPE_C,
91 		_CTYPE_C,
92 		_CTYPE_C,
93 		_CTYPE_C,
94 		_CTYPE_C,
95 		_CTYPE_C,
96 		_CTYPE_C,
97 	/*20*/	_CTYPE_S|_CTYPE_B|_CTYPE_R|_CTYPE_SW1,
98 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
99 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
100 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
101 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
102 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
103 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
104 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
105 	/*28*/	_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
106 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
107 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
108 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
109 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
110 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
111 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
112 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
113 	/*30*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|0,
114 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|1,
115 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|2,
116 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|3,
117 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|4,
118 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|5,
119 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|6,
120 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|7,
121 	/*38*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|8,
122 		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_SW1|9,
123 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
124 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
125 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
126 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
127 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
128 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
129 	/*40*/	_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
130 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|10,
131 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|11,
132 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|12,
133 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|13,
134 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|14,
135 		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|15,
136 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
137 	/*48*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
138 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
139 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
140 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
141 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
142 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
143 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
144 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
145 	/*50*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
146 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
147 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
148 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
149 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
150 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
151 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
152 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
153 	/*58*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
154 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
155 		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
156 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
157 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
158 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
159 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
160 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
161 	/*60*/	_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
162 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|10,
163 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|11,
164 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|12,
165 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|13,
166 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|14,
167 		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1|15,
168 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
169 	/*68*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
170 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
171 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
172 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
173 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
174 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
175 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
176 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
177 	/*70*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
178 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
179 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
180 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
181 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
182 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
183 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
184 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
185 	/*78*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
186 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
187 		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A|_CTYPE_SW1,
188 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
189 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
190 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
191 		_CTYPE_P|_CTYPE_R|_CTYPE_G|_CTYPE_SW1,
192 		_CTYPE_C,
193     },
194     {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
195      	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
196 	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
197      	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
198 	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
199      	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
200 	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
201      	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
202 	0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
203      	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
204 	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
205      	'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
206 	0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
207      	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
208 	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
209      	'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
210 	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
211      	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
212 	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
213      	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
214 	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
215      	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
216 	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
217      	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
218 	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
219      	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
220 	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
221      	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
222 	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
223      	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
224 	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
225      	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
226     },
227     {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
228      	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
229 	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
230      	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
231 	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
232      	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
233 	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
234      	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
235 	0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
236      	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
237 	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
238      	'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
239 	0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
240      	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
241 	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
242      	'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
243 	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
244      	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
245 	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
246      	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
247 	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
248      	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
249 	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
250      	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
251 	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
252      	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
253 	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
254      	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
255 	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
256      	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
257 	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
258      	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
259     },
260     { 0, NULL },
261     { 0, NULL },
262     { 0, NULL },
263     NULL, 0,
264     "646",
265     &_citrus_ctype_default,
266 };
267 
268 _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
269 
270 char	*_PathLocale;
271