aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/io/ft_getfile.c35
-rw-r--r--src/mem/ft_memjoin.c24
-rw-r--r--src/mem/ft_memjoinf1.c22
-rw-r--r--src/str/ft_split.c4
-rw-r--r--src/str/ft_strjoinf.c4
-rw-r--r--src/str/ft_strnew.c19
-rw-r--r--src/str/ft_strsdestroy.c (renamed from src/util/ft_split_destroy.c)14
-rw-r--r--src/str/ft_strsjoinf.c4
-rw-r--r--src/str/ft_strslen.c (renamed from src/util/ft_split_len.c)10
9 files changed, 101 insertions, 35 deletions
diff --git a/src/io/ft_getfile.c b/src/io/ft_getfile.c
index 891ea51..d3f697c 100644
--- a/src/io/ft_getfile.c
+++ b/src/io/ft_getfile.c
@@ -6,32 +6,35 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/05/11 09:52:32 by charles #+# #+# */
-/* Updated: 2020/05/11 10:15:12 by charles ### ########.fr */
+/* Updated: 2020/05/11 16:09:31 by charles ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft_io.h"
-char *ft_getfile(int fd)
+/*
+** \brief Read a file in a memory buffer
+** \param fd File descriptor to read from
+** \param mem Pointer to mem struct (buffer and buffer size)
+** \return -1 on error, 0 otherwise
+*/
+
+int ft_getfile(int fd, t_ftmem *mem)
{
- char *s;
- char buf[FT_GETFILE_BUFFER_SIZE + 1];
+ char buf[FT_GETFILE_BUFFER_SIZE];
int ret;
- if (fd < 0 || fd > OPEN_MAX)
- return (NULL);
- if ((s = ft_strdup("")) == NULL)
- return (NULL);
+ if (fd < 0 || fd > OPEN_MAX || mem == NULL
+ || (mem->data = malloc(1)) == NULL)
+ return (-1);
+ mem->size = 0;
while ((ret = read(fd, buf, FT_GETFILE_BUFFER_SIZE)) > 0)
{
- buf[ret] = '\0';
- if ((s = ft_strjoinf(s, buf, FT_STRJOINF_FST)) == NULL)
- return (NULL);
+ if ((mem->data = ft_memjoinf1(mem->data, mem->size, buf, ret)) == NULL)
+ return (-1);
+ mem->size += ret;
}
if (ret == -1)
- {
- free(s);
- return (NULL);
- }
- return (s);
+ free(mem->data);
+ return (ret);
}
diff --git a/src/mem/ft_memjoin.c b/src/mem/ft_memjoin.c
new file mode 100644
index 0000000..a31a812
--- /dev/null
+++ b/src/mem/ft_memjoin.c
@@ -0,0 +1,24 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_memjoin.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/11 15:09:47 by charles #+# #+# */
+/* Updated: 2020/05/11 15:14:08 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_mem.h"
+
+void *ft_memjoin(void *m1, size_t m1_size, void *m2, size_t m2_size)
+{
+ void *joined;
+
+ if ((joined = malloc(m1_size + m2_size)) == NULL)
+ return (NULL);
+ ft_memcpy(joined, m1, m1_size);
+ ft_memcpy(joined + m1_size, m2, m2_size);
+ return (joined);
+}
diff --git a/src/mem/ft_memjoinf1.c b/src/mem/ft_memjoinf1.c
new file mode 100644
index 0000000..8b4db92
--- /dev/null
+++ b/src/mem/ft_memjoinf1.c
@@ -0,0 +1,22 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_memjoinf1.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/05/11 15:18:57 by charles #+# #+# */
+/* Updated: 2020/05/11 15:20:06 by charles ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "libft_mem.h"
+
+void *ft_memjoinf1(void *m1, size_t m1_size, void *m2, size_t m2_size)
+{
+ void *joined;
+
+ joined = ft_memjoin(m1, m1_size, m2, m2_size);
+ free(m1);
+ return (joined);
+}
diff --git a/src/str/ft_split.c b/src/str/ft_split.c
index 0cb08e4..5d164d4 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: 2020/05/08 13:39:31 by charles ### ########.fr */
+/* Updated: 2020/05/11 15:54:10 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -55,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 (ft_split_destroy(strs));
+ return (ft_strsdestroy(strs));
j += i - 1;
}
strs[tab_counter] = NULL;
diff --git a/src/str/ft_strjoinf.c b/src/str/ft_strjoinf.c
index 228a963..adf9825 100644
--- a/src/str/ft_strjoinf.c
+++ b/src/str/ft_strjoinf.c
@@ -6,12 +6,10 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/14 03:41:07 by cacharle #+# #+# */
-/* Updated: 2020/02/14 03:41:25 by cacharle ### ########.fr */
+/* Updated: 2020/05/11 15:20:31 by charles ### ########.fr */
/* */
/* ************************************************************************** */
-#include <stdlib.h>
-#include "libft.h"
#include "libft_str.h"
char *ft_strjoinf(char const *s1, char const *s2, t_ftstrjoinf_tag tag)
diff --git a/src/str/ft_strnew.c b/src/str/ft_strnew.c
index 1bca6d5..f0d2221 100644
--- a/src/str/ft_strnew.c
+++ b/src/str/ft_strnew.c
@@ -6,13 +6,26 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2019/10/07 10:17:34 by cacharle #+# #+# */
-/* Updated: 2019/11/20 03:16:14 by cacharle ### ########.fr */
+/* Updated: 2020/05/11 15:28:15 by charles ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
-char *ft_strnew(size_t size)
+/*
+** \brief Create a new null-terminated string
+** \param len String length
+** \return Allocated string or NULL is allocation failed
+** \note This implementation doesn't follow the subject
+** because zeroing every byte is too inefficient
+*/
+
+char *ft_strnew(size_t len)
{
- return ((char*)ft_calloc(size + 1, sizeof(char)));
+ char *s;
+
+ if ((s = (char*)malloc(sizeof(char) * (len + 1))) == NULL)
+ return (NULL);
+ s[len] = '\0';
+ return (s);
}
diff --git a/src/util/ft_split_destroy.c b/src/str/ft_strsdestroy.c
index bc3f4e6..bb2204c 100644
--- a/src/util/ft_split_destroy.c
+++ b/src/str/ft_strsdestroy.c
@@ -1,18 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
-/* ft_split_destroy.c :+: :+: :+: */
+/* ft_strsdestroy.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/27 16:30:55 by cacharle #+# #+# */
-/* Updated: 2020/02/27 17:52:31 by cacharle ### ########.fr */
+/* Updated: 2020/05/11 15:53:49 by charles ### ########.fr */
/* */
/* ************************************************************************** */
-#include "libft_util.h"
+#include "libft_str.h"
-void *ft_split_destroy(char **strs)
+/*
+** \brief Destroy a NULL-terminated array of malloc'd string
+** \param strs Strings to destroy
+** \return NULL (so that it can be used in return statement)
+*/
+
+void *ft_strsdestroy(char **strs)
{
int i;
diff --git a/src/str/ft_strsjoinf.c b/src/str/ft_strsjoinf.c
index 36a2892..c1a0623 100644
--- a/src/str/ft_strsjoinf.c
+++ b/src/str/ft_strsjoinf.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/04 14:27:33 by charles #+# #+# */
-/* Updated: 2020/04/04 23:24:24 by charles ### ########.fr */
+/* Updated: 2020/05/11 15:54:33 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -24,6 +24,6 @@ char *ft_strsjoinf(char **strs, char *delim)
char *ret;
ret = ft_strsjoin(strs, delim);
- ft_split_destroy(strs);
+ ft_strsdestroy(strs);
return (ret);
}
diff --git a/src/util/ft_split_len.c b/src/str/ft_strslen.c
index 090a0c9..0268033 100644
--- a/src/util/ft_split_len.c
+++ b/src/str/ft_strslen.c
@@ -1,23 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
-/* ft_split_len.c :+: :+: :+: */
+/* ft_strslen.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/05/10 20:58:46 by charles #+# #+# */
-/* Updated: 2020/05/10 21:02:08 by charles ### ########.fr */
+/* Updated: 2020/05/11 15:49:40 by charles ### ########.fr */
/* */
/* ************************************************************************** */
-#include "libft_util.h"
+#include "libft_str.h"
-size_t ft_split_len(char **split)
+size_t ft_strslen(char **strs)
{
size_t count;
count = 0;
- while (split[count] != NULL)
+ while (strs[count] != NULL)
count++;
return (count);
}