diff options
author | salad <fmoenne-@student.le-101.fr> | 2020-09-08 13:48:28 +0200 |
---|---|---|
committer | salad <fmoenne-@student.le-101.fr> | 2020-09-08 13:48:28 +0200 |
commit | 51c53e689a7084d2564ddb67d3b85af3a4818e78 (patch) | |
tree | e61c00ee014a8f92805c9123dc4ed31c834add87 | |
parent | TODO tommorrow (diff) | |
download | 42-minishell-51c53e689a7084d2564ddb67d3b85af3a4818e78.tar.gz 42-minishell-51c53e689a7084d2564ddb67d3b85af3a4818e78.tar.bz2 42-minishell-51c53e689a7084d2564ddb67d3b85af3a4818e78.tar.xz 42-minishell-51c53e689a7084d2564ddb67d3b85af3a4818e78.tar.zst 42-minishell-51c53e689a7084d2564ddb67d3b85af3a4818e78.zip |
delchar in progress
-rw-r--r-- | src/c_init.c | 12 | ||||
-rw-r--r-- | src/c_input.c | 65 | ||||
-rw-r--r-- | src/c_input.h | 5 |
3 files changed, 53 insertions, 29 deletions
diff --git a/src/c_init.c b/src/c_init.c index f4b130d..0044f98 100644 --- a/src/c_init.c +++ b/src/c_init.c @@ -103,13 +103,15 @@ int16_t exit(0); } line = ft_strjoin_m(line, buf); - c_redraw_line(line, msh); + c_redraw_line(line, tcaps->cpos, msh); + tcaps->cpos++; } else { if (strncmp(buf, tgetstr("kr", NULL), ft_strlen(tgetstr("kr", NULL))) == 0) { tputs(tgetstr("nd", NULL), 1, ft_putchar); + tcaps->cpos++; return (1); } else if (buf[0] == '\n') @@ -118,6 +120,7 @@ int16_t tputs(tgetstr("cr", NULL), 1, ft_putchar); m_parse_and_run_line(line, msh); line = NULL; + tcaps->cpos = 0; tputs(tgetstr("cr", NULL), 1, ft_putchar); m_prompt_psx(1, msh); return (1); @@ -125,11 +128,12 @@ int16_t else if (strncmp(buf, tgetstr("kl", NULL), ft_strlen(tgetstr("kl", NULL))) == 0) { tputs(tgetstr("le", NULL), 1, ft_putchar); + tcaps->cpos--; return (1); } else if (strncmp(buf, tgetstr("kb", NULL), ft_strlen(tgetstr("kb", NULL))) == 0) { - c_delchar(line, tcaps); + line = c_delchar(line, tcaps->cpos); tputs(tgetstr("le", NULL), 1, ft_putchar); tputs(tgetstr("dc", NULL), 1, ft_putchar); return (1); @@ -150,10 +154,12 @@ int16_t c_init_tcaps(t_msh *msh) term = getenv("TERM"); if (!tgetent(bp, term)) return (-1); - + tcaps.cpos = 0; ft_printf("my term is %s", term); c_set_term_raw(1); c_get_struct(1, &tcaps); + if (!(c_get_win_size(&tcaps.ws))) + return (-1); while (1) { ft_bzero(nread, 5); diff --git a/src/c_input.c b/src/c_input.c index 5c9413b..abe6314 100644 --- a/src/c_input.c +++ b/src/c_input.c @@ -12,6 +12,7 @@ #include <libft.h> #include <stdio.h> +#include <stdlib.h> #include <term.h> #include <unistd.h> #include <sys/ioctl.h> @@ -25,40 +26,56 @@ uint16_t c_get_win_size(struct winsize *ws) { - ioctl(STDOUT_FILENO, TIOCGWINSZ, ws); - if (!ws->ws_col) - ws->ws_col = 80; - if (!ws->ws_row) - ws->ws_row = 80; - return (ws->ws_col); + 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); } -char *c_delchar(char *str, t_caps *tcaps) +char *c_delchar(char *str, uint16_t cpos) { - uint16_t col; + char *dst; + uint16_t i; + uint16_t j; - col = c_get_win_size(&tcaps->ws); - ft_printf("%hu\n", col); - col = - return (str); + j = 0; + i = 0; + if (!(dst = malloc((ft_strlen(str)) * sizeof(char)))) + return (NULL); + ft_printf("%d\n", cpos); + while (j < (ft_strlen(str) - 1)) + { + if (i == cpos) + i++; + dst[j] = str[i]; + i++; + j++; + } + dst[j] = '\0'; + ft_printf("dst : [%s]\n", dst); + return (dst); } /* TODO: pos += 1 lettre / -1 si kl / +1 kr del*/ int16_t - c_redraw_line(char *line, t_msh *msh) + c_redraw_line(char *line, uint16_t cpos, t_msh *msh) { - uint32_t i; - int16_t ret; + uint32_t i; + int16_t ret; - i = 0; - 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); + 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, %hu", line, cpos) + ft_strlen(msh->ps[0]); + return (ret); } diff --git a/src/c_input.h b/src/c_input.h index 2d8d3ba..e592ace 100644 --- a/src/c_input.h +++ b/src/c_input.h @@ -15,7 +15,8 @@ #include "s_struct.h" -int16_t c_redraw_line(char *line, t_msh *msh); -char *c_delchar(char *str, t_caps *tcaps); +int16_t c_redraw_line(char *line, uint16_t cpos, t_msh *msh); +char *c_delchar(char *str, uint16_t cpos); +uint16_t c_get_win_size(struct winsize *ws); #endif |