summaryrefslogtreecommitdiffstats
path: root/src/ft_b_echo.c
diff options
context:
space:
mode:
authorsalad <fmoenne-@student.le-101.fr>2020-04-27 18:03:24 +0200
committersalad <fmoenne-@student.le-101.fr>2020-04-27 18:03:24 +0200
commit455cccbe4e754045a3ebc422c0b675a1d3a3b0a9 (patch)
tree195c8479b4a3134b12ef73b20a04416e717d9ecf /src/ft_b_echo.c
parentdirty dirty work (diff)
download42-minishell-455cccbe4e754045a3ebc422c0b675a1d3a3b0a9.tar.gz
42-minishell-455cccbe4e754045a3ebc422c0b675a1d3a3b0a9.tar.bz2
42-minishell-455cccbe4e754045a3ebc422c0b675a1d3a3b0a9.tar.xz
42-minishell-455cccbe4e754045a3ebc422c0b675a1d3a3b0a9.tar.zst
42-minishell-455cccbe4e754045a3ebc422c0b675a1d3a3b0a9.zip
fecho full buffered, quotes bav
Diffstat (limited to '')
-rw-r--r--src/ft_b_echo.c49
1 files changed, 37 insertions, 12 deletions
diff --git a/src/ft_b_echo.c b/src/ft_b_echo.c
index c849924..8a2d0d7 100644
--- a/src/ft_b_echo.c
+++ b/src/ft_b_echo.c
@@ -12,6 +12,7 @@
#include <libft.h>
#include <stdint.h>
+#include <stdio.h>
#include <stdlib.h>
#include "ft_s_struct.h"
@@ -22,6 +23,37 @@
/* echo kill\nbackslash\nbut\nnot\nn, echo "quoted\nnew\nlines" */
/* Might need to go full buffer */
+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 = malloc(len * sizeof(char))))
+ return (NULL);
+ return (str);
+}
+
+void
+ft_e_fill(char *ptr[], char **str)
+{
+ ft_sprintf(*str, "%s", *ptr);
+ ptr++;
+ while (*ptr)
+ {
+ ft_sprintf(*str + ft_strlen(*str), " %s", *ptr);
+ ptr++;
+ }
+ *str = ft_strtrim(*str, "\"\'");
+}
+
uint8_t
ft_b_echo(char *args[],
t_msh *msh)
@@ -34,7 +66,8 @@ uint8_t
(void)msh;
ptr = args;
nopt = 0;
- str = malloc(1000);
+ str = NULL;
+ str = ft_e_initb(ptr, str);
if (argc >= 1)
{
if (ft_strncmp(ptr[0], "-n", 2) == 0)
@@ -43,18 +76,10 @@ uint8_t
ptr += 1;
}
if (argc - nopt >= 1)
- {
- ft_sprintf(str, "%s", *ptr);
- ptr++;
- while (*ptr)
- {
- ft_sprintf(str + ft_strlen(str), " %s", *ptr);
- ptr++;
- }
- }
+ ft_e_fill(ptr, &str);
}
- str = ft_strtrim(str, "\"\'");
- ft_putstr(str);
+ ft_printf("%s", str);
+ free(str);
if (nopt == 0)
ft_printf("\n");
return (0);