xref: /illumos-gate/usr/src/cmd/sh/ctype.h (revision 55fea89d)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
57c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
67c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
77c478bd9Sstevel@tonic-gate  * with the License.
87c478bd9Sstevel@tonic-gate  *
97c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate  * and limitations under the License.
137c478bd9Sstevel@tonic-gate  *
147c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate  *
207c478bd9Sstevel@tonic-gate  * CDDL HEADER END
217c478bd9Sstevel@tonic-gate  */
227c478bd9Sstevel@tonic-gate /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
237c478bd9Sstevel@tonic-gate /*	  All Rights Reserved  	*/
247c478bd9Sstevel@tonic-gate 
257c478bd9Sstevel@tonic-gate 
267c478bd9Sstevel@tonic-gate #ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.10.1.1	*/
277c478bd9Sstevel@tonic-gate /*
287c478bd9Sstevel@tonic-gate  *	UNIX shell
297c478bd9Sstevel@tonic-gate  */
307c478bd9Sstevel@tonic-gate 
317c478bd9Sstevel@tonic-gate 
327c478bd9Sstevel@tonic-gate /* table 1 */
337c478bd9Sstevel@tonic-gate #define T_SUB	01
347c478bd9Sstevel@tonic-gate #define T_MET	02
357c478bd9Sstevel@tonic-gate #define	T_SPC	04
367c478bd9Sstevel@tonic-gate #define T_DIP	010
377c478bd9Sstevel@tonic-gate #define T_EOF	020
387c478bd9Sstevel@tonic-gate #define T_EOR	040
397c478bd9Sstevel@tonic-gate #define T_QOT	0100
407c478bd9Sstevel@tonic-gate #define T_ESC	0200
417c478bd9Sstevel@tonic-gate 
427c478bd9Sstevel@tonic-gate /* table 2 */
437c478bd9Sstevel@tonic-gate #define T_BRC	01
447c478bd9Sstevel@tonic-gate #define T_DEF	02
457c478bd9Sstevel@tonic-gate #define T_AST	04
467c478bd9Sstevel@tonic-gate #define	T_DIG	010
477c478bd9Sstevel@tonic-gate #define T_SHN	040
487c478bd9Sstevel@tonic-gate #define	T_IDC	0100
497c478bd9Sstevel@tonic-gate #define T_SET	0200
507c478bd9Sstevel@tonic-gate 
517c478bd9Sstevel@tonic-gate /* for single chars */
527c478bd9Sstevel@tonic-gate #define _TAB	(T_SPC)
537c478bd9Sstevel@tonic-gate #define _SPC	(T_SPC)
547c478bd9Sstevel@tonic-gate #define _UPC	(T_IDC)
557c478bd9Sstevel@tonic-gate #define _LPC	(T_IDC)
567c478bd9Sstevel@tonic-gate #define _DIG	(T_DIG)
577c478bd9Sstevel@tonic-gate #define _EOF	(T_EOF)
587c478bd9Sstevel@tonic-gate #define _EOR	(T_EOR)
597c478bd9Sstevel@tonic-gate #define _BAR	(T_DIP)
607c478bd9Sstevel@tonic-gate #define _HAT	(T_MET)
617c478bd9Sstevel@tonic-gate #define _BRA	(T_MET)
627c478bd9Sstevel@tonic-gate #define _KET	(T_MET)
637c478bd9Sstevel@tonic-gate #define _AMP	(T_DIP)
647c478bd9Sstevel@tonic-gate #define _SEM	(T_DIP)
657c478bd9Sstevel@tonic-gate #define _LT	(T_DIP)
667c478bd9Sstevel@tonic-gate #define _GT	(T_DIP)
677c478bd9Sstevel@tonic-gate #define _LQU	(T_QOT|T_ESC)
687c478bd9Sstevel@tonic-gate #define _BSL	(T_ESC)
697c478bd9Sstevel@tonic-gate #define _DQU	(T_QOT|T_ESC)
707c478bd9Sstevel@tonic-gate #define _DOL1	(T_SUB|T_ESC)
717c478bd9Sstevel@tonic-gate 
727c478bd9Sstevel@tonic-gate #define _CBR	T_BRC
737c478bd9Sstevel@tonic-gate #define _CKT	T_DEF
747c478bd9Sstevel@tonic-gate #define _AST	(T_AST)
757c478bd9Sstevel@tonic-gate #define _EQ	(T_DEF)
767c478bd9Sstevel@tonic-gate #define _MIN	(T_DEF|T_SHN)
777c478bd9Sstevel@tonic-gate #define _PCS	(T_SHN)
787c478bd9Sstevel@tonic-gate #define _NUM	(T_SHN)
797c478bd9Sstevel@tonic-gate #define _DOL2	(T_SHN)
807c478bd9Sstevel@tonic-gate #define _PLS	(T_DEF|T_SET)
817c478bd9Sstevel@tonic-gate #define _AT	(T_AST)
827c478bd9Sstevel@tonic-gate #define _QU	(T_DEF|T_SHN)
837c478bd9Sstevel@tonic-gate 
847c478bd9Sstevel@tonic-gate /* abbreviations for tests */
857c478bd9Sstevel@tonic-gate #define _IDCH	(T_IDC|T_DIG)
867c478bd9Sstevel@tonic-gate #define _META	(T_SPC|T_DIP|T_MET|T_EOR)
877c478bd9Sstevel@tonic-gate 
88*55fea89dSDan Cross extern
897c478bd9Sstevel@tonic-gate #ifdef __STDC__
90*55fea89dSDan Cross const
917c478bd9Sstevel@tonic-gate #endif
927c478bd9Sstevel@tonic-gate unsigned char	_ctype1[];
937c478bd9Sstevel@tonic-gate 
947c478bd9Sstevel@tonic-gate /* nb these args are not call by value !!!! */
957c478bd9Sstevel@tonic-gate #define	space(c)	((c<QUOTE) && _ctype1[c]&(T_SPC))
967c478bd9Sstevel@tonic-gate #define eofmeta(c)	((c<QUOTE) && _ctype1[c]&(_META|T_EOF))
977c478bd9Sstevel@tonic-gate #define qotchar(c)	((c<QUOTE) && _ctype1[c]&(T_QOT))
987c478bd9Sstevel@tonic-gate #define eolchar(c)	((c<QUOTE) && _ctype1[c]&(T_EOR|T_EOF))
997c478bd9Sstevel@tonic-gate #define dipchar(c)	((c<QUOTE) && _ctype1[c]&(T_DIP))
1007c478bd9Sstevel@tonic-gate #define subchar(c)	((c<QUOTE) && _ctype1[c]&(T_SUB|T_QOT))
1017c478bd9Sstevel@tonic-gate #define escchar(c)	((c<QUOTE) && _ctype1[c]&(T_ESC))
1027c478bd9Sstevel@tonic-gate 
103*55fea89dSDan Cross extern
104*55fea89dSDan Cross #ifdef __STDC__
105*55fea89dSDan Cross const
106*55fea89dSDan Cross #endif
1077c478bd9Sstevel@tonic-gate unsigned char   _ctype2[];
1087c478bd9Sstevel@tonic-gate 
1097c478bd9Sstevel@tonic-gate #define	digit(c)	((c<QUOTE) && _ctype2[c]&(T_DIG))
1107c478bd9Sstevel@tonic-gate #define dolchar(c)	((c<QUOTE) && _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN))
1117c478bd9Sstevel@tonic-gate #define defchar(c)	((c<QUOTE) && _ctype2[c]&(T_DEF))
1127c478bd9Sstevel@tonic-gate #define setchar(c)	((c<QUOTE) && _ctype2[c]&(T_SET))
1137c478bd9Sstevel@tonic-gate #define digchar(c)	((c<QUOTE) && _ctype2[c]&(T_AST|T_DIG))
1147c478bd9Sstevel@tonic-gate #define	letter(c)	((c<QUOTE) && _ctype2[c]&(T_IDC))
1157c478bd9Sstevel@tonic-gate #define alphanum(c)	((c<QUOTE) && _ctype2[c]&(_IDCH))
1167c478bd9Sstevel@tonic-gate #define astchar(c)	((c<QUOTE) && _ctype2[c]&(T_AST))
117