aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-05-11 16:14:38 +0200
committerCharles <sircharlesaze@gmail.com>2020-05-11 16:14:38 +0200
commitb9f000a80cbba38b8f21c9737a42f07573ec7b91 (patch)
tree7068e7188dab0a710ae79d71800b329ab655e3eb
parenta4b9cda7d6733f2b077f8586e3b3e69351e7dfba (diff)
downloadlibft-b9f000a80cbba38b8f21c9737a42f07573ec7b91.tar.gz
libft-b9f000a80cbba38b8f21c9737a42f07573ec7b91.tar.bz2
libft-b9f000a80cbba38b8f21c9737a42f07573ec7b91.zip
Moved util/ft_split* in str, Added ft_memjoin and ft_memjoinf1, Modified ft_getfile so that it can read non-ascii file
-rw-r--r--include/libft_io.h31
-rw-r--r--include/libft_mem.h34
-rw-r--r--include/libft_rbt.h3
-rw-r--r--include/libft_str.h5
-rw-r--r--src/io/ft_getfile.c35
-rw-r--r--src/mem/ft_memjoin.c24
-rw-r--r--src/mem/ft_memjoinf1.c (renamed from include/libft_util.h)24
-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
13 files changed, 132 insertions, 79 deletions
diff --git a/include/libft_io.h b/include/libft_io.h
index ce3c632..b64603b 100644
--- a/include/libft_io.h
+++ b/include/libft_io.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:35:43 by cacharle #+# #+# */
-/* Updated: 2020/05/11 09:57:42 by charles ### ########.fr */
+/* Updated: 2020/05/11 16:12:41 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -17,23 +17,30 @@
# include <stdlib.h>
# include <limits.h>
# include "libft.h"
+# include "libft_def.h"
-void ft_putendl(char *s);
-void ft_putchar(char c);
-void ft_putstr(char const *s);
-void ft_putnbr(int n);
-void ft_putchar_fd(char c, int fd);
-void ft_putstr_fd(char *s, int fd);
-void ft_putendl_fd(char *s, int fd);
-void ft_putnbr_fd(int n, int fd);
+void ft_putendl(char *s);
+void ft_putchar(char c);
+void ft_putstr(char const *s);
+void ft_putnbr(int n);
+void ft_putchar_fd(char c, int fd);
+void ft_putstr_fd(char *s, int fd);
+void ft_putendl_fd(char *s, int fd);
+void ft_putnbr_fd(int n, int fd);
-char ft_getchar(void);
+char ft_getchar(void);
# ifndef FT_GETFILE_BUFFER_SIZE
# define FT_GETFILE_BUFFER_SIZE 64
# endif
-char *ft_getfile(int fd);
+typedef struct s_ftmem
+{
+ void *data;
+ size_t size;
+} t_ftmem;
+
+int ft_getfile(int fd, t_ftmem *mem);
# ifndef FT_GETLINE_BUFFER_SIZE
# define FT_GETLINE_BUFFER_SIZE 64
@@ -47,6 +54,6 @@ char *ft_getfile(int fd);
** getline.c
*/
-int ft_getline(int fd, char **line);
+int ft_getline(int fd, char **line);
#endif
diff --git a/include/libft_mem.h b/include/libft_mem.h
index f26180d..8f7b276 100644
--- a/include/libft_mem.h
+++ b/include/libft_mem.h
@@ -6,34 +6,36 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:35:57 by cacharle #+# #+# */
-/* Updated: 2020/05/09 12:28:55 by charles ### ########.fr */
+/* Updated: 2020/05/11 15:22:04 by charles ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef LIBFT_MEM_H
# define LIBFT_MEM_H
-# include <stddef.h>
+# include <stdlib.h>
# include "libft_def.h"
-void ft_bzero(void *s, size_t n);
-void *ft_memset(void *s, int c, size_t n);
-void *ft_memcpy(void *dest, const void *src, size_t n);
-void *ft_memccpy(void *dest, const void *src, int c, size_t n);
-void *ft_memmove(void *dst, const void *src, size_t len);
-void *ft_memchr(const void *s, int c, size_t n);
-int ft_memcmp(const void *s1, const void *s2, size_t n);
-void *ft_calloc(size_t count, size_t size);
-void ft_memswap(void *a, void *b, size_t size);
-void *ft_memmem(const void *big, size_t big_len,
- const void *little, size_t little_len);
-void ft_memset_pattern4(void *b, const void *pattern4,
- size_t len);
+void ft_bzero(void *s, size_t n);
+void *ft_memset(void *s, int c, size_t n);
+void *ft_memcpy(void *dest, const void *src, size_t n);
+void *ft_memccpy(void *dest, const void *src, int c, size_t n);
+void *ft_memmove(void *dst, const void *src, size_t len);
+void *ft_memchr(const void *s, int c, size_t n);
+int ft_memcmp(const void *s1, const void *s2, size_t n);
+void *ft_calloc(size_t count, size_t size);
+void ft_memswap(void *a, void *b, size_t size);
+void ft_memset_pattern4(void *b, const void *pattern4, size_t len);
+void *ft_memjoin(void *m1, size_t m1_size, void *m2, size_t m2_size);
+void *ft_memjoinf1(void *m1, size_t m1_size, void *m2, size_t m2_size);
+void *ft_memmem(
+ const void *big, size_t big_len,
+ const void *little, size_t little_len);
/*
** bloat ?
*/
-void ft_memdel(void **ap);
+void ft_memdel(void **ap);
#endif
diff --git a/include/libft_rbt.h b/include/libft_rbt.h
index 57653cc..6865cdf 100644
--- a/include/libft_rbt.h
+++ b/include/libft_rbt.h
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/26 16:09:51 by charles #+# #+# */
-/* Updated: 2020/04/26 20:25:36 by charles ### ########.fr */
+/* Updated: 2020/05/11 16:11:16 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -92,5 +92,4 @@ t_ftrbt *ft_rbtinsert(
void *data,
int (*cmp)(void*, void*));
-
#endif
diff --git a/include/libft_str.h b/include/libft_str.h
index 83c4428..383c393 100644
--- a/include/libft_str.h
+++ b/include/libft_str.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/31 10:39:22 by cacharle #+# #+# */
-/* Updated: 2020/05/10 21:05:21 by charles ### ########.fr */
+/* Updated: 2020/05/11 15:52:40 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -17,7 +17,6 @@
# include <stdbool.h>
# include "libft_ctype.h"
# include "libft_mem.h"
-# include "libft_util.h"
typedef enum
{
@@ -93,6 +92,8 @@ bool ft_fnmatch(const char *pattern, const char *string);
char *ft_strsjoin(char **strs, char *delim);
char *ft_strsjoinf(char **strs, char *delim);
+void *ft_strsdestroy(char **strs);
+size_t ft_strslen(char **strs);
/*
** bloat ?
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/include/libft_util.h b/src/mem/ft_memjoinf1.c
index 99e7a00..8b4db92 100644
--- a/include/libft_util.h
+++ b/src/mem/ft_memjoinf1.c
@@ -1,22 +1,22 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
-/* libft_util.h :+: :+: :+: */
+/* ft_memjoinf1.c :+: :+: :+: */
/* +:+ +:+ +:+ */
-/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
+/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
-/* Created: 2020/02/27 17:51:36 by cacharle #+# #+# */
-/* Updated: 2020/05/10 21:02:02 by charles ### ########.fr */
+/* Created: 2020/05/11 15:18:57 by charles #+# #+# */
+/* Updated: 2020/05/11 15:20:06 by charles ### ########.fr */
/* */
/* ************************************************************************** */
-#ifndef LIBFT_UTIL_H
-# define LIBFT_UTIL_H
+#include "libft_mem.h"
-# include <stdlib.h>
-# include <stddef.h>
+void *ft_memjoinf1(void *m1, size_t m1_size, void *m2, size_t m2_size)
+{
+ void *joined;
-void *ft_split_destroy(char **strs);
-size_t ft_split_len(char **split);
-
-#endif
+ 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);
}