diff options
| -rw-r--r-- | include/libft_io.h | 8 | ||||
| -rw-r--r-- | include/libft_mem.h | 6 | ||||
| -rw-r--r-- | include/libft_str.h | 4 | ||||
| -rw-r--r-- | src/io/ft_getfile.c | 33 | ||||
| -rw-r--r-- | src/io/ft_getfile_fd.c | 40 | ||||
| -rw-r--r-- | src/io/ft_putnbr_base.c | 18 | ||||
| -rw-r--r-- | src/io/ft_putnbr_base_fd.c | 33 | ||||
| -rw-r--r-- | src/mem/ft_realloc.c | 35 |
8 files changed, 149 insertions, 28 deletions
diff --git a/include/libft_io.h b/include/libft_io.h index ab40875..f0d6f49 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/12 20:36:36 by charles ### ########.fr */ +/* Updated: 2020/08/02 11:03:44 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,7 @@ # include <unistd.h> # include <stdlib.h> +# include <fcntl.h> # include <limits.h> # include "libft.h" # include "libft_def.h" @@ -23,10 +24,12 @@ void ft_putendl(char *s); void ft_putchar(char c); void ft_putstr(char const *s); void ft_putnbr(int n); +void ft_putnbr_base(int n, char *base); 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_putnbr_base_fd(int n, char *base, int fd); char ft_getchar(void); @@ -43,7 +46,8 @@ typedef struct s_ftmem size_t size; } t_ftmem; -int ft_getfile(int fd, t_ftmem *mem); +int ft_getfile_fd(int fd, t_ftmem *mem); +int ft_getfile(char *filename, t_ftmem *mem); # ifndef FT_GETLINE_BUFFER_SIZE # define FT_GETLINE_BUFFER_SIZE 64 diff --git a/include/libft_mem.h b/include/libft_mem.h index 8f7b276..3d7ca26 100644 --- a/include/libft_mem.h +++ b/include/libft_mem.h @@ -6,13 +6,14 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/31 10:35:57 by cacharle #+# #+# */ -/* Updated: 2020/05/11 15:22:04 by charles ### ########.fr */ +/* Updated: 2020/08/02 10:50:39 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef LIBFT_MEM_H # define LIBFT_MEM_H +# include <stddef.h> # include <stdlib.h> # include "libft_def.h" @@ -29,9 +30,12 @@ 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_realloc(void *ptr, size_t ptr_size, size_t size); + void *ft_memmem( const void *big, size_t big_len, const void *little, size_t little_len); + /* ** bloat ? */ diff --git a/include/libft_str.h b/include/libft_str.h index 41e81ac..571cda0 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/12 20:47:36 by charles ### ########.fr */ +/* Updated: 2020/08/02 10:52:36 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -78,6 +78,7 @@ int ft_strequ(char const *s1, char const *s2); int ft_strnequ(char const *s1, char const *s2, size_t n); char *ft_strtolower(char *s); char *ft_strtoupper(char *s); +char *ft_strnew(size_t size); char *ft_strcat3(char *dest, const char *src1, const char *src2); char *ft_strmove(char *dest, const char *src); @@ -101,7 +102,6 @@ size_t ft_strslen(char **strs); */ /* -** char *ft_strnew(size_t size); ** void ft_strdel(char **as); ** void ft_strclr(char *s); */ diff --git a/src/io/ft_getfile.c b/src/io/ft_getfile.c index d3f697c..6ae4833 100644 --- a/src/io/ft_getfile.c +++ b/src/io/ft_getfile.c @@ -3,38 +3,25 @@ /* ::: :::::::: */ /* ft_getfile.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2020/05/11 09:52:32 by charles #+# #+# */ -/* Updated: 2020/05/11 16:09:31 by charles ### ########.fr */ +/* Created: 2020/02/22 10:32:47 by cacharle #+# #+# */ +/* Updated: 2020/08/02 11:01:06 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft_io.h" -/* -** \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) +int ft_getfile(char *filename, t_ftmem *mem) { - char buf[FT_GETFILE_BUFFER_SIZE]; - int ret; + int fd; - if (fd < 0 || fd > OPEN_MAX || mem == NULL - || (mem->data = malloc(1)) == NULL) + if ((fd = open(filename, O_RDONLY)) < 0) return (-1); - mem->size = 0; - while ((ret = read(fd, buf, FT_GETFILE_BUFFER_SIZE)) > 0) + if (ft_getfile_fd(fd, mem) < 0) { - if ((mem->data = ft_memjoinf1(mem->data, mem->size, buf, ret)) == NULL) - return (-1); - mem->size += ret; + close(fd); + return (-1); } - if (ret == -1) - free(mem->data); - return (ret); + return (close(fd)); } diff --git a/src/io/ft_getfile_fd.c b/src/io/ft_getfile_fd.c new file mode 100644 index 0000000..91ebf7f --- /dev/null +++ b/src/io/ft_getfile_fd.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_getfile_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/11 09:52:32 by charles #+# #+# */ +/* Updated: 2020/08/02 10:55:46 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_io.h" + +/* +** \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_fd(int fd, t_ftmem *mem) +{ + char buf[FT_GETFILE_BUFFER_SIZE]; + int ret; + + 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) + { + if ((mem->data = ft_memjoinf1(mem->data, mem->size, buf, ret)) == NULL) + return (-1); + mem->size += ret; + } + if (ret == -1) + free(mem->data); + return (ret); +} diff --git a/src/io/ft_putnbr_base.c b/src/io/ft_putnbr_base.c new file mode 100644 index 0000000..878c538 --- /dev/null +++ b/src/io/ft_putnbr_base.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_base.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 09:52:45 by cacharle #+# #+# */ +/* Updated: 2020/02/22 09:53:31 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_io.h" + +void ft_putnbr_base(int n, char *base) +{ + ft_putnbr_base_fd(n, base, STDOUT_FILENO); +} diff --git a/src/io/ft_putnbr_base_fd.c b/src/io/ft_putnbr_base_fd.c new file mode 100644 index 0000000..ea8516e --- /dev/null +++ b/src/io/ft_putnbr_base_fd.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_base_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/22 09:48:23 by cacharle #+# #+# */ +/* Updated: 2020/02/22 09:53:41 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" +#include "libft_io.h" + +void ft_putnbr_base_fd(int n, char *base, int fd) +{ + unsigned int p_n; + int radix; + + if (fd < 0 || fd > OPEN_MAX) + return ; + p_n = n; + if (n < 0) + { + ft_putchar_fd('-', fd); + p_n = -n; + } + radix = ft_strlen(base); + if (p_n > 9) + ft_putnbr_base_fd(p_n / radix, base, fd); + ft_putchar_fd(base[p_n % radix], fd); +} diff --git a/src/mem/ft_realloc.c b/src/mem/ft_realloc.c new file mode 100644 index 0000000..6047de8 --- /dev/null +++ b/src/mem/ft_realloc.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_realloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles <me@cacharle.xyz> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/08/01 15:23:14 by charles #+# #+# */ +/* Updated: 2020/08/01 15:27:35 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft_mem.h" + +/* +** \brief Modified version of realloc function +** \param ptr Pointer to re allocate +** \param ptr_size Current allocated size +** \param size New allocated size +** \return New allocation or NULL on error +*/ + +void *ft_realloc(void *ptr, size_t ptr_size, size_t size) +{ + void *ret; + + if ((ret = malloc(size)) == NULL) + { + free(ptr); + return (NULL); + } + if (ptr != NULL) + ft_memcpy(ret, ptr, ptr_size); + return (ret); +} |
