From a4b9cda7d6733f2b077f8586e3b3e69351e7dfba Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 11 May 2020 10:54:58 +0200 Subject: Added ft_getfile --- src/io/ft_getfile.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/io/ft_getfile.c (limited to 'src/io/ft_getfile.c') diff --git a/src/io/ft_getfile.c b/src/io/ft_getfile.c new file mode 100644 index 0000000..891ea51 --- /dev/null +++ b/src/io/ft_getfile.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_getfile.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/11 09:52:32 by charles #+# #+# */ +/* Updated: 2020/05/11 10:15:12 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_io.h" + +char *ft_getfile(int fd) +{ + char *s; + char buf[FT_GETFILE_BUFFER_SIZE + 1]; + int ret; + + if (fd < 0 || fd > OPEN_MAX) + return (NULL); + if ((s = ft_strdup("")) == NULL) + return (NULL); + 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 (ret == -1) + { + free(s); + return (NULL); + } + return (s); +} -- cgit From b9f000a80cbba38b8f21c9737a42f07573ec7b91 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 11 May 2020 16:14:38 +0200 Subject: Moved util/ft_split* in str, Added ft_memjoin and ft_memjoinf1, Modified ft_getfile so that it can read non-ascii file --- src/io/ft_getfile.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) (limited to 'src/io/ft_getfile.c') 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); } -- cgit