Changement noms fonctions

This commit is contained in:
rick 2021-02-17 10:51:41 +01:00
parent 56fdea8ed2
commit fc85ceef5d
Signed by: Rick
GPG Key ID: 2B593F087240EE99
3 changed files with 49 additions and 35 deletions

View File

@ -31,22 +31,22 @@ char* get_input()
}
/**
* parse_char(): Récupère lentrée de lutilisateur avant de la parser
* get_command(): Récupère lentrée de lutilisateur avant de la parser
* @args: Tableau de string
* @find: caractère utilisé pour parser
*
* Récupère lentrée de lutilisateur 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 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);

View File

@ -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

View File

@ -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;
}
else
{
if (args[index + 1] == NULL)
{
close(my_pipe[1]);
close(my_pipe[0]);
waitpid(pid, NULL, 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);
}
}
index++;
}
else
{
parse_string(args[index], command, ' ');
execvp(command[0], command);
for (int i = 0; i < MAX_LENGTH; i++)
{
free(command[i]);
command[i] = (char *) calloc(MAX_LENGTH, sizeof(char));
}
}
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");