summaryrefslogtreecommitdiff
path: root/csv.c
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2020-06-19 10:37:35 +0200
committerThomas Schmucker <ts@its1.de>2020-06-19 10:37:35 +0200
commited36aabf97f769126ff075e43285a45aa5eec518 (patch)
treeaaf5b119521bd615b3e029ba1e5d1667ecebd169 /csv.c
parent878793e5f1952a7e208689264bade2c1a5e0a29d (diff)
downloadlibcsv-ed36aabf97f769126ff075e43285a45aa5eec518.tar.gz
libcsv-ed36aabf97f769126ff075e43285a45aa5eec518.tar.bz2
libcsv-ed36aabf97f769126ff075e43285a45aa5eec518.zip
mehr Fehlerbehandlung...
Diffstat (limited to 'csv.c')
-rw-r--r--csv.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/csv.c b/csv.c
index dfc79c9..4d48f01 100644
--- a/csv.c
+++ b/csv.c
@@ -255,6 +255,15 @@ csv_read(csv_t *csv, FILE *in)
255 assert(csv != NULL); 255 assert(csv != NULL);
256 assert(in != NULL); 256 assert(in != NULL);
257 257
258 /* do not try to read if EOF has already been seen */
259 if ( feof(in) ) {
260 return -1;
261 }
262
263 if ( ferror(in) ) {
264 csv_fatal_error("I/O error", csv->csv_options);
265 }
266
258 enum { 267 enum {
259 STATE_START_FIELD, 268 STATE_START_FIELD,
260 STATE_QUOTED_FIELD, 269 STATE_QUOTED_FIELD,
@@ -376,6 +385,10 @@ csv_read(csv_t *csv, FILE *in)
376 return csv->csv_field.pos; 385 return csv->csv_field.pos;
377 386
378 case STATE_END_FILE: 387 case STATE_END_FILE:
388 if ( ferror(in) ) {
389 csv_fatal_error("I/O error", csv->csv_options);
390 }
391
379 if ( csv_string_empty(&csv->csv_string) ) { 392 if ( csv_string_empty(&csv->csv_string) ) {
380 return -1; /* EOF reached */ 393 return -1; /* EOF reached */
381 } 394 }