|
|
1.1 ! root 1: /* mode.h 4.2 88/04/24 */ ! 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: UNION 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 Lcheat(a) (*(int *)&(a)) ! 60: #define Rcheat(a) ( (int ) (a)) ! 61: ! 62: ! 63: /* address puns for storage allocation */ ! 64: UNION { ! 65: FORKPTR _forkptr; ! 66: COMPTR _comptr; ! 67: PARPTR _parptr; ! 68: IFPTR _ifptr; ! 69: WHPTR _whptr; ! 70: FORPTR _forptr; ! 71: LSTPTR _lstptr; ! 72: BLKPTR _blkptr; ! 73: NAMPTR _namptr; ! 74: BYTPTR _bytptr; ! 75: } address; ! 76: ! 77: ! 78: /* for functions that do not return values */ ! 79: /* ! 80: struct void {INT vvvvvvvv;}; ! 81: */ ! 82: ! 83: ! 84: /* heap storage */ ! 85: struct blk { ! 86: BLKPTR word; ! 87: }; ! 88: ! 89: #define BUFSIZ 64 ! 90: struct fileblk { ! 91: UFD fdes; ! 92: POS flin; ! 93: BOOL feof; ! 94: CHAR fsiz; ! 95: STRING fnxt; ! 96: STRING fend; ! 97: STRING *feval; ! 98: FILE fstak; ! 99: CHAR fbuf[BUFSIZ]; ! 100: }; ! 101: ! 102: /* for files not used with file descriptors */ ! 103: struct filehdr { ! 104: UFD fdes; ! 105: POS flin; ! 106: BOOL feof; ! 107: CHAR fsiz; ! 108: STRING fnxt; ! 109: STRING fend; ! 110: STRING *feval; ! 111: FILE fstak; ! 112: CHAR _fbuf[1]; ! 113: }; ! 114: ! 115: struct sysnod { ! 116: STRING sysnam; ! 117: INT sysval; ! 118: }; ! 119: ! 120: /* dummy for access only */ ! 121: struct argnod { ! 122: ARGPTR argnxt; ! 123: CHAR argval[1]; ! 124: }; ! 125: ! 126: struct dolnod { ! 127: DOLPTR dolnxt; ! 128: INT doluse; ! 129: CHAR dolarg[1]; ! 130: }; ! 131: ! 132: struct forknod { ! 133: INT forktyp; ! 134: IOPTR forkio; ! 135: TREPTR forktre; ! 136: }; ! 137: ! 138: struct comnod { ! 139: INT comtyp; ! 140: IOPTR comio; ! 141: ARGPTR comarg; ! 142: ARGPTR comset; ! 143: }; ! 144: ! 145: struct ifnod { ! 146: INT iftyp; ! 147: TREPTR iftre; ! 148: TREPTR thtre; ! 149: TREPTR eltre; ! 150: }; ! 151: ! 152: struct whnod { ! 153: INT whtyp; ! 154: TREPTR whtre; ! 155: TREPTR dotre; ! 156: }; ! 157: ! 158: struct fornod { ! 159: INT fortyp; ! 160: TREPTR fortre; ! 161: STRING fornam; ! 162: COMPTR forlst; ! 163: }; ! 164: ! 165: struct swnod { ! 166: INT swtyp; ! 167: STRING swarg; ! 168: REGPTR swlst; ! 169: }; ! 170: ! 171: struct regnod { ! 172: ARGPTR regptr; ! 173: TREPTR regcom; ! 174: REGPTR regnxt; ! 175: }; ! 176: ! 177: struct parnod { ! 178: INT partyp; ! 179: TREPTR partre; ! 180: }; ! 181: ! 182: struct lstnod { ! 183: INT lsttyp; ! 184: TREPTR lstlef; ! 185: TREPTR lstrit; ! 186: }; ! 187: ! 188: struct ionod { ! 189: INT iofile; ! 190: STRING ioname; ! 191: IOPTR ionxt; ! 192: IOPTR iolst; ! 193: }; ! 194: ! 195: #define FORKTYPE (sizeof(struct forknod)) ! 196: #define COMTYPE (sizeof(struct comnod)) ! 197: #define IFTYPE (sizeof(struct ifnod)) ! 198: #define WHTYPE (sizeof(struct whnod)) ! 199: #define FORTYPE (sizeof(struct fornod)) ! 200: #define SWTYPE (sizeof(struct swnod)) ! 201: #define REGTYPE (sizeof(struct regnod)) ! 202: #define PARTYPE (sizeof(struct parnod)) ! 203: #define LSTTYPE (sizeof(struct lstnod)) ! 204: #define IOTYPE (sizeof(struct ionod)) ! 205: ! 206: /* this node is a proforma for those that precede it */ ! 207: union trenod { ! 208: INT tretyp; ! 209: struct { INT dummyy; IOPTR treio;} treio; ! 210: struct forknod forknod; ! 211: struct comnod comnod; ! 212: struct ifnod ifnod; ! 213: struct whnod whnod; ! 214: struct fornod fornod; ! 215: struct swnod swnod; ! 216: struct lstnod lstnod; ! 217: struct parnod parnod; ! 218: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.