diff -Naur csvutils-0.9.3+20161218_e57951b/src/csvcheck.c csvutils-0.9.3+20161218_e57951b.patched/src/csvcheck.c
--- csvutils-0.9.3+20161218_e57951b/src/csvcheck.c 2022-01-26 02:05:12.660602834 -0500
+++ csvutils-0.9.3+20161218_e57951b.patched/src/csvcheck.c 2022-01-26 02:33:11.553450216 -0500
@@ -89,6 +89,8 @@
}
}
+int errcnt = 0;
+
void
check_file(char *filename)
{
@@ -112,6 +114,7 @@
fp = fopen(filename, "rb");
if (fp == NULL) {
fprintf(stderr, "Failed to open file %s: %s\n", filename, strerror(errno));
+ errcnt++;
csv_free(&p);
return;
}
@@ -121,18 +124,21 @@
if ((retval = csv_parse(&p, buf, bytes_read, NULL, NULL, NULL)) != bytes_read) {
if (csv_error(&p) == CSV_EPARSE) {
printf("%s: malformed at byte %lu\n", filename ? filename : "stdin", (unsigned long)pos + retval + 1);
+ errcnt++;
goto end;
} else {
printf("Error while processing %s: %s\n", filename ? filename : "stdin", csv_strerror(csv_error(&p)));
+ errcnt++;
goto end;
}
}
pos += 1024;
}
- if (csv_fini(&p, NULL, NULL, NULL) != 0)
+ if (csv_fini(&p, NULL, NULL, NULL) != 0) {
printf("%s: missing closing quote at end of input\n", filename ? filename : "stdin");
- else
+ errcnt++;
+ } else
printf("%s well-formed\n", filename ? filename : "data is");
end:
@@ -186,5 +192,5 @@
check_file(NULL);
}
- return EXIT_SUCCESS;
+ return (errcnt ? EXIT_FAILURE : EXIT_SUCCESS);
}
|