From 08909bd2ef53a6110fa2210fefa6d94647f5520f Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 19 Jun 2020 11:11:39 +0200 Subject: csv_free() Funktion gegen csv_cleanup() ersetzt, die bei EOF jetzt auch automatisch aufgreufen wird. --- csv-test.c | 6 +----- csv.c | 4 +++- csv.h | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/csv-test.c b/csv-test.c index 30b5521..b2d210a 100644 --- a/csv-test.c +++ b/csv-test.c @@ -16,7 +16,6 @@ test(FILE *f) for ( int n; (n = csv_read(csv, f)) != -1; ) { ++line; } - csv_free(csv); return line; } @@ -31,7 +30,6 @@ test_exception(FILE *f) for ( int n; (n = csv_read(csv, f)) != -1; ) { if (++line == 500000) csv_field(csv, -1); } - csv_free(csv); return line; } @@ -57,7 +55,6 @@ test_exception_with_signal(FILE *f) for ( int n; (n = csv_read(csv, f)) != -1; ) { if (++line == 500000) csv_field(csv, -1); } - csv_free(csv); signal(SIGABRT, old_handler); @@ -93,11 +90,10 @@ test_exception_longjmp(FILE *f) // process data... if (++line == 500000) csv_field(csv, -1); } - csv_free(csv); return line; } else { - csv_free(csv); + csv_cleanup(csv); return -1; } } diff --git a/csv.c b/csv.c index 9782fe3..52e9bfd 100644 --- a/csv.c +++ b/csv.c @@ -219,7 +219,7 @@ csv_init_opt(csv_t *csv, const csv_options_t * const csv_options) } void -csv_free(csv_t *csv) +csv_cleanup(csv_t *csv) { assert(csv != NULL); @@ -259,6 +259,7 @@ csv_read(csv_t *csv, FILE *in) /* do not try to read if EOF has already been seen */ if ( feof(in) ) { + csv_cleanup(csv); return -1; } @@ -392,6 +393,7 @@ csv_read(csv_t *csv, FILE *in) } if ( csv_string_empty(&csv->csv_string) ) { + csv_cleanup(csv); return -1; /* EOF reached */ } diff --git a/csv.h b/csv.h index 331b624..3a529b7 100644 --- a/csv.h +++ b/csv.h @@ -38,7 +38,7 @@ typedef struct { void csv_init(csv_t *csv); void csv_init_opt(csv_t *csv, const csv_options_t * const csv_options); -void csv_free(csv_t *csv); +void csv_cleanup(csv_t *csv); int csv_nfields(csv_t *csv); const char * csv_field(csv_t *csv, int idx); int csv_read(csv_t *csv, FILE *in); -- cgit v1.3