1*35168Smarc /* 2*35168Smarc 3*35168Smarc * Copyright (c) 1984, 1985, 1986 AT&T 4*35168Smarc * All Rights Reserved 5*35168Smarc 6*35168Smarc * THIS IS UNPUBLISHED PROPRIETARY SOURCE 7*35168Smarc * CODE OF AT&T. 8*35168Smarc * The copyright notice above does not 9*35168Smarc * evidence any actual or intended 10*35168Smarc * publication of such source code. 11*35168Smarc 12*35168Smarc */ 13*35168Smarc /* @(#)sym.h 1.1 */ 14*35168Smarc /* 15*35168Smarc * UNIX shell 16*35168Smarc * S. R. Bourne 17*35168Smarc * Rewritten by David Korn 18*35168Smarc */ 19*35168Smarc 20*35168Smarc 21*35168Smarc /* symbols for parsing */ 22*35168Smarc #define DOSYM 0405 23*35168Smarc #define FISYM 0420 24*35168Smarc #define EFSYM 0422 25*35168Smarc #define ELSYM 0421 26*35168Smarc #define INSYM 0412 27*35168Smarc #define BRSYM 0406 28*35168Smarc #define KTSYM 0450 29*35168Smarc #define THSYM 0444 30*35168Smarc #define ODSYM 0441 31*35168Smarc #define ESSYM 0442 32*35168Smarc #define IFSYM 0436 33*35168Smarc #define FORSYM 0435 34*35168Smarc #define WHSYM 0433 35*35168Smarc #define UNSYM 0427 36*35168Smarc #define CASYM 0417 37*35168Smarc #define PROCSYM 0460 38*35168Smarc #define SELSYM 0470 39*35168Smarc #define TIMSYM 0474 40*35168Smarc 41*35168Smarc #define SYMREP 04000 42*35168Smarc #define ECSYM (SYMREP|';') 43*35168Smarc #define ANDFSYM (SYMREP|'&') 44*35168Smarc #define ORFSYM (SYMREP|'|') 45*35168Smarc #define APPSYM (SYMREP|'>') 46*35168Smarc #define DOCSYM (SYMREP|'<') 47*35168Smarc #define SYMALT1 01000 48*35168Smarc #define SYMALT2 010000 49*35168Smarc #define COOPSYM (SYMALT1|'|') 50*35168Smarc #define IPROC (SYMALT1|'(') 51*35168Smarc #define OPROC (SYMALT2|'(') 52*35168Smarc #define EOFSYM 02000 53*35168Smarc #define SYMFLG 0400 54*35168Smarc 55*35168Smarc /* arg to `cmd' */ 56*35168Smarc #define NLFLG 1 57*35168Smarc #define MTFLG 2 58*35168Smarc 59*35168Smarc /* for peekc */ 60*35168Smarc #define MARK 0100000 61*35168Smarc 62*35168Smarc /* odd chars */ 63*35168Smarc #define DQUOTE '"' 64*35168Smarc #define SQUOTE '`' 65*35168Smarc #define DOLLAR '$' 66*35168Smarc #define BRACE '{' 67*35168Smarc #define LPAREN '(' 68*35168Smarc #define RPAREN ')' 69*35168Smarc 70*35168Smarc struct sysnod 71*35168Smarc { 72*35168Smarc #ifdef apollo 73*35168Smarc /* pointers can not be in readonly sections */ 74*35168Smarc char sysnam[28]; 75*35168Smarc #else 76*35168Smarc char *sysnam; 77*35168Smarc #endif /* apollo */ 78*35168Smarc unsigned sysval; 79*35168Smarc }; 80*35168Smarc 81*35168Smarc #define A_RAW 1 /* string needs no processing */ 82*35168Smarc #define A_MAKE 2 /* bit set during argument expansion */ 83*35168Smarc #define A_MAC 4 /* string needs macro expansion */ 84*35168Smarc #define A_EXP 8 /* string needs file expansion */ 85*35168Smarc 86*35168Smarc /* dummy for access only */ 87*35168Smarc struct argnod 88*35168Smarc { 89*35168Smarc struct argnod *argnxt; 90*35168Smarc struct argnod *argchn; 91*35168Smarc char argflag; 92*35168Smarc char argval[1]; 93*35168Smarc }; 94*35168Smarc 95*35168Smarc typedef struct sysnod SYSTAB[]; 96*35168Smarc typedef struct argnod *ARGPTR; 97*35168Smarc 98*35168Smarc extern int wdval; 99*35168Smarc extern int wdnum; 100*35168Smarc extern ARGPTR wdarg; 101*35168Smarc extern ARGPTR gchain; 102*35168Smarc extern int subflag; 103*35168Smarc extern SYSTAB reserved; 104*35168Smarc extern SYSTAB commands; 105*35168Smarc extern SYSTAB option_flags; 106*35168Smarc extern SYSTAB signal_names; 107*35168Smarc extern SYSTAB sig_messages; 108*35168Smarc extern SYSTAB testops; 109*35168Smarc extern SYSTAB attributes; 110*35168Smarc extern MSG let_syntax; 111*35168Smarc extern MSG unexpected; 112*35168Smarc extern MSG unmatched; 113*35168Smarc #ifdef DEVFD 114*35168Smarc extern MSG devfd; 115*35168Smarc #endif /* DEVFD */ 116