diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-06-23 09:09:17 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-06-23 10:31:27 +0200 |
| commit | 11b258841f4a15c514c49af7d378b51cd6a8ab79 (patch) | |
| tree | 0df3f625f49fc1a8ca0e74f81272120f07a35feb /src/eval | |
| parent | 58fc321ec43be4c3f7976769733116232361857a (diff) | |
| download | minishell-11b258841f4a15c514c49af7d378b51cd6a8ab79.tar.gz minishell-11b258841f4a15c514c49af7d378b51cd6a8ab79.tar.bz2 minishell-11b258841f4a15c514c49af7d378b51cd6a8ab79.zip | |
Fixing builtin which needed to not be run in a child process, Added exit builtin
Diffstat (limited to 'src/eval')
| -rw-r--r-- | src/eval/cmd.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/eval/cmd.c b/src/eval/cmd.c index 4405cdd..57f9899 100644 --- a/src/eval/cmd.c +++ b/src/eval/cmd.c @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/14 10:41:31 by charles #+# #+# */ -/* Updated: 2020/06/19 12:03:13 by charles ### ########.fr */ +/* Updated: 2020/06/23 09:04:38 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,14 +50,13 @@ int forked_cmd(void *void_param) t_fork_param_cmd *param; param = void_param; - if (param->builtin != NULL) - return (param->builtin(param->argv, param->env)); + return (param->builtin->func(param->argv, param->env)); else return (execve(param->exec_path, param->argv, (char**)param->env->data)); } -int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast) +int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast) { t_fork_param_cmd param; char **argv; @@ -76,6 +75,8 @@ int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast) } // can have no command (e.g `< file`) + if (argv[0] == NULL) + return (0); param.builtin = builtin_search_func(argv[0]); if (param.builtin == NULL) { @@ -87,6 +88,8 @@ int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast) return (-1); // return error status } } + else if (!param.builtin->child_process) + return (param.builtin->func(argv, env)); param.argv = argv; param.env = env; |
