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