diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-13 08:08:39 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-13 08:08:39 +0300 |
| commit | 9e12da337502aeb4d01e8090c25f08dd5dd7bfd0 (patch) | |
| tree | 88cd55d855d963f75b204ba79783c37d8f66fcae | |
| parent | 2c13cc3cf24dceeb620b71b6807be036d6b5bc24 (diff) | |
n2: restore local_day_start to pebble-free logic module
| -rw-r--r-- | src/c/fastforge_core.c | 18 | ||||
| -rw-r--r-- | src/c/fastforge_logic.c | 37 | ||||
| -rw-r--r-- | src/c/fastforge_logic.h | 1 |
3 files changed, 38 insertions, 18 deletions
diff --git a/src/c/fastforge_core.c b/src/c/fastforge_core.c index 5254956..39d9ea8 100644 --- a/src/c/fastforge_core.c +++ b/src/c/fastforge_core.c @@ -61,24 +61,6 @@ static int compare_time_t_ascending(const void *a, const void *b) { return 0; } -static time_t local_day_start(time_t timestamp) { - if (timestamp <= 0) { - return 0; - } - - struct tm *tm_info = localtime(×tamp); - if (!tm_info) { - return 0; - } - - struct tm tm_copy = *tm_info; - tm_copy.tm_hour = 0; - tm_copy.tm_min = 0; - tm_copy.tm_sec = 0; - tm_copy.tm_isdst = -1; - return mktime(&tm_copy); -} - static bool is_next_local_day(time_t first_day, time_t second_day) { if (first_day <= 0 || second_day <= 0 || second_day < first_day) { return false; diff --git a/src/c/fastforge_logic.c b/src/c/fastforge_logic.c index b93240d..b8b44da 100644 --- a/src/c/fastforge_logic.c +++ b/src/c/fastforge_logic.c @@ -3,6 +3,25 @@ #include <stdio.h> #include <time.h> +#ifndef __struct_tm_defined +#define FASTFORGE_TZ_LEN 6 +struct tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + int tm_gmtoff; + char tm_zone[FASTFORGE_TZ_LEN]; +}; +#endif +struct tm *localtime(const time_t *timep); +time_t mktime(struct tm *tb); + time_t entry_duration_seconds(const FastEntry *entry) { if (!entry || entry->start_time == 0 || entry->end_time <= entry->start_time) { return 0; @@ -55,6 +74,24 @@ void format_duration_hours_minutes(time_t seconds, char *buffer, size_t size) { snprintf(buffer, size, "%dh %02dm", hours, minutes); } +time_t local_day_start(time_t timestamp) { + if (timestamp <= 0) { + return 0; + } + + struct tm *tm_info = localtime(×tamp); + if (!tm_info) { + return 0; + } + + struct tm tm_copy = *tm_info; + tm_copy.tm_hour = 0; + tm_copy.tm_min = 0; + tm_copy.tm_sec = 0; + tm_copy.tm_isdst = -1; + return mktime(&tm_copy); +} + bool running_fast_is_at_target(const FastEntry *entry, time_t now) { if (!entry || entry->start_time == 0 || entry->end_time != 0 || entry->target_minutes == 0) { return false; diff --git a/src/c/fastforge_logic.h b/src/c/fastforge_logic.h index 7108da8..4ccaba7 100644 --- a/src/c/fastforge_logic.h +++ b/src/c/fastforge_logic.h @@ -12,6 +12,7 @@ uint8_t stage_level_for_elapsed(time_t elapsed_seconds); const char *stage_text_for_elapsed(time_t elapsed_seconds); void format_hhmmss(time_t seconds, char *buffer, size_t size); void format_duration_hours_minutes(time_t seconds, char *buffer, size_t size); +time_t local_day_start(time_t timestamp); bool running_fast_is_at_target(const FastEntry *entry, time_t now); #endif |
