diff --git a/src/executing/simple_cmd/simple_cmd_execute.c b/src/executing/simple_cmd/simple_cmd_execute.c index 65612bf..4406434 100644 --- a/src/executing/simple_cmd/simple_cmd_execute.c +++ b/src/executing/simple_cmd/simple_cmd_execute.c @@ -6,7 +6,7 @@ /* By: khais +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/03/27 16:21:56 by khais #+# #+# */ -/* Updated: 2025/04/02 18:19:57 by khais ### ########.fr */ +/* Updated: 2025/04/15 15:01:17 by khais ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,6 +18,7 @@ #include #include #include +#include static void command_not_found(t_simple_cmd *cmd) { @@ -25,6 +26,17 @@ static void command_not_found(t_simple_cmd *cmd) cmd->words->word->word); } +static void do_waitpid(t_minishell *app, int pid) +{ + int wstatus; + + waitpid(pid, &wstatus, 0); + if (WIFEXITED(wstatus)) + app->last_return_value = WEXITSTATUS(wstatus); + if (WIFSIGNALED(wstatus)) + app->last_return_value = 128 + WTERMSIG(wstatus); +} + void simple_cmd_execute(t_simple_cmd *cmd, t_minishell *app) { char *exe; @@ -44,6 +56,6 @@ void simple_cmd_execute(t_simple_cmd *cmd, t_minishell *app) if (pid == 0) execute_subprocess(exe, cmd, app); free(exe); - waitpid(pid, NULL, 0); + do_waitpid(app, pid); return ; } diff --git a/test.sh b/test.sh index 2b647bc..18e4bf6 100755 --- a/test.sh +++ b/test.sh @@ -342,6 +342,21 @@ expecting <