From 0caba7df480e87c4e27e15a498505474bd13c06f Mon Sep 17 00:00:00 2001 From: nass1pro Date: Tue, 16 Jun 2020 11:49:29 +0200 Subject: Test travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3364a00..77d2f7a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,6 @@ git: submodules: true python: - - "3.5" + - "3.7" script: make all && cd minishell_test && python3 main.py -- cgit From 179898160d7a6c3d0c6032c78c8731a23631c2aa Mon Sep 17 00:00:00 2001 From: nass1pro Date: Tue, 16 Jun 2020 12:37:32 +0200 Subject: Test main.c --- src/main.c | 16 ++++++++++++++-- src/parse/parse.c | 26 ++++++++++++++------------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/main.c b/src/main.c index 55f50c0..777f1e9 100644 --- a/src/main.c +++ b/src/main.c @@ -44,8 +44,20 @@ int main(int argc, char **argv, char **envp) ft_lstiter(lex_out, token_debug); - t_ret *parser_out = parse(lex_out); - + t_ret *ret = parse(lex_out); + + printf("===========cmd=============\n"); + 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; + } + printf("=========redir============\n"); + while(ret->ast->redirs != NULL) + { + printf("[%s]\n", ((t_token *)ret->ast->redirs->data)->content); + ret->ast->redirs = ret->ast->redirs->next; + } /* printf("%p\n", parser_out->ast->cmd_argv); */ /* printf("%p\n", parser_out->ast->redirs); */ diff --git a/src/parse/parse.c b/src/parse/parse.c index 867325b..36e603a 100755 --- a/src/parse/parse.c +++ b/src/parse/parse.c @@ -47,17 +47,19 @@ t_ret *parse(t_ftlst *input) } } } - 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; - } - while(ret->ast->redirs != NULL) - { - 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); + // printf("===========cmd=============\n"); + // 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; + // } + // printf("=========redir============\n"); + // while(ret->ast->redirs != NULL) + // { + // 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 first; } -- cgit From 904a7c07b31267b2336b144336fc6ff54627f6d0 Mon Sep 17 00:00:00 2001 From: nass1pro Date: Tue, 16 Jun 2020 13:21:57 +0200 Subject: Update parse --- src/lexer/lexer_utils.c | 6 ++++++ src/lexer/trim.c | 9 ++++++--- src/main.c | 2 +- src/parse/parse.c | 9 ++++++--- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/lexer/lexer_utils.c b/src/lexer/lexer_utils.c index c6bf54a..1b13eaa 100644 --- a/src/lexer/lexer_utils.c +++ b/src/lexer/lexer_utils.c @@ -62,6 +62,8 @@ static int lex_verif_simple_cote(char *input, int i) while(input[i] != '\0') { ++i; + if(input[i] == '\\') + i+=2; if(input[i] == '\'') break; } @@ -77,7 +79,11 @@ int lexer_verif_entre_cote(char *input, int i) return(lex_verif_simple_cote(input, i)); i++; while(input[i] != '"' && (input[i] != '\0')) + { + if (input[i] == '\\') + i += 2; ++i; + } if (input[i + 1] == ' ') while(input[i + 1] == ' ') i++; diff --git a/src/lexer/trim.c b/src/lexer/trim.c index a0c7dec..6c435d5 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -27,10 +27,14 @@ char *del_quote(char *str) int i; char *s; - i = 1; - while(str[++i] != '\0') + i = 0; + while(str[i++] != '\0') + { + if(str[i] == '\\') + i+=2; if (str[i] == '\'' || str[i] == '"') break; + } s = ft_strsubf(str, 1, i - 1); return (s); } @@ -46,7 +50,6 @@ t_ftlst *lexe_trim_out(t_ftlst *lst) tk = lst->data; if (tk->tag & (TAG_STR_DOUBLE | TAG_STR_SINGLE)) { - //printf("%s\n",tk->content ); tk->content = del_quote(tk->content); if(lst->next == NULL) if (tk->tag & TAG_STICK) diff --git a/src/main.c b/src/main.c index 777f1e9..ee00e00 100644 --- a/src/main.c +++ b/src/main.c @@ -42,7 +42,7 @@ int main(int argc, char **argv, char **envp) { t_ftlst *lex_out = lexer(ft_strdup(argv[2])); - ft_lstiter(lex_out, token_debug); + //ft_lstiter(lex_out, token_debug); t_ret *ret = parse(lex_out); diff --git a/src/parse/parse.c b/src/parse/parse.c index 36e603a..795afc7 100755 --- a/src/parse/parse.c +++ b/src/parse/parse.c @@ -34,16 +34,19 @@ t_ret *parse(t_ftlst *input) } else if (parse_redir_true_false(tag)) { - ret->ast = push_redir(ret->ast, ret->rest); - ret->rest = ret->rest->next; while(ret->rest != NULL) { + ret->ast = push_redir(ret->ast, ret->rest); + ret->rest = ret->rest->next; ret->ast = push_redir(ret->ast, ret->rest); tag = ((t_token *)ret->rest->data)->tag; - if (tag & TAG_IS_STR && tag & TAG_STICK) + if ((tag & TAG_IS_STR && tag & TAG_STICK) || tag == TAG_IS_REDIR) ret->rest = ret->rest->next; else + { + ret->rest = ret->rest->next; break; + } } } } -- cgit From 0fa76e9e49a70ab9acb128845b3b0b09607133a8 Mon Sep 17 00:00:00 2001 From: nass1pro Date: Tue, 16 Jun 2020 14:35:15 +0200 Subject: Update redire in parse --- src/lexer/lexer_utils.c | 4 ++-- src/lexer/trim.c | 1 + src/main.c | 5 +++-- src/parse/parse.c | 13 ++++++------- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/lexer/lexer_utils.c b/src/lexer/lexer_utils.c index 1b13eaa..616c0d3 100644 --- a/src/lexer/lexer_utils.c +++ b/src/lexer/lexer_utils.c @@ -63,7 +63,7 @@ static int lex_verif_simple_cote(char *input, int i) { ++i; if(input[i] == '\\') - i+=2; + i+=1; if(input[i] == '\'') break; } @@ -81,7 +81,7 @@ int lexer_verif_entre_cote(char *input, int i) while(input[i] != '"' && (input[i] != '\0')) { if (input[i] == '\\') - i += 2; + i += 1; ++i; } if (input[i + 1] == ' ') diff --git a/src/lexer/trim.c b/src/lexer/trim.c index 6c435d5..656fae6 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -48,6 +48,7 @@ t_ftlst *lexe_trim_out(t_ftlst *lst) while(lst != NULL) { tk = lst->data; + printf("%s\n",tk->content ); if (tk->tag & (TAG_STR_DOUBLE | TAG_STR_SINGLE)) { tk->content = del_quote(tk->content); diff --git a/src/main.c b/src/main.c index ee00e00..a22c733 100644 --- a/src/main.c +++ b/src/main.c @@ -40,11 +40,12 @@ int main(int argc, char **argv, char **envp) if (argc == 3 && ft_strcmp(argv[1], "-c") == 0) { + //printf("%s\n", argv[2]); t_ftlst *lex_out = lexer(ft_strdup(argv[2])); - //ft_lstiter(lex_out, token_debug); + ft_lstiter(lex_out, token_debug); - t_ret *ret = parse(lex_out); + t_ret *ret = parse(lex_out); printf("===========cmd=============\n"); while(ret->ast->cmd_argv != NULL) diff --git a/src/parse/parse.c b/src/parse/parse.c index 795afc7..d1303bc 100755 --- a/src/parse/parse.c +++ b/src/parse/parse.c @@ -29,26 +29,25 @@ t_ret *parse(t_ftlst *input) if (parse_cmd_str_true_false(tag)) { ret->ast = push_cmd(ret->ast, ret->rest); - if (ret->rest != NULL) - ret->rest = ret->rest->next; } else if (parse_redir_true_false(tag)) { while(ret->rest != NULL) { ret->ast = push_redir(ret->ast, ret->rest); - ret->rest = ret->rest->next; - ret->ast = push_redir(ret->ast, ret->rest); - tag = ((t_token *)ret->rest->data)->tag; - if ((tag & TAG_IS_STR && tag & TAG_STICK) || tag == TAG_IS_REDIR) + if (tag & TAG_IS_STR && tag & TAG_STICK) + ret->rest = ret->rest->next; + else if (tag & TAG_IS_REDIR) ret->rest = ret->rest->next; else { - ret->rest = ret->rest->next; + //ret->rest = ret->rest->next; break; } + tag = ((t_token *)ret->rest->data)->tag; } } + ret->rest = ret->rest->next; } // printf("===========cmd=============\n"); // while(ret->ast->cmd_argv != NULL) -- cgit From 0eb7a660c0f6eef4ae163b91791908b670dc1d5a Mon Sep 17 00:00:00 2001 From: nass1pro Date: Tue, 16 Jun 2020 14:40:38 +0200 Subject: main for testing --- salut | 1 - src/lexer/trim.c | 1 - src/main.c | 24 ++++++------------------ 3 files changed, 6 insertions(+), 20 deletions(-) delete mode 100644 salut diff --git a/salut b/salut deleted file mode 100644 index 8b13789..0000000 --- a/salut +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/lexer/trim.c b/src/lexer/trim.c index 656fae6..6c435d5 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -48,7 +48,6 @@ t_ftlst *lexe_trim_out(t_ftlst *lst) while(lst != NULL) { tk = lst->data; - printf("%s\n",tk->content ); if (tk->tag & (TAG_STR_DOUBLE | TAG_STR_SINGLE)) { tk->content = del_quote(tk->content); diff --git a/src/main.c b/src/main.c index a22c733..d410405 100644 --- a/src/main.c +++ b/src/main.c @@ -43,30 +43,18 @@ int main(int argc, char **argv, char **envp) //printf("%s\n", argv[2]); t_ftlst *lex_out = lexer(ft_strdup(argv[2])); - ft_lstiter(lex_out, token_debug); - - t_ret *ret = parse(lex_out); - - printf("===========cmd=============\n"); - 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; - } - printf("=========redir============\n"); - while(ret->ast->redirs != NULL) - { - printf("[%s]\n", ((t_token *)ret->ast->redirs->data)->content); - ret->ast->redirs = ret->ast->redirs->next; - } + //ft_lstiter(lex_out, token_debug); + + t_ret *parser_out = parse(lex_out); + /* printf("%p\n", parser_out->ast->cmd_argv); */ /* printf("%p\n", parser_out->ast->redirs); */ /* ft_lstiter(parser_out->ast->cmd_argv, token_debug); */ /* ft_lstiter(parser_out->ast->redirs, token_debug); */ - //int eval_out = eval_cmd(env, path, parser_out->ast); - //(void)eval_out; + int eval_out = eval_cmd(env, path, parser_out->ast); + (void)eval_out; } ft_htdestroy(path, free); -- cgit