]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
change refactor xml calc
authorBastian Dehn <hhaalo@arcor.de>
Sat, 14 Feb 2026 08:36:36 +0000 (09:36 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 14 Feb 2026 08:36:36 +0000 (09:36 +0100)
src/feierabend.h [deleted file]
src/xml.c

diff --git a/src/feierabend.h b/src/feierabend.h
deleted file mode 100644 (file)
index caeb2f8..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef FEIERABEND_H
-#define FEIERABEND_H
-#include <stdlib.h>
-#include <time.h>
-
-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
index 1ef5a96b1ae3931efd7d8ff1f91c3f3ae09a1c21..e318994d33ecfa5ba9148778ba6b37cbfbc7a1d7 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -7,11 +7,9 @@
 #include <stdio.h>
 #include <glob.h>
 #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,