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