Annotation of 3BSD/cmd/sh/mode.h, revision 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.