diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2020-10-09 14:55:28 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2020-10-09 14:55:28 +0200 |
| commit | a238d9aa50f88af04279d7e29b540bbad6d2f842 (patch) | |
| tree | 11c17f98df037623d7f9b4d13830b4de24cadf79 /src/eval/cmd.c | |
| parent | 2a8056e885151fa155bf82a3d8cc97b0905ea577 (diff) | |
| download | minishell-a238d9aa50f88af04279d7e29b540bbad6d2f842.tar.gz minishell-a238d9aa50f88af04279d7e29b540bbad6d2f842.tar.bz2 minishell-a238d9aa50f88af04279d7e29b540bbad6d2f842.zip | |
Norming eval
Diffstat (limited to 'src/eval/cmd.c')
| -rw-r--r-- | src/eval/cmd.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/eval/cmd.c b/src/eval/cmd.c index c786a7b..a35a73d 100644 --- a/src/eval/cmd.c +++ b/src/eval/cmd.c @@ -6,7 +6,7 @@ /* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/14 10:41:31 by charles #+# #+# */ -/* Updated: 2020/10/08 10:15:07 by cacharle ### ########.fr */ +/* Updated: 2020/10/09 14:31:45 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ pid_t g_child_pid = -1; -int wrapped_cmd(t_fork_param_cmd *param) +static int st_wrapped_cmd(t_fork_param_cmd *param) { int status; @@ -30,6 +30,12 @@ int wrapped_cmd(t_fork_param_cmd *param) return (status); } +static int st_split_destroy_ret(int ret, char **strs) +{ + ft_split_destroy(strs); + return (ret); +} + int eval_cmd(int fds[2], t_env env, t_ast *ast) { t_fork_param_cmd param; @@ -40,31 +46,20 @@ int eval_cmd(int fds[2], t_env env, t_ast *ast) return (status); if ((argv = preprocess(&ast->cmd_argv, env)) == NULL) return (EVAL_FATAL); - /* printf("%p\n", ast->cmd_argv); */ - /* ast->cmd_argv = NULL; */ if (argv[0] == NULL) - { - ft_split_destroy(argv); - return (0); - } + return (st_split_destroy_ret(0, argv)); param.builtin = builtin_search_func(argv[0]); if (param.builtin != NULL && !param.builtin->forked) { status = param.builtin->func(argv, env); - ft_split_destroy(argv); - return (status); + return (st_split_destroy_ret(status, argv)); } - if (param.builtin == NULL && (status = path_search(env, argv[0], param.exec_path, true)) != 0) - { - ft_split_destroy(argv); - return (status); - } - + return (st_split_destroy_ret(status, argv)); param.argv = argv; param.env = env; - status = fork_wrap(fds, ¶m, (t_wrapped_func)wrapped_cmd); + status = fork_wrap(fds, ¶m, (t_wrapped_func)st_wrapped_cmd); ft_split_destroy(argv); g_state.last_status = status; return (status); |
