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