]> Kevux Git Server - controller/commitdiff
Progress: Continue changes to locking, improve debugging and error printing.
authorKevin Day <Kevin@kevux.org>
Wed, 5 Nov 2025 02:49:05 +0000 (20:49 -0600)
committerKevin Day <Kevin@kevux.org>
Wed, 5 Nov 2025 02:49:05 +0000 (20:49 -0600)
A recent work in progress commit resulted in the actions being incorrectly initialized.
This presents a good opportunity to improve the error reporting with the specific file and line number of the error.
This behavior can be disabled by turning off debug during build time.

The debug is enabled using the `debug` build setting mode.
This `debug` build settings mode is enabled by default.

Move the `controller_rule_instance_perform()` logic out and then collapse the `controller_rule_instance_perform_details()` functions into `er_rule_instance_perform()` functions to shorten their names.
This addresses some more locking issues resulting from many of the recent threading changes.

There is still a lot more work to do.
Particularly, there is addressing the problem causes the actions to be empty.

66 files changed:
data/build/defines
data/build/settings
sources/c/program/controller/main/common/define.h
sources/c/program/controller/main/common/print.c
sources/c/program/controller/main/common/print.h
sources/c/program/controller/main/entry.c
sources/c/program/controller/main/entry/action.c
sources/c/program/controller/main/entry/preprocess.c
sources/c/program/controller/main/entry/process.c
sources/c/program/controller/main/entry/setting.c
sources/c/program/controller/main/instance/prepare.c
sources/c/program/controller/main/instance/wait.c
sources/c/program/controller/main/perform.c
sources/c/program/controller/main/print/debug/perform/pid.c
sources/c/program/controller/main/print/debug/rule/action.c
sources/c/program/controller/main/print/debug/rule/action.h
sources/c/program/controller/main/print/debug/rule/execute.c
sources/c/program/controller/main/print/debug/rule/execute.h
sources/c/program/controller/main/print/debug/rule/instance.c
sources/c/program/controller/main/print/debug/rule/instance.h
sources/c/program/controller/main/print/error/entry.c
sources/c/program/controller/main/print/error/entry.h
sources/c/program/controller/main/print/error/entry/action.c
sources/c/program/controller/main/print/error/entry/action.h
sources/c/program/controller/main/print/error/entry/item.c
sources/c/program/controller/main/print/error/entry/item.h
sources/c/program/controller/main/print/error/entry/setting.c
sources/c/program/controller/main/print/error/entry/setting.h
sources/c/program/controller/main/print/error/lock.c
sources/c/program/controller/main/print/error/lock.h
sources/c/program/controller/main/print/error/perform/pid.c
sources/c/program/controller/main/print/error/perform/pid.h
sources/c/program/controller/main/print/error/rule.c
sources/c/program/controller/main/print/error/rule.h
sources/c/program/controller/main/print/error/rule/action.c
sources/c/program/controller/main/print/error/rule/action.h
sources/c/program/controller/main/print/error/rule/instance.c
sources/c/program/controller/main/print/error/rule/instance.h
sources/c/program/controller/main/print/error/rule/item.c
sources/c/program/controller/main/print/error/rule/item.h
sources/c/program/controller/main/print/error/rule/setting.c
sources/c/program/controller/main/print/error/rule/setting.h
sources/c/program/controller/main/print/message/entry/action.c
sources/c/program/controller/main/print/message/entry/item.c
sources/c/program/controller/main/print/warning/entry/action.c
sources/c/program/controller/main/print/warning/entry/action.h
sources/c/program/controller/main/print/warning/entry/item.c
sources/c/program/controller/main/print/warning/entry/item.h
sources/c/program/controller/main/print/warning/entry/setting.c
sources/c/program/controller/main/print/warning/entry/setting.h
sources/c/program/controller/main/print/warning/rule/action.c
sources/c/program/controller/main/print/warning/rule/action.h
sources/c/program/controller/main/print/warning/rule/item.c
sources/c/program/controller/main/print/warning/rule/item.h
sources/c/program/controller/main/print/warning/rule/setting.c
sources/c/program/controller/main/print/warning/rule/setting.h
sources/c/program/controller/main/rule.c
sources/c/program/controller/main/rule/action.c
sources/c/program/controller/main/rule/execute.c
sources/c/program/controller/main/rule/instance.c
sources/c/program/controller/main/rule/instance.h
sources/c/program/controller/main/rule/item.c
sources/c/program/controller/main/rule/read.c
sources/c/program/controller/main/rule/setting.c
sources/c/program/controller/main/rule/wait.c
sources/c/program/controller/main/thread/instance.c

index f282d0fd2c18a98b66378bf3304f41246e6ce24c..4a3be139554eda82ecbedaec35d014fa76017bc8 100644 (file)
@@ -1,7 +1,8 @@
 # fss-0000
 
-_di_libcap_         Disable libcap support, allow for compiling and linking without libcap (-lcap).
-_di_thread_support_ Disables thread support.
+_di_libcap_           Disable libcap support, allow for compiling and linking without libcap (-lcap).
+_di_thread_support_   Disables thread support.
+_en_controller_debug_ Enable debug support (such as printing file and line number in error messages).
 
 _libcap_legacy_only_ Disable functionality provided by later versions of libcap (2.43 and later).
 
index ca95ae0c2a0a9ac89062e09da3b8012db6fc5a9f..9bd6068e2403ae2548de598eec1e7b1b5426eeca 100644 (file)
@@ -4,6 +4,7 @@
 #   - android:           Compile on an android system (using Termux; may need modification depending on the android system).
 #   - clang:             Use CLang rather than the default, which is generally GCC.
 #   - coverage:          Compile for building coverage.
+#   - debug:             Enable debug support.
 #   - fanalyzer:         Compile using GCC's -fanalyzer compile time option.
 #   - gcc:               Use GCC specific settings.
 #   - gcc_13:            Use GCC version 13 or greater specific settings.
@@ -24,8 +25,8 @@ version_micro 3
 version_file micro
 version_target minor
 
-modes android clang coverage gcc gcc_13 fanalyzer individual individual_thread level monolithic test thread threadless
-modes_default monolithic thread gcc
+modes android clang coverage debug gcc gcc_13 fanalyzer individual individual_thread level monolithic test thread threadless
+modes_default monolithic thread gcc debug
 
 build_compiler gcc
 build_compiler-clang clang
@@ -127,6 +128,7 @@ environment LANG LC_ALL LC_COLLATE LC_CTYPE LC_FASTMSG LC_MESSAGES LC_MONETARY L
 #defines -D_di_libcap_
 defines -D_libcap_legacy_only_
 defines-android -D_di_f_thread_attribute_affinity_get_ -D_di_f_thread_attribute_affinity_set_ -D_di_f_thread_attribute_concurrency_get_ -D_di_f_thread_attribute_concurrency_set_ -D_di_f_thread_attribute_default_get_ -D_di_f_thread_attribute_default_set_ -D_di_f_thread_cancel_ -D_di_f_thread_cancel_state_set_ -D_di_f_thread_cancel_test_ -D_di_f_thread_join_try_ -D_di_f_thread_join_timed_ -D_pthread_mutex_prioceiling_unsupported_ -D_di_f_thread_semaphore_file_close_ -D_di_f_thread_semaphore_file_open_ -D_di_f_thread_semaphore_file_delete_ -D_di_f_thread_cancel_type_set_
+defines-debug -D_en_controller_debug_
 defines-thread -D_pthread_attr_unsupported_ -D_pthread_sigqueue_unsupported_
 defines-threadless -D_di_thread_support_
 
index 01825f6f2fb29e1ac166d6b5b26851577d43b4a6..85efc8449556a1df29be31900c3fbdbbb36e6717 100644 (file)
@@ -145,6 +145,33 @@ extern "C" {
   #define controller_with_session_same_d 0x4
 #endif // _di_controller_with_d_
 
+/**
+ * Debug related macros and defines
+ *
+ * The line_number and line_string macro parts are both required due to how macro expansion works, even with the stringify macro (the '#').
+ *
+ * controller_debug_*_d:
+ *   - file_line: Print the current file and line number (and possibly the function, if __FUNCTION__ is supported).
+ *
+ * macro_controller_debug_*:
+ *   - line_number: Convert the pre-defined __LINE__ macro into a string for use by the file_line, final part.
+ *   - line_string: Convert the pre-defined __LINE__ macro into a string for use by the file_line, first part.
+ */
+#ifndef _di_controller_debug_d_
+  #ifdef _en_controller_debug_
+    #define macro_controller_debug_line_number(line) #line
+    #define macro_controller_debug_line_string(line) macro_controller_debug_line_number(line)
+
+    #ifdef __FUNCTION__
+      #define controller_debug_file_line_d "" __FILE__ ":" macro_controller_debug_line_string(__LINE__) ":" __FUNCTION__
+    #else
+      #define controller_debug_file_line_d "" __FILE__ ":" macro_controller_debug_line_string(__LINE__)
+    #endif // __FUNCTION__
+  #else
+    #define controller_debug_file_line_d ""
+  #endif // _en_controller_debug_
+#endif // _di_controller_with_d_
+
 #ifdef __cplusplus
 } // extern "C"
 #endif
index 53d54a77115af76efb3f76f0ece535b5d905ae5c..43e0fc10c3359aee5c41b7aad8f4ea2584fac28a 100644 (file)
@@ -13,6 +13,7 @@ extern "C" {
     "controller_file_pid_create",
     "controller_lock_create",
     "controller_rule_copy",
+    "controller_rule_execute",
     "controller_rule_expand",
     "controller_path_canonical_relative",
     "controller_validate_environment_name",
index 6efe2e435040a6eb6ed377f21d7dda028b7c610f..6aec72b0b934cf35ddd8b396e89f2140e64bf96e 100644 (file)
@@ -46,6 +46,7 @@ extern "C" {
     controller_f_controller_file_pid_create_e,
     controller_f_controller_lock_create_e,
     controller_f_controller_rule_copy_e,
+    controller_f_controller_rule_execute_e,
     controller_f_controller_rule_expand_e,
     controller_f_controller_path_canonical_relative_e,
     controller_f_controller_validate_environment_name_e,
index 107a7264c8370fff1c40669afd018acefcf25c72..c00d85fb3226e7200781d212668f1d6632feae90 100644 (file)
@@ -101,7 +101,7 @@ extern "C" {
           f_fss_apply_delimit(main->thread.cache.delimits, &main->thread.cache.buffer_file, &state);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_apply_delimit), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_apply_delimit), F_true, controller_debug_file_line_d);
           }
         }
       }
@@ -114,7 +114,7 @@ extern "C" {
       state.status = f_memory_array_increase_by(main->thread.cache.object_items.used, sizeof(f_range_t), (void **) &main->thread.cache.object_items.array, &main->thread.cache.object_items.used, &main->thread.cache.object_items.size);
 
       if (F_status_is_error(state.status)) {
-        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true);
+        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true, controller_debug_file_line_d);
       }
       else {
 
@@ -150,7 +150,7 @@ extern "C" {
           state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(controller_entry_item_t), (void **) &entry->items.array, &entry->items.used, &entry->items.size);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, controller_debug_file_line_d);
 
             break;
           }
@@ -158,7 +158,7 @@ extern "C" {
           state.status = f_string_dynamic_partial_append(main->thread.cache.buffer_file, main->thread.cache.object_items.array[i], &main->thread.cache.action.name_item);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append), F_true, controller_debug_file_line_d);
 
             break;
           }
@@ -166,7 +166,7 @@ extern "C" {
           f_fss_count_lines(main->thread.cache.buffer_file, main->thread.cache.object_items.array[i].start, &main->thread.cache.action.line_item, &state);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_count_lines), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_count_lines), F_true, controller_debug_file_line_d);
 
             break;
           }
@@ -176,7 +176,7 @@ extern "C" {
           for (j = (code & 0x1) ? 1 : 0; j < entry->items.used; ++j) {
 
             if (f_compare_dynamic(entry->items.array[j].name, main->thread.cache.action.name_item) == F_equal_to) {
-              controller_print_warning_entry_item_duplicate_ignore(&main->program.warning, &main->thread.cache, is_entry, main->thread.cache.action.name_item);
+              controller_print_warning_entry_item_duplicate_ignore(&main->program.warning, &main->thread.cache, is_entry, main->thread.cache.action.name_item, controller_debug_file_line_d);
 
               code |= 0x2;
 
@@ -205,7 +205,7 @@ extern "C" {
             state.status = f_memory_array_increase(at, sizeof(controller_entry_item_t), (void **) &entry->items.array, &entry->items.used, &entry->items.size);
 
             if (F_status_is_error(state.status)) {
-              controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true);
+              controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true, controller_debug_file_line_d);
 
               break;
             }
@@ -217,7 +217,7 @@ extern "C" {
               state.status = f_memory_array_resize(2, sizeof(controller_entry_item_t), (void **) &entry->items.array, &entry->items.used, &entry->items.size);
 
               if (F_status_is_error(state.status)) {
-                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_resize), F_true);
+                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_memory_array_resize), F_true, controller_debug_file_line_d);
 
                 break;
               }
@@ -246,7 +246,7 @@ extern "C" {
             if (F_status_set_fine(state.status) != F_interrupt) {
               controller_lock_print(main->program.error.to, &main->thread);
 
-              controller_print_error_entry_cache(&main->program.error, &main->thread.cache.action, is_entry);
+              controller_print_error_entry_cache(&main->program.error, &main->thread.cache.action, is_entry, controller_debug_file_line_d);
 
               controller_unlock_print_flush(main->program.error.to, &main->thread);
             }
@@ -343,7 +343,7 @@ extern "C" {
       entry->status = controller_status_simplify_error(F_status_set_fine(state.status));
 
       if (F_status_set_fine(state.status) != F_interrupt) {
-        controller_print_error_entry_cache(&main->program.error, &main->thread.cache.action, is_entry);
+        controller_print_error_entry_cache(&main->program.error, &main->thread.cache.action, is_entry, controller_debug_file_line_d);
       }
     }
     else {
index eb48539e929e4cd88d37ca9dafff903180a9b8ee..d7f152edd96390e6c7e66a0e6e09f0d2c7d6ce94 100644 (file)
@@ -34,7 +34,7 @@ extern "C" {
     }
 
     if (F_status_is_error(state.status)) {
-      controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(fll_fss_extended_read), F_true);
+      controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(fll_fss_extended_read), F_true, controller_debug_file_line_d);
 
       return state.status;
     }
@@ -42,7 +42,7 @@ extern "C" {
     f_fss_apply_delimit(main->thread.cache.delimits, &main->thread.cache.buffer_file, &state);
 
     if (F_status_is_error(state.status)) {
-      controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_fss_apply_delimit), F_true);
+      controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_fss_apply_delimit), F_true, controller_debug_file_line_d);
 
       return state.status;
     }
@@ -52,7 +52,7 @@ extern "C" {
     state.status = f_memory_array_increase_by(main->thread.cache.object_actions.used, sizeof(controller_entry_action_t), (void **) &actions->array, &actions->used, &actions->size);
 
     if (F_status_is_error(state.status)) {
-      controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true);
+      controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true, controller_debug_file_line_d);
 
       return state.status;
     }
@@ -83,7 +83,7 @@ extern "C" {
       f_fss_count_lines(main->thread.cache.buffer_file, main->thread.cache.object_actions.array[i].start, &main->thread.cache.action.line_action, &state);
 
       if (F_status_is_error(state.status)) {
-        controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_fss_count_lines), F_true);
+        controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_fss_count_lines), F_true, controller_debug_file_line_d);
 
         break;
       }
@@ -93,7 +93,7 @@ extern "C" {
       state.status = f_rip_dynamic_partial_nulless(main->thread.cache.buffer_file, main->thread.cache.object_actions.array[i], &main->thread.cache.action.name_action);
 
       if (F_status_is_error(state.status)) {
-        controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true);
+        controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true, controller_debug_file_line_d);
 
         break;
       }
@@ -144,7 +144,7 @@ extern "C" {
         actions->array[actions->used].type = controller_entry_action_type_timeout_e;
       }
       else {
-        controller_print_warning_entry_action_unknown(&main->program.warning, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, main->thread.cache.action.name_action);
+        controller_print_warning_entry_action_unknown(&main->program.warning, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, main->thread.cache.action.name_action, controller_debug_file_line_d);
 
         continue;
       }
@@ -178,7 +178,7 @@ extern "C" {
       if (main->thread.cache.content_actions.array[i].used < at_least || main->thread.cache.content_actions.array[i].used > at_most) {
         action->status = controller_status_simplify_error(F_parameter);
 
-        controller_print_error_entry_action_requires_range(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, main->thread.cache.action.name_action, at_least, at_most, action->type);
+        controller_print_error_entry_action_requires_range(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, main->thread.cache.action.name_action, at_least, at_most, action->type, controller_debug_file_line_d);
       }
       else {
         action->status = F_okay;
@@ -196,7 +196,7 @@ extern "C" {
         state.status = f_memory_array_increase_by(allocate, sizeof(f_string_dynamic_t), (void **) &action->parameters.array, &action->parameters.used, &action->parameters.size);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true);
+          controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true, controller_debug_file_line_d);
 
           action->status = state.status;
 
@@ -216,7 +216,7 @@ extern "C" {
           state.status = f_memory_array_increase_by((main->thread.cache.content_actions.array[i].array[j].stop - main->thread.cache.content_actions.array[i].array[j].start) + 1, sizeof(f_char_t), (void **) &action->parameters.array[j].string, &action->parameters.array[j].used, &action->parameters.array[j].size);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true);
+            controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase_by), F_true, controller_debug_file_line_d);
 
             break;
           }
@@ -224,7 +224,7 @@ extern "C" {
           state.status = f_string_dynamic_partial_append_nulless(main->thread.cache.buffer_file, main->thread.cache.content_actions.array[i].array[j], &action->parameters.array[j]);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true);
+            controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, controller_debug_file_line_d);
 
             break;
           }
@@ -240,7 +240,7 @@ extern "C" {
               state.status = controller_path_canonical_relative(main, main->process.path_current, action->parameters.array[0], &main->thread.cache.buffer_path);
 
               if (F_status_is_error(state.status)) {
-                controller_print_error_entry_file(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(controller_path_canonical_relative), F_true, main->thread.cache.action.generic, f_file_operation_analyze_s, fll_error_file_type_path_e);
+                controller_print_error_entry_file(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(controller_path_canonical_relative), F_true, main->thread.cache.action.generic, f_file_operation_analyze_s, fll_error_file_type_path_e, controller_debug_file_line_d);
 
                 action->status = state.status;
 
@@ -262,7 +262,7 @@ extern "C" {
                 status_action = action->status;
               }
 
-              controller_print_error_entry_action_parameter_empty(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, "first parameter");
+              controller_print_error_entry_action_parameter_empty(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, "first parameter", controller_debug_file_line_d);
             }
 
             if (action->parameters.array[1].used) {
@@ -271,7 +271,7 @@ extern "C" {
               state.status = f_file_name_base(action->parameters.array[1], &main->thread.cache.buffer_path);
 
               if (F_status_is_error(state.status)) {
-                controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_file_name_base), F_true);
+                controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(f_file_name_base), F_true, controller_debug_file_line_d);
 
                 if (F_status_set_fine(state.status) == F_memory_not) {
                   status_action = controller_status_simplify_error(state.status);
@@ -287,7 +287,7 @@ extern "C" {
               }
               else {
                 if (f_compare_dynamic(action->parameters.array[1], main->thread.cache.buffer_path) == F_equal_to_not) {
-                  controller_print_error_entry_action_parameter_second_base(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, action->parameters.array[1], main->thread.cache.buffer_path);
+                  controller_print_error_entry_action_parameter_second_base(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, action->parameters.array[1], main->thread.cache.buffer_path, controller_debug_file_line_d);
 
                   action->status = controller_status_simplify_error(F_parameter);
 
@@ -304,7 +304,7 @@ extern "C" {
                 status_action = action->status;
               }
 
-              controller_print_error_entry_action_parameter_empty(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, "second parameter");
+              controller_print_error_entry_action_parameter_empty(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, "second parameter", controller_debug_file_line_d);
             }
 
             for (j = 2; j < action->parameters.used; ++j) {
@@ -327,7 +327,7 @@ extern "C" {
                   }
                 }
 
-                controller_print_error_entry_action_invalid_allow_3(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, "third parameter (and beyond)", action->parameters.array[j], controller_asynchronous_s, controller_require_s, controller_wait_s);
+                controller_print_error_entry_action_invalid_allow_3(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, "third parameter (and beyond)", action->parameters.array[j], controller_asynchronous_s, controller_require_s, controller_wait_s, controller_debug_file_line_d);
               }
             } // for
           }
@@ -339,7 +339,7 @@ extern "C" {
                 status_action = action->status;
               }
 
-              controller_print_error_entry_action_unsupported_reserve(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, controller_main_s);
+              controller_print_error_entry_action_unsupported_reserve(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, controller_main_s, controller_debug_file_line_d);
             }
           }
           else if (action->type == controller_entry_action_type_timeout_e) {
@@ -360,7 +360,7 @@ extern "C" {
                 status_action = action->status;
               }
 
-              controller_print_error_entry_action_invalid_allow_3(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, 0, action->parameters.array[0], controller_kill_s, controller_start_s, controller_stop_s);
+              controller_print_error_entry_action_invalid_allow_3(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, 0, action->parameters.array[0], controller_kill_s, controller_start_s, controller_stop_s, controller_debug_file_line_d);
             }
 
             if (action->status == F_okay) {
@@ -380,14 +380,14 @@ extern "C" {
                   }
 
                   if (F_status_set_fine(state.status) == F_memory_not) {
-                    controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_to_unsigned_detect), F_true);
+                    controller_print_error_entry(&main->program.error, entry->flag & controller_entry_flag_is_e, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_to_unsigned_detect), F_true, controller_debug_file_line_d);
 
                     status_action = state.status;
 
                     break;
                   }
 
