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