/* Z editor options :ma=1 :ts=6 :bk=0 :wm=0 */ /* This program, both executable and sources, are Copyright 1986, Jay Ts Box 890 West Oneonta NY 13861 You may copy, distribute, alter, and use them, but absolutely no permission is granted to remove copyright notices from them or distribute them, in whole or in part, as, or as part of, a commercial product. */ #include "stdio.h" #define MAXERRS 20 #define FOUND_ERROR -1 extern char errfile[]; /* The first few characters of the annoying lines that the compiler/linker produces every time it runs. These will be filtered out! */ char t[3][5] = { {'A', 'z', 't', 'e', 'c'}, {'C', 'o', 'd', 'e', ':'}, {'A', 'b', 'o', 'r', 't'} }; FILE *fp, *fopen(); /* print error messages from Compiler's redirected output file */ int geterrs() { int numerrs = 0, getline(); char s[128]; if( (fp = fopen(errfile, "r")) == NULL) { printf("cc: open failed on error file %s\n", errfile); return(1); } while(getline(s)) if( ! fits(s)) { printf("%s\n", s); if(++numerrs > MAXERRS) break; } if(fclose(fp) == -1) printf("can't close error file!\n"); return(numerrs); } int getline(s) char *s; { int i = 0, c; while((c = getc(fp)) != '\n' && c != EOF) s[i++] = c; s[i] = '\0'; return(c == EOF ? 0 : 1); } /* check to see if line matches one of the messages that the C compiler ALWAYS produces */ int fits(s) char *s; { int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 5; j++) if(t[i][j] != s[j]) break; if(j == 5) return(1); } return(0); }