]> Kevux Git Server - fll/commitdiff
Update: Organize error status handling and address return codes.
authorKevin Day <Kevin@kevux.org>
Fri, 9 May 2025 00:54:09 +0000 (19:54 -0500)
committerKevin Day <Kevin@kevux.org>
Fri, 9 May 2025 00:54:09 +0000 (19:54 -0500)
Improve some of the status handling that I noticed.

Several functions are return code 0 even on status errors.
Only when the execute is performed does the return code get set to something else.
Make sure this behavior is consistent.

There `fake_execute()` does not need to have the error message printed after calling.
That function already prints the error messages as needed.

level_3/fake/c/main/build.c
level_3/fake/c/main/build/library.c
level_3/fake/c/main/build/object.c
level_3/fake/c/main/build/program.c
level_3/fake/c/main/make/operate_process_type.c

index 48bd7a07a94bd148605ea4b0876bb5a3b86138ff..c69075e788dd99b1f122c3fae1db4bd062183c00 100644 (file)
@@ -23,15 +23,23 @@ extern "C" {
       main->setting.state.status = f_string_dynamic_append_nulless(is_shared ? data->path_build_libraries_shared : data->path_build_libraries_static, &main->cache_argument);
     }
 
+    if (F_status_is_error(main->setting.state.status)) {
+      fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+
+      return;
+    }
+
     if (main->cache_argument.used) {
-      if (F_status_is_error_not(main->setting.state.status)) {
-        main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
+      main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
+
+      if (F_status_is_error(main->setting.state.status)) {
+        fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+
+        return;
       }
     }
 
-    if (F_status_is_error_not(main->setting.state.status)) {
-      fake_string_dynamic_reset(&main->cache_argument);
-    }
+    fake_string_dynamic_reset(&main->cache_argument);
 
     if (F_status_is_error_not(main->setting.state.status)) {
       main->setting.state.status = f_string_dynamic_append_nulless(fake_build_parameter_library_include_s, &main->cache_argument);
@@ -41,10 +49,14 @@ extern "C" {
       main->setting.state.status = f_string_dynamic_append_nulless(data->path_build_includes, &main->cache_argument);
     }
 
+    if (F_status_is_error(main->setting.state.status)) {
+      fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+
+      return;
+    }
+
     if (main->cache_argument.used) {
-      if (F_status_is_error_not(main->setting.state.status)) {
-        main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
-      }
+      main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
     }
 
     if (F_status_is_error_not(main->setting.state.status) && main->setting.work.used) {
@@ -71,9 +83,13 @@ extern "C" {
           main->setting.state.status = f_string_dynamic_append_nulless(data->path_work_libraries_shared, &main->cache_argument);
         }
 
-        if (F_status_is_error_not(main->setting.state.status)) {
-          main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
+        if (F_status_is_error(main->setting.state.status)) {
+          fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+
+          return;
         }
+
+        main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
       }
 
       if (data_build->setting.search_static && (!is_shared || !data_build->setting.search_exclusive)) {
@@ -87,13 +103,21 @@ extern "C" {
           main->setting.state.status = f_string_dynamic_append_nulless(data->path_work_libraries_static, &main->cache_argument);
         }
 
-        if (F_status_is_error_not(main->setting.state.status)) {
-          main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
+        if (F_status_is_error(main->setting.state.status)) {
+          fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+
+          return;
         }
+
+        main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
       }
     }
 
-    if (F_status_is_error(main->setting.state.status)) return;
+    if (F_status_is_error(main->setting.state.status)) {
+      fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+
+      return;
+    }
 
     {
       f_string_statics_t empty = f_string_statics_t_initialize;
@@ -154,7 +178,12 @@ extern "C" {
           if (!strings[s]->array[i].used) continue;
 
           main->setting.state.status = fll_execute_arguments_add(strings[s]->array[i], &main->cache_arguments);
-          if (F_status_is_error(main->setting.state.status)) return;
+
+          if (F_status_is_error(main->setting.state.status)) {
+            fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+
+            return;
+          }
         } // for
       } // for
     }
@@ -606,13 +635,24 @@ extern "C" {
         fake_string_dynamic_reset(&main->cache_argument);
 
         main->setting.state.status = f_string_dynamic_append_nulless(*path, &main->cache_argument);
-        if (F_status_is_error(main->setting.state.status)) return;
 
-        main->setting.state.status = f_string_dynamic_append_nulless(sources[i]->array[j], &main->cache_argument);
-        if (F_status_is_error(main->setting.state.status)) return;
+        if (F_status_is_error_not(main->setting.state.status)) {
+          main->setting.state.status = f_string_dynamic_append_nulless(sources[i]->array[j], &main->cache_argument);
+        }
+
+        if (F_status_is_error(main->setting.state.status)) {
+          fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+
+          return;
+        }
 
         main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
-        if (F_status_is_error(main->setting.state.status)) return;
+
+        if (F_status_is_error(main->setting.state.status)) {
+          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+
+          return;
+        }
       } // for
     } // for
 
@@ -792,6 +832,12 @@ extern "C" {
         }
         else {
           main->setting.state.status = f_string_dynamic_append_assure(f_path_separator_s, source);
+
+          if (F_status_is_error(main->setting.state.status)) {
+            fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_assure));
+
+            return;
+          }
         }
       }
     }
