xref: /freebsd/contrib/tcsh/sh.char.c (revision 38effe887ee979f91ad5abf42a2291558e7ff8d1)
1 /*
2  * sh.char.c: Character classification tables
3  */
4 /*-
5  * Copyright (c) 1980, 1991 The Regents of the University of California.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the University nor the names of its contributors
17  *    may be used to endorse or promote products derived from this software
18  *    without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30  * SUCH DAMAGE.
31  */
32 #include "sh.h"
33 #include "sh.char.h"
34 
35 /* on default same as original map */
36 unsigned short _cmap[256] = {
37 /*	  0 nul		  1 soh		  2 stx		  3 etx	*/
38 	_CTR,		_CTR,		_CTR,		_CTR,
39 
40 /*	  4 eot		  5 enq		  6 ack		  7 bel	*/
41 	_CTR,		_CTR,		_CTR,		_CTR,
42 
43 /*	  8 bs		  9 ht		 10 nl		 11 vt	*/
44 	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
45 
46 /*	 12 np		 13 cr		 14 so		 15 si	*/
47 	_CTR,		_CTR,		_CTR,		_CTR,
48 
49 /*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
50 	_CTR,		_CTR,		_CTR,		_CTR,
51 
52 /*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
53 	_CTR,		_CTR,		_CTR,		_CTR,
54 
55 /*	 24 can		 25 em		 26 sub		 27 esc	*/
56 	_CTR,		_CTR,		_CTR,		_CTR,
57 
58 /*	 28 fs		 29 gs		 30 rs		 31 us	*/
59 	_CTR,		_CTR,		_CTR,		_CTR,
60 
61 /*	 32 sp		 33 !		 34 "		 35 #	*/
62 	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
63 
64 /*	 36 $		 37 %		 38 &		 39 '	*/
65 	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
66 
67 /*	 40 (		 41 )		 42 *		 43 +	*/
68 	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
69 
70 /*	 44 ,		 45 -		 46 .		 47 /	*/
71 	_PUN,		_PUN,		_PUN,		_PUN,
72 
73 /*	 48 0		 49 1		 50 2		 51 3	*/
74 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
75 
76 /*	 52 4		 53 5		 54 6		 55 7	*/
77 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
78 
79 /*	 56 8		 57 9		 58 :		 59 ;	*/
80 	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
81 
82 /*	 60 <		 61 =		 62 >		 63 ?	*/
83 	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
84 
85 /*	 64 @		 65 A		 66 B		 67 C	*/
86 	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
87 
88 /*	 68 D		 69 E		 70 F		 71 G	*/
89 	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
90 
91 /*	 72 H		 73 I		 74 J		 75 K	*/
92 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
93 
94 /*	 76 L		 77 M		 78 N		 79 O	*/
95 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
96 
97 /*	 80 P		 81 Q		 82 R		 83 S	*/
98 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
99 
100 /*	 84 T		 85 U		 86 V		 87 W	*/
101 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
102 
103 /*	 88 X		 89 Y		 90 Z		 91 [	*/
104 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
105 
106 /*	 92 \		 93 ]		 94 ^		 95 _	*/
107 	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
108 
109 /*	 96 `		 97 a		 98 b		 99 c	*/
110   _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
111 
112 /*	100 d		101 e		102 f		103 g	*/
113 	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
114 
115 /*	104 h		105 i		106 j		107 k	*/
116 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
117 
118 /*	108 l		109 m		110 n		111 o	*/
119 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
120 
121 /*	112 p		113 q		114 r		115 s	*/
122 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
123 
124 /*	116 t		117 u		118 v		119 w	*/
125 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
126 
127 /*	120 x		121 y		122 z		123 {	*/
128 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
129 
130 /*	124 |		125 }		126 ~		127 del	*/
131 	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
132 
133 #ifdef SHORT_STRINGS
134 /****************************************************************/
135 /* 128 - 255 The below is supposedly ISO 8859/1			*/
136 /****************************************************************/
137 /*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
138 	_CTR,		_CTR,		_CTR,		_CTR,
139 
140 /*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
141 	_CTR,		_CTR,		_CTR,		_CTR,
142 
143 /*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
144 	_CTR,		_CTR,		_CTR,		_CTR,
145 
146 /*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
147 	_CTR,		_CTR,		_CTR,		_CTR,
148 
149 /*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
150 	_CTR,		_CTR,		_CTR,		_CTR,
151 
152 /*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
153 	_CTR,		_CTR,		_CTR,		_CTR,
154 
155 /*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
156 	_CTR,		_CTR,		_CTR,		_CTR,
157 
158 /*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
159 	_CTR,		_CTR,		_CTR,		_CTR,
160 
161 /*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
162 	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
163 
164 /*	164 currency	165 yen		166 brokenbar	167 section	*/
165 	_PUN,		_PUN,		_PUN,		_PUN,
166 
167 /*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
168 	_PUN,		_PUN,		_PUN,		_PUN,
169 
170 /*	172 notsign	173 hyphen	174 registered	175 macron	*/
171 	_PUN,		_PUN,		_PUN,		_PUN,
172 
173 /*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
174 	_PUN,		_PUN,		_PUN,		_PUN,
175 
176 /*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
177 	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
178 
179 /*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
180 	_PUN,		_PUN,		_PUN,		_PUN,
181 
182 /*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
183 	_PUN,		_PUN,		_PUN,		_PUN,
184 
185 /*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
186 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
187 
188 /*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
189 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
190 
191 /*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
192 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
193 
194 /*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
195 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
196 
197 /*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
198 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
199 
200 /*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
201 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
202 
203 /*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
204 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
205 
206 /*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
207 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
208 
209 /*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
210 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
211 
212 /*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
213 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
214 
215 /*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
216 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
217 
218 /*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
219 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
220 
221 /*	240 eth		241 ntilde	242 ograve	243 oacute	*/
222 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
223 
224 /*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
225 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
226 
227 /*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
228 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
229 
230 /*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
231 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
232 #endif /* SHORT_STRINGS */
233 };
234 
235 #if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
236 /* original table */
237 unsigned short _cmap_c[256] = {
238 /*	  0 nul		  1 soh		  2 stx		  3 etx	*/
239 	_CTR,		_CTR,		_CTR,		_CTR,
240 
241 /*	  4 eot		  5 enq		  6 ack		  7 bel	*/
242 	_CTR,		_CTR,		_CTR,		_CTR,
243 
244 /*	  8 bs		  9 ht		 10 nl		 11 vt	*/
245 	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
246 
247 /*	 12 np		 13 cr		 14 so		 15 si	*/
248 	_CTR,		_CTR,		_CTR,		_CTR,
249 
250 /*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
251 	_CTR,		_CTR,		_CTR,		_CTR,
252 
253 /*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
254 	_CTR,		_CTR,		_CTR,		_CTR,
255 
256 /*	 24 can		 25 em		 26 sub		 27 esc	*/
257 	_CTR,		_CTR,		_CTR,		_CTR,
258 
259 /*	 28 fs		 29 gs		 30 rs		 31 us	*/
260 	_CTR,		_CTR,		_CTR,		_CTR,
261 
262 /*	 32 sp		 33 !		 34 "		 35 #	*/
263 	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
264 
265 /*	 36 $		 37 %		 38 &		 39 '	*/
266 	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
267 
268 /*	 40 (		 41 )		 42 *		 43 +	*/
269 	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
270 
271 /*	 44 ,		 45 -		 46 .		 47 /	*/
272 	_PUN,		_PUN,		_PUN,		_PUN,
273 
274 /*	 48 0		 49 1		 50 2		 51 3	*/
275 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
276 
277 /*	 52 4		 53 5		 54 6		 55 7	*/
278 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
279 
280 /*	 56 8		 57 9		 58 :		 59 ;	*/
281 	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
282 
283 /*	 60 <		 61 =		 62 >		 63 ?	*/
284 	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
285 
286 /*	 64 @		 65 A		 66 B		 67 C	*/
287 	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
288 
289 /*	 68 D		 69 E		 70 F		 71 G	*/
290 	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
291 
292 /*	 72 H		 73 I		 74 J		 75 K	*/
293 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
294 
295 /*	 76 L		 77 M		 78 N		 79 O	*/
296 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
297 
298 /*	 80 P		 81 Q		 82 R		 83 S	*/
299 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
300 
301 /*	 84 T		 85 U		 86 V		 87 W	*/
302 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
303 
304 /*	 88 X		 89 Y		 90 Z		 91 [	*/
305 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
306 
307 /*	 92 \		 93 ]		 94 ^		 95 _	*/
308 	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
309 
310 /*	 96 `		 97 a		 98 b		 99 c	*/
311   _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
312 
313 /*	100 d		101 e		102 f		103 g	*/
314 	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
315 
316 /*	104 h		105 i		106 j		107 k	*/
317 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
318 
319 /*	108 l		109 m		110 n		111 o	*/
320 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
321 
322 /*	112 p		113 q		114 r		115 s	*/
323 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
324 
325 /*	116 t		117 u		118 v		119 w	*/
326 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
327 
328 /*	120 x		121 y		122 z		123 {	*/
329 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
330 
331 /*	124 |		125 }		126 ~		127 del	*/
332 	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
333 
334 /****************************************************************/
335 /* 128 - 255 The below is supposedly ISO 8859/1			*/
336 /****************************************************************/
337 /*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
338 	_CTR,		_CTR,		_CTR,		_CTR,
339 
340 /*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
341 	_CTR,		_CTR,		_CTR,		_CTR,
342 
343 /*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
344 	_CTR,		_CTR,		_CTR,		_CTR,
345 
346 /*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
347 	_CTR,		_CTR,		_CTR,		_CTR,
348 
349 /*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
350 	_CTR,		_CTR,		_CTR,		_CTR,
351 
352 /*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
353 	_CTR,		_CTR,		_CTR,		_CTR,
354 
355 /*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
356 	_CTR,		_CTR,		_CTR,		_CTR,
357 
358 /*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
359 	_CTR,		_CTR,		_CTR,		_CTR,
360 
361 /*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
362 	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
363 
364 /*	164 currency	165 yen		166 brokenbar	167 section	*/
365 	_PUN,		_PUN,		_PUN,		_PUN,
366 
367 /*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
368 	_PUN,		_PUN,		_PUN,		_PUN,
369 
370 /*	172 notsign	173 hyphen	174 registered	175 macron	*/
371 	_PUN,		_PUN,		_PUN,		_PUN,
372 
373 /*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
374 	_PUN,		_PUN,		_PUN,		_PUN,
375 
376 /*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
377 	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
378 
379 /*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
380 	_PUN,		_PUN,		_PUN,		_PUN,
381 
382 /*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
383 	_PUN,		_PUN,		_PUN,		_PUN,
384 
385 /*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
386 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
387 
388 /*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
389 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
390 
391 /*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
392 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
393 
394 /*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
395 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
396 
397 /*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
398 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
399 
400 /*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
401 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
402 
403 /*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
404 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
405 
406 /*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
407 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
408 
409 /*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
410 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
411 
412 /*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
413 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
414 
415 /*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
416 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
417 
418 /*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
419 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
420 
421 /*	240 eth		241 ntilde	242 ograve	243 oacute	*/
422 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
423 
424 /*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
425 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
426 
427 /*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
428 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
429 
430 /*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
431 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
432 };
433 
434 /* multi-byte table */
435 /* BY Masaaki Koyanagi VERY THANKS */
436 unsigned short _cmap_mbyte[256] = {
437 /*	  0 nul		  1 soh		  2 stx		  3 etx	*/
438 	_CTR,		_CTR,		_CTR,		_CTR,
439 
440 /*	  4 eot		  5 enq		  6 ack		  7 bel	*/
441 	_CTR,		_CTR,		_CTR,		_CTR,
442 
443 /*	  8 bs		  9 ht		 10 nl		 11 vt	*/
444 	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
445 
446 /*	 12 np		 13 cr		 14 so		 15 si	*/
447 	_CTR,		_CTR,		_CTR,		_CTR,
448 
449 /*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
450 	_CTR,		_CTR,		_CTR,		_CTR,
451 
452 /*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
453 	_CTR,		_CTR,		_CTR,		_CTR,
454 
455 /*	 24 can		 25 em		 26 sub		 27 esc	*/
456 	_CTR,		_CTR,		_CTR,		_CTR,
457 
458 /*	 28 fs		 29 gs		 30 rs		 31 us	*/
459 	_CTR,		_CTR,		_CTR,		_CTR,
460 
461 /*	 32 sp		 33 !		 34 "		 35 #	*/
462 	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
463 
464 /*	 36 $		 37 %		 38 &		 39 '	*/
465 	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
466 
467 /*	 40 (		 41 )		 42 *		 43 +	*/
468 	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
469 
470 /*	 44 ,		 45 -		 46 .		 47 /	*/
471 	_PUN,		_PUN,		_PUN,		_PUN,
472 
473 /*	 48 0		 49 1		 50 2		 51 3	*/
474 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
475 
476 /*	 52 4		 53 5		 54 6		 55 7	*/
477 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
478 
479 /*	 56 8		 57 9		 58 :		 59 ;	*/
480 	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
481 
482 /*	 60 <		 61 =		 62 >		 63 ?	*/
483 	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
484 
485 /*	 64 @		 65 A		 66 B		 67 C	*/
486 	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
487 
488 /*	 68 D		 69 E		 70 F		 71 G	*/
489 	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
490 
491 /*	 72 H		 73 I		 74 J		 75 K	*/
492 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
493 
494 /*	 76 L		 77 M		 78 N		 79 O	*/
495 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
496 
497 /*	 80 P		 81 Q		 82 R		 83 S	*/
498 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
499 
500 /*	 84 T		 85 U		 86 V		 87 W	*/
501 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
502 
503 /*	 88 X		 89 Y		 90 Z		 91 [	*/
504 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
505 
506 /*	 92 \		 93 ]		 94 ^		 95 _	*/
507 	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
508 
509 /*	 96 `		 97 a		 98 b		 99 c	*/
510   _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
511 
512 /*	100 d		101 e		102 f		103 g	*/
513 	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
514 
515 /*	104 h		105 i		106 j		107 k	*/
516 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
517 
518 /*	108 l		109 m		110 n		111 o	*/
519 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
520 
521 /*	112 p		113 q		114 r		115 s	*/
522 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
523 
524 /*	116 t		117 u		118 v		119 w	*/
525 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
526 
527 /*	120 x		121 y		122 z		123 {	*/
528 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
529 
530 /*	124 |		125 }		126 ~		127 del	*/
531 	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
532 
533 /****************************************************************/
534 /* 128 - 255 The below is supposedly ISO 8859/1			*/
535 /****************************************************************/
536 /*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
537 	_PUN,		_PUN,		_PUN,		_PUN,
538 
539 /*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
540 	_PUN,		_PUN,		_PUN,		_PUN,
541 
542 /*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
543 	_PUN,		_PUN,		_PUN,		_PUN,
544 
545 /*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
546 	_PUN,		_PUN,		_PUN,		_PUN,
547 
548 /*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
549 	_PUN,		_PUN,		_PUN,		_PUN,
550 
551 /*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
552 	_PUN,		_PUN,		_PUN,		_PUN,
553 
554 /*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
555 	_PUN,		_PUN,		_PUN,		_PUN,
556 
557 /*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
558 	_PUN,		_PUN,		_PUN,		_PUN,
559 
560 /*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
561 	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
562 
563 /*	164 currency	165 yen		166 brokenbar	167 section	*/
564 	_PUN,		_PUN,		_PUN,		_PUN,
565 
566 /*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
567 	_PUN,		_PUN,		_PUN,		_PUN,
568 
569 /*	172 notsign	173 hyphen	174 registered	175 macron	*/
570 	_PUN,		_PUN,		_PUN,		_PUN,
571 
572 /*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
573 	_PUN,		_PUN,		_PUN,		_PUN,
574 
575 /*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
576 	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
577 
578 /*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
579 	_PUN,		_PUN,		_PUN,		_PUN,
580 
581 /*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
582 	_PUN,		_PUN,		_PUN,		_PUN,
583 
584 /*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
585 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
586 
587 /*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
588 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
589 
590 /*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
591 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
592 
593 /*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
594 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
595 
596 /*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
597 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
598 
599 /*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
600 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
601 
602 /*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
603 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
604 
605 /*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
606 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
607 
608 /*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
609 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
610 
611 /*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
612 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
613 
614 /*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
615 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
616 
617 /*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
618 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
619 
620 /*	240 eth		241 ntilde	242 ograve	243 oacute	*/
621 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
622 
623 /*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
624 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
625 
626 /*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
627 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
628 
629 /*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
630 	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
631 };
632 
633 short _enable_mbdisp = 0; /* control multi-byte 0...disable 1...enable */
634 
635 /* multi-byte check table */
636 /* default = all 0 (clear process in update_vars()/unset()) */
637 unsigned short _mbmap[256];
638 
639 unsigned short _mbmap_euc[256] = {
640 /* first byte	0x8e,0xa0 - 0xf4 */
641 /* second byte 	0xa0 - 0xfe */
642 /* 0 - 7f all 0 */
643     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
644     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
645     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
646     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
647 /*  80		81		82		83 */
648     0,		0,		0,		0,
649 /*  84		85		86		87 */
650     0,		0,		0,		0,
651 /*  88		89		8a		8b */
652     0,		0,		0,		0,
653 /*  8c		8d		8e		8f */
654     0,		0,		_MB1,		0,
655 /* 90 - 9f all 0 */
656     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
657 /*  a0		a1		a2		a3 */
658     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
659 /*  a4		a5		a6		a7 */
660     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
661 /*  a8		a9		aa		ab */
662     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
663 /*  ac		ad		ae		af */
664     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
665 /*  b0		b1		b2		b3 */
666     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
667 /*  b4		b5		b6		b7 */
668     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
669 /*  b8		b9		ba		bb */
670     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
671 /*  bc		bd		be		bf */
672     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
673 /*  c0		c1		c2		c3 */
674     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
675 /*  c4		c5		c6		c7 */
676     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
677 /*  c8		c9		ca		cb */
678     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
679 /*  cc		cd		ce		cf */
680     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
681 /*  d0		d1		d2		d3 */
682     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
683 /*  d4		d5		d6		d7 */
684     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
685 /*  d8		d9		da		db */
686     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
687 /*  dc		dd		de		df */
688     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
689 /*  e0		e1		e2		e3 */
690     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
691 /*  e4		e5		e6		e7 */
692     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
693 /*  e8		e9		ea		eb */
694     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
695 /*  ec		ed		ee		ef */
696     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
697 /*  f0		f1		f2		f3 */
698     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
699 /*  f4		f5		f6		f7 */
700     _MB1|_MB2,	_MB2,		_MB2,		_MB2,
701 /*  f8		f9		fa		fb */
702     _MB2,	_MB2,		_MB2,		_MB2,
703 /*  fc		fd		fe		ff */
704     _MB2,	_MB2,		_MB2,		0,
705 };
706 
707 unsigned short _mbmap_sjis[256] = {
708 /* first byte	0x81-0x9f,0xe0 - 0xfc */
709 /* second byte 	0x40-0x7e,0x80 - 0xfc */
710 /* 0 - 3f all 0 */
711     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
712     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
713 /*  40		41		42		43 */
714     _MB2,	_MB2,		_MB2,		_MB2,
715 /*  44		45		46		47 */
716     _MB2,	_MB2,		_MB2,		_MB2,
717 /*  48		49		4a		4b */
718     _MB2,	_MB2,		_MB2,		_MB2,
719 /*  4c		4d		4e		4f */
720     _MB2,	_MB2,		_MB2,		_MB2,
721 /*  50		51		52		53 */
722     _MB2,	_MB2,		_MB2,		_MB2,
723 /*  54		55		56		57 */
724     _MB2,	_MB2,		_MB2,		_MB2,
725 /*  58		59		5a		5b */
726     _MB2,	_MB2,		_MB2,		_MB2,
727 /*  5c		5d		5e		5f */
728     _MB2,	_MB2,		_MB2,		_MB2,
729 /*  60		61		62		63 */
730     _MB2,	_MB2,		_MB2,		_MB2,
731 /*  64		65		66		67 */
732     _MB2,	_MB2,		_MB2,		_MB2,
733 /*  68		69		6a		6b */
734     _MB2,	_MB2,		_MB2,		_MB2,
735 /*  6c		6d		6e		6f */
736     _MB2,	_MB2,		_MB2,		_MB2,
737 /*  70		71		72		73 */
738     _MB2,	_MB2,		_MB2,		_MB2,
739 /*  74		75		76		77 */
740     _MB2,	_MB2,		_MB2,		_MB2,
741 /*  78		79		7a		7b */
742     _MB2,	_MB2,		_MB2,		_MB2,
743 /*  7c		7d		7e		7f */
744     _MB2,	_MB2,		_MB2,		0,
745 /*  80		81		82		83 */
746     _MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
747 /*  84		85		86		87 */
748     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
749 /*  88		89		8a		8b */
750     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
751 /*  8c		8d		8e		8f */
752     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
753 /*  90		91		92		93 */
754     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
755 /*  94		95		96		97 */
756     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
757 /*  98		99		9a		9b */
758     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
759 /*  9c		9d		9e		9f */
760     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
761 /*  a0		a1		a2		a3 */
762     _MB2,	_MB2,		_MB2,		_MB2,
763 /*  a4		a5		a6		a7 */
764     _MB2,	_MB2,		_MB2,		_MB2,
765 /*  a8		a9		aa		ab */
766     _MB2,	_MB2,		_MB2,		_MB2,
767 /*  ac		ad		ae		af */
768     _MB2,	_MB2,		_MB2,		_MB2,
769 /*  b0		b1		b2		b3 */
770     _MB2,	_MB2,		_MB2,		_MB2,
771 /*  b4		b5		b6		b7 */
772     _MB2,	_MB2,		_MB2,		_MB2,
773 /*  b8		b9		ba		bb */
774     _MB2,	_MB2,		_MB2,		_MB2,
775 /*  bc		bd		be		bf */
776     _MB2,	_MB2,		_MB2,		_MB2,
777 /*  c0		c1		c2		c3 */
778     _MB2,	_MB2,		_MB2,		_MB2,
779 /*  c4		c5		c6		c7 */
780     _MB2,	_MB2,		_MB2,		_MB2,
781 /*  c8		c9		ca		cb */
782     _MB2,	_MB2,		_MB2,		_MB2,
783 /*  cc		cd		ce		cf */
784     _MB2,	_MB2,		_MB2,		_MB2,
785 /*  d0		d1		d2		d3 */
786     _MB2,	_MB2,		_MB2,		_MB2,
787 /*  d4		d5		d6		d7 */
788     _MB2,	_MB2,		_MB2,		_MB2,
789 /*  d8		d9		da		db */
790     _MB2,	_MB2,		_MB2,		_MB2,
791 /*  dc		dd		de		df */
792     _MB2,	_MB2,		_MB2,		_MB2,
793 /*  e0		e1		e2		e3 */
794     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
795 /*  e4		e5		e6		e7 */
796     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
797 /*  e8		e9		ea		eb */
798     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
799 /*  ec		ed		ee		ef */
800     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
801 /*  f0		f1		f2		f3 */
802     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
803 /*  f4		f5		f6		f7 */
804     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
805 /*  f8		f9		fa		fb */
806     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
807 /*  fc		fd		fe		ff */
808     _MB1|_MB2,	0,		0,		0,
809 };
810 
811 unsigned short _mbmap_big5[256] = {
812 /* This is latest big5 charmap, so called "Big5+" */
813 /* first byte   0x81 - 0xfe */
814 /* second byte  0x40 - 0x7e, 0x80 - 0xfe */
815 /* 0x00 - 0x3f = 0 */
816     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
817     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
818 /* 0x40 - 0x7e = 2 */
819     _MB2,	_MB2,		_MB2,		_MB2,
820     _MB2,	_MB2,		_MB2,		_MB2,
821     _MB2,	_MB2,		_MB2,		_MB2,
822     _MB2,	_MB2,		_MB2,		_MB2,
823     _MB2,	_MB2,		_MB2,		_MB2,
824     _MB2,	_MB2,		_MB2,		_MB2,
825     _MB2,	_MB2,		_MB2,		_MB2,
826     _MB2,	_MB2,		_MB2,		_MB2,
827     _MB2,	_MB2,		_MB2,		_MB2,
828     _MB2,	_MB2,		_MB2,		_MB2,
829     _MB2,	_MB2,		_MB2,		_MB2,
830     _MB2,	_MB2,		_MB2,		_MB2,
831     _MB2,	_MB2,		_MB2,		_MB2,
832     _MB2,	_MB2,		_MB2,		_MB2,
833     _MB2,	_MB2,		_MB2,		_MB2,
834 						/* 0x7f = 0 */
835     _MB2,	_MB2,		_MB2,		0,
836 /* 0x80 = 2, 0x81 - 0xfe = 3 */
837     _MB2,      _MB1|_MB2,      _MB1|_MB2,      _MB1|_MB2,
838     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
839     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
840     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
841     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
842     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
843     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
844     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
845     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
846     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
847     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
848     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
849     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
850     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
851     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
852     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
853     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
854     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
855     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
856     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
857     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
858     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
859     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
860     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
861     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
862     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
863     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
864     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
865     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
866     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
867     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
868 						/* 0xff = 0 */
869     _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	0,
870 };
871 
872 unsigned short _mbmap_utf8[256] = {
873 /* utf8 uses up to 6 bytes */
874 /* first byte        0xc0 - 0xfd */
875 /* any further bytes 0x80 - 0xbf */
876 /* 0 - 7f all 0 */
877     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
878     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
879     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
880     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
881 /*  80 - bf : all _MB2 */
882     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
883     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
884     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
885     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
886     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
887     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
888     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
889     _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
890 /* c0 - fc : all _MB1 */
891     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
892     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
893     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
894     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
895     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
896     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
897     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
898 /*  f8    f9    fa    fb    fc    fd    fe    ff*/
899     _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 0,    0
900 };
901 #endif /* defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE) */
902 
903 #ifndef NLS
904 /* _cmap_lower, _cmap_upper for ISO 8859/1 */
905 
906 unsigned char _cmap_lower[256] = {
907 	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
908 	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
909 	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
910 	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
911 	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
912 	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
913 	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
914 	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
915 	0100,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
916 	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
917 	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
918 	0170,	0171,	0172,	0133,	0134,	0135,	0136,	0137,
919 	0140,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
920 	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
921 	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
922 	0170,	0171,	0172,	0173,	0174,	0175,	0176,	0177,
923 	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
924 	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
925 	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
926 	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
927 	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
928 	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
929 	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
930 	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
931 	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
932 	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
933 	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0327,
934 	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0337,
935 	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
936 	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
937 	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0367,
938 	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0377,
939 };
940 
941 unsigned char _cmap_upper[256] = {
942 	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
943 	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
944 	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
945 	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
946 	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
947 	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
948 	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
949 	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
950 	0100,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
951 	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
952 	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
953 	0130,	0131,	0132,	0133,	0134,	0135,	0136,	0137,
954 	0140,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
955 	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
956 	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
957 	0130,	0131,	0132,	0173,	0174,	0175,	0176,	0177,
958 	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
959 	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
960 	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
961 	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
962 	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
963 	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
964 	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
965 	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
966 	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
967 	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
968 	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0327,
969 	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0337,
970 	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
971 	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
972 	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0367,
973 	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0377,
974 };
975 #endif /* NLS */
976 
977 #ifdef _OSD_POSIX
978 /*
979 	   Initial Port for tcsh-6.07.04 by <Martin.Kraemer@Mch.SNI.De>
980 
981 "BS2000 OSD" is a POSIX on a main frame.
982 It is made by Siemens Nixdorf AG, Germany.
983 Within the POSIX subsystem, the same character set was chosen as in
984 "native BS2000", namely EBCDIC.  Yes, tcsh now runs on EBCDIC platforms, too.
985 
986 EBCDIC Table. (Yes, in EBCDIC, the letters 'a'..'z' are not contiguous!)
987 This table is bijective, i.e. there are no ambigous or duplicate characters
988 00    00 01 02 03 85 09 86 7f  87 8d 8e 0b 0c 0d 0e 0f  * ................ *
989 10    10 11 12 13 8f 0a 08 97  18 19 9c 9d 1c 1d 1e 1f  * ................ *
990 20    80 81 82 83 84 92 17 1b  88 89 8a 8b 8c 05 06 07  * ................ *
991 30    90 91 16 93 94 95 96 04  98 99 9a 9b 14 15 9e 1a  * ................ *
992 40    20 a0 e2 e4 e0 e1 e3 e5  e7 f1 60 2e 3c 28 2b 7c  *  .........`.<(+| *
993 50    26 e9 ea eb e8 ed ee ef  ec df 21 24 2a 29 3b 9f  * &.........!$*);. *
994 60    2d 2f c2 c4 c0 c1 c3 c5  c7 d1 5e 2c 25 5f 3e 3f  * -/........^,%_>? *
995 70    f8 c9 ca cb c8 cd ce cf  cc a8 3a 23 40 27 3d 22  * ..........:#@'=" *
996 80    d8 61 62 63 64 65 66 67  68 69 ab bb f0 fd fe b1  * .abcdefghi...... *
997 90    b0 6a 6b 6c 6d 6e 6f 70  71 72 aa ba e6 b8 c6 a4  * .jklmnopqr...... *
998 a0    b5 af 73 74 75 76 77 78  79 7a a1 bf d0 dd de ae  * ..stuvwxyz...... *
999 b0    a2 a3 a5 b7 a9 a7 b6 bc  bd be ac 5b 5c 5d b4 d7  * ...........[\].. *
1000 c0    f9 41 42 43 44 45 46 47  48 49 ad f4 f6 f2 f3 f5  * .ABCDEFGHI...... *
1001 d0    a6 4a 4b 4c 4d 4e 4f 50  51 52 b9 fb fc db fa ff  * .JKLMNOPQR...... *
1002 e0    d9 f7 53 54 55 56 57 58  59 5a b2 d4 d6 d2 d3 d5  * ..STUVWXYZ...... *
1003 f0    30 31 32 33 34 35 36 37  38 39 b3 7b dc 7d da 7e  * 0123456789.{.}.~ *
1004 */
1005 unsigned short _toascii[256] = {
1006 /*00*/ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f,
1007        0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */
1008 /*10*/ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97,
1009        0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */
1010 /*20*/ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b,
1011        0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /* ................ */
1012 /*30*/ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
1013        0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /* ................ */
1014 /*40*/ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
1015        0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* .........`.<(+|  */
1016 /*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
1017        0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f, /* &.........!$*);. */
1018 /*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
1019        0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /* -/........^,%_>? */
1020 /*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
1021        0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /* ..........:#@'=" */
1022 /*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
1023        0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /* .abcdefghi...... */
1024 /*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
1025        0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /* .jklmnopqr...... */
1026 /*a0*/ 0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
1027        0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /* ..stuvwxyz...... */
1028 /*b0*/ 0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
1029        0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7, /* ...........[\].. */
1030 /*c0*/ 0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1031        0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /* .ABCDEFGHI...... */
1032 /*d0*/ 0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
1033        0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff, /* .JKLMNOPQR...... */
1034 /*e0*/ 0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
1035        0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /* ..STUVWXYZ...... */
1036 /*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1037        0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e  /* 0123456789.{.}.~ */
1038 };
1039 /* The same, for ascii-in-ebcdic
1040 00    00 01 02 03 37 2d 2e 2f  16 05 15 0b 0c 0d 0e 0f  * ................ *
1041 10    10 11 12 13 3c 3d 32 26  18 19 3f 27 1c 1d 1e 1f  * ................ *
1042 20    40 5a 7f 7b 5b 6c 50 7d  4d 5d 5c 4e 6b 60 4b 61  *  !"#$%&'()*+,-./ *
1043 30    f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 7a 5e 4c 7e 6e 6f  * 0123456789:;<=>? *
1044 40    7c c1 c2 c3 c4 c5 c6 c7  c8 c9 d1 d2 d3 d4 d5 d6  * @ABCDEFGHIJKLMNO *
1045 50    d7 d8 d9 e2 e3 e4 e5 e6  e7 e8 e9 bb bc bd 6a 6d  * PQRSTUVWXYZ[\]^_ *
1046 60    4a 81 82 83 84 85 86 87  88 89 91 92 93 94 95 96  * `abcdefghijklmno *
1047 70    97 98 99 a2 a3 a4 a5 a6  a7 a8 a9 fb 4f fd ff 07  * pqrstuvwxyz{|}~. *
1048 80    20 21 22 23 24 04 06 08  28 29 2a 2b 2c 09 0a 14  * ................ *
1049 90    30 31 25 33 34 35 36 17  38 39 3a 3b 1a 1b 3e 5f  * ................ *
1050 a0    41 aa b0 b1 9f b2 d0 b5  79 b4 9a 8a ba ca af a1  * ................ *
1051 b0    90 8f ea fa be a0 b6 b3  9d da 9b 8b b7 b8 b9 ab  * ................ *
1052 c0    64 65 62 66 63 67 9e 68  74 71 72 73 78 75 76 77  * ................ *
1053 d0    ac 69 ed ee eb ef ec bf  80 e0 fe dd fc ad ae 59  * ................ *
1054 e0    44 45 42 46 43 47 9c 48  54 51 52 53 58 55 56 57  * ................ *
1055 f0    8c 49 cd ce cb cf cc e1  70 c0 de db dc 8d 8e df  * ................ *
1056 */
1057 unsigned short _toebcdic[256] = {
1058 /*00*/  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
1059 	0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,  /* ................ */
1060 /*10*/  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
1061 	0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,  /* ................ */
1062 /*20*/  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
1063 	0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,  /*  !"#$%&'()*+,-./ */
1064 /*30*/  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
1065 	0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,  /* 0123456789:;<=>? */
1066 /*40*/  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
1067 	0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,  /* @ABCDEFGHIJKLMNO */
1068 /*50*/  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
1069 	0xe7, 0xe8, 0xe9, 0xbb, 0xbc, 0xbd, 0x6a, 0x6d,  /* PQRSTUVWXYZ[\]^_ */
1070 /*60*/  0x4a, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
1071 	0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,  /* `abcdefghijklmno */
1072 /*70*/  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
1073 	0xa7, 0xa8, 0xa9, 0xfb, 0x4f, 0xfd, 0xff, 0x07,  /* pqrstuvwxyz{|}~. */
1074 /*80*/  0x20, 0x21, 0x22, 0x23, 0x24, 0x04, 0x06, 0x08,
1075 	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x14,  /* ................ */
1076 /*90*/  0x30, 0x31, 0x25, 0x33, 0x34, 0x35, 0x36, 0x17,
1077 	0x38, 0x39, 0x3a, 0x3b, 0x1a, 0x1b, 0x3e, 0x5f,  /* ................ */
1078 /*a0*/  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xd0, 0xb5,
1079 	0x79, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xa1,  /* ................ */
1080 /*b0*/  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
1081 	0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,  /* ................ */
1082 /*c0*/  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
1083 	0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,  /* ................ */
1084 /*d0*/  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
1085 	0x80, 0xe0, 0xfe, 0xdd, 0xfc, 0xad, 0xae, 0x59,  /* ................ */
1086 /*e0*/  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
1087 	0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,  /* ................ */
1088 /*f0*/  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
1089 	0x70, 0xc0, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf   /* ................ */
1090 };
1091 
1092 #endif /*_OSD_POSIX*/
1093 
1094 #ifdef __MVS__
1095 /*
1096    The IBM 1047 coded char set to/from ISO 8859-1 mapping differs from
1097    the POSIX-BC mapping in several places
1098  */
1099 unsigned short _toascii[256] = {
1100       0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
1101       0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1102       0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
1103       0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
1104       0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
1105       0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
1106       0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
1107       0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
1108       0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
1109       0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
1110       0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
1111       0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
1112       0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
1113       0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
1114       0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
1115       0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
1116       0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
1117       0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
1118       0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
1119       0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
1120       0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
1121       0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae,
1122       0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
1123       0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7,
1124       0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1125       0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
1126       0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
1127       0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
1128       0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
1129       0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
1130       0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1131       0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f,
1132 };
1133 unsigned short _toebcdic[256] = {
1134       0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
1135       0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1136       0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
1137       0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
1138       0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
1139       0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
1140       0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
1141       0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
1142       0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
1143       0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
1144       0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
1145       0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
1146       0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
1147       0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
1148       0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
1149       0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
1150       0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
1151       0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
1152       0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
1153       0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
1154       0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
1155       0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc,
1156       0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
1157       0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
1158       0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
1159       0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
1160       0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
1161       0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59,
1162       0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
1163       0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
1164       0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
1165       0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf
1166 };
1167 #endif /*__MVS__*/
1168