From 091fe43bb2819377fa2bf09aa99f379452df2d25 Mon Sep 17 00:00:00 2001 From: ENGO150 Date: Fri, 18 Nov 2022 19:54:33 +0100 Subject: [PATCH] created some basic code for logs generation I will make more variable etc. tomorrow --- src/logger/lib/logger.c | 49 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/logger/lib/logger.c b/src/logger/lib/logger.c index f6d4607..448c77d 100644 --- a/src/logger/lib/logger.c +++ b/src/logger/lib/logger.c @@ -1,10 +1,53 @@ #include #include +#include +#include +#include +#include +#include +#include + +#include int initLogger(char *directoryPath) { - printf("PATH is: %s\n", directoryPath); + //VARIABLES + struct stat st; + struct dirent * entry; + time_t timeL = time(NULL); + struct tm tm = *localtime(&timeL); + int buffer = 1; + char *filePath = malloc(strlen(directoryPath) + strlen(LOG_FORMAT) + 1); + DIR *dir; - return 0; -} \ No newline at end of file + //CREATE directoryPath DIRECTORY IF IT DOESN'T EXISTS ALREADY + if (stat(directoryPath, &st) == -1) + { + mkdir(directoryPath, 0700); + } + + //COUNT HOW MANY LOGS WERE GENERATED THIS DAY + dir = opendir(directoryPath); + while ((entry = readdir(dir)) != NULL) + { + if (entry -> d_type == DT_REG) + { + if (strcmp(entry -> d_name, ".gitkeep") == 0) continue; + + buffer++; + } + } + + if (buffer > 0xfff) return INVALID_FILE; + + sprintf(filePath, "%s/%04d-%02d-%02d_%03x", directoryPath, tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, buffer); + + //DEALLOCATION + //free(filePath); + closedir(dir); + + return open(filePath, O_WRONLY | O_APPEND | O_CREAT, 0644); +} + +//TODO: fix filePath deallocation somehow \ No newline at end of file