diff options
Diffstat (limited to 'system/csvutils/csvcheck_exit_status.diff')
-rw-r--r-- | system/csvutils/csvcheck_exit_status.diff | 51 |
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); + } |