summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/c/fastforge_core.c18
-rw-r--r--src/c/fastforge_logic.c37
-rw-r--r--src/c/fastforge_logic.h1
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(&timestamp);
- 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(&timestamp);
+ 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