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,
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);