summaryrefslogtreecommitdiff
path: root/dviware/beebe/utils/xref2.awk
blob: 93eb37a6a50eb9b128d61099b0846bc1f22195ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Convert a sorted file with entries
#	name<tab>file
# to a libref-style "references" map on stdout (4 entries per line)
# [09-Sep-87]
BEGIN {
    FS = "\t";
    nref = 0;
    caller = "";
    print "*********************************************************************";
    print "*     ..Name..         *  ...Referenced in File...                  *";
    print "*********************************************************************";
    print "*                      *                                            *";
}

{
    if (($1 != caller) && (caller != ""))
    {
	if (length(caller) > 20)
	    the_caller =  substr(caller,1,20);
	else
	    the_caller = caller;
        printf "* %-20s<-",the_caller;
        nref4 = 4*int((nref + 3)/4);

        for (k = nref; k < nref4; ++k)
            refs[k] = " ";
        nref = nref4;
        for (k = 0; k < nref; )
        {
            printf " %-10s",refs[k];
            ++k;
            if ((k % 4) == 0)
            {
                printf "*\n";
                if (k < nref)
                {
                    printf "*                      *";
                }
            }
        }
        nref = 0;
        print "*                      *                                            *";
    }
    caller = $1;
    if (length($2) > 10)
	$2 = substr($2,1,10);
    refs[nref] = $2;
    nref++;	# awk treats refs[nref++] as refs[++nref], sigh...

}

END {
    printf "* %-20s<-",caller;
    nref4 = 4*int((nref + 3)/4);
    for (k = nref; k < nref4; ++k)
        refs[k] = " ";
    nref = nref4;
    for (k = 0; k < nref; )
    {
        printf " %-10s",refs[k];
        ++k;
        if ((k % 4) == 0)
        {
            printf "*\n";
            if (k < nref)
            {
                printf "*                      *";
            }
        }
    }
    nref = 0;
    print "*                      *                                            *";
    print "*********************************************************************";
}