aboutsummaryrefslogtreecommitdiff
path: root/lib/src/csv.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/csv.c')
-rw-r--r--lib/src/csv.c74
1 files changed, 37 insertions, 37 deletions
diff --git a/lib/src/csv.c b/lib/src/csv.c
index e9c7464..ba78dbd 100644
--- a/lib/src/csv.c
+++ b/lib/src/csv.c
@@ -305,35 +305,35 @@ csv_read(csv_t *csv, FILE *in)
305 csv_field_reset(&csv->csv_field); 305 csv_field_reset(&csv->csv_field);
306 306
307 for ( int state = STATE_START_FIELD;; ) { 307 for ( int state = STATE_START_FIELD;; ) {
308 int ch; 308 int chr;
309 309
310 switch ( state ) { 310 switch ( state ) {
311 case STATE_START_FIELD: 311 case STATE_START_FIELD:
312 csv_field_append(&csv->csv_field, csv->csv_string.pos, csv->csv_options); 312 csv_field_append(&csv->csv_field, csv->csv_string.pos, csv->csv_options);
313 313
314 ch = getc(in); 314 chr = getc(in);
315 if ( ch == EOF ) { 315 if ( chr == EOF ) {
316 state = STATE_END_FILE; 316 state = STATE_END_FILE;
317 } 317 }
318 else if ( ch == '\r' ) { // test for CR.. 318 else if ( chr == '\r' ) { // test for CR..
319 ch = getc(in); 319 chr = getc(in);
320 if ( ch != '\n' ) { // ..LF 320 if ( chr != '\n' ) { // ..LF
321 (void) ungetc(ch, in); 321 (void) ungetc(chr, in);
322 } 322 }
323 state = STATE_END_LINE; 323 state = STATE_END_LINE;
324 } 324 }
325 else if ( ch == '\n' ) { 325 else if ( chr == '\n' ) {
326 state = STATE_END_LINE; 326 state = STATE_END_LINE;
327 } 327 }
328 else if ( ch == SEP ) { 328 else if ( chr == SEP ) {
329 state = STATE_END_FIELD; 329 state = STATE_END_FIELD;
330 } 330 }
331 else if ( ch == DELIM ) { 331 else if ( chr == DELIM ) {
332 state = STATE_QUOTED_FIELD; 332 state = STATE_QUOTED_FIELD;
333 } 333 }
334 else { 334 else {
335 if ( ch != '\0' ) { 335 if ( chr != '\0' ) {
336 csv_string_append(&csv->csv_string, ch, csv->csv_options); 336 csv_string_append(&csv->csv_string, chr, csv->csv_options);
337 } 337 }
338 state = STATE_SIMPLE_FIELD; 338 state = STATE_SIMPLE_FIELD;
339 } 339 }
@@ -341,39 +341,39 @@ csv_read(csv_t *csv, FILE *in)
341 341
342 case STATE_QUOTED_FIELD: 342 case STATE_QUOTED_FIELD:
343 do { 343 do {
344 ch = getc(in); 344 chr = getc(in);
345 if ( ch == EOF ) { 345 if ( chr == EOF ) {
346 state = STATE_END_FILE; 346 state = STATE_END_FILE;
347 } 347 }
348 else if ( ch == DELIM ) { 348 else if ( chr == DELIM ) {
349 ch = getc(in); 349 chr = getc(in);
350 if ( ch == EOF ) { 350 if ( chr == EOF ) {
351 state = STATE_END_FILE; 351 state = STATE_END_FILE;
352 } 352 }
353 else if ( ch == DELIM ) { 353 else if ( chr == DELIM ) {
354 csv_string_append(&csv->csv_string, DELIM, csv->csv_options); 354 csv_string_append(&csv->csv_string, DELIM, csv->csv_options);
355 } 355 }
356 else if ( ch == SEP ) { 356 else if ( chr == SEP ) {
357 state = STATE_END_FIELD; 357 state = STATE_END_FIELD;
358 } 358 }
359 else if ( ch == '\r' ) { 359 else if ( chr == '\r' ) {
360 ch = getc(in); 360 chr = getc(in);
361 if ( ch != '\n' ) { 361 if ( chr != '\n' ) {
362 (void) ungetc(ch, in); 362 (void) ungetc(chr, in);
363 } 363 }
364 state = STATE_END_LINE; 364 state = STATE_END_LINE;
365 } 365 }
366 else if ( ch == '\n' ) { 366 else if ( chr == '\n' ) {
367 state = STATE_END_LINE; 367 state = STATE_END_LINE;
368 } 368 }
369 else { 369 else {
370 csv_string_append(&csv->csv_string, DELIM, csv->csv_options); 370 csv_string_append(&csv->csv_string, DELIM, csv->csv_options);
371 (void) ungetc(ch, in); // we have read too far... Put the character back! 371 (void) ungetc(chr, in); // we have read too far... Put the character back!
372 } 372 }
373 } 373 }
374 else { 374 else {
375 if ( ch != '\0' ) { 375 if ( chr != '\0' ) {
376 csv_string_append(&csv->csv_string, ch, csv->csv_options); 376 csv_string_append(&csv->csv_string, chr, csv->csv_options);
377 } 377 }
378 } 378 }
379 } while ( state == STATE_QUOTED_FIELD ); 379 } while ( state == STATE_QUOTED_FIELD );
@@ -381,26 +381,26 @@ csv_read(csv_t *csv, FILE *in)
381 381
382 case STATE_SIMPLE_FIELD: 382 case STATE_SIMPLE_FIELD:
383 do { 383 do {
384 ch = getc(in); 384 chr = getc(in);
385 if ( ch == EOF ) { 385 if ( chr == EOF ) {
386 state = STATE_END_FILE; 386 state = STATE_END_FILE;
387 } 387 }
388 else if ( ch == SEP ) { 388 else if ( chr == SEP ) {
389 state = STATE_END_FIELD; 389 state = STATE_END_FIELD;
390 } 390 }
391 else if ( ch == '\r' ) { 391 else if ( chr == '\r' ) {
392 ch = getc(in); 392 chr = getc(in);
393 if ( ch != '\n' ) { 393 if ( chr != '\n' ) {
394 (void) ungetc(ch, in); 394 (void) ungetc(chr, in);
395 } 395 }
396 state = STATE_END_LINE; 396 state = STATE_END_LINE;
397 } 397 }
398 else if ( ch == '\n' ) { 398 else if ( chr == '\n' ) {
399 state = STATE_END_LINE; 399 state = STATE_END_LINE;
400 } 400 }
401 else { 401 else {
402 if ( ch != '\0' ) { 402 if ( chr != '\0' ) {
403 csv_string_append(&csv->csv_string, ch, csv->csv_options); 403 csv_string_append(&csv->csv_string, chr, csv->csv_options);
404 } 404 }
405 } 405 }
406 } while ( state == STATE_SIMPLE_FIELD ); 406 } while ( state == STATE_SIMPLE_FIELD );