@@ -837,7 +883,12 @@ extern "C" {
         }
 
         main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
-        if (F_status_is_error(main->setting.state.status)) return;
+
+        if (F_status_is_error(main->setting.state.status)) {
+          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+
+          return;
+        }
       } // for
     } // for
 
@@ -874,7 +925,7 @@ extern "C" {
     main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
 
     if (F_status_is_error(main->setting.state.status)) {
-      fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+      fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
       return;
     }
index ef16ea45eb759436d2445b4833993dd0c3dc9ffe..c9ce73592ed622995e1cbbf72daa178422d9ba11 100644 (file)
@@ -344,9 +344,7 @@ extern "C" {
 
     {
       const int result = fake_execute(data, data_build->environment, data_build->setting.build_compiler);
-
-      if (F_status_is_error(main->setting.state.status)) return 0;
-      if (main->setting.state.status == F_child) return result;
+      if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return result;
     }
 
     {
@@ -466,7 +464,7 @@ extern "C" {
       if (F_status_is_error(main->setting.state.status)) {
         fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-        break;
+        return 0;
       }
     } // for
 
@@ -530,7 +528,7 @@ extern "C" {
           if (F_status_is_error(main->setting.state.status)) {
             fake_print_error(&main->program.error, macro_fake_f(fake_build_get_file_name_without_extension));
 
-            break;
+            return 0;
           }
 
           main->setting.state.status = f_file_name_directory(sources[i]->array[j], &main->cache_2);
@@ -538,7 +536,7 @@ extern "C" {
           if (F_status_is_error(main->setting.state.status)) {
             fake_print_error(&main->program.error, macro_fake_f(f_file_name_directory));
 
-            break;
+            return 0;
           }
 
           fake_string_dynamic_reset(&main->cache_argument);
@@ -549,7 +547,7 @@ extern "C" {
             if (F_status_is_error(main->setting.state.status)) {
               fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_prepend));
 
-              break;
+              return 0;
             }
 
             main->setting.state.status = f_string_dynamic_append_assure(f_path_separator_s, &main->cache_2);
@@ -557,7 +555,7 @@ extern "C" {
             if (F_status_is_error(main->setting.state.status)) {
               fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_assure));
 
-              break;
+              return 0;
             }
 
             main->setting.state.status = f_string_dynamic_append_nulless(main->cache_2, &main->cache_argument);
@@ -585,7 +583,7 @@ extern "C" {
           if (F_status_is_error(main->setting.state.status)) {
             fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
 
-            break;
+            return 0;
           }
 
           main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
@@ -593,21 +591,20 @@ extern "C" {
           if (F_status_is_error(main->setting.state.status)) {
             fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-            break;
+            return 0;
           }
         } // for
       } // for
     }
 
-    const int result = F_status_is_error(main->setting.state.status)
-      ? main->program.child
-      : fake_execute(data, data_build->environment, data_build->setting.build_indexer);
-
-    if (F_status_is_error_not(main->setting.state.status) && main->setting.state.status != F_child) {
-      fake_build_touch(data, file_stage);
+    {
+      const int result = fake_execute(data, data_build->environment, data_build->setting.build_indexer);
+      if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return result;
     }
 
-    return result;
+    fake_build_touch(data, file_stage);
+
+    return 0;
   }
 #endif // _di_fake_build_library_static_
 
@@ -656,7 +653,7 @@ extern "C" {
       } // for
     }
 
-    int result = main->program.child;
+    int result = 0;
 
     const f_string_dynamics_t *sources[2] = {
       &data_build->setting.build_sources_library,
@@ -677,7 +674,7 @@ extern "C" {
         fake_string_dynamics_reset_to(&main->cache_arguments, minimum);
 
         fake_build_path_source_string(data, data_build, &data_build->setting.path_sources_library, &main->cache_1);
-        if (F_status_is_error(main->setting.state.status)) break;
+        if (F_status_is_error(main->setting.state.status)) return 0;
 
         main->setting.state.status = f_string_dynamic_append_nulless(sources[i]->array[j], &main->cache_1);
 
@@ -692,7 +689,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(fake_build_get_file_name_without_extension));
 
-          break;
+          return 0;
         }
 
         main->setting.state.status = f_file_name_directory(sources[i]->array[j], &main->cache_argument);
@@ -700,7 +697,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(f_file_name_directory));
 
