]> Kevux Git Server - fll/commitdiff
Update: Add additional time types, refactor f_time_spec and similar, and rebuild...
authorKevin Day <kevin@kevux.org>
Sat, 20 Apr 2024 04:29:22 +0000 (23:29 -0500)
committerKevin Day <kevin@kevux.org>
Sat, 20 Apr 2024 04:29:22 +0000 (23:29 -0500)
The f_time_spec_t is not the same as "struct timespec".
Avoid confusion by renaming it to f_time_simple_t.
rename f_date_spec_t to f_date_simple_t for the same reason.

Add additional types and now that f_time_spec_t is available, create f_time_spec_t as a typedef of "struct timespec".

Update the stand alone build scripts with all of these changes and some changes from previous commits.

30 files changed:
build/stand_alone/byte_dump.config.h
build/stand_alone/example.config.h
build/stand_alone/fake.config.h
build/stand_alone/firewall.config.h
build/stand_alone/utf8.config.h
level_0/f_file/c/file.c
level_0/f_file/c/file.h
level_0/f_signal/c/signal.c
level_0/f_signal/c/signal.h
level_0/f_thread/c/thread.c
level_0/f_thread/c/thread.h
level_0/f_time/c/time.c
level_0/f_time/c/time.h
level_0/f_time/c/time/common.h
level_0/f_time/tests/unit/c/test-time-spec_millisecond.c
level_0/f_time/tests/unit/c/test-time-spec_nanosecond.c
level_0/f_type/c/type.h
level_0/f_type/c/type/time.h
level_3/controller/c/common.h
level_3/controller/c/common/private-cache.h
level_3/controller/c/controller/private-controller.c
level_3/controller/c/controller/private-controller.h
level_3/controller/c/entry/private-entry.c
level_3/controller/c/lock/private-lock.c
level_3/controller/c/process/private-process.c
level_3/controller/c/rule/private-rule.c
level_3/controller/c/thread/private-thread.c
level_3/controller/c/thread/private-thread_entry.c
level_3/controller/c/thread/private-thread_process.c
level_3/controller/c/thread/private-thread_signal.c

index ac58f5c0775a9bf2276dcc361d5d558bf912666e..a5e3d4163d623619ee0c5cbad4722363b949ec18 100644 (file)
 //#define _di_f_conversion_number_signed_to_string_
 //#define _di_f_conversion_number_unsigned_print_
 //#define _di_f_conversion_number_unsigned_to_string_
-#define _di_f_date_spec_t_
+#define _di_f_date_simple_t_
 #define _di_f_date_t_
 #define _di_f_file_access_
 #define _di_f_file_access_at_
 #define _di_fll_print_trim_raw_
 #define _di_fll_print_trim_raw_safely_
 #define _di_fll_print_trim_safely_
+//#define _di_fll_program_copyright_s_
+//#define _di_fll_program_copyright_year_author_s_
 //#define _di_fll_program_data_delete_
 #define _di_fll_program_data_destroy_
 //#define _di_fll_program_data_pipe_e_
 #define _di_f_thread_spin_t_
 #define _di_f_thread_spin_unlock_
 #define _di_f_thread_unlock_
+#define _di_f_time_part_t_
+#define _di_f_time_simple_t_
 #define _di_f_time_spec_t_
 #define _di_f_time_t_
 //#define _di_f_type_d_
index c4ff055ed2464470f8a3e12cd71317eff1688333..a8cef24fd1d27772e3ef30abf6d2ccc822e253e8 100644 (file)
@@ -8,7 +8,7 @@
 //
 // Example:
 //   echo > /tmp/all.txt
-//   for i in f_type f_status f_memory f_type_array f_string f_utf f_color f_console f_conversion f_file f_pipe f_print f_rip f_signal f_thread ; do grep -horP '\b_di_f_\w*\b' level_0/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_0/$i/c >> /tmp/all.txt ; done
+//   for i in f_type f_status f_memory f_type_array f_string f_utf f_color f_console f_conversion f_file f_pipe f_print f_rip f_signal f_time f_thread ; do grep -horP '\b_di_f_\w*\b' level_0/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_0/$i/c >> /tmp/all.txt ; done
 //   for i in fl_print ; do grep -horP '\b_di_fl_\w*\b' level_1/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_1/$i/c >> /tmp/all.txt ; done
 //   for i in fll_error fll_print fll_program ; do grep -horP '\b_di_fll_\w*\b' level_2/$i/c >> /tmp/all.txt ; grep -horP '\b_di_macro_\w*\b' level_2/$i/c >> /tmp/all.txt ; done
 //   sort /tmp/all.txt | uniq | sed -e 's|^_|#define &|g' > /tmp/sorted.txt
 //#define _di_f_conversion_number_signed_to_string_
 //#define _di_f_conversion_number_unsigned_print_
 //#define _di_f_conversion_number_unsigned_to_string_
-#define _di_f_date_spec_t_
+#define _di_f_date_simple_t_
 #define _di_f_date_t_
 #define _di_f_file_access_
 #define _di_f_file_access_at_
 #define _di_fll_print_trim_raw_
 #define _di_fll_print_trim_raw_safely_
 #define _di_fll_print_trim_safely_
+//#define _di_fll_program_copyright_s_
+//#define _di_fll_program_copyright_year_author_s_
 //#define _di_fll_program_data_delete_
 #define _di_fll_program_data_destroy_
 //#define _di_fll_program_data_pipe_e_
 #define _di_f_thread_spin_t_
 #define _di_f_thread_spin_unlock_
 #define _di_f_thread_unlock_
+#define _di_f_time_part_t_
+#define _di_f_time_simple_t_
 #define _di_f_time_spec_t_
 #define _di_f_time_t_
 //#define _di_f_type_d_
index 5bbaa615a362bc33169542e7a4c13f500db19372..8fc057839f0e9a4067ec29565e5fe67c94d192ec 100644 (file)
 //#define _di_f_conversion_number_signed_to_string_
 //#define _di_f_conversion_number_unsigned_print_
 //#define _di_f_conversion_number_unsigned_to_string_
