From 13ae69f4e9241baaad1d700525c0a2e32d607c97 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 9 Feb 2025 10:55:29 +0100 Subject: [PATCH] change get value with localtime_r --- src/feierabend.c | 36 ++++++++++++++++++++++++++---------- src/feierabend.h | 1 + 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/feierabend.c b/src/feierabend.c index b0ff52f..3bee416 100644 --- a/src/feierabend.c +++ b/src/feierabend.c @@ -14,6 +14,10 @@ feierabend* feierabend_init() fabend->now = malloc(sizeof(time_t)); fabend->begin = malloc(sizeof(time_t)); fabend->worktime = malloc(sizeof(time_t)); + fabend->now_tm = malloc(sizeof(struct tm)); + fabend->begin_tm = malloc(sizeof(struct tm)); + fabend->work_end_tm = malloc(sizeof(struct tm)); + fabend->max_work_end_tm = malloc(sizeof(struct tm)); fabend->timestr = malloc(sizeof(char) * MAX_TIME_STR_LENGTH); return fabend; @@ -27,6 +31,14 @@ void feierabend_free(feierabend* fabend) fabend->begin = NULL; free(fabend->worktime); fabend->worktime = NULL; + free(fabend->now_tm); + fabend->now_tm = NULL; + free(fabend->begin_tm); + fabend->begin_tm = NULL; + free(fabend->work_end_tm); + fabend->work_end_tm = NULL; + free(fabend->max_work_end_tm); + fabend->max_work_end_tm = NULL; free(fabend->timestr); fabend->timestr = NULL; } @@ -59,28 +71,34 @@ int main(int argc, char* argv[]) printf("Version: %s\n\n", PROJECT_VERSION); time(fabend->begin); - fabend->begin_tm = localtime(fabend->begin); + localtime_r(fabend->begin, fabend->begin_tm); fabend->begin_tm->tm_hour = atoi(argv[1]); fabend->begin_tm->tm_min = atoi(argv[2]); *fabend->begin = mktime(fabend->begin_tm); - printf("%-27s", "Arbeitsbeginn:"); - print_german_long_date(fabend->begin_tm); - printf("\n"); time(fabend->now); - fabend->now_tm = localtime(fabend->now); + localtime_r(fabend->now, fabend->now_tm); if (argc == 5) { fabend->now_tm->tm_hour = atoi(argv[3]); fabend->now_tm->tm_min = atoi(argv[4]); *fabend->now = mktime(fabend->now_tm); } + + *fabend->worktime = get_eight_hour_end_worktime(*fabend->begin); + localtime_r(fabend->worktime, fabend->work_end_tm); + + *fabend->worktime = get_ten_hour_end_worktime(*fabend->begin); + localtime_r(fabend->worktime, fabend->max_work_end_tm); + + printf("%-27s", "Arbeitsbeginn:"); + print_german_long_date(fabend->begin_tm); + printf("\n"); + printf("%-27s", "Aktuelle Zeit:"); print_german_long_date(fabend->now_tm); printf("\n"); printf("\n"); - *fabend->worktime = get_eight_hour_end_worktime(*fabend->begin); - fabend->work_end_tm = localtime(fabend->worktime); printf("%s %02d:%02d %-9s", "Arbeitsende", SOLL_HOUR, SOLL_MINUTES, @@ -88,10 +106,8 @@ int main(int argc, char* argv[]) print_german_long_date(fabend->work_end_tm); printf("\n"); - *fabend->worktime = get_ten_hour_end_worktime(*fabend->begin); - fabend->work_end_tm = localtime(fabend->worktime); printf("%-27s", "Arbeitsende 10:00 Std:"); - print_german_long_date(fabend->work_end_tm); + print_german_long_date(fabend->max_work_end_tm); printf("\n"); printf("\n"); diff --git a/src/feierabend.h b/src/feierabend.h index ef09e76..16936b1 100644 --- a/src/feierabend.h +++ b/src/feierabend.h @@ -12,6 +12,7 @@ typedef struct { struct tm* now_tm; struct tm* begin_tm; struct tm* work_end_tm; + struct tm* max_work_end_tm; char* timestr; } feierabend; -- 2.39.5