Annotation of 3BSD/cmd/sh/mode.h, revision 1.1.1.1

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