diff --git a/src/invoke_cmd/wait_pipeline.c b/src/invoke_cmd/wait_pipeline.c index 13007f7..fca9ab8 100644 --- a/src/invoke_cmd/wait_pipeline.c +++ b/src/invoke_cmd/wait_pipeline.c @@ -6,7 +6,7 @@ /* By: dayano +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/29 16:42:14 by dayano #+# #+# */ -/* Updated: 2025/05/05 17:06:51 by dayano ### ########.fr */ +/* Updated: 2025/05/05 22:40:17 by dayano ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,12 +37,7 @@ static int _get_status(t_cmd *cmd) if (WIFEXITED(status)) cmd->status = WEXITSTATUS(status); else if (WIFSIGNALED(status)) - { - if (WTERMSIG(status) == 3) - write(STDOUT_FILENO, "Quit (core dumped)", 18); - write(STDOUT_FILENO, "\n", 1); cmd->status = 128 + WTERMSIG(status); - } else cmd->status = EXIT_FAILURE; return (cmd->status); @@ -63,14 +58,26 @@ int wait_pipeline(t_cmd *cmd_head) { int last_status; t_cmd *cmd; + bool saw_sigint; + bool saw_sigquit; + saw_sigint = false; + saw_sigquit = false; last_status = 0; cmd = cmd_head; while (cmd) { if (!is_redirect(cmd)) last_status = _get_status(cmd); + if (last_status == 130) + saw_sigint = true; + else if (last_status == 131) + saw_sigquit = true; cmd = cmd->next; } + if (saw_sigint) + write(STDOUT_FILENO, "\n", 1); + if (last_status == 131 && saw_sigquit) + write(STDOUT_FILENO, "Quit (core dumped)\n", 19); return (last_status); }