]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
chnage all into one struct
authorBastian Dehn <hhaalo@arcor.de>
Thu, 13 Jun 2024 15:34:12 +0000 (17:34 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 13 Jun 2024 15:34:12 +0000 (17:34 +0200)
src/main.c

index 14318aeeb9acc3106bceef8dba17f8cca9b6b641..566f412a0250f0e1386f32ddefe45897c57f0328 100644 (file)
@@ -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