1 /*- 2 * Copyright (c) 1987 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.proprietary.c% 6 */ 7 8 #ifndef lint 9 char copyright[] = 10 "@(#) Copyright (c) 1987 The Regents of the University of California.\n\ 11 All rights reserved.\n"; 12 #endif /* not lint */ 13 14 #ifndef lint 15 static char sccsid[] = "@(#)checkeq.c 4.4 (Berkeley) 04/17/91"; 16 #endif /* not lint */ 17 18 #include <stdio.h> 19 FILE *fin; 20 int delim = '$'; 21 22 main(argc, argv) char **argv; { 23 24 if (argc <= 1) 25 check(stdin); 26 else 27 while (--argc > 0) { 28 if ((fin = fopen(*++argv, "r")) == NULL) { 29 perror(*argv); 30 exit(1); 31 } 32 printf("%s:\n", *argv); 33 check(fin); 34 fclose(fin); 35 } 36 exit(0); 37 } 38 39 check(f) 40 FILE *f; 41 { 42 int start, line, eq, ndel, totdel; 43 char in[600], *p; 44 45 start = eq = line = ndel = totdel = 0; 46 while (fgets(in, 600, f) != NULL) { 47 line++; 48 ndel = 0; 49 for (p = in; *p; p++) 50 if (*p == delim) 51 ndel++; 52 if (*in=='.' && *(in+1)=='E' && *(in+2)=='Q') { 53 if (eq++) 54 printf(" Spurious EQ, line %d\n", line); 55 if (totdel) 56 printf(" EQ in %c%c, line %d\n", delim, delim, line); 57 } else if (*in=='.' && *(in+1)=='E' && *(in+2)=='N') { 58 if (eq==0) 59 printf(" Spurious EN, line %d\n", line); 60 else 61 eq = 0; 62 if (totdel > 0) 63 printf(" EN in %c%c, line %d\n", delim, delim, line); 64 start = 0; 65 } else if (eq && *in=='d' && *(in+1)=='e' && *(in+2)=='l' && *(in+3)=='i' && *(in+4)=='m') { 66 for (p=in+5; *p; p++) 67 if (*p != ' ') { 68 if (*p == 'o' && *(p+1) == 'f') 69 delim = 0; 70 else 71 delim = *p; 72 break; 73 } 74 if (delim == 0) 75 printf(" Delim off, line %d\n", line); 76 else 77 printf(" New delims %c%c, line %d\n", delim, delim, line); 78 } 79 if (ndel > 0 && eq > 0) 80 printf(" %c%c in EQ, line %d\n", delim, delim, line); 81 if (ndel == 0) 82 continue; 83 totdel += ndel; 84 if (totdel%2) { 85 if (start == 0) 86 start = line; 87 else { 88 printf(" %d line %c%c, lines %d-%d\n", line-start+1, delim, delim, start, line); 89 start = line; 90 } 91 } else { 92 if (start > 0) { 93 printf(" %d line %c%c, lines %d-%d\n", line-start+1, delim, delim, start, line); 94 start = 0; 95 } 96 totdel = 0; 97 } 98 } 99 if (totdel) 100 printf(" Unfinished %c%c\n", delim, delim); 101 if (eq) 102 printf(" Unfinished EQ\n"); 103 } 104