From: Kevin Day Date: Mon, 14 Dec 2020 01:44:59 +0000 (-0600) Subject: Bugfix: closing the before at the end of the program can cause output pipe never... X-Git-Tag: 0.5.2~17 X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=f05cd13c723ba1f4a4f393884dcc118c9c0a6851;p=fll Bugfix: closing the before at the end of the program can cause output pipe never to send. Make sure that the output pipes (output buffers) are flushed before closing. --- diff --git a/level_3/byte_dump/c/main.c b/level_3/byte_dump/c/main.c index 171442274..3d6d9102f 100644 --- a/level_3/byte_dump/c/main.c +++ b/level_3/byte_dump/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = byte_dump_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/control/c/main.c b/level_3/control/c/main.c index b0da32a95..956ba1485 100644 --- a/level_3/control/c/main.c +++ b/level_3/control/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = control_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/controller/c/main.c b/level_3/controller/c/main.c index d9cde60ea..9a5eef394 100644 --- a/level_3/controller/c/main.c +++ b/level_3/controller/c/main.c @@ -12,6 +12,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = controller_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fake/c/main.c b/level_3/fake/c/main.c index bf9a47ed4..1091ef4ab 100644 --- a/level_3/fake/c/main.c +++ b/level_3/fake/c/main.c @@ -45,6 +45,10 @@ int main(const unsigned long argc, const f_string_t *argv) { f_signal_close(&data.signal); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_basic_list_read/c/main.c b/level_3/fss_basic_list_read/c/main.c index c7119c89e..aed5e66f0 100644 --- a/level_3/fss_basic_list_read/c/main.c +++ b/level_3/fss_basic_list_read/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_basic_list_read_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_basic_list_write/c/main.c b/level_3/fss_basic_list_write/c/main.c index 8821ae6ca..7d8ed20f3 100644 --- a/level_3/fss_basic_list_write/c/main.c +++ b/level_3/fss_basic_list_write/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_basic_list_write_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_basic_read/c/main.c b/level_3/fss_basic_read/c/main.c index 525f9a868..d6a5479ac 100644 --- a/level_3/fss_basic_read/c/main.c +++ b/level_3/fss_basic_read/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_basic_read_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_basic_write/c/main.c b/level_3/fss_basic_write/c/main.c index 3e3b56b27..f425c45bf 100644 --- a/level_3/fss_basic_write/c/main.c +++ b/level_3/fss_basic_write/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_basic_write_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_embedded_list_read/c/main.c b/level_3/fss_embedded_list_read/c/main.c index 7cd347c70..5e459fb44 100644 --- a/level_3/fss_embedded_list_read/c/main.c +++ b/level_3/fss_embedded_list_read/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_embedded_list_read_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_embedded_list_write/c/main.c b/level_3/fss_embedded_list_write/c/main.c index d194dfba0..884768033 100644 --- a/level_3/fss_embedded_list_write/c/main.c +++ b/level_3/fss_embedded_list_write/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_embedded_list_write_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_extended_list_read/c/main.c b/level_3/fss_extended_list_read/c/main.c index c1d03831f..6d750b251 100644 --- a/level_3/fss_extended_list_read/c/main.c +++ b/level_3/fss_extended_list_read/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_extended_list_read_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_extended_list_write/c/main.c b/level_3/fss_extended_list_write/c/main.c index d543498b1..bb11a767d 100644 --- a/level_3/fss_extended_list_write/c/main.c +++ b/level_3/fss_extended_list_write/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_extended_list_write_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_extended_read/c/main.c b/level_3/fss_extended_read/c/main.c index d9c3ea902..d4bf3e5c4 100644 --- a/level_3/fss_extended_read/c/main.c +++ b/level_3/fss_extended_read/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_extended_read_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_extended_write/c/main.c b/level_3/fss_extended_write/c/main.c index 4eee1d6c9..fbadc6e98 100644 --- a/level_3/fss_extended_write/c/main.c +++ b/level_3/fss_extended_write/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_extended_write_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/fss_status_code/c/main.c b/level_3/fss_status_code/c/main.c index a668c81ee..1880cb0eb 100644 --- a/level_3/fss_status_code/c/main.c +++ b/level_3/fss_status_code/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = fss_status_code_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/iki_read/c/main.c b/level_3/iki_read/c/main.c index 0a7f6b4db..2b91ba5ea 100644 --- a/level_3/iki_read/c/main.c +++ b/level_3/iki_read/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = iki_read_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/iki_write/c/main.c b/level_3/iki_write/c/main.c index 08a68b7c4..b1614dedf 100644 --- a/level_3/iki_write/c/main.c +++ b/level_3/iki_write/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = iki_write_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/init/c/main.c b/level_3/init/c/main.c index cd1282bdb..d10b1a00b 100644 --- a/level_3/init/c/main.c +++ b/level_3/init/c/main.c @@ -28,6 +28,10 @@ int main(const unsigned long argc, const f_string_t *argv) { f_signal_close(&data.signal); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input); diff --git a/level_3/status_code/c/main.c b/level_3/status_code/c/main.c index 1126a8882..0dd814535 100644 --- a/level_3/status_code/c/main.c +++ b/level_3/status_code/c/main.c @@ -10,6 +10,10 @@ int main(const unsigned long argc, const f_string_t *argv) { const f_status_t status = status_code_main(arguments, &data); + // flush output pipes before closing. + fflush(f_type_output); + fflush(f_type_error); + // close all open file descriptors. close(f_type_descriptor_output); close(f_type_descriptor_input);