aboutsummaryrefslogtreecommitdiff
path: root/src/eval/parenthesis.c
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-09-13 21:01:18 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-09-13 21:01:18 +0200
commitc51d31b8b751585153500729c25ae2f02d179e45 (patch)
treeeab34e14508f5a2a3ad2c5d06c56afdd7ba72e9e /src/eval/parenthesis.c
parent490237aece240c05b5a9035665a88327e1be87ed (diff)
downloadminishell-c51d31b8b751585153500729c25ae2f02d179e45.tar.gz
minishell-c51d31b8b751585153500729c25ae2f02d179e45.tar.bz2
minishell-c51d31b8b751585153500729c25ae2f02d179e45.zip
Refactoring eval file structure, Added comment to builtin
Diffstat (limited to 'src/eval/parenthesis.c')
-rw-r--r--src/eval/parenthesis.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/eval/parenthesis.c b/src/eval/parenthesis.c
new file mode 100644
index 0000000..8983378
--- /dev/null
+++ b/src/eval/parenthesis.c
@@ -0,0 +1,37 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* parenthesis.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <me@cacharle.xyz> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/09/13 20:38:29 by charles #+# #+# */
+/* Updated: 2020/09/13 20:40:19 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "eval.h"
+
+int wrapped_eval(void *void_param)
+{
+ t_fork_param_args *param;
+
+ param = void_param;
+ return (eval(param->fds, param->env, param->path, param->ast, NULL));
+}
+
+int eval_parenthesis(int fds[2], t_env env, t_path path, t_ast *ast)
+{
+ int status;
+ t_fork_param_args param;
+
+ if ((status = redir_extract(&ast->redirs, env, fds)) != 0)
+ return (status);
+ ast->tag ^= AST_PARENT;
+ param.fds[0] = fds[0];
+ param.fds[1] = fds[1];
+ param.env = env;
+ param.path = path;
+ param.ast = ast->parent_ast;
+ return (fork_wrap(fds, &param, wrapped_eval, NULL));
+}