summaryrefslogtreecommitdiffstats
path: root/src/ft_m_loop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ft_m_loop.c')
-rw-r--r--src/ft_m_loop.c126
1 files changed, 0 insertions, 126 deletions
diff --git a/src/ft_m_loop.c b/src/ft_m_loop.c
deleted file mode 100644
index 3f40fba..0000000
--- a/src/ft_m_loop.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* ************************************************************************** */
-/* */
-/* ::: :::::::: */
-/* ft_m_loop.c :+: :+: :+: */
-/* +:+ +:+ +:+ */
-/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
-/* +#+#+#+#+#+ +#+ */
-/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
-/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
-/* */
-/* ************************************************************************** */
-
-#include <libft.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "ft_e_lcom.h"
-#include "ft_m_prompt.h"
-#include "ft_p_line.h"
-#include "ft_s_lcom.h"
-
-
-static char
- *ft_strjoin_m(char *s1,
- char *s2,
- uint8_t mode)
-{
- size_t i;
- size_t j;
- size_t size1;
- size_t size2;
- char *dst;
-
- i = -1;
- j = -1;
- size1 = ft_strlen(s1);
- size2 = ft_strlen(s2) + 1;
- if (!(dst = (char*)malloc((size1 + size2 + 2) * sizeof(char))))
- return (NULL);
- while (++i < size1)
- dst[i] = s1[i];
- (mode == 0) ? dst[i++] = '\n' : 0;
- while (++j < size2)
- dst[i + j] = s2[j];
- dst[i + j] = '\0';
- (mode == 0) ? ft_memdel((void*)&s1) : ft_memdel((void*)&s2);
- return (dst);
-}
-
-void
- ft_m_loop_cont(t_msh *msh,
- char *line,
- char *quote,
- int8_t gnl)
-{
- char *prog;
- char *buf;
- char *fin;
-
- if (!(prog = ft_calloc(ft_strlen(line) + 1, sizeof(char))) ||
- !(buf = ft_strdup(line + (quote - line) + 1)))
- return ;
- ft_memcpy(prog, line, (quote - line));
- while (gnl > 0 && ((!(quote = ft_strrchr(buf, '\"'))) &&
- (!(quote = ft_strrchr(buf, '\'')))))
- {
- ft_m_cont_prompt();
- gnl = get_next_line(STDIN_FILENO, &line);
- buf = ft_strjoin_m(buf, line, 0);
- ft_memdel((void*)&line);
- }
- fin = ft_strtrim(buf, "\"'");
- ft_memdel((void*)&buf);
- fin = (ft_strrchr(fin, '\'')) ? ft_strsubst(fin, "\'", "") : fin;
- fin = ft_strjoin_m(prog, fin, 1);
- ft_p_line(fin, msh);
- ft_memdel((void*)&prog);
- ft_memdel((void*)&fin);
- ft_e_lcom(msh);
- ft_lcom_clear(&msh->curr);
-}
-
-uint8_t
- ft_m_loop(t_msh *msh)
-{
- char *line;
- char *quote;
- int8_t gnl;
- int32_t pipefd[2];
-
- gnl = 1;
- pipefd[0] = STDOUT_FILENO;
- pipefd[1] = STDIN_FILENO;
- while (gnl > 0)
- {
- ft_m_prompt(msh);
- gnl = get_next_line(STDIN_FILENO, &line);
- if (line[0] != '\0')
- {
- if (!(quote = ft_strchr(line, '\'')) && !(quote = ft_strchr(line, '\"')))
- {
- ft_p_line(line, msh);
- ft_memdel((void*)&line);
- ft_e_lcom(msh);
- ft_lcom_clear(&msh->curr);
- }
- else
- {
- ft_m_loop_cont(msh, line, quote, 1);
- if (line != NULL)
- ft_memdel((void*)&line);
- }
- /* TODO: (null): Bad address on "msh ~> echo a > asd; cat < asd" but not on "msh ~> echo a > asd; cat asd" */
- /* TODO: GNL 25 leak on "msh ~> exit" | gl hf */
- /* TODO: "msh ~> some command \": re GNL into ft_nrealloc */
- /* TODO: the chad pipes | */
- /* TODO: a histfile would be nice */
- }
- else
- {
- ft_memdel((void*)&line);
- }
- }
- return (msh->ret);
-}