aboutsummaryrefslogtreecommitdiff
path: root/src/interpreter.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interpreter.c')
-rw-r--r--src/interpreter.c89
1 files changed, 0 insertions, 89 deletions
diff --git a/src/interpreter.c b/src/interpreter.c
index 458f2af..e69de29 100644
--- a/src/interpreter.c
+++ b/src/interpreter.c
@@ -1,89 +0,0 @@
-/* ************************************************************************** */
-/* */
-/* ::: :::::::: */
-/* interpreter.c :+: :+: :+: */
-/* +:+ +:+ +:+ */
-/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */
-/* +#+#+#+#+#+ +#+ */
-/* Created: 2024/08/05 13:15:24 by dkaiser #+# #+# */
-/* Updated: 2024/10/25 13:25:33 by dkaiser ### ########.fr */
-/* */
-/* ************************************************************************** */
-
-#include "debug_tools.h"
-#include "minishell.h"
-#include <stdlib.h>
-#include <sys/_types/_pid_t.h>
-#include <sys/cdefs.h>
-#include <sys/wait.h>
-#include <unistd.h>
-
-static int eval_rec(t_node *node, t_env *env, int in_fd);
-
-int eval(t_node *node, t_env *env)
-{
- pid_t pid;
- int result;
-
- if (node == NULL)
- return (EXIT_FAILURE);
- result = 0;
- pid = fork();
- if (pid < 0)
- {
- return (EXIT_FAILURE);
- }
- if (pid == 0)
- {
- result = eval_rec(node, env, STDIN_FILENO);
- exit(result);
- }
- else
- {
- waitpid(pid, &result, 0);
- }
- return (result);
-}
-
-static int eval_rec(t_node *node, t_env *env, int in_fd)
-{
- pid_t pid;
- int result;
- int p[2];
-
- result = pipe(p);
- if (result == -1)
- return (EXIT_FAILURE);
- if (node->type == PIPE_NODE)
- {
- pid = fork();
- if (pid < 0)
- {
- return (EXIT_FAILURE);
- }
- if (pid == 0)
- {
- close(p[0]);
- dup2(in_fd, STDIN_FILENO);
- dup2(p[1], STDOUT_FILENO);
- result = execute_cmd(&node->content.pipe.left->content.cmd, env);
- exit(result);
- }
- else
- {
- close(p[1]);
- dup2(p[0], STDIN_FILENO);
- result = eval_rec(node->content.pipe.right, env, p[0]);
- }
- }
- else if (node->type == CMD_NODE)
- {
- result = execute_cmd(&node->content.cmd, env);
- }
- else
- {
- panic(UNREACHABLE);
- return (EXIT_FAILURE);
- }
- return (result);
-}