From 6bf73e8d18d3cfac18f7e207fb7a1521dabc5542 Mon Sep 17 00:00:00 2001 From: elvis Date: Fri, 29 Apr 2022 22:31:08 +0200 Subject: [PATCH] working -w --- lib/api/api.c | 1 + scripts/test1.sh | 2 +- src/client.c | 52 +++++++++++++++++++++++++++--------------------- 3 files changed, 31 insertions(+), 24 deletions(-) diff --git a/lib/api/api.c b/lib/api/api.c index f384732..bc1a00c 100644 --- a/lib/api/api.c +++ b/lib/api/api.c @@ -541,6 +541,7 @@ int writeFile(const char* pathname, const char* dirname) { size_t lung = 0; size_t incr = 0; size_t size = 0; + if ((fdi = open(pathname, O_RDONLY)) == -1) { perror("open"); return -1; diff --git a/scripts/test1.sh b/scripts/test1.sh index 4a8d863..6ab29d0 100644 --- a/scripts/test1.sh +++ b/scripts/test1.sh @@ -3,6 +3,6 @@ exit 0 -./client -t 200 -f socket -w test -D Wdir -W test/filepesante -r test/filepesante -d Rdir -R n=3 -l test/filepesante -u test/filepesante -c test/filepesante -p +./client -t 200 -f socket -w testFiles -D Wdir -W testFiles/6/f1 -r testFiles/6/f1 -d Rdir -R n=3 -l testFiles/6/f1 -u testFiles/6/f1 -c testFiles/6/f1 -p exit 0 diff --git a/src/client.c b/src/client.c index f15d424..d087b15 100644 --- a/src/client.c +++ b/src/client.c @@ -533,6 +533,9 @@ int cmd_w(char *dirname, char *Dir, int print) { fhandle = fts_open(&firstArg, FTS_COMFOLLOW, &compare); + char **listFiles = calloc(0, sizeof(char *)); + int numFiles = 0; + if(fhandle != NULL) { // we check for num == 0 so that -1 yields all files in folder while (num!=0 && (parent = fts_read(fhandle)) != NULL) { @@ -540,28 +543,10 @@ int cmd_w(char *dirname, char *Dir, int print) { while (num!=0 && (child != NULL)) { // for all children in folder if(child->fts_info == FTS_F) { // if child is a file - char *tmp = malloc(child->fts_namelen + child->fts_pathlen + 2); - snprintf(tmp, child->fts_namelen + child->fts_pathlen + 2, "%s/%s", child->fts_path, child->fts_name); - - if(print) { - printf("%s [", tmp); - } - - // we send the file with the other function but set print to - // 0 since we do the printing before - int r = cmd_W(tmp, Dir, 0); - - if(print && !r) { - printf("Esito: ok"); - } else if (print && r) { - printf("Esito: errore"); - } - - if(print) { - printf("]\n"); - } - - free(tmp); + ++numFiles; + listFiles = realloc(listFiles, numFiles * sizeof(char *)); + listFiles[numFiles-1] = calloc(child->fts_namelen + child->fts_pathlen + 2, sizeof(char)); + snprintf(listFiles[numFiles-1], child->fts_namelen + child->fts_pathlen + 2, "%s/%s", child->fts_path, child->fts_name); --num; } child = child->fts_link; @@ -569,6 +554,27 @@ int cmd_w(char *dirname, char *Dir, int print) { } fts_close(fhandle); } + + for(int i=0; i