diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-07-14 10:04:44 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-07-14 10:05:57 +0200 |
| commit | 29e1af2b65d097e533189db4e7d5e20534c17b35 (patch) | |
| tree | c3f3033d18cab22e6715e2e57817d72028ae4627 /src/main.c | |
| parent | 3ea9f3e7e9b40c8e0b17ab394576c82f7b92c0b4 (diff) | |
| download | minishell-29e1af2b65d097e533189db4e7d5e20534c17b35.tar.gz minishell-29e1af2b65d097e533189db4e7d5e20534c17b35.tar.bz2 minishell-29e1af2b65d097e533189db4e7d5e20534c17b35.zip | |
Refactoring error handling during parsing
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 31 |
1 files changed, 23 insertions, 8 deletions
@@ -6,7 +6,7 @@ /* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 11:45:44 by cacharle #+# #+# */ -/* Updated: 2020/07/14 09:41:42 by nahaddac ### ########.fr */ +/* Updated: 2020/07/14 10:03:35 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -57,6 +57,23 @@ void signal_sigquit(int signum) } } +void signal_sigterm(int signum) +{ + (void)signum; +} + + +/* +** TODO +** $? +** syntax error +** signal +** pipeline +** cmd are path +** interpolation order +** PATH with no permission +*/ + int main(int argc, char **argv, char **envp) { t_path path; @@ -68,6 +85,7 @@ int main(int argc, char **argv, char **envp) signal(SIGINT, signal_sigint); signal(SIGQUIT, signal_sigquit); + signal(SIGTERM, signal_sigterm); if (argc == 3 && ft_strcmp(argv[1], "-l") == 0) { @@ -85,8 +103,8 @@ int main(int argc, char **argv, char **envp) /* ft_lstiter(lex_out, token_debug); */ t_ret *parser_out = parse(lex_out); - if (parser_out == NULL || parser_out->unexpected != NULL) - return (1); + if (parser_out == NULL || parser_out->syntax_error) + return (1); /* ast_print(0, parser_out->ast); */ /* printf("\n"); */ @@ -119,11 +137,8 @@ int main(int argc, char **argv, char **envp) return (1); t_ret *parser_out = parse(lex_out); - if (parser_out == NULL || parser_out->unexpected != NULL) - { - printf("%s\n",((t_token *)parser_out->unexpected)->content); + if (parser_out == NULL || parser_out->syntax_error) return (1); - } int fds[2] = {MS_NO_FD, MS_NO_FD}; int eval_out = eval(fds, env, path, parser_out->ast); @@ -134,7 +149,7 @@ int main(int argc, char **argv, char **envp) ft_htdestroy(path, free); ft_vecdestroy(env, free); - return (0); + return (g_last_status_code); } // else // { |
