Refactor CSV handling: update file names, implement saveListToCSV function, and enhance loadListFromCSV error handling.
This commit is contained in:
Vendored
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
"name": "Debug",
|
"name": "Debug",
|
||||||
"type": "cppdbg",
|
"type": "cppdbg",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"args": ["khkokhot.csv"],
|
"args": ["TestList.csv"],
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"cwd": "${workspaceFolder}",
|
"cwd": "${workspaceFolder}",
|
||||||
"environment": [],
|
"environment": [],
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "users.h"
|
#include "users.h"
|
||||||
|
#include <string.h>
|
||||||
#include <libpq-fe.h>
|
#include <libpq-fe.h>
|
||||||
|
|
||||||
int loadListFromCSV(char* _filename, list_t * _list);
|
int loadListFromCSV(char* _filename, list_t * _list);
|
||||||
|
|||||||
+39
-3
@@ -1,6 +1,5 @@
|
|||||||
#include "db_handler.h"
|
#include "db_handler.h"
|
||||||
|
|
||||||
|
|
||||||
int loadListFromCSV(char *_filename, list_t *_list)
|
int loadListFromCSV(char *_filename, list_t *_list)
|
||||||
{
|
{
|
||||||
FILE *f_in = fopen(_filename, "r");
|
FILE *f_in = fopen(_filename, "r");
|
||||||
@@ -15,13 +14,50 @@ int loadListFromCSV(char *_filename, list_t *_list)
|
|||||||
|
|
||||||
int load_sum = 0;
|
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))
|
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);
|
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);
|
loadPersonToList(_list, _uuid, _name, _surname, _department, _last_event, _total, _avail);
|
||||||
load_sum++;
|
load_sum++;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// vstupni databaze je vadna
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(buffer);
|
||||||
fclose(f_in);
|
fclose(f_in);
|
||||||
return load_sum;
|
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;
|
||||||
|
}
|
||||||
@@ -60,6 +60,7 @@ int main(int argc, char const **argv)
|
|||||||
pthread_mutex_init(&person_list.lock, NULL);
|
pthread_mutex_init(&person_list.lock, NULL);
|
||||||
|
|
||||||
loadListFromCSV(argv[1], &person_list);
|
loadListFromCSV(argv[1], &person_list);
|
||||||
|
saveListToCSV("khohotjorjijer.csv", &person_list);
|
||||||
|
|
||||||
noecho();
|
noecho();
|
||||||
noraw();
|
noraw();
|
||||||
|
|||||||
Reference in New Issue
Block a user