From f4ddc36d6274be4e6f7f864fc298a86f32c2199c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Wed, 21 Apr 2021 15:19:23 +0200 Subject: [PATCH] stable shit --- minishell2 | Bin 32072 -> 32520 bytes minishell2.c | 43 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/minishell2 b/minishell2 index c5e00cb4d2cdf491071594a00fc6305ca3241b2f..ddf8075b368b643d262d70b57a0cee810516f1ae 100755 GIT binary patch delta 5507 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 KT0`Mnv;F_qbD;YG delta 4668 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 OAfr}RvC4~A#{Lgt_Q`Gl diff --git a/minishell2.c b/minishell2.c index fdf7aa9..ca2a181 100644 --- a/minishell2.c +++ b/minishell2.c @@ -11,13 +11,22 @@ #include "readcmd.h" #include "jobs.h" +extern int errno; + struct cmdline *cmd; + int pid_fils; + int job_id = 0; list jobs; + int prompting = 0; jmp_buf goto_prompt; +char initcd[256], currentcd[256]; + + + void handler_sigchld(int signal_num, siginfo_t *info) { cell *job = trouver(&jobs, info->si_pid); @@ -28,7 +37,7 @@ void handler_sigchld(int signal_num, siginfo_t *info) printf("\n"); } - printf("[%d] (%d) done: %s\n", job->id, job->pid, job->cmd); + printf("[%d] %d done: %s\n", job->id, job->pid, job->cmd); supprimer(&jobs, job->pid); job_id--; @@ -39,11 +48,12 @@ void handler_sigchld(int signal_num, siginfo_t *info) } } + + int main(int argc, char *argv[]) { initialiser(&jobs); - - extern int errno; + getcwd(initcd, sizeof(initcd)); // gestion des signaux struct sigaction action; @@ -58,7 +68,8 @@ int main(int argc, char *argv[]) sigsetjmp(goto_prompt, 1); prompting = 1; - printf(">>> "); + getcwd(currentcd, sizeof(currentcd)); + printf("%s >>> ", currentcd); cmd = readcmd(); prompting = 0; @@ -74,6 +85,28 @@ int main(int argc, char *argv[]) { // "exit" break; } + else if (!strcmp(cmd->seq[0][0], "jobs")) + { // "jobs" + afficher(&jobs); + continue; + } + else if (!strcmp(cmd->seq[0][0], "cd")) + { // "cd" + int ret = 0; + if (cmd->seq[0][1] == NULL) + { // no path + ret = chdir(initcd); + } + else + { // with path + ret = chdir(cmd->seq[0][1]); + } + if (ret) + { // wrong path + fprintf(stderr, "ERROR: cd failed, (%d) %s\n", errno, strerror(errno)); + } + continue; + } pid_fils = fork(); if (pid_fils == -1) @@ -103,7 +136,7 @@ int main(int argc, char *argv[]) { // foreground int wait_code; pid_t id_fils = waitpid(pid_fils, &wait_code, 0); // on attend la fin de l'exec du fils - + if (id_fils == -1) { // wait fail ? fprintf(stderr, "ERROR: waiting for %d failed, (%d) %s\n", wait_code, errno, strerror(errno));