aboutsummaryrefslogtreecommitdiff
path: root/src/eval/cmd.c
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-10-09 14:55:28 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-10-09 14:55:28 +0200
commita238d9aa50f88af04279d7e29b540bbad6d2f842 (patch)
tree11c17f98df037623d7f9b4d13830b4de24cadf79 /src/eval/cmd.c
parent2a8056e885151fa155bf82a3d8cc97b0905ea577 (diff)
downloadminishell-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.c29
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, &param, (t_wrapped_func)wrapped_cmd);
+ status = fork_wrap(fds, &param, (t_wrapped_func)st_wrapped_cmd);
ft_split_destroy(argv);
g_state.last_status = status;
return (status);