#define MAX_TIME_STR_LENGTH 7
-feierabend* feierabend_init()
+feierabend* _feierabend_init()
{
feierabend* fabend = malloc(sizeof(feierabend));
return fabend;
}
-void feierabend_free(feierabend* fabend)
+void _feierabend_free(feierabend* fabend)
{
free(fabend->now);
fabend->now = NULL;
fabend->max_work_end_tm = NULL;
}
-void print_german_long_date(struct tm* time_info)
+void _print_german_long_date(struct tm* time_info)
{
char* weekday = get_weekday_str(time_info->tm_wday);
weekday = NULL;
}
-void set_time(time_t* value, struct tm* tm_value, int hour, int minutes)
+void _set_time(time_t* value, struct tm* tm_value, int hour, int minutes)
{
time(value);
*value = mktime(tm_value);
}
-int main(int argc, char* argv[])
+void _print_work_begin(feierabend* fabend)
{
- if (argc < 3 || (argc > 3 && argc < 5)) {
- printf("ERROR: %s <begin_hours> <begin_minutes> [<end_hours> <end_minutes>]\n", argv[0]);
- return 1;
- }
-
- feierabend* fabend = feierabend_init();
-
- printf("Version: %s\n\n", PROJECT_VERSION);
-
- set_time(fabend->begin, fabend->begin_tm, atoi(argv[1]), atoi(argv[2]));
-
- time(fabend->now);
- localtime_r(fabend->now, fabend->now_tm);
- if (argc == 5)
- set_time(fabend->now, fabend->now_tm, atoi(argv[3]), atoi(argv[4]));
-
- *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);
+ _print_german_long_date(fabend->begin_tm);
printf("\n");
+}
+void _print_time_now(feierabend* fabend)
+{
printf("%-27s", "Aktuelle Zeit:");
- print_german_long_date(fabend->now_tm);
- printf("\n");
+ _print_german_long_date(fabend->now_tm);
printf("\n");
+}
+void _print_work_end(feierabend* fabend)
+{
printf("%s %02d:%02d %-9s", "Arbeitsende",
SOLL_HOUR,
SOLL_MINUTES,
"Std:");
- print_german_long_date(fabend->work_end_tm);
+ _print_german_long_date(fabend->work_end_tm);
printf("\n");
+}
+void _print_max_work_end(feierabend* fabend)
+{
printf("%-27s", "Arbeitsende 10:00 Std:");
- print_german_long_date(fabend->max_work_end_tm);
- printf("\n");
+ _print_german_long_date(fabend->max_work_end_tm);
printf("\n");
+}
- *fabend->worktime = get_brutto_worktime(*fabend->begin, *fabend->now);
+void _print_brutto_worktime(feierabend* fabend)
+{
char* timestr = malloc(MAX_TIME_STR_LENGTH);
+
+ *fabend->worktime = get_brutto_worktime(*fabend->begin, *fabend->now);
get_time_str(*fabend->worktime, timestr);
printf("%-26s%6s\n", "Brutto Arbeitzeit:", timestr);
+ free(timestr);
+}
+
+void _print_netto_worktime(feierabend* fabend)
+{
+ char* timestr = malloc(MAX_TIME_STR_LENGTH);
+
*fabend->worktime = get_current_worktime(*fabend->begin, *fabend->now);
get_time_str(*fabend->worktime, timestr);
printf("%-26s%6s\n", "Netto Arbeitzeit:", timestr);
+ free(timestr);
+ timestr = NULL;
+}
+
+void _print_current_breaktime(feierabend* fabend)
+{
+ char* timestr = malloc(MAX_TIME_STR_LENGTH);
+
*fabend->worktime = get_brutto_worktime(*fabend->begin, *fabend->now);
*fabend->worktime = get_break_time(*fabend->worktime);
get_time_str(*fabend->worktime, timestr);
printf("%-26s%6s\n", "Aktuelle Pausenzeit:", timestr);
- printf("\n");
+ free(timestr);
+ timestr = NULL;
+}
+
+void _print_time_to_end_worktime(feierabend* fabend)
+{
+ char* timestr = malloc(MAX_TIME_STR_LENGTH);
*fabend->worktime = get_current_worktime_diff_to_end_eight_hour(*fabend->begin, *fabend->now);
get_time_str(*fabend->worktime, timestr);
SOLL_MINUTES,
timestr);
+ free(timestr);
+ timestr = NULL;
+}
+
+void _print_time_to_max_end_worktime(feierabend* fabend)
+{
+ char* timestr = malloc(MAX_TIME_STR_LENGTH);
+
*fabend->worktime = get_current_worktime_diff_to_end_ten_hour(*fabend->begin, *fabend->now);
get_time_str(*fabend->worktime, timestr);
printf("Arbeitzeit bis 10:00 Std: %6s\n", timestr);
- feierabend_free(fabend);
- free(fabend);
- fabend = NULL;
free(timestr);
timestr = NULL;
+}
+
+int main(int argc, char* argv[])
+{
+ if (argc < 3 || (argc > 3 && argc < 5)) {
+ printf("ERROR: %s <begin_hours> <begin_minutes> [<end_hours> <end_minutes>]\n", argv[0]);
+ return 1;
+ }
+
+ feierabend* fabend = _feierabend_init();
+
+ printf("Version: %s\n\n", PROJECT_VERSION);
+
+ _set_time(fabend->begin, fabend->begin_tm, atoi(argv[1]), atoi(argv[2]));
+
+ time(fabend->now);
+ localtime_r(fabend->now, fabend->now_tm);
+ if (argc == 5)
+ _set_time(fabend->now, fabend->now_tm, atoi(argv[3]), atoi(argv[4]));
+
+ *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);
+
+ _print_work_begin(fabend);
+ _print_time_now(fabend);
+ printf("\n");
+
+ _print_work_end(fabend);
+ _print_max_work_end(fabend);
+ printf("\n");
+
+ _print_brutto_worktime(fabend);
+ _print_netto_worktime(fabend);
+ _print_current_breaktime(fabend);
+ printf("\n");
+
+ _print_time_to_end_worktime(fabend);
+ _print_time_to_max_end_worktime(fabend);
+
+ _feierabend_free(fabend);
+ free(fabend);
+ fabend = NULL;
return 0;
}
\ No newline at end of file