|
|
1.1 root 1: #include <stdio.h>
2: FILE *fin;
3: int delim = '$';
4:
5: main(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:
21: check(f)
22: FILE *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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.