From edd43cafa9f60a08905877c911dea3686590cad4 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Thu, 13 Jun 2024 17:34:12 +0200 Subject: [PATCH] chnage all into one struct --- src/main.c | 195 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 109 insertions(+), 86 deletions(-) diff --git a/src/main.c b/src/main.c index 14318ae..566f412 100644 --- a/src/main.c +++ b/src/main.c @@ -8,6 +8,48 @@ #define ONE_HOUR 3600 +typedef struct { + time_t* now; + time_t* begin; + time_t* worktime; + struct tm* now_tm; + struct tm* begin_tm; + struct tm* work_end_tm; + char* weekday; + char* timestr; +} feierabend; + +void init_feierabend(feierabend* fabend) +{ + 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->weekday = malloc(sizeof(char) * 11); + fabend->timestr = malloc(sizeof(char) * 7); +} + +void free_feierabend(feierabend* fabend) +{ + free(fabend->now); + free(fabend->begin); + free(fabend->worktime); + free(fabend->now_tm); + free(fabend->begin_tm); + free(fabend->work_end_tm); + free(fabend->weekday); + free(fabend->timestr); + fabend->now = NULL; + fabend->begin = NULL; + fabend->worktime = NULL; + fabend->begin_tm = NULL; + fabend->work_end_tm = NULL; + fabend->weekday = NULL; + fabend->timestr = NULL; +} + int main(int argc, char* argv[]) { if (argc < 3 || (argc > 3 && argc < 5)) { @@ -15,120 +57,101 @@ int main(int argc, char* argv[]) return 1; } - time_t* now = malloc(sizeof(time_t)); - time_t* begin = malloc(sizeof(time_t)); - time_t* worktime = malloc(sizeof(time_t)); - struct tm* now_tm = malloc(sizeof(struct tm)); - struct tm* begin_tm = malloc(sizeof(struct tm)); - struct tm* work_end_tm = malloc(sizeof(struct tm)); - char* weekday = malloc(sizeof(char) * 11); - char* timestr = malloc(sizeof(char) * 7); + feierabend* fabend = malloc(sizeof(feierabend)); + init_feierabend(fabend); printf("Version: %s\n\n", PROJECT_VERSION); - time(begin); - localtime_r(begin, begin_tm); - begin_tm->tm_hour = atoi(argv[1]); - begin_tm->tm_min = atoi(argv[2]); - *begin = timelocal(begin_tm); + time(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 = timelocal(fabend->begin_tm); - time(now); - localtime_r(now, now_tm); + time(fabend->now); + localtime_r(fabend->now, fabend->now_tm); if (argc == 5) { - now_tm->tm_hour = atoi(argv[3]); - now_tm->tm_min = atoi(argv[4]); - *now = timelocal(now_tm); + fabend->now_tm->tm_hour = atoi(argv[3]); + fabend->now_tm->tm_min = atoi(argv[4]); + *fabend->now = timelocal(fabend->now_tm); } - get_weekday(now_tm->tm_wday, weekday); + get_weekday(fabend->now_tm->tm_wday, fabend->weekday); printf("%-25s%s %02d.%02d.%04d %02d:%02d %s\n", "Arbeitsbeginn:", - weekday, - begin_tm->tm_mday, - begin_tm->tm_mon + 1, - begin_tm->tm_year + 1900, - begin_tm->tm_hour, - begin_tm->tm_min, - begin_tm->tm_zone); + fabend->weekday, + fabend->begin_tm->tm_mday, + fabend->begin_tm->tm_mon + 1, + fabend->begin_tm->tm_year + 1900, + fabend->begin_tm->tm_hour, + fabend->begin_tm->tm_min, + fabend->begin_tm->tm_zone); printf("\n"); printf("%-25s%s %02d.%02d.%04d %02d:%02d %s\n", "Aktuelle Zeit:", - weekday, - now_tm->tm_mday, - now_tm->tm_mon + 1, - now_tm->tm_year + 1900, - now_tm->tm_hour, - now_tm->tm_min, - now_tm->tm_zone); + fabend->weekday, + fabend->now_tm->tm_mday, + fabend->now_tm->tm_mon + 1, + fabend->now_tm->tm_year + 1900, + fabend->now_tm->tm_hour, + fabend->now_tm->tm_min, + fabend->now_tm->tm_zone); printf("\n"); - *worktime = get_eight_hour_end_worktime(*begin); - localtime_r(worktime, work_end_tm); + *fabend->worktime = get_eight_hour_end_worktime(*fabend->begin); + localtime_r(fabend->worktime, fabend->work_end_tm); printf("%-25s%s %02d.%02d.%04d %02d:%02d %s\n", "Arbeitsende 8 Std:", - weekday, - work_end_tm->tm_mday, - work_end_tm->tm_mon + 1, - work_end_tm->tm_year + 1900, - work_end_tm->tm_hour, - work_end_tm->tm_min, - work_end_tm->tm_zone); - - *worktime = get_ten_hour_end_worktime(*begin); - localtime_r(worktime, work_end_tm); + fabend->weekday, + fabend->work_end_tm->tm_mday, + fabend->work_end_tm->tm_mon + 1, + fabend->work_end_tm->tm_year + 1900, + fabend->work_end_tm->tm_hour, + fabend->work_end_tm->tm_min, + fabend->work_end_tm->tm_zone); + + *fabend->worktime = get_ten_hour_end_worktime(*fabend->begin); + localtime_r(fabend->worktime, fabend->work_end_tm); printf("%-25s%s %02d.%02d.%04d %02d:%02d %s\n", "Arbeitsende 10 Std:", - weekday, - work_end_tm->tm_mday, - work_end_tm->tm_mon + 1, - work_end_tm->tm_year + 1900, - work_end_tm->tm_hour, - work_end_tm->tm_min, - work_end_tm->tm_zone); + fabend->weekday, + fabend->work_end_tm->tm_mday, + fabend->work_end_tm->tm_mon + 1, + fabend->work_end_tm->tm_year + 1900, + fabend->work_end_tm->tm_hour, + fabend->work_end_tm->tm_min, + fabend->work_end_tm->tm_zone); printf("\n"); - *worktime = get_brutto_worktime(*begin, *now); - get_time_str(*worktime, timestr); - printf("%-25s%s\n", "Brutto Arbeitzeit:", timestr); + *fabend->worktime = get_brutto_worktime(*fabend->begin, *fabend->now); + get_time_str(*fabend->worktime, fabend->timestr); + printf("%-25s%s\n", "Brutto Arbeitzeit:", fabend->timestr); - *worktime = get_current_worktime(*begin, *now); - get_time_str(*worktime, timestr); - printf("%-25s%s\n", "Netto Arbeitzeit:", timestr); + *fabend->worktime = get_current_worktime(*fabend->begin, *fabend->now); + get_time_str(*fabend->worktime, fabend->timestr); + printf("%-25s%s\n", "Netto Arbeitzeit:", fabend->timestr); - *worktime = get_brutto_worktime(*begin, *now); - *worktime = get_break_time(*worktime); - get_time_str(*worktime, timestr); - printf("%-25s%s\n", "Aktuelle Pausenzeit:", timestr); + *fabend->worktime = get_brutto_worktime(*fabend->begin, *fabend->now); + *fabend->worktime = get_break_time(*fabend->worktime); + get_time_str(*fabend->worktime, fabend->timestr); + printf("%-25s%s\n", "Aktuelle Pausenzeit:", fabend->timestr); printf("\n"); - *worktime = get_current_worktime_diff_to_end_eight_hour(*begin, *now); - get_time_str(*worktime, timestr); - printf("%-25s%s\n", "Arbeitzeit bis 8 Std:", timestr); - - *worktime = get_current_worktime_diff_to_end_ten_hour(*begin, *now); - get_time_str(*worktime, timestr); - printf("%-25s%s\n", "Arbeitzeit bis 10 Std:", timestr); - - free(now); - now = NULL; - free(begin); - begin = NULL; - free(worktime); - worktime = NULL; - free(now_tm); - now_tm = NULL; - free(begin_tm); - begin_tm = NULL; - free(work_end_tm); - work_end_tm = NULL; - free(weekday); - weekday = NULL; - free(timestr); - timestr = NULL; + *fabend->worktime = get_current_worktime_diff_to_end_eight_hour(*fabend->begin, *fabend->now); + get_time_str(*fabend->worktime, fabend->timestr); + printf("%-25s%s\n", "Arbeitzeit bis 8 Std:", fabend->timestr); + + *fabend->worktime = get_current_worktime_diff_to_end_ten_hour(*fabend->begin, *fabend->now); + get_time_str(*fabend->worktime, fabend->timestr); + printf("%-25s%s\n", "Arbeitzeit bis 10 Std:", fabend->timestr); + + free_feierabend(fabend); + free(fabend); + fabend = NULL; return 0; } \ No newline at end of file -- 2.39.5