Changement noms fonctions
This commit is contained in:
parent
56fdea8ed2
commit
fc85ceef5d
3 changed files with 49 additions and 35 deletions
|
@ -31,22 +31,22 @@ char* get_input()
|
|||
}
|
||||
|
||||
/**
|
||||
* parse_char(): Récupère l’entrée de l’utilisateur avant de la parser
|
||||
* get_command(): Récupère l’entrée de l’utilisateur avant de la parser
|
||||
* @args: Tableau de string
|
||||
* @find: caractère utilisé pour parser
|
||||
*
|
||||
* Récupère l’entrée de l’utilisateur avant de la parser avec le caractère
|
||||
* find. Chaque string sera mise dans une case de args.
|
||||
*/
|
||||
void parse_char(char *args[], char find)
|
||||
void get_command(char *args[], char find)
|
||||
{
|
||||
char *user_input = get_input();
|
||||
tok_space(user_input, args, find);
|
||||
parse_string(user_input, args, find);
|
||||
free(user_input);
|
||||
}
|
||||
|
||||
/**
|
||||
* tok_space(): Découpe la chaine orig et met chaque mot dans le tableau dest
|
||||
* parse_string(): 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
|
||||
|
@ -54,7 +54,7 @@ void parse_char(char *args[], char find)
|
|||
* 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[], char find)
|
||||
void parse_string(char *orig, char *dest[], char find)
|
||||
{
|
||||
char *token = strtok(orig, &find);
|
||||
|
||||
|
|
|
@ -9,9 +9,10 @@
|
|||
# define _PARSER_H_
|
||||
|
||||
#define MAX_LENGTH 200 /* taille maximum des tableaux utilisés */
|
||||
#define SHELL rishtik
|
||||
|
||||
char* get_input();
|
||||
void parse_char(char *args[], char find);
|
||||
void tok_space(char *args,char *commands[], char find);
|
||||
void get_command(char *args[], char find);
|
||||
void parse_string(char *args,char *commands[], char find);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -29,44 +29,57 @@ int main()
|
|||
command[i] = (char *) calloc(MAX_LENGTH, sizeof(char));
|
||||
}
|
||||
|
||||
parse_char(args, '|');
|
||||
get_command(args, '|');
|
||||
|
||||
int index = 0;
|
||||
while (strcmp(args[0], "exit"))
|
||||
{
|
||||
while (args[index] != NULL)
|
||||
{
|
||||
pid = fork();
|
||||
if (!pid)
|
||||
if (strncmp(args[index], "cd", 2))
|
||||
{
|
||||
tok_space(args[index], command, ' ');
|
||||
if (args[1] != NULL)
|
||||
pid = fork();
|
||||
if (!pid)
|
||||
{
|
||||
if (args[index+1] == NULL)
|
||||
dup2(my_pipe[0], STDIN_FILENO);
|
||||
else if (index == 0)
|
||||
dup2(my_pipe[1], STDOUT_FILENO);
|
||||
/*else {
|
||||
dup2(my_pipe[0], STDIN_FILENO);
|
||||
dup2(my_pipe[1], STDOUT_FILENO);
|
||||
}*/
|
||||
close(my_pipe[0]);
|
||||
close(my_pipe[1]);
|
||||
}
|
||||
parse_string(args[index], command, ' ');
|
||||
if (args[1] != NULL)
|
||||
{
|
||||
if (args[index+1] == NULL)
|
||||
dup2(my_pipe[0], STDIN_FILENO);
|
||||
else if (index == 0)
|
||||
dup2(my_pipe[1], STDOUT_FILENO);
|
||||
/*else {
|
||||
dup2(my_pipe[0], STDIN_FILENO);
|
||||
dup2(my_pipe[1], STDOUT_FILENO);
|
||||
}*/
|
||||
close(my_pipe[0]);
|
||||
close(my_pipe[1]);
|
||||
}
|
||||
|
||||
execvp(command[0], command);
|
||||
return 0;
|
||||
execvp(command[0], command);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (args[index + 1] == NULL)
|
||||
{
|
||||
close(my_pipe[1]);
|
||||
close(my_pipe[0]);
|
||||
waitpid(pid, NULL, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (args[index + 1] == NULL)
|
||||
parse_string(args[index], command, ' ');
|
||||
execvp(command[0], command);
|
||||
for (int i = 0; i < MAX_LENGTH; i++)
|
||||
{
|
||||
close(my_pipe[1]);
|
||||
close(my_pipe[0]);
|
||||
waitpid(pid, NULL, 0);
|
||||
free(command[i]);
|
||||
command[i] = (char *) calloc(MAX_LENGTH, sizeof(char));
|
||||
}
|
||||
index++;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < MAX_LENGTH; i++)
|
||||
|
@ -76,7 +89,7 @@ int main()
|
|||
args[i] = (char *) calloc(MAX_LENGTH, sizeof(char));
|
||||
command[i] = (char *) calloc(MAX_LENGTH, sizeof(char));
|
||||
}
|
||||
parse_char(args, '|');
|
||||
get_command(args, '|');
|
||||
if (pipe(my_pipe) == -1)
|
||||
{
|
||||
printf("erreur sur le pipe");
|
||||
|
|
Loading…
Reference in a new issue