From 05f62dfc6e9e7cda4555aedeeeada52e7d81b4b1 Mon Sep 17 00:00:00 2001 From: rick Date: Sat, 20 Feb 2021 16:53:46 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20fonction=20pour=20v=C3=A9rifier=20si=20?= =?UTF-8?q?commande=20native=20ou=20pas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/boitoutil/essential_shell.c | 40 +++++++++++++++++++++------------ src/boitoutil/essential_shell.h | 3 ++- src/shellOpt.c | 3 ++- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/boitoutil/essential_shell.c b/src/boitoutil/essential_shell.c index 30ce10b..726044e 100644 --- a/src/boitoutil/essential_shell.c +++ b/src/boitoutil/essential_shell.c @@ -47,22 +47,34 @@ void error(int code, int type, char *message) } /** - * change_dir(): fonction pour vérifier si la commande est un cd - * @args: la liste des arguments de la commade + * native_command(): vérifie si la commande entrée par l’utilisateur + * est implémenté dans le terminal + * @command: la commande et ses arguments à vérifier * - * Return: 0 si ce n’est pas un cd, 1 sinon + * Vérifie si la commande entrée par l’utilisateur est native. + * Si elle l’est, le programme appelle la fonction pour exécuter la commande + * en lui passant en paramètre les arguments de la commande. + * + * Return: 0 si la commande n’est pas native + * 1 si la commande est native */ -int change_dir(char *args[]) +int native_command(char *command[]) { - int ret = 0; /* 1 si cd */ - - if (!strncmp(args[0], "cd", 2)) - { - ret = 1; - if (chdir(args[1])) - error(2, NON_FATAL_ERROR, "Un nom de fichier au lieu d’un dossier \ - a pu etre passé en paramètres."); - } - + int ret = 1; /* 0 si commande non native */ + if (!strncmp(command[0], "cd", 2)) + change_dir(command[1]); + else + ret = 0; return ret; } + +/** + * change_dir(): fonction pour implémenter la commande cd + * @dir: le répertoire à ouvrir + */ +void change_dir(char *dir) +{ + if (chdir(dir)) + error(2, NON_FATAL_ERROR, "Un nom de fichier au lieu d’un dossier \ + a pu etre passé en paramètres."); +} diff --git a/src/boitoutil/essential_shell.h b/src/boitoutil/essential_shell.h index 42f2c64..19e444d 100644 --- a/src/boitoutil/essential_shell.h +++ b/src/boitoutil/essential_shell.h @@ -15,6 +15,7 @@ #define NON_FATAL_ERROR 0 void error(int code, int type, char *message); -int change_dir(char *args[]); +int native_command(char *command[]); +void change_dir(char *dir); #endif diff --git a/src/shellOpt.c b/src/shellOpt.c index 5bb6f28..281228e 100644 --- a/src/shellOpt.c +++ b/src/shellOpt.c @@ -27,6 +27,7 @@ int main() int pid, index = 0, end = 0; /* end permet de savoir quand s’arreter */ int my_pipe[2]; + setenv("HELLO", "test", 1); if (pipe(my_pipe) == -1) error(1, FATAL_ERROR, NULL); @@ -44,7 +45,7 @@ int main() while (commands[index] != NULL) { parse_string(commands[index], args, ' '); - if (!change_dir(args)) /* si la commande demandée n’est pas un cd */ + if (!native_command(args)) /* si la commande demandée n’est pas native */ { pid = fork(); if (!pid) /* le fils */