]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
change get value with localtime_r
authorBastian Dehn <hhaalo@arcor.de>
Sun, 9 Feb 2025 09:55:29 +0000 (10:55 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 9 Feb 2025 09:55:29 +0000 (10:55 +0100)
src/feierabend.c
src/feierabend.h

index b0ff52f5e77287f28c95dad1211274f9b9d9f3ff..3bee416340911f408644a1a4eab971230bdfc098 100644 (file)
@@ -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");
 
index ef09e7648cd7f053183452314373cbd501440b87..16936b12cb698f48978de269b08394470d50bc4a 100644 (file)
@@ -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;