diff options
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 28 |
1 files changed, 17 insertions, 11 deletions
@@ -6,7 +6,7 @@ /* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 11:45:44 by cacharle #+# #+# */ -/* Updated: 2020/09/09 16:19:00 by charles ### ########.fr */ +/* Updated: 2020/09/12 17:04:06 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,10 +29,9 @@ void tok_lst_debug(t_tok_lst *tokens); /* ** TODO ** $? +** pipe make 2 new children ** concurrent pipeline -** cmd variable preprocess ** signal on whole line instead of single command -** env local to current minishell process */ bool env_set_default(t_env env, char *key, char *value) @@ -69,7 +68,7 @@ int main(int argc, char **argv, char **envp) // } // env_export(env, "_", env_exec_path); - g_last_status_code = 0; + g_last_status = 0; signal(SIGINT, signal_sigint); signal(SIGQUIT, signal_sigquit); signal(SIGTERM, signal_sigterm); @@ -104,9 +103,13 @@ int main(int argc, char **argv, char **envp) /* ft_lstiter(parser_out->ast->cmd_argv, token_debug); */ /* printf("===redirs===\n"); */ /* ft_lstiter(parser_out->ast->redirs, token_debug); */ - int fds[2] = {MS_NO_FD, MS_NO_FD}; - int eval_out = eval(fds, env, path, parser_out->ast); - (void)eval_out; + int fds[2] = {FD_NONE, FD_NONE}; + int status = eval(fds, env, path, parser_out->ast); + if (status == EVAL_FATAL) + exit(1); + g_last_status = status; + exit(status); + return (0); } else { @@ -134,9 +137,12 @@ int main(int argc, char **argv, char **envp) continue; } - int fds[2] = {MS_NO_FD, MS_NO_FD}; - int eval_out = eval(fds, env, path, parser_out->ast); - (void)eval_out; + int fds[2] = {FD_NONE, FD_NONE}; + int status = eval(fds, env, path, parser_out->ast); + if (status == EVAL_FATAL) + exit(1); + g_last_status = status; + /* error_set_status(status); */ print_prompt(); } if (ret != FTGL_EOF) @@ -145,5 +151,5 @@ int main(int argc, char **argv, char **envp) ft_htdestroy(path, free); ft_vecdestroy(env, free); - return (g_last_status_code); + return (g_last_status); } |