-                  controller_print_error_entry_action_unsupported_number(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, action->parameters.array[1]);
+                  controller_print_error_entry_action_unsupported_number(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, action->parameters.array[1], controller_debug_file_line_d);
                 }
               }
               else {
@@ -403,7 +403,7 @@ extern "C" {
               else {
                 action->status = controller_status_simplify_error(F_support_not);
 
-                controller_print_error_entry_action_invalid_allow_1(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, 0, action->parameters.array[0], controller_wait_s);
+                controller_print_error_entry_action_invalid_allow_1(&main->program.error, &main->thread.cache.action, entry->flag & controller_entry_flag_is_e, 0, action->parameters.array[0], controller_wait_s, controller_debug_file_line_d);
               }
             }
           }
index 4e2f24cc0ed6253fe5a8244c2a32c021e1a4976b..61d5473160099558ad3948b26ad2ac0b5465e334 100644 (file)
@@ -36,7 +36,7 @@ extern "C" {
       status = f_memory_array_resize(2, sizeof(f_number_unsigned_t), (void **) &cache->ats.array, &cache->ats.used, &cache->ats.size);
 
       if (F_status_is_error(status)) {
-        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_resize), F_true);
+        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_resize), F_true, controller_debug_file_line_d);
 
         return status;
       }
@@ -53,7 +53,7 @@ extern "C" {
     status = f_string_dynamic_append_nulless(entry->items.array[0].name, &cache->action.name_item);
 
     if (F_status_is_error(status)) {
-      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -70,14 +70,14 @@ extern "C" {
         status2 = f_string_dynamic_append_nulless(controller_entry_action_type_name(actions->array[cache->ats.array[at_j]].type), &cache->action.name_action);
 
         if (F_status_is_error(status2)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
           return status2;
         }
 
         if (actions->array[cache->ats.array[at_j]].type == controller_entry_action_type_ready_e) {
           if (main->process.ready == controller_process_ready_wait_e) {
-            controller_print_warning_entry_action_multiple(&main->program.warning, cache, is_entry, controller_ready_s);
+            controller_print_warning_entry_action_multiple(&main->program.warning, cache, is_entry, controller_ready_s, controller_debug_file_line_d);
           }
           else {
             main->process.ready = controller_process_ready_wait_e;
@@ -99,7 +99,7 @@ extern "C" {
               for (j = 2; j < cache->ats.used; j += 2) {
 
                 if (cache->ats.array[j] == i) {
-                  controller_print_error_entry_item_failure(&main->program.error, cache, is_entry, entry->items.array[i].name, "cannot be executed because recursion is not allowed");
+                  controller_print_error_entry_item_failure(&main->program.error, cache, is_entry, entry->items.array[i].name, "cannot be executed because recursion is not allowed", controller_debug_file_line_d);
 
                   if (F_status_is_error_not(status)) {
                     status = F_status_set_error(F_recurse);
@@ -116,7 +116,7 @@ extern "C" {
               status2 = f_memory_array_increase(controller_allocation_small_d, sizeof(f_number_unsigned_t), (void **) &cache->ats.array, &cache->ats.used, &cache->ats.size);
 
               if (F_status_is_error(status2)) {
-                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_memory_array_increase), F_true);
+                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_memory_array_increase), F_true, controller_debug_file_line_d);
 
                 return status2;
               }
@@ -141,7 +141,7 @@ extern "C" {
               status2 = f_string_dynamic_append_nulless(entry->items.array[i].name, &cache->action.name_item);
 
               if (F_status_is_error(status2)) {
-                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
                 return status2;
               }
@@ -152,7 +152,7 @@ extern "C" {
 
           if (error_has || i >= entry->items.used) {
             if (i >= entry->items.used) {
-              controller_print_error_entry_item_failure(&main->program.error, cache, is_entry, actions->array[cache->ats.array[at_j]].parameters.array[0], "does not exist");
+              controller_print_error_entry_item_failure(&main->program.error, cache, is_entry, actions->array[cache->ats.array[at_j]].parameters.array[0], "does not exist", controller_debug_file_line_d);
 
               if (F_status_is_error_not(status)) {
                 status = F_status_set_error(F_valid_not);
@@ -186,7 +186,7 @@ extern "C" {
         status2 = f_string_dynamic_append_nulless(entry->items.array[cache->ats.array[at_i]].name, &cache->action.name_item);
 
         if (F_status_is_error(status2)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status2), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
           return status2;
         }
index 55b7cc5cae48d47e588b5aa758d9b0a0cab9ae39..1525638430070851f54416c081a6bc2fc8737771 100644 (file)
@@ -37,7 +37,7 @@ extern "C" {
       status = f_memory_array_resize(2, sizeof(f_number_unsigned_t), (void **) &cache->ats.array, &cache->ats.used, &cache->ats.size);
 
       if (F_status_is_error(status)) {
-        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_resize), F_true);
+        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_resize), F_true, controller_debug_file_line_d);
 
         return status;
       }
@@ -54,7 +54,7 @@ extern "C" {
     status = f_string_dynamic_append_nulless(entry->items.array[cache->ats.array[0]].name, &cache->action.name_item);
 
     if (F_status_is_error(status)) {
-      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -83,7 +83,7 @@ extern "C" {
         status = f_string_dynamic_append_nulless(controller_entry_action_type_name(entry_action->type), &cache->action.name_action);
 
         if (F_status_is_error(status)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
           return status;
         }
@@ -143,7 +143,7 @@ extern "C" {
           if (entry_action->number == 0 || entry_action->number >= entry->items.used || failsafe && entry_action->number == main->process.failsafe_item_id) {
 
             // This should not happen if the pre-process is working as intended, but in case it doesn't, return a critical error to prevent infinite recursion and similar errors.
-            controller_print_error_entry_item_invalid(&main->program.error, cache, is_entry, entry_action->number);
+            controller_print_error_entry_item_invalid(&main->program.error, cache, is_entry, entry_action->number, controller_debug_file_line_d);
 
             return F_status_is_error(F_critical);
           }
@@ -151,7 +151,7 @@ extern "C" {
           status = f_memory_array_increase_by(2, sizeof(f_number_unsigned_t), (void **) &cache->ats.array, &cache->ats.used, &cache->ats.size);
 
           if (F_status_is_error(status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_increase_by), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_increase_by), F_true, controller_debug_file_line_d);
 
             return status;
           }
@@ -174,7 +174,7 @@ extern "C" {
           status = f_string_dynamic_append_nulless(entry->items.array[cache->ats.array[at_i]].name, &cache->action.name_item);
 
           if (F_status_is_error(status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
             return status;
           }
@@ -221,7 +221,7 @@ extern "C" {
             status = f_memory_new(1, sizeof(controller_rule_t), (void **) &rule);
 
             if (F_status_is_error(status)) {
-              controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_new), F_true);
+              controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_new), F_true, controller_debug_file_line_d);
 
               return status;
             }
@@ -266,7 +266,7 @@ extern "C" {
               if (main->program.error.verbosity > f_console_verbosity_quiet_e) {
                 controller_lock_print(main->program.error.to, &main->thread);
 
-                controller_print_error_entry_cache(&main->program.error, &cache->action, is_entry);
+                controller_print_error_entry_cache(&main->program.error, &cache->action, is_entry, controller_debug_file_line_d);
 
                 controller_unlock_print_flush(main->program.error.to, &main->thread);
               }
@@ -296,7 +296,7 @@ extern "C" {
                   f_memory_delete(1, sizeof(controller_rule_t), (void **) &rule);
                 }
 
-                controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false);
+                controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false, controller_debug_file_line_d);
 
                 break;
               }
@@ -310,7 +310,7 @@ extern "C" {
 
                 f_thread_unlock(&main->thread.lock.rule);
 
-                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_increase), F_true);
+                controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_memory_array_increase), F_true, controller_debug_file_line_d);
 
                 return status;
               }
@@ -377,16 +377,16 @@ extern "C" {
 
           if (F_status_is_error(status)) {
             if (F_status_set_fine(status) == F_file_found_not) {
-              controller_print_error_entry_action_execution_missing(&main->program.error, &cache->action, is_entry, entry_action->parameters.array[0]);
+              controller_print_error_entry_action_execution_missing(&main->program.error, &cache->action, is_entry, entry_action->parameters.array[0], controller_debug_file_line_d);
             }
             else {
-              controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(fll_execute_into), F_true);
+              controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(fll_execute_into), F_true, controller_debug_file_line_d);
             }
 
             return F_status_set_error(F_execute);
           }
           else if (result != 0) {
-            controller_print_error_entry_action_execution_failure(&main->program.error, &cache->action, is_entry, result);
+            controller_print_error_entry_action_execution_failure(&main->program.error, &cache->action, is_entry, result, controller_debug_file_line_d);
 
             return F_status_set_error(F_execute);
           }
@@ -417,13 +417,13 @@ extern "C" {
         }
         else if (entry_action->type == controller_entry_action_type_failsafe_e) {
           if (failsafe) {
-            controller_print_warning_entry_action_failsafe_twice(&main->program.warning, cache, is_entry);
+            controller_print_warning_entry_action_failsafe_twice(&main->program.warning, cache, is_entry, controller_debug_file_line_d);
           }
           else {
             if (entry_action->number == 0 || entry_action->number >= entry->items.used) {
 
               // This should not happen if the pre-process is working as designed, but in case it doesn't, return a critical error to prevent infinite recursion and similar errors.
-              controller_print_error_entry_item_invalid(&main->program.error, cache, is_entry, entry_action->number);
+              controller_print_error_entry_item_invalid(&main->program.error, cache, is_entry, entry_action->number, controller_debug_file_line_d);
 
               return F_status_is_error(F_critical);
             }
@@ -464,7 +464,7 @@ extern "C" {
         status = f_string_dynamic_append_nulless(entry->items.array[cache->ats.array[at_i]].name, &cache->action.name_item);
 
         if (F_status_is_error(status)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append_nulless), F_true, controller_debug_file_line_d);
 
           break;
         }
index 307e8495cd2b6771308fd45a63249bfcd84ee286..5509ed726996f5b85ad89ef1541cce5337ec3898 100644 (file)
@@ -20,7 +20,7 @@ extern "C" {
     }
 
     if (F_status_is_error(state.status)) {
-      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(fll_fss_extended_read), F_true);
+      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(fll_fss_extended_read), F_true, controller_debug_file_line_d);
 
       return state.status;
     }
@@ -28,7 +28,7 @@ extern "C" {
     f_fss_apply_delimit(cache->delimits, &cache->buffer_file, &state);
 
     if (F_status_is_error(state.status)) {
-      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_apply_delimit), F_true);
+      controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_apply_delimit), F_true, controller_debug_file_line_d);
 
       return state.status;
     }
@@ -46,7 +46,7 @@ extern "C" {
       f_fss_count_lines(cache->buffer_file, cache->object_actions.array[i].start, &cache->action.line_action, &state);
 
       if (F_status_is_error(state.status)) {
-        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_count_lines), F_true);
+        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_fss_count_lines), F_true, controller_debug_file_line_d);
 
         break;
       }
@@ -57,14 +57,14 @@ extern "C" {
       state.status = f_rip_dynamic_partial_nulless(cache->buffer_file, cache->object_actions.array[i], &cache->action.name_action);
 
       if (F_status_is_error(state.status)) {
-        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true);
+        controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true, controller_debug_file_line_d);
 
         break;
       }
 
       if (is_entry && f_compare_dynamic(controller_control_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used < 1 || cache->content_actions.array[i].used > 2) {
-          controller_print_error_entry_setting_requires_between(&main->program.error, cache, is_entry, 1, 2);
+          controller_print_error_entry_setting_requires_between(&main->program.error, cache, is_entry, 1, 2, controller_debug_file_line_d);
 
           continue;
         }
@@ -74,7 +74,7 @@ extern "C" {
             main->process.control.flag |= controller_control_flag_readonly_e;
           }
           else {
-            controller_print_error_entry_item_setting_support_not_option(&main->program.error, cache, is_entry, cache->buffer_file, cache->content_actions.array[i].array[1]);
+            controller_print_error_entry_item_setting_support_not_option(&main->program.error, cache, is_entry, cache->buffer_file, cache->content_actions.array[i].array[1], controller_debug_file_line_d);
 
             continue;
           }
@@ -89,7 +89,7 @@ extern "C" {
         state.status = f_rip_dynamic_partial_nulless(cache->buffer_file, cache->content_actions.array[i].array[0], &cache->action.generic);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true, controller_debug_file_line_d);
 
           break;
         }
@@ -99,7 +99,7 @@ extern "C" {
         state.status = controller_path_canonical_relative(main, main->process.path_current, cache->action.generic, &main->process.path_control);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry_file(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_path_canonical_relative), F_true, cache->action.generic, f_file_operation_analyze_s, fll_error_file_type_path_e);
+          controller_print_error_entry_file(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_path_canonical_relative), F_true, cache->action.generic, f_file_operation_analyze_s, fll_error_file_type_path_e, controller_debug_file_line_d);
 
           continue;
         }
@@ -111,16 +111,16 @@ extern "C" {
 
         if (F_status_is_error(state.status)) {
           if (F_status_set_fine(state.status) == F_exist_not) {
-            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid group", cache->content_actions.array[i].array[0], ", because no group was found by that name");
+            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid group", cache->content_actions.array[i].array[0], ", because no group was found by that name", controller_debug_file_line_d);
           }
           else if (F_status_set_fine(state.status) == F_number_too_large) {
-            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid group", cache->content_actions.array[i].array[0], ", because the given ID is too large");
+            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid group", cache->content_actions.array[i].array[0], ", because the given ID is too large", controller_debug_file_line_d);
           }
           else if (F_status_set_fine(state.status) == F_number) {
-            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid group", cache->content_actions.array[i].array[0], ", because the given ID is not a valid supported number");
+            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid group", cache->content_actions.array[i].array[0], ", because the given ID is not a valid supported number", controller_debug_file_line_d);
           }
           else {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_convert_group_id), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_convert_group_id), F_true, controller_debug_file_line_d);
           }
 
           continue;
@@ -139,7 +139,7 @@ extern "C" {
         state.status = f_rip_dynamic_partial_nulless(cache->buffer_file, cache->content_actions.array[i].array[0], &cache->action.generic);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true, controller_debug_file_line_d);
 
           break;
         }
@@ -147,7 +147,7 @@ extern "C" {
         state.status = f_file_mode_from_string(cache->action.generic, main->program.umask, &mode_file, &replace);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an unsupported mode", cache->content_actions.array[i].array[0], ", because the format is unknown or contains invalid data");
+          controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an unsupported mode", cache->content_actions.array[i].array[0], ", because the format is unknown or contains invalid data", controller_debug_file_line_d);
 
           continue;
         }
@@ -155,7 +155,7 @@ extern "C" {
         state.status = f_file_mode_to_mode(mode_file, &mode);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_file_mode_to_mode), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_file_mode_to_mode), F_true, controller_debug_file_line_d);
 
           continue;
         }
@@ -170,16 +170,16 @@ extern "C" {
 
         if (F_status_is_error(state.status)) {
           if (F_status_set_fine(state.status) == F_exist_not) {
-            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid user", cache->content_actions.array[i].array[0], ", because no user was found by that name");
+            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid user", cache->content_actions.array[i].array[0], ", because no user was found by that name", controller_debug_file_line_d);
           }
           else if (F_status_set_fine(state.status) == F_number_too_large) {
-            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid user", cache->content_actions.array[i].array[0], ", because the given ID is too large");
+            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid user", cache->content_actions.array[i].array[0], ", because the given ID is too large", controller_debug_file_line_d);
           }
           else if (F_status_set_fine(state.status) == F_number) {
-            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid user", cache->content_actions.array[i].array[0], ", because the given ID is not a valid supported number");
+            controller_print_error_entry_setting_with_range(&main->program.error, cache, is_entry, " has an invalid user", cache->content_actions.array[i].array[0], ", because the given ID is not a valid supported number", controller_debug_file_line_d);
           }
           else {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_convert_user_id), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_convert_user_id), F_true, controller_debug_file_line_d);
           }
 
           continue;
@@ -190,7 +190,7 @@ extern "C" {
       }
       else if (f_compare_dynamic(controller_define_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used != 2) {
-          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 2);
+          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 2, controller_debug_file_line_d);
 
           continue;
         }
@@ -198,14 +198,14 @@ extern "C" {
         state.status = controller_entry_setting_read_map(cache->buffer_file, cache->content_actions.array[i], &entry->define);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_entry_setting_read_map), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_entry_setting_read_map), F_true, controller_debug_file_line_d);
 
           continue;
         }
       }
       else if (is_entry && f_compare_dynamic(controller_mode_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used != 1) {
-          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1);
+          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1, controller_debug_file_line_d);
 
           continue;
         }
@@ -220,14 +220,14 @@ extern "C" {
           main->process.mode = controller_process_mode_program_e;
         }
         else {
-          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0]);
+          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
           continue;
         }
       }
       else if (f_compare_dynamic(controller_parameter_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used != 2) {
-          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 2);
+          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 2, controller_debug_file_line_d);
 
           continue;
         }
@@ -235,14 +235,14 @@ extern "C" {
         state.status = controller_entry_setting_read_map(cache->buffer_file, cache->content_actions.array[i], &entry->parameter);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_entry_setting_read_map), F_true);
+          controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_entry_setting_read_map), F_true, controller_debug_file_line_d);
 
           continue;
         }
       }
       else if (f_compare_dynamic(controller_pid_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used != 1) {
-          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1);
+          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1, controller_debug_file_line_d);
 
           continue;
         }
@@ -257,20 +257,20 @@ extern "C" {
           entry->pid = controller_entry_pid_require_e;
         }
         else {
-          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0]);
+          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
           continue;
         }
       }
       else if (is_entry && f_compare_dynamic(controller_pid_file_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used != 1) {
-          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1);
+          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1, controller_debug_file_line_d);
 
           continue;
         }
 
         if (main->setting.flag & controller_main_flag_pid_d) {
-          controller_print_error_entry_setting_ignored(&main->program.error, cache, is_entry);
+          controller_print_error_entry_setting_ignored(&main->program.error, cache, is_entry, controller_debug_file_line_d);
         }
         else {
           cache->action.generic.used = 0;
@@ -278,7 +278,7 @@ extern "C" {
           state.status = f_rip_dynamic_partial_nulless(cache->buffer_file, cache->content_actions.array[i].array[0], &cache->action.generic);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(f_rip_dynamic_partial_nulless), F_true, controller_debug_file_line_d);
 
             continue;
           }
@@ -288,7 +288,7 @@ extern "C" {
           state.status = controller_path_canonical_relative(main, main->process.path_current, cache->action.generic, &main->process.path_pid);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_path_canonical_relative), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(controller_path_canonical_relative), F_true, controller_debug_file_line_d);
 
             continue;
           }
@@ -296,7 +296,7 @@ extern "C" {
       }
       else if (f_compare_dynamic(controller_session_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used != 1) {
-          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1);
+          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1, controller_debug_file_line_d);
 
           continue;
         }
@@ -308,14 +308,14 @@ extern "C" {
           entry->session = controller_entry_session_same_e;
         }
         else {
-          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0]);
+          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
           continue;
         }
       }
       else if (f_compare_dynamic(controller_show_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used != 1) {
-          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1);
+          controller_print_error_entry_setting_requires_exactly(&main->program.error, cache, is_entry, 1, controller_debug_file_line_d);
 
           continue;
         }
@@ -327,14 +327,14 @@ extern "C" {
           entry->show = controller_entry_show_init_e;
         }
         else {
-          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0]);
+          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
           continue;
         }
       }
       else if (f_compare_dynamic(controller_timeout_s, cache->action.name_action) == F_equal_to) {
         if (cache->content_actions.array[i].used < 1 || cache->content_actions.array[i].used > 2) {
-          controller_print_error_entry_setting_requires_between(&main->program.error, cache, is_entry, 1, 2);
+          controller_print_error_entry_setting_requires_between(&main->program.error, cache, is_entry, 1, 2, controller_debug_file_line_d);
 
           continue;
         }
@@ -382,7 +382,7 @@ extern "C" {
           time = &entry->timeout_stop;
         }
         else {
-          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0]);
+          controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
           continue;
         }
@@ -395,16 +395,16 @@ extern "C" {
           *time = time_previous;
 
           if (F_status_set_fine(state.status) == F_memory_not) {
-            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_unsigned_detect), F_true);
+            controller_print_error_entry(&main->program.error, is_entry, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_unsigned_detect), F_true, controller_debug_file_line_d);
 
             continue;
           }
 
-          controller_print_error_entry_setting_support_not_number(&main->program.error, is_entry, cache->buffer_file, cache->content_actions.array[i].array[1]);
+          controller_print_error_entry_setting_support_not_number(&main->program.error, is_entry, cache->buffer_file, cache->content_actions.array[i].array[1], controller_debug_file_line_d);
         }
       }
       else {
-        controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0]);
+        controller_print_warning_entry_setting_unknown_action_value(&main->program.warning, cache, is_entry, cache->action.name_action, cache->buffer_file, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
         continue;
       }
