xref: /freebsd/lib/libc/locale/table.c (revision ce834215a70ff69e7e222827437116eee2f9ac6f)
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  * $Id: table.c,v 1.10 1997/05/13 11:19:26 ache Exp $
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     {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
91      	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
92 	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
93      	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
94 	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
95      	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
96 	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
97      	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
98 	0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
99      	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
100 	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
101      	'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
102 	0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
103      	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
104 	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
105      	'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
106 	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
107      	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
108 	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
109      	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
110 	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
111      	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
112 	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
113      	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
114 	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
115      	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
116 	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
117      	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
118 	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
119      	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
120 	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
121      	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
122     },
123     {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
124      	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
125 	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
126      	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
127 	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
128      	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
129 	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
130      	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
131 	0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
132      	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
133 	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
134      	'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
135 	0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
136      	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
137 	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
138      	'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
139 	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
140      	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
141 	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
142      	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
143 	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
144      	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
145 	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
146      	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
147 	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
148      	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
149 	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
150      	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
151 	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
152      	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
153 	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
154      	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
155     },
156 };
157 
158 _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
159 
160 int __mb_cur_max = 1;
161 
162 char	*_PathLocale;
163