Home | History | Annotate | Line # | Download | only in csh
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