From afa9544b6c00285dd2f77bb1e852d8f0e95d42b6 Mon Sep 17 00:00:00 2001 From: salad Date: Wed, 30 Sep 2020 18:34:32 +0200 Subject: call a plumber --- src/c_init.c | 17 +++++++++-------- src/c_input.c | 2 +- src/c_utils.c | 21 +++++++++++---------- src/c_utils.h | 2 +- 4 files changed, 22 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/c_init.c b/src/c_init.c index d78a8f2..d50daf4 100644 --- a/src/c_init.c +++ b/src/c_init.c @@ -91,9 +91,11 @@ char int i; i = -1; - if (line == NULL) + if (line == NULL || line[0] == '\0') + { if (!(line = ft_calloc(1, sizeof(char)))) return (NULL); + } if (ft_isprint(buf[0])) { line = c_insert_char(line, buf[0], tcaps); @@ -104,11 +106,15 @@ char { c_back_slash(&line, ft_strlen(msh->ps[0]), tcaps); } + else if (buf[0] == '\n') + { + return (c_new_line(line, tcaps, msh)); + } else { c_read_cap(buf, line, tcaps, msh); } - return (ft_strdup(line)); + return (line); } int16_t @@ -128,7 +134,7 @@ int16_t tputs(tgetstr("cr", NULL), 1, ft_putchar); m_prompt_psx(1, msh); signal(SIGINT, SIG_IGN); - ft_bzero(nread, 5); + ft_bzero(nread, 5); if (!(c_get_win_size(&tcaps.ws))) return (-1); while (!(ft_strchr(nread, '\n'))) @@ -138,11 +144,6 @@ int16_t return (0); else *line = c_process_key(nread, &tcaps, msh); - if (*line == NULL) - { - ft_printf("FUCK"); - return (0); - } tputs(tgetstr("ve", NULL), 1, ft_putchar); } return (1); diff --git a/src/c_input.c b/src/c_input.c index 10451bc..7c6d351 100644 --- a/src/c_input.c +++ b/src/c_input.c @@ -105,6 +105,6 @@ int16_t (void)tcaps; (void)line; msh->ret = 130; - c_new_line(NULL, msh, tcaps); + c_new_line(NULL, tcaps, msh); return (1); } diff --git a/src/c_utils.c b/src/c_utils.c index 8bc940e..78b923a 100644 --- a/src/c_utils.c +++ b/src/c_utils.c @@ -30,25 +30,26 @@ ** C-c globul pid */ -int16_t - c_new_line(char *line, - t_msh *msh, - t_caps *tcaps) +char + *c_new_line(char *line, + t_caps *tcaps, + t_msh *msh) { + char *ret; + + (void)msh; + ret = NULL; write(1, "\n", 1); tputs(tgetstr("cr", NULL), 1, ft_putchar); c_set_term_raw(0); if (line != NULL) { - m_parse_and_run_line(line, msh); - line = NULL; - free(line); + ret = ft_strdup(line); + line[0] = '\0'; } tcaps->cpos = 0; tputs(tgetstr("cr", NULL), 1, ft_putchar); - c_set_term_raw(1); - m_prompt_psx(1, msh); - return (1); + return (ret); } char diff --git a/src/c_utils.h b/src/c_utils.h index 9680b90..e6410a3 100644 --- a/src/c_utils.h +++ b/src/c_utils.h @@ -15,7 +15,7 @@ #include "s_struct.h" -int16_t c_new_line(char *line, t_msh *msh, t_caps *tcaps); +char *c_new_line(char *line, t_caps *tcaps, t_msh *msh); char *c_insert_char(char *str, char c, t_caps *tcaps); char *c_delchar(char *str, uint16_t cpos); int16_t c_redraw_line(char *line, t_caps *tcaps, t_msh *msh); -- cgit v1.2.3