Bell 32V development
[unix-history] / usr / src / cmd / checkeq.c
CommitLineData
3b600ead
TL
1#include <stdio.h>
2FILE *fin;
3int delim = '$';
4
5main(argc, argv) char **argv; {
6
7 if (argc <= 1)
8 check(stdin);
9 else
10 while (--argc > 0) {
11 if ((fin = fopen(*++argv, "r")) == NULL) {
12 printf("Can't open %s\n", *argv);
13 exit(1);
14 }
15 printf("%s:\n", *argv);
16 check(fin);
17 fclose(fin);
18 }
19}
20
21check(f)
22FILE *f;
23{
24 int start, line, eq, ndel, totdel;
25 char in[600], *p;
26
27 start = eq = line = ndel = totdel = 0;
28 while (fgets(in, 600, f) != NULL) {
29 line++;
30 ndel = 0;
31 for (p = in; *p; p++)
32 if (*p == delim)
33 ndel++;
34 if (*in=='.' && *(in+1)=='E' && *(in+2)=='Q') {
35 if (eq++)
36 printf(" Spurious EQ, line %d\n", line);
37 if (totdel)
38 printf(" EQ in %c%c, line %d\n", delim, delim, line);
39 } else if (*in=='.' && *(in+1)=='E' && *(in+2)=='N') {
40 if (eq==0)
41 printf(" Spurious EN, line %d\n", line);
42 else
43 eq = 0;
44 if (totdel > 0)
45 printf(" EN in %c%c, line %d\n", delim, delim, line);
46 start = 0;
47 } else if (eq && *in=='d' && *(in+1)=='e' && *(in+2)=='l' && *(in+3)=='i' && *(in+4)=='m') {
48 for (p=in+5; *p; p++)
49 if (*p != ' ') {
50 if (*p == 'o' && *(p+1) == 'f')
51 delim = 0;
52 else
53 delim = *p;
54 break;
55 }
56 if (delim == 0)
57 printf(" Delim off, line %d\n", line);
58 else
59 printf(" New delims %c%c, line %d\n", delim, delim, line);
60 }
61 if (ndel > 0 && eq > 0)
62 printf(" %c%c in EQ, line %d\n", delim, delim, line);
63 if (ndel == 0)
64 continue;
65 totdel += ndel;
66 if (totdel%2) {
67 if (start == 0)
68 start = line;
69 else {
70 printf(" %d line %c%c, lines %d-%d\n", line-start+1, delim, delim, start, line);
71 start = line;
72 }
73 } else {
74 if (start > 0) {
75 printf(" %d line %c%c, lines %d-%d\n", line-start+1, delim, delim, start, line);
76 start = 0;
77 }
78 totdel = 0;
79 }
80 }
81 if (totdel)
82 printf(" Unfinished %c%c\n", delim, delim);
83 if (eq)
84 printf(" Unfinished EQ\n");
85}