From 37d815cb576b2c21d5c1d8ed7d6f14b1dafa38d4 Mon Sep 17 00:00:00 2001 From: AntoHesse Date: Fri, 3 Mar 2017 02:36:25 +0100 Subject: [PATCH] fuck it --- 42sh/src/parser/add_cmd.c | 19 +++++++++++++------ 42sh/src/parser/add_redir.c | 16 ++++++++++++++-- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index d3e0cf1b..4fcccbc6 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -17,6 +17,7 @@ int add_cmd(t_btree **ast, t_list **lst) t_token *token; t_astnode *node; t_cmd *cmd; + t_redir *redir; char **my_tab; if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) @@ -54,16 +55,22 @@ int add_cmd(t_btree **ast, t_list **lst) node->type = JOB; if (token->type == TK_WORD || token->type == TK_ASSIGNEMENT_WORD) { - DG("add data"); - return ; - if (!node->data.cmds) - node->data.cmds = ft_lstnew(&cmd, sizeof(t_ld)); - ft_lstlast(node->data.cmds)->content; my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); my_tab = ft_sstradd(my_tab, (char *)token->esc2); - + if (!node->data.cmds) + { + DG("new cmd"); + cmd = ft_memalloc(sizeof(cmd)); + ft_ld_new(&cmd->token, my_tab); + redir = ft_memalloc(sizeof(redir)); + ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); + ft_lsteadd(&node->data.cmds, ft_lstnew(&cmd, sizeof(t_ld))); + } + else + cmd = ft_lstlast(node->data.cmds)->content; + DG("again"); ft_ld_pushback(&cmd->token, my_tab); } return (0); diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 1e5a22dc..7601e164 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -92,8 +92,20 @@ int add_redir_type(t_btree **ast, t_list **lst) redir = ft_memalloc(sizeof(redir)); redir->type = token->type; if (!node->data.cmds) + { + cmd = ft_memalloc(sizeof(cmd)); + cmd->token = NULL; + cmd->redir = NULL; node->data.cmds = ft_lstnew(&cmd, sizeof(cmd)); - cmd = (node->data.cmds)->content; - ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); + } + cmd = ft_lstlast(node->data.cmds)->content; + DG("still"); + if (!cmd->redir) + cmd->redir = ft_lstnew(redir, sizeof(redir)); + else + { + DG("flag"); + ft_lsteadd(&cmd->redir, ft_lstnew(redir, sizeof(redir))); + } return (0); }