1: /* defs.h 4.4 85/03/19 */ 2: 3: # 4: /* 5: * UNIX shell 6: */ 7: 8: /* error exits from various parts of shell */ 9: #define ERROR 1 10: #define SYNBAD 2 11: #define SIGFAIL 3 12: #define SIGFLG 0200 13: 14: /* command tree */ 15: #define FPRS 020 16: #define FINT 040 17: #define FAMP 0100 18: #define FPIN 0400 19: #define FPOU 01000 20: #define FPCL 02000 21: #define FCMD 04000 22: #define COMMSK 017 23: 24: #define TCOM 0 25: #define TPAR 1 26: #define TFIL 2 27: #define TLST 3 28: #define TIF 4 29: #define TWH 5 30: #define TUN 6 31: #define TSW 7 32: #define TAND 8 33: #define TORF 9 34: #define TFORK 10 35: #define TFOR 11 36: 37: /* execute table */ 38: #define SYSSET 1 39: #define SYSCD 2 40: #define SYSEXEC 3 41: #define SYSLOGIN 4 42: #define SYSTRAP 5 43: #define SYSEXIT 6 44: #define SYSSHFT 7 45: #define SYSWAIT 8 46: #define SYSCONT 9 47: #define SYSBREAK 10 48: #define SYSEVAL 11 49: #define SYSDOT 12 50: #define SYSRDONLY 13 51: #define SYSTIMES 14 52: #define SYSXPORT 15 53: #define SYSNULL 16 54: #define SYSREAD 17 55: #define SYSTST 18 56: #define SYSUMASK 19 57: 58: /* used for input and output of shell */ 59: #define INIO 10 60: #define OTIO 11 61: 62: /*io nodes*/ 63: #define USERIO 10 64: #define IOUFD 15 65: #define IODOC 16 66: #define IOPUT 32 67: #define IOAPP 64 68: #define IOMOV 128 69: #define IORDW 256 70: #define INPIPE 0 71: #define OTPIPE 1 72: 73: /* arg list terminator */ 74: #define ENDARGS 0 75: 76: #include "mac.h" 77: #include "mode.h" 78: #include "name.h" 79: 80: 81: /* result type declarations */ 82: #define alloc malloc 83: ADDRESS alloc(); 84: VOID addblok(); 85: STRING make(); 86: STRING movstr(); 87: TREPTR cmd(); 88: TREPTR makefork(); 89: NAMPTR lookup(); 90: VOID setname(); 91: VOID setargs(); 92: DOLPTR useargs(); 93: REAL expr(); 94: STRING catpath(); 95: STRING getpath(); 96: STRING *scan(); 97: STRING mactrim(); 98: STRING macro(); 99: STRING execs(); 100: VOID await(); 101: VOID post(); 102: STRING copyto(); 103: VOID exname(); 104: STRING staknam(); 105: VOID printnam(); 106: VOID printflg(); 107: VOID prs(); 108: VOID prc(); 109: VOID setupenv(); 110: STRING *setenv(); 111: 112: #define attrib(n,f) (n->namflg |= f) 113: #define round(a,b) (((int)((ADR(a)+b)-1))&~((b)-1)) 114: #define closepipe(x) (close(x[INPIPE]), close(x[OTPIPE])) 115: #define eq(a,b) (cf(a,b)==0) 116: #define max(a,b) ((a)>(b)?(a):(b)) 117: #define assert(x) ; 118: 119: /* temp files and io */ 120: UFD output; 121: INT ioset; 122: IOPTR iotemp; /* files to be deleted sometime */ 123: IOPTR iopend; /* documents waiting to be read at NL */ 124: 125: /* substitution */ 126: INT dolc; 127: STRING *dolv; 128: DOLPTR argfor; 129: ARGPTR gchain; 130: 131: /* stack */ 132: #define BLK(x) ((BLKPTR)(x)) 133: #define BYT(x) ((BYTPTR)(x)) 134: #define STK(x) ((STKPTR)(x)) 135: #define ADR(x) ((char*)(x)) 136: 137: /* stak stuff */ 138: #include "stak.h" 139: 140: /* string constants */ 141: MSG atline; 142: MSG readmsg; 143: MSG colon; 144: MSG minus; 145: MSG nullstr; 146: MSG sptbnl; 147: MSG unexpected; 148: MSG endoffile; 149: MSG synmsg; 150: 151: /* name tree and words */ 152: SYSTAB reserved; 153: INT wdval; 154: INT wdnum; 155: ARGPTR wdarg; 156: INT wdset; 157: BOOL reserv; 158: 159: /* prompting */ 160: MSG stdprompt; 161: MSG supprompt; 162: MSG profile; 163: 164: /* built in names */ 165: NAMNOD fngnod; 166: NAMNOD ifsnod; 167: NAMNOD homenod; 168: NAMNOD mailnod; 169: NAMNOD pathnod; 170: NAMNOD ps1nod; 171: NAMNOD ps2nod; 172: 173: /* special names */ 174: MSG flagadr; 175: STRING cmdadr; 176: STRING exitadr; 177: STRING dolladr; 178: STRING pcsadr; 179: STRING pidadr; 180: 181: MSG defpath; 182: 183: /* names always present */ 184: MSG mailname; 185: MSG homename; 186: MSG pathname; 187: MSG fngname; 188: MSG ifsname; 189: MSG ps1name; 190: MSG ps2name; 191: 192: /* transput */ 193: CHAR tmpout[]; 194: STRING tmpnam; 195: INT serial; 196: #define TMPNAM 7 197: FILE standin; 198: #define input (standin->fdes) 199: #define eof (standin->feof) 200: INT peekc; 201: STRING comdiv; 202: MSG devnull; 203: 204: /* flags */ 205: #define noexec 01 206: #define intflg 02 207: #define prompt 04 208: #define setflg 010 209: #define errflg 020 210: #define ttyflg 040 211: #define forked 0100 212: #define oneflg 0200 213: #define rshflg 0400 214: #define waiting 01000 215: #define stdflg 02000 216: #define execpr 04000 217: #define readpr 010000 218: #define keyflg 020000 219: #define batchflg 040000 220: INT flags; 221: 222: /* error exits from various parts of shell */ 223: #include <setjmp.h> 224: jmp_buf subshell; 225: jmp_buf errshell; 226: jmp_buf INTbuf; 227: 228: /* fault handling */ 229: #include "brkincr.h" 230: POS brkincr; 231: 232: #define MINTRAP 0 233: #define MAXTRAP 32 234: 235: #define INTR 2 236: #define QUIT 3 237: #define MEMF 11 238: #define ALARM 14 239: #define KILL 15 240: #define TRAPSET 2 241: #define SIGSET 4 242: #define SIGMOD 8 243: 244: VOID fault(); 245: BOOL trapnote; 246: STRING trapcom[]; 247: BOOL trapflg[]; 248: BOOL trapjmp[]; 249: 250: /* name tree and words */ 251: STRING *environ; 252: CHAR numbuf[]; 253: MSG export; 254: MSG readonly; 255: 256: /* execflgs */ 257: INT exitval; 258: BOOL execbrk; 259: INT loopcnt; 260: INT breakcnt; 261: 262: /* messages */ 263: MSG mailmsg; 264: MSG coredump; 265: MSG badopt; 266: MSG badparam; 267: MSG badsub; 268: MSG nospace; 269: MSG notfound; 270: MSG badtrap; 271: MSG baddir; 272: MSG badshift; 273: MSG illegal; 274: MSG restricted; 275: MSG execpmsg; 276: MSG notid; 277: MSG wtfailed; 278: MSG badcreate; 279: MSG piperr; 280: MSG badopen; 281: MSG badnum; 282: MSG arglist; 283: MSG txtbsy; 284: MSG toobig; 285: MSG badexec; 286: MSG notfound; 287: MSG badfile; 288: 289: address end[]; 290: 291: #include "ctype.h"