/** * @file essential_shell.c * @author rick * @date 2021 */ #include "essential_shell.h" #include #include #include #include /** * error(): gère les erreurs selon leur code et leur type * @code: code de l’erreur, voir les différents codes plus bas * @type: NON_FATAL_ERROR pour continuer l’exécution * FATAL_ERROR pour stoper le programme * @message: message à afficher pour + d’infos ou erreur non implémentée * * 1 erreur lors de la création des pipes * 2 chemin inexistant (pour cd) */ void error(int code, int type, char *message) { switch (code) { case 1: printf("Erreur lors de la création des pipes.\n"); break; case 2: printf("Chemin inexistant.\n"); break; default: if (message == NULL) printf("Erreur inconnue.\n"); else printf("%s\n", message); } if (message != NULL) printf("Message complémentaire :\n%s\n", message); if (type == FATAL_ERROR) exit(code); } /** * 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 * * 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 native_command(char *command[]) { 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."); }