aboutsummaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c274
1 files changed, 137 insertions, 137 deletions
diff --git a/src/eval.c b/src/eval.c
index 2b6cab6..951c35a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1,140 +1,140 @@
#include "minishell.h"
-static int st_frame_init(t_command_frame *frame)
-{
- /* if (pipe(frame->pipe_in) == -1) */
- /* return (-1); */
- /* if (pipe(frame->pipe_out) == -1) */
- /* return (-1); */
- frame->pipe_in[MS_PIPE_READ] = -1;
- frame->pipe_in[MS_PIPE_WRITE] = -1;
- frame->pipe_out[MS_PIPE_READ] = -1;
- frame->pipe_out[MS_PIPE_WRITE] = -1;
- return (0);
-}
-
-/*
-** Run child process with executable located by `path`, his arguments in `argv`
-** and the current environment variables in `envp`.
-** Returns the child process pid or -1 if an error occured when forking.
-*/
-
-static pid_t st_run_process(char *path, char **argv, char **envp, t_command_frame *frame)
-{
- int i;
- pid_t child_pid;
-
- if (path == NULL || argv == NULL || envp == NULL || frame == NULL)
- return (-1);
- if ((child_pid = fork()) == -1)
- return (-1);
- if (child_pid == 0)
- {
- if (frame->pipe_in[MS_PIPE_READ] != -1)
- dup2(STDIN_FILENO, frame->pipe_in[MS_PIPE_WRITE]);
- if (frame->pipe_out[MS_PIPE_WRITE] != -1)
- dup2(STDOUT_FILENO, frame->pipe_out[MS_PIPE_READ]);
- if ((execve(path, argv, envp)) == -1)
- exit(EXIT_FAILURE);
- }
- else
- return (child_pid);
-}
-
-/*
-** Run a command.
-*/
-
-static int st_command_run(t_command *command, t_command_frame *frame)
-{
- t_redirection *tmp;
-
- if ((tmp = st_has_redirection_in(command)) != NULL)
- {
- if (pipe(frame->pipe_in) == -1)
- return (-1);
- if ((frame->pipe_in[MS_PIPE_READ] = open(tmp->filename, O_RDONLY)) < 0)
- return (-1);
- }
- if ((tmp = st_has_redirection_out(command)) != NULL)
- {
- if (pipe(frame->pipe_out) == -1)
- return (-1);
- if ((frame->pipe_out[MS_PIPE_WRITE] = open(tmp->filename, O_WRONLY | O_CREAT)) < 0)
- return (-1);
- }
- if ((child_pid = st_run_process(path, argv, envp, &frame)) == -1)
- return (-1);
- wait(&child_pid);
- return (0);
-}
-
-/*
-** Run a standalone command.
-*/
-
-static int st_command_standalone_run(t_command *command)
-{
- t_command_frame frame;
-
- if (st_frame_init(&frame) == -1)
- return (-1);
- return (st_command_run(command, &frame));
-}
-
-/*
-** Run a piped command
-*/
-
-// in main loop, if previous was piped, init frame with previous pipe
-static int st_command_piped_run(t_command *command, int pipe_out[2])
-{
- t_command_frame frame;
-
- if (st_frame_init(&frame) == -1)
- return (-1);
- frame.pipe_out[MS_PIPE_WRITE] =
-
-}
-
-
-/*
-** Evaluate the commands in parsing according by what they are separated by.
-*/
-
-int ms_eval(t_parsing *parsing)
-{
- pid_t child_pid;
- t_command_frame frame;
-
- if (parsing == NULL)
- return (-1);
- if (ft_lstsize(parsing->commands) != ft_lstsize(parsing->separators) - 1)
- return (-1);
- while (parsing->separators != NULL)
- {
- if ((t_separator)parsing->separators->content == SEPARATOR_SEMICOLON)
- {
- }
- else if ((t_separator)parsing->separators->content == SEPARATOR_PIPE)
- {
-
- // if has out redirection
- //
-
- // create pipe
- // fork fst
- // redirect stdout to pipe in
- // execve
-
- // fork snd
- // redirect std to pipe out
- // execve
-
- }
- ft_lstpop_front(&parsing->commands, free);
- ft_lstpop_front(&parsing->separators, NULL);
- }
- return (0);
-}
+/* static int st_frame_init(t_command_frame *frame) */
+/* { */
+/* #<{(| if (pipe(frame->pipe_in) == -1) |)}># */
+/* #<{(| return (-1); |)}># */
+/* #<{(| if (pipe(frame->pipe_out) == -1) |)}># */
+/* #<{(| return (-1); |)}># */
+/* frame->pipe_in[MS_PIPE_READ] = -1; */
+/* frame->pipe_in[MS_PIPE_WRITE] = -1; */
+/* frame->pipe_out[MS_PIPE_READ] = -1; */
+/* frame->pipe_out[MS_PIPE_WRITE] = -1; */
+/* return (0); */
+/* } */
+/* */
+/* #<{(| */
+/* ** Run child process with executable located by `path`, his arguments in `argv` */
+/* ** and the current environment variables in `envp`. */
+/* ** Returns the child process pid or -1 if an error occured when forking. */
+/* |)}># */
+/* */
+/* static pid_t st_run_process(char *path, char **argv, char **envp, t_command_frame *frame) */
+/* { */
+/* int i; */
+/* pid_t child_pid; */
+/* */
+/* if (path == NULL || argv == NULL || envp == NULL || frame == NULL) */
+/* return (-1); */
+/* if ((child_pid = fork()) == -1) */
+/* return (-1); */
+/* if (child_pid == 0) */
+/* { */
+/* if (frame->pipe_in[MS_PIPE_READ] != -1) */
+/* dup2(STDIN_FILENO, frame->pipe_in[MS_PIPE_WRITE]); */
+/* if (frame->pipe_out[MS_PIPE_WRITE] != -1) */
+/* dup2(STDOUT_FILENO, frame->pipe_out[MS_PIPE_READ]); */
+/* if ((execve(path, argv, envp)) == -1) */
+/* exit(EXIT_FAILURE); */
+/* } */
+/* else */
+/* return (child_pid); */
+/* } */
+/* */
+/* #<{(| */
+/* ** Run a command. */
+/* |)}># */
+/* */
+/* static int st_command_run(t_command *command, t_command_frame *frame) */
+/* { */
+/* t_redirection *tmp; */
+/* */
+/* if ((tmp = st_has_redirection_in(command)) != NULL) */
+/* { */
+/* if (pipe(frame->pipe_in) == -1) */
+/* return (-1); */
+/* if ((frame->pipe_in[MS_PIPE_READ] = open(tmp->filename, O_RDONLY)) < 0) */
+/* return (-1); */
+/* } */
+/* if ((tmp = st_has_redirection_out(command)) != NULL) */
+/* { */
+/* if (pipe(frame->pipe_out) == -1) */
+/* return (-1); */
+/* if ((frame->pipe_out[MS_PIPE_WRITE] = open(tmp->filename, O_WRONLY | O_CREAT)) < 0) */
+/* return (-1); */
+/* } */
+/* if ((child_pid = st_run_process(path, argv, envp, &frame)) == -1) */
+/* return (-1); */
+/* wait(&child_pid); */
+/* return (0); */
+/* } */
+/* */
+/* #<{(| */
+/* ** Run a standalone command. */
+/* |)}># */
+/* */
+/* static int st_command_standalone_run(t_command *command) */
+/* { */
+/* t_command_frame frame; */
+/* */
+/* if (st_frame_init(&frame) == -1) */
+/* return (-1); */
+/* return (st_command_run(command, &frame)); */
+/* } */
+/* */
+/* #<{(| */
+/* ** Run a piped command */
+/* |)}># */
+/* */
+/* // in main loop, if previous was piped, init frame with previous pipe */
+/* static int st_command_piped_run(t_command *command, int pipe_out[2]) */
+/* { */
+/* t_command_frame frame; */
+/* */
+/* if (st_frame_init(&frame) == -1) */
+/* return (-1); */
+/* frame.pipe_out[MS_PIPE_WRITE] = */
+/* */
+/* } */
+/* */
+/* */
+/* #<{(| */
+/* ** Evaluate the commands in parsing according by what they are separated by. */
+/* |)}># */
+/* */
+/* int ms_eval(t_parsing *parsing) */
+/* { */
+/* pid_t child_pid; */
+/* t_command_frame frame; */
+/* */
+/* if (parsing == NULL) */
+/* return (-1); */
+/* if (ft_lstsize(parsing->commands) != ft_lstsize(parsing->separators) - 1) */
+/* return (-1); */
+/* while (parsing->separators != NULL) */
+/* { */
+/* if ((t_separator)parsing->separators->content == SEPARATOR_SEMICOLON) */
+/* { */
+/* } */
+/* else if ((t_separator)parsing->separators->content == SEPARATOR_PIPE) */
+/* { */
+/* */
+/* // if has out redirection */
+/* // */
+/* */
+/* // create pipe */
+/* // fork fst */
+/* // redirect stdout to pipe in */
+/* // execve */
+/* */
+/* // fork snd */
+/* // redirect std to pipe out */
+/* // execve */
+/* */
+/* } */
+/* ft_lstpop_front(&parsing->commands, free); */
+/* ft_lstpop_front(&parsing->separators, NULL); */
+/* } */
+/* return (0); */
+/* } */