From: Bastian Dehn Date: Sat, 14 Feb 2026 10:06:36 +0000 (+0100) Subject: change get time str return char ptr X-Git-Tag: 1.3.12^2~17 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=7140a0b498bfb1a76f41eb21ae4f4e60402b7f9f;p=feierabend.git change get time str return char ptr --- diff --git a/src/feierabend.c b/src/feierabend.c index 21b6850..b98dfe1 100644 --- a/src/feierabend.c +++ b/src/feierabend.c @@ -57,13 +57,8 @@ void _print_max_work_end(const struct tm max_work_end_tm) void _print_brutto_worktime(const time_t begin, const time_t end) { - char* timestr = malloc(MAX_TIME_STR_LENGTH); - - if (timestr == NULL) - return; - const time_t butto_worktime = get_brutto_worktime(begin, end); - get_time_str(butto_worktime, timestr); + char* timestr = get_time_str(butto_worktime); printf("%-26s%6s\n", "Brutto Arbeitzeit:", timestr); free(timestr); @@ -72,13 +67,8 @@ void _print_brutto_worktime(const time_t begin, const time_t end) void _print_netto_worktime(const time_t begin, const time_t end) { - char* timestr = malloc(MAX_TIME_STR_LENGTH); - - if (timestr == NULL) - return; - const time_t netto_worktime = get_current_worktime(begin, end); - get_time_str(netto_worktime, timestr); + char* timestr = get_time_str(netto_worktime); printf("%-26s%6s\n", "Netto Arbeitzeit:", timestr); free(timestr); @@ -87,14 +77,9 @@ void _print_netto_worktime(const time_t begin, const time_t end) void _print_current_breaktime(const time_t begin, const time_t end) { - char* timestr = malloc(MAX_TIME_STR_LENGTH); - - if (timestr == NULL) - return; - const time_t brutto_worktime = get_brutto_worktime(begin, end); const time_t break_time = get_break_time(brutto_worktime); - get_time_str(break_time, timestr); + char* timestr = get_time_str(break_time); printf("%-26s%6s\n", "Aktuelle Pausenzeit:", timestr); free(timestr); @@ -103,13 +88,8 @@ void _print_current_breaktime(const time_t begin, const time_t end) void _print_time_to_end_worktime(const time_t begin, const time_t end) { - char* timestr = malloc(MAX_TIME_STR_LENGTH); - - if (timestr == NULL) - return; - const time_t diff_to_end = get_current_worktime_diff_to_end_eight_hour(begin, end); - get_time_str(diff_to_end, timestr); + char* timestr = get_time_str(diff_to_end); printf("Arbeitzeit bis %02d:%02d Std: %6s\n", SOLL_HOUR, SOLL_MINUTES, @@ -121,13 +101,8 @@ void _print_time_to_end_worktime(const time_t begin, const time_t end) void _print_time_to_max_end_worktime(const time_t begin, const time_t end) { - char* timestr = malloc(MAX_TIME_STR_LENGTH); - - if (timestr == NULL) - return; - const time_t diff_to_end = get_current_worktime_diff_to_end_ten_hour(begin, end); - get_time_str(diff_to_end, timestr); + char* timestr = get_time_str(diff_to_end); printf("Arbeitzeit bis 10:00 Std: %6s\n", timestr); free(timestr); diff --git a/src/time_format.c b/src/time_format.c index 24d6917..717ac67 100644 --- a/src/time_format.c +++ b/src/time_format.c @@ -5,8 +5,7 @@ #define ONE_HOUR 3600 #define MINUTE 60 - -#define MAX_TIME_STR_LENGTH 7 +#define MAX_TIME_STR_LENGTH 9 char* strdup(const char* str) { @@ -20,21 +19,27 @@ char* strdup(const char* str) return new_str; } -void get_time_str(time_t timediff, char* timestr) +char* get_time_str(time_t timediff) { - memset(timestr, 0, MAX_TIME_STR_LENGTH); int8_t hour = timediff / ONE_HOUR; int16_t rest_minutes = timediff % ONE_HOUR; int8_t minutes = rest_minutes / MINUTE; + char* timestr = malloc(sizeof(char) * MAX_TIME_STR_LENGTH); + if (timestr == NULL) + return NULL; + + memset(timestr, 0, MAX_TIME_STR_LENGTH); + if (timediff < 0) { hour *= -1; minutes *= -1; sprintf(timestr, "-%02d:%02d", hour, minutes); - return; + return timestr; } sprintf(timestr, "%02d:%02d", hour, minutes); + return timestr; } void get_time_str_overtime(time_t timediff, char* timestr) diff --git a/src/time_format.h b/src/time_format.h index 35f26ba..06f3f06 100644 --- a/src/time_format.h +++ b/src/time_format.h @@ -4,7 +4,7 @@ #include #include -void get_time_str(time_t timediff, char* timestr); +char* get_time_str(time_t timediff); void get_time_str_overtime(time_t timediff, char* timestr); time_t get_seconds_from_string(const char* timestr); char* get_weekday_str(uint8_t wday); diff --git a/src/xml.c b/src/xml.c index d4c290a..1321cdf 100644 --- a/src/xml.c +++ b/src/xml.c @@ -221,31 +221,34 @@ void write_entry_node(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - get_time_str(breaktime, value); + char* breaktimestr = get_time_str(breaktime); xmlElemName = xmlCharStrdup("pause"); - xmlElemContent = xmlCharStrdup(value); + xmlElemContent = xmlCharStrdup(breaktimestr); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); - memset(value, 0, MAX_STRING_LENGTH); + free(breaktimestr); + breaktimestr = NULL; free(xmlElemName); xmlElemName = NULL; free(xmlElemContent); xmlElemContent = NULL; - get_time_str(SOLL_WORKTIME, value); + char* solltimestr = get_time_str(SOLL_WORKTIME); xmlElemName = xmlCharStrdup("sollarbeitszeit"); - xmlElemContent = xmlCharStrdup(value); + xmlElemContent = xmlCharStrdup(solltimestr); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); - memset(value, 0, MAX_STRING_LENGTH); + free(solltimestr); + solltimestr = NULL; free(xmlElemName); xmlElemName = NULL; free(xmlElemContent); xmlElemContent = NULL; - get_time_str(netto_worktime, value); + char* netto_worktimestr = get_time_str(netto_worktime); xmlElemName = xmlCharStrdup("arbeitszeit"); - xmlElemContent = xmlCharStrdup(value); + xmlElemContent = xmlCharStrdup(netto_worktimestr); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); - memset(value, 0, MAX_STRING_LENGTH); + free(netto_worktimestr); + netto_worktimestr = NULL; free(xmlElemName); xmlElemName = NULL; free(xmlElemContent); @@ -261,11 +264,12 @@ void write_entry_node(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - get_time_str(updated_saldo, value); + char* updated_saldostr = get_time_str(updated_saldo); xmlElemName = xmlCharStrdup("saldo"); - xmlElemContent = xmlCharStrdup(value); + xmlElemContent = xmlCharStrdup(updated_saldostr); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); - memset(value, 0, MAX_STRING_LENGTH); + free(updated_saldostr); + updated_saldostr = NULL; free(xmlElemName); xmlElemName = NULL; free(xmlElemContent); diff --git a/tests/time_format_tests.c b/tests/time_format_tests.c index e34e12d..8934191 100644 --- a/tests/time_format_tests.c +++ b/tests/time_format_tests.c @@ -10,55 +10,37 @@ void get_zero_hour_and_fifteen_minutes() { time_t time = 900; - char* timestring = malloc(sizeof(char) * 7); - - if (timestring == NULL) - return; - - memset(timestring, 0, 7); - get_time_str(time, timestring); + char* timestr = get_time_str(time); - assert_string_equal(timestring, "00:15"); + assert_string_equal(timestr, "00:15"); - free(timestring); - timestring = NULL; + free(timestr); + timestr = NULL; } void get_five_hour_fourty_five() { time_t time = 20700; - char* timestring = malloc(sizeof(char) * 7); - - if (timestring == NULL) - return; - memset(timestring, 0, 7); - - get_time_str(time, timestring); + char* timestr = get_time_str(time); - assert_string_equal(timestring, "05:45"); + assert_string_equal(timestr, "05:45"); - free(timestring); - timestring = NULL; + free(timestr); + timestr = NULL; } void get_minus_five_minutes() { time_t time = -300; - char* timestring = malloc(sizeof(char) * 7); - - if (timestring == NULL) - return; - - memset(timestring, 0, 7); - get_time_str(time, timestring); + char* timestr = get_time_str(time); - assert_string_equal(timestring, "-00:05"); + assert_string_equal(timestr, "-00:05"); - free(timestring); - timestring = NULL; + free(timestr); + timestr = NULL; } void get_zero_hour_and_fifteen_minutes_overtime()