table.c revision 25776
1218885Sdim/*-
2218885Sdim * Copyright (c) 1993
3218885Sdim *	The Regents of the University of California.  All rights reserved.
4218885Sdim *
5218885Sdim * This code is derived from software contributed to Berkeley by
6218885Sdim * Paul Borman at Krystal Technologies.
7218885Sdim *
8218885Sdim * Redistribution and use in source and binary forms, with or without
9218885Sdim * modification, are permitted provided that the following conditions
10276479Sdim * are met:
11276479Sdim * 1. Redistributions of source code must retain the above copyright
12218885Sdim *    notice, this list of conditions and the following disclaimer.
13218885Sdim * 2. Redistributions in binary form must reproduce the above copyright
14218885Sdim *    notice, this list of conditions and the following disclaimer in the
15249423Sdim *    documentation and/or other materials provided with the distribution.
16249423Sdim * 3. All advertising materials mentioning features or use of this software
17218885Sdim *    must display the following acknowledgement:
18309124Sdim *	This product includes software developed by the University of
19309124Sdim *	California, Berkeley and its contributors.
20309124Sdim * 4. Neither the name of the University nor the names of its contributors
21309124Sdim *    may be used to endorse or promote products derived from this software
22309124Sdim *    without specific prior written permission.
23310194Sdim *
24310194Sdim * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25310194Sdim * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26310194Sdim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27310194Sdim * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28309124Sdim * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29309124Sdim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30309124Sdim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31309124Sdim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32309124Sdim * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33309124Sdim * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34309124Sdim * SUCH DAMAGE.
35309124Sdim *
36309124Sdim * $Id: table.c,v 1.9 1997/02/22 14:59:57 peter Exp $
37309124Sdim */
38309124Sdim
39218885Sdim#if defined(LIBC_SCCS) && !defined(lint)
40276479Sdimstatic char sccsid[] = "@(#)table.c	8.1 (Berkeley) 6/27/93";
41276479Sdim#endif /* LIBC_SCCS and not lint */
42218885Sdim
43218885Sdim#include <ctype.h>
44243830Sdim#include <rune.h>
45296417Sdim
46280031Sdimextern rune_t	_none_sgetrune __P((const char *, size_t, char const **));
47218885Sdimextern int	_none_sputrune __P((rune_t, char *, size_t, char **));
48218885Sdimextern int	_none_init __P((char *, char **));
49218885Sdim
50218885Sdim_RuneLocale _DefaultRuneLocale = {
51218885Sdim    _RUNE_MAGIC_1,
52218885Sdim    "none",
53218885Sdim    _none_sgetrune,
54218885Sdim    _none_sputrune,
55218885Sdim    0xFFFD,
56218885Sdim
57218885Sdim    {	/*00*/	_C,		_C,		_C,		_C,
58309124Sdim		_C,		_C,		_C,		_C,
59309124Sdim	/*08*/	_C,		_C|_S|_B,	_C|_S,		_C|_S,
60309124Sdim		_C|_S,		_C|_S,		_C,		_C,
61309124Sdim	/*10*/	_C,		_C,		_C,		_C,
62309124Sdim		_C,		_C,		_C,		_C,
63309124Sdim	/*18*/	_C,		_C,		_C,		_C,
64309124Sdim		_C,		_C,		_C,		_C,
65309124Sdim	/*20*/	_S|_B|_R,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
66309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
67309124Sdim	/*28*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
68309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
69309124Sdim	/*30*/	_D|_R|_G|_X|0,	_D|_R|_G|_X|1,	_D|_R|_G|_X|2,	_D|_R|_G|_X|3,
70309124Sdim		_D|_R|_G|_X|4,	_D|_R|_G|_X|5,	_D|_R|_G|_X|6,	_D|_R|_G|_X|7,
71309124Sdim	/*38*/	_D|_R|_G|_X|8,	_D|_R|_G|_X|9,	_P|_R|_G,	_P|_R|_G,
72309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
73309124Sdim	/*40*/	_P|_R|_G, _U|_X|_R|_G|_A|10, _U|_X|_R|_G|_A|11, _U|_X|_R|_G|_A|12,
74309124Sdim		_U|_X|_R|_G|_A|13, _U|_X|_R|_G|_A|14, _U|_X|_R|_G|_A|15, _U|_R|_G|_A,
75309124Sdim	/*48*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
76309124Sdim		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
77309124Sdim	/*50*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
78309124Sdim		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
79309124Sdim	/*58*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_P|_R|_G,
80309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
81309124Sdim	/*60*/	_P|_R|_G, _L|_X|_R|_G|_A|10, _L|_X|_R|_G|_A|11, _L|_X|_R|_G|_A|12,
82309124Sdim		_L|_X|_R|_G|_A|13, _L|_X|_R|_G|_A|14, _L|_X|_R|_G|_A|15, _L|_R|_G|_A,
83309124Sdim	/*68*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
84309124Sdim		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
85309124Sdim	/*70*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
86309124Sdim		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
87309124Sdim	/*78*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_P|_R|_G,
88309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_C,
89309124Sdim
90309124Sdim#ifdef C_LOCALE_EXTEND_TO_8859_1        /* can broke some programs */
91309124Sdim
92309124Sdim/* Populated from ISO 8859-1, attempt to not violate POSIX/ANSI	*/
93309124Sdim
94309124Sdim	/*80*/	_C,		_C,		_C,		_C,
95309124Sdim		_C,		_C,		_C,		_C,
96309124Sdim	/*88*/	_C,		_C,		_C,		_C,
97309124Sdim		_C,		_C,		_C,		_C,
98309124Sdim	/*90*/	_C,		_C,		_C,		_C,
99309124Sdim		_C,		_C,		_C,		_C,
100309124Sdim	/*98*/	_C,		_C,		_C,		_C,
101309124Sdim		_C,		_C,		_C,		_C,
102309124Sdim	/*A0*/	_B|_R,		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
103309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
104309124Sdim	/*A8*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
105309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
106309124Sdim	/*B0*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
107309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
108309124Sdim	/*B8*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
109309124Sdim		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
110309124Sdim	/*C0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
111309124Sdim		_R|_G,		_R|_G,		_R|_G,		_R|_G,
112309124Sdim	/*C8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
113309124Sdim		_R|_G,		_R|_G,		_R|_G,		_R|_G,
114309124Sdim	/*D0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
115309124Sdim		_R|_G,		_R|_G,		_R|_G,		_P|_R|_G,
116309124Sdim	/*D8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
117309124Sdim		_R|_G,		_R|_G,		_R|_G,		_R|_G,
118314564Sdim	/*E0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
119314564Sdim		_R|_G,		_R|_G,		_R|_G,		_R|_G,
120314564Sdim	/*E8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
121314564Sdim		_R|_G,		_R|_G,		_R|_G,		_R|_G,
122314564Sdim	/*F0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
123314564Sdim		_R|_G,		_R|_G,		_R|_G,		_P|_R|_G,
124314564Sdim	/*F8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
125218885Sdim		_R|_G,		_R|_G,		_R|_G,		_R|_G,
126218885Sdim#endif /* C_LOCALE_EXTEND_TO_8859_1 */
127218885Sdim    },
128    {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
129     	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
130	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
131     	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
132	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
133     	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
134	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
135     	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
136	0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
137     	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
138	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
139     	'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
140	0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
141     	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
142	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
143     	'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
144	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
145     	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
146	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
147     	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
148	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
149     	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
150	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
151     	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
152	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
153     	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
154	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
155     	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
156	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
157     	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
158	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
159     	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
160    },
161    {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
162     	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
163	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
164     	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
165	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
166     	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
167	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
168     	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
169	0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
170     	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
171	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
172     	'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
173	0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
174     	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
175	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
176     	'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
177	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
178     	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
179	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
180     	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
181	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
182     	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
183	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
184     	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
185	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
186     	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
187	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
188     	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
189	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
190     	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
191	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
192     	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
193    },
194};
195
196_RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
197
198int __mb_cur_max = 1;
199
200char	*_PathLocale;
201