/* * Copyright (c) 1984, 1985, 1986 AT&T * All Rights Reserved * THIS IS UNPUBLISHED PROPRIETARY SOURCE * CODE OF AT&T. * The copyright notice above does not * evidence any actual or intended * publication of such source code. */ /* @(#)shtype.h 1.1 */ /* * UNIX shell * * S. R. Bourne * AT&T Bell Laboratories * */ #define const /* table 1 */ #define QUOTE (~0177) #define T_SUB 01 #define T_MET 02 #define T_SPC 04 #define T_DIP 010 #define T_EXP 020 /* characters which require expansion or substitution */ #define T_EOR 040 #define T_QOT 0100 #define T_ESC 0200 /* table 2 */ #define T_ALP 01 /* alpha, but not upper or lower */ #define T_DEF 02 #define T_AST 04 /* * or @ */ #define T_DIG 010 /* digit */ #define T_UPC 020 /* uppercase only */ #define T_SHN 040 /* legal parameter characters */ #define T_LPC 0100 /* lowercase only */ #define T_SET 0200 /* for single chars */ #define _TAB (T_SPC) #define _SPC (T_SPC) #define _ALP (T_ALP) #define _UPC (T_UPC) #define _LPC (T_LPC) #define _DIG (T_DIG) #define _EOF (T_EOR) #define _EOR (T_EOR) #define _BAR (T_DIP) #define _BRA (T_MET|T_DIP) #define _KET (T_MET) #define _AMP (T_DIP) #define _SEM (T_DIP) #define _LT (T_DIP) #define _GT (T_DIP) #define _LQU (T_QOT|T_ESC|T_EXP) #define _QU1 T_EXP #define _AST1 T_EXP #define _BSL (T_ESC) #define _DQU (T_QOT) #define _DOL1 (T_SUB|T_ESC|T_EXP) #define _CBR T_SHN #define _CKT T_DEF #define _AST (T_AST) #define _EQ (T_DEF) #define _MIN (T_DEF|T_SHN) #define _PCS (T_DEF|T_SHN|T_SET) #define _NUM (T_DEF|T_SHN|T_SET) #define _DOL2 (T_SHN) #define _PLS (T_DEF|T_SET) #define _AT (T_AST) #define _QU (T_DEF|T_SHN) #define _LPAR T_SHN #define _SS2 T_ALP #define _SS3 T_ALP /* abbreviations for tests */ #define _IDCH (T_UPC|T_LPC|T_DIG|T_ALP) #define _META (T_SPC|T_DIP|T_MET|T_EOR) extern char _ctype1[]; /* these args are not call by value !!!! */ #define isspace(c) (_ctype1[c]&(T_SPC)) #define ismeta(c) (_ctype1[c]&(_META)) #define isqmeta(c) (_ctype1[c]&(_META|T_QOT)) #define qotchar(c) (_ctype1[c]&(T_QOT)) #define eolchar(c) (_ctype1[c]&(T_EOR)) #define dipchar(c) (_ctype1[c]&(T_DIP)) #define subchar(c) (_ctype1[c]&(T_SUB|T_QOT)) #define escchar(c) (_ctype1[c]&(T_ESC)) #define expchar(c) (_ctype1[c]&(T_EXP|T_SPC)) #define isexp(c) (_ctype1[c]&T_EXP) extern char _ctype2[]; #define isprint(c) (((c)&0340) && ((c)!=0177)) #define isdigit(c) (_ctype2[c]&(T_DIG)) #define dolchar(c) (_ctype2[c]&(T_AST|_IDCH|T_SHN)) #define defchar(c) (_ctype2[c]&(T_DEF)) #define setchar(c) (_ctype2[c]&(T_SET)) #define digchar(c) (_ctype2[c]&(T_AST|T_DIG)) #define isalpha(c) (_ctype2[c]&(T_UPC|T_LPC|T_ALP)) #define isalnum(c) (_ctype2[c]&(_IDCH)) #define isupper(c) (_ctype2[c]&(T_UPC)) #define islower(c) (_ctype2[c]&(T_LPC)) #define astchar(c) (_ctype2[c]&(T_AST)) #define toupper(c) ((c) + 'A' - 'a') #define tolower(c) ((c) + 'a' - 'A')