]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
change fixed str to define const
authorBastian Dehn <hhaalo@arcor.de>
Mon, 16 Feb 2026 17:40:06 +0000 (18:40 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Mon, 16 Feb 2026 17:40:06 +0000 (18:40 +0100)
src/xml.c

index 31aa841ff7c2046a4d9d36e41e8e8a009a813786..d07ad4ed97c2bb34d82a3702d5a200bce8c58bef 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
 #define MAX_STRING_LENGTH 36
 #define CHUCK_SIZE 32
 
+#define XMLVERSION "1.0"
+#define UTF8 "UTF-8"
+#define TIMEACOUNT "zeitkonto"
+#define ENTRY "eintrag"
+#define WEEKDAY "wochentag"
+#define DATE "date"
+#define BEGIN "begin"
+#define END "end"
+#define BREAK "pause"
+#define SOLLWORKTIME "sollarbeitszeit"
+#define WORKTIME "arbeitszeit"
+#define HOURS "stunden"
+#define BEGINSALDO "anfangssaldo"
+#define SALDO "saldo"
+
+#define BEGINSALDOXPATH "/zeitkonto/@anfangssaldo"
+#define SALDOXPATH "/zeitkonto/eintrag[last()]/@saldo"
+
 mem_file_t* _init_mem() {
        mem_file_t* mem = malloc(sizeof(mem_file_t));
 
@@ -89,7 +107,7 @@ char* _read_last_saldo(mem_file_t* mem)
                return NULL;
 
        xmlInitParser();
-       xmlDocPtr xmldoc = xmlReadMemory(mem->data, mem->size, NULL, "UTF-8", 0);
+       xmlDocPtr xmldoc = xmlReadMemory(mem->data, mem->size, NULL, UTF8, 0);
 
        if (xmldoc == NULL) {
                printf("ERROR: could not open memstream\n");
@@ -97,16 +115,16 @@ char* _read_last_saldo(mem_file_t* mem)
        }
 
        xmlXPathContextPtr xmlcontext = xmlXPathNewContext(xmldoc);
-       xmlChar* expr = xmlCharStrdup("/zeitkonto/eintrag[last()]/@saldo");
-       xmlXPathObjectPtr xmlnode = xmlXPathEvalExpression(expr, xmlcontext);
+       xmlChar* xpath = xmlCharStrdup(SALDOXPATH);
+       xmlXPathObjectPtr xmlnode = xmlXPathEvalExpression(xpath, xmlcontext);
 
        if (xmlnode->nodesetval == NULL || xmlnode->nodesetval->nodeTab == NULL) {
-               free(expr);
-               expr = NULL;
+               free(xpath);
+               xpath = NULL;
                xmlXPathFreeObject(xmlnode);
                xmlnode = NULL;
-               expr = xmlCharStrdup("/zeitkonto/@anfangssaldo");
-               xmlnode = xmlXPathEvalExpression(expr, xmlcontext);
+               xpath = xmlCharStrdup(BEGINSALDOXPATH);
+               xmlnode = xmlXPathEvalExpression(xpath, xmlcontext);
        }
 
        if (xmlnode->nodesetval->nodeTab == NULL) {
@@ -115,8 +133,8 @@ char* _read_last_saldo(mem_file_t* mem)
                xmldoc = NULL;
                xmlCleanupParser();
 
-               free(expr);
-               expr = NULL;
+               free(xpath);
+               xpath = NULL;
                xmlXPathFreeObject(xmlnode);
                xmlnode = NULL;
                xmlXPathFreeContext(xmlcontext);
@@ -128,8 +146,8 @@ char* _read_last_saldo(mem_file_t* mem)
                (char*) xmlnode->nodesetval->nodeTab[0]->children->content,
                MAX_STRING_LENGTH);
 
-       free(expr);
-       expr = NULL;
+       free(xpath);
+       xpath = NULL;
        xmlXPathFreeObject(xmlnode);
        xmlnode = NULL;
        xmlFreeDoc(xmldoc);
@@ -153,7 +171,7 @@ void _copy_node_attributes(xmlTextReaderPtr xmlreader, xmlTextWriterPtr xmlwrite
 
 void _copy_entry(xmlTextReaderPtr xmlreader, xmlTextWriterPtr xmlwriter)
 {
-       xmlChar* xmlElemContent = xmlCharStrdup("eintrag");
+       xmlChar* xmlElemContent = xmlCharStrdup(ENTRY);
        xmlNodePtr xmlnode = xmlTextReaderCurrentNode(xmlreader);
 
        if (xmlnode->type == XML_ELEMENT_NODE && xmlStrcmp(xmlnode->name, xmlElemContent) == 0) {
@@ -223,26 +241,26 @@ void _write_entry_node(xmlTextWriterPtr xmlWriter,
        const time_t breaktime = get_break_time(brutto_worktime);
        const time_t updated_saldo = last_saldo + (overtime * -1);
 
-       _write_element(xmlWriter, "eintrag");
+       _write_element(xmlWriter, ENTRY);
 
        char* wday_short_str = get_weekday_short_str(end_tm.tm_wday);
-       _write_attribute(xmlWriter, "wochentag", &wday_short_str);
+       _write_attribute(xmlWriter, WEEKDAY, &wday_short_str);
        char* datestr = get_date_str(begin_tm);
-       _write_attribute(xmlWriter, "datum", &datestr);
+       _write_attribute(xmlWriter, DATE, &datestr);
        char* begin_str = get_time_str_from_int(begin_tm.tm_hour, begin_tm.tm_min);
-       _write_attribute(xmlWriter, "begin", &begin_str);
+       _write_attribute(xmlWriter, BEGIN, &begin_str);
        char* end_str = get_time_str_from_int(end_tm.tm_hour, end_tm.tm_min);
-       _write_attribute(xmlWriter, "ende", &end_str);
+       _write_attribute(xmlWriter, END, &end_str);
        char* breaktimestr = get_time_str(breaktime);
-       _write_attribute(xmlWriter, "pause", &breaktimestr);
+       _write_attribute(xmlWriter, BREAK, &breaktimestr);
        char* solltimestr = get_time_str(SOLL_WORKTIME);
-       _write_attribute(xmlWriter, "sollarbeitszeit", &solltimestr);
+       _write_attribute(xmlWriter, SOLLWORKTIME, &solltimestr);
        char* netto_worktimestr = get_time_str(netto_worktime);
-       _write_attribute(xmlWriter, "arbeitszeit", &netto_worktimestr);
+       _write_attribute(xmlWriter, WORKTIME, &netto_worktimestr);
        char* overtimestr = get_time_overtime_str(overtime);
-       _write_attribute(xmlWriter, "stunden", &overtimestr);
+       _write_attribute(xmlWriter, HOURS, &overtimestr);
        char* updated_saldostr = get_time_str(updated_saldo);
-       _write_attribute(xmlWriter, "saldo", &updated_saldostr);
+       _write_attribute(xmlWriter, SALDO, &updated_saldostr);
 
        xmlTextWriterEndElement(xmlWriter);
 }
@@ -258,12 +276,12 @@ void init_time_acount(const uint8_t hour, const uint8_t min)
        free(xmlElemContent);
        xmlElemContent = NULL;
 
-       xmlTextWriterStartDocument(xmlWriter, "1.0", "UTF-8", NULL);
+       xmlTextWriterStartDocument(xmlWriter, XMLVERSION, UTF8, NULL);
 
-       _write_element(xmlWriter, "zeitkonto");
+       _write_element(xmlWriter, TIMEACOUNT);
 
        char* timestr = get_time_str_from_int(hour, min);
-       _write_attribute(xmlWriter, "anfangssaldo", &timestr);
+       _write_attribute(xmlWriter, BEGINSALDO, &timestr);
 
        xmlTextWriterEndElement(xmlWriter);
        xmlTextWriterEndDocument(xmlWriter);
@@ -303,17 +321,17 @@ void add_entry(const char* date,
        free(xmlElemContent);
        xmlElemContent = NULL;
 
-       xmlTextReaderPtr xmlreader = xmlReaderForMemory(file_content->data, file_content->size, NULL, "UTF-8", 0);
+       xmlTextReaderPtr xmlreader = xmlReaderForMemory(file_content->data, file_content->size, NULL, UTF8, 0);
        xmlNodePtr xmlnode = NULL;
 
-       xmlTextWriterStartDocument(xmlwriter, "1.0", "UTF-8", NULL);
+       xmlTextWriterStartDocument(xmlwriter, XMLVERSION, UTF8, NULL);
 
        xmlTextReaderRead(xmlreader);
        xmlnode = xmlTextReaderCurrentNode(xmlreader);
        xmlTextWriterStartElement(xmlwriter, xmlnode->name);
        _copy_node_attributes(xmlreader, xmlwriter);
 
-       xmlElemContent = xmlCharStrdup("eintrag");
+       xmlElemContent = xmlCharStrdup(ENTRY);
        while (xmlTextReaderRead(xmlreader) == 1) {
                xmlnode = xmlTextReaderCurrentNode(xmlreader);
                if (xmlnode->type == XML_ELEMENT_NODE && xmlStrcmp(xmlnode->name, xmlElemContent) == 0) {
@@ -374,10 +392,10 @@ void merge(const char* dir)
        free(xmlElemContent);
        xmlElemContent = NULL;
 
-       xmlTextReaderPtr xmlreader = xmlReaderForFile(files->gl_pathv[0], "UTF-8", 0);
+       xmlTextReaderPtr xmlreader = xmlReaderForFile(files->gl_pathv[0], UTF8, 0);
        xmlNodePtr xmlnode = NULL;
 
-       xmlTextWriterStartDocument(xmlwriter, "1.0", "UTF-8", NULL);
+       xmlTextWriterStartDocument(xmlwriter, XMLVERSION, UTF8, NULL);
 
        xmlTextReaderRead(xmlreader);
        xmlnode = xmlTextReaderCurrentNode(xmlreader);
@@ -388,7 +406,7 @@ void merge(const char* dir)
        xmlreader = NULL;
 
        for (size_t i = 0; i < files->gl_pathc; i++) {
-               xmlreader = xmlReaderForFile(files->gl_pathv[i], "UTF-8", 0);
+               xmlreader = xmlReaderForFile(files->gl_pathv[i], UTF8, 0);
                while (xmlTextReaderRead(xmlreader) == 1) {
                        _copy_entry(xmlreader, xmlwriter);
                }