-          break;
+          return 0;
         }
 
         if (main->cache_argument.used) {
@@ -709,7 +706,7 @@ extern "C" {
           if (F_status_is_error(main->setting.state.status)) {
             fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_prepend));
 
-            break;
+            return 0;
           }
 
           main->setting.state.status = f_string_dynamic_append_assure(f_path_separator_s, &main->cache_argument);
@@ -717,7 +714,7 @@ extern "C" {
           if (F_status_is_error(main->setting.state.status)) {
             fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_assure));
 
-            break;
+            return 0;
           }
 
           main->setting.state.status = f_directory_exists(main->cache_argument);
@@ -727,7 +724,7 @@ extern "C" {
 
             main->setting.state.status = F_status_set_error(F_failure);
 
-            break;
+            return 0;
           }
 
           if (main->setting.state.status == F_file_found_not) {
@@ -741,7 +738,7 @@ extern "C" {
                 fake_print_error_file(&main->program.error, macro_fake_f(f_directory_create), main->cache_argument, f_file_operation_create_s, fll_error_file_type_directory_e);
               }
 
-              break;
+              return 0;
             }
 
             fake_build_print_verbose_create_directory(&main->program.message, main->cache_argument);
@@ -749,7 +746,7 @@ extern "C" {
           else if (F_status_is_error(main->setting.state.status)) {
             fake_print_error_file(&main->program.error, macro_fake_f(f_directory_exists), main->cache_argument, f_file_operation_create_s, fll_error_file_type_directory_e);
 
-            break;
+            return 0;
           }
         }
 
@@ -788,31 +785,26 @@ extern "C" {
             if (!values[k].used) continue;
 
             main->setting.state.status = fll_execute_arguments_add(values[k], &main->cache_arguments);
-            if (F_status_is_error(main->setting.state.status)) break;
-          } // for
 
-          fake_build_arguments_standard_add(data, data_build, F_false, fake_build_type_object_e);
+            if (F_status_is_error(main->setting.state.status)) {
+              fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-          if (F_status_is_error(main->setting.state.status)) {
-            fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+              return 0;
+            }
+          } // for
 
-            break;
-          }
+          fake_build_arguments_standard_add(data, data_build, F_false, fake_build_type_object_e);
+          if (F_status_is_error(main->setting.state.status)) return 0;
         }
 
         result = fake_execute(data, data_build->environment, data_build->setting.build_compiler);
-
-        if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) break;
+        if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return result;
       } // for
-
-      if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) break;
     } // for
 
-    if (F_status_is_error_not(main->setting.state.status) && main->setting.state.status != F_child) {
-      fake_build_touch(data, file_stage);
-    }
+    fake_build_touch(data, file_stage);
 
-    return result;
+    return 0;
   }
 #endif // _di_fake_build_library_static_object_
 
index 36b6704de2392051a45b418e0040deecd9701801..ae57d9d8deeabb139821296c8169bf53942e82ea 100644 (file)
@@ -27,9 +27,6 @@ extern "C" {
 
     fake_main_t * const main = data->main;
 
-    int result = 0;
-    int result_final = 0;
-
     uint8_t i = 0;
     f_number_unsigned_t j = 0;
     f_number_unsigned_t minimum = 0;
@@ -49,16 +46,15 @@ extern "C" {
           if (!values[i]->array[j].used) continue;
 
           main->setting.state.status = fll_execute_arguments_add(values[i]->array[j], &main->cache_arguments);
-          if (F_status_is_error(main->setting.state.status)) break;
 
-          ++minimum;
-        } // for
+          if (F_status_is_error(main->setting.state.status)) {
+            fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+            return 0;
+          }
 
-          break;
-        }
+          ++minimum;
+        } // for
       } // for
     }
 
