xref: /original-bsd/bin/csh/char.c (revision 4092c5cc)
1 /*-
2  * Copyright (c) 1980, 1991, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #ifndef lint
9 static char sccsid[] = "@(#)char.c	8.1 (Berkeley) 05/31/93";
10 #endif /* not lint */
11 
12 #include "char.h"
13 
14 unsigned short _cmap[256] = {
15 /*	nul		soh		stx		etx	*/
16 	_CTR,		_CTR,		_CTR,		_CTR,
17 
18 /*	eot		enq		ack		bel	*/
19 	_CTR,		_CTR,		_CTR,		_CTR,
20 
21 /*	bs		ht		nl		vt	*/
22 	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
23 
24 /*	np		cr		so		si	*/
25 	_CTR,		_CTR,		_CTR,		_CTR,
26 
27 /*	dle		dc1		dc2		dc3	*/
28 	_CTR,		_CTR,		_CTR,		_CTR,
29 
30 /*	dc4		nak		syn		etb	*/
31 	_CTR,		_CTR,		_CTR,		_CTR,
32 
33 /*	can		em		sub		esc	*/
34 	_CTR,		_CTR,		_CTR,		_CTR,
35 
36 /*	fs		gs		rs		us	*/
37 	_CTR,		_CTR,		_CTR,		_CTR,
38 
39 /*	sp		!		"		#	*/
40 	_SP|_META,	0,		_QF,		_META,
41 
42 /*	$		%		&		'	*/
43 	_DOL,		0,		_META|_CMD,	_QF,
44 
45 /*	(		)		*		+	*/
46 	_META|_CMD,	_META,		_GLOB,		0,
47 
48 /*	,		-		.		/	*/
49 	0,		0,		0,		0,
50 
51 /*	0		1		2		3	*/
52 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
53 
54 /*	4		5		6		7	*/
55 	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
56 
57 /*	8		9		:		;	*/
58 	_DIG|_XD,	_DIG|_XD,	0,		_META|_CMD,
59 
60 /*	<		=		>		?	*/
61 	_META,		0,		_META,		_GLOB,
62 
63 /*	@		A		B		C	*/
64 	0,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
65 
66 /*	D		E		F		G	*/
67 	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
68 
69 /*	H		I		J		K	*/
70 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
71 
72 /*	L		M		N		O	*/
73 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
74 
75 /*	P		Q		R		S	*/
76 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
77 
78 /*	T		U		V		W	*/
79 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
80 
81 /*	X		Y		Z		[	*/
82 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB,
83 
84 /*	\		]		^		_	*/
85 	_ESC,		0,		0,		0,
86 
87 /*	`		a		b		c	*/
88   _QB|_GLOB|_META,	_LET|_LOW|_XD,	_LET|_LOW|_XD,	_LET|_LOW|_XD,
89 
90 /*	d		e		f		g	*/
91 	_LET|_LOW|_XD,	_LET|_LOW|_XD,	_LET|_LOW|_XD,	_LET|_LOW,
92 
93 /*	h		i		j		k	*/
94 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
95 
96 /*	l		m		n		o	*/
97 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
98 
99 /*	p		q		r		s	*/
100 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
101 
102 /*	t		u		v		w	*/
103 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
104 
105 /*	x		y		z		{	*/
106 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_GLOB,
107 
108 /*	|		}		~		del	*/
109 	_META|_CMD,	0,		0,		_CTR,
110 
111 #if defined(SHORT_STRINGS) && !defined(KANJI)
112 /****************************************************************/
113 /* 128 - 255 The below is supposedly ISO 8859/1			*/
114 /****************************************************************/
115 /*	(undef)		(undef)		(undef)		(undef)		*/
116 	_CTR,		_CTR,		_CTR,		_CTR,
117 
118 /*	(undef)		(undef)		(undef)		(undef)		*/
119 	_CTR,		_CTR,		_CTR,		_CTR,
120 
121 /*	(undef)		(undef)		(undef)		(undef)		*/
122 	_CTR,		_CTR,		_CTR,		_CTR,
123 
124 /*	(undef)		(undef)		(undef)		(undef)		*/
125 	_CTR,		_CTR,		_CTR,		_CTR,
126 
127 /*	(undef)		(undef)		(undef)		(undef)		*/
128 	_CTR,		_CTR,		_CTR,		_CTR,
129 
130 /*	(undef)		(undef)		(undef)		(undef)		*/
131 	_CTR,		_CTR,		_CTR,		_CTR,
132 
133 /*	(undef)		(undef)		(undef)		(undef)		*/
134 	_CTR,		_CTR,		_CTR,		_CTR,
135 
136 /*	(undef)		(undef)		(undef)		(undef)		*/
137 	_CTR,		_CTR,		_CTR,		_CTR,
138 
139 /*	nobreakspace	exclamdown	cent		sterling	*/
140 	_SP,		0,		0,		0,
141 
142 /*	currency	yen		brokenbar	section		*/
143 	0,		0,		0,		0,
144 
145 /*	diaeresis	copyright	ordfeminine	guillemotleft	*/
146 	0,		0,		0,		0,
147 
148 /*	notsign		hyphen		registered	macron		*/
149 	0,		0,		0,		0,
150 
151 /*	degree		plusminus	twosuperior	threesuperior	*/
152 	0,		0,		0,		0,
153 
154 /*	acute		mu		paragraph	periodcentered	*/
155 	0,		0,		0,		0,
156 
157 /*	cedilla		onesuperior	masculine	guillemotright	*/
158 	0,		0,		0,		0,
159 
160 /*	onequarter	onehalf		threequarters	questiondown	*/
161 	0,		0,		0,		0,
162 
163 /*	Agrave		Aacute		Acircumflex	Atilde		*/
164 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
165 
166 /*	Adiaeresis	Aring		AE		Ccedilla	*/
167 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
168 
169 /*	Egrave		Eacute		Ecircumflex	Ediaeresis	*/
170 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
171 
172 /*	Igrave		Iacute		Icircumflex	Idiaeresis	*/
173 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
174 
175 /*	ETH		Ntilde		Ograve		Oacute		*/
176 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
177 
178 /*	Ocircumflex	Otilde		Odiaeresis	multiply	*/
179 	_LET|_UP,	_LET|_UP,	_LET|_UP,	0,
180 
181 /*	Ooblique	Ugrave		Uacute		Ucircumflex	*/
182 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
183 
184 /*	Udiaeresis	Yacute		THORN		ssharp		*/
185 	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_LOW,
186 
187 /*	agrave		aacute		acircumflex	atilde		*/
188 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
189 
190 /*	adiaeresis	aring		ae		ccedilla	*/
191 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
192 
193 /*	egrave		eacute		ecircumflex	ediaeresis	*/
194 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
195 
196 /*	igrave		iacute		icircumflex	idiaeresis	*/
197 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
198 
199 /*	eth		ntilde		ograve		oacute		*/
200 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
201 
202 /*	ocircumflex	otilde		odiaeresis	division	*/
203 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	0,
204 
205 /*	oslash		ugrave		uacute		ucircumflex	*/
206 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
207 
208 /*	udiaeresis	yacute		thorn		ydiaeresis	*/
209 	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,	_LET|_LOW,
210 #endif /* SHORT_STRINGS && !KANJI */
211 };
212 
213 #ifndef NLS
214 /* _cmap_lower, _cmap_upper for ISO 8859/1 */
215 
216 unsigned char _cmap_lower[256] = {
217 	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
218 	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
219 	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
220 	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
221 	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
222 	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
223 	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
224 	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
225 	0100,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
226 	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
227 	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
228 	0170,	0171,	0172,	0133,	0134,	0135,	0136,	0137,
229 	0140,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
230 	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
231 	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
232 	0170,	0171,	0172,	0173,	0174,	0175,	0176,	0177,
233 	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
234 	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
235 	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
236 	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
237 	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
238 	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
239 	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
240 	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
241 	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
242 	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
243 	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0327,
244 	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0337,
245 	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
246 	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
247 	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0367,
248 	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0377,
249 };
250 
251 unsigned char _cmap_upper[256] = {
252 	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
253 	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
254 	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
255 	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
256 	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
257 	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
258 	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
259 	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
260 	0100,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
261 	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
262 	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
263 	0130,	0131,	0132,	0133,	0134,	0135,	0136,	0137,
264 	0140,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
265 	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
266 	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
267 	0130,	0131,	0132,	0173,	0174,	0175,	0176,	0177,
268 	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
269 	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
270 	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
271 	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
272 	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
273 	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
274 	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
275 	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
276 	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
277 	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
278 	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0327,
279 	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0337,
280 	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
281 	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
282 	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0367,
283 	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0377,
284 };
285 #endif /* NLS */
286