From: Bastian Dehn Date: Sat, 14 Feb 2026 08:36:36 +0000 (+0100) Subject: change refactor xml calc X-Git-Tag: 1.3.12^2~27 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=de5ea61a232f3967bc01d8278bf104baf24fe9d0;p=feierabend.git change refactor xml calc --- diff --git a/src/feierabend.h b/src/feierabend.h deleted file mode 100644 index caeb2f8..0000000 --- a/src/feierabend.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef FEIERABEND_H -#define FEIERABEND_H -#include -#include - -typedef struct { - time_t now; - time_t begin; - time_t worktime; - struct tm* now_tm; - struct tm* begin_tm; - struct tm* work_end_tm; - struct tm* max_work_end_tm; -} feierabend; - -feierabend* feierabend_init() -{ - feierabend* fabend = malloc(sizeof(feierabend)); - - if (fabend == NULL) - return NULL; - - fabend->now = 0; - fabend->begin = 0; - fabend->worktime = 0; - fabend->now_tm = malloc(sizeof(struct tm)); - fabend->begin_tm = malloc(sizeof(struct tm)); - fabend->work_end_tm = malloc(sizeof(struct tm)); - fabend->max_work_end_tm = malloc(sizeof(struct tm)); - - return fabend; -} - -void feierabend_free(feierabend* fabend) -{ - free(fabend->begin_tm); - fabend->begin_tm = NULL; - free(fabend->now_tm); - fabend->now_tm = NULL; - free(fabend->work_end_tm); - fabend->work_end_tm = NULL; - free(fabend->max_work_end_tm); - fabend->max_work_end_tm = NULL; -} - -#endif \ No newline at end of file diff --git a/src/xml.c b/src/xml.c index 1ef5a96..e318994 100644 --- a/src/xml.c +++ b/src/xml.c @@ -7,11 +7,9 @@ #include #include #include "xml.h" -#include "feierabend.h" #include "worktime.h" #include "break.h" #include "time_format.h" -#include "feierabend.h" #define MAX_STRING_LENGTH 36 #define CHUCK_SIZE 32 @@ -33,7 +31,7 @@ void free_memFile(memFile* mem) { mem->data = NULL; } -void allocChunk(memFile* mem) +void alloc_chunk(memFile* mem) { mem->size += CHUCK_SIZE; char* tmpmem = realloc(mem->data, sizeof(char) * mem->size); @@ -46,7 +44,7 @@ void allocChunk(memFile* mem) mem->data = tmpmem; } -void shrinkMem(size_t readed, memFile* mem) +void shrink_mem(size_t readed, memFile* mem) { mem->size = readed; char* tmpmem = realloc(mem->data, sizeof(char) * mem->size); @@ -66,7 +64,7 @@ void readStdInIntoMemory(memFile* mem) if (buf == NULL) return; - allocChunk(mem); + alloc_chunk(mem); size_t read_size = 0; uint8_t current_chunk = CHUCK_SIZE; while(fread(buf, sizeof(char), 1, stdin) != 0) { @@ -74,11 +72,11 @@ void readStdInIntoMemory(memFile* mem) read_size++; current_chunk--; if (current_chunk == 0) { - allocChunk(mem); + alloc_chunk(mem); current_chunk = CHUCK_SIZE; } } - shrinkMem(read_size, mem); + shrink_mem(read_size, mem); free(buf); buf = NULL; @@ -140,7 +138,32 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, uint8_t end_min, time_t last_saldo) { - feierabend* fabend = feierabend_init(); + const time_t now = time(NULL); + const struct tm* tmp_now = gmtime(&now); + struct tm begin_tm; + struct tm end_tm; + memcpy(&begin_tm, tmp_now, sizeof(struct tm)); + memcpy(&end_tm, tmp_now, sizeof(struct tm)); + if (date != NULL) { + begin_tm.tm_year = get_year_from_str(date) - 1900; + begin_tm.tm_mon = get_month_from_str(date) - 1; + begin_tm.tm_mday = get_day_from_str(date); + end_tm.tm_year = get_year_from_str(date) - 1900; + end_tm.tm_mon = get_month_from_str(date) - 1; + end_tm.tm_mday = get_day_from_str(date); + } + begin_tm.tm_hour = begin_hour; + begin_tm.tm_min = begin_min; + end_tm.tm_hour = end_hour; + end_tm.tm_min = end_min; + const time_t begin = mktime(&begin_tm); + const time_t end = mktime(&end_tm); + const time_t brutto_worktime = get_brutto_worktime(begin, end); + const time_t netto_worktime = get_current_worktime(begin, end); + const time_t overtime = get_current_worktime_diff_to_end_eight_hour(begin, end); + const time_t breaktime = get_break_time(brutto_worktime); + const time_t updated_saldo = last_saldo + (overtime * -1); + xmlChar* xmlElemName = NULL; xmlChar* xmlElemContent = NULL; @@ -149,18 +172,7 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, free(xmlElemName); xmlElemName = NULL; - time(&fabend->now); - const struct tm* tmp_now = gmtime(&fabend->now); - memcpy(fabend->now_tm, tmp_now, sizeof(struct tm)); - if (date != NULL) { - fabend->now_tm->tm_year = get_year_from_str(date) - 1900; - fabend->now_tm->tm_mon = get_month_from_str(date) - 1; - fabend->now_tm->tm_mday = get_day_from_str(date); - } - fabend->now_tm->tm_hour = end_hour; - fabend->now_tm->tm_min = end_min; - fabend->now = mktime(fabend->now_tm); - char* value = get_short_weekday(fabend->now_tm->tm_wday); + char* value = get_short_weekday(end_tm.tm_wday); xmlElemName = xmlCharStrdup("wochentag"); xmlElemContent = xmlCharStrdup(value); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); @@ -173,9 +185,9 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, value = malloc(sizeof(char) * MAX_STRING_LENGTH); sprintf(value, "%04d-%02d-%02d", - fabend->now_tm->tm_year + 1900, - fabend->now_tm->tm_mon + 1, - fabend->now_tm->tm_mday); + begin_tm.tm_year + 1900, + begin_tm.tm_mon + 1, + begin_tm.tm_mday); xmlElemName = xmlCharStrdup("datum"); xmlElemContent = xmlCharStrdup(value); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); @@ -185,20 +197,9 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - time(&fabend->begin); - const struct tm* tmp_begin = gmtime(&fabend->begin); - memcpy(fabend->begin_tm, tmp_begin, sizeof(struct tm)); - if (date != NULL) { - fabend->begin_tm->tm_year = get_year_from_str(date) - 1900; - fabend->begin_tm->tm_mon = get_month_from_str(date) - 1; - fabend->begin_tm->tm_mday = get_day_from_str(date); - } - fabend->begin_tm->tm_hour = begin_hour; - fabend->begin_tm->tm_min = begin_min; sprintf(value, "%02d:%02d", - fabend->begin_tm->tm_hour, - fabend->begin_tm->tm_min); - fabend->begin = mktime(fabend->begin_tm); + begin_tm.tm_hour, + begin_tm.tm_min); xmlElemName = xmlCharStrdup("begin"); xmlElemContent = xmlCharStrdup(value); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); @@ -208,19 +209,9 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - fabend->worktime = get_eight_hour_end_worktime(fabend->begin); - const struct tm* tmp_work_end = gmtime(&fabend->worktime); - memcpy(fabend->work_end_tm, tmp_work_end, sizeof(struct tm)); - if (date != NULL) { - fabend->work_end_tm->tm_year = get_year_from_str(date) - 1900; - fabend->work_end_tm->tm_mon = get_month_from_str(date) - 1; - fabend->work_end_tm->tm_mday = get_day_from_str(date); - } - fabend->work_end_tm->tm_hour = end_hour; - fabend->work_end_tm->tm_min = end_min; sprintf(value, "%02d:%02d", - fabend->work_end_tm->tm_hour, - fabend->work_end_tm->tm_min); + end_tm.tm_hour, + end_tm.tm_min); xmlElemName = xmlCharStrdup("ende"); xmlElemContent = xmlCharStrdup(value); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); @@ -230,8 +221,6 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - fabend->worktime = get_brutto_worktime(fabend->begin, fabend->now); - time_t breaktime = get_break_time(fabend->worktime); get_time_str(breaktime, value); xmlElemName = xmlCharStrdup("pause"); xmlElemContent = xmlCharStrdup(value); @@ -252,8 +241,7 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - fabend->worktime = get_current_worktime(fabend->begin, fabend->now); - get_time_str(fabend->worktime, value); + get_time_str(netto_worktime, value); xmlElemName = xmlCharStrdup("arbeitszeit"); xmlElemContent = xmlCharStrdup(value); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); @@ -263,8 +251,7 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - fabend->worktime = get_current_worktime_diff_to_end_eight_hour(fabend->begin, fabend->now); - get_time_str_overtime(fabend->worktime, value); + get_time_str_overtime(overtime, value); xmlElemName = xmlCharStrdup("stunden"); xmlElemContent = xmlCharStrdup(value); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); @@ -274,9 +261,7 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, free(xmlElemContent); xmlElemContent = NULL; - fabend->worktime *= -1; - fabend->worktime += last_saldo; - get_time_str(fabend->worktime, value); + get_time_str(updated_saldo, value); xmlElemName = xmlCharStrdup("saldo"); xmlElemContent = xmlCharStrdup(value); xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent); @@ -294,9 +279,6 @@ void writeEntryNode(xmlTextWriterPtr xmlWriter, xmlElemContent = NULL; free(xmlElemName); xmlElemName = NULL; - feierabend_free(fabend); - free(fabend); - fabend = NULL; } void createEntry(uint8_t begin_hour,