@@ -67,6 +63,8 @@ extern "C" {
       shared ? &data_build->setting.build_sources_object_shared : &data_build->setting.build_sources_object_static,
     };
 
+
+    int result = 0;
     uint8_t k = 0;
 
     if (shared) {
@@ -88,7 +86,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(fake_build_sources_object_add));
 
-          break;
+          return 0;
         }
 
         fake_string_dynamic_reset(&main->cache_argument);
@@ -100,7 +98,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(fake_build_get_file_name_without_extension));
 
-          break;
+          return 0;
         }
 
         main->setting.state.status = f_file_name_directory(sources[i]->array[j], &main->cache_2);
@@ -108,7 +106,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(f_file_name_directory));
 
-          break;
+          return 0;
         }
 
         main->setting.state.status = f_string_dynamic_append_assure(f_path_separator_s, &main->cache_2);
@@ -116,7 +114,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_assure));
 
-          break;
+          return 0;
         }
 
         main->setting.state.status = f_string_dynamic_append_nulless(shared ? data->path_build_objects_shared : data->path_build_objects_static, &main->cache_argument);
@@ -128,7 +126,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
 
-          break;
+          return 0;
         }
 
         main->setting.state.status = f_directory_exists(main->cache_argument);
@@ -138,7 +136,7 @@ extern "C" {
 
           main->setting.state.status = F_status_set_error(F_failure);
 
-          break;
+          return 0;
         }
 
         if (main->setting.state.status == F_file_found_not) {
@@ -152,7 +150,7 @@ extern "C" {
               fake_print_error_file(&main->program.error, macro_fake_f(f_directory_create), main->cache_argument, f_file_operation_create_s, fll_error_file_type_directory_e);
             }
 
-            break;
+            return 0;
           }
 
           fake_build_print_verbose_create_directory(&main->program.message, main->cache_argument);
@@ -160,7 +158,7 @@ extern "C" {
         else if (F_status_is_error(main->setting.state.status)) {
           fake_print_error_file(&main->program.error, macro_fake_f(f_directory_exists), main->cache_argument, f_file_operation_create_s, fll_error_file_type_directory_e);
 
-          break;
+          return 0;
         }
 
         if (F_status_is_error_not(main->setting.state.status)) {
@@ -174,7 +172,7 @@ extern "C" {
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
 
-          break;
+          return 0;
         }
 
         if (data_build->setting.language == fake_build_language_c_e || data_build->setting.language == fake_build_language_cpp_e) {
@@ -190,46 +188,27 @@ extern "C" {
             if (!values[k].used) continue;
 
             main->setting.state.status = fll_execute_arguments_add(values[k], &main->cache_arguments);
-            if (F_status_is_error(main->setting.state.status)) break;
-          } // for
 
-          if (F_status_is_error(main->setting.state.status)) {
-            fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+            if (F_status_is_error(main->setting.state.status)) {
+              fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-            break;
-          }
+              return 0;
+            }
+          } // for
         }
 
         // The cache_argument should be safe at this point to be reset and reused by this function.
         fake_build_arguments_standard_add(data, data_build, F_true, fake_build_type_object_e);
-
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(fake_build_arguments_standard_add));
-
-          break;
-        }
+        if (F_status_is_error(main->setting.state.status)) return 0;
 
         result = fake_execute(data, data_build->environment, data_build->setting.build_compiler);
-
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(fake_execute));
-
-          result_final = result;
-
-          break;
-        }
-
-        if (result && !result_final) {
-          result_final = result;
-        }
+        if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return result;
       } // for
     } // for
 
-    if (F_status_is_error_not(main->setting.state.status) && main->setting.state.status != F_child) {
-      fake_build_touch(data, file_stage);
-    }
+    fake_build_touch(data, file_stage);
 
-    return result_final;
+    return 0;
   }
 #endif // _di_fake_build_object_
 
