summaryrefslogtreecommitdiffstats
path: root/system/csvutils/csvcheck_exit_status.diff
diff options
context:
space:
mode:
Diffstat (limited to 'system/csvutils/csvcheck_exit_status.diff')
-rw-r--r--system/csvutils/csvcheck_exit_status.diff51
1 files changed, 51 insertions, 0 deletions
diff --git a/system/csvutils/csvcheck_exit_status.diff b/system/csvutils/csvcheck_exit_status.diff
new file mode 100644
index 0000000000..df395e061f
--- /dev/null
+++ b/system/csvutils/csvcheck_exit_status.diff
@@ -0,0 +1,51 @@
+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);
+ }