diff options
author | salad <fmoenne-@student.le-101.fr> | 2020-09-08 18:07:14 +0200 |
---|---|---|
committer | salad <fmoenne-@student.le-101.fr> | 2020-09-08 18:07:14 +0200 |
commit | e9d902e8d9475785952355e228dcffd223bac8be (patch) | |
tree | c4995c9e701f3128999849ccec88b0be84627800 /src/c_input.c | |
parent | added TODO, this is a baseline before reformatting (diff) | |
download | 42-minishell-e9d902e8d9475785952355e228dcffd223bac8be.tar.gz 42-minishell-e9d902e8d9475785952355e228dcffd223bac8be.tar.bz2 42-minishell-e9d902e8d9475785952355e228dcffd223bac8be.tar.xz 42-minishell-e9d902e8d9475785952355e228dcffd223bac8be.tar.zst 42-minishell-e9d902e8d9475785952355e228dcffd223bac8be.zip |
clean, ca fait ziz
Diffstat (limited to 'src/c_input.c')
-rw-r--r-- | src/c_input.c | 105 |
1 files changed, 49 insertions, 56 deletions
diff --git a/src/c_input.c b/src/c_input.c index a4b62ca..fa61c6a 100644 --- a/src/c_input.c +++ b/src/c_input.c @@ -11,76 +11,69 @@ /* ************************************************************************** */ #include <libft.h> -#include <stdio.h> -#include <stdlib.h> -#include <term.h> #include <unistd.h> -#include <sys/ioctl.h> +#include <term.h> #include "c_init.h" +#include "c_input.h" +#include "c_utils.h" #include "m_prompt.h" #include "m_loop.h" -#include "s_struct.h" -/* -** TODO: -** 1 : cleanup -** 2 : prompt on beginning -** 3 : c_set_term(0) on command -** 4 : MAKE IT WORK ON XTERM FFS -** 5 : leaks - */ -uint16_t - c_get_win_size(struct winsize *ws) +int16_t + c_new_line(char *buf, + char **line, + t_msh *msh, + t_caps *tcaps) { - - if (!(ioctl(STDOUT_FILENO, TIOCGWINSZ, ws))) - return (-1); - if (!ws->ws_col) - ws->ws_col = 80; - if (!ws->ws_row) - ws->ws_row = 80; - return (1); + write(1, buf, ft_strlen(buf)); + tputs(tgetstr("cr", NULL), 1, ft_putchar); + c_set_term_raw(0); + m_parse_and_run_line(*line, msh); + *line = NULL; + tcaps->cpos = 0; + tputs(tgetstr("cr", NULL), 1, ft_putchar); + c_set_term_raw(1); + m_prompt_psx(1, msh); + return (1); } -char *c_delchar(char *str, uint16_t cpos) +int16_t + c_back_slash(char **line, + t_caps *tcaps) { - char *dst; - uint16_t i; - uint16_t j; - - j = 0; - i = 0; - if (!(dst = malloc((ft_strlen(str)) * sizeof(char)))) - return (NULL); - cpos -= 1; - while (j < (ft_strlen(str) - 1)) - { - if (i == cpos) - i++; - dst[j] = str[i]; - i++; - j++; - } - dst[j] = '\0'; - return (dst); + if (tcaps->cpos >= 1) + { + *line = c_delchar(*line, tcaps->cpos); + tcaps->cpos -= 1; + tputs(tgetstr("le", NULL), 1, ft_putchar); + tputs(tgetstr("dc", NULL), 1, ft_putchar); + } + return (1); } int16_t - c_redraw_line(char *line, uint16_t cpos, t_msh *msh) + c_key_right(uint32_t len, + t_caps *tcaps) { - uint32_t i; - int16_t ret; + if (tcaps->cpos < len) + { + tputs(tgetstr("nd", NULL), 1, ft_putchar); + tcaps->cpos++; + } + return (1); +} - i = 0; - (void)cpos; - tputs(tgetstr("cr", NULL), 1, ft_putchar); - while (i < ft_strlen(msh->ps[0])) - { - tputs(tgetstr("nd", NULL), 1, ft_putchar); - i++; - } - ret = ft_printf("%s", line) + ft_strlen(msh->ps[0]); - return (ret); +int16_t + c_key_left(uint32_t len, + t_caps *tcaps) +{ + (void)len; + if (tcaps->cpos >= 1) + { + tputs(tgetstr("le", NULL), 1, ft_putchar); + tcaps->cpos--; + } + return (1); } |