table.c revision 22478
11573Srgrimes/*-
21573Srgrimes * Copyright (c) 1993
31573Srgrimes *	The Regents of the University of California.  All rights reserved.
41573Srgrimes *
51573Srgrimes * This code is derived from software contributed to Berkeley by
61573Srgrimes * Paul Borman at Krystal Technologies.
71573Srgrimes *
81573Srgrimes * Redistribution and use in source and binary forms, with or without
91573Srgrimes * modification, are permitted provided that the following conditions
101573Srgrimes * are met:
111573Srgrimes * 1. Redistributions of source code must retain the above copyright
121573Srgrimes *    notice, this list of conditions and the following disclaimer.
131573Srgrimes * 2. Redistributions in binary form must reproduce the above copyright
141573Srgrimes *    notice, this list of conditions and the following disclaimer in the
151573Srgrimes *    documentation and/or other materials provided with the distribution.
161573Srgrimes * 3. All advertising materials mentioning features or use of this software
171573Srgrimes *    must display the following acknowledgement:
181573Srgrimes *	This product includes software developed by the University of
191573Srgrimes *	California, Berkeley and its contributors.
201573Srgrimes * 4. Neither the name of the University nor the names of its contributors
211573Srgrimes *    may be used to endorse or promote products derived from this software
221573Srgrimes *    without specific prior written permission.
231573Srgrimes *
241573Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
251573Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
261573Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
271573Srgrimes * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
281573Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
291573Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
301573Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
311573Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
321573Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
331573Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
341573Srgrimes * SUCH DAMAGE.
3517718Sache *
3621673Sjkh * $FreeBSD: head/lib/libc/locale/table.c 22478 1997-02-09 09:29:27Z ache $
371573Srgrimes */
381573Srgrimes
391573Srgrimes#if defined(LIBC_SCCS) && !defined(lint)
401573Srgrimesstatic char sccsid[] = "@(#)table.c	8.1 (Berkeley) 6/27/93";
411573Srgrimes#endif /* LIBC_SCCS and not lint */
421573Srgrimes
431573Srgrimes#include <ctype.h>
441573Srgrimes#include <rune.h>
451573Srgrimes
461573Srgrimesextern rune_t	_none_sgetrune __P((const char *, size_t, char const **));
471573Srgrimesextern int	_none_sputrune __P((rune_t, char *, size_t, char **));
481573Srgrimesextern int	_none_init __P((char *, char **));
491573Srgrimes
501573Srgrimes_RuneLocale _DefaultRuneLocale = {
511573Srgrimes    _RUNE_MAGIC_1,
521573Srgrimes    "none",
531573Srgrimes    _none_sgetrune,
541573Srgrimes    _none_sputrune,
551573Srgrimes    0xFFFD,
561573Srgrimes
571573Srgrimes    {	/*00*/	_C,		_C,		_C,		_C,
581573Srgrimes		_C,		_C,		_C,		_C,
591573Srgrimes	/*08*/	_C,		_C|_S|_B,	_C|_S,		_C|_S,
601573Srgrimes		_C|_S,		_C|_S,		_C,		_C,
611573Srgrimes	/*10*/	_C,		_C,		_C,		_C,
621573Srgrimes		_C,		_C,		_C,		_C,
631573Srgrimes	/*18*/	_C,		_C,		_C,		_C,
641573Srgrimes		_C,		_C,		_C,		_C,
651573Srgrimes	/*20*/	_S|_B|_R,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
661573Srgrimes		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
671573Srgrimes	/*28*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
681573Srgrimes		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
691573Srgrimes	/*30*/	_D|_R|_G|_X|0,	_D|_R|_G|_X|1,	_D|_R|_G|_X|2,	_D|_R|_G|_X|3,
701573Srgrimes		_D|_R|_G|_X|4,	_D|_R|_G|_X|5,	_D|_R|_G|_X|6,	_D|_R|_G|_X|7,
711573Srgrimes	/*38*/	_D|_R|_G|_X|8,	_D|_R|_G|_X|9,	_P|_R|_G,	_P|_R|_G,
721573Srgrimes		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
731573Srgrimes	/*40*/	_P|_R|_G, _U|_X|_R|_G|_A|10, _U|_X|_R|_G|_A|11, _U|_X|_R|_G|_A|12,
741573Srgrimes		_U|_X|_R|_G|_A|13, _U|_X|_R|_G|_A|14, _U|_X|_R|_G|_A|15, _U|_R|_G|_A,
751573Srgrimes	/*48*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
761573Srgrimes		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
771573Srgrimes	/*50*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
781573Srgrimes		_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,
791573Srgrimes	/*58*/	_U|_R|_G|_A,	_U|_R|_G|_A,	_U|_R|_G|_A,	_P|_R|_G,
801573Srgrimes		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
811573Srgrimes	/*60*/	_P|_R|_G, _L|_X|_R|_G|_A|10, _L|_X|_R|_G|_A|11, _L|_X|_R|_G|_A|12,
821573Srgrimes		_L|_X|_R|_G|_A|13, _L|_X|_R|_G|_A|14, _L|_X|_R|_G|_A|15, _L|_R|_G|_A,
831573Srgrimes	/*68*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
841573Srgrimes		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
851573Srgrimes	/*70*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
861573Srgrimes		_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,
871573Srgrimes	/*78*/	_L|_R|_G|_A,	_L|_R|_G|_A,	_L|_R|_G|_A,	_P|_R|_G,
881573Srgrimes		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_C,
8917718Sache
9017718Sache/* Populated from ISO 8859-1, attempt to not violate POSIX/ANSI	*/
9117718Sache
9211575Sache	/*80*/	_C,		_C,		_C,		_C,
9311575Sache		_C,		_C,		_C,		_C,
9411575Sache	/*88*/	_C,		_C,		_C,		_C,
9511575Sache		_C,		_C,		_C,		_C,
9611575Sache	/*90*/	_C,		_C,		_C,		_C,
9711575Sache		_C,		_C,		_C,		_C,
9811575Sache	/*98*/	_C,		_C,		_C,		_C,
9911575Sache		_C,		_C,		_C,		_C,
10017712Sache	/*A0*/	_B|_R,		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10111575Sache		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10211575Sache	/*A8*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10311575Sache		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10411575Sache	/*B0*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10511575Sache		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10611575Sache	/*B8*/	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10711575Sache		_P|_R|_G,	_P|_R|_G,	_P|_R|_G,	_P|_R|_G,
10811575Sache	/*C0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
10911575Sache		_R|_G,		_R|_G,		_R|_G,		_R|_G,
11011575Sache	/*C8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
11111575Sache		_R|_G,		_R|_G,		_R|_G,		_R|_G,
11211575Sache	/*D0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
11311575Sache		_R|_G,		_R|_G,		_R|_G,		_P|_R|_G,
11411575Sache	/*D8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
11511575Sache		_R|_G,		_R|_G,		_R|_G,		_R|_G,
11611575Sache	/*E0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
11711575Sache		_R|_G,		_R|_G,		_R|_G,		_R|_G,
11811575Sache	/*E8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
11911575Sache		_R|_G,		_R|_G,		_R|_G,		_R|_G,
12011575Sache	/*F0*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
12111575Sache		_R|_G,		_R|_G,		_R|_G,		_P|_R|_G,
12211575Sache	/*F8*/	_R|_G,		_R|_G,		_R|_G,		_R|_G,
12311575Sache		_R|_G,		_R|_G,		_R|_G,		_R|_G,
1241573Srgrimes    },
1251573Srgrimes    {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
1261573Srgrimes     	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
1271573Srgrimes	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
1281573Srgrimes     	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
1291573Srgrimes	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
1301573Srgrimes     	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
1311573Srgrimes	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
1321573Srgrimes     	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
1331573Srgrimes	0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
1341573Srgrimes     	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
1351573Srgrimes	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
1361573Srgrimes     	'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
1371573Srgrimes	0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
1381573Srgrimes     	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
1391573Srgrimes	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
1401573Srgrimes     	'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
1411573Srgrimes	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
1421573Srgrimes     	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
1431573Srgrimes	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
1441573Srgrimes     	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
1451573Srgrimes	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
1461573Srgrimes     	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
1471573Srgrimes	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
1481573Srgrimes     	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
1491573Srgrimes	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
1501573Srgrimes     	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
1511573Srgrimes	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
1521573Srgrimes     	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
1531573Srgrimes	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
1541573Srgrimes     	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
1551573Srgrimes	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
1561573Srgrimes     	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
1571573Srgrimes    },
1581573Srgrimes    {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
1591573Srgrimes     	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
1601573Srgrimes	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
1611573Srgrimes     	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
1621573Srgrimes	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
1631573Srgrimes     	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
1641573Srgrimes	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
1651573Srgrimes     	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
1661573Srgrimes	0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
1671573Srgrimes     	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
1681573Srgrimes	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
1691573Srgrimes     	'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
1701573Srgrimes	0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
1711573Srgrimes     	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
1721573Srgrimes	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
1731573Srgrimes     	'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
1741573Srgrimes	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
1751573Srgrimes     	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
1761573Srgrimes	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
1771573Srgrimes     	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
1781573Srgrimes	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
1791573Srgrimes     	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
1801573Srgrimes	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
1811573Srgrimes     	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
1821573Srgrimes	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
1831573Srgrimes     	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
1841573Srgrimes	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
1851573Srgrimes     	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
1861573Srgrimes	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
1871573Srgrimes     	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
1881573Srgrimes	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
1891573Srgrimes     	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
1901573Srgrimes    },
1911573Srgrimes};
1921573Srgrimes
1931573Srgrimes_RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
1941573Srgrimes
1951573Srgrimesint __mb_cur_max = 1;
19622478Sache
19722478Sachechar	*_PathLocale;
198