From e35b9d3e9e450c5a9261c0e12485886e2c3f0987 Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Thu, 8 Dec 2022 18:06:06 +0100 Subject: [PATCH] Add libft --- libft | 1 - libft/Makefile | 154 ++++++++++++++++++++++++++++++++++++++++ libft/ft_atoi.c | 47 ++++++++++++ libft/ft_atoi_check.c | 50 +++++++++++++ libft/ft_bzero.c | 18 +++++ libft/ft_calloc.c | 28 ++++++++ libft/ft_get_size.c | 29 ++++++++ libft/ft_isalnum.c | 20 ++++++ libft/ft_isalpha.c | 19 +++++ libft/ft_isascii.c | 18 +++++ libft/ft_isdigit.c | 18 +++++ libft/ft_isprint.c | 18 +++++ libft/ft_itoa.c | 54 ++++++++++++++ libft/ft_lstadd_back.c | 21 ++++++ libft/ft_lstadd_front.c | 19 +++++ libft/ft_lstclear.c | 27 +++++++ libft/ft_lstdelone.c | 21 ++++++ libft/ft_lstiter.c | 22 ++++++ libft/ft_lstlast.c | 25 +++++++ libft/ft_lstmap.c | 42 +++++++++++ libft/ft_lstnew.c | 25 +++++++ libft/ft_lstsize.c | 26 +++++++ libft/ft_memchr.c | 29 ++++++++ libft/ft_memcmp.c | 29 ++++++++ libft/ft_memcpy.c | 32 +++++++++ libft/ft_memmove.c | 37 ++++++++++ libft/ft_memset.c | 28 ++++++++ libft/ft_power.c | 30 ++++++++ libft/ft_putchar_fd.c | 18 +++++ libft/ft_putendl_fd.c | 25 +++++++ libft/ft_putnbr_fd.c | 32 +++++++++ libft/ft_putstr_fd.c | 24 +++++++ libft/ft_split.c | 117 ++++++++++++++++++++++++++++++ libft/ft_strchr.c | 29 ++++++++ libft/ft_strdup.c | 31 ++++++++ libft/ft_striteri.c | 27 +++++++ libft/ft_strjoin.c | 29 ++++++++ libft/ft_strlcat.c | 27 +++++++ libft/ft_strlcpy.c | 30 ++++++++ libft/ft_strlen.c | 23 ++++++ libft/ft_strmapi.c | 32 +++++++++ libft/ft_strncmp.c | 33 +++++++++ libft/ft_strnstr.c | 37 ++++++++++ libft/ft_strrchr.c | 33 +++++++++ libft/ft_strtrim.c | 86 ++++++++++++++++++++++ libft/ft_substr.c | 35 +++++++++ libft/ft_tolower.c | 18 +++++ libft/ft_toupper.c | 18 +++++ libft/libft.h | 71 ++++++++++++++++++ 49 files changed, 1661 insertions(+), 1 deletion(-) delete mode 160000 libft create mode 100644 libft/Makefile create mode 100644 libft/ft_atoi.c create mode 100644 libft/ft_atoi_check.c create mode 100644 libft/ft_bzero.c create mode 100644 libft/ft_calloc.c create mode 100644 libft/ft_get_size.c create mode 100644 libft/ft_isalnum.c create mode 100644 libft/ft_isalpha.c create mode 100644 libft/ft_isascii.c create mode 100644 libft/ft_isdigit.c create mode 100644 libft/ft_isprint.c create mode 100644 libft/ft_itoa.c create mode 100644 libft/ft_lstadd_back.c create mode 100644 libft/ft_lstadd_front.c create mode 100644 libft/ft_lstclear.c create mode 100644 libft/ft_lstdelone.c create mode 100644 libft/ft_lstiter.c create mode 100644 libft/ft_lstlast.c create mode 100644 libft/ft_lstmap.c create mode 100644 libft/ft_lstnew.c create mode 100644 libft/ft_lstsize.c create mode 100644 libft/ft_memchr.c create mode 100644 libft/ft_memcmp.c create mode 100644 libft/ft_memcpy.c create mode 100644 libft/ft_memmove.c create mode 100644 libft/ft_memset.c create mode 100644 libft/ft_power.c create mode 100644 libft/ft_putchar_fd.c create mode 100644 libft/ft_putendl_fd.c create mode 100644 libft/ft_putnbr_fd.c create mode 100644 libft/ft_putstr_fd.c create mode 100644 libft/ft_split.c create mode 100644 libft/ft_strchr.c create mode 100644 libft/ft_strdup.c create mode 100644 libft/ft_striteri.c create mode 100644 libft/ft_strjoin.c create mode 100644 libft/ft_strlcat.c create mode 100644 libft/ft_strlcpy.c create mode 100644 libft/ft_strlen.c create mode 100644 libft/ft_strmapi.c create mode 100644 libft/ft_strncmp.c create mode 100644 libft/ft_strnstr.c create mode 100644 libft/ft_strrchr.c create mode 100644 libft/ft_strtrim.c create mode 100644 libft/ft_substr.c create mode 100644 libft/ft_tolower.c create mode 100644 libft/ft_toupper.c create mode 100644 libft/libft.h diff --git a/libft b/libft deleted file mode 160000 index ca53e94..0000000 --- a/libft +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ca53e947c847ec3b893d5df34bc8051eaf30bf73 diff --git a/libft/Makefile b/libft/Makefile new file mode 100644 index 0000000..d128dcd --- /dev/null +++ b/libft/Makefile @@ -0,0 +1,154 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: erey-bet +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2022/09/27 04:19:30 by erey-bet #+# #+# # +# Updated: 2022/11/23 17:13:44 by erey-bet ### ########.fr # +# # +# **************************************************************************** # + +SRCS = ft_isalpha.c ft_isdigit.c ft_isalnum.c ft_isascii.c ft_isprint.c \ +ft_strlen.c ft_memset.c ft_bzero.c ft_memcpy.c ft_memmove.c ft_strlcpy.c \ +ft_strlcat.c ft_toupper.c ft_tolower.c ft_strchr.c ft_strrchr.c ft_strncmp.c \ +ft_memchr.c ft_memcmp.c ft_strnstr.c ft_atoi.c ft_calloc.c ft_strdup.c \ +ft_substr.c ft_strjoin.c ft_strtrim.c ft_split.c ft_itoa.c ft_strmapi.c \ +ft_striteri.c ft_putchar_fd.c ft_putstr_fd.c ft_putendl_fd.c ft_putnbr_fd.c \ +ft_get_size.c ft_power.c ft_atoi_check.c +OBJS = ${SRCS:.c=.o} +BONUS_SRCS = ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c \ +ft_lstadd_back.c ft_lstdelone.c ft_lstclear.c ft_lstiter.c ft_lstmap.c +BONUS_OBJS = ${BONUS_SRCS:.c=.o} +CC = clang +CFLAGS = -Wall -Wextra -Werror +NAME = libft.a + +ifdef BONUS + SRCS += ${BONUS_SRCS} +endif + +all: ${NAME} + +${NAME}: ${OBJS} + ar -rc ${NAME} ${OBJS} + +%.o:%.c + ${CC} ${CFLAGS} -c -o $@ $< + +clean: + rm -f ${OBJS} ${BONUS_OBJS} + +fclean: clean + rm -f ${NAME} + +re: fclean all + +bonus: + @make BONUS=1 + +coffee: + @clear + @echo "" + @echo " (" + @echo " ) (◦" + @echo " ___...(-------)-....___◦" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0.2 + @clear + @echo "" + @echo " (◦" + @echo " ◦ ◦ ) ( " + @echo " ___..(.------)--....___" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ( ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0.2 + @clear + @echo " ◦" + @echo " ( ◦" + @echo " ◦ ) ( " + @echo " ___..(.------)--....___" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ( ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0.2 + @clear + @echo "" + @echo " ( ) ◦" + @echo " ◦ ) (◦" + @echo " ___)...----)----....___" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ( ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0. + ${MAKE} coffee + +.PHONY: all clean fclean re bonus coffee diff --git a/libft/ft_atoi.c b/libft/ft_atoi.c new file mode 100644 index 0000000..f3b8d1c --- /dev/null +++ b/libft/ft_atoi.c @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/21 08:21:05 by erey-bet #+# #+# */ +/* Updated: 2022/11/23 17:12:11 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int ft_isspace(char c) +{ + if (c == ' ' || c == '\f' + ||c == '\n' || c == '\r' || c == '\t' || c == '\v') + return (1); + return (0); +} + +int ft_atoi(const char *nptr) +{ + long result; + int sign; + + while (ft_isspace(*nptr)) + nptr++; + sign = 1; + if (*nptr == '+' || *nptr == '-') + { + if (*nptr == '-') + sign = -1; + nptr++; + } + result = 0; + while (*nptr >= '0' && *nptr <= '9') + { + if (result >= 2147483647 && sign == 1) + return (-1); + else if (result >= 2147483647) + return (0); + result = result * 10 + *nptr++ - '0'; + } + return (result * sign); +} diff --git a/libft/ft_atoi_check.c b/libft/ft_atoi_check.c new file mode 100644 index 0000000..b549055 --- /dev/null +++ b/libft/ft_atoi_check.c @@ -0,0 +1,50 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi_check.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/21 08:21:05 by erey-bet #+# #+# */ +/* Updated: 2022/12/08 16:37:19 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int ft_isspace(char c) +{ + if (c == ' ' || c == '\f' + ||c == '\n' || c == '\r' || c == '\t' || c == '\v') + return (1); + return (0); +} + +int ft_atoi_check(const char *nptr) +{ + long result; + int sign; + + while (ft_isspace(*nptr)) + nptr++; + sign = 1; + if (*nptr == '+' || *nptr == '-') + { + if (*nptr == '-') + sign = -1; + nptr++; + } + result = 0; + while (*nptr >= '0' && *nptr <= '9') + { + result = result * 10 + *nptr++ - '0'; + if ((result > 2147483647 && sign == 1) + || (result > 2147483648 && sign == -1)) + return (0); + } + if (*nptr--) + return (0); + if (*nptr == '-' || *nptr == '+') + return (0); + return (1); +} diff --git a/libft/ft_bzero.c b/libft/ft_bzero.c new file mode 100644 index 0000000..8688fb4 --- /dev/null +++ b/libft/ft_bzero.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 15:21:33 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 15:31:11 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_bzero(void *s, unsigned int n) +{ + ft_memset(s, 0, n); +} diff --git a/libft/ft_calloc.c b/libft/ft_calloc.c new file mode 100644 index 0000000..15af293 --- /dev/null +++ b/libft/ft_calloc.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/28 16:21:44 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 14:17:31 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_calloc(size_t nitems, size_t size) +{ + size_t *tmp; + + if (nitems == 0 || size == 0) + return (malloc(0)); + if (nitems * size < nitems) + return (NULL); + tmp = malloc(nitems * size); + if (tmp == NULL) + return (NULL); + ft_bzero(tmp, nitems * size); + return (tmp); +} diff --git a/libft/ft_get_size.c b/libft/ft_get_size.c new file mode 100644 index 0000000..ec08039 --- /dev/null +++ b/libft/ft_get_size.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_get_size.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 22:50:35 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:14:29 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_get_size(long n) +{ + long i; + + if (n == 0) + return (1); + i = 0; + n *= (n > 0) - (n < 0); + while (n > 0) + { + i++; + n = n / 10; + } + return (i); +} diff --git a/libft/ft_isalnum.c b/libft/ft_isalnum.c new file mode 100644 index 0000000..59a05d6 --- /dev/null +++ b/libft/ft_isalnum.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 16:47:30 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 16:50:25 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isalnum(int c) +{ + if (!(c >= 'A' && c <= 'Z')) + if (!(c >= 'a' && c <= 'z')) + if (!(c >= '0' && c <= '9')) + return (0); + return (1); +} diff --git a/libft/ft_isalpha.c b/libft/ft_isalpha.c new file mode 100644 index 0000000..b23c00f --- /dev/null +++ b/libft/ft_isalpha.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 17:34:33 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 14:40:50 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isalpha(int c) +{ + if (!(c >= 'A' && c <= 'Z')) + if (!(c >= 'a' && c <= 'z')) + return (0); + return (1); +} diff --git a/libft/ft_isascii.c b/libft/ft_isascii.c new file mode 100644 index 0000000..82b1c10 --- /dev/null +++ b/libft/ft_isascii.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 18:06:14 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 14:36:18 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + return (0); +} diff --git a/libft/ft_isdigit.c b/libft/ft_isdigit.c new file mode 100644 index 0000000..3b5cb1b --- /dev/null +++ b/libft/ft_isdigit.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 18:06:14 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 14:41:48 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isdigit(int c) +{ + if (c > 47 && c < 58) + return (1); + return (0); +} diff --git a/libft/ft_isprint.c b/libft/ft_isprint.c new file mode 100644 index 0000000..c8b42c6 --- /dev/null +++ b/libft/ft_isprint.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 18:24:36 by erey-bet #+# #+# */ +/* Updated: 2022/07/17 18:27:27 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isprint(int c) +{ + if (c >= 32 && c <= 126) + return (1); + return (0); +} diff --git a/libft/ft_itoa.c b/libft/ft_itoa.c new file mode 100644 index 0000000..54e40ab --- /dev/null +++ b/libft/ft_itoa.c @@ -0,0 +1,54 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/04 17:12:52 by erey-bet #+# #+# */ +/* Updated: 2022/10/26 16:00:48 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static void ft_itoa_bis(char *str, int len, int i, long nl) +{ + while (len > 1) + { + len--; + str[i] = (nl / ft_power(10, len) % 10) + 48; + i++; + } + str[i] = nl % 10 + 48; + i++; + str[i] = '\0'; +} + +char *ft_itoa(int n) +{ + char *str; + int len; + int i; + long nl; + + nl = n; + if (nl < 0) + nl *= -1; + len = ft_get_size(nl); + i = 0; + if (n < 0) + { + str = malloc(len + 2); + if (str == NULL) + return (NULL); + str[i] = '-'; + i++; + } + else + str = malloc(len + 1); + if (str == NULL) + return (NULL); + ft_itoa_bis(str, len, i, nl); + return (str); +} diff --git a/libft/ft_lstadd_back.c b/libft/ft_lstadd_back.c new file mode 100644 index 0000000..1e6c411 --- /dev/null +++ b/libft/ft_lstadd_back.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:14:10 by erey-bet #+# #+# */ +/* Updated: 2022/10/09 23:22:24 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_back(t_list **lst, t_list *new) +{ + if (*lst != NULL) + ft_lstlast(*lst)->next = new; + else + *lst = new; +} diff --git a/libft/ft_lstadd_front.c b/libft/ft_lstadd_front.c new file mode 100644 index 0000000..746f007 --- /dev/null +++ b/libft/ft_lstadd_front.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 21:43:39 by erey-bet #+# #+# */ +/* Updated: 2022/10/09 22:02:22 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_front(t_list **lst, t_list *new) +{ + new->next = *lst; + *lst = new; +} diff --git a/libft/ft_lstclear.c b/libft/ft_lstclear.c new file mode 100644 index 0000000..1778aa4 --- /dev/null +++ b/libft/ft_lstclear.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:56:15 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:13:45 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void*)) +{ + t_list *temp; + + if (lst == NULL || del == NULL) + return ; + while (*lst != NULL) + { + temp = (*lst)->next; + ft_lstdelone(*lst, del); + *lst = temp; + } +} diff --git a/libft/ft_lstdelone.c b/libft/ft_lstdelone.c new file mode 100644 index 0000000..d06004c --- /dev/null +++ b/libft/ft_lstdelone.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:22:38 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:15:03 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void*)) +{ + if (lst == NULL || del == NULL) + return ; + del(lst->content); + free(lst); +} diff --git a/libft/ft_lstiter.c b/libft/ft_lstiter.c new file mode 100644 index 0000000..1680813 --- /dev/null +++ b/libft/ft_lstiter.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 00:42:33 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 00:56:30 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(void *)) +{ + while (lst != NULL) + { + f(lst->content); + lst = lst->next; + } +} diff --git a/libft/ft_lstlast.c b/libft/ft_lstlast.c new file mode 100644 index 0000000..9ca97dd --- /dev/null +++ b/libft/ft_lstlast.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:03:50 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:14:51 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + t_list *current; + + current = lst; + if (current == NULL) + return (NULL); + while (current->next != NULL) + current = current->next; + return (current); +} diff --git a/libft/ft_lstmap.c b/libft/ft_lstmap.c new file mode 100644 index 0000000..217944a --- /dev/null +++ b/libft/ft_lstmap.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 01:03:28 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 14:55:38 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +{ + t_list *head; + t_list *new; + + if (lst == NULL || f == NULL || del == NULL) + return (NULL); + new = ft_lstnew(f(lst->content)); + if (new == NULL) + { + ft_lstclear(&new, del); + return (NULL); + } + head = new; + lst = lst->next; + while (lst != NULL) + { + new->next = ft_lstnew(f(lst->content)); + if (new == NULL) + { + ft_lstclear(&head, del); + return (NULL); + } + new = new->next; + lst = lst->next; + } + return (head); +} diff --git a/libft/ft_lstnew.c b/libft/ft_lstnew.c new file mode 100644 index 0000000..8ef323a --- /dev/null +++ b/libft/ft_lstnew.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 21:34:58 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:13:33 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstnew(void *content) +{ + t_list *list; + + list = malloc(sizeof(t_list)); + if (list == NULL) + return (NULL); + list->content = content; + list->next = NULL; + return (list); +} diff --git a/libft/ft_lstsize.c b/libft/ft_lstsize.c new file mode 100644 index 0000000..b510d2f --- /dev/null +++ b/libft/ft_lstsize.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 22:59:07 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:14:41 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int size; + + size = 0; + while (lst != NULL) + { + size++; + lst = lst->next; + } + return (size); +} diff --git a/libft/ft_memchr.c b/libft/ft_memchr.c new file mode 100644 index 0000000..f4e3580 --- /dev/null +++ b/libft/ft_memchr.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 19:02:18 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 02:19:17 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memchr(const void *memory_block, int searched_char, size_t size) +{ + size_t i; + unsigned char *tmp; + + i = 0; + tmp = (unsigned char *)memory_block; + while (i < size) + { + if (tmp[i] == (unsigned char)searched_char) + return (&tmp[i]); + i++; + } + return (NULL); +} diff --git a/libft/ft_memcmp.c b/libft/ft_memcmp.c new file mode 100644 index 0000000..eea3c83 --- /dev/null +++ b/libft/ft_memcmp.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 19:18:16 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:45:03 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_memcmp(const void *pointer1, const void *pointer2, size_t size) +{ + size_t i; + unsigned char *tmp1; + unsigned char *tmp2; + + if (size == 0) + return (0); + tmp1 = (unsigned char *)pointer1; + tmp2 = (unsigned char *)pointer2; + i = 0; + while (i < size - 1 && tmp1[i] == tmp2[i]) + i++; + return (tmp1[i] - tmp2[i]); +} diff --git a/libft/ft_memcpy.c b/libft/ft_memcpy.c new file mode 100644 index 0000000..f7699a7 --- /dev/null +++ b/libft/ft_memcpy.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 15:32:11 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 06:36:02 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memcpy(void *dest, const void *src, size_t s) +{ + size_t i; + char *tmp_dest; + const char *tmp_src; + + if (dest == NULL && src == NULL) + return (NULL); + i = 0; + tmp_dest = dest; + tmp_src = src; + while (i < s) + { + tmp_dest[i] = tmp_src[i]; + i++; + } + return (dest); +} diff --git a/libft/ft_memmove.c b/libft/ft_memmove.c new file mode 100644 index 0000000..7101813 --- /dev/null +++ b/libft/ft_memmove.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 06:50:08 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:35:27 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memmove(void *dest, const void *src, size_t s) +{ + size_t i; + char *d; + const char *sc; + + if (dest == NULL && src == NULL) + return (dest); + d = dest; + sc = src; + if (d < sc) + ft_memcpy(d, sc, s); + else + { + i = s; + while (i > 0) + { + i--; + d[i] = sc[i]; + } + } + return (dest); +} diff --git a/libft/ft_memset.c b/libft/ft_memset.c new file mode 100644 index 0000000..5c2adcd --- /dev/null +++ b/libft/ft_memset.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 14:46:33 by erey-bet #+# #+# */ +/* Updated: 2022/10/15 23:31:18 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memset(void *ptr, int v, size_t count) +{ + size_t i; + char *tmp; + + i = 0; + tmp = ptr; + while (i < count) + { + tmp[i] = v; + i++; + } + return (ptr); +} diff --git a/libft/ft_power.c b/libft/ft_power.c new file mode 100644 index 0000000..2f9df8d --- /dev/null +++ b/libft/ft_power.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 22:50:22 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:50:31 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_power(int nb, int power) +{ + int i; + int new_nb; + + if (power < 0) + return (0); + i = 0; + new_nb = 1; + while (i < power) + { + i++; + new_nb *= nb; + } + return (new_nb); +} diff --git a/libft/ft_putchar_fd.c b/libft/ft_putchar_fd.c new file mode 100644 index 0000000..2cd47eb --- /dev/null +++ b/libft/ft_putchar_fd.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 00:21:56 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 00:31:51 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + write(fd, &c, 1); +} diff --git a/libft/ft_putendl_fd.c b/libft/ft_putendl_fd.c new file mode 100644 index 0000000..9484dd0 --- /dev/null +++ b/libft/ft_putendl_fd.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 00:48:29 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:14:10 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + if (s == NULL) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } + ft_putchar_fd('\n', fd); +} diff --git a/libft/ft_putnbr_fd.c b/libft/ft_putnbr_fd.c new file mode 100644 index 0000000..8c549e9 --- /dev/null +++ b/libft/ft_putnbr_fd.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 10:22:16 by erey-bet #+# #+# */ +/* Updated: 2022/10/18 17:32:20 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + int len; + long nl; + + nl = n; + if (nl < 0) + nl *= -1; + len = ft_get_size(nl); + if (n < 0) + ft_putchar_fd('-', fd); + while (len > 1) + { + --len; + ft_putchar_fd(nl / ft_power(10, len) % 10 + 48, fd); + } + ft_putchar_fd(nl % 10 + 48, fd); +} diff --git a/libft/ft_putstr_fd.c b/libft/ft_putstr_fd.c new file mode 100644 index 0000000..15457fa --- /dev/null +++ b/libft/ft_putstr_fd.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 00:32:38 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:13:50 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + if (s == NULL) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } +} diff --git a/libft/ft_split.c b/libft/ft_split.c new file mode 100644 index 0000000..7b305d7 --- /dev/null +++ b/libft/ft_split.c @@ -0,0 +1,117 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/28 09:52:05 by erey-bet #+# #+# */ +/* Updated: 2022/10/12 16:14:08 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int get_len_all(char const *s, char c) +{ + int i; + int check; + int count; + + i = 0; + check = 0; + count = 0; + while (s[i]) + { + if (s[i] != c && check == 0) + { + count++; + check = 1; + } + else if (s[i] == c && check == 1) + check = 0; + i++; + } + return (count); +} + +static int get_len_next(char const *s, char c, int i) +{ + int y; + int count; + + y = i; + count = 0; + while (s[y] == c) + y++; + while (s[y] && s[y++] != c) + count++; + return (count); +} + +static void *ft_malloc_split(char **strs, int *iyx, char const *s, char c) +{ + iyx[1]++; + strs[iyx[1]] = malloc(get_len_next(s, c, iyx[0]) + 1); + if (strs[iyx[1]] == NULL) + { + iyx[1]--; + while (iyx[1] >= 0) + { + free(strs[iyx[1]]); + iyx[1]--; + } + free(strs); + return (NULL); + } + return (""); +} + +static char **ft_split_bis(char const *s, char c, char **strs, int *iyx) +{ + int boo; + + boo = 0; + while (s[iyx[0]]) + { + if (s[iyx[0]] != c) + { + if (boo == 0) + if (ft_malloc_split(strs, iyx, s, c) == NULL) + return (NULL); + boo = 1; + strs[iyx[1]][iyx[2]] = s[iyx[0]]; + iyx[2]++; + } + else if (boo == 1) + { + strs[iyx[1]][iyx[2]] = '\0'; + iyx[2] = 0; + boo = 0; + } + iyx[0]++; + } + if (boo == 1) + strs[iyx[1]][iyx[2]] = '\0'; + return (strs); +} + +char **ft_split(char const *s, char c) +{ + char **strs; + int iyx[3]; + + iyx[0] = 0; + iyx[1] = -1; + iyx[2] = 0; + if (s == NULL) + return (NULL); + strs = malloc(sizeof(char *) * (get_len_all(s, c) + 1)); + if (strs == NULL) + return (NULL); + if (ft_split_bis(s, c, strs, iyx) == NULL) + return (NULL); + iyx[1]++; + strs[iyx[1]] = NULL; + return (strs); +} diff --git a/libft/ft_strchr.c b/libft/ft_strchr.c new file mode 100644 index 0000000..a6eabee --- /dev/null +++ b/libft/ft_strchr.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 10:05:58 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 02:22:26 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strchr(const char *str, int search) +{ + int i; + + i = 0; + while (str[i] || str[i] == (unsigned char)search) + { + if (str[i] == (unsigned char)search) + { + return ((char *)&str[i]); + } + i++; + } + return (NULL); +} diff --git a/libft/ft_strdup.c b/libft/ft_strdup.c new file mode 100644 index 0000000..1830bfc --- /dev/null +++ b/libft/ft_strdup.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/26 14:25:30 by erey-bet #+# #+# */ +/* Updated: 2022/09/28 16:32:55 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strdup(const char *src) +{ + char *src_copy; + int i; + + src_copy = (char *)malloc(sizeof(char) * ft_strlen(src) + 1); + if (src_copy == NULL) + return (NULL); + i = 0; + while (src[i]) + { + src_copy[i] = src[i]; + i++; + } + src_copy[i] = '\0'; + return (src_copy); +} diff --git a/libft/ft_striteri.c b/libft/ft_striteri.c new file mode 100644 index 0000000..5f63e33 --- /dev/null +++ b/libft/ft_striteri.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_striteri.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/04 23:17:51 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:14:20 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_striteri(char *s, void (*f)(unsigned int, char*)) +{ + unsigned int i; + + if (f == NULL || s == NULL) + return ; + i = 0; + while (s[i]) + { + f(i, &s[i]); + i++; + } +} diff --git a/libft/ft_strjoin.c b/libft/ft_strjoin.c new file mode 100644 index 0000000..3af4212 --- /dev/null +++ b/libft/ft_strjoin.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/27 14:47:27 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 14:19:45 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strjoin(char const *s1, char const *s2) +{ + char *tmp; + int size; + + if (s1 == NULL || s2 == NULL) + return (NULL); + size = ft_strlen(s1) + ft_strlen(s2) + 1; + tmp = malloc(size); + if (tmp == NULL) + return (NULL); + ft_strlcpy(tmp, s1, size); + ft_strlcat(tmp, s2, size); + return (tmp); +} diff --git a/libft/ft_strlcat.c b/libft/ft_strlcat.c new file mode 100644 index 0000000..dd71c78 --- /dev/null +++ b/libft/ft_strlcat.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/19 13:02:39 by erey-bet #+# #+# */ +/* Updated: 2022/10/14 17:49:58 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcat(char *dest, const char *src, size_t size) +{ + size_t len_dest; + size_t len_src; + + if (size == 0) + return (ft_strlen(src)); + len_dest = ft_strlen(dest); + if (len_dest >= size) + return (ft_strlen(src) + (size)); + len_src = ft_strlcpy(dest + len_dest, src, size - len_dest); + return (len_dest + len_src); +} diff --git a/libft/ft_strlcpy.c b/libft/ft_strlcpy.c new file mode 100644 index 0000000..b80d474 --- /dev/null +++ b/libft/ft_strlcpy.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 19:03:49 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:37:25 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcpy(char *dest, const char *src, size_t size) +{ + size_t i; + + i = 0; + if (size) + { + while (i < size - 1 && src[i] != '\0') + { + dest[i] = src[i]; + i++; + } + dest[i] = '\0'; + } + return (ft_strlen(src)); +} diff --git a/libft/ft_strlen.c b/libft/ft_strlen.c new file mode 100644 index 0000000..4cb5f51 --- /dev/null +++ b/libft/ft_strlen.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/15 11:46:17 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 08:52:38 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlen(const char *str) +{ + int i; + + i = 0; + while (str[i] != '\0') + i++; + return (i); +} diff --git a/libft/ft_strmapi.c b/libft/ft_strmapi.c new file mode 100644 index 0000000..325e929 --- /dev/null +++ b/libft/ft_strmapi.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/04 22:55:32 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 15:43:18 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + unsigned int i; + char *str; + + if (s == NULL || f == NULL) + return (NULL); + str = ft_strdup(s); + if (str == NULL) + return (NULL); + i = 0; + while (s[i]) + { + str[i] = f(i, s[i]); + i++; + } + return (str); +} diff --git a/libft/ft_strncmp.c b/libft/ft_strncmp.c new file mode 100644 index 0000000..9ca8735 --- /dev/null +++ b/libft/ft_strncmp.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/18 19:09:01 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 15:04:46 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_strncmp(const char *s1, const char *s2, size_t n) +{ + size_t i; + unsigned char *tmp_s1; + unsigned char *tmp_s2; + + if (n <= 0) + return (0); + tmp_s1 = (unsigned char *)s1; + tmp_s2 = (unsigned char *)s2; + i = 1; + while (*tmp_s1 == *tmp_s2 && (*tmp_s1 != '\0' && *tmp_s2 != '\0') && i < n) + { + tmp_s1++; + tmp_s2++; + i++; + } + return (*tmp_s1 - *tmp_s2); +} diff --git a/libft/ft_strnstr.c b/libft/ft_strnstr.c new file mode 100644 index 0000000..2845cbc --- /dev/null +++ b/libft/ft_strnstr.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/28 09:37:24 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 16:39:12 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + size_t i; + size_t y; + char *b; + + b = (char *)big; + i = 0; + if (!*little || (little == big && ft_strlen(little) <= len)) + return (b); + while (i < len && big[i]) + { + y = 0; + while (b[i + y] == little[y] && i + y < len) + { + y++; + if (little[y] == '\0') + return (&b[i]); + } + i++; + } + return (NULL); +} diff --git a/libft/ft_strrchr.c b/libft/ft_strrchr.c new file mode 100644 index 0000000..9e48783 --- /dev/null +++ b/libft/ft_strrchr.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strrchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 11:13:35 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 02:23:25 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strrchr(const char *str, int search) +{ + int i; + char *last; + + i = 0; + last = NULL; + while (str[i] || str[i] == (unsigned char)search) + { + if (str[i] == (unsigned char)search) + { + last = (char *)&str[i]; + if (str[i] == 0) + return (last); + } + i++; + } + return (last); +} diff --git a/libft/ft_strtrim.c b/libft/ft_strtrim.c new file mode 100644 index 0000000..c54b7cc --- /dev/null +++ b/libft/ft_strtrim.c @@ -0,0 +1,86 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strtrim.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/29 02:41:32 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:41:29 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int get_start(const char *str, char const *set) +{ + int i; + int y; + int check; + + i = 0; + while (str[i]) + { + y = 0; + check = 0; + while (set[y]) + { + if (str[i] == set[y]) + check = 1; + y++; + } + if (check == 0) + return (i); + i++; + } + return (0); +} + +static int get_end(const char *str, char const *set) +{ + int i; + int y; + int check; + + i = ft_strlen(str) - 1; + while (i > 0) + { + y = 0; + check = 0; + while (set[y]) + { + if (str[i] == set[y]) + check = 1; + y++; + } + if (check == 0) + return (i + 1); + i--; + } + return (0); +} + +char *ft_strtrim(char const *s1, char const *set) +{ + char *str; + int i; + int start; + int end; + + if (s1 == NULL || set == NULL) + return (NULL); + start = get_start(s1, set); + end = get_end(s1, set); + str = malloc(end - start + 1); + if (str == NULL) + return (NULL); + i = 0; + while (start < end) + { + str[i] = s1[start]; + i++; + start++; + } + str[i] = '\0'; + return (str); +} diff --git a/libft/ft_substr.c b/libft/ft_substr.c new file mode 100644 index 0000000..2a41b7b --- /dev/null +++ b/libft/ft_substr.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_substr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/28 16:33:43 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:09:26 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + long size; + char *new_s; + + if (s == NULL) + return (NULL); + size = ft_strlen(s) - start; + if (size < 0) + size = 0; + else if ((unsigned long)size > len) + size = len; + new_s = malloc(size + 1); + if (new_s == NULL) + return (NULL); + if (start <= ft_strlen(s)) + ft_strlcpy(new_s, s + start, len + 1); + else + new_s[0] = '\0'; + return (new_s); +} diff --git a/libft/ft_tolower.c b/libft/ft_tolower.c new file mode 100644 index 0000000..eea41be --- /dev/null +++ b/libft/ft_tolower.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 10:04:55 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 10:05:32 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + c = c + 32; + return (c); +} diff --git a/libft/ft_toupper.c b/libft/ft_toupper.c new file mode 100644 index 0000000..3bb2a91 --- /dev/null +++ b/libft/ft_toupper.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 10:01:53 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 10:04:19 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c = c - 32; + return (c); +} diff --git a/libft/libft.h b/libft/libft.h new file mode 100644 index 0000000..c9a266f --- /dev/null +++ b/libft/libft.h @@ -0,0 +1,71 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 16:31:10 by erey-bet #+# #+# */ +/* Updated: 2022/11/23 17:13:28 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H +# include +# include + +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; + +int ft_isalpha(int c); +int ft_isdigit(int c); +int ft_isalnum(int c); +int ft_isascii(int c); +int ft_isprint(int c); +int ft_toupper(int c); +int ft_tolower(int c); +size_t ft_strlen(const char *str); +void *ft_memset(void *ptr, int v, size_t count); +void ft_bzero(void *s, unsigned int n); +void *ft_memcpy(void *dest, const void *src, size_t s); +void *ft_memmove(void *dest, const void *src, size_t s); +void *ft_memchr(const void *memory_block, int searched_char, size_t size); +int ft_memcmp(const void *pointer1, const void *pointer2, size_t size); +size_t ft_strlcpy(char *dest, const char *src, size_t size); +char *ft_strnstr(const char *big, const char *little, size_t len); +char *ft_strchr(const char *str, int search); +char *ft_strrchr(const char *str, int search); +int ft_strncmp(const char *s1, const char *s2, size_t n); +size_t ft_strlcat(char *dest, const char *src, size_t size); +char *ft_strdup(const char *src); +int ft_atoi(const char *nptr); +int ft_atoi_check(const char *nptr); +char **ft_split(char const *s, char c); +void *ft_calloc(size_t nitems, size_t size); +char *ft_itoa(int n); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +void ft_striteri(char *s, void (*f)(unsigned int, char*)); +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); +int ft_get_size(long n); +int ft_power(int nb, int power); +char *ft_strjoin(char const *s1, char const *s2); +char *ft_strtrim(char const *s1, char const *set); +char *ft_substr(char const *s, unsigned int start, size_t len); +t_list *ft_lstnew(void *content); +void ft_lstadd_front(t_list **lst, t_list *new); +int ft_lstsize(t_list *lst); +t_list *ft_lstlast(t_list *lst); +void ft_lstadd_back(t_list **lst, t_list *new); +void ft_lstdelone(t_list *lst, void (*del)(void*)); +void ft_lstclear(t_list **lst, void (*del)(void*)); +void ft_lstiter(t_list *lst, void (*f)(void *)); +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)); + +#endif