aboutsummaryrefslogtreecommitdiff
path: root/include/eval.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/eval.h')
-rw-r--r--include/eval.h43
1 files changed, 36 insertions, 7 deletions
diff --git a/include/eval.h b/include/eval.h
index 8fbbb1c..f834d45 100644
--- a/include/eval.h
+++ b/include/eval.h
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:05:30 by charles #+# #+# */
-/* Updated: 2020/06/14 10:33:54 by charles ### ########.fr */
+/* Updated: 2020/06/15 11:09:49 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -27,7 +27,6 @@
typedef struct
{
- int p[2];
t_path path;
t_env env;
} t_eval_state;
@@ -54,8 +53,11 @@ typedef struct
{
char *exec_path;
char **argv;
- char **envp;
-} t_fork_param_execve;
+ t_env env;
+ t_builtin_func builtin;
+} t_fork_param_cmd;
+
+#define MS_NO_FD -2
/*
** eval.c
@@ -71,11 +73,38 @@ bool exec_is_path(char *path_str);
bool exec_is_valid(char *exec_path);
char *exec_search_path(t_path path, char *path_var, char *exec_name);
+enum e_error
+{
+ ERROR_AMBIGUOUS_REDIR,
+ ERROR_OPEN,
+ ERROR_CMD_NOT_FOUND,
+ ERROR_SYNTAX,
+};
+
+typedef struct
+{
+ enum e_error id;
+ int status;
+ char *msg; // if NULL call strerror
+ // char *basename;
+} t_error;
+
+/*
+** error.c
+*/
+
+void error_eval_put(enum e_error id, char *unexpected);
+
+/*
+** cmd.c
+*/
+
+int eval_cmd(t_env env, t_path path, t_ast *ast);
+
/*
-** pipe.c
+** redir.c
*/
-// int pipe_setup_parent(t_cmd *cmd, int pipe_in[2], int pipe_out[2]);
-// int pipe_setup_child(int pipe_in[2], int pipe_out[2]);
+bool redir_extract(t_ftlst *redirs, t_env env, int *fd_in, int *fd_out);
#endif