diff --git a/src/parser/parser.c b/src/parser/parser.c index 91d5afc..85d4b7f 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -41,22 +41,7 @@ char* get_input() void parse_char(char *args[], char find) { char *user_input = get_input(); - char *token = strtok(user_input, &find); - - int i = 0; - while (token != NULL && i < MAX_LENGTH) - { - strcpy(args[i], token); - i++; - token = strtok(NULL, &find); - } - - // le dernier argument doit être NULL - // car il est vide et provoque une erreur si non NULL - free(args[i]); - args[i] = NULL; - - free(token); + tok_space(user_input, args, find); free(user_input); } @@ -64,14 +49,13 @@ void parse_char(char *args[], char find) * tok_space(): Découpe la chaine orig et met chaque mot dans le tableau dest * @orig: chaine à découper * @dest: tableau de string où sera stocker les mots + * @find: caractère à utilise pour parser la chaine orig * - * La chaine de caractères orig est découper avec les espaces et chaques - * mots sont mis dans le tableau dest. + * La chaine de caractères orig est découpée selon le caractère find + * et chaques mots sont mis dans le tableau dest. */ -void tok_space(char *orig, char *dest[]) +void tok_space(char *orig, char *dest[], char find) { - char find = ' '; - char *token = strtok(orig, &find); int i = 0; diff --git a/src/parser/parser.h b/src/parser/parser.h index afc9c5a..ac147b3 100644 --- a/src/parser/parser.h +++ b/src/parser/parser.h @@ -12,6 +12,6 @@ char* get_input(); void parse_char(char *args[], char find); -void tok_space(char *args,char *commands[]); +void tok_space(char *args,char *commands[], char find); #endif diff --git a/src/shellOpt.c b/src/shellOpt.c index da5ac70..c9bd2d1 100644 --- a/src/shellOpt.c +++ b/src/shellOpt.c @@ -39,7 +39,7 @@ int main() pid = fork(); if (!pid) { - tok_space(args[index], command); + tok_space(args[index], command, ' '); if (args[1] != NULL) { if (args[index+1] == NULL)