#include #include int main(int argc, char *argv[]) { bool print_lines = false; bool fix = false; for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "-l") == 0) { print_lines = true; continue; } if (strcmp(argv[i], "-f") == 0) { fix = true; continue; } FILE *f = fopen(argv[i], "rb"); if (f != 0) { int linenr = 0; int c_rn = 0; int c_r = 0; int c_n = 0; char ch = fgetc(f); char prev_ch = ' '; while (!feof(f)) { char ch1 = ch; if (ch == '\r') { if (prev_ch == '\n') { if (print_lines) printf("%s %d: \\n\\r\n", argv[i], linenr+1); c_rn++; linenr++; ch1 = ' '; } } else if (ch == '\n') { if (prev_ch == '\r') { linenr++; ch1 = ' '; } } else if (prev_ch == '\r') { if (print_lines) printf("%s %d: \\r\n", argv[i], linenr+1); c_r++; linenr++; } else if (prev_ch == '\n') { if (print_lines) printf("%s %d: \\n\n", argv[i], linenr+1); c_n++; linenr++; } prev_ch = ch1; ch = fgetc(f); } fclose(f); if (c_rn + c_r + c_n > 0) { printf("%s: %d %d %d\n", argv[i], c_rn, c_r, c_n); if (fix && c_n != linenr) { f = fopen(argv[i], "rb"); char fn[100]; sprintf(fn, "org/%s", argv[i]); FILE *forg = fopen(fn, "wb"); for (char ch = fgetc(f); !feof(f); ch = fgetc(f)) fputc(ch, forg); fclose(forg); fclose(f); f = fopen(fn, "rb"); FILE *fout = fopen(argv[i], "wb"); if (f != 0 && fout != 0) { printf("Fix %s\n", argv[i]); char ch = fgetc(f); char prev_ch = ' '; while (!feof(f)) { char ch1 = ch; if (ch == '\r') { if (prev_ch == '\n') { fputc('\r', fout); fputc('\n', fout); ch1 = ' '; } } else if (ch == '\n') { if (prev_ch == '\r') { fputc('\r', fout); fputc('\n', fout); ch1 = ' '; } } else { if (prev_ch == '\r' || prev_ch == '\n') { fputc('\r', fout); fputc('\n', fout); } fputc(ch, fout); } prev_ch = ch1; ch = fgetc(f); } fclose(f); } } } } } }