Annotation of 43BSD/usr.bin/struct/2.main.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)2.main.c   4.1     (Berkeley)      2/11/83";
        !             3: #endif not lint
        !             4: 
        !             5: #include <stdio.h>
        !             6: #include "def.h"
        !             7: #include "2.def.h"
        !             8: 
        !             9: VERT *after;
        !            10: int *ntobef, *ntoaft;
        !            11: build()
        !            12:        {
        !            13:        VERT v, *dom, *head;
        !            14:        int type;
        !            15:        struct list **inarc;
        !            16:        dfs(START);
        !            17:        if (routerr) return;
        !            18:        for (v = 0; v < nodenum; ++v)
        !            19:                {
        !            20:                type = NTYPE(v);
        !            21:                if (type == LOOPVX || type == DOVX)
        !            22:                        FATH(ARC(v,0)) = v;
        !            23:                }
        !            24: 
        !            25:        head = challoc(sizeof(*head) * nodenum);
        !            26:        if (progress) fprintf(stderr,"  gethead:\n");
        !            27:        gethead(head);  /* sets head[v] to ITERVX heading smallest loop containing v or UNDEFINED */
        !            28: 
        !            29:        if (routerr) return;
        !            30:        inarc = challoc(nodenum * sizeof(*inarc));
        !            31:        if (progress) fprintf(stderr,"  getinarc:\n");
        !            32:        getinarc(inarc,head);           /* sets inarc[v] to list of forward arcs entering v */
        !            33: 
        !            34:        dom = challoc(nodenum * sizeof(*dom));
        !            35:        if (progress) fprintf(stderr,"  getdom:\n");
        !            36:        getdom(inarc,dom);      /* sets dom[v] to immediate dominator of v or UNDEFINED */
        !            37:        if (routerr) return;
        !            38:        if (progress) fprintf(stderr,"  gettree:\n");
        !            39:        gettree(inarc, dom, head);
        !            40:        if (routerr) return;
        !            41: 
        !            42:        chfree(head, nodenum * sizeof(*head)); head = 0;
        !            43:        chfree(dom,nodenum * sizeof(*dom)); dom = 0;
        !            44:        for (v = 0; v < nodenum; ++v)
        !            45:                {
        !            46:                freelst(inarc[v]);
        !            47:                inarc[v] = 0;
        !            48:                }
        !            49:        chfree(inarc,sizeof(*inarc) * nodenum); inarc = 0;
        !            50:        chfree(ntoaft,sizeof(*ntoaft) * nodenum); ntoaft = 0;
        !            51:        chfree(ntobef,sizeof(*ntobef) * nodenum); ntobef = 0;
        !            52:        chfree(after, sizeof(*after) * accessnum); after = 0;
        !            53:        }

unix.superglobalmegacorp.com

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