]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
change get time str return char ptr
authorBastian Dehn <hhaalo@arcor.de>
Sat, 14 Feb 2026 10:06:36 +0000 (11:06 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 14 Feb 2026 10:21:52 +0000 (11:21 +0100)
src/feierabend.c
src/time_format.c
src/time_format.h
src/xml.c
tests/time_format_tests.c

index 21b68501bec9bc3280bf4d507eda4d0150f22caa..b98dfe13c29db15a1c765049cfda65f93d0d3bc7 100644 (file)
@@ -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);
index 24d691736282988f04d76b1344650c397625200f..717ac67b0e0508ab0a704342a3480a7c855c3908 100644 (file)
@@ -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)
index 35f26ba60657dff1a40d5027111e7adcd3ae977e..06f3f06d578235850f4a1cc0e38686ab9309feb3 100644 (file)
@@ -4,7 +4,7 @@
 #include <stdint.h>
 #include <time.h>
 
-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);
index d4c290a74e091c00c52c3ddc9fbb1db4e8188ee5..1321cdf4038103a1eecddb5664b97ef3c6987822 100644 (file)
--- 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);
index e34e12d8c4bcb84a4ed376a39db6e73fe29b2698..89341914cdedfa746989d57bed90a7f176e2330d 100644 (file)
 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()