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