From 78006668390313a82f0f16e25e04f762727e3542 Mon Sep 17 00:00:00 2001 From: "DLABAL, Eduard" Date: Tue, 13 May 2025 21:44:21 +0200 Subject: [PATCH] Refactor CSV handling: update file names, implement saveListToCSV function, and enhance loadListFromCSV error handling. --- .vscode/launch.json | 2 +- khkokhot.csv => TestList.csv | 0 include/db_handler.h | 1 + src/db_handler.c | 46 ++++++++++++++++++++++++++++++++---- src/main.c | 1 + 5 files changed, 44 insertions(+), 6 deletions(-) rename khkokhot.csv => TestList.csv (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index 67c7659..f66d40d 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,7 +5,7 @@ "name": "Debug", "type": "cppdbg", "request": "launch", - "args": ["khkokhot.csv"], + "args": ["TestList.csv"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], diff --git a/khkokhot.csv b/TestList.csv similarity index 100% rename from khkokhot.csv rename to TestList.csv diff --git a/include/db_handler.h b/include/db_handler.h index 549e08d..94f5fc3 100644 --- a/include/db_handler.h +++ b/include/db_handler.h @@ -8,6 +8,7 @@ #include "main.h" #include "users.h" +#include #include int loadListFromCSV(char* _filename, list_t * _list); diff --git a/src/db_handler.c b/src/db_handler.c index c9d99a0..def5a80 100644 --- a/src/db_handler.c +++ b/src/db_handler.c @@ -1,6 +1,5 @@ #include "db_handler.h" - int loadListFromCSV(char *_filename, list_t *_list) { FILE *f_in = fopen(_filename, "r"); @@ -15,13 +14,50 @@ int loadListFromCSV(char *_filename, list_t *_list) int load_sum = 0; - char _name[128], _surname[128]; uint32_t _department; uint16_t _uuid; time_t _last_event, _total; BYTE _avail; + char _name[128], _surname[128]; + uint32_t _department; + uint16_t _uuid; + time_t _last_event, _total; + BYTE _avail; while (-1 != getline(&buffer, &buffer_size, f_in)) { - sscanf(buffer, "%hu,%127[^,],%127[^,],%u,%ld,%ld,%hhu", &_uuid, _name, _surname, &_department, &_last_event, &_total, &_avail); - loadPersonToList(_list, _uuid, _name, _surname, _department, _last_event, _total, _avail); - load_sum++; + if (sscanf(buffer, "%hu,%127[^,],%127[^,],%u,%ld,%ld,%hhu", &_uuid, _name, _surname, &_department, &_last_event, &_total, &_avail) == 7) + { + loadPersonToList(_list, _uuid, _name, _surname, _department, _last_event, _total, _avail); + load_sum++; + } + else + { + // vstupni databaze je vadna + exit(-1); + } } + free(buffer); fclose(f_in); return load_sum; +} + +int saveListToCSV(char *_filename, list_t *_list) +{ + FILE *f_out = fopen(_filename, "w"); + if (f_out == NULL) + { + // doprasit + exit(-1); + } + + node_t *cursor = _list->head; + while (cursor != NULL) + { + if (cursor->user.uuid != 0) + { + fprintf(f_out, "%hu,%s,%s,%u,%ld,%ld,%hhu", cursor->user.uuid, cursor->user.name, cursor->user.surname, cursor->user.department, cursor->user.last_time_event, cursor->user.total, cursor->user.available); + } + cursor = cursor->next; + } + + int save_sum = 0; + + fclose(f_out); + return save_sum; } \ No newline at end of file diff --git a/src/main.c b/src/main.c index ab1feb8..cb75e19 100644 --- a/src/main.c +++ b/src/main.c @@ -60,6 +60,7 @@ int main(int argc, char const **argv) pthread_mutex_init(&person_list.lock, NULL); loadListFromCSV(argv[1], &person_list); + saveListToCSV("khohotjorjijer.csv", &person_list); noecho(); noraw();