diff options
| -rw-r--r-- | include/libft_io.h | 31 | ||||
| -rw-r--r-- | include/libft_mem.h | 34 | ||||
| -rw-r--r-- | include/libft_rbt.h | 3 | ||||
| -rw-r--r-- | include/libft_str.h | 5 | ||||
| -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 (renamed from include/libft_util.h) | 24 | ||||
| -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 |
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); } |
