diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index eec4d26d..33654306 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -54,5 +54,6 @@ int process_redirect(t_process *p) dup2_close(p->fdin, STDIN); if (p->fdout != STDOUT) dup2_close(p->fdout, STDOUT); + ft_lstdel(&p->redirs, ft_lst_cfree); return (0); } diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index 5731cdae..3bac3ca1 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -18,18 +18,18 @@ int lexer_great(t_list **alst, t_lexer *lexer) token = (*alst)->content; token_append(token, lexer, 0, 0); - if (lexer->str[lexer->pos + 1] == '&') + DG("lexer->str=[%s]", lexer->str); + lexer->pos++; + if (lexer->str[lexer->pos] == '&') { token->type = TK_GREATAND; - lexer->pos++; token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_greatand(alst, lexer)); } - if (lexer->str[lexer->pos + 1] == '>') + if (lexer->str[lexer->pos] == '>') { token->type = TK_DGREAT; - lexer->pos++; token_append(token, lexer, 0, 0); lexer->pos++; lexer->state = DEFAULT; diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 4f8eae63..1a8105c0 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -18,20 +18,20 @@ int lexer_less(t_list **alst, t_lexer *lexer) token = (*alst)->content; token_append(token, lexer, 0, 0); - if (lexer->str[lexer->pos + 1] == '&') + lexer->pos++; + if (lexer->str[lexer->pos] == '&') { token->type = TK_LESSAND; - lexer->pos++; token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_lessand(alst, lexer)); } - if (lexer->str[lexer->pos + 1] == '<') + if (lexer->str[lexer->pos] == '<') { token_free(token, 0); (*alst)->content = token_init(); token->type = TK_DLESS; - lexer->pos += 2; + lexer->pos++; push(&lexer->stack, DLESS); lexer->state = DEFAULT; ft_lsteadd(&lexer->heredoc_stack, ft_lstnew(alst, sizeof(alst))); diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 09e5c839..a005c4ef 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -60,7 +60,7 @@ int interactive_shell() else if (get_lexer_stack(lexer) == DLESS) lexer.state = DLESS; ltoken = ft_lstlast(token); - if (lexer_lex((token ? <oken : &token), &lexer)) + if (lexer_lex(token ? <oken : &token, &lexer)) return (1); DG("[{mag}%s{eoc}] stack=[%i] state=[%i]", lexer.str, lexer.stack ? *(int*)lexer.stack->content : 0, lexer.state); token_print(token); @@ -75,7 +75,6 @@ int interactive_shell() btree_print(STDBUG, ast, &ft_putast); if (ft_exec(&ast)) return (1); - DG("gonna free [%s] @ [%p]", lexer.str, lexer.str); ft_strdel(&lexer.str); return (0); }