|
|
1.1 ! root 1: /* mode.h 4.1 82/05/07 */ ! 2: ! 3: # ! 4: /* ! 5: * UNIX shell ! 6: */ ! 7: ! 8: ! 9: #define BYTESPERWORD (sizeof(char *)) ! 10: ! 11: TYPE char CHAR; ! 12: TYPE char BOOL; ! 13: TYPE int UFD; ! 14: TYPE int INT; ! 15: TYPE float REAL; ! 16: TYPE char *ADDRESS; ! 17: TYPE long int L_INT; ! 18: TYPE int VOID; ! 19: TYPE unsigned POS; ! 20: TYPE char *STRING; ! 21: TYPE char MSG[]; ! 22: TYPE int PIPE[]; ! 23: TYPE char *STKPTR; ! 24: TYPE char *BYTPTR; ! 25: ! 26: STRUCT stat STATBUF; /* defined in /usr/sys/stat.h */ ! 27: STRUCT blk *BLKPTR; ! 28: STRUCT fileblk FILEBLK; ! 29: STRUCT filehdr FILEHDR; ! 30: STRUCT fileblk *FILE; ! 31: STRUCT trenod *TREPTR; ! 32: STRUCT forknod *FORKPTR; ! 33: STRUCT comnod *COMPTR; ! 34: STRUCT swnod *SWPTR; ! 35: STRUCT regnod *REGPTR; ! 36: STRUCT parnod *PARPTR; ! 37: STRUCT ifnod *IFPTR; ! 38: STRUCT whnod *WHPTR; ! 39: STRUCT fornod *FORPTR; ! 40: STRUCT lstnod *LSTPTR; ! 41: STRUCT argnod *ARGPTR; ! 42: STRUCT dolnod *DOLPTR; ! 43: STRUCT ionod *IOPTR; ! 44: STRUCT namnod NAMNOD; ! 45: STRUCT namnod *NAMPTR; ! 46: STRUCT sysnod SYSNOD; ! 47: STRUCT sysnod *SYSPTR; ! 48: STRUCT sysnod SYSTAB[]; ! 49: #define NIL ((char*)0) ! 50: ! 51: ! 52: /* the following nonsense is required ! 53: * because casts turn an Lvalue ! 54: * into an Rvalue so two cheats ! 55: * are necessary, one for each context. ! 56: */ ! 57: union { int _cheat;}; ! 58: #define Lcheat(a) ((a)._cheat) ! 59: #define Rcheat(a) ((int)(a)) ! 60: ! 61: ! 62: /* address puns for storage allocation */ ! 63: UNION { ! 64: FORKPTR _forkptr; ! 65: COMPTR _comptr; ! 66: PARPTR _parptr; ! 67: IFPTR _ifptr; ! 68: WHPTR _whptr; ! 69: FORPTR _forptr; ! 70: LSTPTR _lstptr; ! 71: BLKPTR _blkptr; ! 72: NAMPTR _namptr; ! 73: BYTPTR _bytptr; ! 74: } address; ! 75: ! 76: ! 77: /* for functions that do not return values */ ! 78: /* ! 79: struct void {INT vvvvvvvv;}; ! 80: */ ! 81: ! 82: ! 83: /* heap storage */ ! 84: struct blk { ! 85: BLKPTR word; ! 86: }; ! 87: ! 88: #define BUFSIZ 64 ! 89: struct fileblk { ! 90: UFD fdes; ! 91: POS flin; ! 92: BOOL feof; ! 93: CHAR fsiz; ! 94: STRING fnxt; ! 95: STRING fend; ! 96: STRING *feval; ! 97: FILE fstak; ! 98: CHAR fbuf[BUFSIZ]; ! 99: }; ! 100: ! 101: /* for files not used with file descriptors */ ! 102: struct filehdr { ! 103: UFD fdes; ! 104: POS flin; ! 105: BOOL feof; ! 106: CHAR fsiz; ! 107: STRING fnxt; ! 108: STRING fend; ! 109: STRING *feval; ! 110: FILE fstak; ! 111: CHAR _fbuf[1]; ! 112: }; ! 113: ! 114: struct sysnod { ! 115: STRING sysnam; ! 116: INT sysval; ! 117: }; ! 118: ! 119: /* this node is a proforma for those that follow */ ! 120: struct trenod { ! 121: INT tretyp; ! 122: IOPTR treio; ! 123: }; ! 124: ! 125: /* dummy for access only */ ! 126: struct argnod { ! 127: ARGPTR argnxt; ! 128: CHAR argval[1]; ! 129: }; ! 130: ! 131: struct dolnod { ! 132: DOLPTR dolnxt; ! 133: INT doluse; ! 134: CHAR dolarg[1]; ! 135: }; ! 136: ! 137: struct forknod { ! 138: INT forktyp; ! 139: IOPTR forkio; ! 140: TREPTR forktre; ! 141: }; ! 142: ! 143: struct comnod { ! 144: INT comtyp; ! 145: IOPTR comio; ! 146: ARGPTR comarg; ! 147: ARGPTR comset; ! 148: }; ! 149: ! 150: struct ifnod { ! 151: INT iftyp; ! 152: TREPTR iftre; ! 153: TREPTR thtre; ! 154: TREPTR eltre; ! 155: }; ! 156: ! 157: struct whnod { ! 158: INT whtyp; ! 159: TREPTR whtre; ! 160: TREPTR dotre; ! 161: }; ! 162: ! 163: struct fornod { ! 164: INT fortyp; ! 165: TREPTR fortre; ! 166: STRING fornam; ! 167: COMPTR forlst; ! 168: }; ! 169: ! 170: struct swnod { ! 171: INT swtyp; ! 172: STRING swarg; ! 173: REGPTR swlst; ! 174: }; ! 175: ! 176: struct regnod { ! 177: ARGPTR regptr; ! 178: TREPTR regcom; ! 179: REGPTR regnxt; ! 180: }; ! 181: ! 182: struct parnod { ! 183: INT partyp; ! 184: TREPTR partre; ! 185: }; ! 186: ! 187: struct lstnod { ! 188: INT lsttyp; ! 189: TREPTR lstlef; ! 190: TREPTR lstrit; ! 191: }; ! 192: ! 193: struct ionod { ! 194: INT iofile; ! 195: STRING ioname; ! 196: IOPTR ionxt; ! 197: IOPTR iolst; ! 198: }; ! 199: ! 200: #define FORKTYPE (sizeof(struct forknod)) ! 201: #define COMTYPE (sizeof(struct comnod)) ! 202: #define IFTYPE (sizeof(struct ifnod)) ! 203: #define WHTYPE (sizeof(struct whnod)) ! 204: #define FORTYPE (sizeof(struct fornod)) ! 205: #define SWTYPE (sizeof(struct swnod)) ! 206: #define REGTYPE (sizeof(struct regnod)) ! 207: #define PARTYPE (sizeof(struct parnod)) ! 208: #define LSTTYPE (sizeof(struct lstnod)) ! 209: #define IOTYPE (sizeof(struct ionod))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.