]> Kevux Git Server - fll/commitdiff
Progress: Continue Featureless Make, focusing on printing.
authorKevin Day <kevin@kevux.org>
Fri, 24 Feb 2023 05:37:34 +0000 (23:37 -0600)
committerKevin Day <kevin@kevux.org>
Fri, 24 Feb 2023 05:37:34 +0000 (23:37 -0600)
Update the header description comments.

I thought I was almost done but I noticed that I overlooked an entire directory tree.

45 files changed:
build/stand_alone/fake.settings
level_3/fake/c/main/build.h
level_3/fake/c/main/build/library.h
level_3/fake/c/main/build/load.c
level_3/fake/c/main/build/load.h
level_3/fake/c/main/build/object.h
level_3/fake/c/main/build/objects.h
level_3/fake/c/main/build/print-error.c
level_3/fake/c/main/build/print-error.h
level_3/fake/c/main/build/print-verbose.h
level_3/fake/c/main/build/print-warning.c [new file with mode: 0644]
level_3/fake/c/main/build/print-warning.h [new file with mode: 0644]
level_3/fake/c/main/build/print.h
level_3/fake/c/main/build/program.h
level_3/fake/c/main/build/skeleton.h
level_3/fake/c/main/clean.h
level_3/fake/c/main/clean/print.h
level_3/fake/c/main/common.h
level_3/fake/c/main/common/define.h
level_3/fake/c/main/common/enumeration.h
level_3/fake/c/main/common/print.h
level_3/fake/c/main/common/string.h
level_3/fake/c/main/common/type.h
level_3/fake/c/main/fake.h
level_3/fake/c/main/fake/path_generate.h
level_3/fake/c/main/make.h
level_3/fake/c/main/make/load_fakefile.c
level_3/fake/c/main/make/load_fakefile.h
level_3/fake/c/main/make/load_parameters.h
level_3/fake/c/main/make/operate.h
level_3/fake/c/main/make/operate_block.h
level_3/fake/c/main/make/operate_process.h
level_3/fake/c/main/make/operate_process_type.h
level_3/fake/c/main/make/operate_validate.h
level_3/fake/c/main/make/operate_validate_type.h
level_3/fake/c/main/make/print-error.h
level_3/fake/c/main/make/print-verbose.h
level_3/fake/c/main/make/print-warning.c
level_3/fake/c/main/make/print-warning.h
level_3/fake/c/main/make/print.h
level_3/fake/c/main/print-error.h
level_3/fake/c/main/print.c
level_3/fake/c/main/print.h
level_3/fake/c/main/skeleton.h
level_3/fake/data/build/settings

index 3e6e208..d77939f 100644 (file)
@@ -68,7 +68,7 @@ build_sources_program fll/level_2/print.c
 build_sources_program fll/level_2/program.c fll/level_2/program/common.c fll/level_2/program/print.c fll/level_2/private-program.c
 
 build_sources_program program/fake/main/build.c program/fake/main/clean.c program/fake/main/common.c program/fake/main/fake.c program/fake/main/make.c program/fake/main/print.c program/fake/main/print-error.c program/fake/main/print-warning.c program/fake/main/skeleton.c
-build_sources_program program/fake/main/build/library.c program/fake/main/build/load.c program/fake/main/build/object.c program/fake/main/build/objects.c program/fake/main/build/print.c program/fake/main/build/print-error.c program/fake/main/build/print-verbose.c program/fake/main/build/program.c program/fake/main/build/skeleton.c
+build_sources_program program/fake/main/build/library.c program/fake/main/build/load.c program/fake/main/build/object.c program/fake/main/build/objects.c program/fake/main/build/print.c program/fake/main/build/print-error.c program/fake/main/build/print-verbose.c program/fake/main/build/print-warning.c program/fake/main/build/program.c program/fake/main/build/skeleton.c
 build_sources_program program/fake/main/clean/print.c
 build_sources_program program/fake/main/common/define.c program/fake/main/common/enumeration.c program/fake/main/common/print.c program/fake/main/common/string.c program/fake/main/common/type.c
 build_sources_program program/fake/main/fake/path_generate.c
index c51a008..f0599bf 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_h
 #define _PRIVATE_build_h
index cde67f3..6c775d2 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build library functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_library_h
 #define _PRIVATE_build_library_h
index 1506104..e16da25 100644 (file)
@@ -1,6 +1,8 @@
 #include "../fake.h"
 #include "../print.h"
 #include "load.h"
