]> Kevux Git Server - control/commitdiff
Update: Switch to use fll_program_signal_check_loop() and fll_program_signal_check_si...
authorKevin Day <Kevin@kevux.org>
Fri, 2 May 2025 00:59:26 +0000 (19:59 -0500)
committerKevin Day <Kevin@kevux.org>
Fri, 2 May 2025 00:59:26 +0000 (19:59 -0500)
sources/c/program/control/control/main.c
sources/c/program/control/main/common.c
sources/c/program/control/main/common/define.h
sources/c/program/control/main/signal.c
sources/c/program/control/main/signal.h

index dd5a18250ec9f05bda0bafbfacd8d1067b58aad8..a59c40807921d54b1b2eb518edd7cebb760e76b2 100644 (file)
@@ -59,7 +59,7 @@ int main(const int argc, const f_string_t *argv, const f_string_t *envp) {
           control_setting_load(arguments, &data);
         }
 
-        if (!control_signal_check(&data)) {
+        if (!macro_control_signal_check(&data.program, &data.setting.state)) {
           control_process(&data);
         }
 
index 8c8e1c70a8022e76f9e8eb0068d27c12459ed80b..d1b1c085260647750aa6ce4b429fa2f33c665f5e 100644 (file)
@@ -381,7 +381,7 @@ extern "C" {
 
       for (f_number_unsigned_t number = 0; index < main->program.parameters.remaining.used; ++index) {
 
-        if (control_signal_check(main)) return;
+        if (macro_control_signal_check(&main->program, &main->setting.state)) return;
 
         number = main->program.parameters.remaining.array[index];
 
index 406925eaa6697ad71df8530065276f900260a4c4..7f6c720ff631fd9a48d0dc852d7a37a4a7d56451 100644 (file)
@@ -112,6 +112,17 @@ extern "C" {
   #define control_signal_check_failsafe_d 20000
 #endif // _di_control_signal_d_
 
+/**
+ * A macro wrapping the appropriate signal check function based on threaded/non-threaded support.
+ */
+#ifndef _di_control_signal_check_
+  #ifdef _di_thread_support_
+    #define macro_control_signal_check(program, state) fll_program_signal_check_loop(program, state)
+  #else
+    #define macro_control_signal_check(program, state) fll_program_signal_check_simple(program, state)
+  #endif // _di_thread_support_
+#endif // _di_control_signal_check_
+
 #ifdef __cplusplus
 } // extern "C"
 #endif
index d62a2597a00d0566f2c3fb67b2b1f9aedbdf9657..e4355ac8fb5febdbcf22dfa6f2a5bddf6605dfd4 100644 (file)
@@ -4,41 +4,6 @@
 extern "C" {
 #endif
 
-#if !defined(_di_control_signal_check_) && defined(_di_thread_support_)
-  f_status_t control_signal_check(control_main_t * const main) {
-
-    if (!main) return F_false;
-    if (main->program.signal_received) return F_true;
-
-    if (!((++main->program.signal_check) % control_signal_check_d)) {
-      if (F_status_set_fine(fll_program_standard_signal_received(&main->program)) == F_interrupt) {
-        main->setting.state.status = F_status_set_error(F_interrupt);
-
-        return F_true;
-      }
-
-      main->program.signal_check = 0;
-    }
-
-    return F_false;
-  }
-#endif // !defined(_di_control_signal_check_) && defined(_di_thread_support_)
-
-#if !defined(_di_control_signal_check_) && !defined(_di_thread_support_)
-  f_status_t control_signal_check(control_main_t * const main) {
-
-    if (!main) return F_false;
-
-    if (main->program.signal_received) {
-      main->setting.state.status = F_status_set_error(F_interrupt);
-
-      return F_true;
-    }
-
-    return F_false;
-  }
-#endif // !defined(_di_control_signal_check_) && !defined(_di_thread_support_)
-
 #if !defined(_di_control_signal_handler_) && !defined(_di_thread_support_)
   void control_signal_handler(control_main_t * const main) {
 
index 26914d991d1262ec908cf71d56cc05710114f325..d7702dd3eee94d57403f2501b03482e72f70cf45 100644 (file)
@@ -17,38 +17,6 @@ extern "C" {
 #endif
 
 /**
- * Check to see if a signal is received.
- *
- * If main.signal is non-zero, then this handles the following signals:
- *   - F_signal_abort
- *   - F_signal_broken_pipe
- *   - F_signal_hangup
- *   - F_signal_interrupt
- *   - F_signal_quit
- *   - F_signal_termination
- *
- * There is a threaded and a non-threaded version of this.
- * The non-threaded version checks periodically using control_signal_check_d and updates main->signal_check as needed.
- * The threaded version checks the flag state which is set by a separate thread that is blocking until signal is received.
- *
- * @param main
- *   The main program and settings data.
- *
- *   This does not alter main.setting.state.status.
- *
- * @return
- *   F_true on signal received.
- *   F_false otherwise.
- *
- * @see control_signal_handler()
- *
- * @see fll_program_standard_signal_received()
- */
-#ifndef _di_control_signal_check_
-  extern f_status_t control_signal_check(control_main_t * const main);
-#endif // _di_control_signal_check_
-
-/**
  * Signal handler for signals/interrupts.
  *
  * This blocks until an expected signal is recieved.