]> gitweb.hhaalo.de Git - feierabend.git/commitdiff
change order func and private first
authorBastian Dehn <hhaalo@arcor.de>
Sat, 14 Feb 2026 11:29:26 +0000 (12:29 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 14 Feb 2026 11:29:26 +0000 (12:29 +0100)
src/time_format.c
src/validate.c
src/xml.c

index eb5819bea7f8fd95ed898775406457637ad0c3c5..c7cb4f4627eb6ee66e505303c4bf667dc79f1aad 100644 (file)
@@ -122,25 +122,6 @@ char* get_time_str_from_tm(struct tm time)
        return timestr;
 }
 
-uint16_t get_year_from_str(const char* date)
-{
-       uint16_t value = 0;
-       char* str = malloc(sizeof(char) * 11);
-
-       if (str == NULL)
-               return 0;
-
-       strncpy(str, date, 11);
-       char* str_first_pos = str;
-
-       str = strtok(str, "-");
-       value = atoi(str);
-
-       free(str_first_pos);
-       str_first_pos = NULL;
-       return value;
-}
-
 time_t get_seconds_from_str(const char* timestr)
 {
        char* str = malloc(sizeof(char) * 7);
@@ -171,6 +152,25 @@ time_t get_seconds_from_str(const char* timestr)
        return seconds;
 }
 
