From a2dc5174eb19caebf074b446dae129d17485e7bb Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 14 Aug 2020 20:50:57 +0200 Subject: && and || works pretty bav --- src/e_line.c | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'src/e_line.c') diff --git a/src/e_line.c b/src/e_line.c index 4489926..e584140 100644 --- a/src/e_line.c +++ b/src/e_line.c @@ -18,6 +18,7 @@ #include "e_externs.h" #include "e_pipes.h" #include "s_lpipes.h" +#include "s_com.h" #include "s_struct.h" static uint8_t @@ -35,27 +36,43 @@ static uint8_t return (i); } +static void + e_line_destroy(t_line *ptr) +{ + if (ptr->pipes != NULL) + { + lpipes_clear(&ptr->pipes); + } +} + void e_line(t_msh *msh) { t_line *ptr; uint8_t bu_id; + uint8_t previf; + previf = 0; ptr = msh->curr; while (ptr != NULL) { - if (ptr->pipes) - { - e_pipes(ptr, msh); - } - else if (ptr->com) + if ((previf == 0) || (previf == 1 && msh->ret == 0) || + (previf == 2 && msh->ret != 0)) { - if ((bu_id = get_builtin_id(ptr->com->bin, msh)) - < FT_BUILTINS_COUNT) - e_builtin(ptr->com, bu_id, msh); - else - e_extern(ptr->com, msh); + if (ptr->pipes) + e_pipes(ptr, msh); + else if (ptr->com) + { + if ((bu_id = get_builtin_id(ptr->com->bin, msh)) + < FT_BUILTINS_COUNT) + e_builtin(ptr->com, bu_id, msh); + else + e_extern(ptr->com, msh); + } } + else + e_line_destroy(ptr); + previf = ptr->nextif; ptr = ptr->next; } } -- cgit v1.2.3