Annotation of 3BSD/cmd/awk/awk.def, revision 1.1

1.1     ! root        1: #define        xfree(a)        { if(a!=NULL) yfree(a); a=NULL;}
        !             2: #define yfree free
        !             3: #ifdef DEBUG
        !             4: #      define  dprintf if(dbg)printf
        !             5: #else
        !             6: #      define  dprintf(x1, x2, x3, x4)
        !             7: #endif
        !             8: typedef        double  awkfloat;
        !             9: 
        !            10: extern char    **FS;
        !            11: extern char    **RS;
        !            12: extern char    **ORS;
        !            13: extern char    **OFS;
        !            14: extern char    **OFMT;
        !            15: extern awkfloat *NR;
        !            16: extern awkfloat *NF;
        !            17: extern char    **FILENAME;
        !            18: 
        !            19: extern char    record[];
        !            20: extern int     dbg;
        !            21: extern int     lineno;
        !            22: extern int     errorflag;
        !            23: extern int     donefld;        /* 1 if record broken into fields */
        !            24: extern int     donerec;        /* 1 if record is valid (no fld has changed */
        !            25: 
        !            26: typedef struct val {   /* general value during processing */
        !            27:        char    *nval;  /* name, for variables only */
        !            28:        char    *sval;  /* string value */
        !            29:        awkfloat        fval;   /* value as number */
        !            30:        unsigned        tval;   /* type info */
        !            31:        struct val      *nextval;       /* ptr to next if chained */
        !            32: } cell;
        !            33: extern cell *symtab[];
        !            34: cell   *setsymtab(), *lookup(), **makesymtab();
        !            35: 
        !            36: extern cell    *recloc;        /* location of input record */
        !            37: extern cell    *nrloc;         /* NR */
        !            38: extern cell    *nfloc;         /* NF */
        !            39: 
        !            40: #define        STR     01      /* string value is valid */
        !            41: #define        NUM     02      /* number value is valid */
        !            42: #define FLD    04      /* FLD means don't free string space */
        !            43: #define        CON     010     /* this is a constant */
        !            44: #define        ARR     020     /* this is an array */
        !            45: 
        !            46: awkfloat setfval(), getfval();
        !            47: char   *setsval(), *getsval();
        !            48: char   *tostring(), *tokname(), *malloc();
        !            49: double log(), sqrt(), exp(), atof();
        !            50: 
        !            51: /* function types */
        !            52: #define        FLENGTH 1
        !            53: #define        FSQRT   2
        !            54: #define        FEXP    3
        !            55: #define        FLOG    4
        !            56: #define        FINT    5
        !            57: 
        !            58: typedef struct {
        !            59:        char otype;
        !            60:        char osub;
        !            61:        cell *optr;
        !            62: } obj;
        !            63: 
        !            64: #define BOTCH  1
        !            65: struct nd {
        !            66:        char ntype;
        !            67:        char subtype;
        !            68:        struct nd *nnext;
        !            69:        int nobj;
        !            70:        struct nd *narg[BOTCH]; /* C won't take a zero length array */
        !            71: };
        !            72: typedef struct nd node;
        !            73: extern node    *winner;
        !            74: extern node    *nullstat;
        !            75: 
        !            76: /* otypes */
        !            77: #define OCELL  0
        !            78: #define OEXPR  1
        !            79: #define OBOOL  2
        !            80: #define OJUMP  3
        !            81: 
        !            82: /* cell subtypes */
        !            83: #define CTEMP  4
        !            84: #define CNAME  3 
        !            85: #define CVAR   2
        !            86: #define CFLD   1
        !            87: #define CCON   0
        !            88: 
        !            89: /* bool subtypes */
        !            90: #define BTRUE  1
        !            91: #define BFALSE 2
        !            92: 
        !            93: /* jump subtypes */
        !            94: #define JEXIT  1
        !            95: #define JNEXT  2
        !            96: #define        JBREAK  3
        !            97: #define        JCONT   4
        !            98: 
        !            99: /* node types */
        !           100: #define NVALUE 1
        !           101: #define NSTAT  2
        !           102: #define NEXPR  3
        !           103: #define NPA2   4
        !           104: 
        !           105: extern obj     (*proctab[])();
        !           106: extern obj     true, false;
        !           107: extern int     pairstack[], paircnt;
        !           108: 
        !           109: #define cantexec(n)    (n->ntype == NVALUE)
        !           110: #define notlegal(n)    (proctab[n-FIRSTTOKEN]== nullproc)
        !           111: #define isexpr(n)      (n->ntype == NEXPR)
        !           112: #define isjump(n)      (n.otype == OJUMP)
        !           113: #define isexit(n)      (n.otype == OJUMP && n.osub == JEXIT)
        !           114: #define        isbreak(n)      (n.otype == OJUMP && n.osub == JBREAK)
        !           115: #define        iscont(n)       (n.otype == OJUMP && n.osub == JCONT)
        !           116: #define        isnext(n)       (n.otype == OJUMP && n.osub == JNEXT)
        !           117: #define isstr(n)       (n.optr->tval & STR)
        !           118: #define istrue(n)      (n.otype == OBOOL && n.osub == BTRUE)
        !           119: #define istemp(n)      (n.otype == OCELL && n.osub == CTEMP)
        !           120: #define isfld(n)       (!donefld && n.osub==CFLD && n.otype==OCELL && n.optr->nval==0)
        !           121: #define isrec(n)       (donefld && n.osub==CFLD && n.otype==OCELL && n.optr->nval!=0)
        !           122: obj    nullproc();
        !           123: obj    relop();
        !           124: 
        !           125: #define MAXSYM 16
        !           126: #define        HAT     0177    /* matches ^ in regular expr */
        !           127:                        /* watch out for mach dep */

unix.superglobalmegacorp.com

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