Annotation of 41BSD/cmd/struct/2.main.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

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