aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dstr/ft_dstrnew.c14
-rw-r--r--src/dstr/ft_dstrwrap.c25
-rw-r--r--src/str/ft_split.c14
-rw-r--r--src/str/ft_splitf.c22
4 files changed, 56 insertions, 19 deletions
diff --git a/src/dstr/ft_dstrnew.c b/src/dstr/ft_dstrnew.c
index 8ae4a64..fe9ce46 100644
--- a/src/dstr/ft_dstrnew.c
+++ b/src/dstr/ft_dstrnew.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/03 13:54:52 by charles #+# #+# */
-/* Updated: 2020/04/04 19:50:38 by charles ### ########.fr */
+/* Updated: 2020/06/09 17:35:14 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -21,12 +21,12 @@
t_ftdstr *ft_dstrnew(char *from)
{
- t_ftdstr *dstr;
+ char *clone;
+ t_ftdstr *ret;
- if ((dstr = (t_ftdstr*)malloc(sizeof(t_ftdstr))) == NULL ||
- (dstr->str = ft_strdup(from)) == NULL)
+ if ((clone = ft_strdup(from)) == NULL)
return (NULL);
- dstr->length = ft_strlen(from);
- dstr->capacity = dstr->length + 1;
- return (dstr);
+ if ((ret = ft_dstrwrap(clone)) == NULL)
+ free(clone);
+ return (ret);
}
diff --git a/src/dstr/ft_dstrwrap.c b/src/dstr/ft_dstrwrap.c
new file mode 100644
index 0000000..0acf684
--- /dev/null
+++ b/src/dstr/ft_dstrwrap.c
@@ -0,0 +1,25 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_dstrwrap.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/06/09 17:32:30 by charles #+# #+# */
+/* Updated: 2020/06/09 17:33:57 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_dstr.h"
+
+t_ftdstr *ft_dstrwrap(char *str)
+{
+ t_ftdstr *dstr;
+
+ if ((dstr = (t_ftdstr*)malloc(sizeof(t_ftdstr))) == NULL)
+ return (NULL);
+ dstr->str = str;
+ dstr->length = ft_strlen(str);
+ dstr->capacity = dstr->length + 1;
+ return (dstr);
+}
diff --git a/src/str/ft_split.c b/src/str/ft_split.c
index 6fb5964..b61b09f 100644
--- a/src/str/ft_split.c
+++ b/src/str/ft_split.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/17 08:29:02 by cacharle #+# #+# */
-/* Updated: 2019/11/20 04:08:27 by cacharle ### ########.fr */
+/* Updated: 2020/06/09 17:14:58 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -33,16 +33,6 @@ static size_t count_segment(char const *s, char c)
return (counter);
}
-static void *destroy_strs(char **strs)
-{
- if (strs == NULL)
- return (NULL);
- while (*strs != NULL)
- free(*strs++);
- free(strs);
- return (NULL);
-}
-
char **ft_split(char const *s, char c)
{
char **strs;
@@ -65,7 +55,7 @@ char **ft_split(char const *s, char c)
while (s[j + i] && s[j + i] != c)
i++;
if ((strs[tab_counter++] = ft_strndup(&s[j], i)) == NULL)
- return (destroy_strs(strs));
+ return (ft_split_destroy(strs));
j += i - 1;
}
strs[tab_counter] = NULL;
diff --git a/src/str/ft_splitf.c b/src/str/ft_splitf.c
new file mode 100644
index 0000000..2a1afab
--- /dev/null
+++ b/src/str/ft_splitf.c
@@ -0,0 +1,22 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_splitf.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/06/09 17:45:52 by charles #+# #+# */
+/* Updated: 2020/06/09 17:47:17 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_str.h"
+
+char **ft_splitf(char *s, char delim)
+{
+ char **ret;
+
+ ret = ft_split(s, delim);
+ free(s);
+ return (ret);
+}