From 54b0a604ddc171e32c7742d16a28a96a4a943c55 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Sat, 26 Sep 2020 21:06:22 -0500 Subject: [PATCH] Bugfix: fss read programs should return 0 on invalid/empty files when --total is passed. --- level_3/fss_basic_list_read/c/fss_basic_list_read.c | 4 ++++ level_3/fss_basic_list_read/c/private-fss_basic_list_read.c | 5 +++++ level_3/fss_basic_read/c/fss_basic_read.c | 4 ++++ level_3/fss_basic_read/c/private-fss_basic_read.c | 4 ++++ level_3/fss_extended_list_read/c/fss_extended_list_read.c | 4 ++++ .../c/private-fss_extended_list_read.c | 5 +++++ level_3/fss_extended_read/c/fss_extended_read.c | 4 ++++ level_3/fss_extended_read/c/private-fss_extended_read.c | 4 ++++ 8 files changed, 34 insertions(+) diff --git a/level_3/fss_basic_list_read/c/fss_basic_list_read.c b/level_3/fss_basic_list_read/c/fss_basic_list_read.c index c067b833d..8eab6b826 100644 --- a/level_3/fss_basic_list_read/c/fss_basic_list_read.c +++ b/level_3/fss_basic_list_read/c/fss_basic_list_read.c @@ -372,6 +372,10 @@ extern "C" { // Skip past empty files. if (!data->quantity.total) { + if (data->parameters[fss_basic_list_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + } + f_file_stream_close(F_true, &file); continue; } diff --git a/level_3/fss_basic_list_read/c/private-fss_basic_list_read.c b/level_3/fss_basic_list_read/c/private-fss_basic_list_read.c index e8f4f1dda..fcc333d22 100644 --- a/level_3/fss_basic_list_read/c/private-fss_basic_list_read.c +++ b/level_3/fss_basic_list_read/c/private-fss_basic_list_read.c @@ -217,6 +217,11 @@ extern "C" { return F_status_set_error(status); } else if (status == F_data_not_stop || status == F_data_not_eos) { + if (data->parameters[fss_basic_list_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + return F_none; + } + // Clear buffers, then attempt the next file. f_macro_fss_contents_t_delete_simple(data->contents); f_macro_fss_objects_t_delete_simple(data->objects); diff --git a/level_3/fss_basic_read/c/fss_basic_read.c b/level_3/fss_basic_read/c/fss_basic_read.c index 8eb01bfb1..ba092b1c3 100644 --- a/level_3/fss_basic_read/c/fss_basic_read.c +++ b/level_3/fss_basic_read/c/fss_basic_read.c @@ -372,6 +372,10 @@ extern "C" { // Skip past empty files. if (!data->quantity.total) { + if (data->parameters[fss_basic_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + } + f_file_stream_close(F_true, &file); continue; } diff --git a/level_3/fss_basic_read/c/private-fss_basic_read.c b/level_3/fss_basic_read/c/private-fss_basic_read.c index 10292f62b..bdcb72f98 100644 --- a/level_3/fss_basic_read/c/private-fss_basic_read.c +++ b/level_3/fss_basic_read/c/private-fss_basic_read.c @@ -217,6 +217,10 @@ extern "C" { return F_status_set_error(status); } else if (status == F_data_not_stop || status == F_data_not_eos) { + if (data->parameters[fss_basic_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + return F_none; + } // Clear buffers, then attempt the next file. f_macro_fss_contents_t_delete_simple(data->contents); diff --git a/level_3/fss_extended_list_read/c/fss_extended_list_read.c b/level_3/fss_extended_list_read/c/fss_extended_list_read.c index ae48f280c..991629318 100644 --- a/level_3/fss_extended_list_read/c/fss_extended_list_read.c +++ b/level_3/fss_extended_list_read/c/fss_extended_list_read.c @@ -356,6 +356,10 @@ extern "C" { // Skip past empty files. if (!data->quantity.total) { + if (data->parameters[fss_extended_list_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + } + f_file_stream_close(F_true, &file); continue; } diff --git a/level_3/fss_extended_list_read/c/private-fss_extended_list_read.c b/level_3/fss_extended_list_read/c/private-fss_extended_list_read.c index 13254ae2c..29455b66c 100644 --- a/level_3/fss_extended_list_read/c/private-fss_extended_list_read.c +++ b/level_3/fss_extended_list_read/c/private-fss_extended_list_read.c @@ -217,6 +217,11 @@ extern "C" { return F_status_set_error(status); } else if (status == F_data_not_stop || status == F_data_not_eos) { + if (data->parameters[fss_extended_list_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + return F_none; + } + // Clear buffers, then attempt the next file. f_macro_fss_nest_t_delete_simple(data->nest); f_macro_string_dynamic_t_delete_simple(data->buffer); diff --git a/level_3/fss_extended_read/c/fss_extended_read.c b/level_3/fss_extended_read/c/fss_extended_read.c index 5283a59c4..8354d77a5 100644 --- a/level_3/fss_extended_read/c/fss_extended_read.c +++ b/level_3/fss_extended_read/c/fss_extended_read.c @@ -373,6 +373,10 @@ extern "C" { // Skip past empty files. if (!data->quantity.total) { + if (data->parameters[fss_extended_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + } + f_file_stream_close(F_true, &file); continue; } diff --git a/level_3/fss_extended_read/c/private-fss_extended_read.c b/level_3/fss_extended_read/c/private-fss_extended_read.c index 621ba897d..294ec9aaf 100644 --- a/level_3/fss_extended_read/c/private-fss_extended_read.c +++ b/level_3/fss_extended_read/c/private-fss_extended_read.c @@ -217,6 +217,10 @@ extern "C" { return F_status_set_error(status); } else if (status == F_data_not_stop || status == F_data_not_eos) { + if (data->parameters[fss_extended_read_parameter_total].result == f_console_result_found) { + fprintf(f_type_output, "0%c", f_string_eol[0]); + return F_none; + } // Clear buffers, then attempt the next file. f_macro_fss_contents_t_delete_simple(data->contents); -- 2.47.3