+uint16_t get_year_from_str(const char* date)
+{
+       uint16_t value = 0;
+       char* str = malloc(sizeof(char) * 11);
+
+       if (str == NULL)
+               return 0;
+
+       strncpy(str, date, 11);
+       char* str_first_pos = str;
+
+       str = strtok(str, "-");
+       value = atoi(str);
+
+       free(str_first_pos);
+       str_first_pos = NULL;
+       return value;
+}
+
 uint8_t get_month_from_str(const char* date)
 {
        uint8_t value = 0;
index 5120791823c6962a390c88f103864d8a279406b2..0c4e30a061e0c989d9b38ea21b034ec695b01031 100644 (file)
@@ -6,7 +6,7 @@
 #define HOUR_REGEX "^([0-9]|1[0-9]|2[0-3])$"
 #define MINUTE_REGEX "^([0-9]|[1-5][0-9])$"
 
-bool validate_string(const char* str, const char* regex_pattern)
+bool _validate_string(const char* str, const char* regex_pattern)
 {
        regex_t regex;
 
@@ -22,15 +22,15 @@ bool validate_string(const char* str, const char* regex_pattern)
 
 bool validate_datestring(const char* date)
 {
-       return validate_string(date, DATE_REGEX);
+       return _validate_string(date, DATE_REGEX);
 }
 
 bool validate_hourstring(const char* hour)
 {
-       return validate_string(hour, HOUR_REGEX);
+       return _validate_string(hour, HOUR_REGEX);
 }
 
 bool validate_minutestring(const char* minutes)
 {
-       return validate_string(minutes, MINUTE_REGEX);
+       return _validate_string(minutes, MINUTE_REGEX);
 }
\ No newline at end of file
index 66e50638954f1d470cd067bd02ddc9aaa1d1cbba..28b114571b748c83e745e58a76b656ead0a13299 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -14,7 +14,7 @@
 #define MAX_STRING_LENGTH 36
 #define CHUCK_SIZE 32
 
-memFile* init_memFile() {
+memFile* _init_memFile() {
        memFile* mem = malloc(sizeof(memFile));
 
        if (mem == NULL)
@@ -31,7 +31,7 @@ void free_memFile(memFile* mem) {
        mem->data = NULL;
 }
 
-void alloc_chunk(memFile* mem)
+void _alloc_chunk(memFile* mem)
 {
        mem->size += CHUCK_SIZE;
        char* tmpmem = realloc(mem->data, sizeof(char) * mem->size);
@@ -44,7 +44,7 @@ void alloc_chunk(memFile* mem)
        mem->data = tmpmem;
 }
 
-void shrink_mem(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);
@@ -57,14 +57,14 @@ void shrink_mem(size_t readed, memFile* mem)
        mem->data = tmpmem;
 }
 
-void read_stdin_into_memory(memFile* mem)
+void _read_stdin_into_memory(memFile* mem)
 {
        char* buf = malloc(sizeof(char));
 
        if (buf == NULL)
                return;
        
-       alloc_chunk(mem);
+       _alloc_chunk(mem);
        size_t read_size = 0;
        uint8_t current_chunk = CHUCK_SIZE;
        while(fread(buf, sizeof(char), 1, stdin) != 0) {
@@ -72,65 +72,101 @@ void read_stdin_into_memory(memFile* mem)
                read_size++;
                current_chunk--;
                if (current_chunk == 0) {
-                       alloc_chunk(mem);
+                       _alloc_chunk(mem);
                        current_chunk = CHUCK_SIZE;
                }
        }
-       shrink_mem(read_size, mem);
+       _shrink_mem(read_size, mem);
 
        free(buf);
        buf = NULL;
 }
 
-void init_time_acount()
+char* _read_last_saldo(memFile* mem)
 {
-       xmlChar* xmlElemName = NULL;
-       xmlChar* xmlElemContent = NULL;
+       char* saldostr = malloc(sizeof(char) * MAX_STRING_LENGTH);
+       if (saldostr == NULL)
+               return NULL;
 
-       xmlCharEncodingHandlerPtr encodingHandler = xmlGetCharEncodingHandler(XML_CHAR_ENCODING_UTF8);
-       xmlOutputBufferPtr xmloutbuffer = xmlOutputBufferCreateFd(1, encodingHandler);
-       xmlTextWriterPtr xmlWriter = xmlNewTextWriter(xmloutbuffer);
-       xmlTextWriterSetIndent(xmlWriter, 8);
-       xmlElemContent = xmlCharStrdup("\t");
-       xmlTextWriterSetIndentString(xmlWriter, xmlElemContent);
-       free(xmlElemContent);
-       xmlElemContent = NULL;
+       xmlInitParser();
+       xmlDocPtr xmldoc = xmlReadMemory(mem->data, mem->size, NULL, "UTF-8", 0);
 
-       xmlTextWriterStartDocument(xmlWriter, "1.0", "UTF-8", NULL);
+       if (xmldoc == NULL) {
+               printf("ERROR: could not open memstream\n");
+               exit(EXIT_FAILURE);
+       }
 
-       xmlElemName = xmlCharStrdup("zeitkonto");
-       xmlTextWriterStartElement(xmlWriter, xmlElemName);
-       free(xmlElemName);
-       xmlElemName = NULL;
+       xmlXPathContextPtr xmlcontext = xmlXPathNewContext(xmldoc);
+       xmlChar* expr = xmlCharStrdup("/zeitkonto/eintrag[last()]/@saldo");
+       xmlXPathObjectPtr xmlnode = xmlXPathEvalExpression(expr, xmlcontext);
 
-       xmlElemName = xmlCharStrdup("anfangssaldo");
-       xmlElemContent = xmlCharStrdup("00:00");
-       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
-       free(xmlElemName);
-       xmlElemName = NULL;
-       free(xmlElemContent);
-       xmlElemContent = NULL;
+       if (xmlnode->nodesetval == NULL || xmlnode->nodesetval->nodeTab == NULL) {
+               free(expr);
+               expr = NULL;
+               xmlXPathFreeObject(xmlnode);
+               xmlnode = NULL;
+               expr = xmlCharStrdup("/zeitkonto/@anfangssaldo");
+               xmlnode = xmlXPathEvalExpression(expr, xmlcontext);
+       }
 
-       xmlTextWriterEndElement(xmlWriter);
-       xmlTextWriterEndDocument(xmlWriter);
+       if (xmlnode->nodesetval->nodeTab == NULL) {
+               printf("ERROR: could not find an saldo\n");
+               xmlFreeDoc(xmldoc);
+               xmldoc = NULL;
+               xmlCleanupParser();
 
-       xmlFreeTextWriter(xmlWriter);
-       xmlWriter = NULL;
+               free(expr);
+               expr = NULL;
+               xmlXPathFreeObject(xmlnode);
+               xmlnode = NULL;
+               xmlXPathFreeContext(xmlcontext);
+               xmlcontext = NULL;
+               exit(EXIT_FAILURE);
+       }
 
-#ifdef LIBXML2_15
+       strncpy(saldostr,
+               (char*) xmlnode->nodesetval->nodeTab[0]->children->content,
+               MAX_STRING_LENGTH);
+
+       free(expr);
+       expr = NULL;
+       xmlXPathFreeObject(xmlnode);
+       xmlnode = NULL;
+       xmlFreeDoc(xmldoc);
+       xmldoc = NULL;
+       xmlXPathFreeContext(xmlcontext);
+       xmlcontext = NULL;
        xmlCleanupParser();
-#else
-       xmlDictCleanup();
-       xmlCleanupCharEncodingHandlers();
-#endif
+
+       return saldostr;
+}
+
+void _copy_node_attributes(xmlTextReaderPtr xmlreader, xmlTextWriterPtr xmlwriter)
+{
+       int attrCount = xmlTextReaderAttributeCount(xmlreader);
+       for (int i = 0; i < attrCount; i++) {
+               xmlTextReaderMoveToNextAttribute(xmlreader);
+               xmlNodePtr xmlnode = xmlTextReaderCurrentNode(xmlreader);
+               xmlTextWriterWriteAttribute(xmlwriter, xmlnode->name, xmlnode->children[0].content);
+       }
+}
+
+void _copy_entry(xmlTextReaderPtr xmlreader, xmlTextWriterPtr xmlwriter)
+{
+       xmlChar* xmlElemContent = xmlCharStrdup("eintrag");
+       xmlNodePtr xmlnode = xmlTextReaderCurrentNode(xmlreader);
+
+       if (xmlnode->type == XML_ELEMENT_NODE && xmlStrcmp(xmlnode->name, xmlElemContent) == 0) {
+               xmlTextWriterStartElement(xmlwriter, xmlnode->name);
+               _copy_node_attributes(xmlreader, xmlwriter);
+               xmlTextWriterEndElement(xmlwriter);
+       }
 
        free(xmlElemContent);
        xmlElemContent = NULL;
-       free(xmlElemName);
-       xmlElemName = NULL;
 }
 
-void write_entry_node(xmlTextWriterPtr xmlWriter,
+void _write_entry_node(xmlTextWriterPtr xmlWriter,
        const char* date,
        uint8_t begin_hour,
        uint8_t begin_min,
@@ -279,68 +315,52 @@ void write_entry_node(xmlTextWriterPtr xmlWriter,
        xmlElemName = NULL;
 }
 
-void read_last_saldo(memFile* mem, char* value)
+void init_time_acount()
 {
-       xmlInitParser();
-       xmlDocPtr xmldoc = xmlReadMemory(mem->data, mem->size, NULL, "UTF-8", 0);
-
-       if (xmldoc == NULL) {
-               printf("ERROR: could not open memstream\n");
-               exit(EXIT_FAILURE);
-       }
+       xmlChar* xmlElemName = NULL;
+       xmlChar* xmlElemContent = NULL;
 
-       xmlXPathContextPtr xmlcontext = xmlXPathNewContext(xmldoc);
-       xmlChar* expr = xmlCharStrdup("/zeitkonto/eintrag[last()]/@saldo");
-       xmlXPathObjectPtr xmlnode = xmlXPathEvalExpression(expr, xmlcontext);
+       xmlCharEncodingHandlerPtr encodingHandler = xmlGetCharEncodingHandler(XML_CHAR_ENCODING_UTF8);
+       xmlOutputBufferPtr xmloutbuffer = xmlOutputBufferCreateFd(1, encodingHandler);
+       xmlTextWriterPtr xmlWriter = xmlNewTextWriter(xmloutbuffer);
+       xmlTextWriterSetIndent(xmlWriter, 8);
+       xmlElemContent = xmlCharStrdup("\t");
+       xmlTextWriterSetIndentString(xmlWriter, xmlElemContent);
+       free(xmlElemContent);
+       xmlElemContent = NULL;
 
-       if (xmlnode->nodesetval == NULL || xmlnode->nodesetval->nodeTab == NULL) {
-               free(expr);
-               expr = NULL;
-               xmlXPathFreeObject(xmlnode);
-               xmlnode = NULL;
-               expr = xmlCharStrdup("/zeitkonto/@anfangssaldo");
-               xmlnode = xmlXPathEvalExpression(expr, xmlcontext);
-       }
+       xmlTextWriterStartDocument(xmlWriter, "1.0", "UTF-8", NULL);
 
-       if (xmlnode->nodesetval->nodeTab == NULL) {
-               printf("ERROR: could not find an saldo\n");
-               xmlFreeDoc(xmldoc);
-               xmldoc = NULL;
-               xmlCleanupParser();
+       xmlElemName = xmlCharStrdup("zeitkonto");
+       xmlTextWriterStartElement(xmlWriter, xmlElemName);
+       free(xmlElemName);
+       xmlElemName = NULL;
 
-               free(expr);
-               expr = NULL;
-               xmlXPathFreeObject(xmlnode);
-               xmlnode = NULL;
-               xmlXPathFreeContext(xmlcontext);
-               xmlcontext = NULL;
-               exit(EXIT_FAILURE);
-       }
+       xmlElemName = xmlCharStrdup("anfangssaldo");
+       xmlElemContent = xmlCharStrdup("00:00");
+       xmlTextWriterWriteAttribute(xmlWriter, xmlElemName, xmlElemContent);
+       free(xmlElemName);
+       xmlElemName = NULL;
+       free(xmlElemContent);
+       xmlElemContent = NULL;
 
-       strncpy(value,
-               (char*) xmlnode->nodesetval->nodeTab[0]->children->content,
-               MAX_STRING_LENGTH);
+       xmlTextWriterEndElement(xmlWriter);
+       xmlTextWriterEndDocument(xmlWriter);
 
-       free(expr);
-       expr = NULL;
-       xmlXPathFreeObject(xmlnode);
-       xmlnode = NULL;
-       xmlFreeDoc(xmldoc);
-       xmldoc = NULL;
-       xmlXPathFreeContext(xmlcontext);
-       xmlcontext = NULL;
+       xmlFreeTextWriter(xmlWriter);
+       xmlWriter = NULL;
 
+#ifdef LIBXML2_15
        xmlCleanupParser();
-}
+#else
+       xmlDictCleanup();
+       xmlCleanupCharEncodingHandlers();
+#endif
 
-void copy_node_attributes(xmlTextReaderPtr xmlreader, xmlTextWriterPtr xmlwriter)
-{
-       int attrCount = xmlTextReaderAttributeCount(xmlreader);
-       for (int i = 0; i < attrCount; i++) {
-               xmlTextReaderMoveToNextAttribute(xmlreader);
-               xmlNodePtr xmlnode = xmlTextReaderCurrentNode(xmlreader);
-               xmlTextWriterWriteAttribute(xmlwriter, xmlnode->name, xmlnode->children[0].content);
-       }
+       free(xmlElemContent);
+       xmlElemContent = NULL;
+       free(xmlElemName);
+       xmlElemName = NULL;
 }
 
 void add_entry(const char* date,
@@ -349,15 +369,10 @@ void add_entry(const char* date,
        uint8_t end_hour,
        uint8_t end_min)
 {
-       memFile* fileContent = init_memFile();
-       read_stdin_into_memory(fileContent);
-
-       char* saldostr = malloc(sizeof(char) * MAX_STRING_LENGTH);
-       if (saldostr == NULL)
-               return;
+       memFile* fileContent = _init_memFile();
+       _read_stdin_into_memory(fileContent);
 
-       memset(saldostr, 0, MAX_STRING_LENGTH);
-       read_last_saldo(fileContent, saldostr);
+       char* saldostr = _read_last_saldo(fileContent);
        const time_t saldo = get_seconds_from_str(saldostr);
 
        xmlChar* xmlElemContent = NULL;
@@ -378,19 +393,19 @@ void add_entry(const char* date,
        xmlTextReaderRead(xmlreader);
        xmlnode = xmlTextReaderCurrentNode(xmlreader);
        xmlTextWriterStartElement(xmlwriter, xmlnode->name);
-       copy_node_attributes(xmlreader, xmlwriter);
+       _copy_node_attributes(xmlreader, xmlwriter);
 
        xmlElemContent = xmlCharStrdup("eintrag");
        while (xmlTextReaderRead(xmlreader) == 1) {
                xmlnode = xmlTextReaderCurrentNode(xmlreader);
                if (xmlnode->type == XML_ELEMENT_NODE && xmlStrcmp(xmlnode->name, xmlElemContent) == 0) {
                        xmlTextWriterStartElement(xmlwriter, xmlnode->name);
-                       copy_node_attributes(xmlreader, xmlwriter);
+                       _copy_node_attributes(xmlreader, xmlwriter);
                        xmlTextWriterEndElement(xmlwriter);
                }
        }
 
-       write_entry_node(xmlwriter, date, begin_hour, begin_min, end_hour, end_min, saldo);
+       _write_entry_node(xmlwriter, date, begin_hour, begin_min, end_hour, end_min, saldo);
        xmlTextWriterEndElement(xmlwriter);
        xmlTextWriterEndDocument(xmlwriter);
 
@@ -415,21 +430,6 @@ void add_entry(const char* date,
        saldostr = NULL;
 }
 
-void copy_entry(xmlTextReaderPtr xmlreader, xmlTextWriterPtr xmlwriter)
-{
-       xmlChar* xmlElemContent = xmlCharStrdup("eintrag");
-       xmlNodePtr xmlnode = xmlTextReaderCurrentNode(xmlreader);
-
-       if (xmlnode->type == XML_ELEMENT_NODE && xmlStrcmp(xmlnode->name, xmlElemContent) == 0) {
-               xmlTextWriterStartElement(xmlwriter, xmlnode->name);
-               copy_node_attributes(xmlreader, xmlwriter);
-               xmlTextWriterEndElement(xmlwriter);
-       }
-
-       free(xmlElemContent);
-       xmlElemContent = NULL;
-}
-
 void merge(const char* dir)
 {
        glob_t* files = malloc(sizeof(glob_t));
@@ -465,7 +465,7 @@ void merge(const char* dir)
        xmlTextReaderRead(xmlreader);
        xmlnode = xmlTextReaderCurrentNode(xmlreader);
        xmlTextWriterStartElement(xmlwriter, xmlnode->name);
-       copy_node_attributes(xmlreader, xmlwriter);
+       _copy_node_attributes(xmlreader, xmlwriter);
        xmlTextReaderClose(xmlreader);
        xmlFreeTextReader(xmlreader);
        xmlreader = NULL;
@@ -473,7 +473,7 @@ void merge(const char* dir)
        for (size_t i = 0; i < files->gl_pathc; i++) {
                xmlreader = xmlReaderForFile(files->gl_pathv[i], "UTF-8", 0);
                while (xmlTextReaderRead(xmlreader) == 1) {
-                       copy_entry(xmlreader, xmlwriter);
+                       _copy_entry(xmlreader, xmlwriter);
                }
                xmlTextReaderClose(xmlreader);
                xmlFreeTextReader(xmlreader);