1: int fout;
2: int cflg;
3: int nflg;
4: int uflg;
5: int rflg 1;
6: int gflg;
7: int pflg;
8: struct nl
9: {
10: char name[8];
11: int typ;
12: int *val;
13: } *nlp;
14: int fi;
15: int buf[8];
16: main(argc, argv)
17: char **argv;
18: {
19: int n, i, j;
20: int compare();
21:
22: if (--argc > 0 && *argv[1] == '-') {
23: argv++;
24: while (*++*argv) switch (**argv) {
25: case 'n':
26: nflg++;
27: continue;
28:
29: case 'c':
30: cflg++;
31: continue;
32:
33: case 'g':
34: gflg++;
35: continue;
36:
37: case 'u':
38: uflg++;
39: continue;
40:
41: case 'r':
42: rflg = -1;
43: continue;
44:
45: case 'p':
46: pflg ++;
47: continue;
48:
49: default:
50: continue;
51: }
52: argc--;
53: }
54: if (argc==0)
55: fi = open("a.out", 0); else
56: fi = open(*++argv, 0);
57: if(fi < 0) {
58: printf("cannot open input\n");
59: exit();
60: }
61: read(fi, buf, 020);
62: if(buf[0]!=0407 && buf[0]!=0410 && buf[0]!=0411) {
63: printf("bad format\n");
64: exit();
65: }
66: seek(fi, buf[1], 1); /* text */
67: seek(fi, buf[2], 1); /* data */
68: if(buf[7] != 1) {
69: seek(fi, buf[1], 1);
70: seek(fi, buf[2], 1); /* reloc */
71: }
72: n = ldiv(0, buf[4], 12);
73: if(n == 0) {
74: printf("no name list\n");
75: exit();
76: }
77: nlp = sbrk(12*n);
78: read(fi, nlp, n*12);
79: if (pflg==0)
80: qsort(nlp, n, 12, compare);
81: fout = dup(1);
82: close(1);
83: for(i=0; i<n; i++) {
84: if(gflg && (nlp->typ&040)==0)
85: goto out;
86: if(cflg) {
87: if(nlp->name[0] != '_')
88: goto out;
89: for(j=0; j<7; j++)
90: nlp->name[j] = nlp->name[j+1];
91: nlp->name[7] = '\0';
92: }
93: j = nlp->typ&037;
94: if(j > 4)
95: j = 1;
96: if(j==0 && nlp->val)
97: j = 5;
98: if(uflg && j!=0)
99: goto out;
100: if(!uflg) {
101: if(j==0)
102: printf(" "); else
103: printo(nlp->val);
104: printf("%c ", (nlp->typ&040? "UATDBC":"uatdbc")[j]);
105: }
106: printf("%.8s\n", nlp);
107: out:
108: nlp++;
109: }
110: flush();
111: }
112:
113: compare(p1, p2)
114: struct nl *p1, *p2;
115: {
116: int a, i;
117:
118: a = 0;
119: if(nflg) {
120: if(p1->val > p2->val) {
121: a = 1;
122: goto out;
123: }
124: if(p1->val < p2->val) {
125: a = -1;
126: goto out;
127: }
128: }
129: for(i=0; i<8; i++)
130: if(p1->name[i] != p2->name[i]) {
131: if(p1->name[i] > p2->name[i])
132: a = 1; else
133: a = -1;
134: goto out;
135: }
136: out:
137: return(a*rflg);
138: }
139:
140: printo(v)
141: {
142: int i;
143:
144: printf("%c", v<0?'1':'0');
145: for(i=0; i<5; i++) {
146: printf("%c", ((v>>12)&7)+'0');
147: v =<<3;
148: }
149: }
Defined functions
main
defined in line
16;
never used
Defined variables
buf
defined in line
15; used 10 times
cflg
defined in line
2; used 2 times
fi
defined in line
14; used 9 times
fout
defined in line
1; used 1 times
gflg
defined in line
6; used 2 times
nflg
defined in line
3; used 2 times
nlp
defined in line
13; used 14 times
pflg
defined in line
7; used 2 times
rflg
defined in line
5; used 2 times
uflg
defined in line
4; used 3 times
Defined struct's
nl
defined in line
8; used 2 times