diff options
| author | nass1pro <nass1pro@gmail.com> | 2020-06-15 13:00:24 +0200 |
|---|---|---|
| committer | nass1pro <nass1pro@gmail.com> | 2020-06-15 13:00:24 +0200 |
| commit | a7dae7d30b7087bcd9972792a2ee1248e081cfce (patch) | |
| tree | 21c567c81a542991eb27eb4056b74df8a8d8cc0e /src/parse/parse.c | |
| parent | 72ee131562574c4a6cb69800cdd81268b52ace84 (diff) | |
| download | minishell-a7dae7d30b7087bcd9972792a2ee1248e081cfce.tar.gz minishell-a7dae7d30b7087bcd9972792a2ee1248e081cfce.tar.bz2 minishell-a7dae7d30b7087bcd9972792a2ee1248e081cfce.zip | |
ADD redir_parse draft
Diffstat (limited to 'src/parse/parse.c')
| -rwxr-xr-x[-rw-r--r--] | src/parse/parse.c | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/src/parse/parse.c b/src/parse/parse.c index 4fc0aa7..bb19bea 100644..100755 --- a/src/parse/parse.c +++ b/src/parse/parse.c @@ -15,6 +15,7 @@ t_ret *parse(t_ftlst *input) t_ret *ret; t_ret *first; enum e_token_tag tag; + int i = 0; if(!(ret = malloc(sizeof(t_ret) * 1))) return(NULL); @@ -26,18 +27,44 @@ t_ret *parse(t_ftlst *input) while (ret->rest != NULL) { tag = ((t_token *)ret->rest->data)->tag; - printf("%d\n", tag); - if (parse_redir_true_false(tag)) - ; if (parse_cmd_str_true_false(tag)) + { ret->ast = parse_cmd(ret->ast, ret->rest); - ret->rest = ret->rest->next; + } + else if (parse_redir_true_false(tag)) + { + ret->ast = parse_redir(ret->ast, ret->rest); + ret->rest = ret->rest->next; + if (ret->rest != NULL) + ret->ast = parse_redir(ret->ast, ret->rest); + printf("%s\n","ici" ); + ret->rest = ret->rest->next; + if (ret->rest != NULL) + { + tag = ((t_token *)ret->rest->data)->tag; + if(tag & TAG_IS_STR & TAG_STICK) + ret->ast = parse_redir(ret->ast, ret->rest); + } + } + if (ret->rest != NULL) + ret->rest = ret->rest->next; } while(ret->ast->cmd_argv != NULL) - { - printf("%s\n", ((t_token *)ret->ast->cmd_argv->data)->content); - ret->ast->cmd_argv = ret->ast->cmd_argv->next; - } - free(ret->ast); + { + printf("%s\n", ((t_token *)ret->ast->cmd_argv->data)->content); + ret->ast->cmd_argv = ret->ast->cmd_argv->next; + } + while(ret->ast->redirs != NULL) + { + if (i == 0) + { + printf("redir"); + i++; + } + printf("%s\n", ((t_token *)ret->ast->redirs->data)->content); + ret->ast->redirs = ret->ast->redirs->next; + } + ast_destroy(ret->ast); + ft_lstdestroy(&ret->rest, (void (*)(void*))token_destroy); return NULL; } |