-#define _di_f_date_spec_t_
+#define _di_f_date_simple_t_
 #define _di_f_date_t_
 //#define _di_f_directory_at_d_
 #define _di_f_directory_back_s_
 #define _di_f_fss_payload_object_name_s_
 #define _di_f_fss_payload_object_part_s_
 #define _di_f_fss_payload_object_payload_s_
+#define _di_f_fss_payload_object_salt_s_
 #define _di_f_fss_payload_object_signature_s_
 #define _di_f_fss_payload_object_size_s_
 #define _di_f_fss_payload_object_status_s_
+#define _di_f_fss_payload_object_time_s_
 #define _di_f_fss_payload_object_total_s_
 #define _di_f_fss_payload_object_type_s_
 #define _di_f_fss_payload_s_
 //#define _di_fl_fss_extended_object_read_
 #define _di_fl_fss_extended_object_write_
 #define _di_fl_fss_payload_d_
+#define _di_fl_fss_payload_header_internal_t_
 #define _di_fl_fss_payload_header_map_
 #define _di_fl_fss_payload_header_maps_
+#define _di_fl_fss_payload_header_state_t_
 //#define _di_fl_iki_read_
 //#define _di_f_limit_process_
 #define _di_f_limit_setss_delete_callback_
 #define _di_fll_print_trim_raw_
 #define _di_fll_print_trim_raw_safely_
 #define _di_fll_print_trim_safely_
+//#define _di_fll_program_copyright_s_
+//#define _di_fll_program_copyright_year_author_s_
 //#define _di_fll_program_data_delete_
 #define _di_fll_program_data_destroy_
 //#define _di_fll_program_data_pipe_e_
 #define _di_f_thread_spin_t_
 #define _di_f_thread_spin_unlock_
 #define _di_f_thread_unlock_
+#define _di_f_time_part_t_
+#define _di_f_time_simple_t_
 #define _di_f_time_spec_t_
 #define _di_f_time_t_
 //#define _di_f_type_d_
index a1b4666369994eb27fdfeb25673b11a45b1d927d..a63e24cf376b89e3e27d909e67dd05b5d285f228 100644 (file)
 //#define _di_f_conversion_number_signed_to_string_
 //#define _di_f_conversion_number_unsigned_print_
 //#define _di_f_conversion_number_unsigned_to_string_
-#define _di_f_date_spec_t_
+#define _di_f_date_simple_t_
 #define _di_f_date_t_
 #define _di_f_directory_at_d_
 //#define _di_f_directory_back_s_
 #define _di_f_fss_payload_object_name_s_
 #define _di_f_fss_payload_object_part_s_
 #define _di_f_fss_payload_object_payload_s_
+#define _di_f_fss_payload_object_salt_s_
 #define _di_f_fss_payload_object_signature_s_
 #define _di_f_fss_payload_object_size_s_
 #define _di_f_fss_payload_object_status_s_
+#define _di_f_fss_payload_object_time_s_
 #define _di_f_fss_payload_object_total_s_
 #define _di_f_fss_payload_object_type_s_
 #define _di_f_fss_payload_s_
 //#define _di_fl_fss_extended_object_read_
 #define _di_fl_fss_extended_object_write_
 #define _di_fl_fss_payload_d_
+#define _di_fl_fss_payload_header_internal_t_
 #define _di_fl_fss_payload_header_map_
 #define _di_fl_fss_payload_header_maps_
+#define _di_fl_fss_payload_header_state_t_
 #define _di_fl_iki_read_
 //#define _di_f_limit_process_
 #define _di_f_limit_setss_delete_callback_
 #define _di_fll_print_trim_raw_
 #define _di_fll_print_trim_raw_safely_
 #define _di_fll_print_trim_safely_
+//#define _di_fll_program_copyright_s_
+//#define _di_fll_program_copyright_year_author_s_
 //#define _di_fll_program_data_delete_
 #define _di_fll_program_data_destroy_
 //#define _di_fll_program_data_pipe_e_
 #define _di_f_thread_spin_t_
 #define _di_f_thread_spin_unlock_
 #define _di_f_thread_unlock_
+#define _di_f_time_calendar_string_
+#define _di_f_time_calendar_string_part_
+#define _di_f_time_epoch_get_
+#define _di_f_time_local_get_
+#define _di_f_time_of_day_get_
+#define _di_f_time_of_day_set_
+#define _di_f_time_part_t_
+#define _di_f_time_simple_t_
 #define _di_f_time_spec_millisecond_
 #define _di_f_time_spec_nanosecond_
 #define _di_f_time_spec_t_
+#define _di_f_time_utc_get_
 #define _di_f_time_t_
 //#define _di_f_type_d_
 //#define _di_f_type_file_defaults_d_
index 5b056910545464727702c0c4793efb42d2c73dc5..5727ebcadac5a21f208fde8656b3328b09f6299d 100644 (file)
 //#define _di_f_conversion_number_signed_to_string_
 //#define _di_f_conversion_number_unsigned_print_
 //#define _di_f_conversion_number_unsigned_to_string_
-#define _di_f_date_spec_t_
+#define _di_f_date_simple_t_
 #define _di_f_date_t_
 #define _di_f_file_access_
 #define _di_f_file_access_at_
 #define _di_fll_print_trim_raw_
 #define _di_fll_print_trim_raw_safely_
 #define _di_fll_print_trim_safely_
+//#define _di_fll_program_copyright_s_
+//#define _di_fll_program_copyright_year_author_s_
 //#define _di_fll_program_data_delete_
 #define _di_fll_program_data_destroy_
 //#define _di_fll_program_data_pipe_e_
 #define _di_f_thread_spin_t_
 #define _di_f_thread_spin_unlock_
 #define _di_f_thread_unlock_
+#define _di_f_time_part_t_
+#define _di_f_time_simple_t_
+#define _di_f_time_spec_millisecond_
+#define _di_f_time_spec_nanosecond_
 #define _di_f_time_spec_t_
 #define _di_f_time_t_
 //#define _di_f_type_d_
