|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley Software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)sh.char.h 5.3 (Berkeley) 3/29/86 ! 7: */ ! 8: ! 9: /* ! 10: * Table for spotting special characters quickly ! 11: * ! 12: * Makes for very obscure but efficient coding. ! 13: */ ! 14: ! 15: extern unsigned short _cmap[]; ! 16: ! 17: #define _Q 0x01 /* '" */ ! 18: #define _Q1 0x02 /* ` */ ! 19: #define _SP 0x04 /* space and tab */ ! 20: #define _NL 0x08 /* \n */ ! 21: #define _META 0x10 /* lex meta characters, sp #'`";&<>()|\t\n */ ! 22: #define _GLOB 0x20 /* glob characters, *?{[` */ ! 23: #define _ESC 0x40 /* \ */ ! 24: #define _DOL 0x80 /* $ */ ! 25: #define _DIG 0x100 /* 0-9 */ ! 26: #define _LET 0x200 /* a-z, A-Z, _ */ ! 27: ! 28: #define cmap(c, bits) (_cmap[(unsigned char)(c)] & (bits)) ! 29: ! 30: #define isglob(c) cmap(c, _GLOB) ! 31: #define isspace(c) cmap(c, _SP) ! 32: #define isspnl(c) cmap(c, _SP|_NL) ! 33: #define ismeta(c) cmap(c, _META) ! 34: #define digit(c) cmap(c, _DIG) ! 35: #define letter(c) cmap(c, _LET) ! 36: #define alnum(c) (digit(c) || letter(c))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.