Réécriture de change_dir

This commit is contained in:
rick 2021-02-23 17:23:02 +01:00
parent b28d3dc41d
commit fa1aceadc6
Signed by: Rick
GPG key ID: 2B593F087240EE99
2 changed files with 16 additions and 4 deletions

View file

@ -17,6 +17,7 @@
#include <signal.h> #include <signal.h>
pid_t pid; pid_t pid;
int exit_code;
/** /**
* native_command(): vérifie si la commande entrée par lutilisateur * native_command(): vérifie si la commande entrée par lutilisateur
@ -34,7 +35,7 @@ int native_command(char *command[])
{ {
int ret = 1; /* 0 si commande non native */ int ret = 1; /* 0 si commande non native */
if (!strcmp(command[0], "cd")) if (!strcmp(command[0], "cd"))
change_dir(command[1]); change_dir(command);
if (!strcmp(command[0], "ouï-dire") || !strcmp(command[0], "oui-dire") if (!strcmp(command[0], "ouï-dire") || !strcmp(command[0], "oui-dire")
|| !strcmp(command[0], "echo")) || !strcmp(command[0], "echo"))
{ {
@ -59,17 +60,26 @@ int native_command(char *command[])
* change_dir(): fonction pour implémenter la commande cd * change_dir(): fonction pour implémenter la commande cd
* @dir: le répertoire à ouvrir * @dir: le répertoire à ouvrir
*/ */
void change_dir(char *dir) void change_dir(char *command[])
{ {
char *dir = command[1];
if (chdir(dir) < 0) if (chdir(dir) < 0)
{ {
int code = errno; int code = errno;
char txt_error[MAX_LENGTH] = "cd: "; char *txt_error = calloc(MAX_LENGTH, sizeof(char));
strcat(txt_error, command[0]);
strcat(txt_error, ": ");
strcat(txt_error, dir); strcat(txt_error, dir);
error(code, NON_FATAL_ERROR, txt_error); error(code, NON_FATAL_ERROR, txt_error);
free(txt_error);
} }
} }
//void thus_exit(char *command[])
//{
// exit_code = 0;
//}
void ctrl_c_handler() void ctrl_c_handler()
{ {
//kill(pid, SIGTERM); //kill(pid, SIGTERM);

View file

@ -20,9 +20,11 @@
#define ERR_FORK 201 /* erreur lors du fork */ #define ERR_FORK 201 /* erreur lors du fork */
extern pid_t pid; extern pid_t pid;
extern int exit_code;
int native_command(char *command[]); int native_command(char *command[]);
void change_dir(char *dir); void change_dir(char *command[]);
//void thus_exit(char *command[])
void ctrl_c_handler(); void ctrl_c_handler();
void error(int code, int type, char *message); void error(int code, int type, char *message);