|
|
1.1 ! root 1: # ! 2: /* ! 3: * UNIX shell ! 4: * ! 5: * S. R. Bourne ! 6: * Bell Telephone Laboratories ! 7: * ! 8: */ ! 9: ! 10: ! 11: /* table 1 */ ! 12: #define T_SUB 01 ! 13: #define T_MET 02 ! 14: #define T_SPC 04 ! 15: #define T_DIP 010 ! 16: #define T_EOF 020 ! 17: #define T_EOR 040 ! 18: #define T_QOT 0100 ! 19: #define T_ESC 0200 ! 20: ! 21: /* table 2 */ ! 22: #define T_BRC 01 ! 23: #define T_DEF 02 ! 24: #define T_AST 04 ! 25: #define T_DIG 010 ! 26: #define T_FNG 020 ! 27: #define T_SHN 040 ! 28: #define T_IDC 0100 ! 29: #define T_SET 0200 ! 30: ! 31: /* for single chars */ ! 32: #define _TAB (T_SPC) ! 33: #define _SPC (T_SPC) ! 34: #define _UPC (T_IDC) ! 35: #define _LPC (T_IDC) ! 36: #define _DIG (T_DIG) ! 37: #define _EOF (T_EOF) ! 38: #define _EOR (T_EOR) ! 39: #define _BAR (T_DIP) ! 40: #define _HAT (T_MET) ! 41: #define _BRA (T_MET) ! 42: #define _KET (T_MET) ! 43: #define _SQB (T_FNG) ! 44: #define _AMP (T_DIP) ! 45: #define _SEM (T_DIP) ! 46: #define _LT (T_DIP) ! 47: #define _GT (T_DIP) ! 48: #define _LQU (T_QOT|T_ESC) ! 49: #define _BSL (T_ESC) ! 50: #define _DQU (T_QOT) ! 51: #define _DOL1 (T_SUB|T_ESC) ! 52: ! 53: #define _CBR T_BRC ! 54: #define _CKT T_DEF ! 55: #define _AST (T_AST|T_FNG) ! 56: #define _EQ (T_DEF) ! 57: #define _MIN (T_DEF|T_SHN) ! 58: #define _PCS (T_SHN) ! 59: #define _NUM (T_SHN) ! 60: #define _DOL2 (T_SHN) ! 61: #define _PLS (T_DEF|T_SET) ! 62: #define _AT (T_AST) ! 63: #define _QU (T_DEF|T_FNG|T_SHN) ! 64: ! 65: /* abbreviations for tests */ ! 66: #define _IDCH (T_IDC|T_DIG) ! 67: #define _META (T_SPC|T_DIP|T_MET|T_EOR) ! 68: ! 69: char _ctype1[]; ! 70: ! 71: /* nb these args are not call by value !!!! */ ! 72: #define space(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SPC)) ! 73: #define eofmeta(c) (((c)"E)==0 ANDF _ctype1[c]&(_META|T_EOF)) ! 74: #define qotchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_QOT)) ! 75: #define eolchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_EOR|T_EOF)) ! 76: #define dipchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_DIP)) ! 77: #define subchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_SUB|T_QOT)) ! 78: #define escchar(c) (((c)"E)==0 ANDF _ctype1[c]&(T_ESC)) ! 79: ! 80: char _ctype2[]; ! 81: ! 82: #define digit(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DIG)) ! 83: #define fngchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_FNG)) ! 84: #define dolchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_BRC|T_DIG|T_IDC|T_SHN)) ! 85: #define defchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_DEF)) ! 86: #define setchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_SET)) ! 87: #define digchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST|T_DIG)) ! 88: #define letter(c) (((c)"E)==0 ANDF _ctype2[c]&(T_IDC)) ! 89: #define alphanum(c) (((c)"E)==0 ANDF _ctype2[c]&(_IDCH)) ! 90: #define astchar(c) (((c)"E)==0 ANDF _ctype2[c]&(T_AST))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.