#include <libxml/parser.h>
#include <libxml/xpath.h>
#include <libxml/xmlreader.h>
+#include <stdio.h>
#include <glob.h>
#include "xml.h"
#include "feierabend.h"
#define MAX_STRING_LENGTH 36
+void init_memFile(memFile* mem) {
+ mem->data = malloc(sizeof(char*));
+ mem->size = malloc(sizeof(size_t));
+}
+
+void free_memFile(memFile* mem) {
+ free(*mem->data);
+ free(mem->data);
+ free(mem->size);
+ mem->data = NULL;
+ mem->size = NULL;
+}
+
void init_feierabend(feierabend* fabend)
{
fabend->now = malloc(sizeof(time_t));
fabend->timestr = NULL;
}
+void readFileIntoMemory(const char* file_path, memFile* mem)
+{
+ char* buf = malloc(sizeof(char));
+ FILE* memstream = open_memstream(mem->data, mem->size);
+ FILE* file = fopen(file_path, "r");
+
+ while(fread(buf, sizeof(char), 1, file) != 0) {
+ fwrite(buf, sizeof(char), 1, memstream);
+ }
+ fclose(file);
+ fclose(memstream);
+
+ free(buf);
+ buf = NULL;
+}
+
void initTimeAcount()
{
xmlChar* xmlElemName = NULL;
int end_min,
const char* file_path)
{
+ memFile* fileContent = malloc(sizeof(memFile));
+ init_memFile(fileContent);
+ readFileIntoMemory(file_path, fileContent);
+
char* saldostr = malloc(sizeof(char) * MAX_STRING_LENGTH);
memset(saldostr, 0, MAX_STRING_LENGTH);
readLastSaldo(file_path, saldostr);
free(xmlElemContent);
xmlElemContent = NULL;
- xmlTextReaderPtr xmlreader = xmlReaderForFile(file_path, "UTF-8", 0);
+ xmlTextReaderPtr xmlreader = xmlReaderForMemory(*fileContent->data, *fileContent->size, NULL, "UTF-8", 0);
xmlNodePtr xmlnode = NULL;
xmlTextWriterStartDocument(xmlwriter, "1.0", "UTF-8", NULL);
xmlCleanupCharEncodingHandlers();
xmlDictCleanup();
+ free_memFile(fileContent);
+ free(fileContent);
+ fileContent = NULL;
free(xmlElemContent);
xmlElemContent = NULL;
free(saldo);