aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-04-01 13:03:26 +0200
committerCharles <sircharlesaze@gmail.com>2020-04-01 13:03:26 +0200
commit551e668e1b7a030fdff236067963100c7d8747a5 (patch)
tree198055e7c4e7f847d61949347dbd8dd3cbdc44ee /src/main.c
parentb15ab562d74b5111ac7c9bd6e0ec185435902472 (diff)
downloadminishell-551e668e1b7a030fdff236067963100c7d8747a5.tar.gz
minishell-551e668e1b7a030fdff236067963100c7d8747a5.tar.bz2
minishell-551e668e1b7a030fdff236067963100c7d8747a5.zip
Added AST functions, tested eval with basic input
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c48
1 files changed, 39 insertions, 9 deletions
diff --git a/src/main.c b/src/main.c
index e1005d8..4005bf2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -16,6 +16,8 @@
*/
#include "minishell.h"
+#include "ast.h"
+#include "eval.h"
/**
** \brief Program entrypoint
@@ -25,24 +27,52 @@
** \return 0 if ok, 1 otherwise
*/
-int main(int argc, char **argv, const char **envp)
+int main(int argc, char **argv, char **envp)
{
+ (void)argc;
+ (void)argv;
+ /* (void)envp; */
t_path path;
t_env env;
/* char *line; */
/* int ret; */
- (void)argc;
- (void)argv;
- env = env_from_array((char**)envp);
+ env = env_from_array(envp);
path = path_update(NULL, ft_htget(env, "PATH"));
- printf("%s\n", (char*)ft_htget(path, "nmap"));
- /* env(env); */
- /* pwd(&state); */
- /* cd(&state, NULL); */
- /* pwd(&state); */
+ t_ast *ast;
+ t_line line;
+ t_cmd cmd;
+ t_eval_state state;
+ cmd.argv = ft_split("ls -l", ' ');
+ cmd.in = NULL;
+ cmd.out = NULL;
+ cmd.is_append = false;
+
+ line.left = ast_new(TAG_CMD, &cmd);
+ line.right = NULL;
+ line.sep = SEP_END;
+ ast = ast_new(TAG_LINE, &line);
+
+ /* printf("%p\n", ast); */
+ /* printf("%d\n", ast->tag); */
+ /* printf("%p\n", ast->data.line.left); */
+ /* printf("%p\n", ast->data.line.right); */
+ /* printf("%d\n", ast->data.line.left->tag); */
+ /* printf("%p\n", ast->data.line.left->data.cmd.argv); */
+ /* printf("%s\n", ast->data.line.left->data.cmd.argv[0]); */
+ /* printf("%s\n", ast->data.line.left->data.cmd.argv[1]); */
+
+ state.in_pipe[0] = -1;
+ state.in_pipe[1] = -1;
+ state.out_pipe[0] = -1;
+ state.out_pipe[1] = -1;
+ state.path = path;
+ state.env = env;
+ eval(&state, ast);
+
+ ast_destroy(ast);
/* while ((ret = ft_next_line(STDIN_FILENO, &line)) == 1) */
/* { */
/* if (eval(parse(line)) == -1) */