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