Annotation of 42BSD/bin/sh/mode.h, revision 1.1.1.1

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))

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.