index 7d6a6ce0ffb6208bdb48155a7320ec6edcc30a5a..e56c9364ba912476bd27e4d6e83d3ce8384434c5 100644 (file)
@@ -1864,7 +1864,7 @@ extern "C" {
 #endif // _di_f_file_select_
 
 #ifndef _di_f_file_select_signal_
-  f_status_t f_file_select_signal(const int highest_plus_one, fd_set * const read, fd_set * const write, fd_set * const except, const struct timespec * const timeout, const sigset_t * const signal) {
+  f_status_t f_file_select_signal(const int highest_plus_one, fd_set * const read, fd_set * const write, fd_set * const except, const f_time_spec_t * const timeout, const sigset_t * const signal) {
 
     if (!highest_plus_one) return F_data_not;
     if (!read && !write && !except && !timeout) return F_data_not;
index d770a77b9a27bef44fbb0c5d65c8690073f9f5d5..d3fbc5541a4eb5c691a864f5ed79ccaa2b8031d6 100644 (file)
@@ -32,6 +32,7 @@
 // FLL-0 includes.
 #include <fll/level_0/type.h>
 #include <fll/level_0/type/file.h>
+#include <fll/level_0/type/time.h>
 #include <fll/level_0/status.h>
 #include <fll/level_0/memory.h>
 #include <fll/level_0/string.h>
@@ -2066,7 +2067,7 @@ extern "C" {
  * @see pselect()
  */
 #ifndef _di_f_file_select_signal_
-  extern f_status_t f_file_select_signal(const int highest_plus_one, fd_set * const read, fd_set * const write, fd_set * const except, const struct timespec * const timeout, const sigset_t * const signal);
+  extern f_status_t f_file_select_signal(const int highest_plus_one, fd_set * const read, fd_set * const write, fd_set * const except, const f_time_spec_t * const timeout, const sigset_t * const signal);
 #endif // _di_f_file_select_signal_
 
 /**
index 6ef51466d66fabaee83b45c4a7c8ad57c4ba3a65..dbd5adcc17fe19e872eabd8160902a665627e838 100644 (file)
@@ -292,7 +292,7 @@ extern "C" {
 #endif // _di_f_signal_wait_
 
 #ifndef _di_f_signal_wait_until_
-  f_status_t f_signal_wait_until(const sigset_t * const set, const struct timespec * timeout, siginfo_t * const information) {
+  f_status_t f_signal_wait_until(const sigset_t * const set, const f_time_spec_t *timeout, siginfo_t * const information) {
 
     if (sigtimedwait(set, information, timeout) == -1) {
       if (errno == EAGAIN) return F_time_out;
index fc29a464e9ee202bc1c8a8c9d9e9b19ca279ede5..abac46a0f960815a5e56d5755460be703a065e45 100644 (file)
@@ -407,7 +407,7 @@ extern "C" {
  * @see sigtimedwait()
  */
 #ifndef _di_f_signal_wait_until_
-  extern f_status_t f_signal_wait_until(const sigset_t * const set, const struct timespec *timeout, siginfo_t * const information);
+  extern f_status_t f_signal_wait_until(const sigset_t * const set, const f_time_spec_t *timeout, siginfo_t * const information);
 #endif // _di_f_signal_wait_until_
 
 #ifdef __cplusplus
index d042a33e16fe5ea9d80cb19a850e6d3eca98f149..c9dcfb21dcfc0fbe5fa80ada50dfd09f8400f594 100644 (file)
@@ -901,7 +901,7 @@ extern "C" {
 #endif // _di_f_thread_condition_wait_
 
 #ifndef _di_f_thread_condition_wait_timed_
-  f_status_t f_thread_condition_wait_timed(const struct timespec *wait, f_thread_condition_t * const condition, f_thread_mutex_t * const mutex) {
+  f_status_t f_thread_condition_wait_timed(const f_time_spec_t *wait, f_thread_condition_t * const condition, f_thread_mutex_t * const mutex) {
     #ifndef _di_level_0_parameter_checking_
       if (!condition) return F_status_set_error(F_parameter);
       if (!mutex) return F_status_set_error(F_parameter);
@@ -1010,7 +1010,7 @@ extern "C" {
 #endif // _di_f_thread_join_try_
 
 #ifndef _di_f_thread_join_timed_
-  f_status_t f_thread_join_timed(const f_thread_id_t id, const struct timespec wait, void **result) {
+  f_status_t f_thread_join_timed(const f_thread_id_t id, const f_time_spec_t wait, void **result) {
 
     const int error = pthread_timedjoin_np(id, result, &wait);
 
@@ -1228,7 +1228,7 @@ extern "C" {
 #endif // _di_f_thread_lock_read_
 
 #ifndef _di_f_thread_lock_read_timed_
-  f_status_t f_thread_lock_read_timed(const struct timespec * const timeout, f_thread_lock_t * const lock) {
+  f_status_t f_thread_lock_read_timed(const f_time_spec_t * const timeout, f_thread_lock_t * const lock) {
     #ifndef _di_level_0_parameter_checking_
       if (!timeout) return F_status_set_error(F_parameter);
       if (!lock) return F_status_set_error(F_parameter);
@@ -1290,7 +1290,7 @@ extern "C" {
 #endif // _di_f_thread_lock_write_
 
 #ifndef _di_f_thread_lock_write_timed_
-  f_status_t f_thread_lock_write_timed(const struct timespec * const timeout, f_thread_lock_t * const lock) {
+  f_status_t f_thread_lock_write_timed(const f_time_spec_t * const timeout, f_thread_lock_t * const lock) {
     #ifndef _di_level_0_parameter_checking_
       if (!timeout) return F_status_set_error(F_parameter);
       if (!lock) return F_status_set_error(F_parameter);
@@ -1599,7 +1599,7 @@ extern "C" {
 #endif // _di_f_thread_mutex_lock_
 
 #ifndef _di_f_thread_mutex_lock_timed_
-  f_status_t f_thread_mutex_lock_timed(const struct timespec * const timeout, f_thread_mutex_t * const mutex) {
+  f_status_t f_thread_mutex_lock_timed(const f_time_spec_t * const timeout, f_thread_mutex_t * const mutex) {
     #ifndef _di_level_0_parameter_checking_
       if (!timeout) return F_status_set_error(F_parameter);
       if (!mutex) return F_status_set_error(F_parameter);
@@ -1907,7 +1907,7 @@ extern "C" {
 #endif // _di_f_thread_semaphore_lock_
 
 #ifndef _di_f_thread_semaphore_lock_timed_
-  f_status_t f_thread_semaphore_lock_timed(const struct timespec * const timeout, f_thread_semaphore_t * const semaphore) {
+  f_status_t f_thread_semaphore_lock_timed(const f_time_spec_t * const timeout, f_thread_semaphore_t * const semaphore) {
     #ifndef _di_level_0_parameter_checking_
       if (!timeout) return F_status_set_error(F_parameter);
       if (!semaphore) return F_status_set_error(F_parameter);
index e033f03051d1b8783c18b5a955133f0c010fecee..b21aa81a0e23505cc2482c5e10132bf514819786 100644 (file)
@@ -1146,7 +1146,7 @@ extern "C" {
  * @see pthread_cond_timedwait()
  */
 #ifndef _di_f_thread_condition_wait_timed_
-  extern f_status_t f_thread_condition_wait_timed(const struct timespec *wait, f_thread_condition_t * const condition, f_thread_mutex_t * const mutex);
+  extern f_status_t f_thread_condition_wait_timed(const f_time_spec_t *wait, f_thread_condition_t * const condition, f_thread_mutex_t * const mutex);
 #endif // _di_f_thread_condition_wait_timed_
 
 /**
@@ -1310,7 +1310,7 @@ extern "C" {
  * @see pthread_timedjoin_np()
  */
 #ifndef _di_f_thread_join_timed_
-  extern f_status_t f_thread_join_timed(const f_thread_id_t id, const struct timespec wait, void **result);
+  extern f_status_t f_thread_join_timed(const f_thread_id_t id, const f_time_spec_t wait, void **result);
 #endif // _di_f_thread_join_timed_
 
 /**
@@ -1580,7 +1580,7 @@ extern "C" {
  * @see pthread_rwlock_timedrdlock()
  */
 #ifndef _di_f_thread_lock_read_timed_
-  extern f_status_t f_thread_lock_read_timed(const struct timespec * const timeout, f_thread_lock_t * const lock);
+  extern f_status_t f_thread_lock_read_timed(const f_time_spec_t * const timeout, f_thread_lock_t * const lock);
 #endif // _di_f_thread_lock_read_timed_
 
 /**
@@ -1655,7 +1655,7 @@ extern "C" {
  * @see pthread_rwlock_timedwrlock()
  */
 #ifndef _di_f_thread_lock_write_timed_
-  extern f_status_t f_thread_lock_write_timed(const struct timespec * const timeout, f_thread_lock_t * const lock);
+  extern f_status_t f_thread_lock_write_timed(const f_time_spec_t * const timeout, f_thread_lock_t * const lock);
 #endif // _di_f_thread_lock_write_timed_
 
 /**
@@ -2068,7 +2068,7 @@ extern "C" {
  * @see pthread_mutex_timedlock()
  */
 #ifndef _di_f_thread_mutex_lock_timed_
-  extern f_status_t f_thread_mutex_lock_timed(const struct timespec * const timeout, f_thread_mutex_t * const mutex);
+  extern f_status_t f_thread_mutex_lock_timed(const f_time_spec_t * const timeout, f_thread_mutex_t * const mutex);
 #endif // _di_f_thread_mutex_lock_timed_
 
 /**
@@ -2376,7 +2376,7 @@ extern "C" {
  * @see sem_timedwait()
  */
 #ifndef _di_f_thread_semaphore_lock_timed_
-  extern f_status_t f_thread_semaphore_lock_timed(const struct timespec * const timeout, f_thread_semaphore_t * const semaphore);
+  extern f_status_t f_thread_semaphore_lock_timed(const f_time_spec_t * const timeout, f_thread_semaphore_t * const semaphore);
 #endif // _di_f_thread_semaphore_lock_timed_
 
 /**
index 578cd5c7e03501e53c8ac56cf2e9c0cb0aba383b..41b7549715f56e6075f30dcb3867a8b95f007fb2 100644 (file)
@@ -116,7 +116,7 @@ extern "C" {
 #endif // _di_f_time_of_day_set_
 
 #ifndef _di_f_time_spec_millisecond_
-  extern f_status_t f_time_spec_millisecond(const f_number_unsigned_t second, const f_number_unsigned_t millisecond, struct timespec * const time) {
+  extern f_status_t f_time_spec_millisecond(const f_number_unsigned_t second, const f_number_unsigned_t millisecond, f_time_spec_t * const time) {
     #ifndef _di_level_0_parameter_checking_
       if (!time) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
@@ -157,7 +157,7 @@ extern "C" {
 #endif // _di_f_time_spec_millisecond_
 
 #ifndef _di_f_time_spec_nanosecond_
-  extern f_status_t f_time_spec_nanosecond(const f_number_unsigned_t second, const f_number_unsigned_t nanosecond, struct timespec * const time) {
+  extern f_status_t f_time_spec_nanosecond(const f_number_unsigned_t second, const f_number_unsigned_t nanosecond, f_time_spec_t * const time) {
     #ifndef _di_level_0_parameter_checking_
       if (!time) return F_status_set_error(F_parameter);
     #endif // _di_level_0_parameter_checking_
index 4a3fa34e9a29db149d40de562decfd6c79a60131..84fc4870bbab0b0f9295170b33f338c90a9a05e8 100644 (file)
@@ -16,6 +16,7 @@
 
 // FLL-0 includes.
 #include <fll/level_0/type.h>
+#include <fll/level_0/type/time.h>
 #include <fll/level_0/status.h>
 #include <fll/level_0/string.h>
 
@@ -174,9 +175,8 @@ extern "C" {
 /**
  * Create a timespec representing the given seconds and milliseconds.
  *
- * This is intended to work with "struct timespec" and is not intended to work with "f_time_spec_t".
- * The "struct timespec" may have different lengths and so this function provides overflow and underflow protection.
- * The "f_time_spec_t" should not need this as "f_time_spec_t" is intended to always be uint64_t.
+ * The "f_time_spec_t" may have different lengths and so this function provides overflow and underflow protection.
+ * The "f_time_simple_t" should not need this as "f_time_simple_t" is intended to always be uint64_t.
  *
  * @param second
  *   The number of seconds.
@@ -196,15 +196,14 @@ extern "C" {
  *   F_parameter (with error bit) if a parameter is invalid.
  */
 #ifndef _di_f_time_spec_millisecond_
-  extern f_status_t f_time_spec_millisecond(const f_number_unsigned_t second, const f_number_unsigned_t millisecond, struct timespec * const time);
+  extern f_status_t f_time_spec_millisecond(const f_number_unsigned_t second, const f_number_unsigned_t millisecond, f_time_spec_t * const time);
 #endif // _di_f_time_spec_millisecond_
 
 /**
  * Create a timespec representing the given seconds and nanoseconds.
  *
- * This is intended to work with "struct timespec" and is not intended to work with "f_time_spec_t".
- * The "struct timespec" may have different lengths and so this function provides overflow and underflow protection.
- * The "f_time_spec_t" should not need this as "f_time_spec_t" is intended to always be uint64_t.
+ * The "f_time_spec_t" may have different lengths and so this function provides overflow and underflow protection.
+ * The "f_time_simple_t" should not need this as "f_time_simple_t" is intended to always be uint64_t.
  *
  * @param second
  *   The number of seconds.
@@ -224,7 +223,7 @@ extern "C" {
  *   F_parameter (with error bit) if a parameter is invalid.
  */
 #ifndef _di_f_time_spec_nanosecond_
-  extern f_status_t f_time_spec_nanosecond(const f_number_unsigned_t second, const f_number_unsigned_t nanosecond, struct timespec * const time);
+  extern f_status_t f_time_spec_nanosecond(const f_number_unsigned_t second, const f_number_unsigned_t nanosecond, f_time_spec_t * const time);
 #endif // _di_f_time_spec_nanosecond_
 
 /**
index ce1b80c9e89e5e310e17cd487b7c18b450e9e88a..58a810b7d104eb95030da64f93aea5b20ffeb091 100644 (file)
@@ -26,24 +26,6 @@ extern "C" {
   #define F_time_calendar_string_length_d 27
 #endif // _di_f_time_d_
 
-/**
- * A typedef representing struct timeval.
- */
-#ifndef _di_f_time_value_t_
-  typedef struct timeval f_time_value_t;
-
-  #define f_time_value_t_initialize { 0 }
-#endif // _di_f_time_value_t_
-
-/**
- * A typedef representing struct tm.
- */
-#ifndef _di_f_time_part_t_
-  typedef struct tm f_time_part_t;
-
-  #define f_time_part_t_initialize { 0 }
-#endif // _di_f_time_part_t_
-
 #ifdef __cplusplus
 } // extern "C"
 #endif
index 587c4e83707f20843021413cd923b36af5271e7b..9f2407c8ab0685464c4d6bba20b056721bd270f1 100644 (file)
@@ -17,7 +17,7 @@ void test__f_time_spec_millisecond__number_overflow(void **state) {
     second = (f_number_unsigned_t) ((time_t) (-1));
   }
 
-  struct timespec time = { 0 };
+  f_time_spec_t time = { 0 };
 
   {
     const f_status_t status = f_time_spec_millisecond(second, 1000, &time);
@@ -34,7 +34,7 @@ void test__f_time_spec_millisecond__number_overflow(void **state) {
 
 void test__f_time_spec_millisecond__number_underflow(void **state) {
 
-  struct timespec time = { .tv_sec = -1, .tv_nsec = -1 };
+  f_time_spec_t time = { .tv_sec = -1, .tv_nsec = -1 };
 
   // If this system has uses unsigned, then this test is not needed.
   if (time.tv_sec >= 0 && time.tv_nsec >= 0) return;
@@ -77,7 +77,7 @@ void test__f_time_spec_millisecond__parameter_checking(void **state) {
 
 void test__f_time_spec_millisecond__works(void **state) {
 
-  struct timespec time = { 0 };
+  f_time_spec_t time = { 0 };
 
   {
     const f_number_unsigned_t seconds[] = {
index 25dc01f78f512510934c3948f6176fb14aaa1415..62b2333c5ee4b1923ae9b009587ae60484f928f5 100644 (file)
@@ -17,7 +17,7 @@ void test__f_time_spec_nanosecond__number_overflow(void **state) {
     second = (f_number_unsigned_t) ((time_t) (-1));
   }
 
-  struct timespec time = { 0 };
+  f_time_spec_t time = { 0 };
 
   {
     const f_status_t status = f_time_spec_nanosecond(second, 1000000000, &time);
@@ -34,7 +34,7 @@ void test__f_time_spec_nanosecond__number_overflow(void **state) {
 
 void test__f_time_spec_nanosecond__number_underflow(void **state) {
 
-  struct timespec time = { .tv_sec = -1, .tv_nsec = -1 };
+  f_time_spec_t time = { .tv_sec = -1, .tv_nsec = -1 };
 
   // If this system has uses unsigned, then this test is not needed.
   if (time.tv_sec >= 0 && time.tv_nsec >= 0) return;
@@ -77,7 +77,7 @@ void test__f_time_spec_nanosecond__parameter_checking(void **state) {
 
 void test__f_time_spec_nanosecond__works(void **state) {
 
-  struct timespec time = { 0 };
+  f_time_spec_t time = { 0 };
 
   {
     const f_number_unsigned_t seconds[] = {
index bdd74644887ca70854f4c8c59a52c468f883a49a..ba4ee3ac85ac9f484bc41e14145c47f8de2a0a66 100644 (file)
@@ -21,6 +21,8 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include <sys/stat.h>
+#include <sys/time.h>
+#include <time.h>
 #include <unistd.h>
 
 // FLL-0 type includes.
index 0d91f1e0c2b67cff4a78dd8b33b82e1fa78cd13a..a0938d5aae8337e5378050ded5be32ee2054ff24 100644 (file)
@@ -44,9 +44,39 @@ extern "C" {
   typedef uint64_t f_time_t;
 
   #define f_time_t_initialize 0
+
+  #define macro_f_time_t_clear(time) \
+    time = 0;
 #endif // _di_f_time_t_
 
 /**
+ * A typedef representing struct tm.
+ */
+#ifndef _di_f_time_part_t_
+  typedef struct tm f_time_part_t;
+
+  #define f_time_part_t_initialize { 0 }
+#endif // _di_f_time_part_t_
+
+/**
+ * A typedef representing struct timespec.
+ */
+#ifndef _di_f_time_spec_t_
+  typedef struct timespec f_time_spec_t;
+
+  #define f_time_spec_t_initialize { 0 }
+#endif // _di_f_time_spec_t_
+
+/**
+ * A typedef representing struct timeval.
+ */
+#ifndef _di_f_time_value_t_
+  typedef struct timeval f_time_value_t;
+
+  #define f_time_value_t_initialize { 0 }
+#endif // _di_f_time_value_t_
+
+/**
  * A non-kernel dependent alternative version of "struct timespec".
  *
  * This is may not compatible with struct timespec because seconds is time_t and that may not be a uint64_t.
@@ -56,18 +86,18 @@ extern "C" {
  *   - seconds:      The total number of seconds.
  *   - seconds_nano: The total number of nanoseconds.
  */
-#ifndef _di_f_time_spec_t_
+#ifndef _di_f_time_simple_t_
   typedef struct {
     f_time_t seconds;
     f_time_t seconds_nano;
-  } f_time_spec_t;
+  } f_time_simple_t;
 
-  #define f_time_spec_t_initialize { f_time_t_initialize, f_time_t_initialize }
+  #define f_time_simple_t_initialize { f_time_t_initialize, f_time_t_initialize }
 
-  #define macro_f_time_spec_t_clear(spec) \
-    spec.seconds = 0; \
-    spec.seconds_nano = 0;
-#endif // _di_f_time_spec_t_
+  #define macro_f_time_simple_t_clear(simple) \
+    macro_f_time_t_clear(simple.seconds); \
+    macro_f_time_t_clear(simple.seconds_nano);
+#endif // _di_f_time_simple_t_
 
 /**
  * Hold a unit of Time along with a year to represent a date.
@@ -92,36 +122,36 @@ extern "C" {
     f_time_t time;
   } f_date_t;
 
-  #define f_date_t_initialize { 0, 0 }
+  #define f_date_t_initialize { f_time_t_initialize, f_time_t_initialize }
 
   #define macro_f_date_t_clear(date) \
     date.year = 0; \
-    date.time = 0;
+    macro_f_time_t_clear(date.time);
 #endif // _di_f_date_t_
 
 /**
- * A variation of f_date_t that using f_time_spec_t rather than f_time_t.
+ * A variation of f_date_t that using f_time_simple_t rather than f_time_t.
  *
  * This can is a more precise alternative to f_date_t because it stores nanoseconds.
  *
- * The f_time_spec_t.time.seconds can be directly cast to the f_date_t.time.
+ * The f_time_simple_t.time.seconds can be directly cast to the f_date_t.time.
  *
  * Properties:
  *   - year: A number representing the year.
  *   - time: A number representing the time with seconds and nanoseconds.
  */
-#ifndef _di_f_date_spec_t_
+#ifndef _di_f_date_simple_t_
   typedef struct {
     f_time_t year;
-    f_time_spec_t time;
-  } f_date_spec_t;
+    f_time_simple_t time;
+  } f_date_simple_t;
 
-  #define f_date_spec_t_initialize { f_time_t_initialize, macro_f_time_spec_t_clear }
+  #define f_date_simple_t_initialize { f_time_t_initialize, macro_f_time_simple_t_clear }
 
-  #define macro_f_date_spec_t_clear(date) \
-    date.year = 0; \
-    macro_f_time_spec_t_clear(date.time);
-#endif // _di_f_date_spec_t_
+  #define macro_f_date_simple_t_clear(date) \
+    macro_f_time_t_clear(date.year); \
+    macro_f_time_simple_t_clear(date.time);
+#endif // _di_f_date_simple_t_
 
 #ifdef __cplusplus
 } // extern "C"
index 85c04c5f09379a2299820cae52ba15060e2da627..429380f158db1ca27fdbadce58ad5012897cb70d 100644 (file)
@@ -1190,7 +1190,7 @@ extern "C" {
     uid_t user;
     gid_t group;
 
-    f_time_spec_t timestamp;
+    f_time_simple_t timestamp;
 
     f_string_dynamic_t alias;
     f_string_dynamic_t engine;
@@ -1239,7 +1239,7 @@ extern "C" {
     0, \
     0, \
     0, \
-    f_time_spec_t_initialize, \
+    f_time_simple_t_initialize, \
     f_string_dynamic_t_initialize, \
     f_string_dynamic_t_initialize, \
     f_string_dynamic_t_initialize, \
index c84da0c692968d6977dfbbdb3d8d5e858b3f7249..7ad31180d4a3ab8ca74b7f391e4575f3a19c155f 100644 (file)
@@ -74,7 +74,7 @@ extern "C" {
  */
 #ifndef _di_controller_cache_t_
   typedef struct {
-    f_time_spec_t timestamp;
+    f_time_simple_t timestamp;
 
     f_range_t range_action;
 
@@ -100,7 +100,7 @@ extern "C" {
   } controller_cache_t;
 
   #define controller_cache_t_initialize { \
-    f_time_spec_t_initialize, \
+    f_time_simple_t_initialize, \
     f_range_t_initialize, \
     f_number_unsigneds_t_initialize, \
     f_number_unsigneds_t_initialize, \
index d678939a75e4e7ed6c59a046f103ccb5720881ff..8caa6764b870ca26824dfe8fcc95d33f24a25d4d 100644 (file)
@@ -39,7 +39,7 @@ extern "C" {
     cache->action.name_file.used = 0;
     cache->buffer_file.used = 0;
 
-    macro_f_time_spec_t_clear(cache->timestamp);
+    macro_f_time_simple_t_clear(cache->timestamp);
 
     status = f_string_dynamic_append(path_prefix, &cache->action.name_file);
 
@@ -712,7 +712,7 @@ extern "C" {
 #endif // _di_controller_status_simplify_error_
 
 #ifndef _di_controller_time_
-  void controller_time(const time_t seconds, const long nanoseconds, struct timespec *time) {
+  void controller_time(const time_t seconds, const long nanoseconds, f_time_spec_t *time) {
 
     struct timeval now;
 
@@ -731,10 +731,10 @@ extern "C" {
 #endif // _di_controller_time_
 
 #ifndef _di_controller_time_milliseconds_
-  struct timespec controller_time_milliseconds(const f_number_unsigned_t milliseconds) {
+  f_time_spec_t controller_time_milliseconds(const f_number_unsigned_t milliseconds) {
    // @todo update all of these type of functions to use the newer f_time_spec_milliseconds() and f_time_spec_nanoseconds() as appropriate.
 
-    struct timespec time;
+    f_time_spec_t time;
     time.tv_sec = milliseconds > 1000 ? milliseconds / 1000 : 0;
     time.tv_nsec = (time.tv_sec ? milliseconds - time.tv_sec : milliseconds) * 1000;
 
@@ -743,9 +743,9 @@ extern "C" {
 #endif // _di_controller_time_milliseconds_
 
 #ifndef _di_controller_time_seconds_
-  struct timespec controller_time_seconds(const f_number_unsigned_t seconds) {
+  f_time_spec_t controller_time_seconds(const f_number_unsigned_t seconds) {
 
-    struct timespec time;
+    f_time_spec_t time;
     time.tv_sec = seconds;
     time.tv_nsec = 0;
 
@@ -754,7 +754,7 @@ extern "C" {
 #endif // _di_controller_time_seconds_
 
 #ifndef _di_controller_time_sleep_nanoseconds_
-  int controller_time_sleep_nanoseconds(controller_main_t * const main, controller_process_t * const setting, struct timespec time) {
+  int controller_time_sleep_nanoseconds(controller_main_t * const main, controller_process_t * const setting, f_time_spec_t time) {
 
     // When sleep is a second or more, instead wait for terminating signals if interruptible.
     if ((setting->flag & controller_setting_flag_interruptible_e) && time.tv_sec) {
index 7b05b6df5d1f7d84c43a037f5d82fbace9df1bda..39b7f920abbffe4818119625007c498b7024de4d 100644 (file)
@@ -307,7 +307,7 @@ extern "C" {
  * Get the current time, plus the given offset.
  *
  * @todo this is basic enough that there needs to be an f_time class with this function f_time_now(), f_time_future(), f_time_past().
- *       "struct timespec" -> f_time_nano_t, "struct timeval" -> f_time_micro_t.
+ *       "f_time_spec_t" -> f_time_nano_t, "struct timeval" -> f_time_micro_t.
  *
  * @param seconds
  *   The seconds to add to current time.
@@ -317,7 +317,7 @@ extern "C" {
  *   The resulting current time.
  */
 #ifndef _di_controller_time_
-  void controller_time(const time_t seconds, const long nanoseconds, struct timespec *time) F_attribute_visibility_internal_d;
+  void controller_time(const time_t seconds, const long nanoseconds, f_time_spec_t *time) F_attribute_visibility_internal_d;
 #endif // _di_controller_time_
 
 /**
@@ -332,7 +332,7 @@ extern "C" {
  * @see nanosleep()
  */
 #ifndef _di_controller_time_milliseconds_
-  extern struct timespec controller_time_milliseconds(const f_number_unsigned_t milliseconds) F_attribute_visibility_internal_d;
+  extern f_time_spec_t controller_time_milliseconds(const f_number_unsigned_t milliseconds) F_attribute_visibility_internal_d;
 #endif // _di_controller_time_milliseconds_
 
 /**
@@ -347,7 +347,7 @@ extern "C" {
  * @see nanosleep()
  */
 #ifndef _di_controller_time_seconds_
-  extern struct timespec controller_time_seconds(const f_number_unsigned_t seconds) F_attribute_visibility_internal_d;
+  extern f_time_spec_t controller_time_seconds(const f_number_unsigned_t seconds) F_attribute_visibility_internal_d;
 #endif // _di_controller_time_seconds_
 
 /**
@@ -366,7 +366,7 @@ extern "C" {
  * @see nanosleep()
  */
 #ifndef _di_controller_time_sleep_nanoseconds_
-  extern int controller_time_sleep_nanoseconds(controller_main_t * const main, controller_process_t * const setting, struct timespec time) F_attribute_visibility_internal_d;
+  extern int controller_time_sleep_nanoseconds(controller_main_t * const main, controller_process_t * const setting, f_time_spec_t time) F_attribute_visibility_internal_d;
 #endif // _di_controller_time_sleep_nanoseconds_
 
 /**
index 7774e0870498bf549245df1c9ea074e9f4bd505a..7ba6837da18e092dfd18a20454fbc27299cf2b8d 100644 (file)
@@ -1529,7 +1529,7 @@ extern "C" {
     cache->action.line_action = 0;
     cache->action.line_item = 0;
 
-    macro_f_time_spec_t_clear(cache->timestamp);
+    macro_f_time_simple_t_clear(cache->timestamp);
 
     cache->comments.used = 0;
     cache->delimits.used = 0;
index 2b997686fae670d51961367bae238bc82f6154dd..6483462b5c21458ff032f73c6526bd722614b4d8 100644 (file)
@@ -39,7 +39,7 @@ extern "C" {
 #ifndef _di_controller_lock_read_
   f_status_t controller_lock_read(const bool is_normal, controller_thread_t * const thread, f_thread_lock_t *lock) {
 
-    struct timespec time;
+    f_time_spec_t time;
 
     f_status_t status = F_okay;
 
@@ -80,7 +80,7 @@ extern "C" {
 #ifndef _di_controller_lock_write_
   f_status_t controller_lock_write(const bool is_normal, controller_thread_t * const thread, f_thread_lock_t *lock) {
 
-    struct timespec time;
+    f_time_spec_t time;
 
     f_status_t status = F_okay;
 
index 9c8cc2851d39a88aa2db0c2069e70844ecf38fdc..fefbbc352764b65d52420a3d47fbe2b6a1c9af51 100644 (file)
@@ -107,7 +107,7 @@ extern "C" {
       return F_status_set_error(F_interrupt);
     }
 
-    struct timespec time;
+    f_time_spec_t time;
 
     f_status_t status = F_okay;
     f_status_t status_lock = F_okay;
index 84c43156dc8206d1053a99f28784e8facb62005e..ca5b1696c235df5701fdcba12263b9acb5e37e25 100644 (file)
@@ -1459,7 +1459,7 @@ extern "C" {
 
       // Sleep for less than a second to better show simulation of synchronous vs asynchronous.
       {
-        const struct timespec delay = controller_time_milliseconds(controller_thread_simulation_timeout_d);
+        const f_time_spec_t delay = controller_time_milliseconds(controller_thread_simulation_timeout_d);
 
         if (controller_time_sleep_nanoseconds(main, (controller_process_t *) process->main_setting, delay) == -1) {
           status = F_status_set_error(F_interrupt);
@@ -1715,7 +1715,7 @@ extern "C" {
 
       // Sleep for less than a second to better show simulation of synchronous vs asynchronous.
       {
-        const struct timespec delay = controller_time_milliseconds(controller_thread_simulation_timeout_d);
+        const f_time_spec_t delay = controller_time_milliseconds(controller_thread_simulation_timeout_d);
 
         if (controller_time_sleep_nanoseconds(main, (controller_process_t *) process->main_setting, delay) == -1) {
           status = F_status_set_error(F_interrupt);
@@ -1898,7 +1898,7 @@ extern "C" {
         }
 
         if (rerun_item->delay) {
-          const struct timespec delay = controller_time_milliseconds(rerun_item->delay);
+          const f_time_spec_t delay = controller_time_milliseconds(rerun_item->delay);
 
           if (controller_time_sleep_nanoseconds(main, (controller_process_t *) process->main_setting, delay) == -1) {
             return -1;
@@ -3207,7 +3207,7 @@ extern "C" {
     process->options = options;
     process->type = type;
 
-    macro_f_time_spec_t_clear(process->cache.timestamp)
+    macro_f_time_simple_t_clear(process->cache.timestamp)
     macro_f_range_t_clear(process->cache.range_action)
 
     process->cache.ats.used = 0;
@@ -3628,7 +3628,7 @@ extern "C" {
     rule->user = 0;
     rule->nice = 0;
 
-    macro_f_time_spec_t_clear(rule->timestamp);
+    macro_f_time_simple_t_clear(rule->timestamp);
 
     rule->alias.used = 0;
     rule->engine.used = 0;
index ed0a5009dcc97d05507ee18429a84967985e9710..93e64265871aaa1780e45f9a5fcf84030525bf61 100644 (file)
@@ -25,7 +25,7 @@ extern "C" {
 
     if (global->thread->enabled != controller_thread_enabled_e) return 0;
 
-    const struct timespec delay = controller_time_seconds((global->main->program.parameters.array[controller_parameter_simulate_e].result & f_console_result_found_e) ? controller_thread_cleanup_interval_short_d : controller_thread_cleanup_interval_long_d);
+    const f_time_spec_t delay = controller_time_seconds((global->main->program.parameters.array[controller_parameter_simulate_e].result & f_console_result_found_e) ? controller_thread_cleanup_interval_short_d : controller_thread_cleanup_interval_long_d);
 
     f_status_t status = F_okay;
 
index e36d93d506faef3fb63354470fbe6a5216770e52..7e686a86fe65b092fe82f8d43a967cbe86a99742 100644 (file)
@@ -119,7 +119,7 @@ extern "C" {
         }
 
         if (F_status_is_error_not(*status) && *status != F_child && entry->global->main->program.parameters.array[controller_parameter_validate_e].result == f_console_result_none_e && entry->global->setting->mode == controller_setting_mode_helper_e) {
-          struct timespec time;
+          f_time_spec_t time;
           time.tv_sec = controller_thread_exit_helper_timeout_seconds_d;
           time.tv_nsec = controller_thread_exit_helper_timeout_nanoseconds_d;
 
index e93d76751245b14a581bdec6342b5754fab8673f..d25da66acc3f6f0b2105019aad1ff9b8ae3c74d6 100644 (file)
@@ -54,7 +54,7 @@ extern "C" {
       return;
     }
 
-    struct timespec time;
+    f_time_spec_t time;
 
     controller_entry_t *entry = 0;
     controller_data_t *process = 0;
@@ -376,7 +376,7 @@ extern "C" {
         }
       }
       else {
-        struct timespec time;
+        f_time_spec_t time;
 
         do {
           status = f_thread_mutex_lock(&global->thread->lock.alert);
index c65b1f1a115adee6e89dcdc3d8db7dcbaf50819b..5aaab62484b7554793513c50db91916fee847d6e 100644 (file)
@@ -16,7 +16,7 @@ extern "C" {
     if (!controller_thread_is_enabled(is_normal, global->thread)) return;
 
     siginfo_t information;
-    struct timespec time;
+    f_time_spec_t time;
     int error = 0;
 
     while (controller_thread_is_enabled(is_normal, global->thread)) {