]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
add init xml with saldo
authorBastian Dehn <hhaalo@arcor.de>
Mon, 16 Feb 2026 15:54:12 +0000 (16:54 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 16 Feb 2026 16:59:53 +0000 (17:59 +0100)
src/feierabendxml.c
src/time_format.c
src/time_format.h
src/xml.c
src/xml.h
tests/time_format_tests.c

index 2bf94b98e1668d27ede68f39bf7ad3d6aa144a3e..79c6c003eade8cf5106f622f236f392a1552a069 100644 (file)
@@ -13,7 +13,17 @@ int main(const int argc, const char* argv[])
        }
 
        if (strcmp(argv[1], "init") == 0) {
-               init_time_acount();
+               if (argc == 2) {
+                       init_time_acount(0, 0);
+                       return 0;
+               }
+
+               if (argc < 4) {
+                       printf("ERROR: %s init [<salod_hour> <saldo_min>]\n", argv[0]);
+                       return 1;
+               }
+
+               init_time_acount(atoi(argv[2]), atoi(argv[3]));
                return 0;
        }
 
index f546b97c868990f3fc4e06743f37b7c7c29df453..2937803ab940d0a239d1a23e7cdad796e015b66a 100644 (file)
@@ -122,6 +122,19 @@ char* get_time_str_from_tm(const struct tm time)
        return timestr;
 }
 
+char* get_time_str_from_int(const uint8_t hour, const uint8_t min)
+{
+       char* timestr = malloc(sizeof(char) * MAX_TIME_STR_LENGTH);
+       if (timestr == NULL)
+               return NULL;
+
+       memset(timestr, 0, MAX_TIME_STR_LENGTH);
+
+       sprintf(timestr, "%02d:%02d", hour, min);
+
+       return timestr;
+}
+
 time_t get_seconds_from_str(const char* timestr)
 {
        char* str = malloc(sizeof(char) * 7);
index 2317c3c11b010f273c295b2ab7488cd1dae48e1e..313e6b46e7260a37b7fdc0ce49911598326adcda 100644 (file)
@@ -10,6 +10,7 @@ char* get_weekday_str(const uint8_t wday);
 char* get_weekday_short_str(const uint8_t wday);
 char* get_date_str(const struct tm date);
 char* get_time_str_from_tm(const struct tm time);
+char* get_time_str_from_int(const uint8_t hour, const uint8_t min);
 
 time_t get_seconds_from_str(const char* timestr);
 uint16_t get_year_from_str(const char* date);
index af87c366a99c19dfeff8653bc8793cb95e606b04..a903f25bd64cd9dd34e350e91ae35834462a717a 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -247,7 +247,7 @@ void _write_entry_node(xmlTextWriterPtr xmlWriter,
        xmlTextWriterEndElement(xmlWriter);
 }
 
-void init_time_acount()
+void init_time_acount(const uint8_t hour, const uint8_t min)
 {
        xmlCharEncodingHandlerPtr encodingHandler = xmlGetCharEncodingHandler(XML_CHAR_ENCODING_UTF8);
        xmlOutputBufferPtr xmloutbuffer = xmlOutputBufferCreateFd(1, encodingHandler);
@@ -262,13 +262,8 @@ void init_time_acount()
 
        _write_element(xmlWriter, "zeitkonto");
 
-       xmlChar* xmlElemName = xmlCharStrdup("anfangssaldo");
-       xmlElemContent = xmlCharStrdup("00:00");
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
+       char* timestr = get_time_str_from_int(hour, min);
+       _write_attribute(xmlWriter, "anfangssaldo", &timestr);
 
        xmlTextWriterEndElement(xmlWriter);
        xmlTextWriterEndDocument(xmlWriter);
@@ -285,8 +280,6 @@ void init_time_acount()
 
        free(xmlElemContent);
        xmlElemContent = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
 }
 
 void add_entry(const char* date,
index a6381b32cc38bee7a94a3c43405c4a445f47db14..9a6bb8ecf669f4b84114c978f42d7fa08ae16ff0 100644 (file)
--- a/src/xml.h
+++ b/src/xml.h
@@ -7,7 +7,7 @@ typedef struct {
        size_t size;
 } mem_file_t;
 
-void init_time_acount();
+void init_time_acount(const uint8_t hour, const uint8_t min);
 void add_entry(const char* date,
        const uint8_t begin_hour,
        const uint8_t begin_min,
index 05c069a37d46c4287f012233af2da130609b5447..45acc287831c4ce22c6d45c8a1779bc0e4f1dad0 100644 (file)
@@ -311,6 +311,26 @@ void get_time_str_from_tm_test()
        timestr = NULL;
 }
 
+void get_time_str_from_four_nine_test()
+{
+       char* timestr = get_time_str_from_int(4, 9);
+
+       assert_string_equal(timestr, "04:09");
+
+       free(timestr),
+       timestr = NULL;
+}
+
+void get_time_str_from_twenty_three_fity_nine_test()
+{
+       char* timestr = get_time_str_from_int(23, 59);
+
+       assert_string_equal(timestr, "23:59");
+
+       free(timestr),
+       timestr = NULL;
+}
+
 int main()
 {
        const struct CMUnitTest tests[] = {
@@ -342,7 +362,9 @@ int main()
                cmocka_unit_test(get_month_from_date_test),
                cmocka_unit_test(get_dat_from_date_test),
                cmocka_unit_test(get_date_str_from_tm_test),
-               cmocka_unit_test(get_time_str_from_tm_test)
+               cmocka_unit_test(get_time_str_from_tm_test),
+               cmocka_unit_test(get_time_str_from_four_nine_test),
+               cmocka_unit_test(get_time_str_from_twenty_three_fity_nine_test)
        };
 
        return cmocka_run_group_tests(tests, NULL, NULL);