summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsalad <fmoenne-@student.le-101.fr>2020-09-08 13:48:28 +0200
committersalad <fmoenne-@student.le-101.fr>2020-09-08 13:48:28 +0200
commit51c53e689a7084d2564ddb67d3b85af3a4818e78 (patch)
treee61c00ee014a8f92805c9123dc4ed31c834add87 /src
parentTODO tommorrow (diff)
download42-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
Diffstat (limited to 'src')
-rw-r--r--src/c_init.c12
-rw-r--r--src/c_input.c65
-rw-r--r--src/c_input.h5
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