From 426399f98b6cf68c2eee448de49ea091ac7a0562 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 1 Oct 2020 19:14:01 +0200 Subject: Normed m_loop --- src/m_loop_next.c | 176 ++---------------------------------------------------- 1 file changed, 5 insertions(+), 171 deletions(-) (limited to 'src/m_loop_next.c') diff --git a/src/m_loop_next.c b/src/m_loop_next.c index b312c0b..a31e850 100644 --- a/src/m_loop_next.c +++ b/src/m_loop_next.c @@ -15,78 +15,12 @@ #include #include "d_define.h" -#include "m_loop_next.h" -#include "m_prompt.h" +#include "m_loop_counter.h" +#include "m_loop_multis.h" #include "s_struct.h" #include "u_utils.h" -static char - *m_counter_line_backslash(int32_t fd, uint8_t psx, char *line, t_msh *msh) -{ - char *counter_line; - - if (fd == STDIN_FILENO) - m_prompt_psx(psx, msh); - get_next_line(fd, &counter_line); - if (counter_line[0] != C_NUL) - { - line = ft_nrealloc(line, - ft_strlen(line) + 1, - ft_strlen(line) + ft_strlen(counter_line)); - ft_memcpy(line + ft_strlen(line) - 1, - counter_line, - ft_strlen(counter_line) + 1); - } - ft_memdel((void*)&counter_line); - return (line); -} - -static char - *m_counter_line_pipes(int32_t fd, uint8_t psx, char *line, t_msh *msh) -{ - char *counter_line; - - if (fd == STDIN_FILENO) - m_prompt_psx(psx, msh); - get_next_line(fd, &counter_line); - if (counter_line[0] != C_NUL) - { - line = ft_nrealloc(line, - ft_strlen(line) + 1, - ft_strlen(line) + ft_strlen(counter_line) + 1); - ft_memcpy(line + ft_strlen(line), - counter_line, - ft_strlen(counter_line) + 1); - } - ft_memdel((void*)&counter_line); - return (line); -} - -static char - *m_counter_line_quotes(int32_t fd, uint8_t psx, char *line, t_msh *msh) -{ - char *counter_line; - - if (fd == STDIN_FILENO) - m_prompt_psx(psx, msh); - get_next_line(fd, &counter_line); - if (counter_line[0] != C_NUL) - { - line = ft_nrealloc(line, - ft_strlen(line) + 1, - ft_strlen(line) + ft_strlen(counter_line) + 2); - line[ft_strlen(line) + 1] = '\0'; - line[ft_strlen(line)] = '\n'; - ft_memcpy(line + ft_strlen(line), - counter_line, - ft_strlen(counter_line) + 1); - } - ft_memdel((void*)&counter_line); - return (line); -} - -char - *m_check_multi_backslash(int32_t fd, char line[], t_msh *msh) +char *m_check_multi_backslash(int32_t fd, char line[], t_msh *msh) { if (line[ft_strlen(line) - 1] == '\\') { @@ -96,8 +30,7 @@ char return (line); } -char - *m_check_multi_pipe(int32_t fd, char line[], t_msh *msh) +char *m_check_multi_pipe(int32_t fd, char line[], t_msh *msh) { char *pipe; @@ -119,8 +52,7 @@ char return (line); } -char - *m_check_multi_and(int32_t fd, char line[], t_msh *msh) +char *m_check_multi_and(int32_t fd, char line[], t_msh *msh) { char *and; @@ -142,101 +74,3 @@ char } return (line); } - -static t_bool - m_check_dquote(char **ptr, char line[]) -{ - if (((*ptr - line) == 0) || - ((*ptr - line) == 1 && *(*ptr - 1) == C_BACKS) || - ((*ptr - line) > 1 && *(*ptr - 1) == C_BACKS && *(*ptr - 2) != C_BACKS)) - { - return (FALSE); - } - else - { - return (TRUE); - } -} - -static t_bool - m_find_next_quote(char **ptr, char line[], t_quote_mode mode) -{ - char c; - - if (mode == Q_NONE) - return (FALSE); - c = (mode == Q_SINGLE) ? (C_SQUOTE) : (C_DQUOTE); - (*ptr) += 1; - while (**ptr != C_NUL) - { - if (**ptr == c && c == C_DQUOTE) - { - if (m_check_dquote(ptr, line) == FALSE) - { - (*ptr)++; - if (**ptr == C_NUL) - break ; - } - else - return (FALSE); - } - else if (**ptr == c && c == C_SQUOTE) - return (FALSE); - (*ptr)++; - } - return (TRUE); -} - -static t_bool - m_check_missing_quotes(char line[]) -{ - char *ptr; - t_quote_mode mode; - - ptr = line; - mode = Q_NONE; - while (*ptr != C_NUL) - { - if (*ptr == C_SQUOTE || *ptr == C_DQUOTE) - { - if (u_is_not_escaped(line, ptr) == TRUE) - { - mode = (*ptr == C_SQUOTE) ? (Q_SINGLE) : (Q_DOUBLE); - if (m_find_next_quote(&ptr, line, mode) == FALSE) - mode = Q_NONE; - else - return (TRUE); - } - } - ptr++; - } - return (FALSE); -} - -char - *m_check_multi_quotes(int32_t fd, char line[], t_msh *msh) -{ - t_bool reparse; - - reparse = FALSE; - reparse = m_check_missing_quotes(line); - if (reparse == TRUE) - { - line = m_counter_line_quotes(fd, 2, line, msh); - line = m_check_multi_backslash(fd, line, msh); - line = m_check_multi_pipe(fd, line, msh); - line = m_check_multi_and(fd, line, msh); - line = m_check_multi_quotes(fd, line, msh); - } - return (line); -} - -char *m_check_multis(int32_t fd, char line[], t_msh *msh) -{ - line = m_check_multi_backslash(fd, line, msh); - line = m_check_multi_pipe(fd, line, msh); - line = m_check_multi_and(fd, line, msh); - line = m_check_multi_quotes(fd, line, msh); - - return (line); -} -- cgit v1.2.3