Ajout fonction pour vérifier si commande native ou pas
This commit is contained in:
parent
70d155811d
commit
05f62dfc6e
3 changed files with 30 additions and 16 deletions
|
@ -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 l’utilisateur
|
||||||
* @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 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 */
|
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 d’un dossier \
|
error(2, NON_FATAL_ERROR, "Un nom de fichier au lieu d’un dossier \
|
||||||
a pu etre passé en paramètres.");
|
a pu etre passé en paramètres.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -27,6 +27,7 @@ int main()
|
||||||
|
|
||||||
int pid, index = 0, end = 0; /* end permet de savoir quand s’arreter */
|
int pid, index = 0, end = 0; /* end permet de savoir quand s’arreter */
|
||||||
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 n’est pas un cd */
|
if (!native_command(args)) /* si la commande demandée n’est pas native */
|
||||||
{
|
{
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (!pid) /* le fils */
|
if (!pid) /* le fils */
|
||||||
|
|
Loading…
Reference in a new issue