From 487a66394061f2d14a2fa421302966b5442d643f Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Mon, 27 Jul 2020 18:55:07 +0200 Subject: I couldn't see shit --- src/b_echo.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/b_echo.c (limited to 'src/b_echo.c') diff --git a/src/b_echo.c b/src/b_echo.c new file mode 100644 index 0000000..a02dad5 --- /dev/null +++ b/src/b_echo.c @@ -0,0 +1,116 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* b_echo.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include + +#include "s_struct.h" +#include "u_utils.h" + +/* TODO: echo "quoted text", echo 'quoted text', done*/ +/* echo kill\nbackslash\nbut\nnot\nn, echo "quoted\nnew\nlines", done */ +/* full buffer */ + +void + e_put(char *str, + uint8_t op) +{ + size_t i; + + i = -1; + if (op == 0) + while (str[++i]) + { + if (str[i] == '\\') + i++; + ft_putchar(str[i]); + } +} + +char + *e_initb(char *ptr[], + char *str) +{ + size_t len; + uint8_t i; + + len = 0; + i = -1; + while (ptr[++i]) + { + len += ft_strlen(ptr[i]); + } + if (!(str = (char*)malloc(len * sizeof(char)))) + return (NULL); + return (str); +} + +/***********************************************/ +/* void */ +/* e_fill(char *ptr[], char **str) */ +/* { */ +/* char *bs; */ +/* */ +/* ft_sprintf(*str, "%s", *ptr); */ +/* if (*str[0] == '\"' || *str[0] == '\'') */ +/* { */ +/* *str = ft_strtrim(*str, "\"\'"); */ +/* ft_printf("%s", *str); */ +/* } */ +/* else if ((bs = ft_strrchr(*str, '\\'))) */ +/* { */ +/* e_put(*str, 0); */ +/* } */ +/* else */ +/* ft_printf("%s", *str); */ +/* } */ +/***********************************************/ + +uint8_t + b_echo(char *args[], + t_msh *msh) +{ + const uint64_t argc = get_argc((const char **)args); + char **ptr; + char *str; + int8_t nopt; + + (void)msh; + ptr = args; + nopt = 0; + str = NULL; + str = e_initb(ptr, str); + if (argc >= 1) + { + if (ft_strncmp(ptr[0], "-n", 2) == 0) + { + nopt = 1; + ptr += 1; + } + if (argc - nopt >= 1) + { + ft_printf("%s", *ptr); + ptr++; + while (*ptr) + { + ft_printf(" %s", *ptr); + ptr++; + } + } + } + free(str); + if (nopt == 0) + ft_printf("\n"); + return (0); +} -- cgit v1.2.3