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
* @args: la liste des arguments de la commade
* native_command(): vérifie si la commande entrée par lutilisateur
* 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 */
if (!strncmp(args[0], "cd", 2))
{
ret = 1;
if (chdir(args[1]))
error(2, NON_FATAL_ERROR, "Un nom de fichier au lieu dun 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 dun dossier \
a pu etre passé en paramètres.");
}

View File

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

View File

@ -27,6 +27,7 @@ int main()
int pid, index = 0, end = 0; /* end permet de savoir quand sarreter */
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 nest pas un cd */
if (!native_command(args)) /* si la commande demandée nest pas native */
{
pid = fork();
if (!pid) /* le fils */