summaryrefslogtreecommitdiffstats
path: root/src/ft_b_echo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ft_b_echo.c')
-rw-r--r--src/ft_b_echo.c85
1 files changed, 73 insertions, 12 deletions
diff --git a/src/ft_b_echo.c b/src/ft_b_echo.c
index bca20ac..de5431f 100644
--- a/src/ft_b_echo.c
+++ b/src/ft_b_echo.c
@@ -12,13 +12,70 @@
#include <libft.h>
#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
#include "ft_s_struct.h"
#include "ft_u_utils.h"
-/* TODO: echo "quoted text", echo 'quoted text', */
-/* echo kill\nbackslash\nbut\nnot\nn, echo "quoted\nnew\nlines" */
-/* Might need to go full buffer */
+/* TODO: echo "quoted text", echo 'quoted text', done*/
+/* echo kill\nbackslash\nbut\nnot\nn, echo "quoted\nnew\nlines", done */
+/* full buffer */
+
+void
+ ft_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
+ *ft_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 */
+/* ft_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, '\\'))) */
+/* { */
+/* ft_e_put(*str, 0); */
+/* } */
+/* else */
+/* ft_printf("%s", *str); */
+/* } */
+/***********************************************/
uint8_t
ft_b_echo(char *args[],
@@ -26,11 +83,14 @@ uint8_t
{
const uint64_t argc = ft_get_argc((const char **)args);
char **ptr;
+ char *str;
int8_t nopt;
(void)msh;
ptr = args;
nopt = 0;
+ str = NULL;
+ str = ft_e_initb(ptr, str);
if (argc >= 1)
{
if (ft_strncmp(ptr[0], "-n", 2) == 0)
@@ -39,16 +99,17 @@ uint8_t
ptr += 1;
}
if (argc - nopt >= 1)
- {
- ft_printf("%s", *ptr);
- ptr++;
- while (*ptr)
- {
- ft_printf(" %s", *ptr);
- ptr++;
- }
- }
+ {
+ ft_printf("%s", *ptr);
+ ptr++;
+ while (*ptr)
+ {
+ ft_printf(" %s", *ptr);
+ ptr++;
+ }
+ }
}
+ free(str);
if (nopt == 0)
ft_printf("\n");
return (0);