From 19d3c8e85b043d8025c8560f0c1e4cab1f96ed1f Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Sat, 21 Aug 2021 00:21:48 -0500 Subject: [PATCH] Progress: Continue string and convert changes, fixing bugs. Convert the fake program. Move the "%n" to "%in" to be consistent with how "%un" is used. Change print string safely to ignore NULL rather than print the NULL character symbol. This is done to be consistent with existing FLL design. I realized printing the symbol is a problem when I test the fake build verbose setting. Add warning output to fake and control programs. Add -O2 optimization by default. Provide standard conversion base data. --- build/level_0/settings | 2 +- build/monolithic/settings | 2 +- level_0/f_color/c/color-common.h | 2 +- level_0/f_control_group/c/control_group-common.c | 4 +- level_0/f_control_group/c/control_group-common.h | 4 +- level_0/f_conversion/c/conversion-common.c | 17 + level_0/f_conversion/c/conversion-common.h | 18 + level_0/f_conversion/data/build/settings | 2 +- level_0/f_print/c/print-common.h | 4 +- level_0/f_print/c/print.c | 9 +- level_0/f_print/c/print.h | 58 +- level_0/f_print/c/private-print.c | 9 +- level_1/fl_print/c/print.c | 18 +- level_1/fl_print/c/print.h | 52 +- level_1/fl_print/c/private-print.c | 90 +-- level_1/fl_print/c/private-print.h | 10 +- level_2/fll_error/c/error.c | 268 +++---- level_2/fll_error/c/private-error.c | 52 +- level_2/fll_print/c/print.c | 229 +++--- level_2/fll_print/c/print.h | 436 +++++----- level_2/fll_program/c/program.c | 43 +- level_2/fll_program/c/program.h | 12 +- level_3/byte_dump/c/byte_dump.c | 134 ++-- level_3/byte_dump/c/byte_dump.h | 2 + level_3/byte_dump/c/private-byte_dump.c | 36 +- level_3/control/c/control.c | 8 + level_3/control/data/build/dependencies | 1 + level_3/control/data/build/settings | 2 +- level_3/controller/c/controller.c | 46 +- level_3/controller/c/private-common.c | 26 +- level_3/controller/c/private-controller.c | 140 ++-- level_3/controller/c/private-entry.c | 166 ++-- level_3/controller/c/private-rule.c | 416 +++++----- level_3/controller/c/private-thread.c | 24 +- level_3/fake/c/fake.c | 100 +-- level_3/fake/c/fake.h | 4 + level_3/fake/c/private-build.c | 420 +++++----- level_3/fake/c/private-clean.c | 21 +- level_3/fake/c/private-fake.c | 160 ++-- level_3/fake/c/private-make.c | 960 ++++++++++++----------- level_3/fake/c/private-print.c | 463 +++++------ level_3/fake/c/private-skeleton.c | 50 +- level_3/fake/data/build/dependencies | 2 + level_3/fake/data/build/settings | 4 +- level_3/fake/documents/fakefile.txt | 2 +- 45 files changed, 2346 insertions(+), 2182 deletions(-) create mode 100644 level_0/f_conversion/c/conversion-common.c diff --git a/build/level_0/settings b/build/level_0/settings index 19a332c..425634a 100644 --- a/build/level_0/settings +++ b/build/level_0/settings @@ -22,7 +22,7 @@ build_language c build_libraries -lc -lcap build_libraries-level build_libraries-level_threadless -build_sources_library account.c private-account.c capability.c color.c color-common.c console.c console-common.c control_group.c control_group-common.c conversion.c private-conversion.c directory.c private-directory.c environment.c private-environment.c file.c file-common.c private-file.c fss.c private-fss.c fss-common.c fss_named.c fss_nest.c fss_set.c iki.c iki-common.c private-iki.c limit.c memory.c memory_structure.c private-memory.c path.c path-common.c private-path.c pipe.c print.c print-common.c private-print.c serialize.c serialize-common.c private-serialize.c signal.c socket.c string.c string-common.c private-string.c string_dynamic.c string_map.c string_quantity.c string_range.c string_triple.c type_array.c private-type_array.c utf.c utf-common.c private-utf.c utf_dynamic.c utf_map.c utf_triple.c +build_sources_library account.c private-account.c capability.c color.c color-common.c console.c console-common.c control_group.c control_group-common.c conversion.c conversion-common.c private-conversion.c directory.c private-directory.c environment.c private-environment.c file.c file-common.c private-file.c fss.c private-fss.c fss-common.c fss_named.c fss_nest.c fss_set.c iki.c iki-common.c private-iki.c limit.c memory.c memory_structure.c private-memory.c path.c path-common.c private-path.c pipe.c print.c print-common.c private-print.c serialize.c serialize-common.c private-serialize.c signal.c socket.c string.c string-common.c private-string.c string_dynamic.c string_map.c string_quantity.c string_range.c string_triple.c type_array.c private-type_array.c utf.c utf-common.c private-utf.c utf_dynamic.c utf_map.c utf_triple.c build_sources_library-level thread.c private-thread.c build_sources_program build_sources_headers account.h account-common.h capability.h capability-common.h color.h color-common.h console.h console-common.h control_group.h control_group-common.h conversion.h conversion-common.h directory.h directory_type.h directory-common.h environment.h environment-common.h execute.h execute-common.h file.h file-common.h fss.h fss-common.h fss_comment.h fss_delimit.h fss_named.h fss_nest.h fss_quote.h fss_set.h iki.h iki-common.h limit.h limit-common.h memory.h memory_structure.h memory-common.h path.h path-common.h pipe.h print.h print-common.h serialize.h serialize-common.h signal.h signal-common.h socket.h socket-common.h status.h string.h string-common.h string_dynamic.h string_map.h string_quantity.h string_range.h string_triple.h type.h type_array.h type_array-common.h utf.h utf-common.h utf_dynamic.h utf_map.h utf_triple.h diff --git a/build/monolithic/settings b/build/monolithic/settings index 00364bd..5238803 100644 --- a/build/monolithic/settings +++ b/build/monolithic/settings @@ -22,7 +22,7 @@ build_language c build_libraries -lc -lcap build_libraries-monolithic build_libraries-monolithic_threadless -build_sources_library level_0/account.c level_0/private-account.c level_0/capability.c level_0/color.c level_0/color-common.c level_0/console.c level_0/console-common.c level_0/control_group.c level_0/control_group-common.c level_0/conversion.c level_0/private-conversion.c level_0/directory.c level_0/private-directory.c level_0/environment.c level_0/private-environment.c level_0/file.c level_0/file-common.c level_0/private-file.c level_0/fss.c level_0/private-fss.c level_0/fss-common.c level_0/fss_named.c level_0/fss_nest.c level_0/fss_set.c level_0/iki.c level_0/iki-common.c level_0/private-iki.c level_0/limit.c level_0/memory.c level_0/memory_structure.c level_0/private-memory.c level_0/path.c level_0/path-common.c level_0/private-path.c level_0/pipe.c level_0/print.c level_0/print-common.c level_0/private-print.c level_0/serialize.c level_0/serialize-common.c level_0/private-serialize.c level_0/signal.c level_0/socket.c level_0/string.c level_0/string-common.c level_0/private-string.c level_0/string_dynamic.c level_0/string_map.c level_0/string_quantity.c level_0/string_range.c level_0/string_triple.c level_0/type_array.c level_0/private-type_array.c level_0/utf.c level_0/utf-common.c level_0/private-utf.c level_0/utf_dynamic.c level_0/utf_map.c level_0/utf_triple.c level_1/console.c level_1/control_group.c level_1/conversion.c level_1/directory.c level_1/private-directory.c level_1/environment.c level_1/private-fss.c level_1/fss_basic.c level_1/fss_basic_list.c level_1/fss_embedded_list.c level_1/fss_extended.c level_1/fss_extended_list.c level_1/iki.c level_1/print.c level_1/private-print.c level_1/signal.c level_1/status.c level_1/string.c level_1/private-string.c level_1/utf.c level_1/private-utf.c level_1/utf_file.c level_1/private-utf_file.c level_2/control_group.c level_2/error.c level_2/error-common.c level_2/private-error.c level_2/execute.c level_2/private-execute.c level_2/file.c level_2/private-file.c level_2/fss.c level_2/private-fss.c level_2/fss_basic.c level_2/fss_basic_list.c level_2/fss_embedded_list.c level_2/fss_extended.c level_2/fss_extended_list.c level_2/fss_status.c level_2/iki.c level_2/private-iki.c level_2/path.c level_2/print.c level_2/program.c level_2/status.c +build_sources_library level_0/account.c level_0/private-account.c level_0/capability.c level_0/color.c level_0/color-common.c level_0/console.c level_0/console-common.c level_0/control_group.c level_0/control_group-common.c level_0/conversion.c level_0/conversion-common.c level_0/private-conversion.c level_0/directory.c level_0/private-directory.c level_0/environment.c level_0/private-environment.c level_0/file.c level_0/file-common.c level_0/private-file.c level_0/fss.c level_0/private-fss.c level_0/fss-common.c level_0/fss_named.c level_0/fss_nest.c level_0/fss_set.c level_0/iki.c level_0/iki-common.c level_0/private-iki.c level_0/limit.c level_0/memory.c level_0/memory_structure.c level_0/private-memory.c level_0/path.c level_0/path-common.c level_0/private-path.c level_0/pipe.c level_0/print.c level_0/print-common.c level_0/private-print.c level_0/serialize.c level_0/serialize-common.c level_0/private-serialize.c level_0/signal.c level_0/socket.c level_0/string.c level_0/string-common.c level_0/private-string.c level_0/string_dynamic.c level_0/string_map.c level_0/string_quantity.c level_0/string_range.c level_0/string_triple.c level_0/type_array.c level_0/private-type_array.c level_0/utf.c level_0/utf-common.c level_0/private-utf.c level_0/utf_dynamic.c level_0/utf_map.c level_0/utf_triple.c level_1/console.c level_1/control_group.c level_1/conversion.c level_1/directory.c level_1/private-directory.c level_1/environment.c level_1/private-fss.c level_1/fss_basic.c level_1/fss_basic_list.c level_1/fss_embedded_list.c level_1/fss_extended.c level_1/fss_extended_list.c level_1/iki.c level_1/print.c level_1/private-print.c level_1/signal.c level_1/status.c level_1/string.c level_1/private-string.c level_1/utf.c level_1/private-utf.c level_1/utf_file.c level_1/private-utf_file.c level_2/control_group.c level_2/error.c level_2/error-common.c level_2/private-error.c level_2/execute.c level_2/private-execute.c level_2/file.c level_2/private-file.c level_2/fss.c level_2/private-fss.c level_2/fss_basic.c level_2/fss_basic_list.c level_2/fss_embedded_list.c level_2/fss_extended.c level_2/fss_extended_list.c level_2/fss_status.c level_2/iki.c level_2/private-iki.c level_2/path.c level_2/print.c level_2/program.c level_2/status.c build_sources_library-monolithic level_0/thread.c level_0/private-thread.c build_sources_program build_sources_headers level_0/account.h level_0/account-common.h level_0/capability.h level_0/capability-common.h level_0/color.h level_0/color-common.h level_0/console.h level_0/console-common.h level_0/control_group.h level_0/control_group-common.h level_0/conversion.h level_0/conversion-common.h level_0/directory.h level_0/directory_type.h level_0/directory-common.h level_0/environment.h level_0/environment-common.h level_0/execute.h level_0/execute-common.h level_0/file.h level_0/file-common.h level_0/fss.h level_0/fss-common.h level_0/fss_comment.h level_0/fss_delimit.h level_0/fss_named.h level_0/fss_nest.h level_0/fss_quote.h level_0/fss_set.h level_0/iki.h level_0/iki-common.h level_0/limit.h level_0/limit-common.h level_0/memory.h level_0/memory_structure.h level_0/memory-common.h level_0/path.h level_0/path-common.h level_0/pipe.h level_0/print.h level_0/print-common.h level_0/serialize.h level_0/serialize-common.h level_0/signal.h level_0/signal-common.h level_0/socket.h level_0/socket-common.h level_0/status.h level_0/string.h level_0/string-common.h level_0/string_dynamic.h level_0/string_map.h level_0/string_quantity.h level_0/string_range.h level_0/string_triple.h level_0/type.h level_0/type_array.h level_0/type_array-common.h level_0/utf.h level_0/utf-common.h level_0/utf_dynamic.h level_0/utf_map.h level_0/utf_triple.h level_1/console.h level_1/control_group.h level_1/conversion.h level_1/directory.h level_1/environment.h level_1/execute.h level_1/execute-common.h level_1/fss.h level_1/fss_basic.h level_1/fss_basic_list.h level_1/fss_embedded_list.h level_1/fss_extended.h level_1/fss_extended_list.h level_1/fss_status.h level_1/iki.h level_1/print.h level_1/signal.h level_1/signal-common.h level_1/status.h level_1/string.h level_1/utf.h level_1/utf_file.h level_2/control_group.h level_2/error.h level_2/error-common.h level_2/execute.h level_2/file.h level_2/fss.h level_2/fss_basic.h level_2/fss_basic_list.h level_2/fss_embedded_list.h level_2/fss_extended.h level_2/fss_extended_list.h level_2/fss_status.h level_2/iki.h level_2/path.h level_2/print.h level_2/program.h level_2/status.h diff --git a/level_0/f_color/c/color-common.h b/level_0/f_color/c/color-common.h index 3cfdc9f..625aa95 100644 --- a/level_0/f_color/c/color-common.h +++ b/level_0/f_color/c/color-common.h @@ -418,7 +418,7 @@ extern "C" { macro_f_string_dynamic_t_clear(context.normal_reset) #define macro_f_color_context_t_new(status, context) \ - macro_f_string_dynamic_t_resize(status, context.reset, f_color_max_size + 1) \ + macro_f_string_dynamic_t_resize(status, context.reset, f_color_max_size + 1) \ if (F_status_is_error_not(status)) macro_f_string_dynamic_t_resize(status, context.warning, f_color_max_size + 1) \ if (F_status_is_error_not(status)) macro_f_string_dynamic_t_resize(status, context.error, f_color_max_size + 1) \ if (F_status_is_error_not(status)) macro_f_string_dynamic_t_resize(status, context.title, f_color_max_size + 1) \ diff --git a/level_0/f_control_group/c/control_group-common.c b/level_0/f_control_group/c/control_group-common.c index 030a74f..29bbd76 100644 --- a/level_0/f_control_group/c/control_group-common.c +++ b/level_0/f_control_group/c/control_group-common.c @@ -4,11 +4,11 @@ extern "C" { #endif -#ifndef _di_fl_control_group_defines_ +#ifndef _di_f_control_group_defines_ const f_string_t f_control_group_path_system_default_s = f_control_group_path_system_default; const f_string_t f_control_group_path_system_prefix_s = f_control_group_path_system_prefix; const f_string_t f_control_group_path_system_suffix_s = f_control_group_path_system_suffix; -#endif // _di_fl_control_group_defines_ +#endif // _di_f_control_group_defines_ #ifdef __cplusplus } // extern "C" diff --git a/level_0/f_control_group/c/control_group-common.h b/level_0/f_control_group/c/control_group-common.h index 1859cde..15ab2be 100644 --- a/level_0/f_control_group/c/control_group-common.h +++ b/level_0/f_control_group/c/control_group-common.h @@ -19,7 +19,7 @@ extern "C" { /** * The defines for control groups. */ -#ifndef _di_fl_control_group_defines_ +#ifndef _di_f_control_group_defines_ #define f_control_group_path_system_default "sys/fs/cgroup/" #define f_control_group_path_system_prefix "/" #define f_control_group_path_system_suffix "/cgroup.procs" @@ -33,7 +33,7 @@ extern "C" { extern const f_string_t f_control_group_path_system_default_s; extern const f_string_t f_control_group_path_system_prefix_s; extern const f_string_t f_control_group_path_system_suffix_s; -#endif // _di_fl_control_group_defines_ +#endif // _di_f_control_group_defines_ /** * Provide a structure for associating some process with one or more control groups (cgroups). diff --git a/level_0/f_conversion/c/conversion-common.c b/level_0/f_conversion/c/conversion-common.c new file mode 100644 index 0000000..1b7a724 --- /dev/null +++ b/level_0/f_conversion/c/conversion-common.c @@ -0,0 +1,17 @@ +#include "conversion.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _di_f_conversion_data_t_defines_ + const f_conversion_data_t f_conversion_data_base_2_s = macro_f_conversion_data_t_initialize(2, 0, 1); + const f_conversion_data_t f_conversion_data_base_8_s = macro_f_conversion_data_t_initialize(8, 0, 1); + const f_conversion_data_t f_conversion_data_base_10_s = macro_f_conversion_data_t_initialize(10, 0, 1); + const f_conversion_data_t f_conversion_data_base_12_s = macro_f_conversion_data_t_initialize(12, 0, 1); + const f_conversion_data_t f_conversion_data_base_16_s = macro_f_conversion_data_t_initialize(16, 0, 1); +#endif // _di_f_conversion_data_t_defines_ + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/level_0/f_conversion/c/conversion-common.h b/level_0/f_conversion/c/conversion-common.h index 407b451..84d02a7 100644 --- a/level_0/f_conversion/c/conversion-common.h +++ b/level_0/f_conversion/c/conversion-common.h @@ -100,6 +100,24 @@ extern "C" { #endif // _di_f_conversion_data_t_ /** + * The defines for conversion data. + * + * f_conversion_data_base_*: + * - 2: Basic base-2 conversion structure. + * - 8: Basic base-8 conversion structure. + * - 10: Basic base-10 conversion structure. + * - 12: Basic base-12 conversion structure. + * - 16: Basic base-16 conversion structure. + */ +#ifndef _di_f_conversion_data_t_defines_ + extern const f_conversion_data_t f_conversion_data_base_2_s; + extern const f_conversion_data_t f_conversion_data_base_8_s; + extern const f_conversion_data_t f_conversion_data_base_10_s; + extern const f_conversion_data_t f_conversion_data_base_12_s; + extern const f_conversion_data_t f_conversion_data_base_16_s; +#endif // _di_f_conversion_data_t_defines_ + +/** * Define flags used by f_conversion_data_t. * * f_conversion_data_flag_*: diff --git a/level_0/f_conversion/data/build/settings b/level_0/f_conversion/data/build/settings index 7a2e38b..659291a 100644 --- a/level_0/f_conversion/data/build/settings +++ b/level_0/f_conversion/data/build/settings @@ -21,7 +21,7 @@ build_indexer ar build_language c build_libraries -lc build_libraries-individual -lf_memory -lf_string -lf_utf -build_sources_library conversion.c private-conversion.c +build_sources_library conversion.c conversion-common.c private-conversion.c build_sources_program build_sources_headers conversion.h conversion-common.h build_sources_script diff --git a/level_0/f_print/c/print-common.h b/level_0/f_print/c/print-common.h index 29153af..c537ea0 100644 --- a/level_0/f_print/c/print-common.h +++ b/level_0/f_print/c/print-common.h @@ -176,12 +176,12 @@ extern "C" { * - character_safe: "C", type is a 1-byte unsigned character, where control characters and other problems are handled. * - color_after: "]", type is f_color_set_t such that the f_color_set_t.after is used. * - color_before: "[", type is f_color_set_t such that the f_color_set_t.begin is used. - * - number: "n", "N", type is an f_number_signed_t. * - signed_8: "iii", "III", type is a int8_t. * - signed_16: "ii", "II", type is a int16_t. * - signed_32: "i", "I", type is a int32_t. * - signed_64: "il", "IL", type is a signed int64_t. * - signed_128: "ill", "ILL", type is a f_int_128_t. + * - number: "in", "IN", type is an f_number_signed_t. * - size: "z", "Z", type is a size_t. * - string_safe: "S", type is a NULL terminated string, where control characters and other problems are handled. * - string_static: "q", type is an f_string_static_t or f_string_dynamic_t and NULLs are ignored (not printed). @@ -202,12 +202,12 @@ extern "C" { f_print_format_type_character_safe, f_print_format_type_color_after, f_print_format_type_color_before, - f_print_format_type_number, f_print_format_type_signed_8, f_print_format_type_signed_16, f_print_format_type_signed_32, f_print_format_type_signed_64, f_print_format_type_signed_128, + f_print_format_type_signed_number, f_print_format_type_size, f_print_format_type_string, f_print_format_type_string_safe, diff --git a/level_0/f_print/c/print.c b/level_0/f_print/c/print.c index e11cc2e..3c69e35 100644 --- a/level_0/f_print/c/print.c +++ b/level_0/f_print/c/print.c @@ -586,8 +586,13 @@ extern "C" { i += width; } else { - status = private_f_print_character_safely(string[i++], output); - if (F_status_is_error(status)) return status; + if (string[i]) { + status = private_f_print_character_safely(string[i++], output); + if (F_status_is_error(status)) return status; + } + else { + ++i; + } } start = i; diff --git a/level_0/f_print/c/print.h b/level_0/f_print/c/print.h index 2cb5fe2..ba352b0 100644 --- a/level_0/f_print/c/print.h +++ b/level_0/f_print/c/print.h @@ -194,11 +194,11 @@ extern "C" { /** * Similar to a c-library printf, except that this prints a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print up to length 1-byte characters. * * This print function does not use locking, be sure something like flockfile() and funlockfile() are appropriately called. @@ -286,11 +286,11 @@ extern "C" { /** * Similar to a c-library printf, except that this will only print a specific range in a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print up to the specified range within the buffer. * * This print function does not use locking, be sure something like flockfile() and funlockfile() are appropriately called. @@ -396,11 +396,11 @@ extern "C" { /** * Similar to a c-library printf, except that this will only print a specific range. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except array. * Will print up to length 1-byte characters. * @@ -500,11 +500,11 @@ extern "C" { /** * Similar to a c-library printf, except that this prints a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except array. * Will print up to length 1-byte characters. * @@ -620,13 +620,13 @@ extern "C" { /** * Similar to a c-library printf, except that this will only print a specific range. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * An offset is provided because the except_at/except_int positions are expected to be relative to the start position, without the offset applied. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except_at array. * Will not print any 1-byte character within the ranges specified in except_in array. * Will print up to length 1-byte characters. @@ -738,11 +738,11 @@ extern "C" { /** * Similar to a c-library printf, except that this prints a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except_at array. * Will not print any 1-byte character within the ranges specified in except_in array. * Will print up to the length of the buffer. @@ -1029,11 +1029,11 @@ extern "C" { /** * Similar to a c-library printf, except that this will only print a specific range in a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except array. * Will print up to the specified range within the buffer. * @@ -1125,11 +1125,11 @@ extern "C" { /** * Similar to a c-library printf, except that this will only print a specific range. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print up to length 1-byte characters. * * This print function does not use locking, be sure something like flockfile() and funlockfile() are appropriately called. @@ -1159,7 +1159,7 @@ extern "C" { /** * Similar to a c-library printf. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will stop at NULL. @@ -1290,11 +1290,11 @@ extern "C" { /** * Similar to a c-library dprintf, except that this will only print a specific range. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print up to length 1-byte characters. * * @param string @@ -1390,11 +1390,11 @@ extern "C" { /** * Similar to a c-library dprintf, except that this prints a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print up to length 1-byte characters. * * @param buffer @@ -1492,11 +1492,11 @@ extern "C" { /** * Similar to a c-library dprintf, except that this will only print a specific range in a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print up to length 1-byte characters. * * @param buffer @@ -1604,11 +1604,11 @@ extern "C" { /** * Similar to a c-library dprintf, except that this will only print a specific range. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except array. * Will print up to length 1-byte characters. * @@ -1716,11 +1716,11 @@ extern "C" { /** * Similar to a c-library dprintf, except that this prints a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except array. * Will print up to the length of the buffer. * @@ -1830,11 +1830,11 @@ extern "C" { /** * Similar to a c-library dprintf, except that this will only print a specific range in a given dynamic string. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except array. * Will print up to the specified range within the buffer. * diff --git a/level_0/f_print/c/private-print.c b/level_0/f_print/c/private-print.c index 345972a..a636b3b 100644 --- a/level_0/f_print/c/private-print.c +++ b/level_0/f_print/c/private-print.c @@ -256,8 +256,13 @@ extern "C" { i += width; } else { - status = private_f_print_character_safely(string[i++], output); - if (F_status_is_error(status)) return status; + if (string[i]) { + status = private_f_print_character_safely(string[i++], output); + if (F_status_is_error(status)) return status; + } + else { + ++i; + } } start = i; diff --git a/level_1/fl_print/c/print.c b/level_1/fl_print/c/print.c index ce2d2a5..3fbeab1 100644 --- a/level_1/fl_print/c/print.c +++ b/level_1/fl_print/c/print.c @@ -91,8 +91,8 @@ extern "C" { } #endif // _di_fl_print_color_terminated_ -#ifndef _di_fl_print_string_ - f_status_t fl_print_string(const f_string_t string, FILE *output, ...) { +#ifndef _di_fl_print_format_ + f_status_t fl_print_format(const f_string_t string, FILE *output, ...) { #ifndef _di_level_1_parameter_checking_ if (!string) return 0; if (!output) return 0; @@ -109,7 +109,7 @@ extern "C" { if (*current == f_string_ascii_percent_s[0]) { current += 1; - current = private_fl_print_string_convert(current, output, &ap, &status); + current = private_fl_print_format_convert(current, output, &ap, &status); if (F_status_is_error(status)) break; } else { @@ -123,18 +123,18 @@ extern "C" { return status; } -#endif // _di_fl_print_string_ +#endif // _di_fl_print_format_ -#ifndef _di_fl_print_string_convert_ - f_string_t fl_print_string_convert(const f_string_t string, FILE *output, va_list *ap, f_status_t *status) { +#ifndef _di_fl_print_format_convert_ + f_string_t fl_print_format_convert(const f_string_t string, FILE *output, va_list *ap, f_status_t *status) { #ifndef _di_level_1_parameter_checking_ if (!output) return 0; if (!ap) return 0; #endif // _di_level_1_parameter_checking_ - return private_fl_print_string_convert(string, output, ap, status); + return private_fl_print_format_convert(string, output, ap, status); } -#endif // _di_fl_print_string_convert_ +#endif // _di_fl_print_format_convert_ #ifndef _di_fl_print_string_va_ f_status_t fl_print_string_va(const f_string_t string, FILE *output, va_list *ap) { @@ -151,7 +151,7 @@ extern "C" { if (*current == f_string_ascii_percent_s[0]) { current += 1; - current = private_fl_print_string_convert(current, output, ap, &status); + current = private_fl_print_format_convert(current, output, ap, &status); if (F_status_is_error(status)) break; } else { diff --git a/level_1/fl_print/c/print.h b/level_1/fl_print/c/print.h index c3a6140..c96c8d3 100644 --- a/level_1/fl_print/c/print.h +++ b/level_1/fl_print/c/print.h @@ -164,9 +164,9 @@ extern "C" { * @see f_print_safely() * @see f_print_terminated() */ -#ifndef _di_fl_print_string_ - extern f_status_t fl_print_string(const f_string_t string, FILE *output, ...); -#endif // _di_fl_print_string_ +#ifndef _di_fl_print_format_ + extern f_status_t fl_print_format(const f_string_t string, FILE *output, ...); +#endif // _di_fl_print_format_ /** * Convert and print a single part of a formatted string represented by the '%'. @@ -223,14 +223,14 @@ extern "C" { * @see f_print_safely() * @see f_print_terminated() */ -#ifndef _di_fl_print_string_convert_ - extern f_string_t fl_print_string_convert(const f_string_t string, FILE *output, va_list *ap, f_status_t *status); -#endif // _di_fl_print_string_convert_ +#ifndef _di_fl_print_format_convert_ + extern f_string_t fl_print_format_convert(const f_string_t string, FILE *output, va_list *ap, f_status_t *status); +#endif // _di_fl_print_format_convert_ /** * A formatted print function similar to (but not the same as) the c-library vfprintf() function. * - * This is identical to fl_print_string() except it accepts a va_list as a variable instead of as "...". + * This is identical to fl_print_format() except it accepts a va_list as a variable instead of as "...". * * This print function does not use locking, be sure something like flockfile() and funlockfile() are appropriately called. * @@ -273,7 +273,7 @@ extern "C" { * @see f_print_dynamic_safely() * @see f_print_safely() * @see f_print_terminated() - * @see fl_print_string() + * @see fl_print_format() */ #ifndef _di_fl_print_string_va_ extern f_status_t fl_print_string_va(const f_string_t string, FILE *output, va_list *ap); @@ -353,11 +353,11 @@ extern "C" { /** * Print a string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * * This print function does not use locking, be sure something like flockfile() and funlockfile() are appropriately called. * @@ -461,11 +461,11 @@ extern "C" { /** * Print a dynamic string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print the entire dynamic string, except for leading/trailing whitespace. * * NULL characters are treated as whitespace for the purpose of trimming. @@ -574,11 +574,11 @@ extern "C" { /** * Print a partial dynamic string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print the only the buffer range specified by range, except for leading/trailing whitespace. * * NULL characters are treated as whitespace for the purpose of trimming. @@ -699,11 +699,11 @@ extern "C" { /** * Print a string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except_at array. * * NULL characters are treated as whitespace for the purpose of trimming. @@ -823,11 +823,11 @@ extern "C" { /** * Print a dynamic string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print the entire dynamic string, except for leading/trailing whitespace. * Will not print any 1-byte character at a location specified in except_at array. * @@ -958,11 +958,11 @@ extern "C" { /** * Print a string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except_at array. * Will not print any 1-byte character within the ranges specified in except_in array. * @@ -1096,11 +1096,11 @@ extern "C" { /** * Print a dynamic string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will print the entire dynamic string, except for leading/trailing whitespace. * Will not print any 1-byte character at a location specified in except_at array. * Will not print any 1-byte character within the ranges specified in except_in array. @@ -1233,11 +1233,11 @@ extern "C" { /** * Print a partial dynamic string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except_at array. * Will not print any 1-byte character within the ranges specified in except_in array. * Will print the only the buffer range specified by range, except for leading/trailing whitespace. @@ -1364,11 +1364,11 @@ extern "C" { /** * Print a partial dynamic string, stripping leading and trailing whitespace. * - * Control characters are converted to the Unicode control character symbols, including NULL. + * Control characters are converted to the Unicode control character symbols, excluding NULL. * UTF-8 sequences with invalid widths are converted to the unknown character '�'. * * Will not stop at NULL. - * Will print NULL (as a control character symbol). + * Will not print NULL. * Will not print any 1-byte character at a location specified in except array. * Will print the only the buffer range specified by range, except for leading/trailing whitespace. * diff --git a/level_1/fl_print/c/private-print.c b/level_1/fl_print/c/private-print.c index bd3c154..c06232b 100644 --- a/level_1/fl_print/c/private-print.c +++ b/level_1/fl_print/c/private-print.c @@ -5,8 +5,8 @@ extern "C" { #endif -#if !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) - f_string_t private_fl_print_string_convert(f_string_t string, FILE *output, va_list *ap, f_status_t *status) { +#if !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) + f_string_t private_fl_print_format_convert(f_string_t string, FILE *output, va_list *ap, f_status_t *status) { const f_string_t start = string; @@ -97,7 +97,7 @@ extern "C" { return string; } - string += 1; + ++string; if (*string < 0x30 || *string > 0x39) { *status = F_status_set_error(F_valid_not); @@ -181,27 +181,28 @@ extern "C" { if (*(string + 1) == f_string_ascii_I_s[0]) { if (*(string + 2) == f_string_ascii_I_s[0]) { type = f_print_format_type_signed_8; - string = string + 2; + string += 2; } else { type = f_print_format_type_signed_16; - string += 1; + ++string; } } else if (*(string + 1) == f_string_ascii_L_s[0]) { if (*(string + 2) == f_string_ascii_L_s[0]) { type = f_print_format_type_signed_128; - string = string + 2; + string += 2; } else { type = f_print_format_type_signed_64; - string += 1; + ++string; } } - } - else if (*string == f_string_ascii_N_s[0]) { - type = f_print_format_type_number; - flag |= f_print_format_flag_uppercase; + else if (*(string + 1) == f_string_ascii_N_s[0]) { + type = f_print_format_type_signed_number; + flag |= f_print_format_flag_uppercase; + ++string; + } } else if (*string == f_string_ascii_Q_s[0]) { const f_string_static_t value = va_arg(*ap, f_string_static_t); @@ -334,26 +335,26 @@ extern "C" { if (*(string + 1) == f_string_ascii_I_s[0]) { if (*(string + 2) == f_string_ascii_I_s[0]) { type = f_print_format_type_unsigned_8; - string = string + 2; + string += 2; } else { type = f_print_format_type_unsigned_16; - string += 1; + ++string; } } else if (*(string + 1) == f_string_ascii_L_s[0]) { if (*(string + 2) == f_string_ascii_L_s[0]) { type = f_print_format_type_unsigned_128; - string = string + 2; + string += 2; } else { type = f_print_format_type_unsigned_64; - string += 1; + ++string; } } else if (*(string + 1) == f_string_ascii_N_s[0]) { type = f_print_format_type_unsigned_number; - string += 1; + ++string; } } else { @@ -417,26 +418,27 @@ extern "C" { if (*(string + 1) == f_string_ascii_i_s[0]) { if (*(string + 2) == f_string_ascii_i_s[0]) { type = f_print_format_type_signed_8; - string = string + 2; + string += 2; } else { type = f_print_format_type_signed_16; - string += 1; + ++string; } } else if (*(string + 1) == f_string_ascii_l_s[0]) { if (*(string + 2) == f_string_ascii_l_s[0]) { type = f_print_format_type_signed_128; - string = string + 2; + string += 2; } else { type = f_print_format_type_signed_64; - string += 1; + ++string; } } - } - else if (*string == f_string_ascii_n_s[0]) { - type = f_print_format_type_number; + else if (*(string + 1) == f_string_ascii_n_s[0]) { + type = f_print_format_type_signed_number; + ++string; + } } else if (*string == f_string_ascii_q_s[0]) { const f_string_static_t value = va_arg(*ap, f_string_static_t); @@ -692,26 +694,26 @@ extern "C" { if (*(string + 1) == f_string_ascii_i_s[0]) { if (*(string + 2) == f_string_ascii_i_s[0]) { type = f_print_format_type_unsigned_8; - string = string + 2; + string += 2; } else { type = f_print_format_type_unsigned_16; - string += 1; + ++string; } } else if (*(string + 1) == f_string_ascii_l_s[0]) { if (*(string + 2) == f_string_ascii_l_s[0]) { type = f_print_format_type_unsigned_128; - string = string + 2; + string += 2; } else { type = f_print_format_type_unsigned_64; - string += 1; + ++string; } } else if (*(string + 1) == f_string_ascii_n_s[0]) { type = f_print_format_type_unsigned_number; - string += 1; + ++string; } } else if (*string == f_string_ascii_z_s[0]) { @@ -757,7 +759,7 @@ extern "C" { conversion_data.width = precision; } - if (type == f_print_format_type_number) { + if (type == f_print_format_type_signed_number) { *status = f_conversion_number_signed_print(va_arg(*ap, f_number_signed_t), conversion_data, output); } else if (type == f_print_format_type_signed_64) { @@ -812,9 +814,9 @@ extern "C" { return string; } -#endif // !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) +#endif // !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) -#if !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) +#if !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) f_string_t private_fl_print_convert_number(f_string_t string, va_list *ap, unsigned int *number, f_status_t *status) { for (*number = 0; *string; string += 1) { @@ -835,7 +837,7 @@ extern "C" { return string; } -#endif // !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) +#endif // !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) #if !defined(_di_fl_print_trim_except_) || !defined(_di_fl_print_trim_except_dynamic_) || !defined(_di_fl_print_trim_except_dynamic_partial_) || !defined(_di_fl_print_trim_except_in_) || !defined(_di_fl_print_trim_except_in_dynamic_) || !defined(_di_fl_print_trim_except_in_dynamic_partial_) f_status_t private_fl_print_trim_except_in(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { @@ -1447,18 +1449,6 @@ extern "C" { } if (!string[i]) { - if (!fputc_unlocked(f_print_sequence_null_s[0], output)) { - return F_status_set_error(F_output); - } - - if (!fputc_unlocked(f_print_sequence_null_s[1], output)) { - return F_status_set_error(F_output); - } - - if (!fputc_unlocked(f_print_sequence_null_s[2], output)) { - return F_status_set_error(F_output); - } - ++i; continue; } @@ -1923,18 +1913,6 @@ extern "C" { } if (!string[i]) { - if (!fputc_unlocked(f_print_sequence_null_s[0], output)) { - return F_status_set_error(F_output); - } - - if (!fputc_unlocked(f_print_sequence_null_s[1], output)) { - return F_status_set_error(F_output); - } - - if (!fputc_unlocked(f_print_sequence_null_s[2], output)) { - return F_status_set_error(F_output); - } - ++i; continue; } diff --git a/level_1/fl_print/c/private-print.h b/level_1/fl_print/c/private-print.h index 6ca6928..957e296 100644 --- a/level_1/fl_print/c/private-print.h +++ b/level_1/fl_print/c/private-print.h @@ -70,9 +70,9 @@ extern "C" { * * @see private_fl_print_convert_number() */ -#if !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) - extern f_string_t private_fl_print_string_convert(f_string_t string, FILE *output, va_list *ap, f_status_t *status) f_attribute_visibility_internal; -#endif // !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) +#if !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) + extern f_string_t private_fl_print_format_convert(f_string_t string, FILE *output, va_list *ap, f_status_t *status) f_attribute_visibility_internal; +#endif // !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) /** * Helper function for processing the number in a convert string. @@ -94,9 +94,9 @@ extern "C" { * * @see va_arg() */ -#if !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) +#if !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) extern f_string_t private_fl_print_convert_number(f_string_t string, va_list *ap, unsigned int *number, f_status_t *status) f_attribute_visibility_internal; -#endif // !defined(_di_fl_print_string_convert_) || !defined(_di_fl_print_string_) +#endif // !defined(_di_fl_print_format_) || !defined(_di_fl_print_format_convert_) /** * Private implementation of fl_print_trim_except(). diff --git a/level_2/fll_error/c/error.c b/level_2/fll_error/c/error.c index 9d89722..1a2cc31 100644 --- a/level_2/fll_error/c/error.c +++ b/level_2/fll_error/c/error.c @@ -28,9 +28,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SAccess denied while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SAccess denied while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -42,9 +42,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SCurrent user is not allowed to use the given group while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SCurrent user is not allowed to use the given group while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -56,9 +56,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SCurrent user is not allowed to use the given owner while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SCurrent user is not allowed to use the given owner while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -70,9 +70,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid directory while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid directory while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -84,9 +84,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', not empty.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', not empty.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -98,9 +98,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', failed to close.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', failed to close.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -112,9 +112,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', is closed.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', is closed.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -126,9 +126,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', found.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', found.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -140,9 +140,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', could not find.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', could not find.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -154,9 +154,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', already open.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', already open.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -168,9 +168,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SFile descriptor error while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFile descriptor error while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -182,9 +182,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SMax file descriptors reached while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SMax file descriptors reached while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -196,9 +196,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid file descriptor while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid file descriptor while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -210,9 +210,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', %s is empty.%]%c", print.to.stream, print.context, type_name, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', %s is empty.%]%c", print.to.stream, print.context, type_name, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -224,9 +224,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', flush failed.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', flush failed.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -238,9 +238,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SMax open files reached while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SMax open files reached while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -252,9 +252,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SOverflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SOverflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -266,9 +266,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', purge failed.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnable to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', purge failed.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -280,9 +280,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SRead failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRead failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -294,9 +294,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SSeek failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SSeek failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -308,9 +308,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SStat failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SStat failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -322,9 +322,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SSynchronize failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SSynchronize failed while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -336,9 +336,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUTF failure while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUTF failure while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -350,9 +350,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid UTF while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid UTF while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -364,9 +364,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnderflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnderflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -378,9 +378,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SFailed to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[', write failure.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFailed to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[', write failure.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -392,9 +392,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SLoop while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SLoop while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -406,9 +406,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid %S name '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid %S name '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -420,9 +420,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SNumber overflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SNumber overflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -434,9 +434,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SNumber underflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SNumber underflow while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -448,13 +448,13 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid parameter", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SInvalid parameter", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(" for the %S '%]", print.to.stream, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format(" for the %S '%]", print.to.stream, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -466,9 +466,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SProhibited by system while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SProhibited by system while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -481,9 +481,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid or missing directory in path while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid or missing directory in path while trying to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -496,9 +496,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SFailed to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFailed to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -511,9 +511,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SFailed to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, name, print.notable); - fl_print_string("%[' due to an invalid directory in the path.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFailed to %S %S '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, operation, type_name, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, name, print.notable); + fl_print_format("%[' due to an invalid directory in the path.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -533,9 +533,9 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SThe argument for the parameter '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, parameter, print.notable); - fl_print_string("%[' must not be an empty string.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe argument for the parameter '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, parameter, print.notable); + fl_print_format("%[' must not be an empty string.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -547,11 +547,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, argument, print.notable); - fl_print_string("%[' is not a valid number for the parameter '%]", print.to.stream, print.context, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, parameter, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, argument, print.notable); + fl_print_format("%[' is not a valid number for the parameter '%]", print.to.stream, print.context, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, parameter, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -563,11 +563,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, argument, print.notable); - fl_print_string("%[' is negative, which is not allowed for the parameter '%]", print.to.stream, print.context, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, parameter, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, argument, print.notable); + fl_print_format("%[' is negative, which is not allowed for the parameter '%]", print.to.stream, print.context, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, parameter, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -579,11 +579,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, argument, print.notable); - fl_print_string("%[' is too large for the parameter '%]", print.to.stream, print.context, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, parameter, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, argument, print.notable); + fl_print_format("%[' is too large for the parameter '%]", print.to.stream, print.context, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, parameter, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -595,11 +595,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, argument, print.notable); - fl_print_string("%[' is positive, which is not allowed for the parameter '%]", print.to.stream, print.context, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, parameter, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, argument, print.notable); + fl_print_format("%[' is positive, which is not allowed for the parameter '%]", print.to.stream, print.context, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, parameter, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -611,11 +611,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, argument, print.notable); - fl_print_string("%[' is too small for the parameter '%]", print.to.stream, print.context, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, parameter, print.notable); - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe argument '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, argument, print.notable); + fl_print_format("%[' is too small for the parameter '%]", print.to.stream, print.context, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, parameter, print.notable); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } diff --git a/level_2/fll_error/c/private-error.c b/level_2/fll_error/c/private-error.c index 5c29287..05f14f0 100644 --- a/level_2/fll_error/c/private-error.c +++ b/level_2/fll_error/c/private-error.c @@ -12,11 +12,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SAccess denied", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SAccess denied", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -28,11 +28,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SMaximum array length reached", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SMaximum array length reached", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -44,11 +44,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SMaximum buffer length reached", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SMaximum buffer length reached", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -60,11 +60,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SUnable to allocate memory", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SUnable to allocate memory", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -76,11 +76,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid parameter", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SInvalid parameter", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -92,11 +92,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SMaximum string length reached", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SMaximum string length reached", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -108,11 +108,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid UTF-8 character", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SInvalid UTF-8 character", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -124,18 +124,18 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SInvalid (incomplete) UTF-8 character found", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SInvalid (incomplete) UTF-8 character found", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); if (status == F_complete_not_utf_eos) { - fl_print_string(" at the end of string.%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(" at the end of string.%]%c", print.to.stream, print.context, f_string_eol_s[0]); } else if (status == F_complete_not_utf_stop) { - fl_print_string(" at the stop point of string.%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(" at the stop point of string.%]%c", print.to.stream, print.context, f_string_eol_s[0]); } else { - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); } funlockfile(print.to.stream); @@ -148,11 +148,11 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%SFailure", print.to.stream, f_string_eol_s[0], print.context, print.prefix); + fl_print_format("%c%[%SFailure", print.to.stream, f_string_eol_s[0], print.context, print.prefix); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -164,12 +164,12 @@ extern "C" { if (print.verbosity != f_console_verbosity_quiet) { flockfile(print.to.stream); - fl_print_string("%c%[%S(%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); - fl_print_string("%[%ui%]%[)", print.to.stream, print.notable, status, print.notable, print.context); + fl_print_format("%c%[%S(%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix, print.context); + fl_print_format("%[%ui%]%[)", print.to.stream, print.notable, status, print.notable, print.context); private_fll_error_print_function(print, function); - fl_print_string(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); + fl_print_format(".%]%c", print.to.stream, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); } @@ -183,9 +183,9 @@ extern "C" { void private_fll_error_print_function(const fll_error_print_t print, const f_string_t function) { if (function) { - fl_print_string(" when calling function%] ", print.to.stream, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, function, print.notable); - fl_print_string("%[()", print.to.stream, print.context); + fl_print_format(" when calling function%] ", print.to.stream, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, function, print.notable); + fl_print_format("%[()", print.to.stream, print.context); } } #endif // !defined(_di_fll_error_print_) || !defined(_di_fll_error_file_print_) || !defined(_di_fll_error_number_print_) diff --git a/level_2/fll_print/c/print.c b/level_2/fll_print/c/print.c index 4873880..e54115b 100644 --- a/level_2/fll_print/c/print.c +++ b/level_2/fll_print/c/print.c @@ -17,6 +17,19 @@ extern "C" { } #endif // _di_fll_print_ +#ifndef _di_fll_print_character_ + f_status_t fll_print_character(const char character, FILE *output) { + + flockfile(output); + + const f_status_t status = f_print_character(character, output); + + funlockfile(output); + + return status; + } +#endif // _di_fll_print_character_ + #ifndef _di_fll_print_character_safely_ f_status_t fll_print_character_safely(const char character, FILE *output) { @@ -169,70 +182,70 @@ extern "C" { } #endif // _di_fll_print_dynamic_ -#ifndef _di_fll_print_dynamic_raw_ - f_status_t fll_print_dynamic_raw(const f_string_static_t buffer, FILE *output) { +#ifndef _di_fll_print_dynamic_partial_ + f_status_t fll_print_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, FILE *output) { flockfile(output); - const f_status_t status = f_print_dynamic_raw(buffer, output); + const f_status_t status = f_print_dynamic_partial(buffer, range, output); funlockfile(output); return status; } -#endif // _di_fll_print_dynamic_raw_ +#endif // _di_fll_print_dynamic_partial_ -#ifndef _di_fll_print_dynamic_safely_ - f_status_t fll_print_dynamic_safely(const f_string_static_t buffer, FILE *output) { +#ifndef _di_fll_print_dynamic_partial_raw_ + f_status_t fll_print_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, FILE *output) { flockfile(output); - const f_status_t status = f_print_dynamic_safely(buffer, output); + const f_status_t status = f_print_dynamic_partial_raw(buffer, range, output); funlockfile(output); return status; } -#endif // _di_fll_print_dynamic_safely_ +#endif // _di_fll_print_dynamic_partial_raw_ -#ifndef _di_fll_print_dynamic_partial_ - f_status_t fll_print_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, FILE *output) { +#ifndef _di_fll_print_dynamic_partial_safely_ + f_status_t fll_print_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, FILE *output) { flockfile(output); - const f_status_t status = f_print_dynamic_partial(buffer, range, output); + const f_status_t status = f_print_dynamic_partial_safely(buffer, range, output); funlockfile(output); return status; } -#endif // _di_fll_print_dynamic_partial_ +#endif // _di_fll_print_dynamic_partial_safely_ -#ifndef _di_fll_print_dynamic_partial_raw_ - f_status_t fll_print_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, FILE *output) { +#ifndef _di_fll_print_dynamic_raw_ + f_status_t fll_print_dynamic_raw(const f_string_static_t buffer, FILE *output) { flockfile(output); - const f_status_t status = f_print_dynamic_partial_raw(buffer, range, output); + const f_status_t status = f_print_dynamic_raw(buffer, output); funlockfile(output); return status; } -#endif // _di_fll_print_dynamic_partial_raw_ +#endif // _di_fll_print_dynamic_raw_ -#ifndef _di_fll_print_dynamic_partial_safely_ - f_status_t fll_print_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, FILE *output) { +#ifndef _di_fll_print_dynamic_safely_ + f_status_t fll_print_dynamic_safely(const f_string_static_t buffer, FILE *output) { flockfile(output); - const f_status_t status = f_print_dynamic_partial_safely(buffer, range, output); + const f_status_t status = f_print_dynamic_safely(buffer, output); funlockfile(output); return status; } -#endif // _di_fll_print_dynamic_partial_safely_ +#endif // _di_fll_print_dynamic_safely_ #ifndef _di_fll_print_except_ f_status_t fll_print_except(const f_string_t buffer, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output) { @@ -247,44 +260,57 @@ extern "C" { } #endif // _di_fll_print_except_ -#ifndef _di_fll_print_except_raw_ - f_status_t fll_print_except_raw(const f_string_t buffer, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output) { +#ifndef _di_fll_print_except_dynamic_ + f_status_t fll_print_except_dynamic(const f_string_static_t buffer, const f_array_lengths_t except, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_raw(buffer, offset, length, except, output); + const f_status_t status = f_print_except_dynamic(buffer, except, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_raw_ +#endif // _di_fll_print_except_dynamic_ -#ifndef _di_fll_print_except_safely_ - f_status_t fll_print_except_safely(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output) { +#ifndef _di_fll_print_except_dynamic_partial_ + f_status_t fll_print_except_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_safely(string, offset, length, except, output); + const f_status_t status = f_print_except_dynamic_partial(buffer, range, except, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_safely_ +#endif // _di_fll_print_except_dynamic_partial_ -#ifndef _di_fll_print_except_dynamic_ - f_status_t fll_print_except_dynamic(const f_string_static_t buffer, const f_array_lengths_t except, FILE *output) { +#ifndef _di_fll_print_except_dynamic_partial_raw_ + f_status_t fll_print_except_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_dynamic(buffer, except, output); + const f_status_t status = f_print_except_dynamic_partial_raw(buffer, range, except, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_dynamic_ +#endif // _di_fll_print_except_dynamic_partial_raw_ + +#ifndef _di_fll_print_except_dynamic_partial_safely_ + f_status_t fll_print_except_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output) { + + flockfile(output); + + const f_status_t status = f_print_except_dynamic_partial_safely(buffer, range, except, output); + + funlockfile(output); + + return status; + } +#endif // _di_fll_print_except_dynamic_partial_safely_ #ifndef _di_fll_print_except_dynamic_raw_ f_status_t fll_print_except_dynamic_raw(const f_string_static_t buffer, const f_array_lengths_t except, FILE *output) { @@ -312,44 +338,44 @@ extern "C" { } #endif // _di_fll_print_except_dynamic_safely_ -#ifndef _di_fll_print_except_in_ - f_status_t fll_print_except_in(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_raw_ + f_status_t fll_print_except_raw(const f_string_t buffer, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in(string, offset, length, except_at, except_in, output); + const f_status_t status = f_print_except_raw(buffer, offset, length, except, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_ +#endif // _di_fll_print_except_raw_ -#ifndef _di_fll_print_except_in_raw_ - f_status_t fll_print_except_in_raw(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_safely_ + f_status_t fll_print_except_safely(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in_raw(string, offset, length, except_at, except_in, output); + const f_status_t status = f_print_except_safely(string, offset, length, except, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_raw_ +#endif // _di_fll_print_except_safely_ -#ifndef _di_fll_print_except_in_safely_ - f_status_t fll_print_except_in_safely(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_in_ + f_status_t fll_print_except_in(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in_safely(string, offset, length, except_at, except_in, output); + const f_status_t status = f_print_except_in(string, offset, length, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_safely_ +#endif // _di_fll_print_except_in_ #ifndef _di_fll_print_except_in_dynamic_ f_status_t fll_print_except_in_dynamic(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { @@ -364,109 +390,128 @@ extern "C" { } #endif // _di_fll_print_except_in_dynamic_ -#ifndef _di_fll_print_except_in_dynamic_raw_ - f_status_t fll_print_except_in_dynamic_raw(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_in_dynamic_partial_ + f_status_t fll_print_except_in_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in_dynamic_raw(buffer, except_at, except_in, output); + const f_status_t status = f_print_except_in_dynamic_partial(buffer, range, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_dynamic_raw_ +#endif // _di_fll_print_except_in_dynamic_partial_ -#ifndef _di_fll_print_except_in_dynamic_safely_ - f_status_t fll_print_except_in_dynamic_safely(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_in_dynamic_partial_raw_ + f_status_t fll_print_except_in_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in_dynamic_safely(buffer, except_at, except_in, output); + const f_status_t status = f_print_except_in_dynamic_partial_raw(buffer, range, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_dynamic_safely_ +#endif // _di_fll_print_except_in_dynamic_partial_raw_ -#ifndef _di_fll_print_except_in_dynamic_partial_ - f_status_t fll_print_except_in_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_in_dynamic_partial_safely_ + f_status_t fll_print_except_in_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in_dynamic_partial(buffer, range, except_at, except_in, output); + const f_status_t status = f_print_except_in_dynamic_partial_safely(buffer, range, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_dynamic_partial_ +#endif // _di_fll_print_except_in_dynamic_partial_safely_ -#ifndef _di_fll_print_except_in_dynamic_partial_raw_ - f_status_t fll_print_except_in_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_in_dynamic_raw_ + f_status_t fll_print_except_in_dynamic_raw(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in_dynamic_partial_raw(buffer, range, except_at, except_in, output); + const f_status_t status = f_print_except_in_dynamic_raw(buffer, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_dynamic_partial_raw_ +#endif // _di_fll_print_except_in_dynamic_raw_ -#ifndef _di_fll_print_except_in_dynamic_partial_safely_ - f_status_t fll_print_except_in_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { +#ifndef _di_fll_print_except_in_dynamic_safely_ + f_status_t fll_print_except_in_dynamic_safely(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_in_dynamic_partial_safely(buffer, range, except_at, except_in, output); + const f_status_t status = f_print_except_in_dynamic_safely(buffer, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_in_dynamic_partial_safely_ +#endif // _di_fll_print_except_in_dynamic_safely_ -#ifndef _di_fll_print_except_dynamic_partial_ - f_status_t fll_print_except_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output) { +#ifndef _di_fll_print_except_in_raw_ + f_status_t fll_print_except_in_raw(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_dynamic_partial(buffer, range, except, output); + const f_status_t status = f_print_except_in_raw(string, offset, length, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_dynamic_partial_ +#endif // _di_fll_print_except_in_raw_ -#ifndef _di_fll_print_except_dynamic_partial_raw_ - f_status_t fll_print_except_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output) { +#ifndef _di_fll_print_except_in_safely_ + f_status_t fll_print_except_in_safely(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output) { flockfile(output); - const f_status_t status = f_print_except_dynamic_partial_raw(buffer, range, except, output); + const f_status_t status = f_print_except_in_safely(string, offset, length, except_at, except_in, output); funlockfile(output); return status; } -#endif // _di_fll_print_except_dynamic_partial_raw_ +#endif // _di_fll_print_except_in_safely_ -#ifndef _di_fll_print_except_dynamic_partial_safely_ - f_status_t fll_print_except_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output) { +#ifndef _di_fll_print_format_ + f_status_t fll_print_format(const f_string_t string, FILE *output, ...) { flockfile(output); - const f_status_t status = f_print_except_dynamic_partial_safely(buffer, range, except, output); + va_list ap; + + va_start(ap, output); + + const f_status_t status = fl_print_string_va(string, output, &ap); + + va_end(ap); funlockfile(output); return status; } -#endif // _di_fll_print_except_dynamic_partial_safely_ +#endif // _di_fll_print_format_ + +#ifndef _di_fll_print_format_convert_ + f_string_t fll_print_format_convert(const f_string_t string, FILE *output, va_list *ap, f_status_t *status) { + + flockfile(output); + + f_string_t str = fl_print_format_convert(string, output, ap, status); + + funlockfile(output); + + return str; + } +#endif // _di_fll_print_format_convert_ #ifndef _di_fll_print_raw_ f_status_t fll_print_raw(const f_string_t string, const f_array_length_t length, FILE *output) { @@ -520,38 +565,6 @@ extern "C" { } #endif // _di_fll_print_safely_terminated_ -#ifndef _di_fll_print_string_ - f_status_t fll_print_string(const f_string_t string, FILE *output, ...) { - - flockfile(output); - - va_list ap; - - va_start(ap, output); - - const f_status_t status = fl_print_string_va(string, output, &ap); - - va_end(ap); - - funlockfile(output); - - return status; - } -#endif // _di_fll_print_string_ - -#ifndef _di_fll_print_string_convert_ - f_string_t fll_print_string_convert(const f_string_t string, FILE *output, va_list *ap, f_status_t *status) { - - flockfile(output); - - f_string_t str = fl_print_string_convert(string, output, ap, status); - - funlockfile(output); - - return str; - } -#endif // _di_fll_print_string_convert_ - #ifndef _di_fll_print_string_va_ f_status_t fll_print_string_va(const f_string_t string, FILE *output, va_list *ap) { diff --git a/level_2/fll_print/c/print.h b/level_2/fll_print/c/print.h index 3c51ae5..2ac136e 100644 --- a/level_2/fll_print/c/print.h +++ b/level_2/fll_print/c/print.h @@ -54,6 +54,28 @@ extern "C" { #endif // _di_fll_print_ /** + * This is a variation of f_print_character() that uses locking. + * + * @param character + * The character to verify as safe or not and then print. + * @param output + * The file stream to output to, including standard streams such as stdout and stderr. + * + * @return + * Success from: f_print_character(). + * + * Errors (with error bit) from: f_print_character(). + * + * @see flockfile() + * @see funlockfile() + * + * @see f_print_character() + */ +#ifndef _di_fll_print_character_ + extern f_status_t fll_print_character(const char character, FILE *output); +#endif // _di_fll_print_character_ + +/** * This is a variation of f_print_character_safely() that uses locking. * * @param character @@ -200,51 +222,55 @@ extern "C" { #endif // _di_fll_print_dynamic_ /** - * This is a variation of f_print_dynamic_raw() that uses locking. + * This is a variation of f_print_dynamic_partial() that uses locking. * * @param buffer * The string to output. + * @param range + * The range within the provided string to print. * @param output * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_dynamic_raw(). + * Success from: f_print_dynamic_partial(). * - * Errors (with error bit) from: f_print_dynamic_raw(). + * Errors (with error bit) from: f_print_dynamic_partial(). * * @see flockfile() * @see funlockfile() * - * @see f_print_dynamic_raw() + * @see f_print_dynamic_partial() */ -#ifndef _di_fll_print_dynamic_raw_ - extern f_status_t fll_print_dynamic_raw(const f_string_static_t buffer, FILE *output); -#endif // _di_fll_print_dynamic_raw_ +#ifndef _di_fll_print_dynamic_partial_ + extern f_status_t fll_print_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, FILE *output); +#endif // _di_fll_print_dynamic_partial_ /** - * This is a variation of f_print_dynamic_safely() that uses locking. + * This is a variation of f_print_dynamic_partial_raw() that uses locking. * * @param buffer * The string to output. + * @param range + * The range within the provided string to print. * @param output * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_dynamic_safely(). + * Success from: f_print_dynamic_partial_raw(). * - * Errors (with error bit) from: f_print_dynamic_safely(). + * Errors (with error bit) from: f_print_dynamic_partial_raw(). * * @see flockfile() * @see funlockfile() * - * @see f_print_dynamic_safely() + * @see f_print_dynamic_partial_raw() */ -#ifndef _di_fll_print_dynamic_safely_ - extern f_status_t fll_print_dynamic_safely(const f_string_static_t buffer, FILE *output); -#endif // _di_fll_print_dynamic_safely_ +#ifndef _di_fll_print_dynamic_partial_raw_ + extern f_status_t fll_print_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, FILE *output); +#endif // _di_fll_print_dynamic_partial_raw_ /** - * This is a variation of f_print_dynamic_partial() that uses locking. + * This is a variation of f_print_dynamic_partial_safely() that uses locking. * * @param buffer * The string to output. @@ -254,66 +280,62 @@ extern "C" { * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_dynamic_partial(). + * Success from: f_print_dynamic_partial_safely(). * - * Errors (with error bit) from: f_print_dynamic_partial(). + * Errors (with error bit) from: f_print_dynamic_partial_safely(). * * @see flockfile() * @see funlockfile() * - * @see f_print_dynamic_partial() + * @see f_print_dynamic_partial_safely() */ -#ifndef _di_fll_print_dynamic_partial_ - extern f_status_t fll_print_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, FILE *output); -#endif // _di_fll_print_dynamic_partial_ +#ifndef _di_fll_print_dynamic_partial_safely_ + extern f_status_t fll_print_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, FILE *output); +#endif // _di_fll_print_dynamic_partial_safely_ /** - * This is a variation of f_print_dynamic_partial_raw() that uses locking. + * This is a variation of f_print_dynamic_raw() that uses locking. * * @param buffer * The string to output. - * @param range - * The range within the provided string to print. * @param output * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_dynamic_partial_raw(). + * Success from: f_print_dynamic_raw(). * - * Errors (with error bit) from: f_print_dynamic_partial_raw(). + * Errors (with error bit) from: f_print_dynamic_raw(). * * @see flockfile() * @see funlockfile() * - * @see f_print_dynamic_partial_raw() + * @see f_print_dynamic_raw() */ -#ifndef _di_fll_print_dynamic_partial_raw_ - extern f_status_t fll_print_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, FILE *output); -#endif // _di_fll_print_dynamic_partial_raw_ +#ifndef _di_fll_print_dynamic_raw_ + extern f_status_t fll_print_dynamic_raw(const f_string_static_t buffer, FILE *output); +#endif // _di_fll_print_dynamic_raw_ /** - * This is a variation of f_print_dynamic_partial_safely() that uses locking. + * This is a variation of f_print_dynamic_safely() that uses locking. * * @param buffer * The string to output. - * @param range - * The range within the provided string to print. * @param output * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_dynamic_partial_safely(). + * Success from: f_print_dynamic_safely(). * - * Errors (with error bit) from: f_print_dynamic_partial_safely(). + * Errors (with error bit) from: f_print_dynamic_safely(). * * @see flockfile() * @see funlockfile() * - * @see f_print_dynamic_partial_safely() + * @see f_print_dynamic_safely() */ -#ifndef _di_fll_print_dynamic_partial_safely_ - extern f_status_t fll_print_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, FILE *output); -#endif // _di_fll_print_dynamic_partial_safely_ +#ifndef _di_fll_print_dynamic_safely_ + extern f_status_t fll_print_dynamic_safely(const f_string_static_t buffer, FILE *output); +#endif // _di_fll_print_dynamic_safely_ /** * This is a variation of f_print_except() that uses locking. @@ -345,14 +367,10 @@ extern "C" { #endif // _di_fll_print_except_ /** - * This is a variation of f_print_except_raw() that uses locking. + * This is a variation of f_print_except_dynamic() that uses locking. * - * @param string + * @param buffer * The string to output. - * @param offset - * The inclusive start point to start printing. - * @param length - * The total number of characters to print. * @param except * An array of locations within the given string to not print. * The array of locations is required/assumed to be in linear order. @@ -360,28 +378,26 @@ extern "C" { * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_except_raw(). + * Success from: f_print_except_dynamic(). * - * Errors (with error bit) from: f_print_except_raw(). + * Errors (with error bit) from: f_print_except_dynamic(). * * @see flockfile() * @see funlockfile() * - * @see f_print_except_raw() + * @see f_print_except_dynamic() */ -#ifndef _di_fll_print_except_raw_ - extern f_status_t fll_print_except_raw(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_raw_ +#ifndef _di_fll_print_except_dynamic_ + extern f_status_t fll_print_except_dynamic(const f_string_static_t buffer, const f_array_lengths_t except, FILE *output); +#endif // _di_fll_print_except_dynamic_ /** - * This is a variation of f_print_except_safely() that uses locking. + * This is a variation of f_print_except_dynamic_partial() that uses locking. * - * @param string + * @param buffer * The string to output. - * @param offset - * The inclusive start point to start printing. - * @param length - * The total number of characters to print. + * @param range + * The range within the provided string to print. * @param except * An array of locations within the given string to not print. * The array of locations is required/assumed to be in linear order. @@ -389,24 +405,26 @@ extern "C" { * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_except_safely(). + * Success from: f_print_except_dynamic_partial(). * - * Errors (with error bit) from: f_print_except_safely(). + * Errors (with error bit) from: f_print_except_dynamic_partial(). * * @see flockfile() * @see funlockfile() * - * @see f_print_except_safely() + * @see f_print_except_dynamic_partial() */ -#ifndef _di_fll_print_except_safely_ - extern f_status_t fll_print_except_safely(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_safely_ +#ifndef _di_fll_print_except_dynamic_partial_ + extern f_status_t fll_print_except_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); +#endif // _di_fll_print_except_dynamic_partial_ /** - * This is a variation of f_print_except_dynamic() that uses locking. + * This is a variation of f_print_except_dynamic_partial_raw() that uses locking. * * @param buffer * The string to output. + * @param range + * The range within the provided string to print. * @param except * An array of locations within the given string to not print. * The array of locations is required/assumed to be in linear order. @@ -414,18 +432,45 @@ extern "C" { * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_except_dynamic(). + * Success from: f_print_except_dynamic_partial_raw(). * - * Errors (with error bit) from: f_print_except_dynamic(). + * Errors (with error bit) from: f_print_except_dynamic_partial_raw(). * * @see flockfile() * @see funlockfile() * - * @see f_print_except_dynamic() + * @see f_print_except_dynamic_partial_raw() */ -#ifndef _di_fll_print_except_dynamic_ - extern f_status_t fll_print_except_dynamic(const f_string_static_t buffer, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_dynamic_ +#ifndef _di_fll_print_except_dynamic_partial_raw_ + extern f_status_t fll_print_except_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); +#endif // _di_fll_print_except_dynamic_partial_raw_ + +/** + * This is a variation of f_print_except_dynamic_partial_safely() that uses locking. + * + * @param buffer + * The string to output. + * @param range + * The range within the provided string to print. + * @param except + * An array of locations within the given string to not print. + * The array of locations is required/assumed to be in linear order. + * @param output + * The file stream to output to, including standard streams such as stdout and stderr. + * + * @return + * Success from: f_print_except_dynamic_partial_safely(). + * + * Errors (with error bit) from: f_print_except_dynamic_partial_safely(). + * + * @see flockfile() + * @see funlockfile() + * + * @see f_print_except_dynamic_partial_safely() + */ +#ifndef _di_fll_print_except_dynamic_partial_safely_ + extern f_status_t fll_print_except_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); +#endif // _di_fll_print_except_dynamic_partial_safely_ /** * This is a variation of f_print_except_dynamic_raw() that uses locking. @@ -602,62 +647,6 @@ extern "C" { #endif // _di_fll_print_except_in_dynamic_ /** - * This is a variation of f_print_except_in_dynamic_raw() that uses locking. - * - * @param buffer - * The string to output. - * @param except_at - * An array of locations within the given string to not print. - * The array of locations is required/assumed to be in linear order. - * @param except_in - * An array of ranges within the string to not print. - * The array of ranges is required/assumed to be in linear order. - * @param output - * The file stream to output to, including standard streams such as stdout and stderr. - * - * @return - * Success from: f_print_except_in_dynamic_raw(). - * - * Errors (with error bit) from: f_print_except_in_dynamic_raw(). - * - * @see flockfile() - * @see funlockfile() - * - * @see f_print_except_in_dynamic_raw() - */ -#ifndef _di_fll_print_except_in_dynamic_raw_ - extern f_status_t fll_print_except_in_dynamic_raw(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output); -#endif // _di_fll_print_except_in_dynamic_raw_ - -/** - * This is a variation of f_print_except_in_dynamic_safely() that uses locking. - * - * @param buffer - * The string to output. - * @param except_at - * An array of locations within the given string to not print. - * The array of locations is required/assumed to be in linear order. - * @param except_in - * An array of ranges within the string to not print. - * The array of ranges is required/assumed to be in linear order. - * @param output - * The file stream to output to, including standard streams such as stdout and stderr. - * - * @return - * Success from: f_print_except_in_dynamic_safely(). - * - * Errors (with error bit) from: f_print_except_in_dynamic_safely(). - * - * @see flockfile() - * @see funlockfile() - * - * @see f_print_except_in_dynamic_safely() - */ -#ifndef _di_fll_print_except_in_dynamic_safely_ - extern f_status_t fll_print_except_in_dynamic_safely(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output); -#endif // _di_fll_print_except_in_dynamic_safely_ - -/** * This is a variation of f_print_except_in_dynamic_partial() that uses locking. * * @param buffer @@ -683,7 +672,7 @@ extern "C" { * * @see f_print_except_in_dynamic_partial() */ -#ifndef _di_fll_print_dynamic_except_partial_ +#ifndef _di_fll_print_except_in_dynamic_partial_ extern f_status_t fll_print_except_in_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output); #endif // _di_fll_print_except_in_dynamic_partial_ @@ -713,7 +702,7 @@ extern "C" { * * @see f_print_except_in_dynamic_partial_raw() */ -#ifndef _di_fll_print_dynamic_except_partial_raw_ +#ifndef _di_fll_print_except_in_dynamic_partial_raw_ extern f_status_t fll_print_except_in_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output); #endif // _di_fll_print_except_in_dynamic_partial_raw_ @@ -743,71 +732,75 @@ extern "C" { * * @see f_print_except_in_dynamic_partial_safely() */ -#ifndef _di_fll_print_dynamic_except_partial_safely_ +#ifndef _di_fll_print_except_in_dynamic_partial_safely_ extern f_status_t fll_print_except_in_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output); #endif // _di_fll_print_except_in_dynamic_partial_safely_ /** - * This is a variation of f_print_except_dynamic_partial() that uses locking. + * This is a variation of f_print_except_in_dynamic_raw() that uses locking. * * @param buffer * The string to output. - * @param range - * The range within the provided string to print. - * @param except + * @param except_at * An array of locations within the given string to not print. * The array of locations is required/assumed to be in linear order. + * @param except_in + * An array of ranges within the string to not print. + * The array of ranges is required/assumed to be in linear order. * @param output * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_except_dynamic_partial(). + * Success from: f_print_except_in_dynamic_raw(). * - * Errors (with error bit) from: f_print_except_dynamic_partial(). + * Errors (with error bit) from: f_print_except_in_dynamic_raw(). * * @see flockfile() * @see funlockfile() * - * @see f_print_except_dynamic_partial() + * @see f_print_except_in_dynamic_raw() */ -#ifndef _di_fll_print_dynamic_except_partial_ - extern f_status_t fll_print_except_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_dynamic_partial_ +#ifndef _di_fll_print_except_in_dynamic_raw_ + extern f_status_t fll_print_except_in_dynamic_raw(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output); +#endif // _di_fll_print_except_in_dynamic_raw_ /** - * This is a variation of f_print_except_dynamic_partial_raw() that uses locking. + * This is a variation of f_print_except_in_dynamic_safely() that uses locking. * * @param buffer * The string to output. - * @param range - * The range within the provided string to print. - * @param except + * @param except_at * An array of locations within the given string to not print. * The array of locations is required/assumed to be in linear order. + * @param except_in + * An array of ranges within the string to not print. + * The array of ranges is required/assumed to be in linear order. * @param output * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_except_dynamic_partial_raw(). + * Success from: f_print_except_in_dynamic_safely(). * - * Errors (with error bit) from: f_print_except_dynamic_partial_raw(). + * Errors (with error bit) from: f_print_except_in_dynamic_safely(). * * @see flockfile() * @see funlockfile() * - * @see f_print_except_dynamic_partial_raw() + * @see f_print_except_in_dynamic_safely() */ -#ifndef _di_fll_print_dynamic_except_partial_raw_ - extern f_status_t fll_print_except_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_dynamic_partial_raw_ +#ifndef _di_fll_print_except_in_dynamic_safely_ + extern f_status_t fll_print_except_in_dynamic_safely(const f_string_static_t buffer, const f_array_lengths_t except_at, const f_string_ranges_t except_in, FILE *output); +#endif // _di_fll_print_except_in_dynamic_safely_ /** - * This is a variation of f_print_except_dynamic_partial() that uses locking. + * This is a variation of f_print_except_raw() that uses locking. * - * @param buffer + * @param string * The string to output. - * @param range - * The range within the provided string to print. + * @param offset + * The inclusive start point to start printing. + * @param length + * The total number of characters to print. * @param except * An array of locations within the given string to not print. * The array of locations is required/assumed to be in linear order. @@ -815,26 +808,28 @@ extern "C" { * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_except_dynamic_partial(). + * Success from: f_print_except_raw(). * - * Errors (with error bit) from: f_print_except_dynamic_partial(). + * Errors (with error bit) from: f_print_except_raw(). * * @see flockfile() * @see funlockfile() * - * @see f_print_except_dynamic_partial() + * @see f_print_except_raw() */ -#ifndef _di_fll_print_dynamic_except_partial_ - extern f_status_t fll_print_except_dynamic_partial(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_dynamic_partial_ +#ifndef _di_fll_print_except_raw_ + extern f_status_t fll_print_except_raw(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output); +#endif // _di_fll_print_except_raw_ /** - * This is a variation of f_print_except_dynamic_partial_raw() that uses locking. + * This is a variation of f_print_except_safely() that uses locking. * - * @param buffer + * @param string * The string to output. - * @param range - * The range within the provided string to print. + * @param offset + * The inclusive start point to start printing. + * @param length + * The total number of characters to print. * @param except * An array of locations within the given string to not print. * The array of locations is required/assumed to be in linear order. @@ -842,45 +837,69 @@ extern "C" { * The file stream to output to, including standard streams such as stdout and stderr. * * @return - * Success from: f_print_except_dynamic_partial_raw(). + * Success from: f_print_except_safely(). * - * Errors (with error bit) from: f_print_except_dynamic_partial_raw(). + * Errors (with error bit) from: f_print_except_safely(). * * @see flockfile() * @see funlockfile() * - * @see f_print_except_dynamic_partial_raw() + * @see f_print_except_safely() */ -#ifndef _di_fll_print_dynamic_except_partial_raw_ - extern f_status_t fll_print_except_dynamic_partial_raw(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_dynamic_partial_raw_ +#ifndef _di_fll_print_except_safely_ + extern f_status_t fll_print_except_safely(const f_string_t string, const f_array_length_t offset, const f_array_length_t length, const f_array_lengths_t except, FILE *output); +#endif // _di_fll_print_except_safely_ /** - * This is a variation of f_print_except_dynamic_partial_safely() that uses locking. + * This is a variation of fl_print_format() that uses locking. * - * @param buffer - * The string to output. - * @param range - * The range within the provided string to print. - * @param except - * An array of locations within the given string to not print. - * The array of locations is required/assumed to be in linear order. + * @param string + * The formatted string to process and output. + * This is a NULL terminated string. * @param output * The file stream to output to, including standard streams such as stdout and stderr. + * @param ... + * Additional arguments relating to the string. * * @return - * Success from: f_print_except_dynamic_partial_safely(). + * Success from: fl_print_format(). * - * Errors (with error bit) from: f_print_except_dynamic_partial_safely(). + * Errors (with error bit) from: fl_print_format(). * * @see flockfile() * @see funlockfile() + * @see va_start() + * @see va_end() * - * @see f_print_except_dynamic_partial_safely() + * @see fl_print_format() */ -#ifndef _di_fll_print_dynamic_except_partial_safely_ - extern f_status_t fll_print_except_dynamic_partial_safely(const f_string_static_t buffer, const f_string_range_t range, const f_array_lengths_t except, FILE *output); -#endif // _di_fll_print_except_dynamic_partial_safely_ +#ifndef _di_fll_print_format_ + extern f_status_t fll_print_format(const f_string_t string, FILE *output, ...); +#endif // _di_fll_print_format_ + +/** + * This is a variation of fl_print_format_convert() that uses locking. + * + * @param current + * The current character position within the string. + * @param output + * The file stream to output to, including standard streams such as stdout and stderr. + * @param ap + * The variable arguments list. + * @param status + * The status is stored here rather then via the return. + * + * @return + * Result from: fl_print_format_convert(). + * + * @see flockfile() + * @see funlockfile() + * + * @see fl_print_format_convert() + */ +#ifndef _di_fll_print_format_convert_ + extern f_string_t fll_print_format_convert(const f_string_t current, FILE *output, va_list *ap, f_status_t *status); +#endif // _di_fll_print_format_convert_ /** * This is a variation of f_print_raw() that uses locking. @@ -977,57 +996,6 @@ extern "C" { #endif // _di_fll_print_safely_terminated_ /** - * This is a variation of fl_print_string() that uses locking. - * - * @param string - * The formatted string to process and output. - * This is a NULL terminated string. - * @param output - * The file stream to output to, including standard streams such as stdout and stderr. - * @param ... - * Additional arguments relating to the string. - * - * @return - * Success from: fl_print_string(). - * - * Errors (with error bit) from: fl_print_string(). - * - * @see flockfile() - * @see funlockfile() - * @see va_start() - * @see va_end() - * - * @see fl_print_string() - */ -#ifndef _di_fll_print_string_ - extern f_status_t fll_print_string(const f_string_t string, FILE *output, ...); -#endif // _di_fll_print_string_ - -/** - * This is a variation of fl_print_string_convert() that uses locking. - * - * @param current - * The current character position within the string. - * @param output - * The file stream to output to, including standard streams such as stdout and stderr. - * @param ap - * The variable arguments list. - * @param status - * The status is stored here rather then via the return. - * - * @return - * Result from: fl_print_string_convert(). - * - * @see flockfile() - * @see funlockfile() - * - * @see fl_print_string_convert() - */ -#ifndef _di_fll_print_string_convert_ - extern f_string_t fll_print_string_convert(const f_string_t current, FILE *output, va_list *ap, f_status_t *status); -#endif // _di_fll_print_string_convert_ - -/** * This is a variation of fl_print_string_va() that uses locking. * * @param string diff --git a/level_2/fll_program/c/program.c b/level_2/fll_program/c/program.c index 40097f2..6296db7 100644 --- a/level_2/fll_program/c/program.c +++ b/level_2/fll_program/c/program.c @@ -7,12 +7,10 @@ extern "C" { #ifndef _di_fll_program_print_help_header_ f_status_t fll_program_print_help_header(const f_file_t output, const f_color_context_t context, const f_string_t name, const f_string_t version) { - f_print_terminated(f_string_eol_s, output.stream); - fl_print_string(" %[%s%]%c", output.stream, context.set.title, name, context.set.title, f_string_eol_s[0]); - fl_print_string(" %[Version %s%]%c", output.stream, context.set.notable, version, context.set.notable, f_string_eol_s[0]); + fl_print_format("%c %[%S%]%c", output.stream, f_string_eol_s[0], context.set.title, name, context.set.title, f_string_eol_s[0]); + fl_print_format(" %[Version %s%]%c", output.stream, context.set.notable, version, context.set.notable, f_string_eol_s[0]); - f_print_terminated(f_string_eol_s, output.stream); - fl_print_string(" %[Available Options:%] ", output.stream, context.set.important, context.set.important); + fl_print_format("%c %[Available Options:%] ", output.stream, f_string_eol_s[0], context.set.important, context.set.important); return F_none; } @@ -21,10 +19,9 @@ extern "C" { #ifndef _di_fll_program_print_help_option_ f_status_t fll_program_print_help_option(const f_file_t output, const f_color_context_t context, const f_string_t option_short, const f_string_t option_long, const f_string_t symbol_short, const f_string_t symbol_long, const f_string_t description) { - f_print_terminated(f_string_eol_s, output.stream); - fl_print_string(" %s%[%s%]", output.stream, symbol_short, context.set.standout, option_short, context.set.standout); - fl_print_string(", %s%[%s%]", output.stream, symbol_long, context.set.standout, option_long, context.set.standout); - fl_print_string(" %S", output.stream, description); + fl_print_format("%c %s%[%S%]", output.stream, f_string_eol_s[0], symbol_short, context.set.standout, option_short, context.set.standout); + fl_print_format(", %s%[%S%]", output.stream, symbol_long, context.set.standout, option_long, context.set.standout); + fl_print_format(" %S", output.stream, description); return F_none; } @@ -33,9 +30,8 @@ extern "C" { #ifndef _di_fll_program_print_help_option_long_ f_status_t fll_program_print_help_option_long(const f_file_t output, const f_color_context_t context, const f_string_t option_long, const f_string_t symbol_long, const f_string_t description) { - f_print_terminated(f_string_eol_s, output.stream); - fl_print_string(" %s%[%s%]", output.stream, symbol_long, context.set.standout, option_long, context.set.standout); - fl_print_string(" %S", output.stream, description); + fl_print_format("%c %s%[%S%]", output.stream, f_string_eol_s[0], symbol_long, context.set.standout, option_long, context.set.standout); + fl_print_format(" %S", output.stream, description); return F_none; } @@ -44,9 +40,8 @@ extern "C" { #ifndef _di_fll_program_print_help_option_other_ f_status_t fll_program_print_help_option_other(const f_file_t output, const f_color_context_t context, const f_string_t option_other, const f_string_t description) { - f_print_terminated(f_string_eol_s, output.stream); - fl_print_string(" %[%s%]", output.stream, context.set.standout, option_other, context.set.standout); - fl_print_string(" %S", output.stream, description); + fl_print_format("%c %[%S%]", output.stream, f_string_eol_s[0], context.set.standout, option_other, context.set.standout); + fl_print_format(" %S", output.stream, description); return F_none; } @@ -55,21 +50,19 @@ extern "C" { #ifndef _di_fll_program_print_help_usage_ f_status_t fll_program_print_help_usage(const f_file_t output, const f_color_context_t context, const f_string_t name, const f_string_t parameters) { - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); - fl_print_string(" %[Usage:%]", output.stream, context.set.important, context.set.important); + fl_print_format("%c%c %[Usage:%]", output.stream, f_string_eol_s[0], f_string_eol_s[0], context.set.important, context.set.important); - f_print_terminated(f_string_eol_s, output.stream); - fl_print_string(" %[%S%]", output.stream, context.set.standout, name, context.set.standout); + f_print_character(f_string_eol_s[0], output.stream); + fl_print_format(" %[%S%]", output.stream, context.set.standout, name, context.set.standout); - fl_print_string(" %[[%] options %[]%]", output.stream, context.set.notable, context.set.notable, context.set.notable, context.set.notable); + fl_print_format(" %[[%] options %[]%]", output.stream, context.set.notable, context.set.notable, context.set.notable, context.set.notable); if (parameters[0] != '\0') { - fl_print_string(" %[[%]%S%[]%]", output.stream, context.set.notable, context.set.notable, parameters, context.set.notable, context.set.notable); + fl_print_format(" %[[%] %S %[]%]", output.stream, context.set.notable, context.set.notable, parameters, context.set.notable, context.set.notable); } - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); + f_print_character(f_string_eol_s[0], output.stream); return F_none; } @@ -78,7 +71,7 @@ extern "C" { #ifndef _di_fll_program_print_version_ f_status_t fll_program_print_version(const f_file_t output, const f_string_t version) { - fl_print_string("%S%c", output.stream, version, f_string_eol_s[0]); + fl_print_format("%S%c", output.stream, version, f_string_eol_s[0]); return F_none; } diff --git a/level_2/fll_program/c/program.h b/level_2/fll_program/c/program.h index 4805eba..a4c37a7 100644 --- a/level_2/fll_program/c/program.h +++ b/level_2/fll_program/c/program.h @@ -50,7 +50,7 @@ extern "C" { * F_none on success. * * @see f_print_terminated() - * @see fl_print_string() + * @see fl_print_format() */ #ifndef _di_fll_program_print_help_header_ extern f_status_t fll_program_print_help_header(const f_file_t output, const f_color_context_t context, const f_string_t name, const f_string_t version); @@ -80,7 +80,7 @@ extern "C" { * F_none on success. * * @see f_print_terminated() - * @see fl_print_string() + * @see fl_print_format() */ #ifndef _di_fll_program_print_help_option_ extern f_status_t fll_program_print_help_option(const f_file_t output, const f_color_context_t context, const f_string_t option_short, const f_string_t option_long, const f_string_t symbol_short, const f_string_t symbol_long, const f_string_t description); @@ -106,7 +106,7 @@ extern "C" { * F_none on success. * * @see f_print_terminated() - * @see fl_print_string() + * @see fl_print_format() */ #ifndef _di_fll_program_print_help_option_long_ extern f_status_t fll_program_print_help_option_long(const f_file_t output, const f_color_context_t context, const f_string_t option_long, const f_string_t symbol_long, const f_string_t description); @@ -130,7 +130,7 @@ extern "C" { * F_none on success. * * @see f_print_terminated() - * @see fl_print_string() + * @see fl_print_format() */ #ifndef _di_fll_program_print_help_option_other_ extern f_status_t fll_program_print_help_option_other(const f_file_t output, const f_color_context_t context, const f_string_t option_other, const f_string_t description); @@ -155,7 +155,7 @@ extern "C" { * F_none on success. * * @see f_print_terminated() - * @see fl_print_string() + * @see fl_print_format() */ #ifndef _di_fll_program_print_help_usage_ extern f_status_t fll_program_print_help_usage(const f_file_t output, const f_color_context_t context, const f_string_t name, const f_string_t parameters); @@ -174,7 +174,7 @@ extern "C" { * @return * F_none on success. * - * @see fl_print_string() + * @see fl_print_format() */ #ifndef _di_fll_program_print_version_ extern f_status_t fll_program_print_version(const f_file_t output, const f_string_t version); diff --git a/level_3/byte_dump/c/byte_dump.c b/level_3/byte_dump/c/byte_dump.c index 8d252bd..52d1c65 100644 --- a/level_3/byte_dump/c/byte_dump.c +++ b/level_3/byte_dump/c/byte_dump.c @@ -23,7 +23,7 @@ extern "C" { fll_program_print_help_option(output, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Enable debugging, inceasing verbosity beyond normal output."); fll_program_print_help_option(output, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number."); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); fll_program_print_help_option(output, context, byte_dump_short_binary, byte_dump_long_binary, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Display binary representation."); fll_program_print_help_option(output, context, byte_dump_short_decimal, byte_dump_long_decimal, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Display decimal representation."); @@ -32,21 +32,21 @@ extern "C" { fll_program_print_help_option(output, context, byte_dump_short_octal, byte_dump_long_octal, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Display octal representation."); fll_program_print_help_option(output, context, byte_dump_short_unicode, byte_dump_long_unicode, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Display using Unicode representation for valid Unicode (like: U+0000)."); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); fll_program_print_help_option(output, context, byte_dump_short_first, byte_dump_long_first, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Start reading at this byte offset."); fll_program_print_help_option(output, context, byte_dump_short_last, byte_dump_long_last, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Stop reading at this (inclusive) byte offset."); fll_program_print_help_option(output, context, byte_dump_short_width, byte_dump_long_width, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Set number of columns of Bytes to display."); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); fll_program_print_help_option(output, context, byte_dump_short_text, byte_dump_long_text, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Include a column of text when displaying the bytes."); fll_program_print_help_option(output, context, byte_dump_short_placeholder, byte_dump_long_placeholder, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "Use a placeholder character instead of a space for placeholders."); - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); + f_print_character(f_string_eol_s[0], output.stream); - fl_print_string(" %[Special Options:%] ", output.stream, context.set.important, context.set.important); + fl_print_format(" %[Special Options:%] ", output.stream, context.set.important, context.set.important); fll_program_print_help_option_long(output, context, byte_dump_long_normal, f_console_symbol_long_enable_s, " Display UTF-8 symbols for ASCII control codes."); fll_program_print_help_option_long(output, context, byte_dump_long_simple, f_console_symbol_long_enable_s, " Display spaces for ASCII control codes."); @@ -55,37 +55,37 @@ extern "C" { fll_program_print_help_usage(output, context, byte_dump_name, "filename(s)"); f_print_terminated(" When using the ", output.stream); - fl_print_string("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_text, context.set.notable); + fl_print_format("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_text, context.set.notable); f_print_terminated(" option, some UTF-8 characters may be replaced by your instance and cause display alignment issues.", output.stream); - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); + f_print_character(f_string_eol_s[0], output.stream); f_print_terminated(" Special UTF-8 characters and non-spacing UTF-8 characters may be replaced with a space (or a placeholder when the ", output.stream); - fl_print_string("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_placeholder, context.set.notable); + fl_print_format("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_placeholder, context.set.notable); f_print_terminated(" option is used).", output.stream); - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); + f_print_character(f_string_eol_s[0], output.stream); f_print_terminated(" UTF-8 \"Combining\" characters might have a space appended to allow a proper display but this may cause copy and paste issues.", output.stream); - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); + f_print_character(f_string_eol_s[0], output.stream); f_print_terminated(" When ", output.stream); - fl_print_string("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, context.set.notable); + fl_print_format("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, context.set.notable); f_print_terminated(" is used, any UTF-8 sequences will still be printed in full should any part is found within the requested range.", output.stream); - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); + f_print_character(f_string_eol_s[0], output.stream); f_print_terminated(" When using the ", output.stream); - fl_print_string("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_unicode, context.set.notable); + fl_print_format("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_unicode, context.set.notable); f_print_terminated(" option, invalid Unicode will fallback to being displayed using one of the other modes.", output.stream); - f_print_terminated(f_string_eol_s, output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); + f_print_character(f_string_eol_s[0], output.stream); funlockfile(output.stream); @@ -95,6 +95,7 @@ extern "C" { #ifndef _di_byte_dump_main_ f_status_t byte_dump_main(const f_console_arguments_t arguments, byte_dump_main_t *main) { + f_status_t status = F_none; { @@ -110,15 +111,18 @@ extern "C" { if (main->context.set.error.before) { main->error.context = main->context.set.error; main->error.notable = main->context.set.notable; + + main->warning.context = main->context.set.warning; + main->warning.notable = main->context.set.notable; } else { - f_color_set_t *sets[] = { &main->error.context, &main->error.notable, 0 }; + f_color_set_t *sets[] = { &main->error.context, &main->error.notable, &main->warning.context, &main->warning.notable, 0 }; fll_program_parameter_process_empty(&main->context, sets); } if (F_status_is_error(status)) { - fll_error_print(main->error, F_status_set_fine(status), "f_console_parameter_prioritize_right", F_true); + fll_error_print(main->error, F_status_set_fine(status), "fll_program_parameter_process", F_true); byte_dump_main_delete(main); return F_status_set_error(status); @@ -142,15 +146,19 @@ extern "C" { if (choice == byte_dump_parameter_verbosity_quiet) { main->error.verbosity = f_console_verbosity_quiet; + main->warning.verbosity = f_console_verbosity_quiet; } else if (choice == byte_dump_parameter_verbosity_normal) { main->error.verbosity = f_console_verbosity_normal; + main->warning.verbosity = f_console_verbosity_normal; } else if (choice == byte_dump_parameter_verbosity_verbose) { main->error.verbosity = f_console_verbosity_verbose; + main->warning.verbosity = f_console_verbosity_verbose; } else if (choice == byte_dump_parameter_verbosity_debug) { main->error.verbosity = f_console_verbosity_debug; + main->warning.verbosity = f_console_verbosity_debug; } } @@ -233,9 +241,9 @@ extern "C" { if (main->parameters[byte_dump_parameter_width].result == f_console_result_found) { flockfile(main->error.to.stream); - fl_print_string("%[%sThe parameter '%]", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_width, main->context.set.notable); - fl_print_string("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); + fl_print_format("%[%SThe parameter '%]", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_width, main->context.set.notable); + fl_print_format("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -253,13 +261,13 @@ extern "C" { if (F_status_is_error(status) || number < 1 || number >= 0xfb) { flockfile(main->error.to.stream); - fl_print_string("%[%sThe parameter '%]", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_width, main->context.set.notable); - fl_print_string("%[' value can only be a number (inclusively) between %]", main->error.to.stream, main->context.set.error, main->context.set.error); - fl_print_string("%[1%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); - fl_print_string(" %[and%] ", main->error.to.stream, main->context.set.error, main->context.set.error); - fl_print_string("%[250%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); - fl_print_string("%[.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); + fl_print_format("%[%SThe parameter '%]", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_width, main->context.set.notable); + fl_print_format("%[' value can only be a number (inclusively) between %]", main->error.to.stream, main->context.set.error, main->context.set.error); + fl_print_format("%[1%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); + fl_print_format(" %[and%] ", main->error.to.stream, main->context.set.error, main->context.set.error); + fl_print_format("%[250%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); + fl_print_format("%[.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -273,9 +281,9 @@ extern "C" { if (main->parameters[byte_dump_parameter_first].result == f_console_result_found) { flockfile(main->error.to.stream); - fl_print_string("%[%sThe parameter '%]", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_first, main->context.set.notable); - fl_print_string("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); + fl_print_format("%[%SThe parameter '%]", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_first, main->context.set.notable); + fl_print_format("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -293,13 +301,13 @@ extern "C" { if (F_status_is_error(status) || number > f_number_t_size_unsigned) { flockfile(main->error.to.stream); - fl_print_string("%[%sThe parameter '%]", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_first, main->context.set.notable); - fl_print_string("%[' value can only be a number (inclusively) between %]", main->error.to.stream, main->context.set.error, main->context.set.error); - fl_print_string("%[0%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); - fl_print_string(" %[and%] ", main->error.to.stream, main->context.set.error, main->context.set.error); - fl_print_string("%[%ul%]", main->error.to.stream, main->context.set.notable, f_number_t_size_unsigned, main->context.set.notable); - fl_print_string("%[.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); + fl_print_format("%[%SThe parameter '%]", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_first, main->context.set.notable); + fl_print_format("%[' value can only be a number (inclusively) between %]", main->error.to.stream, main->context.set.error, main->context.set.error); + fl_print_format("%[0%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); + fl_print_format(" %[and%] ", main->error.to.stream, main->context.set.error, main->context.set.error); + fl_print_format("%[%un%]", main->error.to.stream, main->context.set.notable, f_number_t_size_unsigned, main->context.set.notable); + fl_print_format("%[.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -313,9 +321,9 @@ extern "C" { if (main->parameters[byte_dump_parameter_last].result == f_console_result_found) { flockfile(main->error.to.stream); - fl_print_string("%[%sThe parameter '%]", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, main->context.set.notable); - fl_print_string("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); + fl_print_format("%[%SThe parameter '%]", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, main->context.set.notable); + fl_print_format("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -333,13 +341,13 @@ extern "C" { if (F_status_is_error(status) || number < 0 || number > f_number_t_size_unsigned) { flockfile(main->error.to.stream); - fl_print_string("%[%sThe parameter '%]", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, main->context.set.notable); - fl_print_string("%[' value can only be a number (inclusively) between %]", main->error.to.stream, main->context.set.error, main->context.set.error); - fl_print_string("%[0%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); - fl_print_string(" %[and%] ", main->error.to.stream, main->context.set.error, main->context.set.error); - fl_print_string("%[%ul%]", main->error.to.stream, main->context.set.notable, f_number_t_size_unsigned, main->context.set.notable); - fl_print_string("%[.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); + fl_print_format("%[%SThe parameter '%]", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, main->context.set.notable); + fl_print_format("%[' value can only be a number (inclusively) between %]", main->error.to.stream, main->context.set.error, main->context.set.error); + fl_print_format("%[0%]", main->error.to.stream, main->context.set.notable, main->context.set.notable); + fl_print_format(" %[and%] ", main->error.to.stream, main->context.set.error, main->context.set.error); + fl_print_format("%[%un%]", main->error.to.stream, main->context.set.notable, f_number_t_size_unsigned, main->context.set.notable); + fl_print_format("%[.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -354,11 +362,11 @@ extern "C" { if (main->first > main->last) { flockfile(main->error.to.stream); - fl_print_string("%[%sThe parameter '%]", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_first, main->context.set.notable); - fl_print_string("%[' value cannot be greater than the parameter '%]", main->error.to.stream, main->context.set.error, main->context.set.error); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, main->context.set.notable); - fl_print_string("%[' value.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); + fl_print_format("%[%SThe parameter '%]", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_first, main->context.set.notable); + fl_print_format("%[' value cannot be greater than the parameter '%]", main->error.to.stream, main->context.set.error, main->context.set.error); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, byte_dump_long_last, main->context.set.notable); + fl_print_format("%[' value.%]%c", main->error.to.stream, main->context.set.error, main->context.set.error, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -379,7 +387,7 @@ extern "C" { flockfile(main->output.stream); f_print_terminated(f_string_eol_s, main->output.stream); - fl_print_string("%[Piped Byte Dump: (in ", main->output.stream, main->context.set.title); + fl_print_format("%[Piped Byte Dump: (in ", main->output.stream, main->context.set.title); if (main->mode == byte_dump_mode_hexidecimal) { f_print_terminated("Hexidecimal", main->output.stream); @@ -397,7 +405,7 @@ extern "C" { f_print_terminated("Decimal", main->output.stream); } - fl_print_string(")%]%c", main->output.stream, main->context.set.title, f_string_eol_s[0]); + fl_print_format(")%]%c", main->output.stream, main->context.set.title, f_string_eol_s[0]); funlockfile(main->output.stream); @@ -453,9 +461,9 @@ extern "C" { flockfile(main->output.stream); f_print_terminated(f_string_eol_s, main->output.stream); - fl_print_string("%[Byte Dump of: %]%[", main->output.stream, main->context.set.title, main->context.set.title, main->context.set.notable); + fl_print_format("%[Byte Dump of: %]%[", main->output.stream, main->context.set.title, main->context.set.title, main->context.set.notable); fll_print_safely_terminated(arguments.argv[main->remaining.array[counter]], main->output.stream); - fl_print_string("%] %[(in ", main->output.stream, main->context.set.notable, main->context.set.title); + fl_print_format("%] %[(in ", main->output.stream, main->context.set.notable, main->context.set.title); if (main->mode == byte_dump_mode_hexidecimal) { f_print_terminated("Hexidecimal", main->output.stream); @@ -473,7 +481,7 @@ extern "C" { f_print_terminated("Decimal", main->output.stream); } - fl_print_string(")%]%c", main->output.stream, main->context.set.title, f_string_eol_s[0]); + fl_print_format(")%]%c", main->output.stream, main->context.set.title, f_string_eol_s[0]); funlockfile(main->output.stream); @@ -494,7 +502,7 @@ extern "C" { } } else { - fll_print_string("%[%sYou failed to specify one or more filenames.%]%c", main->error.to.stream, main->context.set.error, fll_error_print_error, main->context.set.error, f_string_eol_s[0]); + fll_print_format("%[%SYou failed to specify one or more filenames.%]%c", main->error.to.stream, main->context.set.error, main->error.prefix, main->context.set.error, f_string_eol_s[0]); status = F_status_set_error(F_parameter); } diff --git a/level_3/byte_dump/c/byte_dump.h b/level_3/byte_dump/c/byte_dump.h index 91ee210..43c232e 100644 --- a/level_3/byte_dump/c/byte_dump.h +++ b/level_3/byte_dump/c/byte_dump.h @@ -231,6 +231,7 @@ extern "C" { f_file_t output; fll_error_print_t error; + fll_error_print_t warning; uint64_t first; uint64_t last; @@ -248,6 +249,7 @@ extern "C" { F_false, \ macro_f_file_t_initialize2(f_type_output, f_type_descriptor_output, f_file_flag_write_only), \ fll_error_print_t_initialize, \ + macro_fll_error_print_t_initialize_warning(), \ 0, \ 0, \ 8, \ diff --git a/level_3/byte_dump/c/private-byte_dump.c b/level_3/byte_dump/c/private-byte_dump.c index 1d8f6de..7824a06 100644 --- a/level_3/byte_dump/c/private-byte_dump.c +++ b/level_3/byte_dump/c/private-byte_dump.c @@ -264,8 +264,8 @@ extern "C" { flockfile(main.error.to.stream); fl_print_color_terminated("Invalid UTF-8 codes were detected for file '", main.context.set.error, main.error.to.stream); - fl_print_string("%[%S%]", main.error.to.stream, main.context.set.notable, file_name ? file_name : "-", main.context.set.notable); - fl_print_string("%['.%]%c%c", main.error.to.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0], f_string_eol_s[0]); + fl_print_format("%[%S%]", main.error.to.stream, main.context.set.notable, file_name ? file_name : "-", main.context.set.notable); + fl_print_format("%['.%]%c%c", main.error.to.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0], f_string_eol_s[0]); funlockfile(main.error.to.stream); } @@ -274,9 +274,9 @@ extern "C" { // @todo: determine what the error is and display it. flockfile(main.error.to.stream); - fl_print_string("%[%sread() failed for '%]", main.error.to.stream, main.context.set.error, fll_error_print_error, main.context.set.error); - fl_print_string("%[%S%]", main.error.to.stream, main.context.set.notable, file_name ? file_name : "-", main.context.set.notable); - fl_print_string("%['.%]%c%c", main.error.to.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0], f_string_eol_s[0]); + fl_print_format("%[%Sread() failed for '%]", main.error.to.stream, main.context.set.error, main.error.prefix, main.context.set.error); + fl_print_format("%[%S%]", main.error.to.stream, main.context.set.notable, file_name ? file_name : "-", main.context.set.notable); + fl_print_format("%['.%]%c%c", main.error.to.stream, main.context.set.error, main.context.set.error, f_string_eol_s[0], f_string_eol_s[0]); funlockfile(main.error.to.stream); @@ -312,7 +312,7 @@ extern "C" { } if (!cell->column) { - fl_print_string("%[%016_UL%] ", main.output.stream, main.context.set.notable, cell->row, main.context.set.notable); + fl_print_format("%[%016_UL%] ", main.output.stream, main.context.set.notable, cell->row, main.context.set.notable); if (*offset) { uint8_t offset_to_print = *offset; @@ -412,10 +412,10 @@ extern "C" { } if (width_utf < 4) { - fl_print_string(" U+%04_U ", main.output.stream, unicode); + fl_print_format(" U+%04_U ", main.output.stream, unicode); } else { - fl_print_string(" U+%06_U ", main.output.stream, unicode); + fl_print_format(" U+%06_U ", main.output.stream, unicode); } } else { @@ -431,10 +431,10 @@ extern "C" { } if (invalid[character_current]) { - fl_print_string(" %[%02_uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); + fl_print_format(" %[%02_uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); } else { - fl_print_string(" %02_uii", main.output.stream, (uint8_t) byte); + fl_print_format(" %02_uii", main.output.stream, (uint8_t) byte); } } else if (main.mode == byte_dump_mode_duodecimal) { @@ -443,10 +443,10 @@ extern "C" { } if (invalid[character_current]) { - fl_print_string(" %[%03&uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); + fl_print_format(" %[%03&uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); } else { - fl_print_string(" %03&uii", main.output.stream, (uint8_t) byte); + fl_print_format(" %03&uii", main.output.stream, (uint8_t) byte); } } else if (main.mode == byte_dump_mode_octal) { @@ -455,18 +455,18 @@ extern "C" { } if (invalid[character_current]) { - fl_print_string(" %[%03@uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); + fl_print_format(" %[%03@uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); } else { - fl_print_string(" %03@uii", main.output.stream, (uint8_t) byte); + fl_print_format(" %03@uii", main.output.stream, (uint8_t) byte); } } else if (main.mode == byte_dump_mode_binary) { if (invalid[character_current]) { - fl_print_string(" %[%08!uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); + fl_print_format(" %[%08!uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); } else { - fl_print_string(" %08!uii", main.output.stream, (uint8_t) byte); + fl_print_format(" %08!uii", main.output.stream, (uint8_t) byte); } } else if (main.mode == byte_dump_mode_decimal) { @@ -475,10 +475,10 @@ extern "C" { } if (invalid[character_current]) { - fl_print_string(" %[%3uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); + fl_print_format(" %[%3uii%]", main.output.stream, main.context.set.error, (uint8_t) byte, main.context.set.error); } else { - fl_print_string(" %3uii", main.output.stream, (uint8_t) byte); + fl_print_format(" %3uii", main.output.stream, (uint8_t) byte); } } } diff --git a/level_3/control/c/control.c b/level_3/control/c/control.c index e1bc988..c3450a0 100644 --- a/level_3/control/c/control.c +++ b/level_3/control/c/control.c @@ -9,6 +9,8 @@ extern "C" { #ifndef _di_control_print_help_ f_status_t control_print_help(const f_file_t output, const f_color_context_t context) { + flockfile(output.stream); + fll_program_print_help_header(output, context, control_name_long, control_version); fll_program_print_help_option(output, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Print this help message."); @@ -23,6 +25,8 @@ extern "C" { fll_program_print_help_usage(output, context, control_name, f_string_empty_s); + funlockfile(output.stream); + return F_none; } #endif // _di_control_print_help_ @@ -80,15 +84,19 @@ extern "C" { if (choice == control_parameter_verbosity_quiet) { main->error.verbosity = f_console_verbosity_quiet; + main->warning.verbosity = f_console_verbosity_quiet; } else if (choice == control_parameter_verbosity_normal) { main->error.verbosity = f_console_verbosity_normal; + main->warning.verbosity = f_console_verbosity_normal; } else if (choice == control_parameter_verbosity_verbose) { main->error.verbosity = f_console_verbosity_verbose; + main->warning.verbosity = f_console_verbosity_verbose; } else if (choice == control_parameter_verbosity_debug) { main->error.verbosity = f_console_verbosity_debug; + main->warning.verbosity = f_console_verbosity_debug; } } diff --git a/level_3/control/data/build/dependencies b/level_3/control/data/build/dependencies index 6e70413..95b9fce 100644 --- a/level_3/control/data/build/dependencies +++ b/level_3/control/data/build/dependencies @@ -14,4 +14,5 @@ fl_console fl_print fl_string fll_error +fll_print fll_program diff --git a/level_3/control/data/build/settings b/level_3/control/data/build/settings index 0128b71..53798cb 100644 --- a/level_3/control/data/build/settings +++ b/level_3/control/data/build/settings @@ -20,7 +20,7 @@ build_compiler gcc build_indexer ar build_language c build_libraries -lc -build_libraries-individual -lfll_error -lfll_program -lfl_console -lfl_print -lfl_string -lf_color -lf_console -lf_conversion -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_string -lf_type_array -lf_utf +build_libraries-individual -lfll_error -lfll_print -lfll_program -lfl_console -lfl_print -lfl_string -lf_color -lf_console -lf_conversion -lf_file -lf_memory -lf_path -lf_pipe -lf_print -lf_string -lf_type_array -lf_utf build_libraries-level -lfll_2 -lfll_1 -lfll_0 build_libraries-monolithic -lfll build_sources_library control.c private-common.c private-control.c diff --git a/level_3/controller/c/controller.c b/level_3/controller/c/controller.c index dc74c1f..08c6503 100644 --- a/level_3/controller/c/controller.c +++ b/level_3/controller/c/controller.c @@ -27,7 +27,7 @@ extern "C" { fll_program_print_help_option(output, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Enable debugging, inceasing verbosity beyond normal output."); fll_program_print_help_option(output, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number."); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); fll_program_print_help_option(output, context, controller_short_control, controller_long_control, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Specify a custom control group file path, such as '" f_control_group_path_system_prefix f_control_group_path_system_default "'."); fll_program_print_help_option(output, context, controller_short_daemon, controller_long_daemon, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Run in daemon only mode (do not process the entry)."); @@ -41,11 +41,11 @@ extern "C" { fll_program_print_help_usage(output, context, controller_name, "entry"); f_print_terminated(" When both the ", output.stream); - fl_print_string("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, controller_long_simulate, context.set.notable); + fl_print_format("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, controller_long_simulate, context.set.notable); f_print_terminated(" parameter and the ", output.stream); - fl_print_string("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, controller_long_validate, context.set.notable); + fl_print_format("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, controller_long_validate, context.set.notable); f_print_terminated(" parameter are specified, then additional information on each would be executed rule is printed but no simulation is performed.", output.stream); - f_print_terminated(f_string_eol_s, output.stream); + f_print_character(f_string_eol_s[0], output.stream); funlockfile(output.stream); @@ -172,9 +172,9 @@ extern "C" { if (main->error.verbosity != f_console_verbosity_quiet) { flockfile(main->error.to.stream); - fl_print_string("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_settings, main->context.set.notable); - fl_print_string("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_settings, main->context.set.notable); + fl_print_format("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); } @@ -208,9 +208,9 @@ extern "C" { if (main->error.verbosity != f_console_verbosity_quiet) { flockfile(main->error.to.stream); - fl_print_string("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_pid, main->context.set.notable); - fl_print_string("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_pid, main->context.set.notable); + fl_print_format("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); } @@ -231,9 +231,9 @@ extern "C" { if (main->warning.verbosity == f_console_verbosity_debug) { flockfile(main->warning.to.stream); - fl_print_string("%c%[%SThe parameter '%]", main->warning.to.stream, f_string_eol_s[0], main->warning.context, main->warning.prefix ? main->warning.prefix : f_string_empty_s, main->warning.context); - fl_print_string("%[%s%s%]", main->warning.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_pid, main->context.set.notable); - fl_print_string("%[' must be a file path but instead is an empty string, falling back to the default.%]%c", main->warning.to.stream, main->warning.context, main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe parameter '%]", main->warning.to.stream, f_string_eol_s[0], main->warning.context, main->warning.prefix ? main->warning.prefix : f_string_empty_s, main->warning.context); + fl_print_format("%[%s%s%]", main->warning.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_pid, main->context.set.notable); + fl_print_format("%[' must be a file path but instead is an empty string, falling back to the default.%]%c", main->warning.to.stream, main->warning.context, main->warning.context, f_string_eol_s[0]); funlockfile(main->warning.to.stream); } @@ -269,9 +269,9 @@ extern "C" { if (main->error.verbosity != f_console_verbosity_quiet) { flockfile(main->error.to.stream); - fl_print_string("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_control, main->context.set.notable); - fl_print_string("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_control, main->context.set.notable); + fl_print_format("%[' was specified, but no value was given.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); } @@ -306,9 +306,9 @@ extern "C" { if (main->warning.verbosity == f_console_verbosity_debug) { flockfile(main->warning.to.stream); - fl_print_string("%c%[%SThe parameter '%]", main->warning.to.stream, f_string_eol_s[0], main->warning.context, main->warning.prefix ? main->warning.prefix : f_string_empty_s, main->warning.context); - fl_print_string("%[%s%s%]", main->warning.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_control, main->context.set.notable); - fl_print_string("%[' must be a file directory path but instead is an empty string, falling back to the default.%]%c", main->warning.to.stream, main->warning.context, main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe parameter '%]", main->warning.to.stream, f_string_eol_s[0], main->warning.context, main->warning.prefix ? main->warning.prefix : f_string_empty_s, main->warning.context); + fl_print_format("%[%s%s%]", main->warning.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_control, main->context.set.notable); + fl_print_format("%[' must be a file directory path but instead is an empty string, falling back to the default.%]%c", main->warning.to.stream, main->warning.context, main->warning.context, f_string_eol_s[0]); funlockfile(main->warning.to.stream); } @@ -321,10 +321,10 @@ extern "C" { if (main->error.verbosity != f_console_verbosity_quiet) { flockfile(main->error.to.stream); - fl_print_string("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[' must not be specified with the parameter '%]", main->error.to.stream, main->error.context, main->error.context); - fl_print_string("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_daemon, main->context.set.notable); - fl_print_string("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[' must not be specified with the parameter '%]", main->error.to.stream, main->error.context, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->context.set.notable, f_console_symbol_long_enable_s, controller_long_daemon, main->context.set.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); } diff --git a/level_3/controller/c/private-common.c b/level_3/controller/c/private-common.c index e773aca..6b4dc6a 100644 --- a/level_3/controller/c/private-common.c +++ b/level_3/controller/c/private-common.c @@ -203,10 +203,10 @@ extern "C" { flockfile(print.to.stream); - fl_print_string("%c%[%SThe pid file '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix ? print.prefix : f_string_empty_s, print.context); - fl_print_string("%[' must not be specified with the parameter '%]", print.to.stream, print.context, print.context); - fl_print_string("%[%S%]", print.to.stream, print.notable, path, print.notable); - fl_print_string("%[' doesn't contain the expected number, not deleting file.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe pid file '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix ? print.prefix : f_string_empty_s, print.context); + fl_print_format("%[' must not be specified with the parameter '%]", print.to.stream, print.context, print.context); + fl_print_format("%[%S%]", print.to.stream, print.notable, path, print.notable); + fl_print_format("%[' doesn't contain the expected number, not deleting file.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); @@ -311,28 +311,28 @@ extern "C" { flockfile(print.to.stream); - fl_print_string("%c%[%SThe pid file '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix ? print.prefix : f_string_empty_s, print.context); - fl_print_string("%['Critical failure while attempting to establish '%]", print.to.stream, print.context, print.context); - fl_print_string("%[%s lock%]", print.to.stream, print.notable, read ? "read" : "write", print.notable); + fl_print_format("%c%[%SThe pid file '%]", print.to.stream, f_string_eol_s[0], print.context, print.prefix ? print.prefix : f_string_empty_s, print.context); + fl_print_format("%['Critical failure while attempting to establish '%]", print.to.stream, print.context, print.context); + fl_print_format("%[%s lock%]", print.to.stream, print.notable, read ? "read" : "write", print.notable); if (status != F_failure) { - fl_print_string(" %['due to%] ", print.to.stream, print.context, print.context); + fl_print_format(" %['due to%] ", print.to.stream, print.context, print.context); if (status == F_parameter) { - fl_print_string("%[%s%]", print.to.stream, print.notable, "Invalid Parameter", print.notable); + fl_print_format("%[%s%]", print.to.stream, print.notable, "Invalid Parameter", print.notable); } else if (status == F_deadlock) { - fl_print_string("%[%s%]", print.to.stream, print.notable, "Deadlock", print.notable); + fl_print_format("%[%s%]", print.to.stream, print.notable, "Deadlock", print.notable); } else if (status == F_resource_not) { - fl_print_string("%[%s%]", print.to.stream, print.notable, "Too Many Locks", print.notable); + fl_print_format("%[%s%]", print.to.stream, print.notable, "Too Many Locks", print.notable); } else { - fl_print_string("%[%s%]", print.to.stream, print.notable, "Unknown Error", print.notable); + fl_print_format("%[%s%]", print.to.stream, print.notable, "Unknown Error", print.notable); } } - fl_print_string("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); + fl_print_format("%['.%]%c", print.to.stream, print.context, print.context, f_string_eol_s[0]); funlockfile(print.to.stream); diff --git a/level_3/controller/c/private-controller.c b/level_3/controller/c/private-controller.c index 647fa65..55d83ce 100644 --- a/level_3/controller/c/private-controller.c +++ b/level_3/controller/c/private-controller.c @@ -194,7 +194,7 @@ extern "C" { status = f_file_stream_open(path.string, f_file_open_mode_truncate_s, &file); if (F_status_is_error(status)) return status; - fll_print_string("%i%c", file.stream, pid, f_string_eol_s[0]); + fll_print_format("%i%c", file.stream, pid, f_string_eol_s[0]); f_file_stream_close(F_true, &file); @@ -534,9 +534,9 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%sMultiple '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); - fl_print_string("%[%s%]", global.main->warning.to.stream, global.main->warning.notable, controller_string_ready_s, global.main->warning.notable); - fl_print_string("%[' %s item actions detected; only the first will be used.%]%c", global.main->warning.to.stream, global.main->warning.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SMultiple '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); + fl_print_format("%[%s%]", global.main->warning.to.stream, global.main->warning.notable, controller_string_ready_s, global.main->warning.notable); + fl_print_format("%[' %s item actions detected; only the first will be used.%]%c", global.main->warning.to.stream, global.main->warning.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global.main->warning, cache->action); @@ -573,9 +573,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%sThe %s item named '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, entry->items.array[i].name, global.main->error.notable); - fl_print_string("%[' cannot be executed because recursion is not allowed.%]%c", global.main->error.to.stream, global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item named '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, entry->items.array[i].name, global.main->error.notable); + fl_print_format("%[' cannot be executed because recursion is not allowed.%]%c", global.main->error.to.stream, global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global.main->error, cache->action); @@ -639,9 +639,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%sThe %s item named '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, actions->array[cache->ats.array[at_j]].parameters.array[0], global.main->error.notable); - fl_print_string("%[' does not exist.%]%c", global.main->error.to.stream, global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item named '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, actions->array[cache->ats.array[at_j]].parameters.array[0], global.main->error.notable); + fl_print_format("%[' does not exist.%]%c", global.main->error.to.stream, global.main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global.main->error, cache->action); @@ -768,8 +768,8 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cProcessing %s%s item '", global->main->output.stream, f_string_eol_s[0], failsafe ? "failsafe " : "", is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%Q%]'.%c", global->main->output.stream, global->main->context.set.notable, cache->action.name_item, global->main->context.set.notable, f_string_eol_s[0]); + fl_print_format("%cProcessing %s%s item '", global->main->output.stream, f_string_eol_s[0], failsafe ? "failsafe " : "", is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%Q%]'.%c", global->main->output.stream, global->main->context.set.notable, cache->action.name_item, global->main->context.set.notable, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -804,18 +804,18 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cThe %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%Q%]", global->main->output.stream, global->main->context.set.title, cache->action.name_action, global->main->context.set.title); + fl_print_format("%cThe %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%Q%]", global->main->output.stream, global->main->context.set.title, cache->action.name_action, global->main->context.set.title); if (entry_action->parameters.used) { - fl_print_string(" %[", global->main->output.stream, global->main->context.set.notable); + fl_print_format(" %[", global->main->output.stream, global->main->context.set.notable); controller_entry_action_parameters_print(global->main->output.stream, entry_actions->array[cache->ats.array[at_j]]); - fl_print_string("%]", global->main->output.stream, global->main->context.set.notable); + fl_print_format("%]", global->main->output.stream, global->main->context.set.notable); } - fl_print_string("' is %s and is in a %[failed%] state, skipping execution.%c", global->main->output.stream, entry_action->code & controller_entry_rule_code_require ? "required" : "optional", f_string_eol_s[0]); + fl_print_format("' is %s and is in a %[failed%] state, skipping execution.%c", global->main->output.stream, entry_action->code & controller_entry_rule_code_require ? "required" : "optional", f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -836,16 +836,16 @@ extern "C" { flockfile(output->to.stream); - fl_print_string("%c%[%SThe %s item action '%]", output->to.stream, f_string_eol_s[0], output->prefix ? output->prefix : f_string_empty_s, is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%Q%]", output->to.stream, output->notable, cache->action.name_action, output->notable); + fl_print_format("%c%[%SThe %s item action '%]", output->to.stream, f_string_eol_s[0], output->prefix ? output->prefix : f_string_empty_s, is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%Q%]", output->to.stream, output->notable, cache->action.name_action, output->notable); if (entry_action->parameters.used) { - fl_print_string(" %[%S%]", output->to.stream, output->notable, entry_actions->array[cache->ats.array[at_j]], output->notable); + fl_print_format(" %[%S%]", output->to.stream, output->notable, entry_actions->array[cache->ats.array[at_j]], output->notable); } - fl_print_string("%[' is%] %[required%]", output->to.stream, output->context, output->context, output->notable, output->notable); - fl_print_string(" %[and is in a%] %[failed%]", output->to.stream, output->context, output->context, output->notable, output->notable); - fl_print_string(" %[state, skipping execution.%]%c", output->to.stream, output->context, output->context, f_string_eol_s[0]); + fl_print_format("%[' is%] %[required%]", output->to.stream, output->context, output->context, output->notable, output->notable); + fl_print_format(" %[and is in a%] %[failed%]", output->to.stream, output->context, output->context, output->notable, output->notable); + fl_print_format(" %[state, skipping execution.%]%c", output->to.stream, output->context, output->context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, *output, cache->action); @@ -873,15 +873,15 @@ extern "C" { flockfile(output->to.stream); - fl_print_string("%c%[%SThe %s item action '%]", output->to.stream, f_string_eol_s[0], output->prefix ? output->prefix : f_string_empty_s, is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%Q%]", output->to.stream, output->notable, cache->action.name_action, output->notable); + fl_print_format("%c%[%SThe %s item action '%]", output->to.stream, f_string_eol_s[0], output->prefix ? output->prefix : f_string_empty_s, is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%Q%]", output->to.stream, output->notable, cache->action.name_action, output->notable); if (entry_action->parameters.used) { - fl_print_string(" %[%S%]", output->to.stream, output->notable, entry_actions->array[cache->ats.array[at_j]], output->notable); + fl_print_format(" %[%S%]", output->to.stream, output->notable, entry_actions->array[cache->ats.array[at_j]], output->notable); } - fl_print_string(" %[is in a%] %[failed%]", output->to.stream, output->context, output->context, output->notable, output->notable); - fl_print_string(" %[state, skipping.%]%c", output->to.stream, output->context, output->context, f_string_eol_s[0]); + fl_print_format(" %[is in a%] %[failed%]", output->to.stream, output->context, output->context, output->notable, output->notable); + fl_print_format(" %[state, skipping.%]%c", output->to.stream, output->context, output->context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, *output, cache->action); @@ -902,9 +902,9 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cWaiting before processing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_ready_s, global->main->context.set.title); - fl_print_string("'.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("%cWaiting before processing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_ready_s, global->main->context.set.title); + fl_print_format("'.%c", global->main->output.stream, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -924,9 +924,9 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cWaiting before processing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_ready_s, global->main->context.set.title); - fl_print_string("'.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("%cWaiting before processing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_ready_s, global->main->context.set.title); + fl_print_format("'.%c", global->main->output.stream, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -948,9 +948,9 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cIgnoring %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_ready_s, global->main->context.set.title); - fl_print_string("', state already is ready.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("%cIgnoring %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_ready_s, global->main->context.set.title); + fl_print_format("', state already is ready.%c", global->main->output.stream, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -967,9 +967,9 @@ extern "C" { flockfile(global->main->error.to.stream); - fl_print_string("%c%[Invalid %s item index '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global->main->error.context); - fl_print_string("%[%ul%]", global->main->error.to.stream, global->main->error.notable, entry_action->number, global->main->error.notable); - fl_print_string("%[' detected.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[Invalid %s item index '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, is_entry ? controller_string_entry_s : controller_string_exit_s, global->main->error.context); + fl_print_format("%[%un%]", global->main->error.to.stream, global->main->error.notable, entry_action->number, global->main->error.notable); + fl_print_format("%[' detected.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global->main->error, cache->action); @@ -1018,9 +1018,9 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cProcessing %s item '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%Q%]", global->main->output.stream, global->main->context.set.title, cache->action.name_item, global->main->context.set.title); - fl_print_string("'.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("%cProcessing %s item '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%Q%]", global->main->output.stream, global->main->context.set.title, cache->action.name_item, global->main->context.set.title); + fl_print_format("'.%c", global->main->output.stream, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -1078,9 +1078,9 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%c%s %s item rule '", global->main->output.stream, f_string_eol_s[0], entry_action->type == controller_entry_action_type_consider ? "Considering" : "Processing", is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%Q%]", global->main->output.stream, global->main->context.set.title, alias_rule, global->main->context.set.title); - fl_print_string("'.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("%c%s %s item rule '", global->main->output.stream, f_string_eol_s[0], entry_action->type == controller_entry_action_type_consider ? "Considering" : "Processing", is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%Q%]", global->main->output.stream, global->main->context.set.title, alias_rule, global->main->context.set.title); + fl_print_format("'.%c", global->main->output.stream, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -1212,18 +1212,18 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%c%s is executing '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%c%s is executing '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); for (f_array_length_t k = 0; k < entry_action->parameters.used; ++k) { - fl_print_string("%[%Q%]", global->main->output.stream, global->main->context.set.title, entry_action->parameters.array[k], global->main->context.set.title); + fl_print_format("%[%Q%]", global->main->output.stream, global->main->context.set.title, entry_action->parameters.array[k], global->main->context.set.title); if (k + 1 < entry_action->parameters.used) { f_print_character(f_string_space_s[0], global->main->output.stream); } } // for - fl_print_string("'.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("'.%c", global->main->output.stream, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -1248,9 +1248,9 @@ extern "C" { flockfile(global->main->error.to.stream); - fl_print_string("%c%[%SExecution failed, unable to find program or script '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, global->main->error.prefix ? global->main->error.prefix : f_string_empty_s, global->main->error.context); - fl_print_string("%[%Q%]", global->main->error.to.stream, global->main->error.notable, entry_action->parameters.array[0], global->main->error.notable); - fl_print_string("$['.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SExecution failed, unable to find program or script '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, global->main->error.prefix ? global->main->error.prefix : f_string_empty_s, global->main->error.context); + fl_print_format("%[%Q%]", global->main->error.to.stream, global->main->error.notable, entry_action->parameters.array[0], global->main->error.notable); + fl_print_format("$['.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global->main->error, cache->action); @@ -1271,9 +1271,9 @@ extern "C" { flockfile(global->main->error.to.stream); - fl_print_string("%c%[%SExecution failed with return value of '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, global->main->error.prefix ? global->main->error.prefix : f_string_empty_s, global->main->error.context); - fl_print_string("%[%i%]", global->main->error.to.stream, global->main->error.notable, result, global->main->error.notable); - fl_print_string("$['.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SExecution failed with return value of '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, global->main->error.prefix ? global->main->error.prefix : f_string_empty_s, global->main->error.context); + fl_print_format("%[%i%]", global->main->error.to.stream, global->main->error.notable, result, global->main->error.notable); + fl_print_format("$['.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global->main->error, cache->action); @@ -1307,10 +1307,10 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cProcessing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%s%]' setting '", global->main->output.stream, global->main->context.set.title, controller_string_timeout_s, global->main->context.set.title); - fl_print_string("%[%S%]' to '", global->main->output.stream, global->main->context.set.important, code, global->main->context.set.important); - fl_print_string("%[%ul%]' MegaTime (milliseconds).%c", global->main->output.stream, global->main->context.set.important, entry_action->number, global->main->context.set.important, f_string_eol_s[0]); + fl_print_format("%cProcessing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%s%]' setting '", global->main->output.stream, global->main->context.set.title, controller_string_timeout_s, global->main->context.set.title); + fl_print_format("%[%S%]' to '", global->main->output.stream, global->main->context.set.important, code, global->main->context.set.important); + fl_print_format("%[%un%]' MegaTime (milliseconds).%c", global->main->output.stream, global->main->context.set.important, entry_action->number, global->main->context.set.important, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -1336,7 +1336,7 @@ extern "C" { flockfile(global->main->error.to.stream); - fl_print_string("%c%[%SFailsafe may not be specified when running in failsafe, ignoring.%]%c", global->main->warning.to.stream, f_string_eol_s[0], global->main->warning.context, global->main->warning.prefix ? global->main->warning.prefix : f_string_empty_s, global->main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFailsafe may not be specified when running in failsafe, ignoring.%]%c", global->main->warning.to.stream, f_string_eol_s[0], global->main->warning.context, global->main->warning.prefix ? global->main->warning.prefix : f_string_empty_s, global->main->warning.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global->main->warning, cache->action); @@ -1354,9 +1354,9 @@ extern "C" { flockfile(global->main->error.to.stream); - fl_print_string("%c%[%SInvalid %s item index '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, global->main->error.prefix ? global->main->error.prefix : f_string_empty_s, is_entry ? controller_string_entry_s : controller_string_exit_s, global->main->error.context); - fl_print_string("%[%ul%]", global->main->error.to.stream, global->main->error.notable, entry_action->number, global->main->error.notable); - fl_print_string("%[' detected.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid %s item index '%]", global->main->error.to.stream, f_string_eol_s[0], global->main->error.context, global->main->error.prefix ? global->main->error.prefix : f_string_empty_s, is_entry ? controller_string_entry_s : controller_string_exit_s, global->main->error.context); + fl_print_format("%[%un%]", global->main->error.to.stream, global->main->error.notable, entry_action->number, global->main->error.notable); + fl_print_format("%[' detected.%]%c", global->main->error.to.stream, global->main->error.context, global->main->error.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global->main->error, cache->action); @@ -1377,10 +1377,10 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cProcessing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%s%]' setting value to '", global->main->output.stream, global->main->context.set.title, controller_string_failsafe_s, global->main->context.set.title); - fl_print_string("%[%Q%]", global->main->output.stream, global->main->context.set.important, entry->items.array[global->setting->failsafe_item_id].name, global->main->context.set.important); - fl_print_string("'.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("%cProcessing %s item action '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%s%]' setting value to '", global->main->output.stream, global->main->context.set.title, controller_string_failsafe_s, global->main->context.set.title); + fl_print_format("%[%Q%]", global->main->output.stream, global->main->context.set.important, entry->items.array[global->setting->failsafe_item_id].name, global->main->context.set.important); + fl_print_format("'.%c", global->main->output.stream, f_string_eol_s[0]); funlockfile(global->main->output.stream); @@ -1458,9 +1458,9 @@ extern "C" { flockfile(global->main->output.stream); - fl_print_string("%cDone processing %s item '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); - fl_print_string("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_main_s, global->main->context.set.title); - fl_print_string("'.%c", global->main->output.stream, f_string_eol_s[0]); + fl_print_format("%cDone processing %s item '", global->main->output.stream, f_string_eol_s[0], is_entry ? controller_string_entry_s : controller_string_exit_s); + fl_print_format("%[%s%]", global->main->output.stream, global->main->context.set.title, controller_string_main_s, global->main->context.set.title); + fl_print_format("'.%c", global->main->output.stream, f_string_eol_s[0]); // failsafe should not print the extra newline because the failure exit from controller_main should handle this. if (!failsafe) { diff --git a/level_3/controller/c/private-entry.c b/level_3/controller/c/private-entry.c index 66c2f54..04915f1 100644 --- a/level_3/controller/c/private-entry.c +++ b/level_3/controller/c/private-entry.c @@ -331,9 +331,9 @@ extern "C" { if (global.main->warning.verbosity == f_console_verbosity_debug) { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SUnknown %s item action '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); - fl_print_string("%[%S%]'", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); - fl_print_string("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnknown %s item action '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); + fl_print_format("%[%S%]'", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); + fl_print_format("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global.main->warning, cache->action); @@ -375,27 +375,27 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item action '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.context, cache->action.name_action, global.main->error.context); - fl_print_string("%[' requires ", global.main->error.to.stream, global.main->error.context); + fl_print_format("%c%[%SThe %s item action '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.context, cache->action.name_action, global.main->error.context); + fl_print_format("%[' requires ", global.main->error.to.stream, global.main->error.context); if (at_least == at_most) { f_print_terminated("exactly ", global.main->error.to.stream); } - fl_print_string("%]%[%ul%]", global.main->error.to.stream, global.main->error.context, global.main->error.notable, at_least, global.main->error.notable); + fl_print_format("%]%[%un%]", global.main->error.to.stream, global.main->error.context, global.main->error.notable, at_least, global.main->error.notable); if (action->type == controller_entry_action_type_consider || controller_entry_action_type_is_rule(action->type)) { - fl_print_string("%[' or more parameters.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%[' or more parameters.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); } else { if (at_least == at_most) { - fl_print_string("%[' parameters.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%[' parameters.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); } else { - fl_print_string("%[ to %]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%ul%]", global.main->error.to.stream, global.main->error.notable, at_most, global.main->error.notable); - fl_print_string("%[' parameters.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%[ to %]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%un%]", global.main->error.to.stream, global.main->error.notable, at_most, global.main->error.notable); + fl_print_format("%[' parameters.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); } } @@ -480,7 +480,7 @@ extern "C" { } if (global.main->error.verbosity != f_console_verbosity_quiet) { - fll_print_string("%c%[%SThe %s item action must not have an empty string for a path (the first parameter).%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); + fll_print_format("%c%[%SThe %s item action must not have an empty string for a path (the first parameter).%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); } } @@ -523,11 +523,11 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item action second parameter '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[1], global.main->error.notable); - fl_print_string("%[' must be a base path name, such as '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_path, global.main->error.notable); - fl_print_string("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item action second parameter '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[1], global.main->error.notable); + fl_print_format("%[' must be a base path name, such as '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_path, global.main->error.notable); + fl_print_format("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); } @@ -548,7 +548,7 @@ extern "C" { } if (global.main->error.verbosity != f_console_verbosity_quiet) { - fll_print_string("%c%[%SThe %s item action must not have an empty string for a rule name (the second parameter).%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); + fll_print_format("%c%[%SThe %s item action must not have an empty string for a rule name (the second parameter).%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); } } @@ -575,15 +575,15 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item action third parameter (and beyond) must be one of '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_asynchronous_s, global.main->error.notable); - fl_print_string("%[', '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_require_s, global.main->error.notable); - fl_print_string("%[', or '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_wait_s, global.main->error.notable); - fl_print_string("%[' but instead has '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[j], global.main->error.notable); - fl_print_string("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item action third parameter (and beyond) must be one of '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_asynchronous_s, global.main->error.notable); + fl_print_format("%[', '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_require_s, global.main->error.notable); + fl_print_format("%[', or '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_wait_s, global.main->error.notable); + fl_print_format("%[' but instead has '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[j], global.main->error.notable); + fl_print_format("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); } @@ -601,9 +601,9 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item action may not specify the reserved item '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_main_s, global.main->error.notable); - fl_print_string("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item action may not specify the reserved item '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_main_s, global.main->error.notable); + fl_print_format("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); } @@ -630,15 +630,15 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item action must have one of '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_kill_s, global.main->error.notable); - fl_print_string("%[', '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_start_s, global.main->error.notable); - fl_print_string("%[', or '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_stop_s, global.main->error.notable); - fl_print_string("%[' but instead has '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[0], global.main->error.notable); - fl_print_string("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item action must have one of '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_kill_s, global.main->error.notable); + fl_print_format("%[', '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_start_s, global.main->error.notable); + fl_print_format("%[', or '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_stop_s, global.main->error.notable); + fl_print_format("%[' but instead has '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[0], global.main->error.notable); + fl_print_format("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); } @@ -669,9 +669,9 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item action parameter '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[1], global.main->error.notable); - fl_print_string("%[' is not a valid supported number.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item action parameter '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[1], global.main->error.notable); + fl_print_format("%[' is not a valid supported number.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); } @@ -689,11 +689,11 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item action may only have '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_wait_s, global.main->error.notable); - fl_print_string("%[' but instead has '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[0], global.main->error.notable); - fl_print_string("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item action may only have '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_wait_s, global.main->error.notable); + fl_print_format("%[' but instead has '%]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[0], global.main->error.notable); + fl_print_format("%['.%]", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); } @@ -731,30 +731,30 @@ extern "C" { #ifndef _di_controller_entry_error_print_cache_ void controller_entry_error_print_cache(const bool is_entry, const fll_error_print_t output, const controller_cache_action_t cache) { - fl_print_string("%c%[%SWhile processing ", output.to.stream, f_string_eol_s[0], output.context, output.prefix); + fl_print_format("%c%[%SWhile processing ", output.to.stream, f_string_eol_s[0], output.context, output.prefix); if (cache.name_action.used) { - fl_print_string("action '%]", output.to.stream, output.context); - fl_print_string("%[%Q%]", output.to.stream, output.context, cache.name_action, output.context); - fl_print_string("%[' on line%] ", output.to.stream, output.context, output.context); - fl_print_string("%[%ul%]", output.to.stream, output.notable, cache.line_action, output.notable); - fl_print_string("%[ for ", output.to.stream, output.context); + fl_print_format("action '%]", output.to.stream, output.context); + fl_print_format("%[%Q%]", output.to.stream, output.context, cache.name_action, output.context); + fl_print_format("%[' on line%] ", output.to.stream, output.context, output.context); + fl_print_format("%[%un%]", output.to.stream, output.notable, cache.line_action, output.notable); + fl_print_format("%[ for ", output.to.stream, output.context); } if (cache.name_item.used) { - fl_print_string("%s item '%]", output.to.stream, is_entry ? controller_string_entry_s : controller_string_exit_s, output.context); - fl_print_string("%[%Q%]", output.to.stream, output.notable, cache.name_item, output.notable); - fl_print_string("%[' on line%] ", output.to.stream, output.context, output.context); - fl_print_string("%[%ul%]", output.to.stream, output.notable, cache.line_item, output.notable); - fl_print_string("%[ for ", output.to.stream, output.context); + fl_print_format("%s item '%]", output.to.stream, is_entry ? controller_string_entry_s : controller_string_exit_s, output.context); + fl_print_format("%[%Q%]", output.to.stream, output.notable, cache.name_item, output.notable); + fl_print_format("%[' on line%] ", output.to.stream, output.context, output.context); + fl_print_format("%[%un%]", output.to.stream, output.notable, cache.line_item, output.notable); + fl_print_format("%[ for ", output.to.stream, output.context); } if (cache.name_file.used) { - fl_print_string("%s file '%]", output.to.stream, is_entry ? controller_string_entry_s : controller_string_exit_s, output.context); - fl_print_string("%[%Q%]%['", output.to.stream, output.notable, cache.name_file, output.notable, output.context); + fl_print_format("%s file '%]", output.to.stream, is_entry ? controller_string_entry_s : controller_string_exit_s, output.context); + fl_print_format("%[%Q%]%['", output.to.stream, output.notable, cache.name_file, output.notable, output.context); } - fl_print_string(".%]%c", output.to.stream, output.context, f_string_eol_s[0]); + fl_print_format(".%]%c", output.to.stream, output.context, f_string_eol_s[0]); } #endif // _di_controller_entry_error_print_cache_ @@ -858,7 +858,7 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { f_thread_mutex_lock(&global.thread->lock.print); - fll_print_string("%c%[%SThe %s file is empty.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); + fll_print_format("%c%[%SThe %s file is empty.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context, f_string_eol_s[0]); controller_print_unlock_flush(global.main->error.to.stream, &global.thread->lock.print); } @@ -940,9 +940,9 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SIgnoring duplicate %s item '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); - fl_print_string("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_file, global.main->warning.notable); - fl_print_string("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SIgnoring duplicate %s item '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); + fl_print_format("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_file, global.main->warning.notable); + fl_print_format("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global.main->warning, cache->action); @@ -1025,9 +1025,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe required %s item '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_main_s, global.main->error.notable); - fl_print_string("%[' was not found.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe required %s item '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%s%]", global.main->error.to.stream, global.main->error.notable, controller_string_main_s, global.main->error.notable); + fl_print_format("%[' was not found.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -1090,9 +1090,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe required %s item '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[0], global.main->error.notable); - fl_print_string("%[' does not exist.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe required %s item '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, action->parameters.array[0], global.main->error.notable); + fl_print_format("%[' does not exist.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_entry_error_print_cache(is_entry, global.main->error, cache->action); @@ -1186,11 +1186,11 @@ extern "C" { if (global.main->error.verbosity != f_console_verbosity_quiet) { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe %s item setting '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->action.name_action, global.main->error.notable); - fl_print_string("%[' requires exactly %]", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[1%]", global.main->error.to.stream, global.main->error.notable, global.main->error.notable); - fl_print_string("%[' parameter.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s item setting '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->action.name_action, global.main->error.notable); + fl_print_format("%[' requires exactly %]", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[1%]", global.main->error.to.stream, global.main->error.notable, global.main->error.notable); + fl_print_format("%[' parameter.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); } @@ -1208,9 +1208,9 @@ extern "C" { if (global.main->warning.verbosity == f_console_verbosity_debug) { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%Sfor %s item setting '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); - fl_print_string("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); - fl_print_string("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%Sfor %s item setting '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); + fl_print_format("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); + fl_print_format("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); funlockfile(global.main->warning.to.stream); @@ -1224,9 +1224,9 @@ extern "C" { if (global.main->warning.verbosity == f_console_verbosity_debug) { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SUnknown %s item setting '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); - fl_print_string("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); - fl_print_string("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnknown %s item setting '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, is_entry ? controller_string_entry_s : controller_string_exit_s, global.main->warning.context); + fl_print_format("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); + fl_print_format("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); funlockfile(global.main->warning.to.stream); diff --git a/level_3/controller/c/private-rule.c b/level_3/controller/c/private-rule.c index 5bb9a11..fb428cf 100644 --- a/level_3/controller/c/private-rule.c +++ b/level_3/controller/c/private-rule.c @@ -457,7 +457,7 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SAction is empty, nothing to do.%]%c", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SAction is empty, nothing to do.%]%c", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->warning, cache->action, F_true); @@ -691,29 +691,29 @@ extern "C" { void controller_rule_error_print_cache(const fll_error_print_t output, const controller_cache_action_t cache, const bool item) { if (output.verbosity != f_console_verbosity_quiet) { - fl_print_string("%c%[%SWhile processing ", output.to.stream, f_string_eol_s[0], output.context, output.prefix); + fl_print_format("%c%[%SWhile processing ", output.to.stream, f_string_eol_s[0], output.context, output.prefix); if (cache.name_action.used) { - fl_print_string("%s '%]", output.to.stream, output.context, item ? controller_string_action_s : controller_string_value_s, output.context); - fl_print_string("%[%Q%]", output.to.stream, output.notable, cache.name_action, output.notable); - fl_print_string("%[ on line %]", output.to.stream, output.context, output.context); - fl_print_string("%[%ul%]", output.to.stream, output.notable, cache.line_action, output.notable); - fl_print_string("%[ for ", output.to.stream, output.context); + fl_print_format("%s '%]", output.to.stream, output.context, item ? controller_string_action_s : controller_string_value_s, output.context); + fl_print_format("%[%Q%]", output.to.stream, output.notable, cache.name_action, output.notable); + fl_print_format("%[ on line %]", output.to.stream, output.context, output.context); + fl_print_format("%[%un%]", output.to.stream, output.notable, cache.line_action, output.notable); + fl_print_format("%[ for ", output.to.stream, output.context); } if (cache.name_item.used) { - fl_print_string("rule %s '%]", output.to.stream, output.context, item ? controller_string_item_s : controller_string_setting_s, output.context); - fl_print_string("%[%Q%]", output.to.stream, output.notable, cache.name_item, output.notable); - fl_print_string("%[ on line %]", output.to.stream, output.context, output.context); - fl_print_string("%[%ul%]", output.to.stream, output.notable, cache.line_item, output.notable); - fl_print_string("%[ for ", output.to.stream, output.context); + fl_print_format("rule %s '%]", output.to.stream, output.context, item ? controller_string_item_s : controller_string_setting_s, output.context); + fl_print_format("%[%Q%]", output.to.stream, output.notable, cache.name_item, output.notable); + fl_print_format("%[ on line %]", output.to.stream, output.context, output.context); + fl_print_format("%[%un%]", output.to.stream, output.notable, cache.line_item, output.notable); + fl_print_format("%[ for ", output.to.stream, output.context); } if (cache.name_file.used) { - fl_print_string("rule file '%]%[%Q%]%['", output.to.stream, output.context, output.notable, cache.name_file, output.notable, output.context); + fl_print_format("rule file '%]%[%Q%]%['", output.to.stream, output.context, output.notable, cache.name_file, output.notable, output.context); } - fl_print_string(".%]%c", output.to.stream, output.context, f_string_eol_s[0]); + fl_print_format(".%]%c", output.to.stream, output.context, f_string_eol_s[0]); } } #endif // _di_controller_rule_error_print_cache_ @@ -737,11 +737,11 @@ extern "C" { if (output.verbosity != f_console_verbosity_quiet) { flockfile(output.to.stream); - fl_print_string("%c%[%SThe %s '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, script_is ? controller_string_script_s : controller_string_program_s, output.context); - fl_print_string("%[%S%]", output.to.stream, output.notable, name, output.notable); + fl_print_format("%c%[%SThe %s '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, script_is ? controller_string_script_s : controller_string_program_s, output.context); + fl_print_format("%[%S%]", output.to.stream, output.notable, name, output.notable); if (status == F_control_group || status == F_limit || status == F_processor || status == F_schedule) { - fl_print_string("%[' failed due to a failure to setup the '%]", output.to.stream, output.context, output.context); + fl_print_format("%[' failed due to a failure to setup the '%]", output.to.stream, output.context, output.context); fl_print_color_before(output.notable, output.to.stream); if (status == F_control_group) { @@ -758,15 +758,15 @@ extern "C" { } fl_print_color_after(output.notable, output.to.stream); - fl_print_string("%['.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); + fl_print_format("%['.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); } else if (code) { - fl_print_string("%[' failed with the exit code '%]", output.to.stream, output.context, output.context); - fl_print_string("%[%i%]", output.to.stream, output.notable, code, output.notable); - fl_print_string("%['.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); + fl_print_format("%[' failed with the exit code '%]", output.to.stream, output.context, output.context); + fl_print_format("%[%i%]", output.to.stream, output.notable, code, output.notable); + fl_print_format("%['.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); } else { - fl_print_string("%[' failed.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); + fl_print_format("%[' failed.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); } funlockfile(output.to.stream); @@ -780,9 +780,9 @@ extern "C" { if (output.verbosity != f_console_verbosity_quiet) { flockfile(output.to.stream); - fl_print_string("%c%[%SThe %s '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, script_is ? controller_string_script_s : controller_string_program_s, output.context); - fl_print_string("%[%S%]", output.to.stream, output.notable, name, output.notable); - fl_print_string("%[' could not be executed because it was not found.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, script_is ? controller_string_script_s : controller_string_program_s, output.context); + fl_print_format("%[%S%]", output.to.stream, output.notable, name, output.notable); + fl_print_format("%[' could not be executed because it was not found.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); funlockfile(output.to.stream); } @@ -795,9 +795,9 @@ extern "C" { if (output.verbosity != f_console_verbosity_quiet) { flockfile(output.to.stream); - fl_print_string("%c%[%SThe %s rule '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, need_want_wish, output.context); - fl_print_string("%[%S%]", output.to.stream, output.notable, value, output.notable); - fl_print_string("%[' %S.%]%c", output.to.stream, output.context, why, output.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe %s rule '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, need_want_wish, output.context); + fl_print_format("%[%S%]", output.to.stream, output.notable, value, output.notable); + fl_print_format("%[' %S.%]%c", output.to.stream, output.context, why, output.context, f_string_eol_s[0]); funlockfile(output.to.stream); } @@ -810,9 +810,9 @@ extern "C" { if (output.verbosity != f_console_verbosity_quiet) { flockfile(output.to.stream); - fl_print_string("%c%[%SThe rule '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, output.context); - fl_print_string("%[%S%]", output.to.stream, output.notable, alias, output.notable); - fl_print_string("%[' is no longer loaded.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe rule '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, output.context); + fl_print_format("%[%S%]", output.to.stream, output.notable, alias, output.notable); + fl_print_format("%[' is no longer loaded.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); funlockfile(output.to.stream); } @@ -825,9 +825,9 @@ extern "C" { if (output.verbosity != f_console_verbosity_quiet) { flockfile(output.to.stream); - fl_print_string("%c%[%SThe rule '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, output.context); - fl_print_string("%[%S%]", output.to.stream, output.notable, alias, output.notable); - fl_print_string("%[' is not designating a pid file.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe rule '%]", output.to.stream, f_string_eol_s[0], output.context, output.prefix, output.context); + fl_print_format("%[%S%]", output.to.stream, output.notable, alias, output.notable); + fl_print_format("%[' is not designating a pid file.%]%c", output.to.stream, output.context, output.context, f_string_eol_s[0]); funlockfile(output.to.stream); } @@ -1069,7 +1069,7 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SAction type is unknown, ignoring.%]%c", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SAction type is unknown, ignoring.%]%c", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->warning, process->cache.action, F_true); @@ -1164,7 +1164,7 @@ extern "C" { flockfile(global.main->output.stream); - fl_print_string("%cSimulating execution of '%[", global.main->output.stream, f_string_eol_s[0], global.main->context.set.title); + fl_print_format("%cSimulating execution of '%[", global.main->output.stream, f_string_eol_s[0], global.main->context.set.title); if (program) { f_print_safely_terminated(program, global.main->output.stream); @@ -1173,7 +1173,7 @@ extern "C" { f_print_dynamic_safely(arguments.array[0], global.main->output.stream); } - fl_print_string("%]' with the arguments: '%[", global.main->output.stream, global.main->context.set.title, global.main->context.set.important); + fl_print_format("%]' with the arguments: '%[", global.main->output.stream, global.main->context.set.title, global.main->context.set.important); for (f_array_length_t i = program ? 0 : 1; i < arguments.used; ++i) { @@ -1184,8 +1184,8 @@ extern "C" { f_print_dynamic_safely(arguments.array[i], global.main->output.stream); } // for - fl_print_string("%]' from '", global.main->output.stream, global.main->context.set.important); - fl_print_string("%[%Q%]'.%c", global.main->output.stream, global.main->context.set.notable, process->rule.name, global.main->context.set.notable, f_string_eol_s[0]); + fl_print_format("%]' from '", global.main->output.stream, global.main->context.set.important); + fl_print_format("%[%Q%]'.%c", global.main->output.stream, global.main->context.set.notable, process->rule.name, global.main->context.set.notable, f_string_eol_s[0]); funlockfile(global.main->output.stream); @@ -1421,7 +1421,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%cSimulating execution of '%[", global.main->error.to.stream, f_string_eol_s[0], global.main->context.set.title); + fl_print_format("%cSimulating execution of '%[", global.main->error.to.stream, f_string_eol_s[0], global.main->context.set.title); if (program) { f_print_safely_terminated(program, global.main->error.to.stream); @@ -1430,7 +1430,7 @@ extern "C" { f_print_dynamic_safely(arguments.array[0], global.main->error.to.stream); } - fl_print_string("%]' with the arguments: '%[", global.main->error.to.stream, global.main->context.set.title, global.main->context.set.important); + fl_print_format("%]' with the arguments: '%[", global.main->error.to.stream, global.main->context.set.title, global.main->context.set.important); for (f_array_length_t i = program ? 0 : 1; i < arguments.used; ++i) { @@ -1441,8 +1441,8 @@ extern "C" { f_print_dynamic_safely(arguments.array[i], global.main->error.to.stream); } // for - fl_print_string("%]' from '", global.main->error.to.stream, global.main->context.set.important); - fl_print_string("%[%Q%]'.%c", global.main->error.to.stream, global.main->context.set.notable, process->rule.name, global.main->context.set.notable, f_string_eol_s[0]); + fl_print_format("%]' from '", global.main->error.to.stream, global.main->context.set.important); + fl_print_format("%[%Q%]'.%c", global.main->error.to.stream, global.main->context.set.notable, process->rule.name, global.main->context.set.notable, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -1762,9 +1762,9 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SUnknown rule item action '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); - fl_print_string("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); - fl_print_string("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnknown rule item action '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); + fl_print_format("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_action, global.main->warning.notable); + fl_print_format("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->warning, cache->action, F_true); @@ -1784,9 +1784,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SFSS Extended List is not allowed for the rule item action '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->action.name_action, global.main->error.notable); - fl_print_string("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFSS Extended List is not allowed for the rule item action '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->action.name_action, global.main->error.notable); + fl_print_format("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -1991,9 +1991,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SUnsupported action type '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%q%]", global.main->error.to.stream, global.main->error.notable, controller_rule_action_type_name(process->action), global.main->error.notable); - fl_print_string("%[' while attempting to execute rule.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnsupported action type '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%q%]", global.main->error.to.stream, global.main->error.notable, controller_rule_action_type_name(process->action), global.main->error.notable); + fl_print_format("%[' while attempting to execute rule.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, process->cache.action, F_true); @@ -2421,11 +2421,11 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe rule '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, process->rule.name, global.main->error.notable); - fl_print_string("%[' has no '%]", global.main->error.to.stream, global.main->error.context, process->rule.name, global.main->error.context); - fl_print_string("%[%q%]", global.main->error.to.stream, global.main->error.notable, controller_rule_action_type_name(process->action), global.main->error.notable); - fl_print_string("%[' action to execute.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe rule '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, process->rule.name, global.main->error.notable); + fl_print_format("%[' has no '%]", global.main->error.to.stream, global.main->error.context, process->rule.name, global.main->error.context); + fl_print_format("%[%q%]", global.main->error.to.stream, global.main->error.notable, controller_rule_action_type_name(process->action), global.main->error.notable); + fl_print_format("%[' action to execute.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, process->cache.action, F_true); @@ -2868,9 +2868,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe rule '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, process->rule.alias, global.main->error.notable); - fl_print_string("%[' is already on the execution dependency stack, this recursion is prohibited.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe rule '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, process->rule.alias, global.main->error.notable); + fl_print_format("%[' is already on the execution dependency stack, this recursion is prohibited.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, process->cache.action, F_true); @@ -3246,9 +3246,9 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SUnknown rule item '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); - fl_print_string("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_item, global.main->warning.notable); - fl_print_string("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnknown rule item '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); + fl_print_format("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_item, global.main->warning.notable); + fl_print_format("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->warning, cache->action, F_true); @@ -3448,9 +3448,9 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SUnknown rule setting '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); - fl_print_string("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_item, global.main->warning.notable); - fl_print_string("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnknown rule setting '%]", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context); + fl_print_format("%[%Q%]", global.main->warning.to.stream, global.main->warning.notable, cache->action.name_item, global.main->warning.notable); + fl_print_format("%['.%]%c", global.main->warning.to.stream, global.main->warning.context, global.main->warning.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->warning, cache->action, F_false); @@ -3475,7 +3475,7 @@ extern "C" { flockfile(global.main->warning.to.stream); - fl_print_string("%c%[%SEmpty rule setting.%]%c", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context, f_string_eol_s[0]); + fl_print_format("%c%[%SEmpty rule setting.%]%c", global.main->warning.to.stream, f_string_eol_s[0], global.main->warning.context, global.main->warning.prefix, global.main->warning.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->warning, cache->action, F_false); @@ -3541,7 +3541,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires one or more Content.%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires one or more Content.%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -3605,14 +3605,14 @@ extern "C" { flockfile(global.main->error.to.stream); if (status == F_number_overflow || status == F_number_underflow) { - fl_print_string("%c%[%SRule setting has an unsupported number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); - fl_print_string("%[', the number is too large for this system.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an unsupported number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); + fl_print_format("%[', the number is too large for this system.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); } else { - fl_print_string("%c%[%SRule setting has an invalid number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); - fl_print_string("%[' only whole numbers are allowed for an affinity value.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); + fl_print_format("%[' only whole numbers are allowed for an affinity value.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); } controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -3662,7 +3662,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires exactly two Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires exactly two Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -3785,7 +3785,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires two or more Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires two or more Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); // get the current line number within the settings item. cache->action.line_item = line_item; @@ -3826,9 +3826,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an unknown option '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); - fl_print_string("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an unknown option '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); + fl_print_format("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -3919,7 +3919,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires three Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires three Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -3996,9 +3996,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SUnknown resource limit type '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->action.name_action, global.main->error.notable); - fl_print_string("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnknown resource limit type '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, cache->action.name_action, global.main->error.notable); + fl_print_format("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_true); @@ -4029,7 +4029,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe resource limit type is already specified%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe resource limit type is already specified%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4097,14 +4097,14 @@ extern "C" { flockfile(global.main->error.to.stream); if (status == F_number_overflow || status == F_number_underflow) { - fl_print_string("%c%[%SRule setting has an unsupported number'%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%S%]", global.main->error.to.stream, global.main->error.notable, cache->content_actions.array[i].array[j], global.main->error.notable); - fl_print_string("%[' the number is too large for this system.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an unsupported number'%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%S%]", global.main->error.to.stream, global.main->error.notable, cache->content_actions.array[i].array[j], global.main->error.notable); + fl_print_format("%[' the number is too large for this system.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); } else { - fl_print_string("%c%[%SRule setting has an invalid number'%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%S%]", global.main->error.to.stream, global.main->error.notable, cache->content_actions.array[i].array[j], global.main->error.notable); - fl_print_string("%[' only whole numbers are allowed for a resource limit value.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid number'%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%S%]", global.main->error.to.stream, global.main->error.notable, cache->content_actions.array[i].array[j], global.main->error.notable); + fl_print_format("%[' only whole numbers are allowed for a resource limit value.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); } controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4173,7 +4173,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires exactly one Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires exactly one Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4234,9 +4234,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid name '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, *setting_value, global.main->error.notable); - fl_print_string("%[', there must be at least 1 graph character.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid name '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, *setting_value, global.main->error.notable); + fl_print_format("%[', there must be at least 1 graph character.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4323,7 +4323,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires either one or two Content.'%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires either one or two Content.'%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4376,9 +4376,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an unknown scheduler '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); - fl_print_string("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an unknown scheduler '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); + fl_print_format("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4418,20 +4418,20 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[1], global.main->error.notable); + fl_print_format("%c%[%SRule setting has an invalid number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[1], global.main->error.notable); if (zero_only) { - fl_print_string("%[', only%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[0%]%[ is", global.main->error.to.stream, global.main->error.notable, global.main->error.notable, global.main->error.context); + fl_print_format("%[', only%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[0%]%[ is", global.main->error.to.stream, global.main->error.notable, global.main->error.notable, global.main->error.context); } else { - fl_print_string("%[', only the whole numbers inclusively between%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[1%] %[and%] ", global.main->error.to.stream, global.main->error.notable, global.main->error.notable, global.main->error.context, global.main->error.context); - fl_print_string("%[99%] %[are", global.main->error.to.stream, global.main->error.notable, global.main->error.notable, global.main->error.context); + fl_print_format("%[', only the whole numbers inclusively between%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[1%] %[and%] ", global.main->error.to.stream, global.main->error.notable, global.main->error.notable, global.main->error.context, global.main->error.context); + fl_print_format("%[99%] %[are", global.main->error.to.stream, global.main->error.notable, global.main->error.notable, global.main->error.context); } - fl_print_string(" allowed for the designated scheduler.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format(" allowed for the designated scheduler.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4480,7 +4480,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires exactly one Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires exactly one Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4590,7 +4590,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting failed to process the capabilities.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting failed to process the capabilities.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4628,13 +4628,13 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); - fl_print_string("%[', only the whole numbers inclusively between%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[-20%]", global.main->error.to.stream, global.main->error.notable, global.main->error.notable); - fl_print_string(" %[and%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); - fl_print_string("%[19%]", global.main->error.to.stream, global.main->error.notable, global.main->error.notable); - fl_print_string(" %[are allowed.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid number '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); + fl_print_format("%[', only the whole numbers inclusively between%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[-20%]", global.main->error.to.stream, global.main->error.notable, global.main->error.notable); + fl_print_format(" %[and%] ", global.main->error.to.stream, global.main->error.context, global.main->error.context); + fl_print_format("%[19%]", global.main->error.to.stream, global.main->error.notable, global.main->error.notable); + fl_print_format(" %[are allowed.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4681,9 +4681,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid user '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); - fl_print_string("%[' because no user was found by that name.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid user '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); + fl_print_format("%[' because no user was found by that name.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -4696,9 +4696,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid user '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); - fl_print_string("%[' because the given ID is too large.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid user '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); + fl_print_format("%[' because the given ID is too large.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -4711,9 +4711,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid user '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); - fl_print_string("%[' because the given ID is not a valid supported number.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid user '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[0], global.main->error.notable); + fl_print_format("%[' because the given ID is not a valid supported number.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -4753,7 +4753,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires one or more Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires one or more Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -4811,9 +4811,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid group '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); - fl_print_string("%[' because no group was found by that name.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid group '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); + fl_print_format("%[' because no group was found by that name.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -4826,9 +4826,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid group '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); - fl_print_string("%[' because the given ID is too large.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid group '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); + fl_print_format("%[' because the given ID is too large.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -4841,9 +4841,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid group '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); - fl_print_string("%[' because the given ID is not a valid supported number.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid group '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[j], global.main->error.notable); + fl_print_format("%[' because the given ID is not a valid supported number.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -4965,9 +4965,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting has an invalid environment variable name '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, global.main->error.notable, setting_values->array[setting_values->used], global.main->error.notable); - fl_print_string("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting has an invalid environment variable name '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, global.main->error.notable, setting_values->array[setting_values->used], global.main->error.notable); + fl_print_format("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -5018,7 +5018,7 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting requires exactly four Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting requires exactly four Content.%]%c", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -5075,10 +5075,10 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting's first value has '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[1], global.main->error.notable); - fl_print_string("%[' but only supports %s, %s, %s, %s, %s", global.main->error.to.stream, global.main->error.context, controller_string_freeze_s, controller_string_kill_s, controller_string_pause_s, controller_string_reload_s, controller_string_restart_s); - fl_print_string("%s, %s, %s, and %s.%]%c", global.main->error.to.stream, controller_string_resume_s, controller_string_start_s, controller_string_stop_s, controller_string_thaw_s, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting's first value has '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[1], global.main->error.notable); + fl_print_format("%[' but only supports %s, %s, %s, %s, %s", global.main->error.to.stream, global.main->error.context, controller_string_freeze_s, controller_string_kill_s, controller_string_pause_s, controller_string_reload_s, controller_string_restart_s); + fl_print_format("%s, %s, %s, and %s.%]%c", global.main->error.to.stream, controller_string_resume_s, controller_string_start_s, controller_string_stop_s, controller_string_thaw_s, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -5128,9 +5128,9 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SRule setting's second value has '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[1], global.main->error.notable); - fl_print_string("%[' but only supports %s, %s, and %s.%s.%]%c", global.main->error.to.stream, global.main->error.context, controller_string_need_s, controller_string_want_s, controller_string_wish_s, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SRule setting's second value has '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[1], global.main->error.notable); + fl_print_format("%[' but only supports %s, %s, and %s.%s.%]%c", global.main->error.to.stream, global.main->error.context, controller_string_need_s, controller_string_want_s, controller_string_wish_s, global.main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(global.main->error, cache->action, F_false); @@ -5227,11 +5227,11 @@ extern "C" { flockfile(global.main->error.to.stream); - fl_print_string("%c%[%SThe rule item action third parameter '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); - fl_print_string("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[2], global.main->error.notable); - fl_print_string("%[' must be a base path name, such as %ul '.%]", global.main->error.to.stream, global.main->error.context, cache->buffer_path.used, global.main->error.context); - fl_print_string("%[%Q%]", global.main->error.to.stream, cache->buffer_path, global.main->error.notable); - fl_print_string("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe rule item action third parameter '%]", global.main->error.to.stream, f_string_eol_s[0], global.main->error.context, global.main->error.prefix, global.main->error.context); + fl_print_format("%[%/Q%]", global.main->error.to.stream, global.main->error.notable, cache->buffer_item, cache->content_actions.array[i].array[2], global.main->error.notable); + fl_print_format("%[' must be a base path name, such as %un '.%]", global.main->error.to.stream, global.main->error.context, cache->buffer_path.used, global.main->error.context); + fl_print_format("%[%Q%]", global.main->error.to.stream, cache->buffer_path, global.main->error.notable); + fl_print_format("%['.%]%c", global.main->error.to.stream, global.main->error.context, global.main->error.context, f_string_eol_s[0]); funlockfile(global.main->error.to.stream); @@ -5288,9 +5288,9 @@ extern "C" { if (main->error.verbosity != f_console_verbosity_quiet) { flockfile(main->error.to.stream); - fl_print_string("%c%[%SUnsupported action type '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%q%]", main->error.to.stream, main->error.notable, controller_rule_action_type_name(action), main->error.notable); - fl_print_string("%[' while attempting to validate rule execution.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SUnsupported action type '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%q%]", main->error.to.stream, main->error.notable, controller_rule_action_type_name(action), main->error.notable); + fl_print_format("%[' while attempting to validate rule execution.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); controller_rule_error_print_cache(main->error, cache->action, F_true); @@ -5323,11 +5323,11 @@ extern "C" { if (missing) { flockfile(main->output.stream); - fl_print_string("%cRule '", main->output.stream, f_string_eol_s[0]); - fl_print_string("%[%Q%]' has no '", main->output.stream, main->context.set.title, rule.name, main->context.set.title); - fl_print_string("%[%q%]' action to execute and would '", main->output.stream, main->context.set.title, controller_rule_action_type_name(action), main->context.set.title); - fl_print_string("%[%s%]' because it is '", main->output.stream, main->context.set.important, options & controller_process_option_require ? controller_string_fail_s : controller_string_succeed_s, main->context.set.important); - fl_print_string("%[%s%]'.%c", main->output.stream, main->context.set.important, options & controller_process_option_require ? controller_string_required_s : controller_string_optional_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format("%cRule '", main->output.stream, f_string_eol_s[0]); + fl_print_format("%[%Q%]' has no '", main->output.stream, main->context.set.title, rule.name, main->context.set.title); + fl_print_format("%[%q%]' action to execute and would '", main->output.stream, main->context.set.title, controller_rule_action_type_name(action), main->context.set.title); + fl_print_format("%[%s%]' because it is '", main->output.stream, main->context.set.important, options & controller_process_option_require ? controller_string_fail_s : controller_string_succeed_s, main->context.set.important); + fl_print_format("%[%s%]'.%c", main->output.stream, main->context.set.important, options & controller_process_option_require ? controller_string_required_s : controller_string_optional_s, main->context.set.important, f_string_eol_s[0]); funlockfile(main->output.stream); } @@ -5335,11 +5335,11 @@ extern "C" { flockfile(main->output.stream); - fl_print_string("%cRule %[%Q%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.title, rule.alias, main->context.set.title, f_string_eol_s[0]); - fl_print_string(" %[%s%] %Q%c", main->output.stream, main->context.set.important, controller_string_name_s, main->context.set.important, rule.name, f_string_eol_s[0]); - fl_print_string(" %[%s%] %s%c", main->output.stream, main->context.set.important, controller_string_how_s, main->context.set.important, options & controller_process_option_asynchronous ? controller_string_asynchronous_s : controller_string_synchronous_s, f_string_eol_s[0]); - fl_print_string(" %[%s%] %s%c", main->output.stream, main->context.set.important, controller_string_wait_s, main->context.set.important, options & controller_process_option_wait ? controller_string_yes : controller_string_no_s, f_string_eol_s[0]); - fl_print_string(" %[%s%] ", main->output.stream, main->context.set.important, controller_string_capability_s, main->context.set.important); + fl_print_format("%cRule %[%Q%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.title, rule.alias, main->context.set.title, f_string_eol_s[0]); + fl_print_format(" %[%s%] %Q%c", main->output.stream, main->context.set.important, controller_string_name_s, main->context.set.important, rule.name, f_string_eol_s[0]); + fl_print_format(" %[%s%] %s%c", main->output.stream, main->context.set.important, controller_string_how_s, main->context.set.important, options & controller_process_option_asynchronous ? controller_string_asynchronous_s : controller_string_synchronous_s, f_string_eol_s[0]); + fl_print_format(" %[%s%] %s%c", main->output.stream, main->context.set.important, controller_string_wait_s, main->context.set.important, options & controller_process_option_wait ? controller_string_yes : controller_string_no_s, f_string_eol_s[0]); + fl_print_format(" %[%s%] ", main->output.stream, main->context.set.important, controller_string_capability_s, main->context.set.important); if (f_capability_supported()) { if (rule.capability) { @@ -5353,29 +5353,29 @@ extern "C" { f_print_terminated(f_string_eol_s, main->output.stream); } else { - fl_print_string("%[(unsupported)%]%c", main->output.stream, main->context.set.warning, controller_string_capability_s, main->context.set.warning, f_string_eol_s[0]); + fl_print_format("%[(unsupported)%]%c", main->output.stream, main->context.set.warning, controller_string_capability_s, main->context.set.warning, f_string_eol_s[0]); } - fl_print_string(" %[%s%]", main->output.stream, main->context.set.important, controller_string_control_group_s, main->context.set.important); + fl_print_format(" %[%s%]", main->output.stream, main->context.set.important, controller_string_control_group_s, main->context.set.important); if (rule.has & controller_rule_has_control_group) { - fl_print_string(" %s", main->output.stream, rule.control_group.as_new ? controller_string_new_s : controller_string_existing_s); + fl_print_format(" %s", main->output.stream, rule.control_group.as_new ? controller_string_new_s : controller_string_existing_s); for (i = 0; i < rule.control_group.groups.used; ++i) { if (rule.control_group.groups.array[i].used) { - fl_print_string(" %Q", main->output.stream, rule.control_group.groups.array[i]); + fl_print_format(" %Q", main->output.stream, rule.control_group.groups.array[i]); } } // for } - fl_print_string("%c %[%s%]", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_nice_s, main->context.set.important); + fl_print_format("%c %[%s%]", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_nice_s, main->context.set.important); if (rule.has & controller_rule_has_nice) { - fl_print_string(" %i", main->output.stream, rule.nice); + fl_print_format(" %i", main->output.stream, rule.nice); } - fl_print_string("%c %[%s%]", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_scheduler_s, main->context.set.important); + fl_print_format("%c %[%s%]", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_scheduler_s, main->context.set.important); if (rule.has & controller_rule_has_scheduler) { f_string_t policy = ""; @@ -5399,70 +5399,70 @@ extern "C" { policy = controller_string_round_robin_s; } - fl_print_string(" %s %i", main->output.stream, policy, rule.scheduler.priority); + fl_print_format(" %s %i", main->output.stream, policy, rule.scheduler.priority); } - fl_print_string("%c %[%s%] %Q%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_script_s, main->context.set.important, rule.script, f_string_eol_s[0]); - fl_print_string(" %[%s%]", main->output.stream, main->context.set.important, controller_string_user_s, main->context.set.important); + fl_print_format("%c %[%s%] %Q%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_script_s, main->context.set.important, rule.script, f_string_eol_s[0]); + fl_print_format(" %[%s%]", main->output.stream, main->context.set.important, controller_string_user_s, main->context.set.important); if (rule.has & controller_rule_has_user) { - fl_print_string(" %i", main->output.stream, rule.user); + fl_print_format(" %i", main->output.stream, rule.user); } - fl_print_string("%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_affinity_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format("%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_affinity_s, main->context.set.important, f_string_eol_s[0]); for (i = 0; i < rule.affinity.used; ++i) { - fl_print_string(" %i%c", main->output.stream, rule.affinity.array[i], f_string_eol_s[0]); + fl_print_format(" %i%c", main->output.stream, rule.affinity.array[i], f_string_eol_s[0]); } // for - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_define_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_define_s, main->context.set.important, f_string_eol_s[0]); for (i = 0; i < rule.define.used; ++i) { if (rule.define.array[i].name.used && rule.define.array[i].value.used) { - fl_print_string(" %Q %[=%] %Q%c", main->output.stream, rule.define.array[i].name, main->context.set.important, main->context.set.important, rule.define.array[i].value, f_string_eol_s[0]); + fl_print_format(" %Q %[=%] %Q%c", main->output.stream, rule.define.array[i].name, main->context.set.important, main->context.set.important, rule.define.array[i].value, f_string_eol_s[0]); } } // for - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_environment_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_environment_s, main->context.set.important, f_string_eol_s[0]); for (i = 0; i < rule.environment.used; ++i) { if (rule.environment.array[i].used) { - fl_print_string(" %Q%c", main->output.stream, rule.environment.array[i], f_string_eol_s[0]); + fl_print_format(" %Q%c", main->output.stream, rule.environment.array[i], f_string_eol_s[0]); } } // for - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_parameter_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_parameter_s, main->context.set.important, f_string_eol_s[0]); for (i = 0; i < rule.parameter.used; ++i) { if (rule.parameter.array[i].name.used && rule.parameter.array[i].value.used) { - fl_print_string(" %Q %[=%] %Q%c", main->output.stream, rule.parameter.array[i].name, main->context.set.important, main->context.set.important, rule.parameter.array[i].value, f_string_eol_s[0]); + fl_print_format(" %Q %[=%] %Q%c", main->output.stream, rule.parameter.array[i].name, main->context.set.important, main->context.set.important, rule.parameter.array[i].value, f_string_eol_s[0]); } } // for - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_group_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_group_s, main->context.set.important, f_string_eol_s[0]); if (rule.has & controller_rule_has_group) { - fl_print_string(" %i%c", main->output.stream, rule.group, f_string_eol_s[0]); + fl_print_format(" %i%c", main->output.stream, rule.group, f_string_eol_s[0]); for (i = 0; i < rule.groups.used; ++i) { - fl_print_string(" %i%c", main->output.stream, rule.groups.array[i], f_string_eol_s[0]); + fl_print_format(" %i%c", main->output.stream, rule.groups.array[i], f_string_eol_s[0]); } // for } - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_limit_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_limit_s, main->context.set.important, f_string_eol_s[0]); for (i = 0; i < rule.limits.used; ++i) { - fl_print_string(" %Q %[=%] %ul %ul%c", main->output.stream, controller_rule_setting_limit_type_name(rule.limits.array[i].type), main->context.set.important, main->context.set.important, rule.limits.array[i].value.rlim_cur, rule.limits.array[i].value.rlim_max, f_string_eol_s[0]); + fl_print_format(" %Q %[=%] %un %un%c", main->output.stream, controller_rule_setting_limit_type_name(rule.limits.array[i].type), main->context.set.important, main->context.set.important, rule.limits.array[i].value.rlim_cur, rule.limits.array[i].value.rlim_max, f_string_eol_s[0]); } // for - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_on_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_on_s, main->context.set.important, f_string_eol_s[0]); for (i = 0; i < rule.ons.used; ++i) { - fl_print_string(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_action_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_action_s, main->context.set.important, f_string_eol_s[0]); { f_string_t action = ""; @@ -5495,40 +5495,40 @@ extern "C" { action = controller_string_thaw_s; } - fl_print_string(" %[%s%] %s%c", main->output.stream, main->context.set.important, controller_string_type_s, main->context.set.important, action, f_string_eol_s[0]); + fl_print_format(" %[%s%] %s%c", main->output.stream, main->context.set.important, controller_string_type_s, main->context.set.important, action, f_string_eol_s[0]); } - fl_print_string(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_need_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_need_s, main->context.set.important, f_string_eol_s[0]); for (j = 0; j < rule.ons.array[i].need.used; ++j) { if (rule.ons.array[i].need.array[j].used) { - fl_print_string(" %Q%c", main->output.stream, rule.ons.array[i].need.array[j], f_string_eol_s[0]); + fl_print_format(" %Q%c", main->output.stream, rule.ons.array[i].need.array[j], f_string_eol_s[0]); } } // for - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_want_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_want_s, main->context.set.important, f_string_eol_s[0]); for (j = 0; j < rule.ons.array[i].want.used; ++j) { if (rule.ons.array[i].want.array[j].used) { - fl_print_string(" %Q%c", main->output.stream, rule.ons.array[i].want.array[j], f_string_eol_s[0]); + fl_print_format(" %Q%c", main->output.stream, rule.ons.array[i].want.array[j], f_string_eol_s[0]); } } // for - fl_print_string(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_wish_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" }%c %[%s%] {%c", main->output.stream, f_string_eol_s[0], main->context.set.important, controller_string_wish_s, main->context.set.important, f_string_eol_s[0]); for (j = 0; j < rule.ons.array[i].wish.used; ++j) { if (rule.ons.array[i].wish.array[j].used) { - fl_print_string(" %Q%c", main->output.stream, rule.ons.array[i].wish.array[j], f_string_eol_s[0]); + fl_print_format(" %Q%c", main->output.stream, rule.ons.array[i].wish.array[j], f_string_eol_s[0]); } } // for - fl_print_string(" }%c }%c", main->output.stream, f_string_eol_s[0], f_string_eol_s[0]); + fl_print_format(" }%c }%c", main->output.stream, f_string_eol_s[0], f_string_eol_s[0]); } // for - fl_print_string(" }%c", main->output.stream, f_string_eol_s[0]); + fl_print_format(" }%c", main->output.stream, f_string_eol_s[0]); if (rule.items.used) { controller_rule_action_t *action = 0; @@ -5542,18 +5542,18 @@ extern "C" { item = &rule.items.array[i]; - fl_print_string(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_item_s, main->context.set.important, f_string_eol_s[0]); - fl_print_string(" %[%s%] %Q%c", main->output.stream, main->context.set.important, controller_string_type_s, main->context.set.important, controller_rule_item_type_name(item->type), f_string_eol_s[0]); + fl_print_format(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_item_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" %[%s%] %Q%c", main->output.stream, main->context.set.important, controller_string_type_s, main->context.set.important, controller_rule_item_type_name(item->type), f_string_eol_s[0]); for (j = 0; j < item->actions.used; ++j) { action = &item->actions.array[j]; - fl_print_string(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_action_s, main->context.set.important, f_string_eol_s[0]); - fl_print_string(" %[%s%] %q%c", main->output.stream, main->context.set.important, controller_string_type_s, main->context.set.important, controller_rule_action_type_name(action->type), f_string_eol_s[0]); + fl_print_format(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_action_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" %[%s%] %q%c", main->output.stream, main->context.set.important, controller_string_type_s, main->context.set.important, controller_rule_action_type_name(action->type), f_string_eol_s[0]); if (item->type == controller_rule_item_type_script || item->type == controller_rule_item_type_utility) { - fl_print_string(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_parameter_s, main->context.set.important, f_string_eol_s[0]); + fl_print_format(" %[%s%] {%c", main->output.stream, main->context.set.important, controller_string_parameter_s, main->context.set.important, f_string_eol_s[0]); parameter = &action->parameters.array[0]; @@ -5576,22 +5576,22 @@ extern "C" { f_print_terminated(f_string_eol_s, main->output.stream); } - fl_print_string(" }%c", main->output.stream, f_string_eol_s[0]); + fl_print_format(" }%c", main->output.stream, f_string_eol_s[0]); } else { for (k = 0; k < action->parameters.used; ++k) { - fl_print_string(" %s%s%s %Q%c", main->output.stream, main->context.set.important, controller_string_parameter_s, main->context.set.important, action->parameters.array[k], f_string_eol_s[0]); + fl_print_format(" %s%s%s %Q%c", main->output.stream, main->context.set.important, controller_string_parameter_s, main->context.set.important, action->parameters.array[k], f_string_eol_s[0]); } // for } - fl_print_string(" }%c", main->output.stream, f_string_eol_s[0]); + fl_print_format(" }%c", main->output.stream, f_string_eol_s[0]); } // for - fl_print_string(" }%c", main->output.stream, f_string_eol_s[0]); + fl_print_format(" }%c", main->output.stream, f_string_eol_s[0]); } // for } - fl_print_string("}%c", main->output.stream, f_string_eol_s[0]); + fl_print_format("}%c", main->output.stream, f_string_eol_s[0]); funlockfile(main->output.stream); diff --git a/level_3/controller/c/private-thread.c b/level_3/controller/c/private-thread.c index cedb48c..48eaca8 100644 --- a/level_3/controller/c/private-thread.c +++ b/level_3/controller/c/private-thread.c @@ -231,9 +231,9 @@ extern "C" { flockfile(main->error.to.stream); - fl_print_string("%c%[%SThe pid file '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%S%]", main->error.to.stream, main->error.notable, setting->path_pid.string, main->error.notable); - fl_print_string("%[' must not already exist.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe pid file '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%S%]", main->error.to.stream, main->error.notable, setting->path_pid.string, main->error.notable); + fl_print_format("%[' must not already exist.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -727,9 +727,9 @@ extern "C" { flockfile(main->error.to.stream); - fl_print_string("%c%[%SThe pid file '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%Q%]", main->error.to.stream, main->error.notable, entry->setting->path_pid, main->error.notable); - fl_print_string("%[' must not already exist.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SThe pid file '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%Q%]", main->error.to.stream, main->error.notable, entry->setting->path_pid, main->error.notable); + fl_print_format("%[' must not already exist.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -771,9 +771,9 @@ extern "C" { flockfile(main->error.to.stream); - fl_print_string("%c%[%SFailed while processing requested failsafe item '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%Q%]", main->error.to.stream, main->error.notable, entry->global->setting->entry.items.array[entry->global->setting->failsafe_enabled].name, main->error.notable); - fl_print_string("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFailed while processing requested failsafe item '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%Q%]", main->error.to.stream, main->error.notable, entry->global->setting->entry.items.array[entry->global->setting->failsafe_enabled].name, main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); @@ -884,9 +884,9 @@ extern "C" { flockfile(main->error.to.stream); - fl_print_string("%c%[%SFailed while processing requested failsafe item '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); - fl_print_string("%[%Q%]", main->error.to.stream, main->error.notable, entry->global->setting->entry.items.array[entry->global->setting->failsafe_enabled].name, main->error.notable); - fl_print_string("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%c%[%SFailed while processing requested failsafe item '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix ? main->error.prefix : f_string_empty_s, main->error.context); + fl_print_format("%[%Q%]", main->error.to.stream, main->error.notable, entry->global->setting->entry.items.array[entry->global->setting->failsafe_enabled].name, main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); funlockfile(main->error.to.stream); diff --git a/level_3/fake/c/fake.c b/level_3/fake/c/fake.c index 2b1bc06..240ba0d 100644 --- a/level_3/fake/c/fake.c +++ b/level_3/fake/c/fake.c @@ -14,6 +14,8 @@ extern "C" { #ifndef _di_fake_print_help_ f_status_t fake_print_help(const f_file_t output, const f_color_context_t context) { + flockfile(output.stream); + fll_program_print_help_header(output, context, fake_name_long, fake_version); fll_program_print_help_option(output, context, f_console_standard_short_help_s, f_console_standard_long_help_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Print this help message."); @@ -26,7 +28,7 @@ extern "C" { fll_program_print_help_option(output, context, f_console_standard_short_debug_s, f_console_standard_long_debug_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Enable debugging, inceasing verbosity beyond normal output."); fll_program_print_help_option(output, context, f_console_standard_short_version_s, f_console_standard_long_version_s, f_console_symbol_short_disable_s, f_console_symbol_long_disable_s, " Print only the version number."); - fprintf(output.stream, "%c", f_string_eol_s[0]); + f_print_character(f_string_eol_s[0], output.stream); fll_program_print_help_option(output, context, fake_short_define, fake_long_define, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Append an additional define after defines from settings file."); fll_program_print_help_option(output, context, fake_short_fakefile, fake_long_fakefile, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "Use this fakefile."); @@ -34,16 +36,14 @@ extern "C" { fll_program_print_help_option(output, context, fake_short_process, fake_long_process, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Process name for storing build states."); fll_program_print_help_option(output, context, fake_short_settings, fake_long_settings, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "Use this settings file."); - fprintf(output.stream, "%c", f_string_eol_s[0]); + f_print_character(f_string_eol_s[0], output.stream); fll_program_print_help_option(output, context, fake_short_path_build, fake_long_path_build, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Specify a custom build directory."); fll_program_print_help_option(output, context, fake_short_path_data, fake_long_path_data, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Specify a custom path to the data files."); fll_program_print_help_option(output, context, fake_short_path_sources, fake_long_path_sources, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Specify a custom path to the source files."); fll_program_print_help_option(output, context, fake_short_path_work, fake_long_path_work, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Use includes/libraries/programs from this directory instead of system."); - fprintf(output.stream, "%c%c", f_string_eol_s[0], f_string_eol_s[0]); - - f_color_print(output.stream, context.set.important, " Special Options: "); + fl_print_format("%c%c %[Special Options:%] ", output.stream, f_string_eol_s[0], f_string_eol_s[0], context.set.important, context.set.important); fll_program_print_help_option_long(output, context, fake_long_documents_disabled, f_console_symbol_long_enable_s, " Forcibly do not build documents files."); fll_program_print_help_option_long(output, context, fake_long_documents_enabled, f_console_symbol_long_enable_s, " Forcibly do build documents files."); @@ -52,9 +52,7 @@ extern "C" { fll_program_print_help_option_long(output, context, fake_long_static_disabled, f_console_symbol_long_enable_s, "Forcibly do not build static files."); fll_program_print_help_option_long(output, context, fake_long_static_enabled, f_console_symbol_long_enable_s, " Forcibly do build static files."); - fprintf(output.stream, "%c%c", f_string_eol_s[0], f_string_eol_s[0]); - - f_color_print(output.stream, context.set.important, " Operations: "); + fl_print_format("%c%c %[Operations:%] ", output.stream, f_string_eol_s[0], f_string_eol_s[0], context.set.important, context.set.important); fll_program_print_help_option_other(output, context, fake_other_operation_build, " Build or compile the code based on build settings file."); fll_program_print_help_option_other(output, context, fake_other_operation_clean, " Delete all build files."); @@ -63,37 +61,33 @@ extern "C" { fll_program_print_help_usage(output, context, fake_name, "operation"); - fprintf(output.stream, " When performing the "); - f_color_print(output.stream, context.set.notable, "%s", fake_other_operation_build); - fprintf(output.stream, " operation, the "); - f_color_print(output.stream, context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_mode); - fprintf(output.stream, " parameter specifies a name (limited to alpha-numeric, underscore, and dash) to be used in addition to the global."); - fprintf(output.stream, "%c", f_string_eol_s[0]); - - fprintf(output.stream, " For example, when a "); - f_color_print(output.stream, context.set.notable, "%s", fake_long_mode); - fprintf(output.stream, " of 'fll_monolithic' is specified, build libaries from both 'build_libraries' and 'build_libraries-fll_monolithic' are used (but not 'build_libraries-fll_level')."); - - fprintf(output.stream, "%c%c", f_string_eol_s[0], f_string_eol_s[0]); - - fprintf(output.stream, " When specifying the "); - f_color_print(output.stream, context.set.notable, "%s", fake_long_fakefile); - fprintf(output.stream, " or the "); - f_color_print(output.stream, context.set.notable, "%s", fake_long_settings); - fprintf(output.stream, " parameters, the filenames are relative to the data build directory, unless a path is used."); - fprintf(output.stream, "%c", f_string_eol_s[0]); - - fprintf(output.stream, " For example, with '"); - f_color_print(output.stream, context.set.notable, "%s%s my_fakefile", f_console_symbol_long_enable_s, fake_long_fakefile); - fprintf(output.stream, "' the fakefile at '"); - f_color_print(output.stream, context.set.notable, "./%s%smy_fakefile", fake_default_path_data, fake_default_path_build); - fprintf(output.stream, " would be used, however with '"); - f_color_print(output.stream, context.set.notable, "%s%s ./my_fakefile", f_console_symbol_long_enable_s, fake_long_fakefile); - fprintf(output.stream, "' the fakefile at '"); - f_color_print(output.stream, context.set.notable, "./my_fakefile", fake_default_path_data, fake_default_path_build); - fprintf(output.stream, " would be used."); - - fprintf(output.stream, "%c%c", f_string_eol_s[0], f_string_eol_s[0]); + f_print_terminated(" When performing the ", output.stream); + fl_print_format("%[%s%]", output.stream, context.set.notable, fake_other_operation_build, context.set.notable); + f_print_terminated(" operation, the ", output.stream); + fl_print_format("%[%s%s%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, fake_long_mode, context.set.notable); + fl_print_format(" parameter specifies a name (limited to alpha-numeric, underscore, and dash) to be used in addition to the global.%c", output.stream, f_string_eol_s[0]); + + f_print_terminated(" For example, when a ", output.stream); + fl_print_format("%[%s%]", output.stream, context.set.notable, fake_make_parameter_variable_mode, context.set.notable); + fl_print_format(" of 'fll_monolithic' is specified, build libraries from both 'build_libraries' and 'build_libraries-fll_monolithic' are used (but not 'build_libraries-fll_level').%c%c", output.stream, f_string_eol_s[0], f_string_eol_s[0]); + + f_print_terminated(" When specifying the ", output.stream); + fl_print_format("%[%s%]", output.stream, context.set.notable, fake_make_parameter_variable_fakefile, context.set.notable); + f_print_terminated(" or the ", output.stream); + fl_print_format("%[%s%]", output.stream, context.set.notable, fake_make_parameter_variable_settings, context.set.notable); + fl_print_format(" parameters, the filenames are relative to the data build directory, unless a path is used.%c", output.stream, f_string_eol_s[0]); + + f_print_terminated(" For example, with '", output.stream); + fl_print_format("%[%s%s my_fakefile%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, fake_long_fakefile, context.set.notable); + f_print_terminated("' the fakefile at '", output.stream); + fl_print_format("%[./%s%smy_fakefile%]", output.stream, context.set.notable, fake_default_path_data, fake_default_path_build, context.set.notable); + f_print_terminated("' would be used, however with '", output.stream); + fl_print_format("%[%s%s ./my_fakefile%]", output.stream, context.set.notable, f_console_symbol_long_enable_s, fake_long_fakefile, context.set.notable); + f_print_terminated("' the fakefile at '", output.stream); + fl_print_format("%[./my_fakefile%]", output.stream, context.set.notable, context.set.notable); + fl_print_format("' would be used.%c%c", output.stream, f_string_eol_s[0], f_string_eol_s[0]); + + funlockfile(output.stream); return F_none; } @@ -117,9 +111,12 @@ extern "C" { if (main->context.set.error.before) { main->error.context = main->context.set.error; main->error.notable = main->context.set.notable; + + main->warning.context = main->context.set.warning; + main->warning.notable = main->context.set.notable; } else { - f_color_set_t *sets[] = { &main->error.context, &main->error.notable, 0 }; + f_color_set_t *sets[] = { &main->error.context, &main->error.notable, &main->warning.context, &main->warning.notable, 0 }; fll_program_parameter_process_empty(&main->context, sets); } @@ -149,15 +146,19 @@ extern "C" { if (choice == fake_parameter_verbosity_quiet) { main->error.verbosity = f_console_verbosity_quiet; + main->warning.verbosity = f_console_verbosity_quiet; } else if (choice == fake_parameter_verbosity_normal) { main->error.verbosity = f_console_verbosity_normal; + main->warning.verbosity = f_console_verbosity_normal; } else if (choice == fake_parameter_verbosity_verbose) { main->error.verbosity = f_console_verbosity_verbose; + main->warning.verbosity = f_console_verbosity_verbose; } else if (choice == fake_parameter_verbosity_debug) { main->error.verbosity = f_console_verbosity_debug; + main->warning.verbosity = f_console_verbosity_debug; } } @@ -338,10 +339,13 @@ extern "C" { } else if (F_status_is_error(status)) { if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->error.context, "%sThe operation '", fll_error_print_error); - f_color_print(main->error.to.stream, main->error.notable, "%s", operations_name); - f_color_print(main->error.to.stream, main->error.context, "' failed.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SThe operation '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%]", main->error.to.stream, main->error.notable, operations_name, main->error.notable); + fl_print_format("%[' failed.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } break; @@ -351,18 +355,16 @@ extern "C" { // ensure a newline is always put at the end of the program execution, unless in quiet mode. if (main->error.verbosity != f_console_verbosity_quiet) { if (F_status_is_error(status) || status == F_signal) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); + fll_print_character(f_string_eol_s[0], main->error.to.stream); } else if (status != F_child) { - fprintf(main->output.stream, "%cAll operations complete.%c%c", f_string_eol_s[0], f_string_eol_s[0], f_string_eol_s[0]); + fll_print_format("%cAll operations complete.%c%c", main->output.stream, f_string_eol_s[0], f_string_eol_s[0], f_string_eol_s[0]); } } } else { if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->error.context, "%sYou failed to specify an operation.%c", fll_error_print_error, f_string_eol_s[0]); - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[%SYou failed to specify an operation.%]%c%c", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context, f_string_eol_s[0], f_string_eol_s[0]); } status = F_status_set_error(F_parameter); diff --git a/level_3/fake/c/fake.h b/level_3/fake/c/fake.h index ac669fb..4b8d9b1 100644 --- a/level_3/fake/c/fake.h +++ b/level_3/fake/c/fake.h @@ -74,6 +74,7 @@ #include #include #include +#include #include // fll-2 includes @@ -84,6 +85,7 @@ #include #include #include +#include #include #ifdef __cplusplus @@ -389,6 +391,7 @@ extern "C" { f_file_t output; fll_error_print_t error; + fll_error_print_t warning; uint8_t operation; @@ -459,6 +462,7 @@ extern "C" { F_false, \ macro_f_file_t_initialize2(f_type_output, f_type_descriptor_output, f_file_flag_write_only), \ fll_error_print_t_initialize, \ + macro_fll_error_print_t_initialize_warning(), \ 0, \ 0, \ 0, \ diff --git a/level_3/fake/c/private-build.c b/level_3/fake/c/private-build.c index 561b02a..1bfd45a 100644 --- a/level_3/fake/c/private-build.c +++ b/level_3/fake/c/private-build.c @@ -169,9 +169,7 @@ extern "C" { f_string_dynamic_t destination_directory = f_string_dynamic_t_initialize; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Copying %s.", label); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[Copying %S.%]%c", main.output.stream, f_string_eol_s[0], main.context.set.important, label, main.context.set.important, f_string_eol_s[0]); } macro_f_string_dynamic_t_resize(*status, path_source, source.used); @@ -347,7 +345,7 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Copied file '%s' to '%s'.%c", path_source.string, destination_file.string, f_string_eol_s[0]); + fll_print_format("Copied file '%Q' to '%Q'.%c", main.output.stream, path_source, destination_file, f_string_eol_s[0]); } } else if (F_status_is_error(*status)) { @@ -421,9 +419,7 @@ extern "C" { }; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Creating base build directories."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[Creating base build directories.%]%c", main.output.stream, f_string_eol_s[0], main.context.set.important, main.context.set.important, f_string_eol_s[0]); } for (uint8_t i = 0; i < 15; ++i) { @@ -475,7 +471,7 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Created directory '%s'.%c", directorys[i]->string, f_string_eol_s[0]); + fll_print_format("Created directory '%Q'.%c", main.output.stream, directorys[i], f_string_eol_s[0]); } } // for @@ -699,11 +695,13 @@ extern "C" { if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_failure) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.error.context, "%sFailed to execute script: ", main.error.prefix); - f_color_print(main.error.to.stream, main.error.notable, "%s", path.string); - f_color_print(main.error.to.stream, main.error.context, "."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SFailed to execute script: '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, path, main.error.notable); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } } else { @@ -778,9 +776,7 @@ extern "C" { if (!data_build.setting.build_sources_library.used) return 0; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Compiling shared library."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[Compiling shared library.%]%c", main.output.stream, f_string_eol_s[0], main.context.set.important, main.context.set.important, f_string_eol_s[0]); } f_string_dynamics_t arguments = f_string_dynamics_t_initialize; @@ -1122,7 +1118,7 @@ extern "C" { *status = f_file_link(parameter_file_name_major, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_major, f_string_eol_s[0]); + fll_print_format("Linked file '%S' to '%S'.%c", main.output.stream, parameter_file_path, parameter_file_name_major, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1157,7 +1153,7 @@ extern "C" { *status = f_file_link(parameter_file_name_minor, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_minor, f_string_eol_s[0]); + fll_print_format("Linked file '%S' to '%S'.%c", main.output.stream, parameter_file_path, parameter_file_name_minor, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1191,7 +1187,7 @@ extern "C" { *status = f_file_link(parameter_file_name_micro, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_micro, f_string_eol_s[0]); + fll_print_format("Linked file '%S' to '%S'.%c", main.output.stream, parameter_file_path, parameter_file_name_micro, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1225,7 +1221,7 @@ extern "C" { *status = f_file_link(parameter_file_name_nano, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_nano, f_string_eol_s[0]); + fll_print_format("Linked file '%S' to '%S'.%c", main.output.stream, parameter_file_path, parameter_file_name_nano, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1255,9 +1251,7 @@ extern "C" { if (!data_build.setting.build_sources_library.used) return 0; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Compiling static library."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[Compiling static library.%]%c", main.output.stream, f_string_eol_s[0], main.context.set.important, main.context.set.important, f_string_eol_s[0]); } f_string_dynamic_t file_name = f_string_dynamic_t_initialize; @@ -1430,13 +1424,15 @@ extern "C" { if (environment->used + data_build.setting.environment.used > environment->size) { if (environment->used + data_build.setting.environment.used > f_environment_max_length) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe values for the setting '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", fake_build_setting_name_environment); - f_color_print(main.error.to.stream, main.context.set.error, "' of setting file '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", main.file_data_build_settings.string); - f_color_print(main.error.to.stream, main.context.set.error, "' is too large."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe values for the setting '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%s%]", main.error.to.stream, main.error.notable, fake_build_setting_name_environment, main.error.notable); + fl_print_format("%[' of setting file '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%]", main.error.to.stream, main.error.notable, fake_build_setting_name_environment, main.error.notable); + fl_print_format("%[' is too large.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + flockfile(main.error.to.stream); } *status = F_status_set_error(F_array_too_large); @@ -1532,13 +1528,15 @@ extern "C" { for (uint8_t i = 0; i < 1; ++i) { if (!settings[i]->used) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe setting '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", names[i]); - f_color_print(main.error.to.stream, main.context.set.error, "' is required but is not specified in the settings file '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", setting_file.used ? path_file : main.file_data_build_settings.string); - f_color_print(main.error.to.stream, main.context.set.error, "'."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe setting '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, names[i], main.error.notable); + fl_print_format("%[' is required but is not specified in the settings file '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, setting_file.used ? path_file : main.file_data_build_settings.string, main.error.notable); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); failed = F_true; } @@ -1858,13 +1856,15 @@ extern "C" { if (found == F_false) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe specified mode '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", modes->array[i].string); - f_color_print(main.error.to.stream, main.context.set.error, "' is not a valid mode, according to '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.error.to.stream, main.context.set.error, "'."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe specified mode '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, modes->array[i], main.error.notable); + fl_print_format("%[' is not a valid mode, according to '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, path_file, main.error.notable); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } error_printed = F_true; @@ -1909,7 +1909,7 @@ extern "C" { if (F_status_is_error(*status)) break; } // for - // "build_libaries" is appended after all modes to help assist with static linker file issues (@todo there should likely be more options to have a postfix linker parameter that can be added here instead, such as "build_libraries_last"). + // "build_libraries" is appended after all modes to help assist with static linker file issues (@todo there should likely be more options to have a postfix linker parameter that can be added here instead, such as "build_libraries_last"). if (total_build_libraries) { f_string_dynamic_t temporary[total_build_libraries]; @@ -1939,12 +1939,14 @@ extern "C" { if (F_status_is_error(*status)) { if (*status == F_status_set_error(F_string_too_large)) { if (main.error.verbosity != f_console_verbosity_quiet) { + funlockfile(main.error.to.stream); + // @todo update FSS functions to return which setting index the problem happened on. - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sA setting in the build setting file '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.error.to.stream, main.context.set.error, "' is too long."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + fl_print_format("%c%[%SA setting in the build setting file '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, path_file, main.error.notable); + fl_print_format("%[' is too long.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } } else if (!error_printed) { @@ -2241,16 +2243,18 @@ extern "C" { if (!settings_single_source[i]->used) continue; if (settings_single_source[i]->used > 1) { - if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", settings_single_name[i]); - f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.output.stream, main.context.set.warning, "' may only have a single property, only using the first: '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", settings_single_source[i]->array[0].string); - f_color_print(main.output.stream, main.context.set.warning, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe setting '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, settings_single_name[i], main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' may only have a single property, only using the first: '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%Q%]", main.warning.to.stream, main.warning.notable, settings_single_source[i]->array[0], main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } } @@ -2264,20 +2268,22 @@ extern "C" { else { *settings_single_bool[i] = F_true; - if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", settings_single_name[i]); - f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.output.stream, main.context.set.warning, "' may be either '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_common_setting_bool_yes); - f_color_print(main.output.stream, main.context.set.warning, "' or '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_common_setting_bool_no); - f_color_print(main.output.stream, main.context.set.warning, "', defaulting to '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_common_setting_bool_yes); - f_color_print(main.output.stream, main.context.set.warning, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe setting '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, settings_single_name[i], main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' may be either '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_common_setting_bool_yes, main.warning.notable); + fl_print_format("%[' or '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_common_setting_bool_no, main.warning.notable); + fl_print_format("%[', defaulting to '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_common_setting_bool_yes, main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } } } @@ -2294,22 +2300,24 @@ extern "C" { else { *settings_single_language[i] = fake_build_language_type_c; - if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", settings_single_name[i]); - f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.output.stream, main.context.set.warning, "' may only be one of '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_language_bash); - f_color_print(main.output.stream, main.context.set.warning, "', '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_language_c); - f_color_print(main.output.stream, main.context.set.warning, "', or '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_language_cpp); - f_color_print(main.output.stream, main.context.set.warning, "', defaulting to '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_language_c); - f_color_print(main.output.stream, main.context.set.warning, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe setting '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, settings_single_name[i], main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' may only be one of '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_language_bash, main.warning.notable); + fl_print_format("%[', '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_language_c, main.warning.notable); + fl_print_format("%[', or '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_language_cpp, main.warning.notable); + fl_print_format("%[', defaulting to '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_language_c, main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } } } @@ -2329,24 +2337,26 @@ extern "C" { else { *settings_single_version[i] = settings_single_version_default[i]; - if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", settings_single_name[i]); - f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.output.stream, main.context.set.warning, "' may only be one of '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_major); - f_color_print(main.output.stream, main.context.set.warning, "', '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_minor); - f_color_print(main.output.stream, main.context.set.warning, "', '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_micro); - f_color_print(main.output.stream, main.context.set.warning, "', or '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_nano); - f_color_print(main.output.stream, main.context.set.warning, "', defaulting to '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", settings_single_version_default_name[i]); - f_color_print(main.output.stream, main.context.set.warning, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe setting '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, settings_single_name[i], main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' may only be one of '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_version_major, main.warning.notable); + fl_print_format("%[', '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_version_minor, main.warning.notable); + fl_print_format("%[', '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_version_micro, main.warning.notable); + fl_print_format("%[', or '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_version_nano, main.warning.notable); + fl_print_format("%[', defaulting to '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, settings_single_version_default_name[i], main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } } } @@ -2383,32 +2393,36 @@ extern "C" { if (!setting->version_file) { setting->version_file = fake_build_version_type_micro; - if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_setting_name_version_file); - f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.output.stream, main.context.set.warning, "' is required, defaulting to '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_micro); - f_color_print(main.output.stream, main.context.set.warning, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe setting '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, fake_build_setting_name_version_file, main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' is required, defaulting to '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_version_micro, main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } } if (!setting->version_target) { setting->version_target = fake_build_version_type_major; - if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_setting_name_version_target); - f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.output.stream, main.context.set.warning, "' is required, defaulting to '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_major); - f_color_print(main.output.stream, main.context.set.warning, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe setting '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, fake_build_setting_name_version_target, main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' is required, defaulting to '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%s%]", main.warning.to.stream, main.warning.notable, fake_build_version_major, main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } } } @@ -2482,17 +2496,20 @@ extern "C" { prefix[i]->used = 0; for (j = 0; j < 2; ++j) { + if (setting_target[j] && i + 1 <= setting_target[j]) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sWhen the '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", setting_name[j]); - f_color_print(main.error.to.stream, main.context.set.error, "' is set to '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", name_target[setting_target[j] - 1]); - f_color_print(main.error.to.stream, main.context.set.error, "', then the '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", name_object[i]); - f_color_print(main.error.to.stream, main.context.set.error, "' Object must have Content."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SWhen the '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, setting_name[j], main.error.notable); + fl_print_format("%[' is set to '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, name_target[setting_target[j] - 1], main.error.notable); + fl_print_format("%[' then the '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, name_object[i], main.error.notable); + fl_print_format("%[' Object must have Content.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } *status = F_status_set_error(F_failure); @@ -2606,23 +2623,18 @@ extern "C" { setting->search_shared = F_false; } - if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.error, "%sthe parameters '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_shared_disabled); - f_color_print(main.output.stream, main.context.set.error, "' and '"); - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_shared_enabled); - f_color_print(main.output.stream, main.context.set.error, "' contradict, defaulting to '"); - - if (setting->build_shared) { - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_shared_enabled); - } - else { - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_shared_disabled); - } + if (main.error.verbosity != f_console_verbosity_quiet) { + flockfile(main.error.to.stream); - f_color_print(main.output.stream, main.context.set.error, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fl_print_format("%c%[%SThe parameters '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%s%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, fake_long_shared_disabled, main.error.notable); + fl_print_format("%[' and '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, fake_long_shared_enabled, main.error.notable); + fl_print_format("%[' contradict, defaulting to '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, setting->build_shared ? fake_long_shared_enabled : fake_long_shared_disabled, main.error.notable); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } } else { @@ -2647,22 +2659,17 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.error, "%sthe parameters '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_static_disabled); - f_color_print(main.output.stream, main.context.set.error, "' and '"); - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_static_enabled); - f_color_print(main.output.stream, main.context.set.error, "' contradict, defaulting to '"); - - if (setting->build_static) { - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_static_enabled); - } - else { - f_color_print(main.output.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_static_disabled); - } + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe parameters '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%s%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, fake_long_static_disabled, main.error.notable); + fl_print_format("%[' and '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, fake_long_static_enabled, main.error.notable); + fl_print_format("%[' contradict, defaulting to '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, setting->build_static ? fake_long_static_enabled : fake_long_static_disabled, main.error.notable); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.error, "'."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } } else { @@ -2678,22 +2685,17 @@ extern "C" { if (setting->build_language == fake_build_language_type_c || setting->build_language == fake_build_language_type_cpp) { if (setting->build_shared == F_false && setting->build_static == F_false) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe build settings '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", fake_build_setting_name_build_shared); - f_color_print(main.error.to.stream, main.context.set.error, "' and '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", fake_build_setting_name_build_static); - f_color_print(main.error.to.stream, main.context.set.error, "' cannot both be false when using the language '"); - - if (setting->build_language == fake_build_language_type_c) { - f_color_print(main.error.to.stream, main.context.set.notable, "%s", fake_build_language_c); - } - else { - f_color_print(main.error.to.stream, main.context.set.notable, "%s", fake_build_language_cpp); - } + flockfile(main.error.to.stream); - f_color_print(main.error.to.stream, main.context.set.error, "'."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + fl_print_format("%c%[%SThe build settings '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%s%]", main.error.to.stream, main.error.notable, fake_build_setting_name_build_shared, main.error.notable); + fl_print_format("%[' and '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%]", main.error.to.stream, main.error.notable, fake_build_setting_name_build_static, main.error.notable); + fl_print_format("%[' cannot both be false when using the language '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, setting->build_language == fake_build_language_type_c ? fake_build_language_c : fake_build_language_cpp, main.error.notable); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } *status = F_status_set_error(F_failure); @@ -2852,9 +2854,7 @@ extern "C" { if (!data_build.setting.build_sources_library.used) return 0; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Compiling static objects."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[Compiling static objects.%]%c", main.output.stream, f_string_eol_s[0], main.context.set.important, main.context.set.important, f_string_eol_s[0]); } f_string_dynamic_t file_name = f_string_dynamic_t_initialize; @@ -2941,11 +2941,13 @@ extern "C" { if (*status == F_false) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe path '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination_path.string); - f_color_print(main.error.to.stream, main.context.set.error, "' exists but is not a directory."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe path '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, destination_path, main.error.notable); + fl_print_format("%[' exists but is not a directory.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } *status = F_status_set_error(F_failure); @@ -2956,11 +2958,13 @@ extern "C" { if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found_not) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe path '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination_path.string); - f_color_print(main.error.to.stream, main.context.set.error, "' could not be created, a parent directory does not exist."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe path '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, destination_path, main.error.notable); + fl_print_format("%[' could not be created, a parent directory does not exist.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } else { fll_error_file_print(main.error, F_status_set_fine(*status), "f_directory_create", F_true, destination_path.string, "create", fll_error_file_type_directory); @@ -2970,7 +2974,7 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Directory '%s' created.%c", destination_path.string, f_string_eol_s[0]); + fll_print_format("Directory '%S' created.%c", main.output.stream, destination_path, f_string_eol_s[0]); } } else if (F_status_is_error(*status)) { @@ -3066,17 +3070,13 @@ extern "C" { if (F_status_is_fine(status)) { if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->output.stream, "%c", f_string_eol_s[0]); - f_color_print(main->output.stream, main->context.set.important, "Building project%c", data_build.setting.project_name.used ? ' ' : 0); + flockfile(main->output.stream); - if (data_build.setting.project_name.used) { - f_color_print_code(main->output.stream, main->context.notable); - f_print_dynamic(main->output.stream, data_build.setting.project_name); - f_color_print_code(main->output.stream, main->context.reset); - } + fl_print_format("%c%[Building project%] ", main->output.stream, f_string_eol_s[0], main->context.set.important, main->context.set.important); + fl_print_format("%[%Q%]", main->output.stream, main->context.set.notable, data_build.setting.project_name, main->context.set.notable); + fl_print_format("%[.%]%c", main->output.stream, main->context.set.important, main->context.set.important, f_string_eol_s[0]); - f_color_print(main->output.stream, main->context.set.important, "."); - fprintf(main->output.stream, "%c", f_string_eol_s[0]); + funlockfile(main->output.stream); } } @@ -3188,9 +3188,7 @@ extern "C" { if (!data_build.setting.build_sources_program.used) return 0; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Compiling shared program."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[Compiling shared program.%]%c", main.output.stream, f_string_eol_s[0], main.context.set.important, main.context.set.important, f_string_eol_s[0]); } f_string_dynamics_t arguments = f_string_dynamics_t_initialize; @@ -3293,9 +3291,7 @@ extern "C" { if (!data_build.setting.build_sources_program.used) return 0; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Compiling static program."); - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[Compiling static program.%]%c", main.output.stream, f_string_eol_s[0], main.context.set.important, main.context.set.important, f_string_eol_s[0]); } f_string_dynamics_t arguments = f_string_dynamics_t_initialize; diff --git a/level_3/fake/c/private-clean.c b/level_3/fake/c/private-clean.c index ed6fa07..1401c31 100644 --- a/level_3/fake/c/private-clean.c +++ b/level_3/fake/c/private-clean.c @@ -16,10 +16,13 @@ extern "C" { f_status_t status = F_none; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Deleting all files within build directory '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", main.path_build.string); - f_color_print(main.output.stream, main.context.set.important, "'.%c", f_string_eol_s[0]); + flockfile(main.output.stream); + + fl_print_format("%c%[Deleting all files within build directory '%]", main.output.stream, f_string_eol_s[0], main.context.set.important, main.context.set.important); + fl_print_format("%[%Q%]", main.output.stream, main.context.set.notable, main.path_build, main.context.set.notable); + fl_print_format("%[.%]%c", main.output.stream, main.context.set.important, main.context.set.important, f_string_eol_s[0]); + + funlockfile(main.output.stream); } if (fake_signal_received(main)) { @@ -35,7 +38,13 @@ extern "C" { if (F_status_set_fine(status) == F_file_found_not) { if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "The build directory '%s' does not exist.%c", main.path_build.string, f_string_eol_s[0]); + flockfile(main.output.stream); + + f_print_terminated("The build directory '", main.output.stream); + fl_print_format("%[%Q%]", main.output.stream, main.context.set.notable, main.path_build, main.context.set.notable); + fl_print_format("' does not exist.%c", main.output.stream, f_string_eol_s[0]); + + funlockfile(main.output.stream); } status = F_none; @@ -61,7 +70,7 @@ extern "C" { if (!result) { // @todo in order to get this working, the recursive function that calls this needs to be rewritten with more flexibility or provide a higher-level equivalent function. - printf("Removed '%s'.%c", path, f_string_eol_s[0]); + fll_print_format("Removed '%S'.%c", stdout, path, f_string_eol_s[0]); } return result; diff --git a/level_3/fake/c/private-fake.c b/level_3/fake/c/private-fake.c index 263f346..ea3de3d 100644 --- a/level_3/fake/c/private-fake.c +++ b/level_3/fake/c/private-fake.c @@ -15,16 +15,20 @@ extern "C" { if (F_status_is_error(*status)) return 1; if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%s", program.string); + flockfile(main.output.stream); + + f_print_dynamic(program, main.output.stream); for (f_array_length_t i = 0; i < arguments.used; ++i) { if (!arguments.array[i].used) continue; - fprintf(main.output.stream, " %s", arguments.array[i].string); + fl_print_format(" %Q", main.output.stream, arguments.array[i]); } // for - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + f_print_character(f_string_eol_s[0], main.output.stream); + + funlockfile(main.output.stream); // flush to stdout before executing command. fflush(main.output.stream); @@ -71,10 +75,13 @@ extern "C" { if (F_status_set_fine(*status) == F_file_found_not) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sFailed to find program '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", program.used ? program.string : f_string_empty_s); - f_color_print(main.error.to.stream, main.context.set.error, "' for executing.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SFailed to find program '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, program, main.error.notable); + fl_print_format("%[' for executing.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } } else { @@ -679,10 +686,13 @@ extern "C" { if (F_status_is_error(status)) { if (fll_error_print(main->error, F_status_set_fine(status), "f_utf_is_word_dash_plus", F_false) == F_known_not && main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sFailed to process the parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_process); - f_color_print(main->error.to.stream, main->context.set.error, "'.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SFailed to process the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fake_long_process, main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return status; @@ -690,12 +700,15 @@ extern "C" { if (status == F_false) { if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sThe '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_process); - f_color_print(main->error.to.stream, main->context.set.error, "' parameters value '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", arguments.argv[location]); - f_color_print(main->error.to.stream, main->context.set.error, "' contains non-word, non-dash, and non-plus characters.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SThe '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fake_long_process, main->error.notable); + fl_print_format("%[' parameters value '%]", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + fl_print_format("%[%S%]", main->error.to.stream, main->error.notable, arguments.argv[location], main->error.notable); + fl_print_format("%[' contains non-word, non-dash, and non-plus characters.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return F_status_set_error(F_parameter); @@ -708,10 +721,13 @@ extern "C" { if (F_status_is_error(status)) { if (status == F_status_set_error(F_string_too_large)) { if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, parameters_name[i]); - f_color_print(main->error.to.stream, main->context.set.error, "' is too long.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%S%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, parameters_name[i], main->error.notable); + fl_print_format("%[' is too long.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } } else { @@ -727,10 +743,13 @@ extern "C" { if (length == 0 || status == F_data_not) { if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sThe parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, parameters_name[i]); - f_color_print(main->error.to.stream, main->context.set.error, "' must not be empty and must not contain only whitespace.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SThe parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%S%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, parameters_name[i], main->error.notable); + fl_print_format("%[' must not be empty and must not contain only whitespace.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } } } @@ -807,10 +826,13 @@ extern "C" { if (F_status_is_error(status)) { if (fll_error_print(main->error, F_status_set_fine(status), "fl_console_parameter_to_string_dynamic_directory", F_false) == F_known_not && main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sFailed to process parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, parameters_name[i]); - f_color_print(main->error.to.stream, main->context.set.error, "'.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SFailed to process parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%S%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, parameters_name[i], main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return status; @@ -821,10 +843,13 @@ extern "C" { if (F_status_is_error(status)) { if (fll_error_print(main->error, F_status_set_fine(status), " macro_f_string_dynamic_t_resize", F_false) == F_known_not && main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sFailed to load default for the parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, parameters_name[i]); - f_color_print(main->error.to.stream, main->context.set.error, "'.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SFailed to load default for the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%S%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, parameters_name[i], main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return status; @@ -841,10 +866,13 @@ extern "C" { if (F_status_is_error(status)) { if (fll_error_print(main->error, F_status_set_fine(status), "fll_program_parameter_additional_rip", F_false) == F_known_not && main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sFailed to process the parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_define); - f_color_print(main->error.to.stream, main->context.set.error, "'.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SFailed to process the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fake_long_define, main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return status; @@ -860,10 +888,13 @@ extern "C" { if (F_status_is_error(status)) { if (fll_error_print(main->error, F_status_set_fine(status), "fll_program_parameter_additional_rip", F_false) == F_known_not && main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sFailed to process the parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_mode); - f_color_print(main->error.to.stream, main->context.set.error, "'.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SFailed to process the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fake_long_mode, main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return status; @@ -883,10 +914,13 @@ extern "C" { if (F_status_is_error(status)) { if (fll_error_print(main->error, F_status_set_fine(status), "f_utf_is_word_dash_plus", F_false) == F_known_not && main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sFailed to process the parameter '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_mode); - f_color_print(main->error.to.stream, main->context.set.error, "'.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SFailed to process the parameter '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fake_long_mode, main->error.notable); + fl_print_format("%['.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return status; @@ -894,12 +928,15 @@ extern "C" { if (status == F_false) { if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main->error.to.stream, main->context.set.error, "%sThe '", fll_error_print_error); - f_color_print(main->error.to.stream, main->context.set.notable, "%s%s", f_console_symbol_long_enable_s, fake_long_mode); - f_color_print(main->error.to.stream, main->context.set.error, "' parameters value '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", main->mode.array[i].string); - f_color_print(main->error.to.stream, main->context.set.error, "' contains non-word, non-dash, and non-plus characters.%c", f_string_eol_s[0]); + flockfile(main->error.to.stream); + + fl_print_format("%c%[%SThe '%]", main->error.to.stream, f_string_eol_s[0], main->error.context, main->error.prefix, main->error.context); + fl_print_format("%[%s%s%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fake_long_mode, main->error.notable); + fl_print_format("%[' parameters value '%]", main->error.to.stream, main->error.notable, f_console_symbol_long_enable_s, fake_long_mode, main->error.notable); + fl_print_format("%[%Q%]", main->error.to.stream, main->error.notable, main->mode.array[i], main->error.notable); + fl_print_format("%[' contains non-word, non-dash, and non-plus characters.%]%c", main->error.to.stream, main->error.context, main->error.context, f_string_eol_s[0]); + + funlockfile(main->error.to.stream); } return F_status_set_error(F_parameter); @@ -936,9 +973,7 @@ extern "C" { case F_signal_termination: if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "ALERT: An appropriate exit signal has been received, now aborting."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + fll_print_format("%c%[ALERT: An appropriate exit signal has been received, now aborting.%]%c", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.context, f_string_eol_s[0]); } return F_true; @@ -1057,10 +1092,13 @@ extern "C" { } } else if (parameters_required[i]) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sNo valid path for the (required) directory parameter '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, parameters_name[i]); - f_color_print(main.error.to.stream, main.context.set.error, "' was found.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SNo valid path for the (required) directory parameter '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%s%s%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, parameters_name[i], main.error.notable); + fl_print_format("%[' was found.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); return F_status_set_error(F_directory_found_not); } @@ -1072,19 +1110,19 @@ extern "C" { #ifndef _di_fake_verbose_print_clone_ void fake_verbose_print_clone(const f_file_t output, const f_string_t source, const f_string_t destination) { - fprintf(output.stream, "Cloned '%s' to '%s'.%c", source, destination, f_string_eol_s[0]); + fll_print_format("Cloned '%S' to '%S'.%c", output.stream, source, destination, f_string_eol_s[0]); } #endif // _di_fake_verbose_print_clone_ #ifndef _di_fake_verbose_print_copy_ void fake_verbose_print_copy(const f_file_t output, const f_string_t source, const f_string_t destination) { - fprintf(output.stream, "Copied '%s' to '%s'.%c", source, destination, f_string_eol_s[0]); + fll_print_format("Copied '%S' to '%S'.%c", output.stream, source, destination, f_string_eol_s[0]); } #endif // _di_fake_verbose_print_copy_ #ifndef _di_fake_verbose_print_move_ void fake_verbose_print_move(const f_file_t output, const f_string_t source, const f_string_t destination) { - fprintf(output.stream, "Moved '%s' to '%s'.%c", source, destination, f_string_eol_s[0]); + fll_print_format("Moved '%S' to '%S'.%c", output.stream, source, destination, f_string_eol_s[0]); } #endif // _di_fake_verbose_print_move_ diff --git a/level_3/fake/c/private-make.c b/level_3/fake/c/private-make.c index e2ec44f..200a1e3 100644 --- a/level_3/fake/c/private-make.c +++ b/level_3/fake/c/private-make.c @@ -66,10 +66,13 @@ extern "C" { } else if (status == F_exist_not) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, error.context, "%sThe group name '", error.prefix); - f_color_print(error.to.stream, error.notable, "%s", buffer.string); - f_color_print(error.to.stream, error.context, "' was not found.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe group name '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, buffer, main.error.notable); + fl_print_format("%[' was not found.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_status_set_error(F_failure); @@ -83,10 +86,13 @@ extern "C" { } else if (number > f_type_size_32_unsigned) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, error.context, "%sThe number '", error.prefix); - f_color_print(error.to.stream, error.notable, "%llu", number); - f_color_print(error.to.stream, error.context, "' is too large.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe number '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%un%]", main.error.to.stream, main.error.notable, number, main.error.notable); + fl_print_format("%[' is too large.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } } @@ -109,10 +115,13 @@ extern "C" { if (F_status_is_error(status)) { if (main.error.verbosity != f_console_verbosity_quiet) { if (F_status_set_fine(status) == F_syntax) { - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, error.context, "%sThe mode '", error.prefix); - f_color_print(error.to.stream, error.notable, "%s", buffer.string); - f_color_print(error.to.stream, error.context, "' is invalid.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe mode '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, buffer, main.error.notable); + fl_print_format("%[' is invalid.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } else { fll_error_print(error, status, "f_file_mode_from_string", F_true); @@ -148,10 +157,13 @@ extern "C" { } else if (status == F_exist_not) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, error.context, "%sThe user '", error.prefix); - f_color_print(error.to.stream, error.notable, "%s", buffer.string); - f_color_print(error.to.stream, error.context, "' was not found.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe user '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, buffer, main.error.notable); + fl_print_format("%[' was not found.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_status_set_error(F_failure); @@ -165,10 +177,13 @@ extern "C" { } else if (number > f_type_size_32_unsigned) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, error.context, "%sThe number '", error.prefix); - f_color_print(error.to.stream, error.notable, "%llu", number); - f_color_print(error.to.stream, error.context, "' is too large.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe number '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%un%]", main.error.to.stream, main.error.notable, number, main.error.notable); + fl_print_format("%[' is too large.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } } @@ -199,10 +214,13 @@ extern "C" { if (!data_make->buffer.used) { if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sthe fakefile '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", main.file_data_build_fakefile.string); - f_color_print(main.output.stream, main.context.set.warning, "' is empty."); + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe fakefile '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%Q%]", main.warning.to.stream, main.warning.notable, main.file_data_build_fakefile, main.warning.notable); + fl_print_format("%[' is empty.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } return; @@ -351,12 +369,15 @@ extern "C" { if (missing_main) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.error.context, "%sThe fakefile '", main.error.prefix); - f_color_print(main.error.to.stream, main.error.notable, "%s", main.file_data_build_fakefile.string); - f_color_print(main.error.to.stream, main.error.context, "' is missing the required '"); - f_color_print(main.error.to.stream, main.error.notable, "%s", fake_make_section_main); - f_color_print(main.error.to.stream, main.error.context, "' object.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe fakefile '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, main.file_data_build_fakefile, main.error.notable); + fl_print_format("%[' is missing the required '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%s%]", main.error.to.stream, main.error.notable, fake_make_section_main, main.error.notable); + fl_print_format("%[' object.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } *status = F_status_set_error(F_failure); @@ -483,18 +504,24 @@ extern "C" { // Ensure that the terminating NULL is after the end of the string used size. --data_make->setting_build.environment.array[data_make->setting_build.environment.used++].used; } - else if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sThe environment name '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", name_define.string); - f_color_print(main.output.stream, main.context.set.warning, "' is already added.%c", f_string_eol_s[0]); + else if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe environment name '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%Q%]", main.warning.to.stream, main.warning.notable, name_define, main.warning.notable); + fl_print_format("%[' is already added.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } } - else if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "%sThe environment name '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", name_define.string); - f_color_print(main.output.stream, main.context.set.warning, "' is invalid, ignoring.%c", f_string_eol_s[0]); + else if (main.warning.verbosity == f_console_verbosity_verbose) { + flockfile(main.warning.to.stream); + + fl_print_format("%c%[%SThe environment name '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%Q%]", main.warning.to.stream, main.warning.notable, name_define, main.warning.notable); + fl_print_format("%[' is invalid, ignoring.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); + + funlockfile(main.warning.to.stream); } name_define.used = 0; @@ -747,14 +774,13 @@ extern "C" { } else { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sInvalid characters in the define setting name '", fll_error_print_error); + flockfile(main.error.to.stream); - f_color_print_code(main.error.to.stream, *main.error.notable.before); - f_print_dynamic(main.error.to.stream, define.array[i].name); - f_color_print_code(main.error.to.stream, *main.error.notable.after); + fl_print_format("%c%[%SInvalid characters in the define setting name '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, define.array[i].name, main.error.notable); + fl_print_format("%[', only alpha-numeric ASCII characters and underscore (without a leading digit) are allowed.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "', only alpha-numeric ASCII characters and underscore (without a leading digit) is %c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } *status = F_status_set_error(F_failure); @@ -1081,8 +1107,7 @@ extern "C" { } if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->output.stream, "%c", f_string_eol_s[0]); - f_color_print(main->output.stream, main->context.set.important, "Making project.%c", f_string_eol_s[0]); + fll_print_format("%c$[Making project.%]%c", main->output.stream, f_string_eol_s[0], main->context.set.important, main->context.set.important, f_string_eol_s[0]); } f_status_t status = F_none; @@ -1095,11 +1120,13 @@ extern "C" { if (F_status_is_error(status)) { fll_error_print(main->error, F_status_set_fine(status), "f_string_dynamics_increase", F_true); + return status; } if (fake_signal_received(*main)) { macro_fake_make_data_t_delete_simple(data_make); + return F_signal; } @@ -1174,13 +1201,16 @@ extern "C" { { f_status_t status_path = f_path_change_at(data_make.path.top.id); - if (F_status_is_error(status_path) && main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "%c", f_string_eol_s[0]); - f_color_print(main->output.stream, main->context.set.warning, "%sFailed change back to orignal path '", fll_error_print_warning); - f_color_print(main->output.stream, main->context.set.notable, "%s", data_make.path.stack.array[0].string); - f_color_print(main->output.stream, main->context.set.warning, "', status code = "); - f_color_print(main->output.stream, main->context.set.notable, "%llu", F_status_set_fine(status_path)); - f_color_print(main->output.stream, main->context.set.warning, ".%c", f_string_eol_s[0]); + if (F_status_is_error(status_path) && main->warning.verbosity == f_console_verbosity_verbose) { + flockfile(main->warning.to.stream); + + fl_print_format("%c%[%SFailed change back to orignal path '%]", main->warning.to.stream, f_string_eol_s[0], main->warning.context, main->warning.prefix, main->warning.context); + fl_print_format("%[%Q%]", main->warning.to.stream, main->warning.notable, data_make.path.stack.array[0], main->warning.notable); + fl_print_format("%[', status code =%] ", main->warning.to.stream, main->warning.context, main->warning.context); + fl_print_format("%[%ui%]", main->warning.to.stream, main->warning.notable, F_status_set_fine(status_path), main->warning.notable); + fl_print_format("%['.%]%c", main->warning.to.stream, main->warning.context, main->warning.context, f_string_eol_s[0]); + + funlockfile(main->warning.to.stream); } } @@ -1615,7 +1645,7 @@ extern "C" { if (status == F_equal_to) { unmatched = F_false; - status = f_conversion_number_unsigned_to_string(uint8_value[i], 10, &value); + status = f_conversion_number_unsigned_to_string(uint8_value[i], f_conversion_data_base_10_s, &value); break; } } // for @@ -1959,15 +1989,13 @@ extern "C" { const f_fss_named_t *section = &data_make->fakefile.array[id_section]; if (main->error.verbosity != f_console_verbosity_quiet) { - fprintf(main->output.stream, "%c", f_string_eol_s[0]); + flockfile(main->output.stream); - f_color_print(main->output.stream, main->context.set.important, "Processing Section '"); + fl_print_format("%c%[Processing Section '%]", main->output.stream, f_string_eol_s[0], main->context.set.important, main->context.set.important); + fl_print_format("%[%Q%]", main->output.stream, main->context.set.notable, section->name, main->context.set.notable); + fl_print_format("%['.%]%c", main->output.stream, main->context.set.important, main->context.set.important, f_string_eol_s[0]); - f_color_print_code(main->output.stream, *main->context.set.notable.before); - f_print_dynamic_partial(main->output.stream, data_make->buffer, section->name); - f_color_print_code(main->output.stream, *main->context.set.notable.after); - - f_color_print(main->output.stream, main->context.set.important, "'.%c", f_string_eol_s[0]); + funlockfile(main->output.stream); } if (!section->objects.used) { @@ -2282,19 +2310,13 @@ extern "C" { if (i == section->objects.used && (operation_if == fake_make_operation_if_type_true_next || operation_if == fake_make_operation_if_type_false_next || operation_if == fake_make_operation_if_type_else_true || operation_if == fake_make_operation_if_type_else_false)) { if (main->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - const char *type_name = 0; + flockfile(data_make->error.to.stream); - if (operation_if == fake_make_operation_if_type_true_next || operation_if == fake_make_operation_if_type_false_next) { - type_name = fake_make_operation_if; - } - else { - type_name = fake_make_operation_else; - } + fl_print_format("%c%[%SIncomplete '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, operation_if == fake_make_operation_if_type_true_next || operation_if == fake_make_operation_if_type_false_next ? fake_make_operation_if : fake_make_operation_else, data_make->error.notable); + fl_print_format("%[' at end of section.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sIncomplete '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", type_name); - f_color_print(data_make->error.to.stream, data_make->error.context, "' at end of section.%c", f_string_eol_s[0]); + funlockfile(data_make->error.to.stream); } fake_print_message_section_operation_failed(*main, data_make->error, data_make->buffer, section->name, section->objects.array[section->objects.used - 1]); @@ -2351,9 +2373,13 @@ extern "C" { } if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Breaking as '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.used ? arguments.array[0].string : fake_make_operation_argument_success); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + flockfile(main->output.stream); + + fl_print_format("%cBreaking as '", main->output.stream, f_string_eol_s[0]); + fl_print_format("%[%S%]", main->output.stream, main->context.set.notable, arguments.used ? arguments.array[0].string : fake_make_operation_argument_success, main->context.set.notable); + fl_print_format("'.%c", main->output.stream, f_string_eol_s[0]); + + funlockfile(main->output.stream); } return 0; @@ -2467,11 +2493,12 @@ extern "C" { *status = F_status_set_error(F_failure); } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Cloned '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", destination); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + flockfile(main->output.stream); + + fl_print_format("%cCloned '%[%Q%]' to '", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.array[i], main->context.set.notable); + fl_print_format("%[%S%]'.%c", main->output.stream, f_string_eol_s[0], main->context.set.notable, destination, main->context.set.notable, f_string_eol_s[0]); + + funlockfile(main->output.stream); } } else if (F_status_is_error(status_file)) { @@ -2572,11 +2599,12 @@ extern "C" { *status = F_status_set_error(F_failure); } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Copied '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", destination); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + flockfile(main->output.stream); + + fl_print_format("%cCopied '%[%Q%]", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.array[i], main->context.set.notable); + fl_print_format("' to '%[%S%]'.%c", main->output.stream, main->context.set.notable, destination, main->context.set.notable, f_string_eol_s[0]); + + funlockfile(main->output.stream); } } else if (F_status_is_error(status_file)) { @@ -2602,9 +2630,7 @@ extern "C" { fll_error_print(data_make->error, F_status_set_fine(*status), "f_environment_set", F_true); } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Defined environment variable '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[0].string); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fll_print_format("%cDefined environment variable '%[%Q%]'.%c", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.array[0], main->context.set.notable, f_string_eol_s[0]); } return 0; @@ -2622,11 +2648,14 @@ extern "C" { if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found_not) { - if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "%c", f_string_eol_s[0]); - f_color_print(main->output.stream, main->context.set.warning, "%sthe file '", fll_error_print_warning); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - f_color_print(main->output.stream, main->context.set.warning, "' was not found.%c", f_string_eol_s[0]); + if (main->warning.verbosity == f_console_verbosity_verbose) { + flockfile(main->warning.to.stream); + + fl_print_format("%c%[%SThe file '%]", main->warning.to.stream, main->warning.prefix, f_string_eol_s[0]); + fl_print_format("%[%Q%]", main->warning.to.stream, main->warning.notable, arguments.array[i], main->warning.notable); + fl_print_format("%[' was not found.%]%c", main->warning.to.stream, f_string_eol_s[0]); + + funlockfile(main->warning.to.stream); } *status = F_none; @@ -2646,9 +2675,7 @@ extern "C" { if (F_status_set_fine(*status) == F_file_found_not) { if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "The directory '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' does not exist.%c", f_string_eol_s[0]); + fll_print_format("%cThe directory '%[%Q%]' does not exist.%c", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.array[i], main->context.set.notable, f_string_eol_s[0]); } *status = F_none; @@ -2659,9 +2686,7 @@ extern "C" { return 0; } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Removed '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fll_print_format("%cRemoved '%[%Q%]'.%c", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.array[i], main->context.set.notable, f_string_eol_s[0]); } } else { @@ -2669,9 +2694,7 @@ extern "C" { if (F_status_set_fine(*status) == F_file_found_not) { if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "The file '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' does not exist.%c", f_string_eol_s[0]); + fll_print_format("%cThe file '%[%Q%]' does not exist.%c", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.array[i], main->context.set.notable, f_string_eol_s[0]); } *status = F_none; @@ -2682,9 +2705,7 @@ extern "C" { return 0; } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Removed '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fll_print_format("%cRemoved '%[%Q%]'.%c", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.array[i], main->context.set.notable, f_string_eol_s[0]); } } } // for @@ -2725,9 +2746,7 @@ extern "C" { } if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Exiting as '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.used ? arguments.array[0].string : fake_make_operation_argument_success); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fll_print_format("%cExiting as '%[%S%]'.%c", main->output.stream, f_string_eol_s[0], main->context.set.notable, arguments.used ? arguments.array[0].string : fake_make_operation_argument_success, main->context.set.notable, f_string_eol_s[0]); } return 0; @@ -2758,19 +2777,23 @@ extern "C" { } if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Set failure state to '"); + flockfile(main->output.stream); + + f_print_terminated("Set failure state to '", main->output.stream); if (data_make->setting_make.fail == fake_make_operation_fail_type_exit) { - f_color_print(main->output.stream, main->context.set.notable, "%s", fake_make_operation_argument_exit); + fl_print_format("%[%s%]", main->output.stream, main->context.set.notable, fake_make_operation_argument_exit, main->context.set.notable); } else if (data_make->setting_make.fail == fake_make_operation_fail_type_warn) { - f_color_print(main->output.stream, main->context.set.notable, "%s", fake_make_operation_argument_warn); + fl_print_format("%[%s%]", main->output.stream, main->context.set.notable, fake_make_operation_argument_warn, main->context.set.notable); } else if (data_make->setting_make.fail == fake_make_operation_fail_type_ignore) { - f_color_print(main->output.stream, main->context.set.notable, "%s", fake_make_operation_argument_ignore); + fl_print_format("%[%s%]", main->output.stream, main->context.set.notable, fake_make_operation_argument_ignore, main->context.set.notable); } - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fl_print_format("'.%c", main->output.stream, f_string_eol_s[0]); + + funlockfile(main->output.stream); } return 0; @@ -2804,11 +2827,12 @@ extern "C" { fll_error_file_print(data_make->error, F_status_set_fine(*status), "f_file_role_change", F_true, arguments.array[i].string, "change group of", fll_error_file_type_file); } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Changed group of '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to "); - f_color_print(main->output.stream, main->context.set.notable, "%llu", id); - fprintf(main->output.stream, ".%c", f_string_eol_s[0]); + flockfile(main->output.stream); + + fl_print_format("Changed group of '%[%s%]", main->output.stream, main->context.set.notable, arguments.array[i], main->context.set.notable); + fl_print_format("' to %[%ul%].%c", main->output.stream, main->context.set.notable, id, main->context.set.notable, f_string_eol_s[0]); + + funlockfile(main->output.stream); } } // for @@ -2843,11 +2867,12 @@ extern "C" { fll_error_file_print(data_make->error, F_status_set_fine(*status), "fll_file_role_change_all", F_true, arguments.array[i].string, "change group of", fll_error_file_type_file); } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Changed group of '"); - f_color_print(main->output.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to "); - f_color_print(main->output.stream, main->context.set.notable, "%llu", id); - fprintf(main->output.stream, ".%c", f_string_eol_s[0]); + flockfile(main->output.stream); + + fl_print_format("Changed group of '%[%s%]", main->output.stream, main->context.set.notable, arguments.array[i], main->context.set.notable); + fl_print_format("' to %[%ul%].%c", main->output.stream, main->context.set.notable, id, main->context.set.notable, f_string_eol_s[0]); + + funlockfile(main->output.stream); } } // for @@ -3314,18 +3339,20 @@ extern "C" { *operation_if = fake_make_operation_if_type_false_always_next; if (main->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(main->output.stream, "%c", f_string_eol_s[0]); + flockfile(data_make->error.to.stream); if ((i == 1 && number_left > f_number_t_size_unsigned) || (i > 1 && number_right > f_number_t_size_unsigned)) { - f_color_print(main->error.to.stream, data_make->error.context, "%sThe number '", data_make->error.prefix); - f_color_print(main->error.to.stream, data_make->error.notable, "%c%s", arguments.array[i].string); - f_color_print(main->error.to.stream, data_make->error.context, "' may only be between the ranges -%llu to %llu.%c", f_number_t_size_unsigned, f_number_t_size_unsigned, f_string_eol_s[0]); + fl_print_format("%c%[%SThe number '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%[' may only be between the ranges -%un to %un.%]%c", data_make->error.to.stream, data_make->error.context, f_number_t_size_unsigned, f_number_t_size_unsigned, data_make->error.context, f_string_eol_s[0]); } else { - f_color_print(main->error.to.stream, data_make->error.context, "%sInvalid or unsupported number provided '", data_make->error.prefix); - f_color_print(main->error.to.stream, data_make->error.notable, "%s", arguments.array[i].string); - f_color_print(main->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid or unsupported number provided '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, f_number_t_size_unsigned, f_number_t_size_unsigned, data_make->error.context, f_string_eol_s[0]); } + + funlockfile(data_make->error.to.stream); } } @@ -3342,11 +3369,12 @@ extern "C" { fll_error_file_print(data_make->error, F_status_set_fine(*status), "f_file_link", F_true, arguments.array[1].string, "create link", fll_error_file_type_file); } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Created symbolic link from '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", arguments.array[1].string); - fprintf(main->output.stream, "' to '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", arguments.array[0].string); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + flockfile(main->output.stream); + + fl_print_format("Created symbolic link from '%[%Q%]", main->output.stream, main->context.set.notable, arguments.array[1], main->context.set.notable); + fl_print_format("' to %[%Q%].%c", main->output.stream, main->context.set.notable, arguments.array[0], main->context.set.notable, f_string_eol_s[0]); + + funlockfile(main->output.stream); } return 0; @@ -3363,6 +3391,7 @@ extern "C" { mode_t mode_file = 0; for (f_array_length_t i = 1; i < arguments.used; ++i) { + mode = 0; *status = f_file_mode_read(arguments.array[i].string, &mode_file); @@ -3387,11 +3416,7 @@ extern "C" { } if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Changed mode of '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to "); - f_color_print(main->error.to.stream, main->context.set.notable, "%#o", mode); - fprintf(main->output.stream, ".%c", f_string_eol_s[0]); + fll_print_format("Changed mode of '%Q' to %#@u.%c", main->output.stream, arguments.array[i], mode, f_string_eol_s[0]); } } // for @@ -3433,11 +3458,7 @@ extern "C" { } if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Changed mode of '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to "); - f_color_print(main->error.to.stream, main->context.set.notable, "%#o", mode); - fprintf(main->output.stream, ".%c", f_string_eol_s[0]); + fll_print_format("Changed mode of '%Q' to %#@u.%c", main->output.stream, arguments.array[i], mode, f_string_eol_s[0]); } } // for @@ -3561,11 +3582,7 @@ extern "C" { break; } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Changed owner of '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to "); - f_color_print(main->error.to.stream, main->context.set.notable, "%d", id); - fprintf(main->output.stream, ".%c", f_string_eol_s[0]); + fll_print_format("Changed owner of '%Q' to %u.%c", main->output.stream, arguments.array[i], id, f_string_eol_s[0]); } } // for @@ -3600,11 +3617,7 @@ extern "C" { fll_error_file_print(data_make->error, F_status_set_fine(*status), "fll_file_role_change_all", F_true, arguments.array[i].string, "change owner of", fll_error_file_type_file); } else if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Changed owner of '"); - f_color_print(main->error.to.stream, main->context.set.notable, "%s", arguments.array[i].string); - fprintf(main->output.stream, "' to "); - f_color_print(main->error.to.stream, main->context.set.notable, "%d", id); - fprintf(main->output.stream, ".%c", f_string_eol_s[0]); + fll_print_format("Changed owner of '%Q' to %u.%c", main->output.stream, arguments.array[i], id, f_string_eol_s[0]); } } // for @@ -3620,6 +3633,7 @@ extern "C" { if (F_status_is_error(*status)) { fake_print_message_section_operation_path_stack_max(*main, data_make->error, F_status_set_fine(*status), "f_path_change", data_make->path.stack.array[data_make->path.stack.used - 1].string); + return 0; } @@ -3628,30 +3642,32 @@ extern "C" { if (F_status_is_error(*status)) { fll_error_print(data_make->error, F_status_set_fine(*status), "fake_make_path_relative", F_true); + return 0; } - fprintf(main->output.stream, "Changed to project path '"); - f_color_print_code(main->output.stream, *main->context.set.notable.before); - f_print_dynamic(main->output.stream, data_make->path_cache); - f_color_print_code(main->output.stream, *main->context.set.notable.after); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fll_print_format("Changed to project path '%[%Q%]'.%c", main->output.stream, main->context.set.notable, data_make->path_cache, main->context.set.notable, f_string_eol_s[0]); } return 0; } if (operation == fake_make_operation_type_print) { + flockfile(main->output.stream); + for (f_array_length_t i = 0; i < arguments.used; ++i) { - f_print_dynamic(main->output.stream, arguments.array[i]); + f_print_dynamic(arguments.array[i], main->output.stream); if (i + 1 < arguments.used) { - fprintf(main->output.stream, "%s", f_string_space_s); + f_print_character(f_string_space_s[0], main->output.stream); } } // for - fprintf(main->output.stream, "%c", f_string_eol_s[0]); + f_print_character(f_string_space_s[0], main->output.stream); + + funlockfile(main->output.stream); + return 0; } @@ -3740,11 +3756,7 @@ extern "C" { return 0; } - fprintf(main->output.stream, "Changed to project path '"); - f_color_print_code(main->output.stream, *main->context.set.notable.before); - f_print_dynamic(main->output.stream, data_make->path_cache); - f_color_print_code(main->output.stream, *main->context.set.notable.after); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fll_print_format("Changed to project path '%[%Q%]'.%c", main->output.stream, main->context.set.notable, data_make->path_cache, main->context.set.notable, f_string_eol_s[0]); } ++data_make->path.stack.used; @@ -3764,7 +3776,7 @@ extern "C" { } if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Changed to project path ''.%c", f_string_eol_s[0]); + fll_print_format("Changed to project path ''.%c", main->output.stream, f_string_eol_s[0]); } // clear stack, except for the project root. @@ -3813,11 +3825,7 @@ extern "C" { } if (main->error.verbosity == f_console_verbosity_verbose) { - fprintf(main->output.stream, "Touched %s '", arguments.array[0].string); - f_color_print_code(main->output.stream, *main->context.set.notable.before); - f_print_dynamic(main->output.stream, arguments.array[i]); - f_color_print_code(main->output.stream, *main->context.set.notable.after); - fprintf(main->output.stream, "'.%c", f_string_eol_s[0]); + fll_print_format("Touched '%[%Q%]'.%c", main->output.stream, main->context.set.notable, arguments.array[i], main->context.set.notable, f_string_eol_s[0]); } } // for } @@ -3853,16 +3861,20 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "%s", program.string); + flockfile(main.output.stream); - for (f_array_length_t i = 0; i < arguments.used; ++i) { + f_print_dynamic_safely(program, main.output.stream); - if (!arguments.array[i].used) continue; + for (f_array_length_t i = 0; i < arguments.used; ++i) { - fprintf(main.output.stream, " %s", arguments.array[i].string); + if (arguments.array[i].used) { + fll_print_format(" %Q", main.output.stream, arguments.array[i]); + } } // for - fprintf(main.output.stream, "%c", f_string_eol_s[0]); + f_print_character(f_string_eol_s[0], main.output.stream); + + funlockfile(main.output.stream); // flush to stdout before executing command. fflush(main.output.stream); @@ -3885,11 +3897,14 @@ extern "C" { if (F_status_is_error(status)) { if (F_status_set_fine(status) == F_file_found_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, data_make->error.context, "%sFailed to find program '", data_make->error.prefix); - f_color_print(main.error.to.stream, data_make->error.notable, "%s", program.string); - f_color_print(main.error.to.stream, data_make->error.context, "' for executing.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed to find program '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, program, data_make->error.notable); + fl_print_format("%[' for executing.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } } else if (F_status_set_fine(status) != F_failure) { @@ -3924,7 +3939,7 @@ extern "C" { if (return_code) { f_string_dynamic_t number = f_string_dynamic_t_initialize; - status2 = f_conversion_number_signed_to_string(WEXITSTATUS(return_code), 10, &number); + status2 = f_conversion_number_signed_to_string(WEXITSTATUS(return_code), f_conversion_data_base_10_s, &number); if (F_status_is_error(status2)) { *status = status2; @@ -3960,11 +3975,14 @@ extern "C" { return; } - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, data_make->error.context, "%sFailed with return code '", data_make->error.prefix); - f_color_print(main.error.to.stream, data_make->error.notable, "%s", data_make->setting_make.parameter.array[0].value.array[0].string); - f_color_print(main.error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed with return code '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, data_make->setting_make.parameter.array[0].value.array[0], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } if (data_make->setting_make.fail == fake_make_operation_fail_type_exit) { @@ -4030,21 +4048,22 @@ extern "C" { if (operation == fake_make_operation_type_index || operation == fake_make_operation_type_run || operation == fake_make_operation_type_shell) { if (!arguments.used) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); } else if (operation == fake_make_operation_type_index) { if (!data_make->setting_build.build_indexer.used) { + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SNo indexer has been specified, cannot perform '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%s%]", data_make->error.to.stream, data_make->error.notable, fake_make_operation_index, data_make->error.notable); + fl_print_format("%[' section operation.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sNo indexer has been specified, cannot perform '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, fake_make_operation_index); - f_color_print(data_make->error.to.stream, data_make->error.context, "' section operation.%c", f_string_eol_s[0]); + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4056,9 +4075,8 @@ extern "C" { if (operation == fake_make_operation_type_break) { if (arguments.used > 1) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4067,11 +4085,14 @@ extern "C" { if (fl_string_dynamic_compare_string(fake_make_operation_argument_success, arguments.array[0], fake_make_operation_argument_success_length) == F_equal_to_not) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_failure, arguments.array[0], fake_make_operation_argument_failure_length) == F_equal_to_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported break type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SUnsupported break type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4084,9 +4105,8 @@ extern "C" { if (operation == fake_make_operation_type_build) { if (arguments.used > 1) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4103,11 +4123,14 @@ extern "C" { f_status_t status_file = f_file_is(path_file, f_file_type_regular, F_false); if (status_file == F_file_found_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFailed to find file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", path_file); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed to find file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%S%]", data_make->error.to.stream, data_make->error.notable, path_file, data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(status_file); @@ -4117,20 +4140,22 @@ extern "C" { *status = status_file; } else if (!status_file) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", path_file); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a regular file.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%s%]", data_make->error.to.stream, data_make->error.notable, path_file, data_make->error.notable); + fl_print_format("%[' must be a regular file.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFilename argument must not be an empty string.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SFilename argument must not be an empty string.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4142,9 +4167,8 @@ extern "C" { if (operation == fake_make_operation_type_clean || operation == fake_make_operation_type_pop || operation == fake_make_operation_type_top || operation == fake_make_operation_type_skeleton) { if (arguments.used) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4152,9 +4176,8 @@ extern "C" { else if (operation == fake_make_operation_type_pop) { if (data_make->path.stack.used == 1) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sMust not attempt to pop project root off of path stack.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SMust not attempt to pop project root off of path stack.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4182,11 +4205,14 @@ extern "C" { for (f_array_length_t i = 0; i < arguments.used - 1; ++i) { if (f_file_exists(arguments.array[i].string) != F_true) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFailed to find file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[i].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed to find file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4199,11 +4225,14 @@ extern "C" { f_status_t status_file = f_directory_is(arguments.array[arguments.used - 1].string); if (status_file == F_false || status_file == F_file_found_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe last file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[arguments.used - 1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a valid directory.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe last file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[arguments.used - 1], data_make->error.notable); + fl_print_format("%[' must be a valid directory.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4222,11 +4251,14 @@ extern "C" { status_file = f_directory_is(arguments.array[1].string); if (status_file == F_false) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe last file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a valid directory.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe last file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[1], data_make->error.notable); + fl_print_format("%[' must be a valid directory.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4235,9 +4267,8 @@ extern "C" { } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4248,19 +4279,21 @@ extern "C" { if (operation == fake_make_operation_type_compile) { if (!arguments.used) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); } else if (data_make->setting_build.build_compiler.used) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sNo compiler has been specified, cannot perform '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, fake_make_operation_compile); - f_color_print(data_make->error.to.stream, data_make->error.context, "' section operation.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SNo compiler has been specified, cannot perform '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%s%]", data_make->error.to.stream, data_make->error.notable, fake_make_operation_compile, data_make->error.notable); + fl_print_format("%[' section operation.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4287,11 +4320,14 @@ extern "C" { for (f_array_length_t i = 0; i < arguments.used - 1; ++i) { if (f_file_exists(arguments.array[i].string) != F_true) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFailed to find file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[i].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed to find file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4304,11 +4340,14 @@ extern "C" { f_status_t status_file = f_directory_is(arguments.array[arguments.used - 1].string); if (status_file == F_false || status_file == F_file_found_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe last file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[arguments.used - 1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a valid directory.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe last file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[arguments.used - 1], data_make->error.notable); + fl_print_format("%[' must be a valid directory.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4327,11 +4366,14 @@ extern "C" { status_file = f_directory_is(arguments.array[1].string); if (status_file == F_false) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe last file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a valid directory.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe last file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[1], data_make->error.notable); + fl_print_format("%[' must be a valid directory.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4340,9 +4382,8 @@ extern "C" { } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4367,9 +4408,8 @@ extern "C" { } // for } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4383,32 +4423,29 @@ extern "C" { *status = fake_make_operate_validate_define_name(arguments.array[0]); if (*status == F_none) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sDefine name must not be an empty string.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SDefine name must not be an empty string.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); } else if (*status == F_false) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sInvalid characters in the define setting name '", data_make->error.prefix); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); - f_color_print_code(data_make->error.to.stream, *data_make->error.notable.before); - f_print_dynamic(data_make->error.to.stream, arguments.array[0]); - f_color_print_code(data_make->error.to.stream, *data_make->error.notable.after); + fl_print_format("%c%[%SInvalid characters in the define setting name '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%[', only alpha-numeric ASCII characters and underscore (without a leading digit) is allowed.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "', only alpha-numeric ASCII characters and underscore (without a leading digit) is allowed.%c", f_string_eol_s[0]); + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4419,11 +4456,14 @@ extern "C" { if (operation == fake_make_operation_type_else) { if (*operation_if == fake_make_operation_if_type_else_true || *operation_if == fake_make_operation_if_type_else_false) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sMust not be used after another '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "else"); - f_color_print(data_make->error.to.stream, data_make->error.context, "' section operation.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SMust not be used after another '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[else%]", data_make->error.to.stream, data_make->error.notable, data_make->error.notable); + fl_print_format("%[' section operation.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4433,11 +4473,14 @@ extern "C" { } if (*operation_if == fake_make_operation_if_type_true || *operation_if == fake_make_operation_if_type_false || *operation_if == fake_make_operation_if_type_false_always) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sMust not be used inside an ", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "if"); - f_color_print(data_make->error.to.stream, data_make->error.context, "' section operation.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SMust not be used inside an '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[if%]", data_make->error.to.stream, data_make->error.notable, data_make->error.notable); + fl_print_format("%[' section operation.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4447,9 +4490,8 @@ extern "C" { } if (*operation_if != fake_make_operation_if_type_else_true_next && *operation_if != fake_make_operation_if_type_else_false_next && *operation_if != fake_make_operation_if_type_else_false_next_always) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas no preceding if condition.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas no preceding if condition.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4459,9 +4501,8 @@ extern "C" { } if (arguments.used) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4473,9 +4514,8 @@ extern "C" { if (operation == fake_make_operation_type_exit) { if (arguments.used > 1) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4483,12 +4523,14 @@ extern "C" { else if (arguments.used) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_success, arguments.array[0], fake_make_operation_argument_success_length) == F_equal_to_not) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_failure, arguments.array[0], fake_make_operation_argument_failure_length) == F_equal_to_not) { + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported exit type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + fl_print_format("%c%[%SUnsupported exit type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4505,11 +4547,14 @@ extern "C" { if (fl_string_dynamic_compare_string(fake_make_operation_argument_warn, arguments.array[0], fake_make_operation_argument_warn_length) == F_equal_to_not) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_ignore, arguments.array[0], fake_make_operation_argument_ignore_length) == F_equal_to_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported fail type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SUnsupported fail type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4518,9 +4563,8 @@ extern "C" { } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4538,17 +4582,20 @@ extern "C" { status_file = f_file_is(arguments.array[i].string, f_file_type_regular, F_false); if (status_file == F_file_found_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFailed to find file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[i].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed to find file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(status_file); } else if (F_status_is_error(status_file)) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { fll_error_file_print(data_make->error, F_status_set_fine(*status), "f_file_is", F_true, arguments.array[i].string, "find", fll_error_file_type_directory); } @@ -4559,9 +4606,8 @@ extern "C" { return; } - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4571,11 +4617,14 @@ extern "C" { if (operation == fake_make_operation_type_if) { if (*operation_if == fake_make_operation_if_type_true || *operation_if == fake_make_operation_if_type_false || *operation_if == fake_make_operation_if_type_false_always) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sMust not be used after another '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "if"); - f_color_print(data_make->error.to.stream, data_make->error.context, "' section operation.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SMust not be used after another '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[if%]", data_make->error.to.stream, data_make->error.notable, data_make->error.notable); + fl_print_format("%[' section operation.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4664,11 +4713,14 @@ extern "C" { } // for if (i == 14) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported if type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SUnsupported if type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4680,9 +4732,8 @@ extern "C" { if (arguments.used >= if_type_minimum[i]) { if (*operation_if == fake_make_operation_if_type_if_success || *operation_if == fake_make_operation_if_type_if_failure) { if (arguments.used > if_type_minimum[i]) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4697,11 +4748,14 @@ extern "C" { if (*operation_if == fake_make_operation_if_type_if_mode) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_is, arguments.array[1], fake_make_operation_argument_is_length) == F_equal_to_not) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_has, arguments.array[1], fake_make_operation_argument_has_length) == F_equal_to_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported mode type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SUnsupported mode type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[1], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4772,11 +4826,14 @@ extern "C" { type_file |= 0x40; } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported file type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[i].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SUnsupported file type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } type_file |= 0x80; @@ -4843,11 +4900,14 @@ extern "C" { if (fl_string_dynamic_compare_string(fake_make_operation_argument_environment, arguments.array[1], fake_make_operation_argument_environment_length) == F_equal_to_not) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_parameter, arguments.array[1], fake_make_operation_argument_parameter_length) == F_equal_to_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported define type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SUnsupported define type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[1], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -4859,9 +4919,8 @@ extern "C" { if (*operation_if == fake_make_operation_if_type_if_equal || *operation_if == fake_make_operation_if_type_if_equal_not) { if (arguments.used < 3) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4872,9 +4931,8 @@ extern "C" { if (*operation_if == fake_make_operation_if_type_if_greater || *operation_if == fake_make_operation_if_type_if_greater_equal || *operation_if == fake_make_operation_if_type_if_less || *operation_if == fake_make_operation_if_type_if_less_equal) { if (arguments.used < 3) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4915,19 +4973,21 @@ extern "C" { if (F_status_is_error(status_number)) { *status = F_status_set_error(F_failure); - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); if (number > f_number_t_size_unsigned) { - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe number '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%c%s", arguments.array[i].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' may only be between the ranges -%llu to %llu.%c", f_number_t_size_unsigned, f_number_t_size_unsigned, f_string_eol_s[0]); + fl_print_format("%c%[%SThe number '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%[' may only be between the ranges -%un to %un.%]%c", data_make->error.to.stream, data_make->error.context, f_number_t_size_unsigned, f_number_t_size_unsigned, data_make->error.context, f_string_eol_s[0]); } else { - f_color_print(data_make->error.to.stream, data_make->error.context, "%sInvalid or unsupported number provided '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[i].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + fl_print_format("%c%[%SInvalid or unsupported number provided '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); } + + funlockfile(data_make->error.to.stream); } } } // for @@ -4937,9 +4997,8 @@ extern "C" { } } - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4950,9 +5009,8 @@ extern "C" { if (operation == fake_make_operation_type_link) { if (arguments.used > 2) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -4979,9 +5037,8 @@ extern "C" { } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -5008,11 +5065,14 @@ extern "C" { for (f_array_length_t i = 0; i < arguments.used - 1; ++i) { if (f_file_exists(arguments.array[i].string) != F_true) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFailed to find file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[i].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed to find file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[i], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -5025,11 +5085,14 @@ extern "C" { f_status_t status_file = f_directory_is(arguments.array[arguments.used - 1].string); if (status_file == F_false || status_file == F_file_found_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe last file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[arguments.used - 1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a valid directory.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe last file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[arguments.used - 1], data_make->error.notable); + fl_print_format("%[' must be a valid directory.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -5048,11 +5111,14 @@ extern "C" { status_file = f_directory_is(arguments.array[1].string); if (status_file == F_false) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe last file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[1].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a valid directory.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe last file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[arguments.used - 1], data_make->error.notable); + fl_print_format("%[' must be a valid directory.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -5061,9 +5127,8 @@ extern "C" { } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -5074,9 +5139,8 @@ extern "C" { if (operation == fake_make_operation_type_operate) { if (arguments.used > 1) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -5092,23 +5156,27 @@ extern "C" { } // for if (id_section == data_make->fakefile.used) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sNo operation section named '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' was found.%c", f_string_eol_s[0]); + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SNo operation section named '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%[' was found.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } else { for (f_array_length_t i = 0; i < section_stack->used; ++i) { if (section_stack->array[i] == id_section) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe section operation '", data_make->error.prefix); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); - f_color_print_code(data_make->error.to.stream, *data_make->error.notable.before); - f_print_dynamic_partial(data_make->error.to.stream, data_make->buffer, data_make->fakefile.array[id_section].name); - f_color_print_code(data_make->error.to.stream, *data_make->error.notable.after); + fl_print_format("%c%[%SThe section operation '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, data_make->fakefile.array[id_section].name, data_make->error.notable); + fl_print_format("%[' is already in the operation stack, recursion is not allowed.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "' is already in the operation stack, recursion is not allowed.%c", f_string_eol_s[0]); + funlockfile(data_make->error.to.stream); + } *status = F_status_set_error(F_failure); break; @@ -5117,9 +5185,8 @@ extern "C" { } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -5129,9 +5196,8 @@ extern "C" { if (operation == fake_make_operation_type_to) { if (arguments.used > 1) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sHas too many arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SHas too many arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -5141,44 +5207,48 @@ extern "C" { f_status_t status_file = f_file_is(arguments.array[0].string, f_file_type_directory, F_false); if (status_file == F_file_found_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFailed to find file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SFailed to find file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(status_file); } else if (F_status_is_error(status_file)) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { fll_error_file_print(data_make->error, F_status_set_fine(*status), "f_file_is", F_true, main.file_data_build_fakefile.string, "find", fll_error_file_type_file); } *status = status_file; } else if (!status_file) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sThe file '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "' must be a directory file.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SThe file '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%[' must be a directory file.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sFilename argument must not be an empty string.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SFilename argument must not be an empty string.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } } } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); @@ -5192,11 +5262,14 @@ extern "C" { if (fl_string_dynamic_compare_string(fake_make_operation_argument_file, arguments.array[0], fake_make_operation_argument_file_length) == F_equal_to_not) { if (fl_string_dynamic_compare_string(fake_make_operation_argument_directory, arguments.array[0], fake_make_operation_argument_directory_length) == F_equal_to_not) { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sUnsupported file type '", data_make->error.prefix); - f_color_print(data_make->error.to.stream, data_make->error.notable, "%s", arguments.array[0].string); - f_color_print(data_make->error.to.stream, data_make->error.context, "'.%c", f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + flockfile(data_make->error.to.stream); + + fl_print_format("%c%[%SUnsupported file type '%]", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context); + fl_print_format("%[%Q%]", data_make->error.to.stream, data_make->error.notable, arguments.array[0], data_make->error.notable); + fl_print_format("%['.%]%c", data_make->error.to.stream, data_make->error.context, data_make->error.context, f_string_eol_s[0]); + + funlockfile(data_make->error.to.stream); } *status = F_status_set_error(F_failure); @@ -5217,9 +5290,8 @@ extern "C" { } // for } else { - if (main.error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { - fprintf(data_make->error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(data_make->error.to.stream, data_make->error.context, "%sRequires more arguments.%c", data_make->error.prefix, f_string_eol_s[0]); + if (data_make->error.verbosity != f_console_verbosity_quiet && data_make->error.to.stream) { + fll_print_format("%c%[%SRequires more arguments.%]%c", data_make->error.to.stream, f_string_eol_s[0], data_make->error.context, data_make->error.prefix, data_make->error.context, f_string_eol_s[0]); } *status = F_status_set_error(F_failure); diff --git a/level_3/fake/c/private-print.c b/level_3/fake/c/private-print.c index f28173c..a0c0160 100644 --- a/level_3/fake/c/private-print.c +++ b/level_3/fake/c/private-print.c @@ -15,25 +15,21 @@ extern "C" { if (status == F_file_found_not) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sFailed to find '", fll_error_print_error); + flockfile(main.error.to.stream); - if (f_file_exists(source) == F_true) { - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); - } - else { - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); - } - - f_color_print(main.error.to.stream, main.context.set.error, "' while trying to %s '", operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + fl_print_format("%c%[%SFailed to find '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, f_file_exists(source) == F_true ? destination : source, main.error.notable); + fl_print_format("%[while trying to %S '%]", main.error.to.stream, main.error.context, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -41,18 +37,21 @@ extern "C" { if (status == F_parameter) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sInvalid parameter when calling ", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", function); - f_color_print(main.error.to.stream, main.context.set.error, "() to %s '", operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SInvalid parameter when calling '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, function, main.error.notable); + fl_print_format("%[() to %s '%]", main.error.to.stream, main.error.context, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -60,16 +59,19 @@ extern "C" { if (status == F_name) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sInvalid name for '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SInvalid name for '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' or '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' or '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -77,16 +79,19 @@ extern "C" { if (status == F_memory_not) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sUnable to allocate memory, while trying to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SUnable to allocate memory, while trying to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -94,17 +99,19 @@ extern "C" { if (status == F_number_overflow) { if (main.error.verbosity != f_console_verbosity_quiet) { + flockfile(main.error.to.stream); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sOverflow while trying to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + fl_print_format("%c%[%SOverflow while trying to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -112,16 +119,19 @@ extern "C" { if (status == F_directory) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sInvalid directory while trying to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SInvalid directory while trying to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -129,16 +139,19 @@ extern "C" { if (status == F_access_denied) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sAccess denied while trying to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SAccess denied while trying to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -146,16 +159,19 @@ extern "C" { if (status == F_loop) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sLoop while trying to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SLoop while trying to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -163,16 +179,19 @@ extern "C" { if (status == F_prohibited) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sProhibited by system while trying to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SProhibited by system while trying to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -180,16 +199,19 @@ extern "C" { if (status == F_directory_found_not) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sFailed to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SFailed to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "' due to an invalid directory in the path.%c", f_string_eol_s[0]); + fl_print_format("%[' due to an invalid directory in the path.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -197,34 +219,40 @@ extern "C" { if (status == F_failure) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sFailed to %s '", fll_error_print_error, operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SFailed to %S '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; } if (fll_error_print(main.error, status, function, F_false) == F_known_not && fallback && main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "UNKNOWN %s(", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%llu", status); - f_color_print(main.error.to.stream, main.context.set.error, ") occurred while trying to %s '", operation); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", source); + flockfile(main.error.to.stream); + + fl_print_format("%c%[UNKNOWN %s(%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, operation, main.error.context); + fl_print_format("%[%ui%]", main.error.to.stream, main.error.notable, status, main.error.notable); + fl_print_format("%[) occurred while trying to %S '%]", main.error.to.stream, main.error.context, operation, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, source, main.error.notable); if (destination) { - f_color_print(main.error.to.stream, main.context.set.error, "' %s '", how); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", destination); + fl_print_format("%[' %S '%]", main.error.to.stream, main.error.context, how, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, destination, main.error.notable); } - f_color_print(main.error.to.stream, main.context.set.error, "'.%c", f_string_eol_s[0]); + fl_print_format("%['.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_true; @@ -236,12 +264,15 @@ extern "C" { if (status == F_file_found_not) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%serror occurred on invalid UTF-8 character at stop position (at ", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%d", range.start); - f_color_print(main.error.to.stream, main.context.set.error, " of setting file '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.error.to.stream, main.context.set.error, "').%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SOccurred on invalid UTF-8 character at stop position (at '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%un%]", main.error.to.stream, main.error.notable, range.start, main.error.notable); + fl_print_format("%[ of setting file '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, path_file, main.error.notable); + fl_print_format("%[').%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; @@ -249,21 +280,15 @@ extern "C" { if (status == F_complete_not_utf || status == F_complete_not_utf_eos || status == F_complete_not_utf_stop) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%serror occurred on invalid UTF-8 character", fll_error_print_error); + flockfile(main.error.to.stream); - if (status == F_complete_not_utf_eos) { - f_color_print(main.error.to.stream, main.context.set.error, " at end of string"); - } - else if (status == F_complete_not_utf_stop) { - f_color_print(main.error.to.stream, main.context.set.error, " at stop point of string"); - } + fl_print_format("%c%[%SOccurred on invalid UTF-8 character at %s (at '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, status == F_complete_not_utf_eos ? "end of string" : "stop point of string", main.error.context); + fl_print_format("%[%un%]", main.error.to.stream, main.error.notable, range.start, main.error.notable); + fl_print_format("%[ of setting file '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, path_file, main.error.notable); + fl_print_format("%[').%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, " (at "); - f_color_print(main.error.to.stream, main.context.set.notable, "%d", range.start); - f_color_print(main.error.to.stream, main.context.set.error, " of setting file '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.error.to.stream, main.context.set.error, "').%c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } return F_false; @@ -271,24 +296,30 @@ extern "C" { if (status == F_complete_not_utf_stop) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%serror occurred on invalid UTF-8 character at stop point of string (at ", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%d", range.start); - f_color_print(main.error.to.stream, main.context.set.error, " of setting file '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.error.to.stream, main.context.set.error, "').%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SOccurred on invalid UTF-8 character at stop point of string (at '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%un%]", main.error.to.stream, main.error.notable, range.start, main.error.notable); + fl_print_format("%[ of setting file '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, path_file, main.error.notable); + fl_print_format("%[').%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_false; } if (fll_error_print(main.error, status, function, F_false) == F_known_not && fallback && main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "UNKNOWN %s(", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%llu", status); - f_color_print(main.error.to.stream, main.context.set.error, ") in function "); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", function); - f_color_print(main.error.to.stream, main.context.set.error, "().%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[UNKNOWN %s(%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%ui%]", main.error.to.stream, main.error.notable, status, main.error.notable); + fl_print_format("%[) in function '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, function, main.error.notable); + fl_print_format("%[().%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_true; @@ -300,12 +331,13 @@ extern "C" { if (main.error.verbosity == f_console_verbosity_quiet) return; - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe parameter '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, parameter); + fl_print_format("%c%[%SThe parameter '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%S%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, parameter, main.error.notable); + fl_print_format("%[' was specified, but no value was given.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "' was specified, but no value was given.%c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } #endif // _di_fake_print_error_parameter_missing_value_ @@ -314,12 +346,13 @@ extern "C" { if (main.error.verbosity == f_console_verbosity_quiet) return; - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe parameter '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s%s", f_console_symbol_long_enable_s, parameter); + fl_print_format("%c%[%SThe parameter '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%S%]", main.error.to.stream, main.error.notable, f_console_symbol_long_enable_s, parameter, main.error.notable); + fl_print_format("%[' was specified too many times.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "' specified too many times.%c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } #endif // _di_fake_print_error_parameter_too_many_ @@ -332,22 +365,17 @@ extern "C" { f_fss_count_lines(buffer, operation_name.start, &line); - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, main.error.context, "%sThe section operation '", main.error.prefix); - - f_color_print_code(error.to.stream, main.context.notable); - f_print_dynamic_partial(error.to.stream, buffer, operation_name); - f_color_print_code(error.to.stream, main.context.reset); + flockfile(main.error.to.stream); - f_color_print(error.to.stream, main.error.context, "' from section '"); + fl_print_format("%c%[%SThe section operation '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, operation_name, main.error.notable); + fl_print_format("%[' from section '%]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, section_name, main.error.notable); + fl_print_format("%[' on line %]", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%un%]", main.error.to.stream, main.error.notable, line, main.error.notable); + fl_print_format(" %[failed.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print_code(error.to.stream, main.context.notable); - f_print_dynamic_partial(error.to.stream, buffer, section_name); - f_color_print_code(error.to.stream, main.context.reset); - - f_color_print(error.to.stream, main.error.context, "' on line "); - f_color_print(error.to.stream, main.context.set.notable, "%llu", line); - f_color_print(error.to.stream, main.error.context, " failed.%c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } #endif // _di_fake_print_message_section_operation_failed_ @@ -356,15 +384,18 @@ extern "C" { if (main.error.verbosity == f_console_verbosity_quiet || !error.to.stream) return; + flockfile(main.error.to.stream); + if (F_status_set_fine(status) == F_false) { - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, main.error.context, "%sThe path '", main.error.prefix); - f_color_print(error.to.stream, main.context.set.notable, "%s", path); - f_color_print(error.to.stream, main.error.context, "' is outside the project root.%c", f_string_eol_s[0]); + fl_print_format("%c%[%SThe path '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, path, main.error.notable); + fl_print_format("%[' is outside the project root.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); } else { fll_error_file_print(main.error, F_status_set_fine(status), function, F_true, path, "determine real path of", fll_error_file_type_file); } + + funlockfile(main.error.to.stream); } #endif // _di_fake_print_message_section_operation_path_outside_ @@ -374,18 +405,20 @@ extern "C" { if (main.error.verbosity == f_console_verbosity_quiet || !error.to.stream) return; if (status == F_array_too_large) { - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, main.error.context, "%s: Maximum stack size reached while processing path '", main.error.prefix); - f_color_print(error.to.stream, main.context.set.notable, "%s", path); - f_color_print(error.to.stream, main.error.context, "'"); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SMaximum stack size reached while processing path '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%S%]", main.error.to.stream, main.error.notable, path, main.error.notable); + fl_print_format("%['", main.error.to.stream, main.error.context); if (function) { - f_color_print(error.to.stream, main.error.context, " while calling "); - f_color_print(error.to.stream, main.context.set.notable, "%s", function); - f_color_print(error.to.stream, main.error.context, "()"); + fl_print_format(" while calling%] %[%S%]", main.error.to.stream, main.error.context, main.error.notable, function, main.error.notable); + fl_print_format("%[()", main.error.to.stream, main.error.context); } - f_color_print(error.to.stream, main.error.context, ".%c", f_string_eol_s[0]); + fl_print_format(".%]%c", main.error.to.stream, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } else { fll_error_file_print(error, status, function, F_true, path, "change path to", fll_error_file_type_directory); @@ -402,24 +435,19 @@ extern "C" { f_fss_count_lines(buffer, operation_name.start, &line); - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, main.error.context, "The section operation '", main.error.prefix); - - f_color_print_code(error.to.stream, main.context.notable); - f_print_dynamic_partial(error.to.stream, buffer, operation_name); - f_color_print_code(error.to.stream, main.context.reset); + flockfile(main.error.to.stream); - f_color_print(error.to.stream, main.error.context, "' from section '"); + fl_print_format("%c%[%SThe section operation '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%/Q%]", main.error.to.stream, main.error.notable, buffer, operation_name, main.error.notable); + fl_print_format("%[' from section '%]", main.error.to.stream, main.error.context, buffer, main.error.context); + fl_print_format("%[%/Q%]", main.error.to.stream, main.error.notable, buffer, section_name, main.error.notable); + fl_print_format("%[' on line%] ", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%ul%]", main.error.to.stream, main.error.notable, line, main.error.notable); + fl_print_format("%[' cannot be processed because the max stack depth of%] ", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%ul%]", main.error.to.stream, main.error.notable, stack_max, main.error.notable); + fl_print_format(" %[has been reached.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print_code(error.to.stream, main.context.notable); - f_print_dynamic_partial(error.to.stream, buffer, section_name); - f_color_print_code(error.to.stream, main.context.reset); - - f_color_print(error.to.stream, main.error.context, "' on line "); - f_color_print(error.to.stream, main.context.set.notable, "%llu", line); - f_color_print(error.to.stream, main.error.context, " cannot be processed because the max stack depth of "); - f_color_print(error.to.stream, main.context.set.notable, "%llu", stack_max); - f_color_print(error.to.stream, main.error.context, " has been reached.%c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } #endif // _di_fake_print_message_section_operation_stack_max_ @@ -432,102 +460,91 @@ extern "C" { f_fss_count_lines(buffer, operation_name.start, &line); - fprintf(error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(error.to.stream, main.error.context, "%sThe section operation '", main.error.prefix); - - f_color_print_code(error.to.stream, main.context.notable); - f_print_dynamic_partial(error.to.stream, buffer, operation_name); - f_color_print_code(error.to.stream, main.context.reset); - - f_color_print(error.to.stream, main.error.context, "' from section '"); + flockfile(main.error.to.stream); - f_color_print_code(error.to.stream, main.context.notable); - f_print_dynamic_partial(error.to.stream, buffer, section_name); - f_color_print_code(error.to.stream, main.context.reset); + fl_print_format("%c%[%SThe section operation '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%/Q%]", main.error.to.stream, main.error.notable, buffer, operation_name, main.error.notable); + fl_print_format("%[' from section '%]", main.error.to.stream, main.error.context, buffer, main.error.context); + fl_print_format("%[%/Q%]", main.error.to.stream, main.error.notable, buffer, section_name, main.error.notable); + fl_print_format("%[' on line%] ", main.error.to.stream, main.error.context, main.error.context); + fl_print_format("%[%ul%]", main.error.to.stream, main.error.notable, line, main.error.notable); + fl_print_format(" %[is not a known operation name.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); - f_color_print(error.to.stream, main.error.context, "' on line "); - f_color_print(error.to.stream, main.context.set.notable, "%llu", line); - f_color_print(error.to.stream, main.error.context, " is not a known operation name.%c", f_string_eol_s[0]); + funlockfile(main.error.to.stream); } #endif // _di_fake_print_message_section_operation_unknown_ #ifndef _di_fake_print_warning_settings_content_empty_ void fake_print_warning_settings_content_empty(const fake_main_t main, const f_string_t path_file, const f_string_dynamic_t buffer, const f_string_range_t range_object, const f_string_t settings_name) { - if (main.error.verbosity == f_console_verbosity_quiet) return; - - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + if (main.warning.verbosity == f_console_verbosity_quiet) return; - f_color_print(f_type_warning, main.context.set.warning, "%sthe fakefile '", fll_error_print_warning); - f_color_print(f_type_warning, main.context.set.notable, "%s", path_file); - f_color_print(f_type_warning, main.context.set.warning, "' has empty content for the '"); - f_color_print(f_type_warning, main.context.set.notable, "%s", settings_name); - f_color_print(f_type_warning, main.context.set.warning, "' object '"); + flockfile(main.warning.to.stream); - f_color_print_code(f_type_warning, main.context.notable); - f_print_dynamic_partial(f_type_warning, buffer, range_object); - f_color_print_code(f_type_warning, main.context.reset); + fl_print_format("%c%[%SThe fakefile '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' has empty content for the '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, settings_name, main.warning.notable); + fl_print_format("%[' object '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%/Q%]", main.warning.to.stream, main.warning.notable, buffer, range_object, main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); - f_color_print(f_type_warning, main.context.set.warning, "'.%c", f_string_eol_s[0]); + funlockfile(main.warning.to.stream); } #endif // _di_fake_print_warning_settings_content_empty_ #ifndef _di_fake_print_warning_settings_content_invalid_ void fake_print_warning_settings_content_invalid(const fake_main_t main, const f_string_t path_file, const f_string_dynamic_t buffer, const f_string_range_t range_object, const f_string_range_t range_content, const f_string_t settings_name) { - if (main.error.verbosity == f_console_verbosity_quiet) return; - - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - - f_color_print(main.output.stream, main.context.set.warning, "%sthe fakefile '", fll_error_print_warning); - f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); - f_color_print(main.output.stream, main.context.set.warning, "' has an invalid content '"); - - f_color_print_code(main.output.stream, main.context.notable); - f_print_dynamic_partial(main.output.stream, buffer, range_content); - f_color_print_code(main.output.stream, main.context.reset); + if (main.warning.verbosity == f_console_verbosity_quiet) return; - f_color_print(main.output.stream, main.context.set.warning, "' for the '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", settings_name); - f_color_print(main.output.stream, main.context.set.warning, "' object '"); + flockfile(main.warning.to.stream); - f_color_print_code(main.output.stream, main.context.notable); - f_print_dynamic_partial(main.output.stream, buffer, range_object); - f_color_print_code(main.output.stream, main.context.reset); + fl_print_format("%c%[%SThe fakefile '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' has invalid content '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%/Q%]", main.warning.to.stream, main.warning.notable, buffer, range_content, main.warning.notable); + fl_print_format("%[' for the '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, settings_name, main.warning.notable); + fl_print_format("%[' object '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%/Q%]", main.warning.to.stream, main.warning.notable, buffer, range_object, main.warning.notable); + fl_print_format("%['.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.warning, "'.%c", f_string_eol_s[0]); + funlockfile(main.warning.to.stream); } #endif // _di_fake_print_warning_settings_content_invalid_ #ifndef _di_fake_print_warning_settings_content_multiple_ void fake_print_warning_settings_content_multiple(const fake_main_t main, const f_string_t path_file, const f_string_t name_object) { - if (main.error.verbosity != f_console_verbosity_verbose) return; + if (main.warning.verbosity == f_console_verbosity_quiet) return; - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.warning.to.stream); - f_color_print(f_type_warning, main.context.set.warning, "%sthe setting '", fll_error_print_warning); - f_color_print(f_type_warning, main.context.set.notable, "%s", name_object); - f_color_print(f_type_warning, main.context.set.warning, "' in the file '"); - f_color_print(f_type_warning, main.context.set.notable, "%s", path_file); + fl_print_format("%c%[%SThe fakefile '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, name_object, main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' may only have a single property, only using the first.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); - f_color_print(f_type_warning, main.context.set.warning, "' may only have a single property, only using the first.%c", f_string_eol_s[0]); + funlockfile(main.warning.to.stream); } #endif // _di_fake_print_warning_settings_content_multiple_ #ifndef _di_fake_print_warning_settings_object_multiple_ void fake_print_warning_settings_object_multiple(const fake_main_t main, const f_string_t path_file, const f_string_t label, const f_string_t name_object) { - if (main.error.verbosity != f_console_verbosity_verbose) return; + if (main.warning.verbosity == f_console_verbosity_quiet) return; - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + flockfile(main.warning.to.stream); - f_color_print(f_type_warning, main.context.set.warning, "%sthe %s object '", fll_error_print_warning, label); - f_color_print(f_type_warning, main.context.set.notable, "%s", name_object); - f_color_print(f_type_warning, main.context.set.warning, "' in the file '"); - f_color_print(f_type_warning, main.context.set.notable, "%s", path_file); + fl_print_format("%c%[%SThe object '%]", main.warning.to.stream, f_string_eol_s[0], main.warning.context, main.warning.prefix, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, name_object, main.warning.notable); + fl_print_format("%[' in the file '%]", main.warning.to.stream, main.warning.context, main.warning.context); + fl_print_format("%[%S%]", main.warning.to.stream, main.warning.notable, path_file, main.warning.notable); + fl_print_format("%[' may only be specified once, only using the first.%]%c", main.warning.to.stream, main.warning.context, main.warning.context, f_string_eol_s[0]); - f_color_print(f_type_warning, main.context.set.warning, "' may only be specified once, only using the first.%c", f_string_eol_s[0]); + funlockfile(main.warning.to.stream); } #endif // _di_fake_print_warning_settings_object_multiple_ diff --git a/level_3/fake/c/private-skeleton.c b/level_3/fake/c/private-skeleton.c index 0e80ae9..b2aa91a 100644 --- a/level_3/fake/c/private-skeleton.c +++ b/level_3/fake/c/private-skeleton.c @@ -20,8 +20,7 @@ extern "C" { f_status_t status = F_none; if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.output.stream, "%c", f_string_eol_s[0]); - f_color_print(main.output.stream, main.context.set.important, "Generating skeleton structure.%c", f_string_eol_s[0]); + fll_print_format("%cGenerating skeleton structure.%c", main.output.stream, f_string_eol_s[0], f_string_eol_s[0]); } { @@ -168,7 +167,7 @@ extern "C" { if (status == F_true) { if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Directory '%s' already exists.%c", path.string, f_string_eol_s[0]); + fll_print_format("Directory '%Q' already exists.%c", main.output.stream, path, f_string_eol_s[0]); } return F_none; @@ -176,10 +175,13 @@ extern "C" { if (status == F_false) { if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe path '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path.string); - f_color_print(main.error.to.stream, main.context.set.error, "' exists but is not a directory.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe path '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, path, main.error.notable); + fl_print_format("%[' exists but is not a directory.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } return F_status_set_warning(F_failure); @@ -189,10 +191,13 @@ extern "C" { if (F_status_is_error(status)) { if (F_status_set_fine(status) == F_file_found_not) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe path '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path.string); - f_color_print(main.error.to.stream, main.context.set.error, "' could not be created, a parent directory does not exist.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe path '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, path, main.error.notable); + fl_print_format("%[' could not be created, a parent directory does not exist.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } else { fll_error_file_print(main.error, F_status_set_fine(status), "f_directory_create", F_true, path.string, "create", fll_error_file_type_directory); @@ -202,7 +207,7 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Directory '%s' created.%c", path.string, f_string_eol_s[0]); + fll_print_format("Directory '%Q' created.%c", main.output.stream, path, f_string_eol_s[0]); } } else if (F_status_is_error(status)) { @@ -226,7 +231,7 @@ extern "C" { if (status == F_true) { if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "File '%s' already exists.%c", path.string, f_string_eol_s[0]); + fll_print_format("File '%Q' already exists.%c", main.output.stream, path, f_string_eol_s[0]); } return F_none; @@ -238,7 +243,7 @@ extern "C" { if (status == F_true) { if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "File '%s' already exists (as a symbolic link).%c", path.string, f_string_eol_s[0]); + fll_print_format("File '%Q' already exists (as a symbolic link).%c", main.output.stream, path, f_string_eol_s[0]); } return F_none; @@ -247,7 +252,7 @@ extern "C" { if (status == F_false) { if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "File '%s' already exists but is not a regular file (or symbolic link).%c", path.string, f_string_eol_s[0]); + fll_print_format("File '%Q' already exists but is not a regular file (or symbolic link).%c", main.output.stream, path, f_string_eol_s[0]); } return F_status_set_warning(F_none); @@ -263,10 +268,13 @@ extern "C" { if (F_status_is_error(status)) { if (F_status_set_fine(status) == F_file_found_not) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sThe file '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", path.string); - f_color_print(main.error.to.stream, main.context.set.error, "' could not be created, a parent directory does not exist.%c", f_string_eol_s[0]); + flockfile(main.error.to.stream); + + fl_print_format("%c%[%SThe file '%]", main.error.to.stream, f_string_eol_s[0], main.error.context, main.error.prefix, main.error.context); + fl_print_format("%[%Q%]", main.error.to.stream, main.error.notable, path, main.error.notable); + fl_print_format("%[' could not be created, a parent directory does not exist.%]%c", main.error.to.stream, main.error.context, main.error.context, f_string_eol_s[0]); + + funlockfile(main.error.to.stream); } else { fll_error_file_print(main.error, F_status_set_fine(status), "f_file_create", F_true, path.string, "create", fll_error_file_type_file); @@ -276,7 +284,7 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "File '%s' created.%c", path.string, f_string_eol_s[0]); + fll_print_format("File '%Q' created.%c", main.output.stream, path, f_string_eol_s[0]); } if (content.used) { @@ -303,7 +311,7 @@ extern "C" { } if (main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "File '%s' pre-populated.%c", path.string, f_string_eol_s[0]); + fll_print_format("File '%Q' pre-populated.%c", main.output.stream, path, f_string_eol_s[0]); } f_file_stream_close(F_true, &file); diff --git a/level_3/fake/data/build/dependencies b/level_3/fake/data/build/dependencies index c5fb705..97025c1 100644 --- a/level_3/fake/data/build/dependencies +++ b/level_3/fake/data/build/dependencies @@ -27,6 +27,7 @@ fl_directory fl_environment fl_fss fl_iki +fl_print fl_status fl_string fll_error @@ -34,4 +35,5 @@ fll_execute fll_file fll_fss fll_path +fll_print fll_program diff --git a/level_3/fake/data/build/settings b/level_3/fake/data/build/settings index ade6923..8c22f38 100644 --- a/level_3/fake/data/build/settings +++ b/level_3/fake/data/build/settings @@ -20,7 +20,7 @@ build_compiler gcc build_indexer ar build_language c build_libraries -lc -lcap -build_libraries-individual -lfll_error -lfll_execute -lfll_file -lfll_fss -lfll_path -lfll_program -lfl_console -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_fss -lfl_iki -lfl_status -lfl_string -lf_account -lf_capability -lf_color -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_path -lf_print -lf_signal -lf_string -lf_thread -lf_type_array -lf_utf +build_libraries-individual -lfll_error -lfll_execute -lfll_file -lfll_fss -lfll_path -lfll_print -lfll_program -lfl_console -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_fss -lfl_iki -lfl_print -lfl_status -lfl_string -lf_account -lf_capability -lf_color -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_path -lf_print -lf_signal -lf_string -lf_thread -lf_type_array -lf_utf build_libraries-level -lfll_2 -lfll_1 -lfll_0 build_libraries-monolithic -lfll build_sources_library fake.c private-common.c private-fake.c private-clean.c private-build.c private-make.c private-print.c private-skeleton.c @@ -52,7 +52,7 @@ defines_all -D_libcap_legacy_only_ -D_pthread_attr_unsupported_ -D_pthread_sigqu defines_static defines_shared -flags_all -z now -g -fdiagnostics-color=always -pthread -Wno-logical-not-parentheses -Wno-logical-op-parentheses -Wno-parentheses +flags_all -O2 -z now -g -fdiagnostics-color=always -pthread -Wno-logical-not-parentheses -Wno-logical-op-parentheses -Wno-parentheses flags_shared flags_static flags_library -fPIC diff --git a/level_3/fake/documents/fakefile.txt b/level_3/fake/documents/fakefile.txt index 7d5fd4f..14ab6dd 100644 --- a/level_3/fake/documents/fakefile.txt +++ b/level_3/fake/documents/fakefile.txt @@ -132,7 +132,7 @@ Fakefile Documentation: The second Content may be either 'success' or 'failure' to designate on whether or not to exit as success or failure. When set to "failure" this will trigger a failure message. - When set to "failure", the fail state will be forcibly changed to "fail" regardless of the currrent fail state. + When set to "failure", the fail state will be forcibly changed to "fail" regardless of the current fail state. - fail\: Toggle how the to handle an operation failure. -- 1.8.3.1