Refactor CSV handling: update file names, implement saveListToCSV function, and enhance loadListFromCSV error handling.

This commit is contained in:
2025-05-13 21:44:21 +02:00
parent 7fa46c2131
commit 7800666839
5 changed files with 44 additions and 6 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
"name": "Debug",
"type": "cppdbg",
"request": "launch",
"args": ["khkokhot.csv"],
"args": ["TestList.csv"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
View File
+1
View File
@@ -8,6 +8,7 @@
#include "main.h"
#include "users.h"
#include <string.h>
#include <libpq-fe.h>
int loadListFromCSV(char* _filename, list_t * _list);
+41 -5
View File
@@ -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;
}
+1
View File
@@ -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();