]> Kevux Git Server - fll/commitdiff
Bugfix: Use arguments passed to fake when processing build with the custom build...
authorKevin Day <kevin@kevux.org>
Fri, 9 Jun 2023 04:15:10 +0000 (23:15 -0500)
committerKevin Day <kevin@kevux.org>
Fri, 9 Jun 2023 04:15:10 +0000 (23:15 -0500)
The custom build arguments are passed when the make mode is being used to call the build mode.
The mode arguments passed to the fake program, these should be propagated into the custom build arguments for the build mode.

level_3/fake/c/main/build/load.c
level_3/fake/c/main/print/message.c

index 82e862d5ed207a6d73f181dd41d989d00fb0842e..46ff6c156768b1ccbeb627d279b1771424655682 100644 (file)
@@ -72,15 +72,33 @@ extern "C" {
 
     // Strip the build settings name from the build arguments to generate a list of modes.
     f_string_statics_t modes_custom = f_string_statics_t_initialize;
-    modes_custom.used = build_arguments && build_arguments->used > 1 ? build_arguments->used - 1 : 0;
-    modes_custom.size = 0;
+
+    if (build_arguments) {
+      if (build_arguments->used > 1) {
+        modes_custom.used = build_arguments->used - 1;
+      }
+      else if (main->setting.modes.used) {
+        modes_custom.used = main->setting.modes.used;
+      }
+    }
 
     f_string_static_t modes_custom_array[modes_custom.used];
     modes_custom.array = modes_custom_array;
 
-    for (f_array_length_t i = 0; i < modes_custom.used; ++i) {
-      modes_custom.array[i] = build_arguments->array[i + 1];
-    } // for
+    if (build_arguments) {
+      f_array_length_t i = 0;
+
+      if (build_arguments->used > 1) {
+        for (; i < modes_custom.used; ++i) {
+          modes_custom.array[i] = build_arguments->array[i + 1];
+        } // for
+      }
+      else if (main->setting.modes.used) {
+        for (; i < main->setting.modes.used; ++i) {
+          modes_custom.array[i] = main->setting.modes.array[i];
+        } // for
+      }
+    }
 
     f_string_static_t path_file = f_string_static_t_initialize;
 
index 8f9b9675df4b18cfe7906c7c01b775b42e94dd6f..16fb3e8e4f83c54ac7184dff77bf757c56e431e9 100644 (file)
@@ -21,25 +21,14 @@ extern "C" {
 
     fl_print_format("%[' with modes '%]", print->to, print->set->important, print->set->important);
 
-    f_string_statics_t modes_custom = f_string_statics_t_initialize;
-    modes_custom.used = build_arguments && build_arguments->used > 1 ? build_arguments->used - 1 : 0;
-    modes_custom.size = 0;
-
-    f_string_static_t modes_custom_array[modes_custom.used];
-    modes_custom.array = modes_custom_array;
-
-    for (f_array_length_t i = 0; i < modes_custom.used; ++i) {
-      modes_custom.array[i] = build_arguments->array[i + 1];
-    } // for
-
-    // Custom modes are always used if provided, otherwise if any mode is specified, the entire defaults is replaced.
-    const f_string_statics_t * const modes = modes_custom.used
-      ? &modes_custom
+    // Custom modes are always used if provided, otherwise fallback to the passed modes or the default modes.
+    const f_string_statics_t * const modes = build_arguments && build_arguments->used > 1
+      ? build_arguments
       : main->setting.modes.used
         ? &main->setting.modes
         : &setting_build->modes_default;
 
-    for (f_array_length_t i = 0; i < modes->used; ) {
+    for (f_array_length_t i = build_arguments && build_arguments->used > 1 ? 1 : 0; i < modes->used; ) {
 
       fl_print_format("%[%Q%]", print->to, print->set->notable, modes->array[i], print->set->notable);