diff --git a/src/builtin/is_builtin.c b/src/builtin/is_builtin.c index b0ac5ce..538ea22 100644 --- a/src/builtin/is_builtin.c +++ b/src/builtin/is_builtin.c @@ -18,6 +18,8 @@ int is_builtin(char *cmd) "unset", "env", "exit", NULL}; int i; + if (cmd == NULL) + return (-1); i = 0; while (builtins[i]) { diff --git a/src/executor/executor_execute_pipeline.c b/src/executor/executor_execute_pipeline.c index 81e9b1b..ef2bce3 100644 --- a/src/executor/executor_execute_pipeline.c +++ b/src/executor/executor_execute_pipeline.c @@ -34,12 +34,13 @@ static int execute_builtin(t_minishell *msh, t_command *cmd) return (exit_status); } -static void executor_execute_command(t_minishell *msh, t_command *cmd) +static int executor_execute_command(t_minishell *msh, t_command *cmd) { - if (cmd->args[0] != NULL && is_builtin(cmd->args[0]) >= 0) + if (is_builtin(cmd->args[0]) >= 0) msh->exit_status = execute_builtin(msh, cmd); else if (cmd->args[0] != NULL) - executor_fork(msh, cmd); + return (executor_fork(msh, cmd)); + return (0); } int executor_execute_pipeline(t_minishell *msh) @@ -55,7 +56,7 @@ int executor_execute_pipeline(t_minishell *msh) last_pid = 0; while (current) { - executor_execute_command(msh, (t_command *)current->content); + last_pid = executor_execute_command(msh, (t_command *)current->content); current = current->next; } if (last_pid != 0)