1 0 stevel /* 2 0 stevel * Copyright 1997 Sun Microsystems, Inc. All rights reserved. 3 0 stevel * Use is subject to license terms. 4 0 stevel */ 5 0 stevel 6 0 stevel /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 7 0 stevel /* All Rights Reserved */ 8 0 stevel 9 0 stevel /* 10 0 stevel * Copyright (c) 1980 Regents of the University of California. 11 0 stevel * All rights reserved. The Berkeley Software License Agreement 12 0 stevel * specifies the terms and conditions for redistribution. 13 0 stevel */ 14 0 stevel 15 0 stevel #pragma ident "%Z%%M% %I% %E% SMI" 16 0 stevel 17 0 stevel /* 18 0 stevel * Macros to classify characters. 19 0 stevel */ 20 0 stevel 21 0 stevel #ifdef MBCHAR 22 0 stevel #include <wchar.h> 23 0 stevel #include <wctype.h> 24 0 stevel #define isauxspZ (!isascii(Z)&&!(Z"E)&&iswspace(Z)) 25 0 stevel #define isauxsp(c) (Z=((unsigned)(c)), isauxspZ) 26 0 stevel /* Regocnizes non-ASCII space characters. */ 27 0 stevel #else 28 0 stevel #include <ctype.h> 29 0 stevel /* macros of macros to reduce further #ifdef MBCHAR later. Please be patient!*/ 30 0 stevel #define iswdigit(c) isdigit(c) 31 0 stevel #define iswalpha(c) isalpha(c) 32 0 stevel #define isphonogram(c) 0 33 0 stevel #define isideogram(c) 0 34 0 stevel #define isauxsp(c) 0 35 0 stevel #define isauxspZ 0 36 0 stevel #endif 37 0 stevel extern unsigned short _cmap[];/* Defined in sh.char.c */ 38 0 stevel unsigned int Z; /* A place to save macro arg to avoid side-effect!*/ 39 0 stevel 40 0 stevel #define _Q 0x01 /* '" */ 41 0 stevel #define _Q1 0x02 /* ` */ 42 0 stevel #define _SP 0x04 /* space and tab */ 43 0 stevel #define _NL 0x08 /* \n */ 44 0 stevel #define _META 0x10 /* lex meta characters, sp #'`";&<>()|\t\n */ 45 0 stevel #define _GLOB 0x20 /* glob characters, *?{[` */ 46 0 stevel #define _ESC 0x40 /* \ */ 47 0 stevel #define _DOL 0x80 /* $ */ 48 0 stevel #define _DIG 0x100 /* 0-9 */ 49 0 stevel #define _LET 0x200 /* a-z, A-Z, _ NO LONGER OF REAL USE. */ 50 0 stevel 51 0 stevel 52 0 stevel #define quoted(c) ((unsigned)(c) & QUOTE) 53 0 stevel 54 0 stevel #define cmapZ(bits) (isascii(Z)?(_cmap[Z] & (bits)):0) 55 0 stevel #define cmap(c, bits) (Z=((unsigned)(c)), cmapZ(bits)) 56 0 stevel 57 0 stevel #define isglob(c) cmap(c, _GLOB) 58 0 stevel #define ismeta(c) cmap(c, _META) 59 0 stevel #define digit(c) cmap(c, _DIG) 60 0 stevel #define issp(c) (Z=((unsigned)(c)), cmapZ( _SP)||isauxspZ) 61 0 stevel /*WAS isspace(c)*/ 62 0 stevel #define isspnl(c) (Z=((unsigned)(c)), cmapZ( _SP|_NL)||isauxspZ) 63 0 stevel #define letter(c) \ 64 0 stevel (Z=((unsigned)(c)), !quoted(Z)&&(iswalpha(Z)||((Z)=='_')\ 65 0 stevel ||isphonogram(Z)||isideogram(Z))) 66 0 stevel #define alnum(c) \ 67 0 stevel (Z=((unsigned)(c)), !quoted(Z)&&(iswalpha(Z)||((Z)=='_')\ 68 0 stevel ||iswdigit(Z)||isphonogram(Z)||isideogram(Z))) 69