/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* p_lblock.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include #include #include #include #include "d_define.h" #include "f_fail.h" #include "p_split.h" #include "s_line.h" #include "s_lpipes.h" #include "s_struct.h" int8_t p_line_block(const char line[], t_msh *msh) { /* TODO: norme */ uint64_t i; t_line_block *link; char **words; char *ptr; uint8_t nextif; t_bool next; i = 0; nextif = 0; if ((words = p_split_line((char*)line)) == NULL) return (-1); while (words[i] != NULL) { if (words[i][ft_strlen(words[i]) - 1] == '0') nextif = 0; else if (words[i][ft_strlen(words[i]) - 1] == '1') nextif = 1; else nextif = 2; words[i][ft_strlen(words[i]) - 1] = '\0'; next = FALSE; if ((ptr = ft_strchr(words[i], '|')) != NULL) { if ((link = s_line_new(NULL, 0)) == NULL) return (-1); if ((s_split_pipes(words[i], msh)) == NULL) return (-1); next = TRUE; } if (next == FALSE && (link = s_line_new(words[i], nextif)) == NULL) return (-1); s_line_add_back(&msh->curr, link); i++; } ft_delwords(words); return (0); }