index 0adcfe28f14fc0212b826a0d27d90ed0b48ad08e..6603b033868d9b0a2c66f419354d4cb742f3a38e 100644 (file)
@@ -50,14 +50,13 @@ extern "C" {
           if (!values[i]->array[j].used) continue;
 
           main->setting.state.status = fll_execute_arguments_add(values[i]->array[j], &main->cache_arguments);
-          if (F_status_is_error(main->setting.state.status)) break;
-        } // for
 
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+          if (F_status_is_error(main->setting.state.status)) {
+            fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-          break;
-        }
+            return 0;
+          }
+        } // for
       } // for
     }
 
@@ -77,46 +76,49 @@ extern "C" {
       return 0;
     }
 
-    if (F_status_is_error_not(main->setting.state.status)) {
-      if (data_build->setting.language == fake_build_language_c_e || data_build->setting.language == fake_build_language_cpp_e) {
-        fake_string_dynamic_reset(&main->cache_argument);
+    if (data_build->setting.language == fake_build_language_c_e || data_build->setting.language == fake_build_language_cpp_e) {
+      fake_string_dynamic_reset(&main->cache_argument);
 
-        main->setting.state.status = f_string_dynamic_append_nulless(data->path_build_programs_shared, &main->cache_argument);
+      main->setting.state.status = f_string_dynamic_append_nulless(data->path_build_programs_shared, &main->cache_argument);
 
-        if (F_status_is_error_not(main->setting.state.status)) {
-          main->setting.state.status = f_string_dynamic_append_nulless(
-            data_build->setting.build_name_program_shared.used
-              ? data_build->setting.build_name_program_shared
-              : data_build->setting.build_name_program.used
-                ? data_build->setting.build_name_program
-                : data_build->setting.build_name,
-            &main->cache_argument
-          );
-        }
+      if (F_status_is_error_not(main->setting.state.status)) {
+        main->setting.state.status = f_string_dynamic_append_nulless(
+          data_build->setting.build_name_program_shared.used
+            ? data_build->setting.build_name_program_shared
+            : data_build->setting.build_name_program.used
+              ? data_build->setting.build_name_program
+              : data_build->setting.build_name,
+          &main->cache_argument
+        );
+      }
 
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+      if (F_status_is_error(main->setting.state.status)) {
+        fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
 
-          return 0;
-        }
+        return 0;
+      }
 
-        const f_string_static_t values[] = {
-          fake_build_parameter_library_output_s,
-          main->cache_argument,
-        };
+      const f_string_static_t values[] = {
+        fake_build_parameter_library_output_s,
+        main->cache_argument,
+      };
 
-        for (i = 0; i < 2; ++i) {
+      for (i = 0; i < 2; ++i) {
 
-          if (!values[i].used) continue;
+        if (!values[i].used) continue;
 
-          main->setting.state.status = fll_execute_arguments_add(values[i], &main->cache_arguments);
-          if (F_status_is_error(main->setting.state.status)) break;
-        } // for
-      }
+        main->setting.state.status = fll_execute_arguments_add(values[i], &main->cache_arguments);
+
+        if (F_status_is_error(main->setting.state.status)) {
+          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+
+          return 0;
+        }
+      } // for
     }
 
     // If project-specific library sources exist, then the -lbuild_name needs to be added to the arguments.
-    if (F_status_is_error_not(main->setting.state.status) && data_build->setting.build_sources_library.used) {
+    if (data_build->setting.build_sources_library.used) {
       fake_string_dynamic_reset(&main->cache_argument);
 
       main->setting.state.status = f_string_dynamic_append_nulless(fake_build_parameter_library_link_file_s, &main->cache_argument);
@@ -139,23 +141,25 @@ extern "C" {
       }
 
       main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
-    }
-
-    fake_build_arguments_standard_add(data, data_build, F_true, fake_build_type_program_e);
 
-    if (F_status_is_error(main->setting.state.status)) {
-      fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+      if (F_status_is_error(main->setting.state.status)) {
+        fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-      return 0;
+        return 0;
+      }
     }
 
-    const int result = fake_execute(data, data_build->environment, data_build->setting.build_compiler);
+    fake_build_arguments_standard_add(data, data_build, F_true, fake_build_type_program_e);
+    if (F_status_is_error(main->setting.state.status)) return 0;
 
-    if (F_status_is_error_not(main->setting.state.status) && main->setting.state.status != F_child) {
-      fake_build_touch(data, file_stage);
+    {
+      const int result = fake_execute(data, data_build->environment, data_build->setting.build_compiler);
+      if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return result;
     }
 
-    return result;
+    fake_build_touch(data, file_stage);
+
+    return 0;
   }
 #endif // _di_fake_build_program_shared_
 
@@ -190,14 +194,13 @@ extern "C" {
           if (!values[i]->array[j].used) continue;
 
           main->setting.state.status = fll_execute_arguments_add(values[i]->array[j], &main->cache_arguments);
-          if (F_status_is_error(main->setting.state.status)) break;
-        } // for
 
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+          if (F_status_is_error(main->setting.state.status)) {
+            fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-          break;
-        }
+            return 0;
+          }
+        } // for
       } // for
     }
 
