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