+#include "print-error.h"
+#include "print-warning.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -198,15 +200,7 @@ extern "C" {
       for (uint8_t i = 0; i < 1; ++i) {
 
         if (!settings[i]->used) {
-          f_file_stream_lock(data->main->error.to);
-
-          fl_print_format("%r%[%QThe setting '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
-          fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, names[i], data->main->error.notable);
-          fl_print_format("%[' is required but is not specified in the settings file '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-          fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, path_file, data->main->error.notable);
-          fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
-          f_file_stream_unlock(data->main->error.to);
+          fake_build_print_error_missing_required_setting(data->setting, data->main->warning, names[i], path_file);
 
           failed = F_true;
         }
@@ -593,17 +587,7 @@ extern "C" {
         } // for
 
         if (found == F_false) {
-          if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
-            f_file_stream_lock(data->main->error.to);
-
-            fl_print_format("%r%[%QThe specified mode '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
-            fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, modes->array[i], data->main->error.notable);
-            fl_print_format("%[' is not a valid mode, according to '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-            fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, path_file, data->main->error.notable);
-            fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
-            f_file_stream_unlock(data->main->error.to);
-          }
+          fake_build_print_error_mode_invalid(data->setting, data->main->warning, modes->array[i], path_file);
 
           error_printed = F_true;
           *status = F_status_set_error(F_parameter);
@@ -687,15 +671,7 @@ extern "C" {
 
     if (F_status_is_error(*status)) {
       if (*status == F_status_set_error(F_string_too_large)) {
-        if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
-          f_file_stream_unlock(data->main->error.to);
-
-          fl_print_format("%r%[%QA setting in the file '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
-          fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, path_file, data->main->error.notable);
-          fl_print_format("%[' is too long.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
-          f_file_stream_unlock(data->main->error.to);
-        }
+        fake_build_print_error_setting_too_long(data->setting, data->main->warning, path_file);
       }
       else if (!error_printed) {
         fake_print_error(data->setting, data->main->error, *status, function);
@@ -1030,7 +1006,7 @@ extern "C" {
         0,                                           // search_exclusive
         0,                                           // search_shared
         0,                                           // search_static
-        fake_build_version_micro_e,             // version_file
+        fake_build_version_micro_e,                  // version_file
         0,                                           // version_major
         0,                                           // version_major_prefix
         0,                                           // version_micro
@@ -1039,7 +1015,7 @@ extern "C" {
         0,                                           // version_minor_prefix
         0,                                           // version_nano
         0,                                           // version_nano_prefix
-        fake_build_version_major_e,             // version_target
+        fake_build_version_major_e,                  // version_target
       };
 
       const f_string_static_t settings_single_version_default_name[] = {
@@ -1047,13 +1023,13 @@ extern "C" {
         f_string_empty_s,                            // build_indexer
         f_string_empty_s,                            // build_language
         f_string_empty_s,                            // build_name
-        f_string_empty_s,                            // build_script
-        f_string_empty_s,                            // build_shared
+        fake_common_setting_bool_yes_s,              // build_script
+        fake_common_setting_bool_yes_s,              // build_shared
         f_string_empty_s,                            // build_sources_object
         f_string_empty_s,                            // build_sources_object_shared
         f_string_empty_s,                            // build_sources_object_static
-        f_string_empty_s,                            // build_static
-        f_string_empty_s,                            // has_path_standard
+        fake_common_setting_bool_yes_s,              // build_static
+        fake_common_setting_bool_yes_s,              // has_path_standard
         f_string_empty_s,                            // path_headers
         f_string_empty_s,                            // path_language
         f_string_empty_s,                            // path_library_script
@@ -1067,12 +1043,12 @@ extern "C" {
         f_string_empty_s,                            // path_program_static
         f_string_empty_s,                            // path_sources
         f_string_empty_s,                            // path_sources_object
-        f_string_empty_s,                            // preserve_path_headers
+        fake_common_setting_bool_yes_s,              // preserve_path_headers
         f_string_empty_s,                            // process_post
         f_string_empty_s,                            // process_pre
-        f_string_empty_s,                            // search_exclusive
-        f_string_empty_s,                            // search_shared
-        f_string_empty_s,                            // search_static
+        fake_common_setting_bool_yes_s,              // search_exclusive
+        fake_common_setting_bool_yes_s,              // search_shared
+        fake_common_setting_bool_yes_s,              // search_static
         fake_build_version_micro_s,                  // version_file
         f_string_empty_s,                            // version_major
         f_string_empty_s,                            // version_major_prefix
@@ -1156,23 +1132,7 @@ extern "C" {
           else {
             *settings_single_bool[i] = F_true;
 
-            if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
-              f_file_stream_lock(data->main->warning.to);
-
-              fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_name[i], data->main->warning.notable);
-              fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
-              fl_print_format("%[' may be either '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_common_setting_bool_yes_s, data->main->warning.notable);
-              fl_print_format("%[' or '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_common_setting_bool_no_s, data->main->warning.notable);
-              fl_print_format("%[', defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_common_setting_bool_yes_s, data->main->warning.notable);
-              fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
-              f_file_stream_unlock(data->main->warning.to);
-            }
+            fake_build_print_warning_setting_boolean_may_only_be(data->setting, data->main->warning, settings_single_name[i], path_file, settings_single_version_default_name[i]);
           }
         }
         else if (settings_single_type[i] == 4) {
@@ -1188,25 +1148,7 @@ extern "C" {
           else {
             *settings_single_language[i] = fake_build_language_c_e;
 
-            if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
-              f_file_stream_lock(data->main->warning.to);
-
-              fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_name[i], data->main->warning.notable);
-              fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
-              fl_print_format("%[' may only be one of '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_bash_s, data->main->warning.notable);
-              fl_print_format("%[', '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_c_s, data->main->warning.notable);
-              fl_print_format("%[', or '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_cpp_s, data->main->warning.notable);
-              fl_print_format("%[', defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_c_s, data->main->warning.notable);
-              fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
-              f_file_stream_unlock(data->main->warning.to);
-            }
+            fake_build_print_warning_setting_language_may_only_be(data->setting, data->main->warning, settings_single_name[i], path_file, fake_build_language_c_s);
           }
         }
         else if (settings_single_type[i] == 5) {
@@ -1225,27 +1167,7 @@ extern "C" {
           else {
             *settings_single_version[i] = settings_single_version_default[i];
 
-            if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
-              f_file_stream_lock(data->main->warning.to);
-
-              fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_name[i], data->main->warning.notable);
-              fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
-              fl_print_format("%[' may only be one of '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_major_s, data->main->warning.notable);
-              fl_print_format("%[', '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_minor_s, data->main->warning.notable);
-              fl_print_format("%[', '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_micro_s, data->main->warning.notable);
-              fl_print_format("%[', or '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_nano_s, data->main->warning.notable);
-              fl_print_format("%[', defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-              fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_version_default_name[i], data->main->warning.notable);
-              fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
-              f_file_stream_unlock(data->main->warning.to);
-            }
+            fake_build_print_warning_setting_version_may_only_be(data->setting, data->main->warning, settings_single_name[i], path_file, settings_single_version_default_name[i]);
           }
         }
         else if (settings_single_destination[i]) {
@@ -1286,37 +1208,13 @@ extern "C" {
         if (checks && !setting->version_file) {
           setting->version_file = fake_build_version_micro_e;
 
-          if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
-            f_file_stream_lock(data->main->warning.to);
-
-            fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
-            fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_setting_name_version_file_s, data->main->warning.notable);
-            fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-            fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
-            fl_print_format("%[' is required, defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-            fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_micro_s, data->main->warning.notable);
-            fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
-            f_file_stream_unlock(data->main->warning.to);
-          }
+          fake_build_print_warning_setting_required_default_to(data->setting, data->main->warning, fake_build_setting_name_version_file_s, path_file, fake_build_version_micro_s);
         }
 
         if (checks && !setting->version_target) {
           setting->version_target = fake_build_version_major_e;
 
-          if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
-            f_file_stream_lock(data->main->warning.to);
-
-            fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
-            fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_setting_name_version_target_s, data->main->warning.notable);
-            fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-            fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
-            fl_print_format("%[' is required, defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
-            fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_major_s, data->main->warning.notable);
-            fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
-            f_file_stream_unlock(data->main->warning.to);
-          }
+          fake_build_print_warning_setting_required_default_to(data->setting, data->main->warning, fake_build_setting_name_version_target_s, path_file, fake_build_version_major_s);
         }
       }
     }
@@ -1390,19 +1288,7 @@ extern "C" {
           setting->search_shared = F_false;
         }
 
-        if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
-          f_file_stream_lock(data->main->error.to);
-
-          fl_print_format("%r%[%QThe parameters '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
-          fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_shared_disabled_s, data->main->error.notable);
-          fl_print_format("%[' and '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-          fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_shared_enabled_s, data->main->error.notable);
-          fl_print_format("%[' contradict, defaulting to '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-          fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, setting->build_shared ? fake_long_shared_enabled_s : fake_long_shared_disabled_s, data->main->error.notable);
-          fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
-          f_file_stream_unlock(data->main->error.to);
-        }
+        fake_build_print_warning_parameters_contradict(data->setting, data->main->warning, f_console_symbol_long_normal_s, fake_long_shared_disabled_s, f_console_symbol_long_normal_s, fake_long_shared_enabled_s, f_console_symbol_long_normal_s, setting->build_shared ? fake_long_shared_enabled_s : fake_long_shared_disabled_s);
       }
       else {
         setting->build_shared = F_false;
@@ -1425,19 +1311,7 @@ extern "C" {
           setting->search_static = F_false;
         }
 
-        if (data->main->error.verbosity >= f_console_verbosity_verbose_e) {
-          f_file_stream_lock(data->main->error.to);
-
-          fl_print_format("%r%[%QThe parameters '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
-          fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_static_disabled_s, data->main->error.notable);
-          fl_print_format("%[' and '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-          fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_static_enabled_s, data->main->error.notable);
-          fl_print_format("%[' contradict, defaulting to '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-          fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, setting->build_static ? fake_long_static_enabled_s : fake_long_static_disabled_s, data->main->error.notable);
-          fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
-          f_file_stream_unlock(data->main->error.to);
-        }
+        fake_build_print_warning_parameters_contradict(data->setting, data->main->warning, f_console_symbol_long_normal_s, fake_long_static_disabled_s, f_console_symbol_long_normal_s, fake_long_static_enabled_s, f_console_symbol_long_normal_s, setting->build_static ? fake_long_static_enabled_s : fake_long_static_disabled_s);
       }
       else {
         setting->build_static = F_false;
@@ -1451,19 +1325,7 @@ extern "C" {
 
     if (setting->build_language == fake_build_language_c_e || setting->build_language == fake_build_language_cpp_e) {
       if (setting->build_shared == F_false && setting->build_static == F_false) {
-        if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
-          f_file_stream_lock(data->main->error.to);
-
-          fl_print_format("%r%[%QThe build settings '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
-          fl_print_format("%[%r%]", data->main->error.to, data->main->error.notable, fake_build_setting_name_build_shared_s, data->main->error.notable);
-          fl_print_format("%[' and '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-          fl_print_format("%[%r%]", data->main->error.to, data->main->error.notable, fake_build_setting_name_build_static_s, data->main->error.notable);
-          fl_print_format("%[' cannot both be false when using the language '%]", data->main->error.to, data->main->error.context, data->main->error.context);
-          fl_print_format("%[%r%]", data->main->error.to, data->main->error.notable, setting->build_language == fake_build_language_c_e ? fake_build_language_c_s : fake_build_language_cpp_s, data->main->error.notable);
-          fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
-          f_file_stream_unlock(data->main->error.to);
-        }
+        fake_build_print_warning_setting_both_cannot_when_language(data->setting, data->main->warning, fake_build_setting_name_build_shared_s, fake_build_setting_name_build_static_s, setting->build_language == fake_build_language_c_e ? fake_build_language_c_s : fake_build_language_cpp_s);
 
         *status = F_status_set_error(F_failure);
       }
index 03377ef..0cea8ca 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build load functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_load_h
 #define _PRIVATE_build_load_h
index 3fc58b6..569a968 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build object functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_object_h
 #define _PRIVATE_build_object_h
index c4f5ac5..a7eb6bd 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build objects functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_objects_h
 #define _PRIVATE_build_objects_h
index 5950a43..3174c80 100644 (file)
@@ -27,6 +27,37 @@ extern "C" {
   }
 #endif // _di_fake_build_print_error_exist_not_directory_
 
+#ifndef _di_fake_build_print_error_missing_required_setting_
+  f_status_t fake_build_print_error_missing_required_setting(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path) {
+
+    if (!setting || print.verbosity < f_console_verbosity_error_e) return F_output_not;
+
+    fake_print_context_wrapped_variables(setting, print, "The setting ", name, " is required but is not specified in the settings file ", path, 0);
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_error_missing_required_setting_
+
+#ifndef _di_fake_build_print_error_mode_invalid_
+  f_status_t fake_build_print_error_mode_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t mode, const f_string_static_t path) {
+
+    fake_print_context_wrapped_variables(setting, print, "The specified mode ", mode, " in the settings file ", path, " is not a valid mode");
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_error_mode_invalid_
+
+#ifndef _di_fake_build_print_error_setting_too_long_
+  f_status_t fake_build_print_error_setting_too_long(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t path) {
+
+    if (!setting || print.verbosity < f_console_verbosity_error_e) return F_output_not;
+
+    fake_print_context_wrapped_variable(setting, print, "A setting in the settings file ", path, " is too long");
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_error_setting_too_long_
+
 #ifdef __cplusplus
 } // extern "C"
 #endif
index a1903fe..cebac95 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build error print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_print_error_h
 #define _PRIVATE_build_print_error_h
@@ -56,6 +60,77 @@ extern "C" {
   extern f_status_t fake_build_print_error_exist_not_directory(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t path);
 #endif // _di_fake_build_print_error_exist_not_directory_
 
+/**
+ * Print error message about a required setting missing.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param name
+ *   The name of the missing setting.
+ * @param path
+ *   The path to the file.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_variables()
+ */
+#ifndef _di_fake_build_print_error_missing_required_setting_
+  extern f_status_t fake_build_print_error_missing_required_setting(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path);
+#endif // _di_fake_build_print_error_missing_required_setting_
+
+
+/**
+ * Print error message about a mode being invalid.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param mode
+ *   The invalid mode.
+ * @param path
+ *   The path to the file.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_variables()
+ */
+#ifndef _di_fake_build_print_error_mode_invalid_
+  extern f_status_t fake_build_print_error_mode_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t mode, const f_string_static_t path);
+#endif // _di_fake_build_print_error_mode_invalid_
+
+/**
+ * Print error message about not creating path due to a parent directory not existing or is otherwise invalid.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param path
+ *   The path that cannot be created.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_variables()
+ */
+#ifndef _di_fake_build_print_error_setting_too_long_
+  extern f_status_t fake_build_print_error_setting_too_long(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t path);
+#endif // _di_fake_build_print_error_setting_too_long_
+
 #ifdef __cplusplus
 } // extern "C"
 #endif
index 1acdf10..cafaeeb 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build verbose print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_print_verbose_h
 #define _PRIVATE_build_print_verbose_h
diff --git a/level_3/fake/c/main/build/print-warning.c b/level_3/fake/c/main/build/print-warning.c
new file mode 100644 (file)
index 0000000..ca7ea5c
--- /dev/null
@@ -0,0 +1,142 @@
+#include "../fake.h"
+#include "print-warning.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_fake_build_print_warning_parameters_contradict_
+  f_status_t fake_build_print_warning_parameters_contradict(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_static_t symbol_3, const f_string_static_t name_3) {
+
+    if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+    fake_print_context_wrapped_parameters(setting, print, "The parameters ", symbol_1, name_1, " and ", symbol_2, name_2, " contradict, defaulting to ", symbol_3, name_3, 0);
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_warning_parameters_contradict_
+
+#ifndef _di_fake_build_print_warning_setting_boolean_may_only_be_
+  f_status_t fake_build_print_warning_setting_boolean_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+    if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+    f_file_stream_lock(print.to);
+
+    fake_print_line_first_unlocked(setting, print);
+
+    fl_print_format("%r%[%QThe setting '%]", print.to, f_string_eol_s, print.context, print.prefix, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, name, print.notable);
+    fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+    fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+    fl_print_format("%[' may be either '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_common_setting_bool_yes_s, print.notable);
+    fl_print_format("%[' or '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_common_setting_bool_no_s, print.notable);
+    fl_print_format("%[', defaulting to '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, default_to, print.notable);
+    fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+    f_file_stream_unlock(print.to);
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_warning_setting_boolean_may_only_be_
+
+#ifndef _di_fake_build_print_warning_setting_both_cannot_using_language_
+  f_status_t fake_build_print_warning_setting_both_cannot_when_language(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name_1, const f_string_static_t name_2, const f_string_static_t language) {
+
+    if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+    fake_print_context_wrapped_parameters(setting, print, "The build settings ", f_string_empty_s, name_1, " and ", f_string_empty_s, name_2, " cannot both be false when using the language ", f_string_empty_s, language, 0);
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_warning_setting_both_cannot_using_language_
+
+#ifndef _di_fake_build_print_warning_setting_language_may_only_be_
+  f_status_t fake_build_print_warning_setting_language_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+    if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+    f_file_stream_lock(print.to);
+
+    fake_print_line_first_unlocked(setting, print);
+
+    fl_print_format("%[%QThe setting '%]", print.to, print.context, print.prefix, print.context);
+    fl_print_format("%[%Q%]", print.to, print.notable, name, print.notable);
+    fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+    fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+    fl_print_format("%[' may only be one of '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_build_language_bash_s, print.notable);
+    fl_print_format("%[', '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_build_language_c_s, print.notable);
+    fl_print_format("%[', or '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_build_language_cpp_s, print.notable);
+    fl_print_format("%[', defaulting to '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, default_to, print.notable);
+    fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+    f_file_stream_unlock(print.to);
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_warning_setting_language_may_only_be_
+
+#ifndef _di_fake_build_print_warning_setting_required_default_to_
+  f_status_t fake_build_print_warning_setting_required_default_to(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+    if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+    f_file_stream_lock(print.to);
+
+    fake_print_line_first_unlocked(setting, print);
+
+    fl_print_format("%[%QThe setting '%]", print.to, print.context, print.prefix, print.context);
+    fl_print_format("%[%Q%]", print.to, print.notable, name, print.notable);
+    fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+    fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+    fl_print_format("%[' is required, defaulting to '%]", print.to, print.context, print.context);
+    fl_print_format("%[%Q%]", print.to, print.notable, default_to, print.notable);
+    fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+    f_file_stream_unlock(print.to);
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_warning_setting_required_default_to_
+
+#ifndef _di_fake_build_print_warning_setting_version_may_only_be_
+  f_status_t fake_build_print_warning_setting_version_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+    if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+    f_file_stream_lock(print.to);
+
+    fake_print_line_first_unlocked(setting, print);
+
+    fl_print_format("%[%QThe setting '%]", print.to, f_string_eol_s, print.context, print.prefix, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, name, print.notable);
+    fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+    fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+    fl_print_format("%[' may only be one of '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_major_s, print.notable);
+    fl_print_format("%[', '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_minor_s, print.notable);
+    fl_print_format("%[', '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_micro_s, print.notable);
+    fl_print_format("%[', or '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_nano_s, print.notable);
+    fl_print_format("%[', defaulting to '%]", print.to, print.context, print.context);
+    fl_print_format("%[%r%]", print.to, print.notable, default_to, print.notable);
+    fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+    f_file_stream_unlock(print.to);
+
+    return F_none;
+  }
+#endif // _di_fake_build_print_warning_setting_version_may_only_be_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/level_3/fake/c/main/build/print-warning.h b/level_3/fake/c/main/build/print-warning.h
new file mode 100644 (file)
index 0000000..a879d95
--- /dev/null
@@ -0,0 +1,197 @@
+/**
+ * FLL - Level 3
+ *
+ * Project: Featureless Make
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build warning print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
+ */
+#ifndef _PRIVATE_build_print_warning_h
+#define _PRIVATE_build_print_warning_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Print error message regarding two parameters contradicting and designating a default fallback parameter.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param symbol_1
+ *   The symbol for the first parameter.
+ * @param name_1
+ *   The name for the first parameter.
+ * @param symbol_2
+ *   The symbol for the second parameter.
+ * @param name_2
+ *   The name for the second parameter.
+ * @param symbol_3
+ *   The symbol for the third parameter (the fallback).
+ * @param name_3
+ *   The name for the third parameter (the fallback).
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_parameters()
+ */
+#ifndef _di_fake_build_print_warning_parameters_contradict_
+  extern f_status_t fake_build_print_warning_parameters_contradict(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_static_t symbol_3, const f_string_static_t name_3);
+#endif // _di_fake_build_print_warning_parameters_contradict_
+
+/**
+ * Print warning message that the setting may only be from a specific set of allowed boolean values.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param name
+ *   The name for the setting.
+ * @param path
+ *   The path to the setting file.
+ * @param default_to
+ *   The value being defaulted to.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_build_print_warning_setting_boolean_may_only_be_
+  extern f_status_t fake_build_print_warning_setting_boolean_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_boolean_may_only_be_
+
+/**
+ * Print warning message regarding two parameters being both false when using a given language.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param name_1
+ *   The name for the first setting.
+ * @param name_2
+ *   The name for the second setting.
+ * @param language
+ *   The name for the language.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_parameters()
+ */
+#ifndef _di_fake_build_print_error_settings_both_cannot_using_language_
+  extern f_status_t fake_build_print_warning_setting_both_cannot_when_language(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name_1, const f_string_static_t name_2, const f_string_static_t name_3);
+#endif // _di_fake_build_print_error_settings_both_cannot_using_language_
+
+/**
+ * Print warning message that the setting may only be from a specific set of allowed language values.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param name
+ *   The name for the setting.
+ * @param path
+ *   The path to the setting file.
+ * @param default_to
+ *   The value being defaulted to.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_build_print_warning_setting_language_may_only_be_
+  extern f_status_t fake_build_print_warning_setting_language_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_language_may_only_be_
+
+/**
+ * Print warning message regarding two parameters being both false when using a given language.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param name_1
+ *   The name for the first setting.
+ * @param name_2
+ *   The name for the second setting.
+ * @param language
+ *   The name for the language.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_parameters()
+ */
+#ifndef _di_fake_build_print_warning_setting_required_default_to_
+  f_status_t fake_build_print_warning_setting_required_default_to(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_required_default_to_
+
+/**
+ * Print warning message that the setting may only be from a specific set of allowed version values.
+ *
+ * @param setting
+ *   The main program settings.
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   Designates the how and where to print.
+ * @param name
+ *   The name for the setting.
+ * @param path
+ *   The path to the setting file.
+ * @param default_to
+ *   The value being defaulted to.
+ *
+ * @return
+ *   F_none on success.
+ *   F_output_not on success, but no printing is performed.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_build_print_warning_setting_version_may_only_be_
+  extern f_status_t fake_build_print_warning_setting_version_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_version_may_only_be_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _PRIVATE_build_print_warning_h
index 11b2ce4..16b654d 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_print_h
 #define _PRIVATE_build_print_h
index 517b045..c38310c 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build program functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_program_h
 #define _PRIVATE_build_program_h
index ab39895..572cb81 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build skeleton functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_build_skeleton_h
 #define _PRIVATE_build_skeleton_h
index ed42d02..cbf493f 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides clean functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_clean_h
 #define _PRIVATE_clean_h
index 8608a37..f8c77fa 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides clean print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_clean_print_h
 #define _PRIVATE_clean_print_h
index 1fb9156..f6199e1 100644 (file)
@@ -5,7 +5,7 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the common functionality.
+ * Provides common functionality.
  *
  * This is auto-included and should not need to be explicitly included.
  */
index d25de6c..f308b45 100644 (file)
@@ -5,7 +5,7 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the common defines.
+ * Provides common define functionality.
  *
  * This is auto-included and should not need to be explicitly included.
  */
index dc7e31d..fb07ffc 100644 (file)
@@ -5,7 +5,7 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the common enumeration structures.
+ * Provides common enumeration functionality.
  *
  * This is auto-included and should not need to be explicitly included.
  */
index 777da67..fd48ee5 100644 (file)
@@ -5,7 +5,7 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the common print functionality.
+ * Provides common print functionality.
  *
  * This is auto-included and should not need to be explicitly included.
  */
index 1465fb1..298b19e 100644 (file)
@@ -5,7 +5,7 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the common string structures.
+ * Provides common string functionality.
  *
  * This is auto-included and should not need to be explicitly included.
  */
index bb4ea27..166b894 100644 (file)
@@ -5,7 +5,7 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the common type structures.
+ * Provides common type functionality.
  *
  * This is auto-included and should not need to be explicitly included.
  */
index 6d3649b..7479367 100644 (file)
  *
  * The built sources are placed in the build directory with the following structure:
  *   - build/
- *     - data/
- *     - documents/
- *     - includes/
- *     - libraries/
- *       - script/
- *       - shared/
- *       - static/
- *     - objects/
- *     - programs/
- *       - script/
- *       - shared/
- *       - static/
- *     - settings/
- *     - stage/
+ *     â”œâ”€â”€ data
+ *     â”œâ”€â”€ documentation
+ *     â”œâ”€â”€ documents
+ *     â”œâ”€â”€ includes
+ *     â”œâ”€â”€ libraries
+ *     â”‚   â”œâ”€â”€ script
+ *     â”‚   â”œâ”€â”€ shared
+ *     â”‚   â””── static
+ *     â”œâ”€â”€ objects
+ *     â”‚   â”œâ”€â”€ script
+ *     â”‚   â”œâ”€â”€ shared
+ *     â”‚   â””── static
+ *     â”œâ”€â”€ programs
+ *     â”‚   â”œâ”€â”€ script
+ *     â”‚   â”œâ”€â”€ shared
+ *     â”‚   â””── static
+ *     â”œâ”€â”€ settings
+ *     â””── stage
  *
  * The "data/" directory contains all file data, such as firmware or files commonly found under /usr/share in a standard GNU Linux system.
- * The "documents/" directory contains all documentation after any build-time processing.
- * The "libraries/" and "programs/" directories contains the sub-directories "script/", "shared/", and "static/".
+ * The "documentation/" directory contains special documentation files such as man pages.
+ * The "documents/" directory contains all other documents, data, and documentation.
+ * The "includes/" directory contains all include files (such as C header files).
+ * The "libraries/", "objects/", and "programs/" directories contains the sub-directories "script/", "shared/", and "static/".
  * The "libraries/" directory will contain compiled libraries or library-like scripts in their respective sub-directories.
  * The "objects/" directory will contain any compile object files.
  * The "programs/" directory will contain compiled programs or program-like scripts in their respective sub-directories.
index c27f8f6..eacffca 100644 (file)
@@ -5,9 +5,9 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the path generate functionality for the fake program.
+ * Provides path generate functionality.
  *
- * This is to be specifically included by the fake program sources and not anywhere else.
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_fake_path_generate_h
 #define _fake_fake_path_generate_h
index f3b2cd9..8098223 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_make_h
 #define _PRIVATE_make_h
index c5b2020..61d5e4a 100644 (file)
@@ -123,7 +123,7 @@ extern "C" {
 
           if (fl_string_dynamic_partial_compare_string(fake_make_item_settings_s.string, data_make->buffer, fake_make_item_settings_s.used, list_objects.array[i]) == F_equal_to) {
             if (!missing_settings) {
-              fake_make_print_warning_settings_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_settings_s);
+              fake_make_print_warning_setting_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_settings_s);
 
               continue;
             }
@@ -154,7 +154,7 @@ extern "C" {
 
           if (fl_string_dynamic_partial_compare_string(fake_make_item_main_s.string, data_make->buffer, fake_make_item_main_s.used, list_objects.array[i]) == F_equal_to) {
             if (!missing_main) {
-              fake_make_print_warning_settings_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_main_s);
+              fake_make_print_warning_setting_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_main_s);
 
               continue;
             }
@@ -334,15 +334,15 @@ extern "C" {
         data_make->setting_make.load_build = F_false;
       }
       else {
-        fake_make_print_warning_settings_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[0], fake_make_item_settings_s);
+        fake_make_print_warning_setting_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[0], fake_make_item_settings_s);
       }
 
       if (content->used > 1) {
-        fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_load_build_s);
+        fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_load_build_s);
       }
     }
     else {
-      fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_load_build_s);
+      fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_load_build_s);
     }
   }
 #endif // _di_fake_make_load_fakefile_setting_build_
@@ -354,11 +354,11 @@ extern "C" {
       *range_compiler = &content->array[content->used - 1];
 
       if (content->used > 1) {
-        fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_compiler_s);
+        fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_compiler_s);
       }
     }
     else {
-      fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_compiler_s);
+      fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_compiler_s);
     }
   }
 #endif // _di_fake_make_load_fakefile_setting_compiler_
@@ -549,15 +549,15 @@ extern "C" {
         data_make->setting_make.fail = fake_make_operation_fail_ignore_e;
       }
       else {
-        fake_make_print_warning_settings_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[content->used - 1], fake_make_item_settings_s);
+        fake_make_print_warning_setting_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[content->used - 1], fake_make_item_settings_s);
       }
 
       if (content->used > 1) {
-        fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_fail_s);
+        fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_fail_s);
       }
     }
     else {
-      fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_fail_s);
+      fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_fail_s);
     }
   }
 #endif // _di_fake_make_load_fakefile_setting_fail_
@@ -569,11 +569,11 @@ extern "C" {
       *range_indexer = &content->array[content->used - 1];
 
       if (content->used > 1) {
-        fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_indexer_s);
+        fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_indexer_s);
       }
     }
     else {
-      fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_indexer_s);
+      fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_indexer_s);
     }
   }
 #endif // _di_fake_make_load_fakefile_setting_indexer_
@@ -614,7 +614,7 @@ extern "C" {
       }
     }
     else {
-      fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_return_s);
+      fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_return_s);
     }
 
     return F_none;
index a0296df..26ee88f 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make load fakefile functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_load_fakefile_h
 #define _fake_make_load_fakefile_h
index 613108c..b50902e 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make load parameter functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_load_parameters_h
 #define _fake_make_load_parameters_h
index 042a673..a75c8ca 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_operate_h
 #define _fake_make_operate_h
index 08cb2d1..c72404f 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate block functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_operate_block_h
 #define _fake_make_operate_block_h
index 7739990..22ce8d2 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate process functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_operate_process_h
 #define _fake_make_operate_process_h
index 31525a2..379044c 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make opeate process type functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_operate_type_h
 #define _fake_make_operate_type_h
index 714b781..dfeb654 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate validate functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_operate_validate_h
 #define _fake_make_operate_validate_h
index 2d1abcc..042a181 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate validate type functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_operate_validate_type_h
 #define _fake_make_operate_validate_type_h
index 07eeaf4..dc16a63 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make error print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_print_error_h
 #define _fake_make_print_error_h
index a8a1835..e79cfcd 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make verbose print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_print_verbose_h
 #define _fake_make_print_verbose_h
index db7e656..50f6697 100644 (file)
@@ -70,8 +70,8 @@ extern "C" {
   }
 #endif // _di_fake_make_print_warning_file_not_found_
 
-#ifndef _di_fake_make_print_warning_settings_content_empty_
-  f_status_t fake_make_print_warning_settings_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_content_empty_
+  f_status_t fake_make_print_warning_setting_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name) {
 
     if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
 
@@ -91,10 +91,10 @@ extern "C" {
 
     return F_none;
   }
-#endif // _di_fake_make_print_warning_settings_content_empty_
+#endif // _di_fake_make_print_warning_setting_content_empty_
 
-#ifndef _di_fake_make_print_warning_settings_content_invalid_
-  f_status_t fake_make_print_warning_settings_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_content_invalid_
+  f_status_t fake_make_print_warning_setting_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name) {
 
     if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
 
@@ -116,10 +116,10 @@ extern "C" {
 
     return F_none;
   }
-#endif // _di_fake_make_print_warning_settings_content_invalid_
+#endif // _di_fake_make_print_warning_setting_content_invalid_
 
-#ifndef _di_fake_make_print_warning_settings_content_multiple_
-  f_status_t fake_make_print_warning_settings_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_content_multiple_
+  f_status_t fake_make_print_warning_setting_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
 
     if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
 
@@ -127,10 +127,10 @@ extern "C" {
 
     return F_none;
   }
-#endif // _di_fake_make_print_warning_settings_content_multiple_
+#endif // _di_fake_make_print_warning_setting_content_multiple_
 
-#ifndef _di_fake_make_print_warning_settings_object_multiple_
-  f_status_t fake_make_print_warning_settings_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_object_multiple_
+  f_status_t fake_make_print_warning_setting_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
 
     if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
 
@@ -138,7 +138,7 @@ extern "C" {
 
     return F_none;
   }
-#endif // _di_fake_make_print_warning_settings_object_multiple_
+#endif // _di_fake_make_print_warning_setting_object_multiple_
 
 #ifdef __cplusplus
 } // extern "C"
index 7c232f7..b46b7e5 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make warning print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_print_warning_h
 #define _fake_make_print_warning_h
@@ -142,9 +146,9 @@ extern "C" {
  *   F_none on success.
  *   F_output_not on success, but no printing is performed.
  */
-#ifndef _di_fake_make_print_warning_settings_content_empty_
-  extern f_status_t fake_make_print_warning_settings_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_content_empty_
+#ifndef _di_fake_make_print_warning_setting_content_empty_
+  extern f_status_t fake_make_print_warning_setting_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_content_empty_
 
 /**
  * Print warning message when fake settings content is invalid.
@@ -171,9 +175,9 @@ extern "C" {
  *   F_none on success.
  *   F_output_not on success, but no printing is performed.
  */
-#ifndef _di_fake_make_print_warning_settings_content_invalid_
-  extern f_status_t fake_make_print_warning_settings_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_content_invalid_
+#ifndef _di_fake_make_print_warning_setting_content_invalid_
+  extern f_status_t fake_make_print_warning_setting_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_content_invalid_
 
 /**
  * Print warning message when settings content has too many values.
@@ -194,9 +198,9 @@ extern "C" {
  *   F_none on success.
  *   F_output_not on success, but no printing is performed.
  */
-#ifndef _di_fake_make_print_warning_settings_content_multiple_
-  extern f_status_t fake_make_print_warning_settings_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_content_multiple_
+#ifndef _di_fake_make_print_warning_setting_content_multiple_
+  extern f_status_t fake_make_print_warning_setting_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_content_multiple_
 
 /**
  * Print warning message when fakefile has too many objects with the same name.
@@ -217,9 +221,9 @@ extern "C" {
  *   F_none on success.
  *   F_output_not on success, but no printing is performed.
  */
-#ifndef _di_fake_make_print_warning_settings_object_multiple_
-  extern f_status_t fake_make_print_warning_settings_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_object_multiple_
+#ifndef _di_fake_make_print_warning_setting_object_multiple_
+  extern f_status_t fake_make_print_warning_setting_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_object_multiple_
 
 #ifdef __cplusplus
 } // extern "C"
index 7814abb..e1c1389 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides make print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_make_print_h
 #define _fake_make_print_h
index b61aba7..b1c3228 100644 (file)
@@ -5,7 +5,7 @@
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
  *
- * Provides the error print functionality.
+ * Provides error print functionality.
  *
  * This is auto-included and should not need to be explicitly included.
  */
index 10672b2..c141ea7 100644 (file)
@@ -53,6 +53,27 @@ extern "C" {
   }
 #endif // _di_fake_print_context_wrapped_parameter_
 
+#ifndef _di_fake_print_context_wrapped_parameters_
+  void fake_print_context_wrapped_parameters(fake_setting_t * const setting, const fl_print_t print, const f_string_t before, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_t between_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_t between_2, const f_string_static_t symbol_3, const f_string_static_t name_3, const f_string_t after) {
+
+    if (!setting) return;
+
+    f_file_stream_lock(print.to);
+
+    fake_print_line_first_unlocked(setting, print);
+
+    fl_print_format("%[%Q%S'%]", print.to, print.context, print.prefix, before, print.context);
+    fl_print_format("%[%Q%Q%]", print.to, print.notable, symbol_1, name_1, print.notable);
+    fl_print_format("%['%S'%]%r", print.to, print.context, between_1, print.context);
+    fl_print_format("%[%Q%Q%]", print.to, print.notable, symbol_2, name_2, print.notable);
+    fl_print_format("%['%S'%]%r", print.to, print.context, between_2, print.context);
+    fl_print_format("%[%Q%Q%]", print.to, print.notable, symbol_3, name_3, print.notable);
+    fl_print_format("%['%S.%]%r", print.to, print.context, after, print.context, f_string_eol_s);
+
+    f_file_stream_unlock(print.to);
+  }
+#endif // _di_fake_print_context_wrapped_parameters_
+
 #ifndef _di_fake_print_context_wrapped_variable_
   void fake_print_context_wrapped_variable(fake_setting_t * const setting, const fl_print_t print, const f_string_t before, const f_string_static_t variable, const f_string_t after) {
 
index 8712eeb..3c42e29 100644 (file)
@@ -4,6 +4,10 @@
  * Project: UTF8
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _fake_print_h
 #define _fake_print_h
@@ -91,10 +95,9 @@ extern "C" {
  *   Set to NULL to disable.
  * @param symbol
  *   The string representing the symbol for the parameter.
- *   Set to NULL to disable.
+ *   Set to f_string_empty_s to disable.
  * @param name
  *   The string representing the parameter name.
- *   May be an empty string (like f_string_empty_s) to not print anything.
  * @param after
  *   The string being printed after the variable.
  *   Likely should have a space added at the start of the string.
@@ -110,6 +113,61 @@ extern "C" {
   extern void fake_print_context_wrapped_parameter(fake_setting_t * const setting, const fl_print_t print, const f_string_t before, const f_string_static_t symbol, const f_string_static_t name, const f_string_t after);
 #endif // _di_fake_print_context_wrapped_parameter_
 
+/**
+ * Print a parameter context message with a there parameters, with symbols, and wrapping strings.
+ *
+ * This is primarily used by numerous print functions to reduce code.
+ * This is not used for any print functions that has complex format structures.
+ *
+ * @param setting
+ *   The main program settings.
+ *   (Must be of type fake_setting_t.)
+ *
+ *   This does not alter setting.status.
+ * @param print
+ *   The output structure to print to.
+ * @param before
+ *   The string being printed before the variable.
+ *   Likely should have a space added at the end of the string.
+ *   Set to NULL to disable.
+ * @param symbol_1
+ *   The string representing the symbol for the parameter.
+ *   Set to f_string_empty_s to disable.
+ * @param name_1
+ *   The string representing the parameter name.
+ * @param middle_1
+ *   The string being printed before the variable.
+ *   Likely should have a space added at the end of the string.
+ *   Set to NULL to disable.
+ * @param symbol_2
+ *   The string representing the symbol for the parameter.
+ *   Set to f_string_empty_s to disable.
+ * @param name_2
+ *   The string representing the parameter name.
+ * @param middle_2
+ *   The string being printed before the variable.
+ *   Likely should have a space added at the end of the string.
+ *   Set to NULL to disable.
+ * @param symbol_3
+ *   The string representing the symbol for the parameter.
+ *   Set to f_string_empty_s to disable.
+ * @param name_3
+ *   The string representing the parameter name.
+ * @param after
+ *   The string being printed after the variable.
+ *   Likely should have a space added at the start of the string.
+ *   Set to NULL to disable.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_print_context_wrapped_parameter_
+  extern void fake_print_context_wrapped_parameters(fake_setting_t * const setting, const fl_print_t print, const f_string_t before, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_t between_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_t between_2, const f_string_static_t symbol_3, const f_string_static_t name_3, const f_string_t after);
+#endif // _di_fake_print_context_wrapped_parameter_
+
 /**
  * Print a wrapped context message with a before string, an after string, and a string variable.
  *
index 21cc97a..685121d 100644 (file)
@@ -4,6 +4,10 @@
  * Project: Featureless Make
  * API Version: 0.7
  * Licenses: lgpl-2.1-or-later
+ *
+ * Provides skeleton functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
  */
 #ifndef _PRIVATE_skeleton_h
 #define _PRIVATE_skeleton_h
index ebfcf37..0366e1e 100644 (file)
@@ -28,7 +28,7 @@ build_libraries-level -lfll_2 -lfll_1 -lfll_0
 build_libraries-monolithic -lfll
 
 build_sources_library main/build.c main/clean.c main/common.c main/fake.c main/make.c main/print.c main/print-error.c main/print-warning.c main/skeleton.c
-build_sources_library main/build/library.c main/build/load.c main/build/object.c main/build/objects.c main/build/print.c main/build/print-error.c main/build/print-verbose.c main/build/program.c main/build/skeleton.c
+build_sources_library main/build/library.c main/build/load.c main/build/object.c main/build/objects.c main/build/print.c main/build/print-error.c main/build/print-verbose.c main/build/print-warning.c main/build/program.c main/build/skeleton.c
 build_sources_library main/clean/print.c
 build_sources_library main/common/define.c main/common/enumeration.c main/common/print.c main/common/string.c main/common/type.c
 build_sources_library main/fake/path_generate.c
@@ -37,11 +37,11 @@ build_sources_library main/make/load_fakefile.c main/make/load_parameters.c main
 build_sources_program main/main.c
 
 build_sources_headers main/build.h main/clean.h main/common.h main/fake.h main/make.h main/print.h main/print-error.h main/print-warning.h main/skeleton.h
-build_sources_headers main/build/library.h main/build/load.h main/build/object.h main/build/objects.h main/build/print.h main/build/print-error.h main/build/print-verbose.h main/build/program.h main/build/skeleton.h
+build_sources_headers main/build/library.h main/build/load.h main/build/object.h main/build/objects.h main/build/print.h main/build/print-error.h main/build/print-verbose.h main/build/print-warning.h main/build/program.h main/build/skeleton.h
 build_sources_headers main/clean/print.h
 build_sources_headers main/common/define.h main/common/enumeration.h main/common/print.h main/common/string.h main/common/type.h
 build_sources_headers main/fake/path_generate.h
-build_sources_headers main/make/load_fakefile.h main/make/load_parameters.h main/make/operate_block.h main/make/operate.h main/make/operate_process.h main/make/operate_process_type.h main/make/operate_validate.h main/make/operate_validate_type.h main/make/print.h main/make/print-error.h main/make/print-verbose.h main/make/print-warning.h
+build_sources_headers main/make/load_fakefile.h main/make/load_parameters.h main/make/operate_block.h main/make/operate.h main/make/operate_process.h main/make/operate_process_type.h main/make/operate_validate.h main/make/operate_validate_type.h main/make/print.h main/make/print-error.h main/make/print-verbose.h main/make/print-warning.h main/make/print-warning.h
 
 build_sources_documentation man