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/eval | |
| parent | 3ea9f3e7e9b40c8e0b17ab394576c82f7b92c0b4 (diff) | |
| download | minishell-29e1af2b65d097e533189db4e7d5e20534c17b35.tar.gz minishell-29e1af2b65d097e533189db4e7d5e20534c17b35.tar.bz2 minishell-29e1af2b65d097e533189db4e7d5e20534c17b35.zip | |
Refactoring error handling during parsing
Diffstat (limited to 'src/eval')
| -rw-r--r-- | src/eval/cmd.c | 4 | ||||
| -rw-r--r-- | src/eval/error.c | 56 |
2 files changed, 3 insertions, 57 deletions
diff --git a/src/eval/cmd.c b/src/eval/cmd.c index fc73ed0..e79cb88 100644 --- a/src/eval/cmd.c +++ b/src/eval/cmd.c @@ -6,13 +6,14 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/14 10:41:31 by charles #+# #+# */ -/* Updated: 2020/07/13 09:54:12 by charles ### ########.fr */ +/* Updated: 2020/07/13 11:03:09 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "eval.h" pid_t g_child_pid = -1; +int g_last_status_code = 0; /* ** \brief Wrap a function in a fork @@ -97,6 +98,7 @@ int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast) param.argv = argv; param.env = env; int ret = fork_wrap(fds, ¶m, &forked_cmd); + g_last_status_code = ret; ft_split_destroy(argv); return (ret); } diff --git a/src/eval/error.c b/src/eval/error.c deleted file mode 100644 index 016a751..0000000 --- a/src/eval/error.c +++ /dev/null @@ -1,56 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* error.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/06/14 11:02:52 by charles #+# #+# */ -/* Updated: 2020/06/14 12:19:14 by charles ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "eval.h" - -static t_error g_errors[] = -{ - {ERROR_AMBIGUOUS_REDIR, 1, "ambiguous redirect"}, - {ERROR_OPEN, 1, NULL}, - {ERROR_CMD_NOT_FOUND, 127, "command not found"}, - {ERROR_SYNTAX, 2, "syntax error near unexpected token "}, -}; - -t_error *st_error_get(enum e_error id) -{ - size_t i; - t_error *match; - - match = NULL; - i = 0; - while (i < sizeof(g_errors) / sizeof(t_error)) - { - if (g_errors[i].id == id) - match = &g_errors[i]; - i++; - } - return (match); -} - -void error_eval_put(enum e_error id, char *unexpected) -{ - t_error *err; - - err = st_error_get(id); - ft_putstr_fd("minishell: ", STDERR_FILENO); - ft_putstr_fd(unexpected, STDERR_FILENO); - ft_putstr_fd(": ", STDERR_FILENO); - if (err->msg == NULL) - ft_putendl_fd(strerror(errno), STDERR_FILENO); - else - ft_putendl_fd(err->msg, STDERR_FILENO); -} - -int error_status(enum e_error id) -{ - return (st_error_get(id)->status); -} |
