diff options
Diffstat (limited to 'src/e_line.c')
-rw-r--r-- | src/e_line.c | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/src/e_line.c b/src/e_line.c index 6da7f77..caf3d75 100644 --- a/src/e_line.c +++ b/src/e_line.c @@ -20,60 +20,22 @@ #include "s_lpipes.h" #include "s_com.h" #include "s_struct.h" - -static uint8_t - get_builtin_id(const char bin[], - t_msh *msh) -{ - uint8_t i; - - i = 0; - while (msh->bu_ref[i] != NULL && ft_strncmp(bin, msh->bu_ref[i], - ft_strlen(msh->bu_ref[i]) + 1) != 0) - { - i++; - } - return (i); -} - -static void - e_line_destroy(t_line *ptr) -{ - if (ptr->pipes != NULL) - { - lpipes_clear(&ptr->pipes); - } -} +#include "u_utils.h" 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 (msh->pipes != NULL) + e_pipes(msh); + else if (msh->com != NULL) { - if ((previf == 0) || (previf == 1 && msh->ret == 0) || - (previf == 2 && msh->ret != 0)) - { - if (ptr->pipes != NULL) - e_pipes(ptr, msh); - else if (ptr->com != NULL) - { - if (ptr->com->bin != NULL && - (bu_id = get_builtin_id(ptr->com->bin, msh)) - < FT_BUILTINS_COUNT) - e_builtin(ptr->com, bu_id, msh); - else if (ptr->com->bin != NULL) - e_extern(ptr->com, msh); - } - } - else - e_line_destroy(ptr); - previf = ptr->nextif; - ptr = ptr->next; + if (msh->com->bin != NULL && + (bu_id = u_get_builtin_id(msh->com->bin)) + < FT_BUILTINS_COUNT) + e_builtin(msh->com, bu_id, msh); + else if (msh->com->bin != NULL) + e_extern(msh->com, msh); } } |