]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
refactor write xml attribute
authorBastian Dehn <hhaalo@arcor.de>
Sun, 15 Feb 2026 10:59:22 +0000 (11:59 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 15 Feb 2026 10:59:22 +0000 (11:59 +0100)
src/xml.c

index a273306472d919ef2497fc8dc3c1c6b91b1d8af6..2b7d7cedd9dfb26be9b5283069c2657fc26178fd 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -184,6 +184,19 @@ struct tm _init_tm_with_date(const char* date, const uint8_t hour, const uint8_t
        return value;
 }
 
+void _write_attribute(xmlTextWriterPtr xmlWriter, const char* name, char** value)
+{
+       xmlChar* xmlElemName = xmlCharStrdup(name);
+       xmlChar* xmlElemContent = xmlCharStrdup(*value);
+       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
+       free(xmlElemName);
+       xmlElemName = NULL;
+       free(xmlElemContent);
+       xmlElemContent = NULL;
+       free(*value);
+       *value = NULL;
+}
+
 void _write_entry_node(xmlTextWriterPtr xmlWriter,
        const char* date,
        const uint8_t begin_hour,
@@ -211,104 +224,23 @@ void _write_entry_node(xmlTextWriterPtr xmlWriter,
        xmlElemName = NULL;
 
        char* wday_short_str = get_weekday_short_str(end_tm.tm_wday);
-       xmlElemName = xmlCharStrdup("wochentag");
-       xmlElemContent = xmlCharStrdup(wday_short_str);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(wday_short_str);
-       wday_short_str = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-       
+       _write_attribute(xmlWriter, "wochentag", &wday_short_str);
        char* datestr = get_date_str(begin_tm);
-       xmlElemName = xmlCharStrdup("datum");
-       xmlElemContent = xmlCharStrdup(datestr);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(datestr);
-       datestr = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "datum", &datestr);
        char* begin_str = get_time_str_from_tm(begin_tm);
-       xmlElemName = xmlCharStrdup("begin");
-       xmlElemContent = xmlCharStrdup(begin_str);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(begin_str);
-       begin_str = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "begin", &begin_str);
        char* end_str = get_time_str_from_tm(end_tm);
-       xmlElemName = xmlCharStrdup("ende");
-       xmlElemContent = xmlCharStrdup(end_str);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(end_str);
-       end_str = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "ende", &end_str);
        char* breaktimestr = get_time_str(breaktime);
-       xmlElemName = xmlCharStrdup("pause");
-       xmlElemContent = xmlCharStrdup(breaktimestr);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(breaktimestr);
-       breaktimestr = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "pause", &breaktimestr);
        char* solltimestr = get_time_str(SOLL_WORKTIME);
-       xmlElemName = xmlCharStrdup("sollarbeitszeit");
-       xmlElemContent = xmlCharStrdup(solltimestr);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(solltimestr);
-       solltimestr = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "sollarbeitszeit", &solltimestr);
        char* netto_worktimestr = get_time_str(netto_worktime);
-       xmlElemName = xmlCharStrdup("arbeitszeit");
-       xmlElemContent = xmlCharStrdup(netto_worktimestr);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(netto_worktimestr);
-       netto_worktimestr = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "arbeitszeit", &netto_worktimestr);
        char* overtimestr = get_time_overtime_str(overtime);
-       xmlElemName = xmlCharStrdup("stunden");
-       xmlElemContent = xmlCharStrdup(overtimestr);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(overtimestr);
-       overtimestr = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "stunden", &overtimestr);
        char* updated_saldostr = get_time_str(updated_saldo);
-       xmlElemName = xmlCharStrdup("saldo");
-       xmlElemContent = xmlCharStrdup(updated_saldostr);
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(updated_saldostr);
-       updated_saldostr = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-
+       _write_attribute(xmlWriter, "saldo", &updated_saldostr);
        xmlTextWriterEndElement(xmlWriter);
 
        free(xmlElemContent);