1/*
2 * Copyright 2010, Oliver Tappe, zooey@hirschkaefer.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <ctype.h>
8#include <limits.h>
9
10#include <PosixCtype.h>
11#include <PosixLocaleConv.h>
12
13#ifndef _KERNEL_MODE
14#include <langinfo.h>
15#include <PosixLanginfo.h>
16#include <PosixLCTimeInfo.h>
17#endif
18
19
20/*
21 * The values below initialize the structs for the "C"/"POSIX" locale
22 * which is the default locale (and the only one supported without any locale
23 * backend).
24 */
25
26
27namespace BPrivate {
28namespace Libroot {
29
30
31/*
32 * The following arrays have 384 elements where the elements at index -128..-2
33 * mirror the elements at index 128..255 (to protect against invocations of
34 * ctype macros with negative character values).
35 * The element at index -1 is a dummy element containing the neutral/identity
36 * value used when the array is accessed as in 'isblank(EOF)' (i.e. with
37 * index -1).
38 */
39const unsigned short gPosixClassInfo[384] = {
40	/*-128 */	0, 0, 0, 0, 0, 0, 0, 0,
41	/*-120 */	0, 0, 0, 0, 0, 0, 0, 0,
42	/*-112 */	0, 0, 0, 0, 0, 0, 0, 0,
43	/*-104 */	0, 0, 0, 0, 0, 0, 0, 0,
44	/* -96 */	0, 0, 0, 0, 0, 0, 0, 0,
45	/* -88 */	0, 0, 0, 0, 0, 0, 0, 0,
46	/* -80 */	0, 0, 0, 0, 0, 0, 0, 0,
47	/* -72 */	0, 0, 0, 0, 0, 0, 0, 0,
48	/* -64 */	0, 0, 0, 0, 0, 0, 0, 0,
49	/* -56 */	0, 0, 0, 0, 0, 0, 0, 0,
50	/* -48 */	0, 0, 0, 0, 0, 0, 0, 0,
51	/* -40 */	0, 0, 0, 0, 0, 0, 0, 0,
52	/* -32 */	0, 0, 0, 0, 0, 0, 0, 0,
53	/* -24 */	0, 0, 0, 0, 0, 0, 0, 0,
54	/* -16 */	0, 0, 0, 0, 0, 0, 0, 0,
55	/*  -8 */	0, 0, 0, 0, 0, 0, 0,
56	/*  -1 */   0,	// neutral value
57	/*   0 */	_IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl,
58	/*   8 */	_IScntrl, _ISblank|_IScntrl|_ISspace, _IScntrl|_ISspace, _IScntrl|_ISspace, _IScntrl|_ISspace, _IScntrl|_ISspace, _IScntrl, _IScntrl,
59	/*  16 */	_IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl,
60	/*  24 */	_IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl, _IScntrl,
61	/*  32 */	_ISblank|_ISspace|_ISprint, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
62	/*  40 */	_ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
63	/*  48 */	_ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph,
64	/*  56 */	_ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISdigit|_ISxdigit|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
65	/*  64 */	_ISpunct|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph,
66	/*  72 */	_ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph,
67	/*  80 */	_ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph,
68	/*  88 */	_ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISupper|_ISalpha|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph,
69	/*  96 */	_ISpunct|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph,
70	/* 104 */	_ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph,
71	/* 112 */	_ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph,
72	/* 120 */	_ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISalnum|_ISlower|_ISalpha|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _ISpunct|_ISprint|_ISgraph, _IScntrl,
73	/* 128 */	0, 0, 0, 0, 0, 0, 0, 0,
74	/* 136 */	0, 0, 0, 0, 0, 0, 0, 0,
75	/* 144 */	0, 0, 0, 0, 0, 0, 0, 0,
76	/* 152 */	0, 0, 0, 0, 0, 0, 0, 0,
77	/* 160 */	0, 0, 0, 0, 0, 0, 0, 0,
78	/* 168 */	0, 0, 0, 0, 0, 0, 0, 0,
79	/* 176 */	0, 0, 0, 0, 0, 0, 0, 0,
80	/* 184 */	0, 0, 0, 0, 0, 0, 0, 0,
81	/* 192 */	0, 0, 0, 0, 0, 0, 0, 0,
82	/* 200 */	0, 0, 0, 0, 0, 0, 0, 0,
83	/* 208 */	0, 0, 0, 0, 0, 0, 0, 0,
84	/* 216 */	0, 0, 0, 0, 0, 0, 0, 0,
85	/* 224 */	0, 0, 0, 0, 0, 0, 0, 0,
86	/* 232 */	0, 0, 0, 0, 0, 0, 0, 0,
87	/* 240 */	0, 0, 0, 0, 0, 0, 0, 0,
88	/* 248 */	0, 0, 0, 0, 0, 0, 0, 0
89};
90
91const int gPosixToLowerMap[384] = {
92	/*-128 */	128, 129, 130, 131, 132, 133, 134, 135,
93	/*-120 */	136, 137, 138, 139, 140, 141, 142, 143,
94	/*-112 */	144, 145, 146, 147, 148, 149, 150, 151,
95	/*-104 */	152, 153, 154, 155, 156, 157, 158, 159,
96	/* -96 */	160, 161, 162, 163, 164, 165, 166, 167,
97	/* -88 */	168, 169, 170, 171, 172, 173, 174, 175,
98	/* -80 */	176, 177, 178, 179, 180, 181, 182, 183,
99	/* -72 */	184, 185, 186, 187, 188, 189, 190, 191,
100	/* -64 */	192, 193, 194, 195, 196, 197, 198, 199,
101	/* -56 */	200, 201, 202, 203, 204, 205, 206, 207,
102	/* -48 */	208, 209, 210, 211, 212, 213, 214, 215,
103	/* -40 */	216, 217, 218, 219, 220, 221, 222, 223,
104	/* -32 */	224, 225, 226, 227, 228, 229, 230, 231,
105	/* -24 */	232, 233, 234, 235, 236, 237, 238, 239,
106	/* -16 */	240, 241, 242, 243, 244, 245, 246, 247,
107	/*  -8 */	248, 249, 250, 251, 252, 253, 254,
108	/*  -1 */    -1,	// identity value
109	/*   0 */	  0,   1,   2,   3,   4,   5,   6,   7,
110	/*   8 */	  8,   9,  10,  11,  12,  13,  14,  15,
111	/*  16 */	 16,  17,  18,  19,  20,  21,  22,  23,
112	/*  24 */	 24,  25,  26,  27,  28,  29,  30,  31,
113	/*  32 */	 32,  33,  34,  35,  36,  37,  38,  39,
114	/*  40 */	 40,  41,  42,  43,  44,  45,  46,  47,
115	/*  48 */	'0', '1', '2', '3', '4', '5', '6', '7',
116	/*  56 */	'8', '9',  58,  59,  60,  61,  62,  63,
117	/*  64 */	 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
118	/*  72 */	'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
119	/*  80 */	'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
120	/*  88 */	'x', 'y', 'z',  91,  92,  93,  94,  95,
121	/*  96 */	 96, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
122	/* 104 */	'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
123	/* 112 */	'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
124	/* 120 */	'x', 'y', 'z', 123, 124, 125, 126, 127,
125	/* 128 */	128, 129, 130, 131, 132, 133, 134, 135,
126	/* 136 */	136, 137, 138, 139, 140, 141, 142, 143,
127	/* 144 */	144, 145, 146, 147, 148, 149, 150, 151,
128	/* 152 */	152, 153, 154, 155, 156, 157, 158, 159,
129	/* 160 */	160, 161, 162, 163, 164, 165, 166, 167,
130	/* 168 */	168, 169, 170, 171, 172, 173, 174, 175,
131	/* 176 */	176, 177, 178, 179, 180, 181, 182, 183,
132	/* 184 */	184, 185, 186, 187, 188, 189, 190, 191,
133	/* 192 */	192, 193, 194, 195, 196, 197, 198, 199,
134	/* 200 */	200, 201, 202, 203, 204, 205, 206, 207,
135	/* 208 */	208, 209, 210, 211, 212, 213, 214, 215,
136	/* 216 */	216, 217, 218, 219, 220, 221, 222, 223,
137	/* 224 */	224, 225, 226, 227, 228, 229, 230, 231,
138	/* 232 */	232, 233, 234, 235, 236, 237, 238, 239,
139	/* 240 */	240, 241, 242, 243, 244, 245, 246, 247,
140	/* 248 */	248, 249, 250, 251, 252, 253, 254, 255
141};
142
143
144const int gPosixToUpperMap[384] = {
145	/*-128 */	128, 129, 130, 131, 132, 133, 134, 135,
146	/*-120 */	136, 137, 138, 139, 140, 141, 142, 143,
147	/*-112 */	144, 145, 146, 147, 148, 149, 150, 151,
148	/*-104 */	152, 153, 154, 155, 156, 157, 158, 159,
149	/* -96 */	160, 161, 162, 163, 164, 165, 166, 167,
150	/* -88 */	168, 169, 170, 171, 172, 173, 174, 175,
151	/* -80 */	176, 177, 178, 179, 180, 181, 182, 183,
152	/* -72 */	184, 185, 186, 187, 188, 189, 190, 191,
153	/* -64 */	192, 193, 194, 195, 196, 197, 198, 199,
154	/* -56 */	200, 201, 202, 203, 204, 205, 206, 207,
155	/* -48 */	208, 209, 210, 211, 212, 213, 214, 215,
156	/* -40 */	216, 217, 218, 219, 220, 221, 222, 223,
157	/* -32 */	224, 225, 226, 227, 228, 229, 230, 231,
158	/* -24 */	232, 233, 234, 235, 236, 237, 238, 239,
159	/* -16 */	240, 241, 242, 243, 244, 245, 246, 247,
160	/*  -8 */	248, 249, 250, 251, 252, 253, 254,
161	/*  -1 */    -1,	// identity value
162	/*   0 */	  0,   1,   2,   3,   4,   5,   6,   7,
163	/*   8 */	  8,   9,  10,  11,  12,  13,  14,  15,
164	/*  16 */	 16,  17,  18,  19,  20,  21,  22,  23,
165	/*  24 */	 24,  25,  26,  27,  28,  29,  30,  31,
166	/*  32 */	 32,  33,  34,  35,  36,  37,  38,  39,
167	/*  40 */	 40,  41,  42,  43,  44,  45,  46,  47,
168	/*  48 */	'0', '1', '2', '3', '4', '5', '6', '7',
169	/*  56 */	'8', '9',  58,  59,  60,  61,  62,  63,
170	/*  64 */	 64, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
171	/*  72 */	'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
172	/*  80 */	'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
173	/*  88 */	'X', 'Y', 'Z',  91,  92,  93,  94,  95,
174	/*  96 */	 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
175	/* 104 */	'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
176	/* 112 */	'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
177	/* 120 */	'X', 'Y', 'Z', 123, 124, 125, 126, 127,
178	/* 128 */	128, 129, 130, 131, 132, 133, 134, 135,
179	/* 136 */	136, 137, 138, 139, 140, 141, 142, 143,
180	/* 144 */	144, 145, 146, 147, 148, 149, 150, 151,
181	/* 152 */	152, 153, 154, 155, 156, 157, 158, 159,
182	/* 160 */	160, 161, 162, 163, 164, 165, 166, 167,
183	/* 168 */	168, 169, 170, 171, 172, 173, 174, 175,
184	/* 176 */	176, 177, 178, 179, 180, 181, 182, 183,
185	/* 184 */	184, 185, 186, 187, 188, 189, 190, 191,
186	/* 192 */	192, 193, 194, 195, 196, 197, 198, 199,
187	/* 200 */	200, 201, 202, 203, 204, 205, 206, 207,
188	/* 208 */	208, 209, 210, 211, 212, 213, 214, 215,
189	/* 216 */	216, 217, 218, 219, 220, 221, 222, 223,
190	/* 224 */	224, 225, 226, 227, 228, 229, 230, 231,
191	/* 232 */	232, 233, 234, 235, 236, 237, 238, 239,
192	/* 240 */	240, 241, 242, 243, 244, 245, 246, 247,
193	/* 248 */	248, 249, 250, 251, 252, 253, 254, 255
194};
195
196
197struct lconv gPosixLocaleConv = {
198	(char*)".",	// decimal point
199	(char*)"",	// thousands separator
200	(char*)"",	// grouping
201	(char*)"",	// international currency symbol
202	(char*)"",	// local currency symbol
203	(char*)"",	// monetary decimal point
204	(char*)"",	// monetary thousands separator
205	(char*)"",	// monetary grouping
206	(char*)"",	// positive sign
207	(char*)"",	// negative sign
208	CHAR_MAX,	// int_frac_digits
209	CHAR_MAX,	// frac_digits
210	CHAR_MAX,	// p_cs_precedes
211	CHAR_MAX,	// p_sep_by_space
212	CHAR_MAX,	// n_cs_precedes
213	CHAR_MAX,	// n_sep_by_space
214	CHAR_MAX,	// p_sign_posn
215	CHAR_MAX,	// n_sign_posn
216	CHAR_MAX,	// int_p_cs_precedes
217	CHAR_MAX,	// int_p_sep_by_space
218	CHAR_MAX,	// int_n_cs_precedes
219	CHAR_MAX,	// int_n_sep_by_space
220	CHAR_MAX,	// int_p_sign_posn
221	CHAR_MAX	// int_n_sign_posn
222};
223
224
225#ifndef _KERNEL_MODE
226
227const struct lc_time_t gPosixLCTimeInfo = {
228	{
229		"Jan", "Feb", "Mar", "Apr", "May", "Jun",
230		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
231	},
232	{
233		"January", "February", "March", "April", "May", "June",
234		"July", "August", "September", "October", "November", "December"
235	},
236	{
237		"Sun", "Mon", "Tue", "Wed",	"Thu", "Fri", "Sat"
238	},
239	{
240		"Sunday", "Monday", "Tuesday", "Wednesday",	"Thursday", "Friday",
241		"Saturday"
242	},
243	"%H:%M:%S",
244	"%m/%d/%y",
245	"%a %b %e %H:%M:%S %Y",
246	"AM",
247	"PM",
248	"%a %b %e %H:%M:%S %Z %Y",
249	{
250		"January", "February", "March", "April", "May", "June",
251		"July", "August", "September", "October", "November", "December"
252	},
253	"md",
254	"%I:%M:%S %p"
255};
256
257
258const char* gPosixLanginfo[_NL_LANGINFO_LAST] = {
259	"US-ASCII",
260	gPosixLCTimeInfo.c_fmt,
261	gPosixLCTimeInfo.x_fmt,
262	gPosixLCTimeInfo.X_fmt,
263	gPosixLCTimeInfo.ampm_fmt,
264	gPosixLCTimeInfo.am,
265	gPosixLCTimeInfo.pm,
266
267	gPosixLCTimeInfo.weekday[0],
268	gPosixLCTimeInfo.weekday[1],
269	gPosixLCTimeInfo.weekday[2],
270	gPosixLCTimeInfo.weekday[3],
271	gPosixLCTimeInfo.weekday[4],
272	gPosixLCTimeInfo.weekday[5],
273	gPosixLCTimeInfo.weekday[6],
274
275	gPosixLCTimeInfo.wday[0],
276	gPosixLCTimeInfo.wday[1],
277	gPosixLCTimeInfo.wday[2],
278	gPosixLCTimeInfo.wday[3],
279	gPosixLCTimeInfo.wday[4],
280	gPosixLCTimeInfo.wday[5],
281	gPosixLCTimeInfo.wday[6],
282
283	gPosixLCTimeInfo.month[0],
284	gPosixLCTimeInfo.month[1],
285	gPosixLCTimeInfo.month[2],
286	gPosixLCTimeInfo.month[3],
287	gPosixLCTimeInfo.month[4],
288	gPosixLCTimeInfo.month[5],
289	gPosixLCTimeInfo.month[6],
290	gPosixLCTimeInfo.month[7],
291	gPosixLCTimeInfo.month[8],
292	gPosixLCTimeInfo.month[9],
293	gPosixLCTimeInfo.month[10],
294	gPosixLCTimeInfo.month[11],
295
296	gPosixLCTimeInfo.mon[0],
297	gPosixLCTimeInfo.mon[1],
298	gPosixLCTimeInfo.mon[2],
299	gPosixLCTimeInfo.mon[3],
300	gPosixLCTimeInfo.mon[4],
301	gPosixLCTimeInfo.mon[5],
302	gPosixLCTimeInfo.mon[6],
303	gPosixLCTimeInfo.mon[7],
304	gPosixLCTimeInfo.mon[8],
305	gPosixLCTimeInfo.mon[9],
306	gPosixLCTimeInfo.mon[10],
307	gPosixLCTimeInfo.mon[11],
308
309	"%EC, %Ey, %EY",
310	"%Ex",
311	"%Ec",
312	"%EX",
313	"%O",
314
315	gPosixLocaleConv.decimal_point,
316	gPosixLocaleConv.thousands_sep,
317
318	"^[yY]",
319	"^[nN]",
320
321	gPosixLocaleConv.currency_symbol
322};
323
324#endif // !_KERNEL_MODE
325
326
327}	// namespace Libroot
328}	// namespace BPrivate
329
330
331const unsigned short* __ctype_b = &BPrivate::Libroot::gPosixClassInfo[128];
332const int* __ctype_tolower = &BPrivate::Libroot::gPosixToLowerMap[128];
333const int* __ctype_toupper = &BPrivate::Libroot::gPosixToUpperMap[128];
334