diff --git a/Makefile b/Makefile index afe915a..2c7a3c8 100644 --- a/Makefile +++ b/Makefile @@ -6,14 +6,15 @@ # By: kcolin +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2024/10/24 11:29:38 by kcolin #+# #+# # -# Updated: 2024/10/24 14:19:43 by kcolin ### ########.fr # +# Updated: 2024/11/01 12:32:53 by kcolin ### ########.fr # # # # **************************************************************************** # override CFLAGS += -Wall -Wextra -Werror -ggdb NAME = libgnl.a -SRCS = get_next_line.c +SRCS = get_next_line.c \ + get_next_line_utils.c OBJS = $(SRCS:.c=.o) TEST = test diff --git a/get_next_line.c b/get_next_line.c index eab5155..2a1f132 100644 --- a/get_next_line.c +++ b/get_next_line.c @@ -6,13 +6,18 @@ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/23 20:32:46 by kcolin #+# #+# */ -/* Updated: 2024/11/01 12:14:49 by kcolin ### ########.fr */ +/* Updated: 2024/11/01 12:34:14 by kcolin ### ########.fr */ /* */ /* ************************************************************************** */ #include "get_next_line.h" #include +char *ft_strchr(const char *s, int c); +size_t ft_strlen(const char *s); +size_t ft_strlcpy(char *dst, const char *src, size_t size); +char *ft_strjoin_free_s1(char const *s1, char const *s2); + /* static int num_allocs = 0; @@ -28,95 +33,6 @@ static void *xmalloc(size_t size) #define malloc(x) xmalloc(x) */ -char *ft_strchr(const char *s, int c) -{ - size_t i; - - i = 0; - while (s[i] != '\0') - { - if (s[i] == (char)c) - return ((char *)s + i); - i++; - } - if ((char)c == '\0') - return ((char *)s + i); - return (0); -} - -size_t ft_strlen(const char *s) -{ - size_t i; - - i = 0; - while (s[i] != '\0') - i++; - return (i); -} - -size_t ft_strlcpy(char *dst, const char *src, size_t size) -{ - size_t i; - - i = 0; - while (src[i] != 0) - { - if (i < size) - dst[i] = src[i]; - i++; - } - if (size > 0) - { - if (size - 1 > i) - dst[i] = '\0'; - else - dst[size - 1] = '\0'; - } - return (i); -} - -size_t ft_strlcat(char *dst, const char *src, size_t size) -{ - size_t dst_len; - size_t src_len; - size_t i; - - dst_len = 0; - while (dst[dst_len] != '\0') - dst_len++; - src_len = 0; - while (src[src_len] != '\0') - src_len++; - if (size <= dst_len) - return (size + src_len); - i = 0; - while (src[i] != '\0' && i < size - dst_len - 1) - { - dst[dst_len + i] = src[i]; - i++; - } - dst[dst_len + i] = '\0'; - return (dst_len + src_len); -} - -char *ft_strjoin_free_s1(char const *s1, char const *s2) -{ - char *out; - size_t len; - - len = ft_strlen(s1) + ft_strlen(s2) + 1; - out = malloc(len); - if (out == NULL) - { - free((void *)s1); - return (NULL); - } - ft_strlcpy(out, s1, len); - ft_strlcat(out, s2, len); - free((void *)s1); - return (out); -} - char *shorten_buffer(char *buffer) { char *outbuf; @@ -127,25 +43,16 @@ char *shorten_buffer(char *buffer) addr_of_newline = ft_strchr(buffer, '\n'); if (addr_of_newline == NULL) { - outbuf = malloc(1 * sizeof(char)); - if (outbuf == NULL) - { - free(buffer); - return (NULL); - } - outbuf[0] = '\0'; + buffer[0] = '\0'; + return (buffer); } else { index_after_newline = addr_of_newline + 1 - buffer; outlen = ft_strlen(buffer + index_after_newline) + 1; outbuf = malloc(outlen * sizeof(char)); - if (outbuf == NULL) - { - free(buffer); - return (NULL); - } - ft_strlcpy(outbuf, buffer + index_after_newline, outlen); + if (outbuf != NULL) + ft_strlcpy(outbuf, buffer + index_after_newline, outlen); } free(buffer); return (outbuf); diff --git a/get_next_line_utils.c b/get_next_line_utils.c index e69de29..6dac14a 100644 --- a/get_next_line_utils.c +++ b/get_next_line_utils.c @@ -0,0 +1,103 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kcolin +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/11/01 12:31:58 by kcolin #+# #+# */ +/* Updated: 2024/11/01 12:32:00 by kcolin ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "get_next_line.h" +#include + +char *ft_strchr(const char *s, int c) +{ + size_t i; + + i = 0; + while (s[i] != '\0') + { + if (s[i] == (char)c) + return ((char *)s + i); + i++; + } + if ((char)c == '\0') + return ((char *)s + i); + return (0); +} + +size_t ft_strlen(const char *s) +{ + size_t i; + + i = 0; + while (s[i] != '\0') + i++; + return (i); +} + +size_t ft_strlcpy(char *dst, const char *src, size_t size) +{ + size_t i; + + i = 0; + while (src[i] != 0) + { + if (i < size) + dst[i] = src[i]; + i++; + } + if (size > 0) + { + if (size - 1 > i) + dst[i] = '\0'; + else + dst[size - 1] = '\0'; + } + return (i); +} + +size_t ft_strlcat(char *dst, const char *src, size_t size) +{ + size_t dst_len; + size_t src_len; + size_t i; + + dst_len = 0; + while (dst[dst_len] != '\0') + dst_len++; + src_len = 0; + while (src[src_len] != '\0') + src_len++; + if (size <= dst_len) + return (size + src_len); + i = 0; + while (src[i] != '\0' && i < size - dst_len - 1) + { + dst[dst_len + i] = src[i]; + i++; + } + dst[dst_len + i] = '\0'; + return (dst_len + src_len); +} + +char *ft_strjoin_free_s1(char const *s1, char const *s2) +{ + char *out; + size_t len; + + len = ft_strlen(s1) + ft_strlen(s2) + 1; + out = malloc(len); + if (out == NULL) + { + free((void *)s1); + return (NULL); + } + ft_strlcpy(out, s1, len); + ft_strlcat(out, s2, len); + free((void *)s1); + return (out); +}