1: static char *sccsid = "@(#)cb.c 4.3 (Berkeley) 2/17/86";
2: #include <stdio.h>
3: int slevel[10];
4: int clevel = 0;
5: int spflg[20][10];
6: int sind[20][10];
7: int siflev[10];
8: int sifflg[10];
9: int iflev = 0;
10: int ifflg = -1;
11: int level = 0;
12: int ind[10] = {
13: 0,0,0,0,0,0,0,0,0,0 };
14: int eflg = 0;
15: int paren = 0;
16: int pflg[10] = {
17: 0,0,0,0,0,0,0,0,0,0 };
18: char lchar;
19: char pchar;
20: int aflg = 0;
21: int ct;
22: int stabs[20][10];
23: int qflg = 0;
24: char *wif[] = {
25: "if",0};
26: char *welse[] = {
27: "else",0};
28: char *wfor[] = {
29: "for",0};
30: char *wds[] = {
31: "case","default",0};
32: int j = 0;
33: char string[200];
34: char cc;
35: int sflg = 1;
36: int peek = -1;
37: int tabs = 0;
38: int lastchar;
39: int c;
40: int getstr();
41: main(argc,argv) int argc;
42: char argv[];
43: {
44: while((c = getch()) != EOF){
45: switch(c){
46: case ' ':
47: case '\t':
48: if(lookup(welse) == 1){
49: gotelse();
50: if(sflg == 0 || j > 0)string[j++] = c;
51: puts();
52: sflg = 0;
53: continue;
54: }
55: if(sflg == 0 || j > 0)string[j++] = c;
56: continue;
57: case '\n':
58: if((eflg = lookup(welse)) == 1)gotelse();
59: puts();
60: printf("\n");
61: sflg = 1;
62: if(eflg == 1){
63: pflg[level]++;
64: tabs++;
65: }
66: else
67: if(pchar == lchar)
68: aflg = 1;
69: continue;
70: case '{':
71: if(lookup(welse) == 1)gotelse();
72: siflev[clevel] = iflev;
73: sifflg[clevel] = ifflg;
74: iflev = ifflg = 0;
75: clevel++;
76: if(sflg == 1 && pflg[level] != 0){
77: pflg[level]--;
78: tabs--;
79: }
80: string[j++] = c;
81: puts();
82: getnl();
83: puts();
84: printf("\n");
85: tabs++;
86: sflg = 1;
87: if(pflg[level] > 0){
88: ind[level] = 1;
89: level++;
90: slevel[level] = clevel;
91: }
92: continue;
93: case '}':
94: clevel--;
95: if((iflev = siflev[clevel]-1) < 0)iflev = 0;
96: ifflg = sifflg[clevel];
97: if(pflg[level] >0 && ind[level] == 0){
98: tabs -= pflg[level];
99: pflg[level] = 0;
100: }
101: puts();
102: tabs--;
103: ptabs();
104: if((peek = getch()) == ';'){
105: printf("%c;",c);
106: peek = -1;
107: }
108: else printf("%c",c);
109: getnl();
110: puts();
111: printf("\n");
112: sflg = 1;
113: if(clevel < slevel[level])if(level > 0)level--;
114: if(ind[level] != 0){
115: tabs -= pflg[level];
116: pflg[level] = 0;
117: ind[level] = 0;
118: }
119: continue;
120: case '"':
121: case '\'':
122: string[j++] = c;
123: while((cc = getch()) != c){
124: string[j++] = cc;
125: if(cc == '\\'){
126: string[j++] = getch();
127: }
128: if(cc == '\n'){
129: puts();
130: sflg = 1;
131: }
132: }
133: string[j++] = cc;
134: if(getnl() == 1){
135: lchar = cc;
136: peek = '\n';
137: }
138: continue;
139: case ';':
140: string[j++] = c;
141: puts();
142: if(pflg[level] > 0 && ind[level] == 0){
143: tabs -= pflg[level];
144: pflg[level] = 0;
145: }
146: getnl();
147: puts();
148: printf("\n");
149: sflg = 1;
150: if(iflev > 0)
151: if(ifflg == 1){iflev--;
152: ifflg = 0;
153: }
154: else iflev = 0;
155: continue;
156: case '\\':
157: string[j++] = c;
158: string[j++] = getch();
159: continue;
160: case '?':
161: qflg = 1;
162: string[j++] = c;
163: continue;
164: case ':':
165: string[j++] = c;
166: if(qflg == 1){
167: qflg = 0;
168: continue;
169: }
170: if(lookup(wds) == 0){
171: sflg = 0;
172: puts();
173: }
174: else{
175: tabs--;
176: puts();
177: tabs++;
178: }
179: if((peek = getch()) == ';'){
180: printf(";");
181: peek = -1;
182: }
183: getnl();
184: puts();
185: printf("\n");
186: sflg = 1;
187: continue;
188: case '/':
189: string[j++] = c;
190: if((peek = getch()) != '*')continue;
191: string[j++] = peek;
192: peek = -1;
193: comment();
194: continue;
195: case ')':
196: paren--;
197: string[j++] = c;
198: puts();
199: if(getnl() == 1){
200: peek = '\n';
201: if(paren != 0)aflg = 1;
202: else if(tabs > 0){
203: pflg[level]++;
204: tabs++;
205: ind[level] = 0;
206: }
207: }
208: continue;
209: case '#':
210: string[j++] = c;
211: while((cc = getch()) != '\n')string[j++] = cc;
212: string[j++] = cc;
213: sflg = 0;
214: puts();
215: sflg = 1;
216: continue;
217: case '(':
218: string[j++] = c;
219: paren++;
220: if(lookup(wfor) == 1){
221: while((c = getstr()) != ';');
222: ct=0;
223: cont:
224: while((c = getstr()) != ')'){
225: if(c == '(') ct++;
226: }
227: if(ct != 0){
228: ct--;
229: goto cont;
230: }
231: paren--;
232: puts();
233: if(getnl() == 1){
234: peek = '\n';
235: pflg[level]++;
236: tabs++;
237: ind[level] = 0;
238: }
239: continue;
240: }
241: if(lookup(wif) == 1){
242: puts();
243: stabs[clevel][iflev] = tabs;
244: spflg[clevel][iflev] = pflg[level];
245: sind[clevel][iflev] = ind[level];
246: iflev++;
247: ifflg = 1;
248: }
249: continue;
250: default:
251: string[j++] = c;
252: if(c != ',')lchar = c;
253: }
254: }
255: }
256: ptabs(){
257: int i;
258: for(i=0; i < tabs; i++)printf("\t");
259: }
260: getch(){
261: if(peek < 0 && lastchar != ' ' && lastchar != '\t')pchar = lastchar;
262: lastchar = (peek<0) ? getc(stdin):peek;
263: peek = -1;
264: return(lastchar);
265: }
266: puts(){
267: if(j > 0){
268: if(sflg != 0){
269: ptabs();
270: sflg = 0;
271: if(aflg == 1){
272: aflg = 0;
273: if(tabs > 0)printf(" ");
274: }
275: }
276: string[j] = '\0';
277: printf("%s",string);
278: j = 0;
279: }
280: else{
281: if(sflg != 0){
282: sflg = 0;
283: aflg = 0;
284: }
285: }
286: }
287: lookup(tab)
288: char *tab[];
289: {
290: char r;
291: int l,kk,k,i;
292: if(j < 1)return(0);
293: kk=0;
294: while(string[kk] == ' ')kk++;
295: for(i=0; tab[i] != 0; i++){
296: l=0;
297: for(k=kk;(r = tab[i][l++]) == string[k] && r != '\0';k++);
298: if(r == '\0' && (string[k] < 'a' || string[k] > 'z' || k >= j))return(1);
299: }
300: return(0);
301: }
302: getstr(){
303: char ch;
304: beg:
305: if((ch = string[j++] = getch()) == '\\'){
306: string[j++] = getch();
307: goto beg;
308: }
309: if(ch == '\'' || ch == '"'){
310: while((cc = string[j++] = getch()) != ch)if(cc == '\\')string[j++] = getch();
311: goto beg;
312: }
313: if(ch == '\n'){
314: puts();
315: aflg = 1;
316: goto beg;
317: }
318: else return(ch);
319: }
320: gotelse(){
321: tabs = stabs[clevel][iflev];
322: pflg[level] = spflg[clevel][iflev];
323: ind[level] = sind[clevel][iflev];
324: ifflg = 1;
325: }
326: getnl(){
327: while((peek = getch()) == '\t' || peek == ' '){
328: string[j++] = peek;
329: peek = -1;
330: }
331: if((peek = getch()) == '/'){
332: peek = -1;
333: if((peek = getch()) == '*'){
334: string[j++] = '/';
335: string[j++] = '*';
336: peek = -1;
337: comment();
338: }
339: else string[j++] = '/';
340: }
341: if((peek = getch()) == '\n'){
342: peek = -1;
343: return(1);
344: }
345: return(0);
346: }
347: (){
348: int i = j;
349:
350: while ((c = getch()) != EOF) {
351: string[j++] = c;
352: switch(c) {
353: case '/':
354: if (j > i + 1 && string[j-2] == '*')
355: return;
356: break;
357: case '\n':
358: puts();
359: sflg = 1;
360: break;
361: }
362: }
363: }
Defined functions
defined in line
347; used 2 times
getch
defined in line
260; used 17 times
- in line 44,
104,
123-126(2),
158,
179,
190,
211,
305-310(4),
327-333(3),
341,
350
main
defined in line
41;
never used
puts
defined in line
266; used 23 times
- in line 51,
59,
81-83(2),
101,
110,
129,
141,
147,
172-176(2),
184,
198,
214,
232,
242,
314,
358
- in /usr/src/usr.bin/basename.c line
29
- in /usr/src/usr.bin/deroff.c line
299,
612
- in /usr/src/usr.bin/look.c line
95,
108
Defined variables
aflg
defined in line
20; used 6 times
c
defined in line
39; used 26 times
- in line 44-55(4),
80,
105-108(2),
122-123(2),
140,
157-165(3),
189,
197,
210,
218-225(4),
251-252(3),
350-352(3)
cc
defined in line
34; used 11 times
clevel
defined in line
4; used 14 times
ct
defined in line
21; used 4 times
eflg
defined in line
14; used 2 times
ifflg
defined in line
10; used 7 times
iflev
defined in line
9; used 14 times
ind
defined in line
12; used 9 times
j
defined in line
32; used 39 times
- in line 50-55(4),
80,
122-126(3),
133,
140,
157-165(4),
189-191(2),
197,
210-212(3),
218,
251,
267,
276-278(2),
292,
298,
305-310(4),
328,
334-339(3),
348-354(4)
lchar
defined in line
18; used 3 times
level
defined in line
11; used 30 times
paren
defined in line
15; used 4 times
pchar
defined in line
19; used 2 times
peek
defined in line
36; used 24 times
pflg
defined in line
16; used 16 times
qflg
defined in line
23; used 3 times
sccsid
defined in line
1;
never used
sflg
defined in line
35; used 18 times
- in line 50-55(3),
61,
76,
86,
112,
130,
149,
171,
186,
213-215(2),
268-270(2),
281-282(2),
359
sifflg
defined in line
8; used 2 times
siflev
defined in line
7; used 2 times
sind
defined in line
6; used 2 times
slevel
defined in line
3; used 2 times
spflg
defined in line
5; used 2 times
stabs
defined in line
22; used 2 times
string
defined in line
33; used 36 times
- in line 50-55(2),
80,
122-126(3),
133,
140,
157-165(4),
189-191(2),
197,
210-212(3),
218,
251,
276-277(2),
294-298(4),
305-310(4),
328,
334-339(3),
351-354(2)
tabs
defined in line
37; used 16 times
- in line 64,
78,
85,
98-102(2),
115,
143,
175-177(2),
202-204(2),
236,
243,
258,
273,
321
wds
defined in line
30; used 1 times
welse
defined in line
26; used 3 times
wfor
defined in line
28; used 1 times
wif
defined in line
24; used 1 times