1/*	$NetBSD: char.c,v 1.5 2003/08/07 11:17:21 agc Exp $	*/
2
3/*
4 * Copyright (c) 1983, 1993
5 *	The Regents of the University of California.  All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * Edward Wang at The University of California, Berkeley.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of the University nor the names of its contributors
19 *    may be used to endorse or promote products derived from this software
20 *    without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 */
34
35#include <sys/cdefs.h>
36#ifndef lint
37#if 0
38static char sccsid[] = "@(#)char.c	8.1 (Berkeley) 6/6/93";
39#else
40__RCSID("$NetBSD: char.c,v 1.5 2003/08/07 11:17:21 agc Exp $");
41#endif
42#endif /* not lint */
43
44#include "char.h"
45
46char _cmap[] = {
47	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^@ - ^C */
48	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^D - ^G */
49	_C,		_C|_P,		_C,		_C|_U,	/* ^H - ^K */
50	_C|_U,		_C,		_C|_U,		_C|_U,	/* ^L - ^O */
51	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^P - ^S */
52	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^T - ^W */
53	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^U - ^[ */
54	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^\ - ^_ */
55
56	_P|_U,		_P|_U,		_P|_U,		_P|_U,
57	_P|_U,		_P|_U,		_P|_U,		_P|_U,
58	_P|_U,		_P|_U,		_P|_U,		_P|_U,
59	_P|_U,		_P|_U,		_P|_U,		_P|_U,
60	_P|_U,		_P|_U,		_P|_U,		_P|_U,
61	_P|_U,		_P|_U,		_P|_U,		_P|_U,
62	_P|_U,		_P|_U,		_P|_U,		_P|_U,
63	_P|_U,		_P|_U,		_P|_U,		_P|_U,
64
65	_P|_U,		_P|_U,		_P|_U,		_P|_U,
66	_P|_U,		_P|_U,		_P|_U,		_P|_U,
67	_P|_U,		_P|_U,		_P|_U,		_P|_U,
68	_P|_U,		_P|_U,		_P|_U,		_P|_U,
69	_P|_U,		_P|_U,		_P|_U,		_P|_U,
70	_P|_U,		_P|_U,		_P|_U,		_P|_U,
71	_P|_U,		_P|_U,		_P|_U,		_P|_U,
72	_P|_U,		_P|_U,		_P|_U,		_P|_U,
73
74	_P|_U,		_P|_U,		_P|_U,		_P|_U,
75	_P|_U,		_P|_U,		_P|_U,		_P|_U,
76	_P|_U,		_P|_U,		_P|_U,		_P|_U,
77	_P|_U,		_P|_U,		_P|_U,		_P|_U,
78	_P|_U,		_P|_U,		_P|_U,		_P|_U,
79	_P|_U,		_P|_U,		_P|_U,		_P|_U,
80	_P|_U,		_P|_U,		_P|_U,		_P|_U,
81	_P|_U,		_P|_U,		_P|_U,		_C|_U,
82
83	_C|_U,		_C|_U,		_C|_U,		_C|_U,
84	_C|_U,		_C|_U,		_C|_U,		_C|_U,
85	_C|_U,		_C|_U,		_C|_U,		_C|_U,
86	_C|_U,		_C|_U,		_C|_U,		_C|_U,
87	_C|_U,		_C|_U,		_C|_U,		_C|_U,
88	_C|_U,		_C|_U,		_C|_U,		_C|_U,
89	_C|_U,		_C|_U,		_C|_U,		_C|_U,
90	_C|_U,		_C|_U,		_C|_U,		_C|_U,
91
92	_C|_U,		_C|_U,		_C|_U,		_C|_U,
93	_C|_U,		_C|_U,		_C|_U,		_C|_U,
94	_C|_U,		_C|_U,		_C|_U,		_C|_U,
95	_C|_U,		_C|_U,		_C|_U,		_C|_U,
96	_C|_U,		_C|_U,		_C|_U,		_C|_U,
97	_C|_U,		_C|_U,		_C|_U,		_C|_U,
98	_C|_U,		_C|_U,		_C|_U,		_C|_U,
99	_C|_U,		_C|_U,		_C|_U,		_C|_U,
100
101	_C|_U,		_C|_U,		_C|_U,		_C|_U,
102	_C|_U,		_C|_U,		_C|_U,		_C|_U,
103	_C|_U,		_C|_U,		_C|_U,		_C|_U,
104	_C|_U,		_C|_U,		_C|_U,		_C|_U,
105	_C|_U,		_C|_U,		_C|_U,		_C|_U,
106	_C|_U,		_C|_U,		_C|_U,		_C|_U,
107	_C|_U,		_C|_U,		_C|_U,		_C|_U,
108	_C|_U,		_C|_U,		_C|_U,		_C|_U,
109
110	_C|_U,		_C|_U,		_C|_U,		_C|_U,
111	_C|_U,		_C|_U,		_C|_U,		_C|_U,
112	_C|_U,		_C|_U,		_C|_U,		_C|_U,
113	_C|_U,		_C|_U,		_C|_U,		_C|_U,
114	_C|_U,		_C|_U,		_C|_U,		_C|_U,
115	_C|_U,		_C|_U,		_C|_U,		_C|_U,
116	_C|_U,		_C|_U,		_C|_U,		_C|_U,
117	_C|_U,		_C|_U,		_C|_U,		_C|_U
118};
119
120const char *_unctrl[] = {
121	"^@",	"^A",	"^B",	"^C",	"^D",	"^E",	"^F",	"^G",
122	"^H",	"^I",	"^J",	"^K",	"^L",	"^M",	"^N",	"^O",
123	"^P",	"^Q",	"^R",	"^S",	"^T",	"^U",	"^V",	"^W",
124	"^X",	"^Y",	"^Z",	"^[",	"^\\",	"^]",	"^^",	"^_",
125	" ",	"!",	"\"",	"#",	"$",	"%",	"&",	"'",
126	"(",	")",	"*",	"+",	",",	"-",	".",	"/",
127	"0",	"1",	"2",	"3",	"4",	"5",	"6",	"7",
128	"8",	"9",	":",	";",	"<",	"=",	">",	"?",
129	"@",	"A",	"B",	"C",	"D",	"E",	"F",	"G",
130	"H",	"I",	"J",	"K",	"L",	"M",	"N",	"O",
131	"P",	"Q",	"R",	"S",	"T",	"U",	"V",	"W",
132	"X",	"Y",	"Z",	"[",	"\\",	"]",	"^",	"_",
133	"`",	"a",	"b",	"c",	"d",	"e",	"f",	"g",
134	"h",	"i",	"j",	"k",	"l",	"m",	"n",	"o",
135	"p",	"q",	"r",	"s",	"t",	"u",	"v",	"w",
136	"x",	"y",	"z",	"{",	"|",	"}",	"~",	"^?",
137	"\\200","\\201","\\202","\\203","\\204","\\205","\\206","\\207",
138	"\\210","\\211","\\212","\\213","\\214","\\215","\\216","\\217",
139	"\\220","\\221","\\222","\\223","\\224","\\225","\\226","\\227",
140	"\\230","\\231","\\232","\\233","\\234","\\235","\\236","\\237",
141	"\\240","\\241","\\242","\\243","\\244","\\245","\\246","\\247",
142	"\\250","\\251","\\252","\\253","\\254","\\255","\\256","\\257",
143	"\\260","\\261","\\262","\\263","\\264","\\265","\\266","\\267",
144	"\\270","\\271","\\272","\\273","\\274","\\275","\\276","\\277",
145	"\\300","\\301","\\302","\\303","\\304","\\305","\\306","\\307",
146	"\\310","\\311","\\312","\\313","\\314","\\315","\\316","\\317",
147	"\\320","\\321","\\322","\\323","\\324","\\325","\\326","\\327",
148	"\\330","\\331","\\332","\\333","\\334","\\335","\\336","\\337",
149	"\\340","\\341","\\342","\\343","\\344","\\345","\\346","\\347",
150	"\\350","\\351","\\352","\\353","\\354","\\355","\\356","\\357",
151	"\\360","\\361","\\362","\\363","\\364","\\365","\\366","\\367",
152	"\\370","\\371","\\372","\\373","\\374","\\375","\\376","\\377"
153};
154