Ajout fonction pour vérifier si commande native ou pas

This commit is contained in:
rick 2021-02-20 16:53:46 +01:00
parent 70d155811d
commit 05f62dfc6e
Signed by: Rick
GPG key ID: 2B593F087240EE99
3 changed files with 30 additions and 16 deletions

View file

@ -47,22 +47,34 @@ void error(int code, int type, char *message)
} }
/** /**
* change_dir(): fonction pour vérifier si la commande est un cd * native_command(): vérifie si la commande entrée par lutilisateur
* @args: la liste des arguments de la commade * est implémenté dans le terminal
* @command: la commande et ses arguments à vérifier
* *
* Return: 0 si ce nest pas un cd, 1 sinon * Vérifie si la commande entrée par lutilisateur est native.
* Si elle lest, 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 nest pas native
* 1 si la commande est native
*/ */
int change_dir(char *args[]) int native_command(char *command[])
{ {
int ret = 0; /* 1 si cd */ int ret = 1; /* 0 si commande non native */
if (!strncmp(command[0], "cd", 2))
change_dir(command[1]);
else
ret = 0;
return ret;
}
if (!strncmp(args[0], "cd", 2)) /**
* change_dir(): fonction pour implémenter la commande cd
* @dir: le répertoire à ouvrir
*/
void change_dir(char *dir)
{ {
ret = 1; if (chdir(dir))
if (chdir(args[1]))
error(2, NON_FATAL_ERROR, "Un nom de fichier au lieu dun dossier \ error(2, NON_FATAL_ERROR, "Un nom de fichier au lieu dun dossier \
a pu etre passé en paramètres."); a pu etre passé en paramètres.");
} }
return ret;
}

View file

@ -15,6 +15,7 @@
#define NON_FATAL_ERROR 0 #define NON_FATAL_ERROR 0
void error(int code, int type, char *message); void error(int code, int type, char *message);
int change_dir(char *args[]); int native_command(char *command[]);
void change_dir(char *dir);
#endif #endif

View file

@ -27,6 +27,7 @@ int main()
int pid, index = 0, end = 0; /* end permet de savoir quand sarreter */ int pid, index = 0, end = 0; /* end permet de savoir quand sarreter */
int my_pipe[2]; int my_pipe[2];
setenv("HELLO", "test", 1);
if (pipe(my_pipe) == -1) if (pipe(my_pipe) == -1)
error(1, FATAL_ERROR, NULL); error(1, FATAL_ERROR, NULL);
@ -44,7 +45,7 @@ int main()
while (commands[index] != NULL) while (commands[index] != NULL)
{ {
parse_string(commands[index], args, ' '); parse_string(commands[index], args, ' ');
if (!change_dir(args)) /* si la commande demandée nest pas un cd */ if (!native_command(args)) /* si la commande demandée nest pas native */
{ {
pid = fork(); pid = fork();
if (!pid) /* le fils */ if (!pid) /* le fils */