@@ -218,75 +221,32 @@ extern "C" {
     }
 
     if (data_build->setting.language == fake_build_language_c_e || data_build->setting.language == fake_build_language_cpp_e) {
-      if (F_status_is_error_not(main->setting.state.status)) {
-
-        // Only include the library if there are sources that would result in it being built.
-        if (data_build->setting.build_sources_library.used || data_build->setting.build_sources_library_static.used) {
-          fake_string_dynamic_reset(&main->cache_argument);
-
-          main->setting.state.status = f_string_dynamic_append_nulless(data->path_build_libraries_static, &main->cache_argument);
-
-          if (F_status_is_error_not(main->setting.state.status)) {
-            main->setting.state.status = f_string_dynamic_append_nulless(fake_build_parameter_library_name_prefix_s, &main->cache_argument);
-          }
-
-          if (F_status_is_error_not(main->setting.state.status)) {
-            main->setting.state.status = f_string_dynamic_append_nulless(
-              data_build->setting.build_name_library_static.used
-                ? data_build->setting.build_name_library_static
-                : data_build->setting.build_name_library.used
-                  ? data_build->setting.build_name_library
-                  : data_build->setting.build_name,
-              &main->cache_argument
-            );
-          }
-
-          if (F_status_is_error_not(main->setting.state.status)) {
-            main->setting.state.status = f_string_dynamic_append_nulless(fake_build_parameter_library_name_suffix_static_s, &main->cache_argument);
-          }
-
-          if (F_status_is_error(main->setting.state.status)) {
-            fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
-
-            return 0;
-          }
-
-          main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
-
-          if (F_status_is_error(main->setting.state.status)) {
-            fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-            return 0;
-          }
-        }
+      // Only include the library if there are sources that would result in it being built.
+      if (data_build->setting.build_sources_library.used || data_build->setting.build_sources_library_static.used) {
+        fake_string_dynamic_reset(&main->cache_argument);
 
-        main->setting.state.status = fll_execute_arguments_add(fake_build_parameter_library_static_s, &main->cache_arguments);
+        main->setting.state.status = f_string_dynamic_append_nulless(data->path_build_libraries_static, &main->cache_argument);
 
         if (F_status_is_error_not(main->setting.state.status)) {
-          main->setting.state.status = fll_execute_arguments_add(fake_build_parameter_library_output_s, &main->cache_arguments);
-        }
-
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
-
-          return 0;
+          main->setting.state.status = f_string_dynamic_append_nulless(fake_build_parameter_library_name_prefix_s, &main->cache_argument);
         }
 
-        fake_string_dynamic_reset(&main->cache_argument);
-
-        main->setting.state.status = f_string_dynamic_append_nulless(data->path_build_programs_static, &main->cache_argument);
-
         if (F_status_is_error_not(main->setting.state.status)) {
           main->setting.state.status = f_string_dynamic_append_nulless(
-            data_build->setting.build_name_program_static.used
-              ? data_build->setting.build_name_program_static
-              : data_build->setting.build_name_program.used
-                ? data_build->setting.build_name_program
+            data_build->setting.build_name_library_static.used
+              ? data_build->setting.build_name_library_static
+              : data_build->setting.build_name_library.used
+                ? data_build->setting.build_name_library
                 : data_build->setting.build_name,
             &main->cache_argument
           );
         }
 
+        if (F_status_is_error_not(main->setting.state.status)) {
+          main->setting.state.status = f_string_dynamic_append_nulless(fake_build_parameter_library_name_suffix_static_s, &main->cache_argument);
+        }
+
         if (F_status_is_error(main->setting.state.status)) {
           fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
 
@@ -294,31 +254,64 @@ extern "C" {
         }
 
         main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
+      }
 
-        if (F_status_is_error(main->setting.state.status)) {
-          fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+      if (F_status_is_error_not(main->setting.state.status)) {
+        main->setting.state.status = fll_execute_arguments_add(fake_build_parameter_library_static_s, &main->cache_arguments);
+      }
 
-          return 0;
-        }
+      if (F_status_is_error_not(main->setting.state.status)) {
+        main->setting.state.status = fll_execute_arguments_add(fake_build_parameter_library_output_s, &main->cache_arguments);
       }
-    }
 
-    // The cache_argument should be safe at this point to be reset and reused by this function.
-    fake_build_arguments_standard_add(data, data_build, F_false, fake_build_type_program_e);
+      if (F_status_is_error(main->setting.state.status)) {
+        fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
 
-    if (F_status_is_error(main->setting.state.status)) {
-      fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+        return 0;
+      }
 
-      return 0;
+      fake_string_dynamic_reset(&main->cache_argument);
+
+      main->setting.state.status = f_string_dynamic_append_nulless(data->path_build_programs_static, &main->cache_argument);
+
+      if (F_status_is_error_not(main->setting.state.status)) {
+        main->setting.state.status = f_string_dynamic_append_nulless(
+          data_build->setting.build_name_program_static.used
+            ? data_build->setting.build_name_program_static
+            : data_build->setting.build_name_program.used
+              ? data_build->setting.build_name_program
+              : data_build->setting.build_name,
+          &main->cache_argument
+        );
+      }
+
+      if (F_status_is_error(main->setting.state.status)) {
+        fake_print_error(&main->program.error, macro_fake_f(f_string_dynamic_append_nulless));
+
+        return 0;
+      }
+
+      main->setting.state.status = fll_execute_arguments_add(main->cache_argument, &main->cache_arguments);
+
+      if (F_status_is_error(main->setting.state.status)) {
+        fake_print_error(&main->program.error, macro_fake_f(fll_execute_arguments_add));
+
+        return 0;
+      }
     }
 
-    const int result = fake_execute(data, data_build->environment, data_build->setting.build_compiler);
+    // The cache_argument should be safe at this point to be reset and reused by this function.
+    fake_build_arguments_standard_add(data, data_build, F_false, fake_build_type_program_e);
+    if (F_status_is_error(main->setting.state.status)) return 0;
 
-    if (F_status_is_error_not(main->setting.state.status) && main->setting.state.status != F_child) {
-      fake_build_touch(data, file_stage);
+    {
+      const int result = fake_execute(data, data_build->environment, data_build->setting.build_compiler);
+      if (F_status_is_error(main->setting.state.status) || main->setting.state.status == F_child) return result;
     }
 
-    return result;
+    fake_build_touch(data, file_stage);
+
+    return 0;
   }
 #endif // _di_fake_build_program_static_
 
index 862e334524a36fdfc77c1740b81db045e1119f9a..e650971c1aefccbc3c93e7b355a6e691097d4f0c 100644 (file)
@@ -65,17 +65,11 @@ extern "C" {
     fake_main_t * const main = data_make->main;
 
     const int result = fake_execute(data_make->data, data_make->environment, data_make->setting_build.build_compiler);
-
-    if (F_status_is_error(main->setting.state.status)) {
-      fake_print_error(&main->program.error, macro_fake_f(fake_execute));
-    }
-    else if (main->setting.state.status == F_child) {
-      return result;
-    }
+    if (main->setting.state.status == F_child) return result;
 
     fake_make_operate_process_return(data_make, result);
 
-    return 0;
+    return result;
   }
 #endif // _di_fake_make_operate_process_type_compile_
 
@@ -1363,16 +1357,11 @@ extern "C" {
     fake_main_t * const main = data_make->main;
 
     const int result = fake_execute(data_make->data, data_make->environment, data_make->setting_build.build_indexer);
-
-    if (F_status_is_error(main->setting.state.status)) {
-      fake_print_error(&main->program.error, macro_fake_f(fake_execute));
-    }
-
     if (main->setting.state.status == F_child) return result;
 
     fake_make_operate_process_return(data_make, result);
 
-    return 0;
+    return result;
   }
 #endif // _di_fake_make_operate_process_type_index_