table.c revision 92986
163899Sarchie/*- 263899Sarchie * Copyright (c) 1993 363899Sarchie * The Regents of the University of California. All rights reserved. 463899Sarchie * 563899Sarchie * This code is derived from software contributed to Berkeley by 663899Sarchie * Paul Borman at Krystal Technologies. 763899Sarchie * 863899Sarchie * Redistribution and use in source and binary forms, with or without 963899Sarchie * modification, are permitted provided that the following conditions 1063899Sarchie * are met: 1163899Sarchie * 1. Redistributions of source code must retain the above copyright 1263899Sarchie * notice, this list of conditions and the following disclaimer. 1363899Sarchie * 2. Redistributions in binary form must reproduce the above copyright 1463899Sarchie * notice, this list of conditions and the following disclaimer in the 1563899Sarchie * documentation and/or other materials provided with the distribution. 1663899Sarchie * 3. All advertising materials mentioning features or use of this software 1763899Sarchie * must display the following acknowledgement: 1863899Sarchie * This product includes software developed by the University of 1963899Sarchie * California, Berkeley and its contributors. 2063899Sarchie * 4. Neither the name of the University nor the names of its contributors 2163899Sarchie * may be used to endorse or promote products derived from this software 2263899Sarchie * without specific prior written permission. 2363899Sarchie * 2463899Sarchie * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2563899Sarchie * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2663899Sarchie * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2763899Sarchie * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2863899Sarchie * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2963899Sarchie * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3063899Sarchie * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3163899Sarchie * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3263899Sarchie * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3363899Sarchie * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3463899Sarchie * SUCH DAMAGE. 3563899Sarchie */ 3663899Sarchie 3763899Sarchie#if defined(LIBC_SCCS) && !defined(lint) 3863899Sarchiestatic char sccsid[] = "@(#)table.c 8.1 (Berkeley) 6/27/93"; 3963899Sarchie#endif /* LIBC_SCCS and not lint */ 4063899Sarchie#include <sys/cdefs.h> 4163899Sarchie__FBSDID("$FreeBSD: head/lib/libc/locale/table.c 92986 2002-03-22 21:53:29Z obrien $"); 4263899Sarchie 4363899Sarchie#include <ctype.h> 4463899Sarchie#include <rune.h> 4563899Sarchie 4663899Sarchieextern rune_t _none_sgetrune(const char *, size_t, char const **); 4763899Sarchieextern int _none_sputrune(rune_t, char *, size_t, char **); 4863899Sarchieextern int _none_init(char *, char **); 4963899Sarchie 5063899Sarchie_RuneLocale _DefaultRuneLocale = { 5163899Sarchie _RUNE_MAGIC_1, 5263899Sarchie "NONE", 5363899Sarchie _none_sgetrune, 5463899Sarchie _none_sputrune, 5563899Sarchie 0xFFFD, 5663899Sarchie 5763899Sarchie { /*00*/ _CTYPE_C, 5863899Sarchie _CTYPE_C, 5963899Sarchie _CTYPE_C, 6063899Sarchie _CTYPE_C, 6163899Sarchie _CTYPE_C, 6263899Sarchie _CTYPE_C, 6363899Sarchie _CTYPE_C, 6463899Sarchie _CTYPE_C, 6563899Sarchie /*08*/ _CTYPE_C, 6684195Sdillon _CTYPE_C|_CTYPE_S|_CTYPE_B, 6784195Sdillon _CTYPE_C|_CTYPE_S, 6884195Sdillon _CTYPE_C|_CTYPE_S, 6963899Sarchie _CTYPE_C|_CTYPE_S, 7063899Sarchie _CTYPE_C|_CTYPE_S, 7163899Sarchie _CTYPE_C, 7263899Sarchie _CTYPE_C, 7399207Sbrian /*10*/ _CTYPE_C, 7463899Sarchie _CTYPE_C, 7563899Sarchie _CTYPE_C, 7699207Sbrian _CTYPE_C, 7799207Sbrian _CTYPE_C, 7863899Sarchie _CTYPE_C, 7963899Sarchie _CTYPE_C, 8063899Sarchie _CTYPE_C, 8163899Sarchie /*18*/ _CTYPE_C, 8263899Sarchie _CTYPE_C, 8399207Sbrian _CTYPE_C, 8463899Sarchie _CTYPE_C, 8563899Sarchie _CTYPE_C, 8663899Sarchie _CTYPE_C, 8763899Sarchie _CTYPE_C, 8863899Sarchie _CTYPE_C, 8963899Sarchie /*20*/ _CTYPE_S|_CTYPE_B|_CTYPE_R, 9063899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 9163899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 9263899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 9363899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 9463899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 9563899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 9663899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 9763899Sarchie /*28*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, 9899207Sbrian _CTYPE_P|_CTYPE_R|_CTYPE_G, 9963899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 10063899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 101145921Sglebius _CTYPE_P|_CTYPE_R|_CTYPE_G, 102145921Sglebius _CTYPE_P|_CTYPE_R|_CTYPE_G, 103162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 104162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 105162674Spiso /*30*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|0, 106145921Sglebius _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|1, 107162674Spiso _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|2, 108145921Sglebius _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|3, 10963899Sarchie _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|4, 11063899Sarchie _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|5, 111145921Sglebius _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|6, 112145921Sglebius _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|7, 11363899Sarchie /*38*/ _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|8, 11463899Sarchie _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|9, 11563899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 11663899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 11763899Sarchie _CTYPE_P|_CTYPE_R|_CTYPE_G, 118145921Sglebius _CTYPE_P|_CTYPE_R|_CTYPE_G, 119145932Sglebius _CTYPE_P|_CTYPE_R|_CTYPE_G, 120145921Sglebius _CTYPE_P|_CTYPE_R|_CTYPE_G, 121162674Spiso /*40*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, 122145921Sglebius _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10, 12363899Sarchie _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11, 124162674Spiso _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12, 125145921Sglebius _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13, 12663899Sarchie _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14, 12799207Sbrian _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15, 12899207Sbrian _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 129162674Spiso /*48*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 130162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 131162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 132162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 133162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 134162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 135190841Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 136162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 137162674Spiso /*50*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 138164075Smarcus _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 139164075Smarcus _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 140164075Smarcus _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 141162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 142162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 143162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 144162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 145162674Spiso /*58*/ _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 146162674Spiso _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 147164075Smarcus _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A, 148162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 149162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 150162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 151162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 152162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 153162674Spiso /*60*/ _CTYPE_P|_CTYPE_R|_CTYPE_G, 154162674Spiso _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10, 155162674Spiso _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11, 156162674Spiso _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12, 157162674Spiso _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13, 158162674Spiso _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14, 159162674Spiso _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15, 160162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 161162674Spiso /*68*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 162162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 163162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 164162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 165162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 166162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 167162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 168162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 169162674Spiso /*70*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 170162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 171162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 172162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 173162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 174162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 175162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 176162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 177162674Spiso /*78*/ _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 178162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 179162674Spiso _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A, 180162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 181162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 182162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 183162674Spiso _CTYPE_P|_CTYPE_R|_CTYPE_G, 184162674Spiso _CTYPE_C, 185162674Spiso }, 186162674Spiso { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 187162674Spiso 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 188162674Spiso 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 189162674Spiso 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 190162674Spiso 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 191162674Spiso 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 192162674Spiso 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 193162674Spiso 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 194162674Spiso 0x40, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 195162674Spiso 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 196162674Spiso 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 197162674Spiso 'x', 'y', 'z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 198162674Spiso 0x60, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 199162674Spiso 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 200162674Spiso 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 201162674Spiso 'x', 'y', 'z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 202162674Spiso 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 203162674Spiso 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 204162674Spiso 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 205162674Spiso 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 206162674Spiso 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 207162674Spiso 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 208162674Spiso 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 20963899Sarchie 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 21063899Sarchie 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 21163899Sarchie 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 21263899Sarchie 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 21365892Sru 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 21471796Sbrian 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 21563899Sarchie 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 216127094Sdes 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 217127094Sdes 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 21863899Sarchie }, 219127094Sdes { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 220127094Sdes 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 221127094Sdes 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 222127094Sdes 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 223127094Sdes 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 224127094Sdes 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 225127094Sdes 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 226127094Sdes 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 227131613Sdes 0x40, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 228127094Sdes 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 229127094Sdes 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 23063899Sarchie 'X', 'Y', 'Z', 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 231131613Sdes 0x60, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 23263899Sarchie 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 23363899Sarchie 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 23465892Sru 'X', 'Y', 'Z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 235124621Sphk 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 236131614Sdes 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 237127094Sdes 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 238127094Sdes 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 23963899Sarchie 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 240127094Sdes 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 241127094Sdes 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 242127094Sdes 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 243127094Sdes 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 244127094Sdes 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 245127094Sdes 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 246127094Sdes 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 247127094Sdes 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 248127094Sdes 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 249131614Sdes 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 250127094Sdes 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 25163899Sarchie }, 252127094Sdes}; 253131699Sdes 254127094Sdes_RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale; 255127094Sdes 256127094Sdesint __mb_cur_max = 1; 25763899Sarchie 258127094Sdeschar *_PathLocale; 259127094Sdes