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