index 4cdff54aea38a1b4ee2ed37cd444c0cc2626901c..26b95f18b93a6430ac2944b083ddd45a63444e4a 100644 (file)
@@ -14,7 +14,7 @@ extern "C" {
     f_status_t status = controller_lock_read_standard(is_normal, controller_lock_check_flag_yes_d, &main->thread, &main->thread.lock.instance);
 
     if (status != F_okay) {
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true);
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -40,7 +40,7 @@ extern "C" {
       status = controller_lock_write_standard(is_normal, controller_lock_check_flag_yes_d, &main->thread, &main->thread.lock.instance);
 
       if (F_status_is_error(status)) {
-        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_false);
+        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_false, controller_debug_file_line_d);
       }
       else {
         if (F_status_is_error_not(status)) {
index 2bbe898a660ed9afc80bbbf3e1049c6cddf2f8cd..67740b3c61f9d0f23bf2dcc44a7ee1eed28933aa 100644 (file)
@@ -50,7 +50,7 @@ extern "C" {
       status_lock = controller_lock_read_instance(instance, &instance->use);
 
       if (F_status_is_error(status_lock)) {
-        controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status_lock), F_true);
+        controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
         break;
       }
index cb2961d9bc003cbf1cd878d125fe785fe8e6761c..de40968f8a7e7942a27b41ec4e733f34dae786a8 100644 (file)
@@ -28,7 +28,7 @@ extern "C" {
 
         // Always return immediately on memory errors.
         if (F_status_set_fine(status) == F_memory_not) {
-          controller_print_error_perform_pid_file_create(&main->program.error, F_status_set_fine(status), macro_controller_f(controller_file_pid_create), is_entry);
+          controller_print_error_perform_pid_file_create(&main->program.error, F_status_set_fine(status), macro_controller_f(controller_file_pid_create), is_entry, controller_debug_file_line_d);
 
           return status;
         }
index 77769ea72bf08a37316de59ce1b3a7c54a0de26b..8ccff959334b8388b6ace93eedef229f04e16311 100644 (file)
@@ -50,7 +50,7 @@ extern "C" {
 
     f_file_stream_lock(print->to);
 
-    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry);
+    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry, 0);
 
     controller_unlock_print_flush(print->to, &main->thread);
   }
