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