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