index e317db91784dd50a70170ae3e6f25beecdff6112..52a8d7d4671f3088f87b3686c7b7df9e7e51f9e6 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_debug_rule_action_empty_
-  f_status_t controller_print_debug_rule_action_empty(fl_print_t * const print, controller_cache_t * const cache) {
+  f_status_t controller_print_debug_rule_action_empty(fl_print_t * const print, controller_cache_t * const cache, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -16,7 +16,7 @@ extern "C" {
 
     fl_print_format("%r%[%QAction is empty, nothing to do.%]%r", print->to, f_string_eol_s, print->context, print->prefix, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, &cache->action, F_true);
+    controller_print_error_rule_cache(print, &cache->action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 8d07879fc85ad15975fb841bffe47009c3a8479d..06504989464a951e8c98acbb5d879578e35decd5 100644 (file)
@@ -31,6 +31,11 @@ extern "C" {
  *   A structure for containing and caching relevant data.
  *
  *   Must not be NULL.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -39,7 +44,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_debug_rule_action_empty_
-  extern f_status_t controller_print_debug_rule_action_empty(fl_print_t * const print, controller_cache_t * const cache);
+  extern f_status_t controller_print_debug_rule_action_empty(fl_print_t * const print, controller_cache_t * const cache, const f_string_t line_file);
 #endif // _di_controller_print_debug_rule_action_empty_
 
 #ifdef __cplusplus
index 0a74c1412039e9ae9bbfd76003d6f14c4715c561..c45102179dadd5235c02954069f7fd29a341e5e7 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_main_print_debug_rule_execute_rerun_
-  f_status_t controller_main_print_debug_rule_execute_rerun(fl_print_t * const print, controller_instance_t * const instance, controller_rule_rerun_item_t * const rerun, const uint8_t action) {
+  f_status_t controller_main_print_debug_rule_execute_rerun(fl_print_t * const print, controller_instance_t * const instance, controller_rule_rerun_item_t * const rerun, const uint8_t action, const f_string_t line_file) {
 
     if (!print || !print->custom || !instance || !rerun) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -24,6 +24,11 @@ extern "C" {
       fl_print_format(" for %[%ul%]", print->to, print->set->notable, rerun->count, print->set->notable);
       fl_print_format(" of %[%r%] ", print->to, print->set->notable, controller_max_s, print->set->notable);
       fl_print_format(f_string_format_un_single_s.string, print->to, print->set->notable, rerun->max, print->set->notable);
+
+      if (line_file) {
+        fl_print_format(" (file: %s)", print->to, line_file);
+      }
+
       fl_print_format(f_string_format_sentence_end_s.string, print->to, f_string_eol_s);
     }
     else {
index c9b4346250b32194edf4adab3784cf8faa2286ba..792e82d38055f2aa727e34b07acea8cf6aef1235 100644 (file)
@@ -37,6 +37,11 @@ extern "C" {
  *   Must not be NULL.
  * @param action
  *   The ID of the Action being re-run.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -45,7 +50,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_main_print_debug_rule_execute_rerun_
-  extern f_status_t controller_main_print_debug_rule_execute_rerun(fl_print_t * const print, controller_instance_t * const instance, controller_rule_rerun_item_t * const rerun, const uint8_t action);
+  extern f_status_t controller_main_print_debug_rule_execute_rerun(fl_print_t * const print, controller_instance_t * const instance, controller_rule_rerun_item_t * const rerun, const uint8_t action, const f_string_t line_file);
 #endif // _di_controller_main_print_debug_rule_execute_rerun_
 
 #ifdef __cplusplus
index 3714a9c92d32ad12a161dc3059aca091afe9049f..635b3d0421e4e8cdee02e6cd72779e84295e423f 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_debug_rule_instance_need_want_wish_
-  f_status_t controller_print_debug_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why) {
+  f_status_t controller_print_debug_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why, const f_string_t line_file) {
 
     if (!print || !print->custom || !instance) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -14,9 +14,9 @@ extern "C" {
 
     controller_lock_print(print->to, &main->thread);
 
-    controller_print_error_rule_item_need_want_wish(print, need_want_wish, value, why);
+    controller_print_error_rule_item_need_want_wish(print, need_want_wish, value, why, line_file);
 
-    controller_print_error_rule_cache(print, &instance->cache.action, F_true);
+    controller_print_error_rule_cache(print, &instance->cache.action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 6a0f3eddacc8ec4716d776e391faf5d5f1566690..b8a3cf58609bb9087c3c8e4fb16b52ab41adf3c2 100644 (file)
@@ -38,6 +38,11 @@ extern "C" {
  *   The value that is the error or warning.
  * @param why
  *   A short explanation on why this is an error or warning.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -46,7 +51,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_debug_rule_instance_need_want_wish_
-  extern f_status_t controller_print_debug_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why);
+  extern f_status_t controller_print_debug_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why, const f_string_t line_file);
 #endif // #ifndef _di_controller_print_debug_rule_instance_need_want_wish_
 
 #ifdef __cplusplus
index 6906edccf87e913696b8b163a87a5193fcf49667..d6f519cd0211bfa970a86cf73628b93b5b6e80f8 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_entry_
-  f_status_t controller_print_error_entry(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback) {
+  f_status_t controller_print_error_entry(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -19,7 +19,7 @@ extern "C" {
 
     f_file_stream_lock(print->to);
 
-    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry);
+    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -28,7 +28,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_
 
 #ifndef _di_controller_print_error_entry_cache_
-  f_status_t controller_print_error_entry_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry) {
+  f_status_t controller_print_error_entry_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t line_file) {
 
     if (!print || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -62,7 +62,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_cache_
 
 #ifndef _di_controller_print_error_entry_file_
-  f_status_t controller_print_error_entry_file(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback, const f_string_static_t name, const f_string_static_t operation, const uint8_t type) {
+  f_status_t controller_print_error_entry_file(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback, const f_string_static_t name, const f_string_static_t operation, const uint8_t type, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -77,7 +77,7 @@ extern "C" {
 
     f_file_stream_lock(print->to);
 
-    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry);
+    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 2cbf5557c243dfcf24749eb4ba2d21d0cb982101..405a44552f1acae74ae38f563a595f0889f880fb 100644 (file)
@@ -40,6 +40,11 @@ extern "C" {
  *   Set to F_true to print the fallback error message for unknown errors.
  * @param thread
  *   The thread data.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -48,7 +53,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_
-  extern f_status_t controller_print_error_entry(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback);
+  extern f_status_t controller_print_error_entry(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_
 
 /**
@@ -73,6 +78,11 @@ extern "C" {
  * @param is_entry
  *   If TRUE, then this loads as an Entry.
  *   If FALSE, then this loads as an Exit.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -81,7 +91,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_cache_
-  extern f_status_t controller_print_error_entry_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry);
+  extern f_status_t controller_print_error_entry_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_cache_
 
 /**
@@ -113,6 +123,11 @@ extern "C" {
  *   The operation that fails, such as 'create' or 'access'.
  * @param type
  *   A valid file type code from the fll_error_file_type enum.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -121,7 +136,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_file_
-  extern f_status_t controller_print_error_entry_file(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback, const f_string_static_t name, const f_string_static_t operation, const uint8_t type);
+  extern f_status_t controller_print_error_entry_file(fl_print_t * const print, const uint8_t is_entry, const f_status_t status, const f_string_t function, const uint8_t fallback, const f_string_static_t name, const f_string_static_t operation, const uint8_t type, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_file_
 
 #ifdef __cplusplus
index 0e8ff55fee7ddc60c236d46334608c7cafef2d39..d2408ea974dfe661bb0f5c6f2dc6b43a93c99258 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_entry_action_execution_failure_
-  f_status_t controller_print_error_entry_action_execution_failure(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const int code) {
+  f_status_t controller_print_error_entry_action_execution_failure(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const int code, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format(f_string_format_i_single_s.string, print->to, print->notable, code, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -27,7 +27,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_execution_failure_
 
 #ifndef _di_controller_print_error_entry_action_execution_missing_
-  f_status_t controller_print_error_entry_action_execution_missing(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name) {
+  f_status_t controller_print_error_entry_action_execution_missing(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -40,7 +40,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -49,7 +49,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_execution_missing_
 
 #ifndef _di_controller_print_error_entry_action_invalid_allow_1_
-  f_status_t controller_print_error_entry_action_invalid_allow_1(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow) {
+  f_status_t controller_print_error_entry_action_invalid_allow_1(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -71,7 +71,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, has, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -80,7 +80,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_invalid_allow_1_
 
 #ifndef _di_controller_print_error_entry_action_invalid_allow_3_
-  f_status_t controller_print_error_entry_action_invalid_allow_3(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow_1, const f_string_static_t allow_2, const f_string_static_t allow_3) {
+  f_status_t controller_print_error_entry_action_invalid_allow_3(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow_1, const f_string_static_t allow_2, const f_string_static_t allow_3, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -105,7 +105,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, has, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -114,7 +114,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_invalid_allow_3_
 
 #ifndef _di_controller_print_error_entry_action_parameter_empty_
-  f_status_t controller_print_error_entry_action_parameter_empty(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message) {
+  f_status_t controller_print_error_entry_action_parameter_empty(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -125,7 +125,7 @@ extern "C" {
 
     fl_print_format("%r%[%QThe %r Item Action %S must not be an empty string.%]", print->to, f_string_eol_s, print->context, print->prefix, is_entry ? controller_entry_s : controller_exit_s, message, print->context);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -134,7 +134,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_parameter_empty_
 
 #ifndef _di_controller_print_error_entry_action_parameter_second_base_
-  f_status_t controller_print_error_entry_action_parameter_second_base(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has, const f_string_static_t example) {
+  f_status_t controller_print_error_entry_action_parameter_second_base(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has, const f_string_static_t example, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -149,7 +149,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, example, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -158,7 +158,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_parameter_second_base_
 
 #ifndef _di_controller_print_error_entry_action_requires_range_
-  f_status_t controller_print_error_entry_action_requires_range(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_number_unsigned_t at_least, const f_number_unsigned_t at_most, const uint8_t type) {
+  f_status_t controller_print_error_entry_action_requires_range(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_number_unsigned_t at_least, const f_number_unsigned_t at_most, const uint8_t type, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -192,7 +192,7 @@ extern "C" {
       }
     }
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -201,7 +201,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_requires_range_
 
 #ifndef _di_controller_print_error_entry_action_unsupported_number_
-  f_status_t controller_print_error_entry_action_unsupported_number(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has) {
+  f_status_t controller_print_error_entry_action_unsupported_number(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -214,7 +214,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, has, print->notable);
     fl_print_format("%[' is not a valid supported number.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -223,7 +223,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_action_unsupported_number_
 
 #ifndef _di_controller_print_error_entry_action_unsupported_reserve_
-  f_status_t controller_print_error_entry_action_unsupported_reserve(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t item) {
+  f_status_t controller_print_error_entry_action_unsupported_reserve(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t item, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -236,7 +236,7 @@ extern "C" {
     fl_print_format(f_string_format_r_single_s.string, print->to, print->notable, item, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, action, is_entry);
+    controller_print_error_entry_cache(print, action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 6b4d80945c6948d459d25f40108db9a7843c5d4e..3cd1e6ec07fd7c2bab56e6cba5e9f03a0fa92311 100644 (file)
@@ -36,6 +36,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param code
  *   The return code.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -44,7 +49,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_execution_failure_
-  extern f_status_t controller_print_error_entry_action_execution_failure(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const int code);
+  extern f_status_t controller_print_error_entry_action_execution_failure(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const int code, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_execution_failure_
 
 /**
@@ -67,6 +72,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param name
  *   The program or script name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -75,7 +85,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_execution_missing_
-  extern f_status_t controller_print_error_entry_action_execution_missing(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name);
+  extern f_status_t controller_print_error_entry_action_execution_missing(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_execution_missing_
 
 /**
@@ -106,6 +116,11 @@ extern "C" {
  *   The invalid value that is not supported.
  * @param allow
  *   The allowed value that is supported.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -114,7 +129,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_invalid_allow_1_
-  extern f_status_t controller_print_error_entry_action_invalid_allow_1(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow);
+  extern f_status_t controller_print_error_entry_action_invalid_allow_1(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_invalid_allow_1_
 
 /**
@@ -149,6 +164,11 @@ extern "C" {
  *   The second allowed value that is supported.
  * @param allow_3
  *   The third allowed value that is supported.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -157,7 +177,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_invalid_allow_3_
-  extern f_status_t controller_print_error_entry_action_invalid_allow_3(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow_1, const f_string_static_t allow_2, const f_string_static_t allow_3);
+  extern f_status_t controller_print_error_entry_action_invalid_allow_3(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_static_t has, const f_string_static_t allow_1, const f_string_static_t allow_2, const f_string_static_t allow_3, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_invalid_allow_3_
 
 /**
@@ -180,6 +200,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param message
  *   A message describing which parameter is empty.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -188,7 +213,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_parameter_empty_
-  extern f_status_t controller_print_error_entry_action_parameter_empty(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message);
+  extern f_status_t controller_print_error_entry_action_parameter_empty(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_t message, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_parameter_empty_
 
 /**
@@ -213,6 +238,11 @@ extern "C" {
  *   The second parameter value.
  * @param example
  *   An example of a valid base path name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -221,7 +251,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_parameter_second_base_
-  extern f_status_t controller_print_error_entry_action_parameter_second_base(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has, const f_string_static_t example);
+  extern f_status_t controller_print_error_entry_action_parameter_second_base(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has, const f_string_static_t example, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_parameter_second_base_
 
 /**
@@ -250,6 +280,11 @@ extern "C" {
  *   The maximum number that is allowed.
  * @param type
  *   The Action type code.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -258,7 +293,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_requires_range_
-  extern f_status_t controller_print_error_entry_action_requires_range(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_number_unsigned_t at_least, const f_number_unsigned_t at_most, const uint8_t type);
+  extern f_status_t controller_print_error_entry_action_requires_range(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_number_unsigned_t at_least, const f_number_unsigned_t at_most, const uint8_t type, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_requires_range_
 
 /**
@@ -281,6 +316,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param has
  *   The invalid value that is not supported.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -289,7 +329,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_unsupported_number_
-  extern f_status_t controller_print_error_entry_action_unsupported_number(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has);
+  extern f_status_t controller_print_error_entry_action_unsupported_number(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t has, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_unsupported_number_
 
 /**
@@ -312,6 +352,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param item
  *   The reserved item that is not allowed to be used.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -320,7 +365,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_action_unsupported_reserve_
-  extern f_status_t controller_print_error_entry_action_unsupported_reserve(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t item);
+  extern f_status_t controller_print_error_entry_action_unsupported_reserve(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t item, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_action_unsupported_reserve_
 
 #ifdef __cplusplus
index 915f30479e027dc95d2d8f4ba5448c3c057fa749..49c4037592e4e0ce816b99cebd94c642c889b19c 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_entry_item_failure_
-  f_status_t controller_print_error_entry_item_failure(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t message) {
+  f_status_t controller_print_error_entry_item_failure(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t message, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format("%[' %S.%]%r", print->to, print->context, message, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -27,7 +27,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_item_failure_
 
 #ifndef _di_controller_print_error_entry_item_invalid_
-  f_status_t controller_print_error_entry_item_invalid(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t number) {
+  f_status_t controller_print_error_entry_item_invalid(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t number, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -40,7 +40,7 @@ extern "C" {
     fl_print_format(f_string_format_un_single_s.string, print->to, print->notable, number, print->notable);
     fl_print_format("%[' detected.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -49,7 +49,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_item_invalid_
 
 #ifndef _di_controller_print_error_entry_item_setting_support_not_option_
-  f_status_t controller_print_error_entry_item_setting_support_not_option(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_entry_item_setting_support_not_option(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -65,7 +65,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 4c029523e299cc73bca364710b9322d8626ef8de..755d2436ef9d7f3ae2c3828c9f08ebef8cf26747 100644 (file)
@@ -38,6 +38,11 @@ extern "C" {
  *   The item name.
  * @param message
  *   A short message describing the reason for the failure.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -46,7 +51,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_item_failure_
-  extern f_status_t controller_print_error_entry_item_failure(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t message);
+  extern f_status_t controller_print_error_entry_item_failure(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t message, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_item_failure_
 
 /**
@@ -69,6 +74,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param number
  *   The index position of the invalid item.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -77,7 +87,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_item_invalid_
-  extern f_status_t controller_print_error_entry_item_invalid(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t number);
+  extern f_status_t controller_print_error_entry_item_invalid(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t number, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_item_invalid_
 
 /**
@@ -102,6 +112,11 @@ extern "C" {
  *   The buffer containing the setting name.
  * @param range
  *   The range within the buffer representing the setting name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -110,7 +125,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_item_setting_support_not_option_
-  extern f_status_t controller_print_error_entry_item_setting_support_not_option(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_entry_item_setting_support_not_option(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_item_setting_support_not_option_
 
 #ifdef __cplusplus
index f9d79561cbf994a25fd50a216733362def3a1b82..a22d880fcb73558d10672d269d9a57c630670813 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_entry_setting_with_range_
-  f_status_t controller_print_error_entry_setting_with_range(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t before, const f_range_t range, const f_string_t after) {
+  f_status_t controller_print_error_entry_setting_with_range(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t before, const f_range_t range, const f_string_t after, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format("%[%/Q%]", print->to, print->notable, cache->buffer_file, range, print->notable);
     fl_print_format("%['%S.%]%r", print->to, print->context, after, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -27,7 +27,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_setting_with_range_
 
 #ifndef _di_controller_print_error_entry_setting_ignored_
-  f_status_t controller_print_error_entry_setting_ignored(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry) {
+  f_status_t controller_print_error_entry_setting_ignored(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -40,7 +40,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, cache->action.name_action, print->notable);
     fl_print_format("%[' is being ignored.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -49,7 +49,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_setting_ignored_
 
 #ifndef _di_controller_print_error_entry_setting_requires_between_
-  f_status_t controller_print_error_entry_setting_requires_between(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t minimum, const f_number_unsigned_t maximum) {
+  f_status_t controller_print_error_entry_setting_requires_between(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t minimum, const f_number_unsigned_t maximum, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -66,7 +66,7 @@ extern "C" {
     fl_print_format(f_string_format_un_single_s.string, print->to, print->notable, maximum, print->notable);
     fl_print_format("%[ Content.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -75,7 +75,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_setting_requires_between_
 
 #ifndef _di_controller_print_error_entry_setting_requires_exactly_
-  f_status_t controller_print_error_entry_setting_requires_exactly(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t total) {
+  f_status_t controller_print_error_entry_setting_requires_exactly(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t total, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -90,7 +90,7 @@ extern "C" {
     fl_print_format(f_string_format_un_single_s.string, print->to, print->notable, total, print->notable);
     fl_print_format("%[ Content.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -99,7 +99,7 @@ extern "C" {
 #endif // _di_controller_print_error_entry_setting_requires_exactly_
 
 #ifndef _di_controller_print_error_entry_setting_support_not_number_
-  f_status_t controller_print_error_entry_setting_support_not_number(fl_print_t * const print, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_entry_setting_support_not_number(fl_print_t * const print, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
index 9d084e0ac5823f5f607194a373c07b30a88a5b9b..33f99bd043f045fbd83b6e2ca2039a1322dd44c3 100644 (file)
@@ -43,6 +43,11 @@ extern "C" {
  *   The range within the cache item buffer representing the value.
  * @param after
  *   The string to add to the message being printed (after the value).
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -51,7 +56,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_setting_with_range_
-  extern f_status_t controller_print_error_entry_setting_with_range(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t before, const f_range_t range, const f_string_t after);
+  extern f_status_t controller_print_error_entry_setting_with_range(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t before, const f_range_t range, const f_string_t after, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_setting_with_range_
 
 /**
@@ -72,6 +77,11 @@ extern "C" {
  * @param is_entry
  *   If TRUE, then this loads as an Entry.
  *   If FALSE, then this loads as an Exit.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -80,7 +90,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_setting_ignored_
-  extern f_status_t controller_print_error_entry_setting_ignored(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry);
+  extern f_status_t controller_print_error_entry_setting_ignored(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_setting_ignored_
 
 /**
@@ -105,6 +115,11 @@ extern "C" {
  *   The expected minimum number of arguments.
  * @param maximum
  *   The expected maximum number of arguments.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -113,7 +128,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_setting_requires_between_
-  extern f_status_t controller_print_error_entry_setting_requires_between(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t minimum, const f_number_unsigned_t maximum);
+  extern f_status_t controller_print_error_entry_setting_requires_between(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t minimum, const f_number_unsigned_t maximum, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_setting_requires_between_
 
 /**
@@ -136,6 +151,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param total
  *   The expected number of arguments.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -144,7 +164,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_setting_requires_exactly_
-  extern f_status_t controller_print_error_entry_setting_requires_exactly(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t total);
+  extern f_status_t controller_print_error_entry_setting_requires_exactly(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_number_unsigned_t total, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_setting_requires_exactly_
 
 /**
@@ -167,6 +187,11 @@ extern "C" {
  *   The buffer containing the settings.
  * @param range
  *   The range within the buffer representing the unsupported number.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -175,7 +200,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_entry_setting_support_not_number_
-  extern f_status_t controller_print_error_entry_setting_support_not_number(fl_print_t * const print, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_entry_setting_support_not_number(fl_print_t * const print, const uint8_t is_entry, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_entry_setting_support_not_number_
 
 #ifdef __cplusplus
index 298bea8393604469f6523cde58e49e278ad619b6..c0855b0d2231fb8cd87e87bb8972e910e93fad9d 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_lock_critical_
-  f_status_t controller_print_error_lock_critical(fl_print_t * const print, const f_status_t status, const uint8_t is_read) {
+  f_status_t controller_print_error_lock_critical(fl_print_t * const print, const f_status_t status, const uint8_t is_read, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e || status == F_interrupt) return F_output_not;
index 52af77953e6dcf774a22181fd62b0b345a5e34b0..e45280b77d1da28ea53f0e0d341caa9bcabf0adc 100644 (file)
@@ -35,6 +35,11 @@ extern "C" {
  * @param is_read
  *   If TRUE, then this is for a read lock.
  *   If FALSE, then this is for a write lock.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -43,7 +48,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_lock_critical_
-  extern f_status_t controller_print_error_lock_critical(fl_print_t * const print, const f_status_t status, const uint8_t is_read);
+  extern f_status_t controller_print_error_lock_critical(fl_print_t * const print, const f_status_t status, const uint8_t is_read, const f_string_t line_file);
 #endif // _di_controller_print_error_lock_critical_
 
 #ifdef __cplusplus
index d06abf07d75c4cc40750bbad12d4d0ae8870e254..06c166a5451bfe681daa64da23b6d8e50555ffa2 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_perform_pid_file_create_
-  f_status_t controller_print_error_perform_pid_file_create(fl_print_t * const print, const f_status_t status, const f_string_t function, const uint8_t is_entry) {
+  f_status_t controller_print_error_perform_pid_file_create(fl_print_t * const print, const f_status_t status, const f_string_t function, const uint8_t is_entry, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
 
     f_file_stream_lock(print->to);
 
-    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry);
+    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
   }
index 6728a2f4d02f566e3e0985d6dd78e72e91864033..e4f1f033e9a4852b1fe15e6a64dcd4916c049771 100644 (file)
@@ -35,6 +35,11 @@ extern "C" {
  * @param is_entry
  *   If TRUE, then this operates as an Entry.
  *   If FALSE, then this operates as an Exit.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -43,7 +48,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_perform_pid_file_create_
-  extern f_status_t controller_print_error_perform_pid_file_create(fl_print_t * const print, const f_status_t status, const f_string_t function, const uint8_t is_entry);
+  extern f_status_t controller_print_error_perform_pid_file_create(fl_print_t * const print, const f_status_t status, const f_string_t function, const uint8_t is_entry, const f_string_t line_file);
 #endif // _di_controller_print_error_perform_pid_file_create_
 
 #ifdef __cplusplus
index 990745c113e409f3ca5f3ba7e61b32da5b9b061d..fd9c29c08757ce9848eb93fbd8e69ceb0ea5d109 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_rule_
-  f_status_t controller_print_error_rule(fl_print_t * const print, controller_cache_action_t * const action, const f_status_t status, const f_string_t function, const uint8_t fallback, const uint8_t item) {
+  f_status_t controller_print_error_rule(fl_print_t * const print, controller_cache_action_t * const action, const f_status_t status, const f_string_t function, const uint8_t fallback, const uint8_t item, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -19,7 +19,7 @@ extern "C" {
 
     f_file_stream_lock(print->to);
 
-    controller_print_error_rule_cache(print, action, item);
+    controller_print_error_rule_cache(print, action, item, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -28,7 +28,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_
 
 #ifndef _di_controller_print_error_rule_cache_
-  f_status_t controller_print_error_rule_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item) {
+  f_status_t controller_print_error_rule_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item, const f_string_t line_file) {
 
     if (!print || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -55,6 +55,10 @@ extern "C" {
       fl_print_format("Rule file '%]%[%Q%]%['", print->to, print->context, print->notable, action->name_file, print->notable, print->context);
     }
 
+    if (line_file) {
+      fl_print_format(" (file: %s)", print->to, line_file);
+    }
+
     fl_print_format(".%]%r", print->to, print->context, f_string_eol_s);
 
     return F_okay;
@@ -62,7 +66,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_cache_
 
 #ifndef _di_controller_print_error_rule_stack_already_
-  f_status_t controller_print_error_rule_stack_already(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const uint8_t item) {
+  f_status_t controller_print_error_rule_stack_already(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const uint8_t item, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -75,7 +79,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format("%[' is already on the execution dependency stack, this recursion is prohibited.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, item);
+    controller_print_error_rule_cache(print, action, item, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 55b606eca96ed134a0d41e8e9128662b64b5b2be..98174a8311a694ef84575a1744bd4560e5daae3f 100644 (file)
@@ -44,6 +44,11 @@ extern "C" {
  * @param item
  *   If TRUE, then this error is associated with an item.
  *   If FALSE, then this error is associated with a Rule setting.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -52,7 +57,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_
-  extern f_status_t controller_print_error_rule(fl_print_t * const print, controller_cache_action_t * const action, const f_status_t status, const f_string_t function, const uint8_t fallback, const uint8_t item);
+  extern f_status_t controller_print_error_rule(fl_print_t * const print, controller_cache_action_t * const action, const f_status_t status, const f_string_t function, const uint8_t fallback, const uint8_t item, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_
 
 /**
@@ -84,6 +89,11 @@ extern "C" {
  * @param item
  *   If TRUE, then this error is associated with an item.
  *   If FALSE, then this error is associated with a Rule setting.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -92,7 +102,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_cache_
-  extern f_status_t controller_print_error_rule_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item);
+  extern f_status_t controller_print_error_rule_cache(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_cache_
 
 /**
@@ -115,6 +125,11 @@ extern "C" {
  * @param item
  *   If TRUE, then this error is associated with an item.
  *   If FALSE, then this error is associated with a Rule setting.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -123,7 +138,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_stack_already_
-  extern f_status_t controller_print_error_rule_stack_already(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const uint8_t item);
+  extern f_status_t controller_print_error_rule_stack_already(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const uint8_t item, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_stack_already_
 
 #ifdef __cplusplus
index 0e38d70921244ab7ef2e1660adbb2a8900708ac4..5785fe385d0eb6f15c1484ac6ba23ff8949af638 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_rule_action_first_
-  f_status_t controller_print_error_rule_action_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_rule_action_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -30,7 +30,7 @@ extern "C" {
     fl_print_format(f_string_format_r_single_s.string, print->to, print->notable, controller_thaw_s, print->notable, print->context);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -39,7 +39,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_action_first_
 
 #ifndef _di_controller_print_error_rule_action_fss_0003_unsupported_
-  f_status_t controller_print_error_rule_action_fss_0003_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name) {
+  f_status_t controller_print_error_rule_action_fss_0003_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -52,7 +52,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -61,7 +61,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_action_fss_0003_unsupported_
 
 #ifndef _di_controller_print_error_rule_action_missing_pid_
-  f_status_t controller_print_error_rule_action_missing_pid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias) {
+  f_status_t controller_print_error_rule_action_missing_pid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -74,7 +74,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, alias, print->notable);
     fl_print_format("%[' is not designating a PID file.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -83,7 +83,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_action_missing_pid_
 
 #ifndef _di_controller_print_error_rule_action_positive_number_not_
-  f_status_t controller_print_error_rule_action_positive_number_not(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_ranges_t contents, const f_number_unsigned_t index, const f_status_t status) {
+  f_status_t controller_print_error_rule_action_positive_number_not(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_ranges_t contents, const f_number_unsigned_t index, const f_status_t status, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -115,7 +115,7 @@ extern "C" {
       }
     }
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -124,7 +124,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_action_positive_number_not_
 
 #ifndef _di_controller_print_error_rule_action_second_
-  f_status_t controller_print_error_rule_action_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_rule_action_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -142,7 +142,7 @@ extern "C" {
     fl_print_format(f_string_format_r_single_s.string, print->to, print->notable, controller_thaw_s, print->notable, print->context);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -151,7 +151,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_action_second_
 
 #ifndef _di_controller_print_error_rule_action_type_unsupported_
-  f_status_t controller_print_error_rule_action_type_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t type, const f_string_t message) {
+  f_status_t controller_print_error_rule_action_type_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t type, const f_string_t message, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -164,7 +164,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, type, print->notable);
     fl_print_format("%[' while attempting to %S.%]%r", print->to, print->context, message, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -173,7 +173,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_action_type_unsupported_
 
 #ifndef _di_controller_print_error_rule_action_unknown_
-  f_status_t controller_print_error_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -188,7 +188,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -197,7 +197,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_action_unknown_
 
 #ifndef _di_controller_print_error_rule_action_unknown_execute_
-  f_status_t controller_print_error_rule_action_unknown_execute(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t type, const f_number_unsigned_t total) {
+  f_status_t controller_print_error_rule_action_unknown_execute(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t type, const f_number_unsigned_t total, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -229,7 +229,7 @@ extern "C" {
       fl_print_format("%[') to execute.%]%r", print->to, print->context, print->context, f_string_eol_s);
     }
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index a4f2cb3ce8ea08abc5f40feaa3780d64918edd2c..5e0d3b02e5f7b566982152e7f5333b96a7636bfa 100644 (file)
@@ -39,6 +39,11 @@ extern "C" {
  *   The buffer containing the setting name.
  * @param range
  *   The range within the buffer representing the unknown Action name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -47,7 +52,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_first_
-  extern f_status_t controller_print_error_rule_action_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_rule_action_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_first_
 
 /**
@@ -67,6 +72,11 @@ extern "C" {
  *   Must not be NULL.
  * @param alias
  *   The Rule alias of the Rule that is missing the pid file designation.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -75,7 +85,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_fss_0003_unsupported_
-  extern f_status_t controller_print_error_rule_action_fss_0003_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name);
+  extern f_status_t controller_print_error_rule_action_fss_0003_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_fss_0003_unsupported_
 
 /**
@@ -95,6 +105,11 @@ extern "C" {
  *   Must not be NULL.
  * @param alias
  *   The Rule alias of the Rule that is missing the pid file designation.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -103,7 +118,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_missing_pid_
-  extern f_status_t controller_print_error_rule_action_missing_pid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias);
+  extern f_status_t controller_print_error_rule_action_missing_pid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_missing_pid_
 
 /**
@@ -131,6 +146,11 @@ extern "C" {
  *   The index position in content representing the Content range for the buffer.
  * @param status
  *   The status code of the error.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -139,7 +159,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_positive_number_not_
-  extern f_status_t controller_print_error_rule_action_positive_number_not(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_ranges_t contents, const f_number_unsigned_t index, const f_status_t status);
+  extern f_status_t controller_print_error_rule_action_positive_number_not(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_ranges_t contents, const f_number_unsigned_t index, const f_status_t status, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_positive_number_not_
 
 /**
@@ -161,6 +181,11 @@ extern "C" {
  *   The buffer containing the second Action.
  * @param range
  *   The range within the buffer representing the second Action.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -169,7 +194,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_second_
-  extern f_status_t controller_print_error_rule_action_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_rule_action_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_second_
 
 /**
@@ -191,6 +216,11 @@ extern "C" {
  *   The Action type name.
  * @param message
  *   A specific message on what is being attempted by the Action.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -199,7 +229,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_type_unsupported_
-  extern f_status_t controller_print_error_rule_action_type_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t type, const f_string_t message);
+  extern f_status_t controller_print_error_rule_action_type_unsupported(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t type, const f_string_t message, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_type_unsupported_
 
 /**
@@ -223,6 +253,11 @@ extern "C" {
  *   The buffer containing the setting name.
  * @param range
  *   The range within the buffer representing the unknown Action name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -231,7 +266,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_unknown_
-  extern f_status_t controller_print_error_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_unknown_
 
 /**
@@ -253,6 +288,11 @@ extern "C" {
  *   The Rule name.
  * @param type
  *   The Action type name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -261,7 +301,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_action_unknown_execute_
-  extern f_status_t controller_print_error_rule_action_unknown_execute(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t type, const f_number_unsigned_t total);
+  extern f_status_t controller_print_error_rule_action_unknown_execute(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_static_t type, const f_number_unsigned_t total, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_action_unknown_execute_
 
 #ifdef __cplusplus
index b49eac411387bc79c99c8fad1ed0e7a9296f4850..889eeb1576c19677b9748c12424562d88086f4f3 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_rule_instance_need_want_wish_
-  f_status_t controller_print_error_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why) {
+  f_status_t controller_print_error_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why, const f_string_t line_file) {
 
     if (!print || !print->custom || !instance) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -14,9 +14,9 @@ extern "C" {
 
     controller_lock_print(print->to, &main->thread);
 
-    controller_print_error_rule_item_need_want_wish(print, need_want_wish, value, why);
+    controller_print_error_rule_item_need_want_wish(print, need_want_wish, value, why, line_file);
 
-    controller_print_error_rule_cache(print, &instance->cache.action, F_true);
+    controller_print_error_rule_cache(print, &instance->cache.action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index bb792e4d7f54e68af5ff8f89f5fcf7d7a584c7af..926e24991b07f7e960f5e3eee9c697490051111e 100644 (file)
@@ -38,6 +38,11 @@ extern "C" {
  *   The value that is the error or warning.
  * @param why
  *   A short explanation on why this is an error or warning.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -46,7 +51,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_instance_need_want_wish_
-  extern f_status_t controller_print_error_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why);
+  extern f_status_t controller_print_error_rule_instance_need_want_wish(fl_print_t * const print, controller_instance_t * const instance, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_instance_need_want_wish_
 
 #ifdef __cplusplus
index acb5a8fe2e4b82cd48391fe22de3b0c528b84d14..167e399e36cdb527a4f74487f86f04ece55fbf39 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_rule_item_
-  f_status_t controller_print_error_rule_item(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item, const f_status_t status) {
+  f_status_t controller_print_error_rule_item(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item, const f_status_t status, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e || status == F_interrupt) return F_output_not;
@@ -14,7 +14,7 @@ extern "C" {
 
     controller_lock_print(print->to, &main->thread);
 
-    controller_print_error_rule_cache(print, action, item);
+    controller_print_error_rule_cache(print, action, item, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -23,7 +23,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_item_
 
 #ifndef _di_controller_print_error_rule_item_execute_
-  f_status_t controller_print_error_rule_item_execute(fl_print_t * const print, const uint8_t script_is, const f_string_static_t name, const f_status_t status, const int result) {
+  f_status_t controller_print_error_rule_item_execute(fl_print_t * const print, const uint8_t script_is, const f_string_static_t name, const f_status_t status, const int result, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -277,7 +277,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_item_execute_
 
 #ifndef _di_controller_print_error_rule_item_execute_none_
-  f_status_t controller_print_error_rule_item_execute_none(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias) {
+  f_status_t controller_print_error_rule_item_execute_none(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias, const uint8_t no_action, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -288,14 +288,20 @@ extern "C" {
 
     fl_print_format("%r%[%QThe Rule '%]", print->to, f_string_eol_s, print->context, print->prefix, print->context);
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, alias, print->notable);
-    fl_print_format("%[' has no Items to execute.%]%r", print->to, print->context, print->context, f_string_eol_s);
+    fl_print_format("%[' has no ", print->to, print->context);
+
+    if (no_action) {
+      fl_print_format("Actions on any ", print->to);
+    }
+
+    fl_print_format("Items to execute.%]%r", print->to, print->context, f_string_eol_s);
 
     controller_unlock_print_flush(print->to, &main->thread);
   }
 #endif // _di_controller_print_error_rule_item_execute_none_
 
 #ifndef _di_controller_print_error_rule_item_need_want_wish_
-  f_status_t controller_print_error_rule_item_need_want_wish(fl_print_t * const print, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why) {
+  f_status_t controller_print_error_rule_item_need_want_wish(fl_print_t * const print, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -313,7 +319,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_item_need_want_wish_
 
 #ifndef _di_controller_print_error_rule_item_rule_not_loaded_
-  f_status_t controller_print_error_rule_item_rule_not_loaded(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias) {
+  f_status_t controller_print_error_rule_item_rule_not_loaded(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_error_e) return F_output_not;
@@ -326,7 +332,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, alias, print->notable);
     fl_print_format("%[' is no longer loaded.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 869cfb450f4347121cb575fd22cb93db1c416570..0a32449d77b36071f63baaa5d4d3e30665703461 100644 (file)
@@ -38,6 +38,11 @@ extern "C" {
  *   If FALSE, then this error is associated with a Rule setting.
  * @param status
  *   The status code representing the failure (without the error bit set).
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -46,7 +51,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_item_
-  extern f_status_t controller_print_error_rule_item(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item, const f_status_t status);
+  extern f_status_t controller_print_error_rule_item(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t item, const f_status_t status, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_item_
 
 /**
@@ -71,6 +76,11 @@ extern "C" {
  *   The status code representing the failure (without the error bit set).
  * @param result
  *   The status code result.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -79,7 +89,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_item_execute_
-  extern f_status_t controller_print_error_rule_item_execute(fl_print_t * const print, const uint8_t script_is, const f_string_static_t name, const f_status_t status, const int result);
+  extern f_status_t controller_print_error_rule_item_execute(fl_print_t * const print, const uint8_t script_is, const f_string_static_t name, const f_status_t status, const int result, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_item_execute_
 
 /**
@@ -99,6 +109,14 @@ extern "C" {
  *   Must not be NULL.
  * @param alias
  *   The Rule alias of the Rule that has no Items.
+ * @param no_action
+ *   If TRUE, then nothing to execute because there is no item actions.
+ *   If FALSE, then nothing to execute because there is no items.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -107,7 +125,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_item_execute_none_
-  extern f_status_t controller_print_error_rule_item_execute_none(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias);
+  extern f_status_t controller_print_error_rule_item_execute_none(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias, const uint8_t no_action, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_item_execute_none_
 
 /**
@@ -128,6 +146,11 @@ extern "C" {
  *   The value that is the error or warning.
  * @param why
  *   A short explanation on why this is an error or warning.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -136,7 +159,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_item_need_want_wish_
-  extern f_status_t controller_print_error_rule_item_need_want_wish(fl_print_t * const print, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why);
+  extern f_status_t controller_print_error_rule_item_need_want_wish(fl_print_t * const print, const f_string_static_t need_want_wish, const f_string_static_t value, const f_string_t why, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_item_need_want_wish_
 
 /**
@@ -156,6 +179,11 @@ extern "C" {
  *   Must not be NULL.
  * @param alias
  *   The Rule alias of the Rule that is not loaded.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -164,7 +192,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_item_rule_not_loaded_
-  extern f_status_t controller_print_error_rule_item_rule_not_loaded(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias);
+  extern f_status_t controller_print_error_rule_item_rule_not_loaded(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t alias, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_item_rule_not_loaded_
 
 #ifdef __cplusplus
index a6ef4470b5f276fcb05e2f0f19d0e988072733e1..c87b7e320b5cacfdf391f2dc140777618f01d7f3 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_error_rule_setting_
-  f_status_t controller_print_error_rule_setting(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t message) {
+  f_status_t controller_print_error_rule_setting(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t message, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -16,7 +16,7 @@ extern "C" {
 
     fl_print_format("%r%[%QRule setting %S.%]%r", print->to, f_string_eol_s, print->context, print->prefix, message, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -25,7 +25,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_
 
 #ifndef _di_controller_print_error_rule_setting_reason_name_
-  f_status_t controller_print_error_rule_setting_reason_name(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t reason, const f_string_static_t name) {
+  f_status_t controller_print_error_rule_setting_reason_name(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t reason, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -38,7 +38,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -47,7 +47,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_reason_name_
 
 #ifndef _di_controller_print_error_rule_setting_with_range_
-  f_status_t controller_print_error_rule_setting_with_range(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t before, const f_string_static_t buffer, const f_range_t range_content, const f_string_t after, const f_number_unsigned_t start, const f_number_unsigned_t line, f_state_t * const state) {
+  f_status_t controller_print_error_rule_setting_with_range(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t before, const f_string_static_t buffer, const f_range_t range_content, const f_string_t after, const f_number_unsigned_t start, const f_number_unsigned_t line, f_state_t * const state, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -62,7 +62,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range_content, print->notable);
     fl_print_format("%['%S.%]%r", print->to, print->context, after, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -71,7 +71,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_with_range_
 
 #ifndef _di_controller_print_error_rule_setting_mapping_
-  f_status_t controller_print_error_rule_setting_mapping(fl_print_t * const print, const f_string_static_t name, const f_string_map_t map) {
+  f_status_t controller_print_error_rule_setting_mapping(fl_print_t * const print, const f_string_static_t name, const f_string_map_t map, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
 
@@ -96,7 +96,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_mapping_
 
 #ifndef _di_controller_print_error_rule_setting_name_invalid_
-  f_status_t controller_print_error_rule_setting_name_invalid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name) {
+  f_status_t controller_print_error_rule_setting_name_invalid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -109,7 +109,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format("%[', there must be at least 1 graph character.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -118,7 +118,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_name_invalid_
 
 #ifndef _di_controller_print_error_rule_setting_number_invalid_nice_
-  f_status_t controller_print_error_rule_setting_number_invalid_nice(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_rule_setting_number_invalid_nice(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -133,7 +133,7 @@ extern "C" {
     fl_print_format("%[-20%] %[and%]", print->to, print->notable, print->notable, print->context, print->context);
     fl_print_format("%[19%] %[are allowed.%]%r", print->to, print->notable, print->notable, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -142,7 +142,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_number_invalid_nice_
 
 #ifndef _di_controller_print_error_rule_setting_number_invalid_on_first_
-  f_status_t controller_print_error_rule_setting_number_invalid_on_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_rule_setting_number_invalid_on_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -158,7 +158,7 @@ extern "C" {
     fl_print_format("%[' but only %r, %r, %r, %r, %r", print->to, print->context, controller_freeze_s, controller_kill_s, controller_pause_s, controller_reload_s, controller_restart_s);
     fl_print_format("%r, %r, %r, and %r are supported.%]%r", print->to, controller_resume_s, controller_start_s, controller_stop_s, controller_thaw_s, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -167,7 +167,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_number_invalid_on_first_
 
 #ifndef _di_controller_print_error_rule_setting_number_invalid_on_second_
-  f_status_t controller_print_error_rule_setting_number_invalid_on_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_rule_setting_number_invalid_on_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -182,7 +182,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range, print->notable);
     fl_print_format("%[' but only supports %r, %r, and %r.%]%r", print->to, print->context, controller_need_s, controller_want_s, controller_wish_s, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -191,7 +191,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_number_invalid_on_second_
 
 #ifndef _di_controller_print_error_rule_setting_number_invalid_scheduler_
-  f_status_t controller_print_error_rule_setting_number_invalid_scheduler(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const uint8_t zero_only) {
+  f_status_t controller_print_error_rule_setting_number_invalid_scheduler(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const uint8_t zero_only, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -215,7 +215,7 @@ extern "C" {
 
     fl_print_format(" allowed for the designated scheduler.%]%r", print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -224,7 +224,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_number_invalid_scheduler_
 
 #ifndef _di_controller_print_error_rule_setting_number_invalid_timeout_
-  f_status_t controller_print_error_rule_setting_number_invalid_timeout(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_error_rule_setting_number_invalid_timeout(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity == f_console_verbosity_quiet_e) return F_output_not;
@@ -239,7 +239,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range, print->notable);
     fl_print_format("%[' but only %r, %r, and %r are supported.%]%r", print->to, print->context, controller_kill_s, controller_start_s, controller_stop_s, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_false);
+    controller_print_error_rule_cache(print, action, F_false, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -248,7 +248,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_number_invalid_timeout_
 
 #ifndef _di_controller_print_error_rule_setting_value_
-  f_status_t controller_print_error_rule_setting_value(fl_print_t * const print, const f_string_static_t name, const f_string_static_t name_sub, const f_string_static_t value, const f_string_t suffix) {
+  f_status_t controller_print_error_rule_setting_value(fl_print_t * const print, const f_string_static_t name, const f_string_static_t name_sub, const f_string_static_t value, const f_string_t suffix, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
 
@@ -281,7 +281,7 @@ extern "C" {
 #endif // _di_controller_print_error_rule_setting_value_
 
 #ifndef _di_controller_print_error_rule_setting_values_
-  f_status_t controller_print_error_rule_setting_values(fl_print_t * const print, controller_cache_t * const cache, const f_string_static_t name, const f_number_unsigned_t index) {
+  f_status_t controller_print_error_rule_setting_values(fl_print_t * const print, controller_cache_t * const cache, const f_string_static_t name, const f_number_unsigned_t index, const f_string_t line_file) {
 
     if (!print || !print->custom) return F_status_set_error(F_output_not);
 
index 037636c0e5c2a020f4d10f304acc4d69f309476c..5b2e460f6887a6a47f3ab42428a44231c66fbd17 100644 (file)
@@ -38,6 +38,11 @@ extern "C" {
  *   Must not be NULL.
  * @param message
  *   The string to append to the message being printed.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -46,7 +51,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_
-  extern f_status_t controller_print_error_rule_setting(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t message);
+  extern f_status_t controller_print_error_rule_setting(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t message, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_
 
 /**
@@ -68,6 +73,11 @@ extern "C" {
  *   The reason for the error.
  * @param name
  *   The name or value of the setting associated with the error.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -76,7 +86,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_reason_name_
-  extern f_status_t controller_print_error_rule_setting_reason_name(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t reason, const f_string_static_t name);
+  extern f_status_t controller_print_error_rule_setting_reason_name(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t reason, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_reason_name_
 
 /**
@@ -117,6 +127,11 @@ extern "C" {
  *   The state.status is modified.
  *
  *   Must not be NULL.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -125,7 +140,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_with_range_
-  extern f_status_t controller_print_error_rule_setting_with_range(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t before, const f_string_static_t buffer, const f_range_t range_content, const f_string_t after, const f_number_unsigned_t start, const f_number_unsigned_t line, f_state_t * const state);
+  extern f_status_t controller_print_error_rule_setting_with_range(fl_print_t * const print, controller_cache_action_t * const action, const f_string_t before, const f_string_static_t buffer, const f_range_t range_content, const f_string_t after, const f_number_unsigned_t start, const f_number_unsigned_t line, f_state_t * const state, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_with_range_
 
 /**
@@ -139,6 +154,11 @@ extern "C" {
  *   The Object name of the setting being populated.
  * @param map
  *   The map being applied.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -147,7 +167,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_mapping_
-  extern f_status_t controller_print_error_rule_setting_mapping(fl_print_t * const print, const f_string_static_t name, const f_string_map_t map);
+  extern f_status_t controller_print_error_rule_setting_mapping(fl_print_t * const print, const f_string_static_t name, const f_string_map_t map, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_mapping_
 
 /**
@@ -169,9 +189,14 @@ extern "C" {
  *   F_output_not on success, but no printing is performed.
  *
  *   F_output_not (with error bit) if setting is NULL.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  */
 #ifndef _di_controller_print_error_rule_setting_name_invalid_
-  extern f_status_t controller_print_error_rule_setting_name_invalid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name);
+  extern f_status_t controller_print_error_rule_setting_name_invalid(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_name_invalid_
 
 /**
@@ -189,6 +214,11 @@ extern "C" {
  *   The buffer containing the invalid number.
  * @param range
  *   The ranger within the buffer representing the invalid number.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -197,7 +227,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_number_invalid_nice_
-  extern f_status_t controller_print_error_rule_setting_number_invalid_nice(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_rule_setting_number_invalid_nice(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_number_invalid_nice_
 
 /**
@@ -215,6 +245,11 @@ extern "C" {
  *   The buffer containing the invalid value.
  * @param range
  *   The ranger within the buffer representing the invalid value.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -223,7 +258,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_number_invalid_on_first_
-  extern f_status_t controller_print_error_rule_setting_number_invalid_on_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_rule_setting_number_invalid_on_first(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_number_invalid_on_first_
 
 /**
@@ -241,6 +276,11 @@ extern "C" {
  *   The buffer containing the invalid value.
  * @param range
  *   The ranger within the buffer representing the invalid value.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -249,7 +289,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_number_invalid_on_second_
-  extern f_status_t controller_print_error_rule_setting_number_invalid_on_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_rule_setting_number_invalid_on_second(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_number_invalid_on_second_
 
 /**
@@ -270,6 +310,11 @@ extern "C" {
  * @param zero_only
  *   If TRUE, then only 0 is supported.
  *   If FALSE, then only the range 1 through 99 is supported.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -278,7 +323,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_number_invalid_scheduler_
-  extern f_status_t controller_print_error_rule_setting_number_invalid_scheduler(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const uint8_t zero_only);
+  extern f_status_t controller_print_error_rule_setting_number_invalid_scheduler(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const uint8_t zero_only, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_number_invalid_scheduler_
 
 /**
@@ -296,6 +341,11 @@ extern "C" {
  *   The buffer containing the invalid value.
  * @param range
  *   The ranger within the buffer representing the invalid value.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -304,7 +354,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_number_invalid_timeout_
-  extern f_status_t controller_print_error_rule_setting_number_invalid_timeout(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_error_rule_setting_number_invalid_timeout(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_number_invalid_timeout_
 
 /**
@@ -323,6 +373,11 @@ extern "C" {
  *   The value being set.
  * @param suffix
  *   An additional message to append at the end (before the final period).
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -331,7 +386,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_value_
-  extern f_status_t controller_print_error_rule_setting_value(fl_print_t * const print, const f_string_static_t name, const f_string_static_t name_sub, const f_string_static_t value, const f_string_t suffix);
+  extern f_status_t controller_print_error_rule_setting_value(fl_print_t * const print, const f_string_static_t name, const f_string_static_t name_sub, const f_string_static_t value, const f_string_t suffix, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_value_
 
 /**
@@ -351,6 +406,11 @@ extern "C" {
  *   The Object name of the setting being populated.
  * @param index
  *   Position within the content_actions range cache array.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -359,7 +419,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_error_rule_setting_values_
-  extern f_status_t controller_print_error_rule_setting_values(fl_print_t * const print, controller_cache_t * const cache, const f_string_static_t name, const f_number_unsigned_t index);
+  extern f_status_t controller_print_error_rule_setting_values(fl_print_t * const print, controller_cache_t * const cache, const f_string_static_t name, const f_number_unsigned_t index, const f_string_t line_file);
 #endif // _di_controller_print_error_rule_setting_values_
 
 #ifdef __cplusplus
index 551c4bcde289b5e08f72bb200d04f213c6ef9e5d..72aab61db858ed7f49da7e7cdcd3a107132154a5 100644 (file)
@@ -82,7 +82,7 @@ extern "C" {
       fl_print_format(" %[state, skipping.%]%r", print->to, print->context, print->context, f_string_eol_s);
     }
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, 0);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 4af097106f542eeeb528f847604a7d8255ec6b46..23b1bb6be661ee8fba16aad0042567c59f70606b 100644 (file)
@@ -91,7 +91,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->set->title, name, print->set->title);
     fl_print_format("' %Q.", print->to, reason, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry);
+    controller_print_error_entry_cache(print, &main->thread.cache.action, is_entry, 0);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index b48ebc71969915c9424b6432316a9639034cd65c..c496547e08859030f399960f251bdb69c16b1b7d 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_warning_entry_action_failsafe_twice_
-  f_status_t controller_print_warning_entry_action_failsafe_twice(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry) {
+  f_status_t controller_print_warning_entry_action_failsafe_twice(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -16,7 +16,7 @@ extern "C" {
 
     fl_print_format("%r%[%QFailsafe may not be specified when running in failsafe, ignoring.%]%r", print->to, f_string_eol_s, print->context, print->prefix, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -25,7 +25,7 @@ extern "C" {
 #endif // _di_controller_print_warning_entry_action_failsafe_twice_
 
 #ifndef _di_controller_print_warning_entry_action_multiple_
-  f_status_t controller_print_warning_entry_action_multiple(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name) {
+  f_status_t controller_print_warning_entry_action_multiple(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -38,7 +38,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format("%[' %r Item Actions detected; only the first will be used.%]%r", print->to, print->context, is_entry ? controller_entry_s : controller_exit_s, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -47,7 +47,7 @@ extern "C" {
 #endif // _di_controller_print_warning_entry_action_multiple_
 
 #ifndef _di_controller_print_warning_entry_action_unknown_
-  f_status_t controller_print_warning_entry_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name) {
+  f_status_t controller_print_warning_entry_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -60,7 +60,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 8ee66c7e2f722d818d8cb98413069576c75e8840..f5f0d72efc5ade0e5d9f3e0c1532590d9f6f2dbc 100644 (file)
@@ -34,6 +34,11 @@ extern "C" {
  * @param is_entry
  *   If TRUE, then this loads as an Entry.
  *   If FALSE, then this loads as an Exit.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -42,7 +47,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_entry_action_failsafe_twice_
-  extern f_status_t controller_print_warning_entry_action_failsafe_twice(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry);
+  extern f_status_t controller_print_warning_entry_action_failsafe_twice(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_t line_file);
 #endif // _di_controller_print_warning_entry_action_failsafe_twice_
 
 /**
@@ -65,6 +70,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param name
  *   The item name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -73,7 +83,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_entry_action_multiple_
-  extern f_status_t controller_print_warning_entry_action_multiple(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name);
+  extern f_status_t controller_print_warning_entry_action_multiple(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_warning_entry_action_multiple_
 
 /**
@@ -95,6 +105,11 @@ extern "C" {
  *   The parameter name whose value is unknown.
  * @param unknown
  *   The unknown value.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -103,7 +118,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_entry_action_unknown_
-  extern f_status_t controller_print_warning_entry_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name);
+  extern f_status_t controller_print_warning_entry_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_warning_entry_action_unknown_
 
 #ifdef __cplusplus
index 7e0b8b402b7c6b08a0d55c6b8718fcc294a61827..8acfed2073bd6aa4e256df3f2ac402d36444fc7a 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_warning_entry_item_duplicate_ignore_
-  f_status_t controller_print_warning_entry_item_duplicate_ignore(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name) {
+  f_status_t controller_print_warning_entry_item_duplicate_ignore(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index e4bab90b65d8fc515e3d28273757438d1e1198c6..fa38559645a30aca865ec757525f848ba3264e3c 100644 (file)
@@ -36,6 +36,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param name
  *   The item name.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -44,7 +49,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_entry_item_duplicate_ignore_
-  extern f_status_t controller_print_warning_entry_item_duplicate_ignore(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name);
+  extern f_status_t controller_print_warning_entry_item_duplicate_ignore(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_warning_entry_item_duplicate_ignore_
 
 #ifdef __cplusplus
index 06cead492a0d9a7f83f52d184dcf1cb5515bbfc7..e72f9a61a46cbbb944bd5007cfde9157df16b8ee 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_warning_entry_setting_unknown_action_
-  f_status_t controller_print_warning_entry_setting_unknown_action(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name) {
+  f_status_t controller_print_warning_entry_setting_unknown_action(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
@@ -27,7 +27,7 @@ extern "C" {
 #endif // _di_controller_print_warning_entry_setting_unknown_action_
 
 #ifndef _di_controller_print_warning_entry_setting_unknown_action_value_
-  f_status_t controller_print_warning_entry_setting_unknown_action_value(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range) {
+  f_status_t controller_print_warning_entry_setting_unknown_action_value(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file) {
 
     if (!print || !print->custom || !cache) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -42,7 +42,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_range_single_s.string, print->to, print->notable, buffer, range, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_entry_cache(print, &cache->action, is_entry);
+    controller_print_error_entry_cache(print, &cache->action, is_entry, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 2aa639f0ddd0387814f064adbd938d9b546b4da0..5b7c085cb25572bec5ee2227e6ff79fd88281b58 100644 (file)
@@ -19,6 +19,8 @@ extern "C" {
 /**
  * Print a message for when an Entry Setting Action is unknown.
  *
+ * @fixme Not used anymore? Is it intended to be used? Remove this if not used and not planned to be used. Remove this comment once determined that this should remain.
+ *
  * @param print
  *   The output structure to print to.
  *
@@ -36,6 +38,11 @@ extern "C" {
  *   If FALSE, then this loads as an Exit.
  * @param name
  *   The parameter name whose value is unknown.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -44,7 +51,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_entry_setting_unknown_action_
-  extern f_status_t controller_print_warning_entry_setting_unknown_action(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name);
+  extern f_status_t controller_print_warning_entry_setting_unknown_action(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_warning_entry_setting_unknown_action_
 
 /**
@@ -71,6 +78,11 @@ extern "C" {
  *   The buffer containing the unknown value.
  * @param range
  *   The range within the buffer representing the unknown value.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -79,7 +91,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_entry_setting_unknown_action_value_
-  extern f_status_t controller_print_warning_entry_setting_unknown_action_value(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range);
+  extern f_status_t controller_print_warning_entry_setting_unknown_action_value(fl_print_t * const print, controller_cache_t * const cache, const uint8_t is_entry, const f_string_static_t name, const f_string_static_t buffer, const f_range_t range, const f_string_t line_file);
 #endif // _di_controller_print_warning_entry_setting_unknown_action_value_
 
 #ifdef __cplusplus
index f4124ac9daf94f38ab14aa9fbb0d6fcad13349c5..037e55fc8c41a42b443090f47d286f71bfb8f55c 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_warning_rule_action_unknown_
-  f_status_t controller_print_warning_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name) {
+  f_status_t controller_print_warning_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 73b62c5c63978866fb51d13e122df67d53e4f256..86e1139dc4eefc0a07ad4b1191dfa38d2da7501b 100644 (file)
@@ -33,6 +33,11 @@ extern "C" {
  *   Must not be NULL.
  * @param name
  *   The Action name that is unknown.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -41,7 +46,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_rule_action_unknown_
-  extern f_status_t controller_print_warning_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name);
+  extern f_status_t controller_print_warning_rule_action_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_warning_rule_action_unknown_
 
 #ifdef __cplusplus
index a038ee8538e65450ea5ad09bf9d89c8df43d77e0..af2821d65daa10bb6ce8997e7d87926bf823f111 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_warning_rule_item_unknown_
-  f_status_t controller_print_warning_rule_item_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name) {
+  f_status_t controller_print_warning_rule_item_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index a45bdc08ac02419dc056a5106f7cfc27e814563e..8a13912cf30d658d98d7024cd4f5617cf2cbdf58 100644 (file)
@@ -33,6 +33,11 @@ extern "C" {
  *   Must not be NULL.
  * @param name
  *   The Item name that is unknown.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -41,7 +46,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_rule_item_unknown_
-  extern f_status_t controller_print_warning_rule_item_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name);
+  extern f_status_t controller_print_warning_rule_item_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t line_file);
 #endif // _di_controller_print_warning_rule_item_unknown_
 
 #ifdef __cplusplus
index d6604fbcef3c9480625c3746a0a118a27ec20b3b..151290b6c75f2695443ec3a452cad17f20447810 100644 (file)
@@ -5,7 +5,7 @@ extern "C" {
 #endif
 
 #ifndef _di_controller_print_warning_rule_setting_unknown_
-  f_status_t controller_print_warning_rule_setting_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t what) {
+  f_status_t controller_print_warning_rule_setting_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t what, const f_string_t line_file) {
 
     if (!print || !print->custom || !action) return F_status_set_error(F_output_not);
     if (print->verbosity < f_console_verbosity_debug_e) return F_output_not;
@@ -18,7 +18,7 @@ extern "C" {
     fl_print_format(f_string_format_Q_single_s.string, print->to, print->notable, name, print->notable);
     fl_print_format(f_string_format_sentence_end_single_quote_s.string, print->to, print->context, print->context, f_string_eol_s);
 
-    controller_print_error_rule_cache(print, action, F_true);
+    controller_print_error_rule_cache(print, action, F_true, line_file);
 
     controller_unlock_print_flush(print->to, &main->thread);
 
index 8a0ffff4144e3e61a1f48ec96da74dcf83ba5c1f..3c171f76e9231a6db7a2aaa689d656714d00e530 100644 (file)
@@ -33,6 +33,11 @@ extern "C" {
  *   Must not be NULL.
  * @param name
  *   The Item name that is unknown.
+ * @param line_file
+ *   The line number and file name associated with the error.
+ *   Set this to macros like controller_debug_file_line_d.
+ *
+ *   Set to NULL to disable.
  *
  * @return
  *   F_okay on success.
@@ -41,7 +46,7 @@ extern "C" {
  *   F_output_not (with error bit) if setting is NULL.
  */
 #ifndef _di_controller_print_warning_rule_setting_unknown_
-  extern f_status_t controller_print_warning_rule_setting_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t what);
+  extern f_status_t controller_print_warning_rule_setting_unknown(fl_print_t * const print, controller_cache_action_t * const action, const f_string_static_t name, const f_string_t what, const f_string_t line_file);
 #endif // _di_controller_print_warning_rule_setting_unknown_
 
 #ifdef __cplusplus
index c02743bcfa78986e063069abef7fc19a8db7ebb7..bc7faaa365115be92d6e6b9478db078dbe6550cc 100644 (file)
@@ -236,7 +236,7 @@ extern "C" {
     f_status_t status = controller_lock_read_standard(is_entry, controller_lock_check_flag_yes_d, &main->thread, &main->thread.lock.rule);
 
     if (F_status_is_error(status)) {
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true);
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true, controller_debug_file_line_d);
 
       return status;
     }
index 32cca1e40d2b9c7fd13ea062ee0c650b3998d7af..7a865f18606262868dbe7b5b4eaa83f4f9d35188 100644 (file)
@@ -290,7 +290,7 @@ extern "C" {
           if (!type_rerun) {
             state->status = F_status_set_error(F_valid_not);
 
-            controller_print_error_rule_action_first(&main->program.error, &cache->action, cache->buffer_item, cache->content_action.array[0]);
+            controller_print_error_rule_action_first(&main->program.error, &cache->action, cache->buffer_item, cache->content_action.array[0], controller_debug_file_line_d);
 
             return;
           }
@@ -310,7 +310,7 @@ extern "C" {
           else {
             state->status = F_status_set_error(F_valid_not);
 
-            controller_print_error_rule_action_second(&main->program.error, &cache->action, cache->buffer_item, cache->content_action.array[1]);
+            controller_print_error_rule_action_second(&main->program.error, &cache->action, cache->buffer_item, cache->content_action.array[1], controller_debug_file_line_d);
 
             return;
           }
@@ -329,7 +329,7 @@ extern "C" {
             else {
               state->status = F_status_set_error(F_valid_not);
 
-              controller_print_error_rule_action_unknown(&main->program.error, &cache->action, controller_rerun_s, cache->buffer_item, cache->content_action.array[i]);
+              controller_print_error_rule_action_unknown(&main->program.error, &cache->action, controller_rerun_s, cache->buffer_item, cache->content_action.array[i], controller_debug_file_line_d);
 
               return;
             }
@@ -354,7 +354,7 @@ extern "C" {
               item->with &= ~controller_with_session_new_d;
             }
             else {
-              controller_print_error_rule_action_unknown(&main->program.error, &cache->action, controller_with_s, cache->buffer_item, cache->content_action.array[i]);
+              controller_print_error_rule_action_unknown(&main->program.error, &cache->action, controller_with_s, cache->buffer_item, cache->content_action.array[i], controller_debug_file_line_d);
 
               state->status = F_status_set_error(F_valid_not);
 
@@ -457,7 +457,7 @@ extern "C" {
     }
 
     if (F_status_is_error_not(state->status) && state->status == F_data_not) {
-      controller_print_debug_rule_action_empty(&main->program.debug, cache);
+      controller_print_debug_rule_action_empty(&main->program.debug, cache, controller_debug_file_line_d);
     }
   }
 #endif // _di_controller_rule_action_read_
@@ -491,7 +491,7 @@ extern "C" {
           controller_print_error(&main->program.error, macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect));
         }
         else {
-          controller_print_error_rule_action_positive_number_not(&main->program.error, &cache->action, name, cache->buffer_item, cache->content_action, *index, status);
+          controller_print_error_rule_action_positive_number_not(&main->program.error, &cache->action, name, cache->buffer_item, cache->content_action, *index, status, controller_debug_file_line_d);
         }
       }
     }
index 1089d01e0c7890de6f64e7eecf822abd6acaca37..027d9cfd0d4911defe017779ded26ec69fe0453f 100644 (file)
@@ -212,10 +212,15 @@ extern "C" {
       }
     }
 
+    // 0x1 = No Item, 0x2 = No action.
+    uint8_t execute_nothing = 0x3;
+
     for (i = 0; i < instance->rule.items.used && controller_thread_is_enabled_instance(instance); ++i) {
 
       if (instance->rule.items.array[i].type == controller_rule_item_type_settings_e) continue;
 
+      execute_nothing &= ~0x1;
+
       for (j = 0; j < instance->rule.items.array[i].actions.used; ++j) {
 
         if (!controller_thread_is_enabled_instance(instance)) {
@@ -226,6 +231,8 @@ extern "C" {
 
         if (instance->rule.items.array[i].actions.array[j].type != action) continue;
 
+        execute_nothing &= ~0x2;
+
         execute_set.parameter.data = 0;
         execute_set.parameter.option = FL_execute_parameter_option_threadsafe_d | FL_execute_parameter_option_return_d;
 
@@ -241,7 +248,7 @@ extern "C" {
           status = controller_rule_expand(main, instance->rule.items.array[i].actions.array[j], instance);
 
           if (F_status_is_error(status)) {
-            controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false, controller_debug_file_line_d);
 
             break;
           }
@@ -271,7 +278,7 @@ extern "C" {
           status = controller_rule_expand(main, instance->rule.items.array[i].actions.array[j], instance);
 
           if (F_status_is_error(status)) {
-            controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false, controller_debug_file_line_d);
 
             break;
           }
@@ -313,7 +320,7 @@ extern "C" {
           status = controller_rule_expand(main, instance->rule.items.array[i].actions.array[j], instance);
 
           if (F_status_is_error(status)) {
-            controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false, controller_debug_file_line_d);
 
             break;
           }
@@ -343,7 +350,7 @@ extern "C" {
           else {
             success = F_status_set_error(F_failure);
 
-            controller_print_error_rule_action_missing_pid(&main->program.error, &instance->cache.action, instance->rule.alias);
+            controller_print_error_rule_action_missing_pid(&main->program.error, &instance->cache.action, instance->rule.alias, controller_debug_file_line_d);
           }
         }
         else if (instance->rule.items.array[i].type == controller_rule_item_type_utility_e) {
@@ -351,7 +358,7 @@ extern "C" {
             status = controller_rule_expand(main, instance->rule.items.array[i].actions.array[j], instance);
 
             if (F_status_is_error(status)) {
-              controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(controller_rule_expand), F_true, F_false, controller_debug_file_line_d);
 
               break;
             }
@@ -387,7 +394,7 @@ extern "C" {
           else {
             success = F_status_set_error(F_failure);
 
-            controller_print_error_rule_action_missing_pid(&main->program.error, &instance->cache.action, instance->rule.alias);
+            controller_print_error_rule_action_missing_pid(&main->program.error, &instance->cache.action, instance->rule.alias, controller_debug_file_line_d);
           }
         }
         else {
@@ -405,15 +412,11 @@ extern "C" {
        }
     } // for
 
-    // Lock failed, attempt to re-establish lock before returning.
-    if (F_status_set_fine(status) == F_lock || F_status_set_fine(status) == F_lock_read || F_status_set_fine(status) == F_lock_write) {
-      success = F_false;
-
-      return status;
-    }
+    // Lock failed, attempt to re-establish lock before returning. @fixme out of date?
+    if (F_status_set_fine(status) == F_lock || F_status_set_fine(status) == F_lock_read || F_status_set_fine(status) == F_lock_write) return status;
 
-    if (success == false && !instance->rule.items.used) {
-      controller_print_error_rule_item_execute_none(&main->program.error, &instance->cache.action, instance->rule.alias);
+    if (success == false && execute_nothing) {
+      controller_print_error_rule_item_execute_none(&main->program.error, &instance->cache.action, instance->rule.alias, execute_nothing & 0x2, controller_debug_file_line_d);
     }
 
     if (!controller_thread_is_enabled_instance(instance)) return F_status_set_error(F_interrupt);
@@ -485,7 +488,7 @@ extern "C" {
       f_status_t status_lock = controller_lock_write_instance(instance, &instance->use);
 
       if (F_status_is_error(status_lock)) {
-        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false);
+        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false, controller_debug_file_line_d);
 
         return status_lock;
       }
@@ -525,14 +528,14 @@ extern "C" {
         const f_status_t status_lock = controller_lock_read_instance(instance, &instance->use);
 
         if (F_status_is_error(status_lock)) {
-          controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+          controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
           return status_lock;
         }
       }
 
       if ((WIFEXITED(instance->result) && WEXITSTATUS(instance->result)) || status == F_control_group || status == F_failure || status == F_limit || status == F_processor || status == F_schedule) {
-        controller_print_error_rule_item_execute(&instance->main->program.error, type == controller_rule_item_type_script_e, program.used ? program : arguments.array[0], status, instance->result);
+        controller_print_error_rule_item_execute(&instance->main->program.error, type == controller_rule_item_type_script_e, program.used ? program : arguments.array[0], status, instance->result, controller_debug_file_line_d);
       }
       else {
         controller_print_error_status(&instance->main->program.error, macro_controller_f(fll_execute_program), F_status_set_fine(status));
@@ -673,7 +676,7 @@ extern "C" {
       f_status_t status_lock = controller_lock_write_instance(instance, &instance->use);
 
       if (status_lock != F_okay) {
-        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false);
+        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false, controller_debug_file_line_d);
 
         return status_lock;
       }
@@ -689,7 +692,7 @@ extern "C" {
       status_lock = controller_lock_write_instance(instance, &instance->use);
 
       if (status_lock != F_okay) {
-        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false);
+        controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false, controller_debug_file_line_d);
 
         return F_status_set_error(F_lock_write);
       }
@@ -729,14 +732,14 @@ extern "C" {
         const f_status_t status_lock = controller_lock_read_instance(instance, &instance->use);
 
         if (F_status_is_error(status_lock)) {
-          controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+          controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
           return status_lock;
         }
       }
 
       if ((WIFEXITED(instance->result) && WEXITSTATUS(instance->result)) || status == F_control_group || status == F_failure || status == F_limit || status == F_processor || status == F_schedule) {
-        controller_print_error_rule_item_execute(&instance->main->program.error, type == controller_rule_item_type_utility_e, program.used ? program : arguments.array[0], status, instance->result);
+        controller_print_error_rule_item_execute(&instance->main->program.error, type == controller_rule_item_type_utility_e, program.used ? program : arguments.array[0], status, instance->result, controller_debug_file_line_d);
       }
       else {
         controller_print_error_status(&instance->main->program.error, macro_controller_f(fll_execute_program), F_status_set_fine(status));
@@ -765,7 +768,7 @@ extern "C" {
       if (!controller_thread_is_enabled_instance(instance)) return -2;
 
       if (!rerun_item->max || rerun_item->count < rerun_item->max) {
-        controller_main_print_debug_rule_execute_rerun(&main->program.output, instance, rerun_item, action);
+        controller_main_print_debug_rule_execute_rerun(&main->program.output, instance, rerun_item, action, controller_debug_file_line_d);
 
         if (rerun_item->delay) {
           f_time_spec_t delay = f_time_spec_t_initialize;
index 31e4b419776773f7648ec3877abe25b6b7c6ed83..82c1f3cecb2cfbd4882702e287c0ad9867188fa7 100644 (file)
@@ -24,7 +24,7 @@ extern "C" {
         break;
 
       default:
-        controller_print_error_rule_action_type_unsupported(&main->program.error, &instance->cache.action, controller_convert_rule_action_type_string(instance->action), "execute rule");
+        controller_print_error_rule_action_type_unsupported(&main->program.error, &instance->cache.action, controller_convert_rule_action_type_string(instance->action), "execute rule", controller_debug_file_line_d);
 
         return F_status_set_error(F_parameter);
     }
@@ -42,7 +42,7 @@ extern "C" {
     }
 
     if (F_status_is_error(status)) {
-      controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append), F_true, F_true);
+      controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append), F_true, F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -50,7 +50,7 @@ extern "C" {
     status = f_string_dynamic_append(instance->rule.alias, &instance->cache.action.name_file);
 
     if (F_status_is_error(status)) {
-      controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append), F_true, F_true);
+      controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append), F_true, F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -62,7 +62,7 @@ extern "C" {
     }
 
     if (F_status_is_error(status)) {
-      controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append), F_true, F_true);
+      controller_print_error_rule(&main->program.error, &instance->cache.action, F_status_set_fine(status), macro_controller_f(f_string_dynamic_append), F_true, F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -83,7 +83,7 @@ extern "C" {
           break;
 
         default:
-          controller_print_error_rule_action_type_unsupported(&main->program.error, &instance->cache.action, controller_convert_rule_action_type_string(instance->action), "validate Fule execution");
+          controller_print_error_rule_action_type_unsupported(&main->program.error, &instance->cache.action, controller_convert_rule_action_type_string(instance->action), "validate Fule execution", controller_debug_file_line_d);
 
           break;
       }
@@ -138,7 +138,7 @@ extern "C" {
               if (!controller_thread_is_enabled_instance_type(&main->thread, instance->type)) return F_status_set_error(F_interrupt);
             }
 
-            controller_print_error_rule_item_rule_not_loaded(&main->program.error, &instance->cache.action, dynamics[i]->array[j]);
+            controller_print_error_rule_item_rule_not_loaded(&main->program.error, &instance->cache.action, dynamics[i]->array[j], controller_debug_file_line_d);
 
             return status;
           }
@@ -148,7 +148,7 @@ extern "C" {
           status_lock = controller_lock_read_instance(instance, &dependency->active);
 
           if (F_status_is_error(status_lock)) {
-            controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+            controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
             status = F_false;
             dependency = 0;
@@ -166,12 +166,12 @@ extern "C" {
             rule = 0;
 
             if (i) {
-              controller_print_debug_rule_instance_need_want_wish(&main->program.warning, instance, strings[i], dynamics[i]->array[j], "is not found");
+              controller_print_debug_rule_instance_need_want_wish(&main->program.warning, instance, strings[i], dynamics[i]->array[j], "is not found", controller_debug_file_line_d);
             }
             else {
               status = F_status_set_error(F_found_not);
 
-              controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], dynamics[i]->array[j], "is not found");
+              controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], dynamics[i]->array[j], "is not found", controller_debug_file_line_d);
 
               if (!(instance->options & controller_instance_option_simulate_d)) {
                 if (dependency) {
@@ -198,7 +198,7 @@ extern "C" {
             status_lock = controller_lock_read_instance(instance, &dependency->use);
 
             if (F_status_is_error(status_lock)) {
-              controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+              controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
               status = status_lock;
             }
@@ -212,7 +212,7 @@ extern "C" {
               status_lock = controller_lock_read_instance(instance, &dependency->use);
 
               if (F_status_is_error(status_lock)) {
-                controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+                controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
                 status = status_lock;
               }
@@ -247,7 +247,7 @@ extern "C" {
 
                 if (F_status_is_error(status)) {
                   if (i == 0 || i == 1 || F_status_set_fine(status) == F_memory_not) {
-                    controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "failed during execution");
+                    controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "failed during execution", controller_debug_file_line_d);
 
                     if (!(dependency->options & controller_instance_option_simulate_d) || F_status_set_fine(status) == F_memory_not) {
                       f_thread_unlock(&dependency->active);
@@ -256,7 +256,7 @@ extern "C" {
                     }
                   }
                   else {
-                    controller_print_debug_rule_instance_need_want_wish(&main->program.warning, instance, strings[i], alias_other_buffer, "failed during execution");
+                    controller_print_debug_rule_instance_need_want_wish(&main->program.warning, instance, strings[i], alias_other_buffer, "failed during execution", controller_debug_file_line_d);
                   }
                 }
               }
@@ -275,14 +275,14 @@ extern "C" {
               status = status_lock;
 
               if (F_status_set_fine(status_lock) != F_interrupt) {
-                controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "due to lock failure");
+                controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "due to lock failure", controller_debug_file_line_d);
               }
             }
             else if (controller_rule_status_is_error(instance->action, *rule)) {
               if (i == 0 || i == 1) {
                 status = F_status_set_error(F_found_not);
 
-                controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "is in a failed state");
+                controller_print_error_rule_instance_need_want_wish(&main->program.error, instance, strings[i], alias_other_buffer, "is in a failed state", controller_debug_file_line_d);
 
                 if (!(dependency->options & controller_instance_option_simulate_d)) {
                   f_thread_unlock(&dependency->active);
@@ -291,7 +291,7 @@ extern "C" {
                 }
               }
               else {
-                controller_print_debug_rule_instance_need_want_wish(&main->program.warning, instance, strings[i], alias_other_buffer, "is in a failed state");
+                controller_print_debug_rule_instance_need_want_wish(&main->program.warning, instance, strings[i], alias_other_buffer, "is in a failed state", controller_debug_file_line_d);
               }
             }
           }
@@ -335,7 +335,7 @@ extern "C" {
         if (missing) {
           status = F_status_set_error(F_parameter);
 
-          controller_print_error_rule_action_unknown_execute(&main->program.error, &instance->cache.action, instance->rule.name, controller_convert_rule_action_type_string(instance->action), instance->rule.items.used);
+          controller_print_error_rule_action_unknown_execute(&main->program.error, &instance->cache.action, instance->rule.name, controller_convert_rule_action_type_string(instance->action), instance->rule.items.used, controller_debug_file_line_d);
         }
       }
 
@@ -345,7 +345,11 @@ extern "C" {
         if (status == F_child || F_status_set_fine(status) == F_interrupt || F_status_set_fine(status) == F_lock || F_status_set_fine(status) == F_lock_read) return status;
 
         if (F_status_is_error(status)) {
-          controller_print_error_rule_item(&main->program.error, &instance->cache.action, F_true, F_status_set_fine(status));
+          if (F_status_set_fine(status) == F_parameter) {
+            controller_print_error_status(&main->program.error, macro_controller_f(controller_rule_execute), F_status_set_fine(status));
+          }
+
+          controller_print_error_rule_item(&main->program.error, &instance->cache.action, F_true, F_status_set_fine(status), controller_debug_file_line_d);
         }
       }
     }
@@ -353,7 +357,7 @@ extern "C" {
     status_lock = controller_lock_write_instance(instance, &instance->use);
 
     if (F_status_is_error(status_lock)) {
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false);
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_false, controller_debug_file_line_d);
 
       return status_lock;
     }
@@ -386,7 +390,7 @@ extern "C" {
           if (F_status_is_error(status_lock)) {
             f_thread_unlock(&instance->use);
 
-            controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+            controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
             return F_status_set_error(status_lock);
           }
@@ -403,7 +407,7 @@ extern "C" {
     if (F_status_is_error(status_lock)) {
       f_thread_unlock(&instance->use);
 
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
       return F_status_set_error(status_lock);
     }
@@ -427,7 +431,7 @@ extern "C" {
     f_status_t status = controller_instance_prepare(main, type != controller_instance_type_exit_e, action, alias_rule, &instance);
 
     if (F_status_is_error(status)) {
-      controller_print_error_rule_item_rule_not_loaded(&main->program.error, &cache->action, alias_rule);
+      controller_print_error_rule_item_rule_not_loaded(&main->program.error, &cache->action, alias_rule, controller_debug_file_line_d);
 
       return status;
     }
@@ -435,8 +439,8 @@ extern "C" {
     status = controller_lock_read_standard(type != controller_instance_type_exit_e, controller_lock_check_flag_yes_d, &main->thread, &instance->active);
 
     if (status != F_okay) {
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true);
-      controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(status));
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true, controller_debug_file_line_d);
+      controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(status), controller_debug_file_line_d);
 
       return status;
     }
@@ -446,7 +450,7 @@ extern "C" {
     if (F_status_is_error(status)) {
       f_thread_unlock(&instance->active);
 
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_false);
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_false, controller_debug_file_line_d);
 
       return status;
     }
@@ -573,7 +577,7 @@ extern "C" {
     if (F_status_is_error(status)) {
       f_thread_unlock(&instance->active);
 
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true);
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -589,7 +593,7 @@ extern "C" {
         if (F_status_is_error(status)) {
           f_thread_unlock(&instance->active);
 
-          controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_false);
+          controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status), F_false, controller_debug_file_line_d);
 
           return status;
         }
@@ -618,37 +622,10 @@ extern "C" {
 
     if (!instance || !instance->main) return F_status_set_error(F_parameter);
 
-    f_status_t status = F_okay;
-
-    if (options_force & controller_instance_option_asynchronous_d) {
-      status = controller_lock_read_instance(instance, &instance->active);
-
-      if (F_status_is_error(status)) {
-        controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_true);
-
-        return status;
-      }
-    }
-
-    status = controller_rule_instance_perform_details(instance, options_force);
-
-    if (options_force & controller_instance_option_asynchronous_d) {
-      f_thread_unlock(&instance->active);
-    }
-
-    return status;
-  }
-#endif // _di_controller_rule_instance_perform_
-
-#ifndef _di_controller_rule_instance_perform_details_
-  f_status_t controller_rule_instance_perform_details(controller_instance_t * const instance, const uint8_t options_force) {
-
-    if (!instance || !instance->main) return F_status_set_error(F_parameter);
-
     f_status_t status = controller_lock_read_instance(instance, &instance->use);
 
     if (F_status_is_error(status)) {
-      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_true);
+      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -663,7 +640,7 @@ extern "C" {
     if (F_status_is_error(status)) return status;
 
     if (status == F_true) {
-      status = controller_rule_instance_perform_details_copy(instance, *rule, &instance->rule);
+      status = controller_rule_instance_perform_copy(instance, *rule, &instance->rule);
 
       if (F_status_is_error_not(status)) {
 
@@ -672,12 +649,12 @@ extern "C" {
           return F_process_not;
         }
 
-        status = controller_rule_instance_perform_details_stack_verify(instance, rule);
+        status = controller_rule_instance_perform_stack_verify(instance, rule);
 
         if (!controller_thread_is_enabled_instance(instance)) return F_status_set_error(F_interrupt);
 
         if (F_status_is_error_not(status)) {
-          status = controller_rule_instance_perform_details_stack_rule_append(instance, rule);
+          status = controller_rule_instance_perform_stack_rule_append(instance, rule);
 
           if (F_status_is_error_not(status)) {
             status = controller_rule_instance(instance);
@@ -688,7 +665,7 @@ extern "C" {
     else {
       status = F_status_set_error(F_found_not);
 
-      controller_print_error_rule_item_rule_not_loaded(&instance->main->program.error, &instance->cache.action, instance->rule.alias);
+      controller_print_error_rule_item_rule_not_loaded(&instance->main->program.error, &instance->cache.action, instance->rule.alias, controller_debug_file_line_d);
     }
 
     if (status == F_child) return status;
@@ -706,7 +683,7 @@ extern "C" {
       const f_status_t status_lock = controller_lock_write_instance(instance, &instance->use);
 
       if (F_status_is_error(status_lock)) {
-        controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status_lock), F_false);
+        controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status_lock), F_false, controller_debug_file_line_d);
 
         return status_lock;
       }
@@ -721,17 +698,17 @@ extern "C" {
 
     return controller_thread_is_enabled_instance(instance) ? status : F_status_set_error(F_interrupt);
   }
-#endif // _di_controller_rule_instance_perform_details_
+#endif // _di_controller_rule_instance_perform_
 
-#ifndef _di_controller_rule_instance_perform_details_copy_
-  f_status_t controller_rule_instance_perform_details_copy(controller_instance_t * const instance, const controller_rule_t source, controller_rule_t * const destination) {
+#ifndef _di_controller_rule_instance_perform_copy_
+  f_status_t controller_rule_instance_perform_copy(controller_instance_t * const instance, const controller_rule_t source, controller_rule_t * const destination) {
 
     if (!instance || !instance->main) return F_status_set_error(F_parameter);
 
     f_status_t status = controller_lock_write_instance(instance, &instance->use);
 
     if (F_status_is_error(status)) {
-      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_false);
+      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_false, controller_debug_file_line_d);
 
       return status;
     }
@@ -748,17 +725,17 @@ extern "C" {
 
     return status;
   }
-#endif // _di_controller_rule_instance_perform_details_copy_
+#endif // _di_controller_rule_instance_perform_copy_
 
-#ifndef _di_controller_rule_instance_perform_details_stack_rule_append_
-  f_status_t controller_rule_instance_perform_details_stack_rule_append(controller_instance_t * const instance, controller_rule_t * const rule) {
+#ifndef _di_controller_rule_instance_perform_stack_rule_append_
+  f_status_t controller_rule_instance_perform_stack_rule_append(controller_instance_t * const instance, controller_rule_t * const rule) {
 
     if (!instance || !instance->main || !rule) return F_status_set_error(F_parameter);
 
     f_status_t status = controller_lock_write_instance(instance, &instance->use);
 
     if (F_status_is_error(status)) {
-      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_false);
+      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_false, controller_debug_file_line_d);
 
       return status;
     }
@@ -776,17 +753,17 @@ extern "C" {
 
     return status;
   }
-#endif // _di_controller_rule_instance_perform_details_stack_rule_append_
+#endif // _di_controller_rule_instance_perform_stack_rule_append_
 
-#ifndef _di_controller_rule_instance_perform_details_stack_verify_
-  f_status_t controller_rule_instance_perform_details_stack_verify(controller_instance_t * const instance, controller_rule_t * const rule) {
+#ifndef _di_controller_rule_instance_perform_stack_verify_
+  f_status_t controller_rule_instance_perform_stack_verify(controller_instance_t * const instance, controller_rule_t * const rule) {
 
     if (!instance || !instance->main || !rule) return F_status_set_error(F_parameter);
 
     f_status_t status = controller_lock_read_instance(instance, &instance->use);
 
     if (F_status_is_error(status)) {
-      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_true);
+      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_true, controller_debug_file_line_d);
 
       return status;
     }
@@ -798,7 +775,7 @@ extern "C" {
         // Never continue on circular recursion errors even in simulate mode.
         status = F_status_set_error(F_recurse);
 
-        controller_print_error_rule_stack_already(&instance->main->program.error, &instance->cache.action, instance->rule.alias, F_true);
+        controller_print_error_rule_stack_already(&instance->main->program.error, &instance->cache.action, instance->rule.alias, F_true, controller_debug_file_line_d);
 
         break;
       }
@@ -808,7 +785,7 @@ extern "C" {
 
     return status;
   }
-#endif // _di_controller_rule_instance_perform_details_stack_verify_
+#endif // _di_controller_rule_instance_perform_stack_verify_
 
 #ifdef __cplusplus
 } // extern "C"
index e0c4bfc8479c83ec69c1cb72648264bf53c8aff9..829f4ce384fc8953900de1799f1052b670e8b0fc 100644 (file)
@@ -107,35 +107,6 @@ extern "C" {
 #endif // _di_controller_rule_instance_begin_
 
 /**
- * A wrapper to controller_rule_instance_perform_details() that handles the active and instance locks.
- *
- * Enable active lock before calling controller_rule_instance_perform_details().
- * Disable active lock after calling controller_rule_instance_perform_details().
- *
- * The instance and active locks shall be held for the duration of this instance processing (aside from switching between read to/from write).
- *
- * @param instance
- *   The instance data.
- *
- *   Must not be NULL.
- * @param options_force
- *   Force the given instance options, only supporting a subset of instance options.
- *
- *   If controller_instance_option_asynchronous_d, then asynchronously execute.
- *   If not controller_instance_option_asynchronous_d, then synchronously execute.
- *
- * @return
- *   Status from: controller_rule_instance_perform_details().
- *
- *   F_parameter (with error bit) on invalid parameter.
- *
- * @see controller_rule_instance_perform_details()
- */
-#ifndef _di_controller_rule_instance_perform_
-  extern f_status_t controller_rule_instance_perform(controller_instance_t * const instance, const uint8_t options_force);
-#endif // _di_controller_rule_instance_perform_
-
-/**
  * Perform the work.
  *
  * This does all the preparation work that needs to be synchronously performed within the same thread.
@@ -173,9 +144,9 @@ extern "C" {
  * @see controller_rule_instance_begin()
  * @see controller_lock_read_instance()
  */
-#ifndef _di_controller_rule_instance_perform_details_
-  extern f_status_t controller_rule_instance_perform_details(controller_instance_t * const instance, const uint8_t options_force);
-#endif // _di_controller_rule_instance_perform_details_
+#ifndef _di_controller_rule_instance_perform_
+  extern f_status_t controller_rule_instance_perform(controller_instance_t * const instance, const uint8_t options_force);
+#endif // _di_controller_rule_instance_perform_
 
 /**
  * Wrap controller_rule_copy(), handling locking and prepping of rule before actual copy.
@@ -202,9 +173,9 @@ extern "C" {
  *
  *  @see controller_rule_copy()
  */
-#ifndef _di_controller_rule_instance_perform_details_copy_
-  extern f_status_t controller_rule_instance_perform_details_copy(controller_instance_t * const instance, const controller_rule_t source, controller_rule_t * const destination);
-#endif // _di_controller_rule_instance_perform_details_copy_
+#ifndef _di_controller_rule_instance_perform_copy_
+  extern f_status_t controller_rule_instance_perform_copy(controller_instance_t * const instance, const controller_rule_t source, controller_rule_t * const destination);
+#endif // _di_controller_rule_instance_perform_copy_
 
 /**
  * Append the rule to the stack.
@@ -230,9 +201,9 @@ extern "C" {
  *
  * @see controller_lock_read_instance()
  */
-#ifndef _di_controller_rule_instance_perform_details_stack_rule_append_
-  extern f_status_t controller_rule_instance_perform_details_stack_rule_append(controller_instance_t * const instance, controller_rule_t * const rule);
-#endif // _di_controller_rule_instance_perform_details_stack_rule_append_
+#ifndef _di_controller_rule_instance_perform_stack_rule_append_
+  extern f_status_t controller_rule_instance_perform_stack_rule_append(controller_instance_t * const instance, controller_rule_t * const rule);
+#endif // _di_controller_rule_instance_perform_stack_rule_append_
 
 /**
  * Check if the rule is on the stack already.
@@ -259,9 +230,9 @@ extern "C" {
  *
  * @see controller_lock_read_instance()
  */
-#ifndef _di_controller_rule_instance_perform_details_stack_verify_
-  extern f_status_t controller_rule_instance_perform_details_stack_verify(controller_instance_t * const instance, controller_rule_t * const rule);
-#endif // _di_controller_rule_instance_perform_details_stack_verify_
+#ifndef _di_controller_rule_instance_perform_stack_verify_
+  extern f_status_t controller_rule_instance_perform_stack_verify(controller_instance_t * const instance, controller_rule_t * const rule);
+#endif // _di_controller_rule_instance_perform_stack_verify_
 
 #ifdef __cplusplus
 } // extern "C"
index 6d782421a979ce0f9b522801f3e3a9a77a6fef4c..a765f67ed0fdb9708a20072c5b106860080bc47e 100644 (file)
@@ -125,7 +125,7 @@ extern "C" {
         type = controller_rule_action_type_with_e;
       }
       else {
-        controller_print_warning_rule_action_unknown(&main->program.warning, &cache->action, cache->action.name_action);
+        controller_print_warning_rule_action_unknown(&main->program.warning, &cache->action, cache->action.name_action, controller_debug_file_line_d);
 
         continue;
       }
@@ -134,7 +134,7 @@ extern "C" {
         if (type == controller_rule_action_type_group_e || type == controller_rule_action_type_pid_file_e || type == controller_rule_action_type_user_e) {
           state->status = F_status_set_error(F_support_not);
 
-          controller_print_error_rule_action_fss_0003_unsupported(&main->program.error, &cache->action, cache->action.name_action);
+          controller_print_error_rule_action_fss_0003_unsupported(&main->program.error, &cache->action, cache->action.name_action, controller_debug_file_line_d);
 
           break;
         }
index 4601db430f4d3488df506203166a6703263fb86e..557af82d8095ea4c43f1bf458ae962de9252c46f 100644 (file)
@@ -272,7 +272,7 @@ extern "C" {
             rule->items.array[rule->items.used].type = controller_rule_item_type_utility_e;
           }
           else {
-            controller_print_warning_rule_item_unknown(&main->program.warning, &cache->action, cache->action.name_item);
+            controller_print_warning_rule_item_unknown(&main->program.warning, &cache->action, cache->action.name_item, controller_debug_file_line_d);
 
             continue;
           }
@@ -316,7 +316,7 @@ extern "C" {
     }
 
     if (F_status_is_error(state.status)) {
-      controller_print_error_rule_item(&main->program.error, &cache->action, for_item, F_status_set_fine(state.status));
+      controller_print_error_rule_item(&main->program.error, &cache->action, for_item, F_status_set_fine(state.status), controller_debug_file_line_d);
 
       rule->status[0] = controller_error_simplify(F_status_set_fine(state.status));
 
index 4ebc66fd5edf948342c488266736aff73c25c7df..8beccf998c1c512b5e9287d8b9e19e34449c5249 100644 (file)
@@ -127,7 +127,7 @@ extern "C" {
     fll_fss_extended_read(cache->buffer_item, &range, &cache->object_actions, &cache->content_actions, 0, 0, &cache->delimits, 0, &state);
 
     if (F_status_is_error(state.status)) {
-      controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fll_fss_extended_read), F_true, F_false);
+      controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fll_fss_extended_read), F_true, F_false, controller_debug_file_line_d);
 
       return state.status;
     }
@@ -163,7 +163,7 @@ extern "C" {
       state.status = f_string_dynamic_partial_append_nulless(cache->buffer_item, cache->object_actions.array[i], &cache->action.name_item);
 
       if (F_status_is_error(state.status)) {
-        controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+        controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
         if (F_status_set_fine(state.status) == F_memory_not) {
           status_return = state.status;
@@ -179,7 +179,7 @@ extern "C" {
 
         controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-        controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+        controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
         continue;
       }
@@ -238,7 +238,7 @@ extern "C" {
       else {
         controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-        controller_print_warning_rule_setting_unknown(&main->program.warning, &cache->action, cache->action.name_item, "Unknown");
+        controller_print_warning_rule_setting_unknown(&main->program.warning, &cache->action, cache->action.name_item, "Unknown", controller_debug_file_line_d);
 
         continue;
       }
@@ -258,9 +258,9 @@ extern "C" {
             state.status = original;
           }
 
-          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
-          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status));
+          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status), controller_debug_file_line_d);
 
           if (F_status_set_fine(state.status) == F_memory_not) {
             status_return = state.status;
@@ -279,7 +279,7 @@ extern "C" {
         if (empty_disallow) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_warning_rule_setting_unknown(&main->program.warning, &cache->action, cache->action.name_item, "Empty");
+          controller_print_warning_rule_setting_unknown(&main->program.warning, &cache->action, cache->action.name_item, "Empty", controller_debug_file_line_d);
 
           continue;
         }
@@ -289,7 +289,7 @@ extern "C" {
         if (!cache->content_actions.array[i].used) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires one or more Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires one or more Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -307,7 +307,7 @@ extern "C" {
           state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(int32_t), (void **) &rule->affinity.array, &rule->affinity.used, &rule->affinity.size);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
 
             break;
           }
@@ -328,13 +328,13 @@ extern "C" {
 
             if (state.status == F_data_not || state.status == F_number || state.status == F_number_overflow || state.status == F_number_underflow || state.status == F_number_negative || state.status == F_number_decimal) {
               if (state.status == F_number_underflow) {
-                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too small for this system", cache->object_actions.array[i].start, line_item, &state);
+                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too small for this system", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
               }
               else if (state.status == F_number_overflow || state.status == F_number_positive) {
-                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too large for this system", cache->object_actions.array[i].start, line_item, &state);
+                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too large for this system", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
               }
               else {
-                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid number", cache->buffer_item, cache->content_actions.array[i].array[j], ", only whole numbers are allowed for an affinity value", cache->object_actions.array[i].start, line_item, &state);
+                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid number", cache->buffer_item, cache->content_actions.array[i].array[j], ", only whole numbers are allowed for an affinity value", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
               }
 
               state.status = F_status_set_error(F_valid_not);
@@ -344,7 +344,7 @@ extern "C" {
               }
             }
             else {
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false, controller_debug_file_line_d);
 
               state.status = F_status_set_error(state.status);
 
@@ -359,7 +359,7 @@ extern "C" {
           rule->affinity.array[rule->affinity.used++] = number;
         } // for
 
-        controller_print_error_rule_setting_values(&main->program.error, cache, controller_affinity_s, i);
+        controller_print_error_rule_setting_values(&main->program.error, cache, controller_affinity_s, i, controller_debug_file_line_d);
 
         continue;
       }
@@ -368,7 +368,7 @@ extern "C" {
         if (cache->content_actions.array[i].used != 2) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly two Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly two Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -387,7 +387,7 @@ extern "C" {
         state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(f_string_map_t), (void **) &setting_maps->array, &setting_maps->used, &setting_maps->size);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
 
           if (F_status_set_fine(state.status) == F_memory_not) {
             status_return = state.status;
@@ -403,7 +403,7 @@ extern "C" {
 
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
           continue;
         }
@@ -414,7 +414,7 @@ extern "C" {
         state.status = f_string_dynamic_partial_append_nulless(cache->buffer_item, cache->content_actions.array[i].array[0], &setting_maps->array[setting_maps->used].key);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
           if (F_status_set_fine(state.status) == F_memory_not) {
             status_return = state.status;
@@ -430,7 +430,7 @@ extern "C" {
 
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
           continue;
         }
@@ -438,7 +438,7 @@ extern "C" {
         state.status = f_string_dynamic_partial_append_nulless(cache->buffer_item, cache->content_actions.array[i].array[1], &setting_maps->array[setting_maps->used].value);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
           if (F_status_set_fine(state.status) == F_memory_not) {
             status_return = state.status;
@@ -454,12 +454,12 @@ extern "C" {
 
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
           continue;
         }
 
-        controller_print_error_rule_setting_mapping(&main->program.error, type == controller_rule_setting_type_define_e ? controller_define_s : controller_parameter_s, setting_maps->array[setting_maps->used]);
+        controller_print_error_rule_setting_mapping(&main->program.error, type == controller_rule_setting_type_define_e ? controller_define_s : controller_parameter_s, setting_maps->array[setting_maps->used], controller_debug_file_line_d);
 
         ++setting_maps->used;
 
@@ -470,7 +470,7 @@ extern "C" {
         if (cache->content_actions.array[i].used < 2 || rule->has & controller_rule_has_cgroup_d) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires two or more Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires two or more Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -486,7 +486,7 @@ extern "C" {
           rule->cgroup.as_new = F_true;
         }
         else {
-          controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unknown option", cache->buffer_item, cache->content_actions.array[i].array[0], "", cache->object_actions.array[i].start, line_item, &state);
+          controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unknown option", cache->buffer_item, cache->content_actions.array[i].array[0], "", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -500,7 +500,7 @@ extern "C" {
         state.status = f_string_dynamic_append(main->process.path_cgroup, &rule->cgroup.path);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_append), F_true, F_false);
+          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_append), F_true, F_false, controller_debug_file_line_d);
         }
         else {
           rule->cgroup.groups.used = 0;
@@ -510,7 +510,7 @@ extern "C" {
             state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &rule->cgroup.groups.array, &rule->cgroup.groups.used, &rule->cgroup.groups.size);
 
             if (F_status_is_error(state.status)) {
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
 
               break;
             }
@@ -520,7 +520,7 @@ extern "C" {
             state.status = f_string_dynamic_partial_append_nulless(cache->buffer_item, cache->content_actions.array[i].array[j], &rule->cgroup.groups.array[rule->cgroup.groups.used]);
 
             if (F_status_is_error(state.status)) {
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
               break;
             }
@@ -546,14 +546,14 @@ extern "C" {
 
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
           continue;
         }
 
         rule->has |= controller_rule_has_cgroup_d;
 
-        controller_print_error_rule_setting_values(&main->program.error, cache, controller_cgroup_s, i);
+        controller_print_error_rule_setting_values(&main->program.error, cache, controller_cgroup_s, i, controller_debug_file_line_d);
 
         continue;
       }
@@ -562,7 +562,7 @@ extern "C" {
         if (cache->content_actions.array[i].used != 3) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires three Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires three Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -622,7 +622,7 @@ extern "C" {
         else {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_error_rule_setting_reason_name(&main->program.error, &cache->action, "Unknown resource limit type", cache->action.name_action);
+          controller_print_error_rule_setting_reason_name(&main->program.error, &cache->action, "Unknown resource limit type", cache->action.name_action, controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -638,7 +638,7 @@ extern "C" {
 
             state.status = F_status_set_error(F_valid_not);
 
-            controller_print_error_rule_setting_reason_name(&main->program.error, &cache->action, "The resource limit type is already specified", cache->action.name_action);
+            controller_print_error_rule_setting_reason_name(&main->program.error, &cache->action, "The resource limit type is already specified", cache->action.name_action, controller_debug_file_line_d);
 
             if (F_status_is_error_not(status_return)) {
               status_return = state.status;
@@ -651,7 +651,7 @@ extern "C" {
         state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(f_limit_set_t), (void **) &rule->limits.array, &rule->limits.used, &rule->limits.size);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
 
           if (F_status_set_fine(state.status) == F_memory_not) {
             status_return = state.status;
@@ -667,7 +667,7 @@ extern "C" {
 
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+          controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
           continue;
         }
@@ -692,13 +692,13 @@ extern "C" {
 
             if (state.status == F_data_not || state.status == F_number || state.status == F_number_overflow || state.status == F_number_underflow || state.status == F_number_negative || state.status == F_number_positive || state.status == F_number_decimal) {
               if (state.status == F_number_underflow) {
-                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too small for this system", cache->object_actions.array[i].start, line_item, &state);
+                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too small for this system", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
               }
               else if (state.status == F_number_overflow) {
-                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too large for this system", cache->object_actions.array[i].start, line_item, &state);
+                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", the number is too large for this system", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
               }
               else {
-                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", only whole numbers are allowed for a resource limit value", cache->object_actions.array[i].start, line_item, &state);
+                controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[j], ", only whole numbers are allowed for a resource limit value", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
               }
 
               state.status = F_status_set_error(F_valid_not);
@@ -708,7 +708,7 @@ extern "C" {
               }
             }
             else {
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false, controller_debug_file_line_d);
 
               state.status = F_status_set_error(state.status);
 
@@ -732,7 +732,7 @@ extern "C" {
 
         rule->limits.array[rule->limits.used++].type = type;
 
-        controller_print_error_rule_setting_values(&main->program.error, cache, controller_limit_s, i);
+        controller_print_error_rule_setting_values(&main->program.error, cache, controller_limit_s, i, controller_debug_file_line_d);
 
         continue;
       }
@@ -752,7 +752,7 @@ extern "C" {
         if (setting_value->used || !cache->content_actions.array[i].used) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires one or more Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires one or more Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -800,7 +800,7 @@ extern "C" {
 
             controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
             continue;
           }
@@ -817,7 +817,7 @@ extern "C" {
             }
 
             if (state.status == F_false) {
-              controller_print_error_rule_setting_name_invalid(&main->program.error, &cache->action, *setting_value);
+              controller_print_error_rule_setting_name_invalid(&main->program.error, &cache->action, *setting_value, controller_debug_file_line_d);
 
               if (F_status_is_error_not(status_return)) {
                 status_return = F_status_set_error(F_valid_not);
@@ -826,13 +826,13 @@ extern "C" {
             else {
 
               // This function should only return F_complete_not_utf on error.
-              controller_print_error_rule(&main->program.error, &cache->action, F_complete_not_utf, macro_controller_f(controller_validate_has_graph), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_complete_not_utf, macro_controller_f(controller_validate_has_graph), F_true, F_false, controller_debug_file_line_d);
 
               if (F_status_is_error_not(status_return)) {
                 status_return = state.status;
               }
 
-              controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status));
+              controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status), controller_debug_file_line_d);
             }
 
             setting_value->used = 0;
@@ -840,13 +840,13 @@ extern "C" {
             continue;
           }
 
-          controller_print_error_rule_setting_value(&main->program.error, type == controller_rule_setting_type_name_e ? controller_name_s : controller_engine_s, f_string_empty_s, *setting_value, 0);
+          controller_print_error_rule_setting_value(&main->program.error, type == controller_rule_setting_type_name_e ? controller_name_s : controller_engine_s, f_string_empty_s, *setting_value, 0, controller_debug_file_line_d);
         }
         else if (type == controller_rule_setting_type_path_e) {
           state.status = f_string_dynamic_partial_append_nulless(cache->buffer_item, cache->content_actions.array[i].array[0], setting_value);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
             if (F_status_set_fine(state.status) == F_memory_not) {
               status_return = state.status;
@@ -864,12 +864,12 @@ extern "C" {
 
             controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
             continue;
           }
 
-          controller_print_error_rule_setting_value(&main->program.error, controller_path_s, f_string_empty_s, *setting_value, 0);
+          controller_print_error_rule_setting_value(&main->program.error, controller_path_s, f_string_empty_s, *setting_value, 0, controller_debug_file_line_d);
         }
 
         continue;
@@ -879,7 +879,7 @@ extern "C" {
         if (cache->content_actions.array[i].used < 1 || cache->content_actions.array[i].used > 2 || rule->has & controller_rule_has_scheduler_d) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires either one or two Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires either one or two Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -913,7 +913,7 @@ extern "C" {
           rule->scheduler.priority = 49;
         }
         else {
-          controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unknown scheduler", cache->buffer_item, cache->content_actions.array[i].array[0], "", cache->object_actions.array[i].start, line_item, &state);
+          controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unknown scheduler", cache->buffer_item, cache->content_actions.array[i].array[0], "", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -950,14 +950,14 @@ extern "C" {
                 state.status = original;
               }
 
-              controller_print_error_rule_setting_number_invalid_scheduler(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[1], zero_only);
+              controller_print_error_rule_setting_number_invalid_scheduler(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[1], zero_only, controller_debug_file_line_d);
 
               if (F_status_is_error_not(status_return)) {
                 status_return = F_status_set_error(F_valid_not);
               }
             }
             else {
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false, controller_debug_file_line_d);
               state.status = F_status_set_error(state.status);
 
               if (F_status_is_error_not(status_return)) {
@@ -973,7 +973,7 @@ extern "C" {
 
         rule->has |= controller_rule_has_scheduler_d;
 
-        controller_print_error_rule_setting_values(&main->program.error, cache, controller_scheduler_s, i);
+        controller_print_error_rule_setting_values(&main->program.error, cache, controller_scheduler_s, i, controller_debug_file_line_d);
 
         continue;
       }
@@ -982,7 +982,7 @@ extern "C" {
         if (cache->content_actions.array[i].used != 2) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly two Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly two Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -1011,7 +1011,7 @@ extern "C" {
             state.status = original;
           }
 
-          controller_print_error_rule_setting_number_invalid_timeout(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[0]);
+          controller_print_error_rule_setting_number_invalid_timeout(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -1037,10 +1037,10 @@ extern "C" {
           state.status = F_status_set_fine(state.status);
 
           if (state.status == F_number_overflow) {
-            controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[1], ", the number is too large for this system", cache->object_actions.array[i].start, line_item, &state);
+            controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an unsupported number", cache->buffer_item, cache->content_actions.array[i].array[1], ", the number is too large for this system", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
           }
           else if (state.status == F_data_not || state.status == F_number || state.status == F_number_underflow || state.status == F_number_negative || state.status == F_number_positive || state.status == F_number_decimal) {
-            controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid number", cache->buffer_item, cache->content_actions.array[i].array[1], ", only positive whole numbers are allowed", cache->object_actions.array[i].start, line_item, &state);
+            controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid number", cache->buffer_item, cache->content_actions.array[i].array[1], ", only positive whole numbers are allowed", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
           }
           else {
             {
@@ -1051,7 +1051,7 @@ extern "C" {
               state.status = original;
             }
 
-            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false, controller_debug_file_line_d);
           }
 
           if (F_status_is_error_not(status_return)) {
@@ -1089,7 +1089,7 @@ extern "C" {
               break;
             }
 
-            controller_print_error_rule_setting_value(&main->program.error, controller_timeout_s, name_sub, cache->action.generic, 0);
+            controller_print_error_rule_setting_value(&main->program.error, controller_timeout_s, name_sub, cache->action.generic, 0, controller_debug_file_line_d);
           }
         }
 
@@ -1100,7 +1100,7 @@ extern "C" {
         if (cache->content_actions.array[i].used != 1 || type == controller_rule_setting_type_capability_e && rule->capability || type == controller_rule_setting_type_group_e && (rule->has & controller_rule_has_group_d) || type == controller_rule_setting_type_nice_e && (rule->has & controller_rule_has_nice_d) || type == controller_rule_setting_type_user_e && (rule->has & controller_rule_has_user_d)) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly one Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly one Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -1125,9 +1125,9 @@ extern "C" {
 
             controller_lock_print(main->program.error.to, &main->thread);
 
-            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
-            controller_print_error_rule_cache(&main->program.error, &cache->action, F_false);
+            controller_print_error_rule_cache(&main->program.error, &cache->action, F_false, controller_debug_file_line_d);
 
             controller_unlock_print_flush(main->program.error.to, &main->thread);
 
@@ -1156,9 +1156,9 @@ extern "C" {
 
               controller_lock_print(main->program.error.to, &main->thread);
 
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_capability_from_text), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_capability_from_text), F_true, F_false, controller_debug_file_line_d);
 
-              controller_print_error_rule_cache(&main->program.error, &cache->action, F_false);
+              controller_print_error_rule_cache(&main->program.error, &cache->action, F_false, controller_debug_file_line_d);
 
               controller_unlock_print_flush(main->program.error.to, &main->thread);
 
@@ -1169,7 +1169,7 @@ extern "C" {
 
             controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-            controller_print_error_rule_setting(&main->program.error, &cache->action, "failed to process the capabilities");
+            controller_print_error_rule_setting(&main->program.error, &cache->action, "failed to process the capabilities", controller_debug_file_line_d);
 
             if (F_status_is_error_not(status_return)) {
               status_return = F_status_set_error(F_valid_not);
@@ -1178,7 +1178,7 @@ extern "C" {
             continue;
           }
 
-          controller_print_error_rule_setting_value(&main->program.error, controller_capability_s, f_string_empty_s, cache->action.generic, 0);
+          controller_print_error_rule_setting_value(&main->program.error, controller_capability_s, f_string_empty_s, cache->action.generic, 0, controller_debug_file_line_d);
         }
         else if (type == controller_rule_setting_type_nice_e) {
           f_number_signed_t number = 0;
@@ -1206,14 +1206,14 @@ extern "C" {
                 state.status = original;
               }
 
-              controller_print_error_rule_setting_number_invalid_nice(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[0]);
+              controller_print_error_rule_setting_number_invalid_nice(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[0], controller_debug_file_line_d);
 
               if (F_status_is_error_not(status_return)) {
                 status_return = F_status_set_error(F_valid_not);
               }
             }
             else {
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(fl_conversion_dynamic_partial_to_signed_detect), F_true, F_false, controller_debug_file_line_d);
               state.status = F_status_set_error(state.status);
 
               if (F_status_is_error_not(status_return)) {
@@ -1241,9 +1241,9 @@ extern "C" {
 
                 controller_lock_print(main->program.error.to, &main->thread);
 
-                controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+                controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
-                controller_print_error_rule_cache(&main->program.error, &cache->action, F_false);
+                controller_print_error_rule_cache(&main->program.error, &cache->action, F_false, controller_debug_file_line_d);
 
                 controller_unlock_print_flush(main->program.error.to, &main->thread);
 
@@ -1259,7 +1259,7 @@ extern "C" {
               }
 
               if (F_status_is_error_not(state.status)) {
-                controller_print_error_rule_setting_value(&main->program.error, controller_nice_s, f_string_empty_s, cache->action.generic, 0);
+                controller_print_error_rule_setting_value(&main->program.error, controller_nice_s, f_string_empty_s, cache->action.generic, 0, controller_debug_file_line_d);
               }
             }
           }
@@ -1273,13 +1273,13 @@ extern "C" {
             state.status = F_status_set_fine(state.status);
 
             if (state.status == F_exist_not) {
-              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid user", cache->buffer_item, cache->content_actions.array[i].array[0], ", because no user was found by that name", cache->object_actions.array[i].start, line_item, &state);
+              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid user", cache->buffer_item, cache->content_actions.array[i].array[0], ", because no user was found by that name", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
             }
             else if (state.status == F_number_too_large) {
-              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid user", cache->buffer_item, cache->content_actions.array[i].array[0], ", because the given ID is too large", cache->object_actions.array[i].start, line_item, &state);
+              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid user", cache->buffer_item, cache->content_actions.array[i].array[0], ", because the given ID is too large", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
             }
             else if (state.status == F_number) {
-              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid user", cache->buffer_item, cache->content_actions.array[i].array[0], ", because the given ID is not a valid supported number", cache->object_actions.array[i].start, line_item, &state);
+              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid user", cache->buffer_item, cache->content_actions.array[i].array[0], ", because the given ID is not a valid supported number", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
             }
             else {
               {
@@ -1290,9 +1290,9 @@ extern "C" {
                 state.status = original;
               }
 
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(controller_convert_user_id), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(controller_convert_user_id), F_true, F_false, controller_debug_file_line_d);
 
-              controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status));
+              controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status), controller_debug_file_line_d);
             }
 
             if (F_status_is_error_not(status_return)) {
@@ -1308,7 +1308,7 @@ extern "C" {
 
               state.status = f_string_dynamic_partial_append_nulless(cache->buffer_item, cache->content_actions.array[i].array[0], &cache->action.generic);
 
-              controller_print_error_rule_setting_value(&main->program.error, controller_user_s, f_string_empty_s, cache->action.generic, 0);
+              controller_print_error_rule_setting_value(&main->program.error, controller_user_s, f_string_empty_s, cache->action.generic, 0, controller_debug_file_line_d);
             }
           }
         }
@@ -1320,7 +1320,7 @@ extern "C" {
         if (!cache->content_actions.array[i].used) {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires one or more Content");
+          controller_print_error_rule_setting(&main->program.error, &cache->action, "requires one or more Content", controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -1338,7 +1338,7 @@ extern "C" {
           state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(f_int32s_t), (void **) &rule->groups.array, &rule->groups.used, &rule->groups.size);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
 
             if (F_status_set_fine(state.status) == F_memory_not) {
               status_return = state.status;
@@ -1354,7 +1354,7 @@ extern "C" {
 
             controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
             continue;
           }
@@ -1365,13 +1365,13 @@ extern "C" {
             state.status = F_status_set_fine(state.status);
 
             if (state.status == F_exist_not) {
-              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid group", cache->buffer_item, cache->content_actions.array[i].array[j], ", because no group was found by that name", cache->object_actions.array[i].start, line_item, &state);
+              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid group", cache->buffer_item, cache->content_actions.array[i].array[j], ", because no group was found by that name", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
             }
             else if (state.status == F_number_too_large) {
-              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid group", cache->buffer_item, cache->content_actions.array[i].array[j], ", because the given ID is too large", cache->object_actions.array[i].start, line_item, &state);
+              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid group", cache->buffer_item, cache->content_actions.array[i].array[j], ", because the given ID is too large", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
             }
             else if (state.status == F_number) {
-              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid group", cache->buffer_item, cache->content_actions.array[i].array[j], ", because the given ID is not a valid supported number", cache->object_actions.array[i].start, line_item, &state);
+              controller_print_error_rule_setting_with_range(&main->program.error, &cache->action, " has an invalid group", cache->buffer_item, cache->content_actions.array[i].array[j], ", because the given ID is not a valid supported number", cache->object_actions.array[i].start, line_item, &state, controller_debug_file_line_d);
             }
             else {
               {
@@ -1382,9 +1382,9 @@ extern "C" {
                 state.status = original;
               }
 
-              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_account_group_id_by_name), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_account_group_id_by_name), F_true, F_false, controller_debug_file_line_d);
 
-              controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status));
+              controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status), controller_debug_file_line_d);
             }
 
             if (F_status_is_error_not(status_return)) {
@@ -1402,7 +1402,7 @@ extern "C" {
           }
         } // for
 
-        controller_print_error_rule_setting_values(&main->program.error, cache, controller_group_s, i);
+        controller_print_error_rule_setting_values(&main->program.error, cache, controller_group_s, i, controller_debug_file_line_d);
 
         continue;
       }
@@ -1415,7 +1415,7 @@ extern "C" {
           state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &setting_values->array, &setting_values->used, &setting_values->size);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
 
             if (F_status_set_fine(state.status) == F_memory_not) {
               status_return = state.status;
@@ -1431,7 +1431,7 @@ extern "C" {
 
             controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
             continue;
           }
@@ -1441,7 +1441,7 @@ extern "C" {
           state.status = f_string_dynamic_partial_append_nulless(cache->buffer_item, cache->content_actions.array[i].array[j], &setting_values->array[setting_values->used]);
 
           if (F_status_is_error(state.status)) {
-            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false);
+            controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_string_dynamic_partial_append_nulless), F_true, F_false, controller_debug_file_line_d);
 
             setting_values->array[setting_values->used].used = 0;
 
@@ -1459,7 +1459,7 @@ extern "C" {
 
             controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
             continue;
           }
@@ -1476,7 +1476,7 @@ extern "C" {
             }
 
             if (state.status == F_false) {
-              controller_print_error_rule_setting_reason_name(&main->program.error, &cache->action, "Rule setting has an invalid environment variable name", setting_values->array[setting_values->used]);
+              controller_print_error_rule_setting_reason_name(&main->program.error, &cache->action, "Rule setting has an invalid environment variable name", setting_values->array[setting_values->used], controller_debug_file_line_d);
 
               if (F_status_is_error_not(status_return)) {
                 status_return = F_status_set_error(F_valid_not);
@@ -1485,7 +1485,7 @@ extern "C" {
             else {
 
               // This function should only return F_complete_not_utf on error.
-              controller_print_error_rule(&main->program.error, &cache->action, F_complete_not_utf, macro_controller_f(controller_validate_environment_name), F_true, F_false);
+              controller_print_error_rule(&main->program.error, &cache->action, F_complete_not_utf, macro_controller_f(controller_validate_environment_name), F_true, F_false, controller_debug_file_line_d);
 
               if (F_status_is_error_not(status_return)) {
                 status_return = state.status;
@@ -1494,7 +1494,7 @@ extern "C" {
 
             setting_values->array[setting_values->used].used = 0;
 
-            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status));
+            controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(state.status), controller_debug_file_line_d);
 
             continue;
           }
@@ -1505,7 +1505,7 @@ extern "C" {
         rule->has |= controller_rule_has_environment_d;
 
         if (cache->content_actions.array[i].used) {
-          controller_print_error_rule_setting_values(&main->program.error, cache, controller_environment_s, i);
+          controller_print_error_rule_setting_values(&main->program.error, cache, controller_environment_s, i, controller_debug_file_line_d);
         }
         else {
           controller_print_output_rule_execute_setting_empty_set(&main->program.output, controller_environment_s);
@@ -1518,7 +1518,7 @@ extern "C" {
       if (cache->content_actions.array[i].used != 4) {
         controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, line_item, &state);
 
-        controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly four Content");
+        controller_print_error_rule_setting(&main->program.error, &cache->action, "requires exactly four Content", controller_debug_file_line_d);
 
         if (F_status_is_error_not(status_return)) {
           status_return = F_status_set_error(F_valid_not);
@@ -1557,7 +1557,7 @@ extern "C" {
       else {
         controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-        controller_print_error_rule_setting_number_invalid_on_first(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[1]);
+        controller_print_error_rule_setting_number_invalid_on_first(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[1], controller_debug_file_line_d);
 
         if (F_status_is_error_not(status_return)) {
           status_return = F_status_set_error(F_valid_not);
@@ -1575,7 +1575,7 @@ extern "C" {
       }
 
       if (F_status_is_error(state.status)) {
-        controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+        controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
       }
       else {
         if (f_compare_dynamic_partial_string(controller_need_s.string, cache->buffer_item, controller_need_s.used, cache->content_actions.array[i].array[1]) == F_equal_to) {
@@ -1590,7 +1590,7 @@ extern "C" {
         else {
           controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-          controller_print_error_rule_setting_number_invalid_on_second(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[1]);
+          controller_print_error_rule_setting_number_invalid_on_second(&main->program.error, &cache->action, cache->buffer_item, cache->content_actions.array[i].array[1], controller_debug_file_line_d);
 
           if (F_status_is_error_not(status_return)) {
             status_return = F_status_set_error(F_valid_not);
@@ -1602,7 +1602,7 @@ extern "C" {
         state.status = f_memory_array_increase(controller_allocation_small_d, sizeof(f_string_dynamic_t), (void **) &setting_values->array, &setting_values->used, &setting_values->size);
 
         if (F_status_is_error(state.status)) {
-          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false);
+          controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_memory_array_increase), F_true, F_false, controller_debug_file_line_d);
         }
       }
 
@@ -1621,7 +1621,7 @@ extern "C" {
 
         controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-        controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+        controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
         continue;
       }
@@ -1645,7 +1645,7 @@ extern "C" {
 
         controller_rule_setting_line_action(main, &cache->action, cache->buffer_item, cache->object_actions.array[i].start, cache->action.line_item, &state);
 
-        controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original));
+        controller_print_error_rule_item(&main->program.error, &cache->action, F_false, F_status_set_fine(original), controller_debug_file_line_d);
 
         continue;
       }
@@ -1657,7 +1657,7 @@ extern "C" {
       if (F_status_is_error(state.status)) {
         setting_values->array[setting_values->used].used = 0;
 
-        controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_file_name_base), F_true, F_false);
+        controller_print_error_rule(&main->program.error, &cache->action, F_status_set_fine(state.status), macro_controller_f(f_file_name_base), F_true, F_false, controller_debug_file_line_d);
 
         if (F_status_set_fine(state.status) == F_memory_not) {
           status_return = state.status;
index f025f20be8e45070b4190d757c125e94e483e0c7..3fe743b6141470965abec9e73a45d36d89195a4b 100644 (file)
@@ -14,7 +14,7 @@ extern "C" {
     f_status_t status_lock = controller_lock_read_standard(is_normal, controller_lock_check_flag_no_d, &main->thread, &main->thread.lock.instance);
 
     if (status_lock != F_okay) {
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true);
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), F_true, controller_debug_file_line_d);
 
       return status_lock;
     }
@@ -151,7 +151,7 @@ extern "C" {
     }
 
     if (F_status_is_error(status_lock)) {
-      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), !(locked & 0x4));
+      controller_print_error_lock_critical(&main->program.error, F_status_set_fine(status_lock), !(locked & 0x4), controller_debug_file_line_d);
 
       return status_lock;
     }
index b46f07ebde9c2bb4f6917547302494a14c784754..08228b09046f3e7f66bfd19b8408ae4805228e7c 100644 (file)
@@ -10,7 +10,20 @@ extern "C" {
     if (!instance || !instance->main) return;
     if (!controller_thread_enable_is_normal(&instance->main->thread, is_normal)) return;
 
-    const f_status_t status = controller_rule_instance_perform(instance, controller_instance_option_asynchronous_d);
+    f_status_t status = F_okay;
+
+    status = controller_lock_read_instance(instance, &instance->active);
+
+    if (F_status_is_error(status)) {
+      controller_print_error_lock_critical(&instance->main->program.error, F_status_set_fine(status), F_true, controller_debug_file_line_d);
+
+      // According to some man pages, pthread_exit() calls exit(0), so expliticly exit to ensure a non-zero code is returned when needed.
+      exit(EXIT_FAILURE);
+    }
+
+    status = controller_rule_instance_perform(instance, controller_instance_option_asynchronous_d);
+
+    f_thread_unlock(&instance->active);
 
     // A forked child Instance should de-allocate memory on exit.
     // It seems that this function doesn't return to the calling thread for a forked child Instance, even with the "return 0;" below.