diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/io/ft_getfile.c | 35 | ||||
| -rw-r--r-- | src/mem/ft_memjoin.c | 24 | ||||
| -rw-r--r-- | src/mem/ft_memjoinf1.c | 22 | ||||
| -rw-r--r-- | src/str/ft_split.c | 4 | ||||
| -rw-r--r-- | src/str/ft_strjoinf.c | 4 | ||||
| -rw-r--r-- | src/str/ft_strnew.c | 19 | ||||
| -rw-r--r-- | src/str/ft_strsdestroy.c (renamed from src/util/ft_split_destroy.c) | 14 | ||||
| -rw-r--r-- | src/str/ft_strsjoinf.c | 4 | ||||
| -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); } |
