summaryrefslogtreecommitdiffstats
path: root/src/c_utils.c
diff options
context:
space:
mode:
authorsalad <fmoenne-@student.le-101.fr>2020-09-08 18:07:14 +0200
committersalad <fmoenne-@student.le-101.fr>2020-09-08 18:07:14 +0200
commite9d902e8d9475785952355e228dcffd223bac8be (patch)
treec4995c9e701f3128999849ccec88b0be84627800 /src/c_utils.c
parentadded TODO, this is a baseline before reformatting (diff)
download42-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_utils.c')
-rw-r--r--src/c_utils.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/c_utils.c b/src/c_utils.c
new file mode 100644
index 0000000..3eb7f4d
--- /dev/null
+++ b/src/c_utils.c
@@ -0,0 +1,91 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* c_utils.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 <stdio.h>
+#include <stdlib.h>
+#include <term.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+
+#include "c_init.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 (arrows + reset term)
+** 5 : leaks
+ */
+
+uint16_t
+ c_get_win_size(struct winsize *ws)
+{
+
+ 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,
+ uint16_t cpos)
+{
+ 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++;
+ }
+ free(str);
+ dst[j] = '\0';
+ return (dst);
+}
+
+int16_t
+ c_redraw_line(char *line,
+ uint16_t cpos,
+ t_msh *msh)
+{
+ uint32_t i;
+ int16_t 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", line) + ft_strlen(msh->ps[0]);
+ return (ret);
+}