diff --git a/lib/utils/strsep_gnu.c b/lib/utils/strsep_gnu.c index edd9e8f..dc8487e 100644 --- a/lib/utils/strsep_gnu.c +++ b/lib/utils/strsep_gnu.c @@ -17,20 +17,26 @@ char * strsep_gnu (char **stringp, const char *delim) { - char *begin, *end; - begin = *stringp; - if (begin == NULL) - return NULL; - /* Find the end of the token. */ - end = begin + strcspn (begin, delim); - if (*end) +#if defined(__APPLE__) || defined(__FreeBSD__) + return strsep(stringp, delim); +#endif /* __APPLE__ or __FreeBSD__ */ + +#if defined(__linux__) + char *begin, *end; + begin = *stringp; + if (begin == NULL) + return NULL; + /* Find the end of the token. */ + end = begin + strcspn (begin, delim); + if (*end) { - /* Terminate the token and set *STRINGP past NUL character. */ - *end++ = '\0'; - *stringp = end; + /* Terminate the token and set *STRINGP past NUL character. */ + *end++ = '\0'; + *stringp = end; } - else - /* No more delimiters; this is the last token. */ - *stringp = NULL; - return begin; + else + /* No more delimiters; this is the last token. */ + *stringp = NULL; + return begin; +#endif /* __linux__ */ } diff --git a/src/client.c b/src/client.c index 9fe0924..2be4b31 100644 --- a/src/client.c +++ b/src/client.c @@ -5,6 +5,9 @@ #include #include #include +#include +#include +#include #include @@ -51,7 +54,20 @@ void cleanup() { // -h static void usage(const char *argv0) { // TODO change this - fprintf(stdout, "use: %s \n", argv0); + printf("Uso: %s\n", argv0); + printf("-h: stampa il presente messaggio d'aiuto.\n"); + printf("-f filename: connettiti al socket AF_UNIX 'filename'.\n"); + printf("-w dirname[,n=0]: invia al server 'n' file nella cartella 'dirname'. Se n=0 o non e' specificato, tenta di inviare tutti i file al server.\n"); + printf("-W file1[,file2]: scrivi sul server una lista di file, separati da virgole.\n"); + printf("-D dirname: specifica la cartella dove scrivere i file espulsi dal server in seguito a capacity misses.\n"); + printf("-r file1[,file2]: leggi dal server una lista di nomi di file, separati da virgole.\n"); + printf("-R [n=0]: leggi dal server 'n' file qualsiasi. Se n=0 o non e' specificato, leggi tutti i file presenti nel server per i quali si hanno i permessi necessari.\n"); + printf("-d dirname: cartella dove scrivere i file letti dal server con i comandi '-r' o '-R'.\n"); + printf("-t time: se specificato, fra le richieste successive al server vi sara' un'attesa di 'time' millisecondi.\n"); + printf("-l file1[,file2]: acquisisci la mutua esclusione su una lista di file, separati da virgole.\n"); + printf("-u file1[,file2]: rilascia la mutua esclusione su una lista di file, separati da virgole.\n"); + printf("-c file1[,file2]: rimuovi dal server una lista di file (se presenti), separati da virgole.\n"); + printf("-p: stampa sullo standard output le informazioni riguardo ogni operazione effettuata.\n"); } // -f @@ -466,6 +482,10 @@ int cmd_f(char *socket) { } int cmd_w(char *dirname, char *Dir, int print) { + if(!dirname) { + errno = EINVAL; + return -1; + } return 0; } diff --git a/src/serverWorker.c b/src/serverWorker.c index fdacb2e..b071811 100644 --- a/src/serverWorker.c +++ b/src/serverWorker.c @@ -14,10 +14,7 @@ #include #include #include - -#if defined(__linux__) #include -#endif /* __linux__ */ int parser(int len, char *command, queueT *queue, long fd_c, taglia_t* taglia, pthread_mutex_t *lock, waiting_t **waiting); @@ -155,17 +152,9 @@ int parser(int len, char *command, queueT *queue, long fd_c, taglia_t* taglia, p char *token2 = NULL; char *token3 = NULL; -#if defined(__APPLE__) || defined(__FreeBSD__) - token = strsep(&string, "|"); - token2 = strsep(&string, "|"); - token3 = strsep(&string, "|"); -#endif /* __APPLE__ or __FreeBSD__ */ -#if defined(__linux__) token = strsep_gnu(&string, "|"); token2 = strsep_gnu(&string, "|"); token3 = strsep_gnu(&string, "|"); -#endif - if(!token) goto _parser_cleanup;