From a3f3fc742daa4b28094b5ebe9be60263c41979d1 Mon Sep 17 00:00:00 2001
From: Rudy Bousset <rbousset@z2r5p6.le-101.fr>
Date: Wed, 30 Oct 2019 15:00:17 +0100
Subject: New libft, feelsgoodman

---
 libft/src/ft_atoi.c         |  79 ++++++++++++++++++++++++++++++++
 libft/src/ft_bzero.c        |  23 ++++++++++
 libft/src/ft_calloc.c       |  29 ++++++++++++
 libft/src/ft_isalnum.c      |  22 +++++++++
 libft/src/ft_isalpha.c      |  36 +++++++++++++++
 libft/src/ft_isascii.c      |  20 ++++++++
 libft/src/ft_isdigit.c      |  20 ++++++++
 libft/src/ft_isprint.c      |  20 ++++++++
 libft/src/ft_isspace.c      |  27 +++++++++++
 libft/src/ft_itoa.c         |  62 +++++++++++++++++++++++++
 libft/src/ft_lstadd_back.c  |  31 +++++++++++++
 libft/src/ft_lstadd_front.c |  23 ++++++++++
 libft/src/ft_lstclear.c     |  34 ++++++++++++++
 libft/src/ft_lstdelone.c    |  25 ++++++++++
 libft/src/ft_lstiter.c      |  27 +++++++++++
 libft/src/ft_lstlast.c      |  25 ++++++++++
 libft/src/ft_lstmap.c       |  40 ++++++++++++++++
 libft/src/ft_lstnew.c       |  27 +++++++++++
 libft/src/ft_lstsize.c      |  30 ++++++++++++
 libft/src/ft_memccpy.c      |  37 +++++++++++++++
 libft/src/ft_memchr.c       |  33 ++++++++++++++
 libft/src/ft_memcmp.c       |  35 ++++++++++++++
 libft/src/ft_memcpy.c       |  36 +++++++++++++++
 libft/src/ft_memmove.c      |  27 +++++++++++
 libft/src/ft_memset.c       |  33 ++++++++++++++
 libft/src/ft_putchar.c      |  20 ++++++++
 libft/src/ft_putchar_fd.c   |  20 ++++++++
 libft/src/ft_putendl.c      |  21 +++++++++
 libft/src/ft_putendl_fd.c   |  21 +++++++++
 libft/src/ft_putnbr.c       |  36 +++++++++++++++
 libft/src/ft_putnbr_fd.c    |  34 ++++++++++++++
 libft/src/ft_putstr.c       |  21 +++++++++
 libft/src/ft_putstr_fd.c    |  21 +++++++++
 libft/src/ft_split.c        | 109 ++++++++++++++++++++++++++++++++++++++++++++
 libft/src/ft_sqrt.c         |  27 +++++++++++
 libft/src/ft_strcat.c       |  32 +++++++++++++
 libft/src/ft_strchr.c       |  31 +++++++++++++
 libft/src/ft_strcmp.c       |  27 +++++++++++
 libft/src/ft_strdup.c       |  31 +++++++++++++
 libft/src/ft_strjoin.c      |  68 +++++++++++++++++++++++++++
 libft/src/ft_strlcat.c      |  41 +++++++++++++++++
 libft/src/ft_strlcpy.c      |  33 ++++++++++++++
 libft/src/ft_strlen.c       |  27 +++++++++++
 libft/src/ft_strmapi.c      |  34 ++++++++++++++
 libft/src/ft_strncmp.c      |  31 +++++++++++++
 libft/src/ft_strnlen.c      |  27 +++++++++++
 libft/src/ft_strnstr.c      |  45 ++++++++++++++++++
 libft/src/ft_strrchr.c      |  32 +++++++++++++
 libft/src/ft_strtrim.c      |  30 ++++++++++++
 libft/src/ft_substr.c       |  33 ++++++++++++++
 libft/src/ft_tolower.c      |  28 ++++++++++++
 libft/src/ft_toupper.c      |  28 ++++++++++++
 52 files changed, 1709 insertions(+)
 create mode 100644 libft/src/ft_atoi.c
 create mode 100644 libft/src/ft_bzero.c
 create mode 100644 libft/src/ft_calloc.c
 create mode 100644 libft/src/ft_isalnum.c
 create mode 100644 libft/src/ft_isalpha.c
 create mode 100644 libft/src/ft_isascii.c
 create mode 100644 libft/src/ft_isdigit.c
 create mode 100644 libft/src/ft_isprint.c
 create mode 100644 libft/src/ft_isspace.c
 create mode 100644 libft/src/ft_itoa.c
 create mode 100644 libft/src/ft_lstadd_back.c
 create mode 100644 libft/src/ft_lstadd_front.c
 create mode 100644 libft/src/ft_lstclear.c
 create mode 100644 libft/src/ft_lstdelone.c
 create mode 100644 libft/src/ft_lstiter.c
 create mode 100644 libft/src/ft_lstlast.c
 create mode 100644 libft/src/ft_lstmap.c
 create mode 100644 libft/src/ft_lstnew.c
 create mode 100644 libft/src/ft_lstsize.c
 create mode 100644 libft/src/ft_memccpy.c
 create mode 100644 libft/src/ft_memchr.c
 create mode 100644 libft/src/ft_memcmp.c
 create mode 100644 libft/src/ft_memcpy.c
 create mode 100644 libft/src/ft_memmove.c
 create mode 100644 libft/src/ft_memset.c
 create mode 100644 libft/src/ft_putchar.c
 create mode 100644 libft/src/ft_putchar_fd.c
 create mode 100644 libft/src/ft_putendl.c
 create mode 100644 libft/src/ft_putendl_fd.c
 create mode 100644 libft/src/ft_putnbr.c
 create mode 100644 libft/src/ft_putnbr_fd.c
 create mode 100644 libft/src/ft_putstr.c
 create mode 100644 libft/src/ft_putstr_fd.c
 create mode 100644 libft/src/ft_split.c
 create mode 100644 libft/src/ft_sqrt.c
 create mode 100644 libft/src/ft_strcat.c
 create mode 100644 libft/src/ft_strchr.c
 create mode 100644 libft/src/ft_strcmp.c
 create mode 100644 libft/src/ft_strdup.c
 create mode 100644 libft/src/ft_strjoin.c
 create mode 100644 libft/src/ft_strlcat.c
 create mode 100644 libft/src/ft_strlcpy.c
 create mode 100644 libft/src/ft_strlen.c
 create mode 100644 libft/src/ft_strmapi.c
 create mode 100644 libft/src/ft_strncmp.c
 create mode 100644 libft/src/ft_strnlen.c
 create mode 100644 libft/src/ft_strnstr.c
 create mode 100644 libft/src/ft_strrchr.c
 create mode 100644 libft/src/ft_strtrim.c
 create mode 100644 libft/src/ft_substr.c
 create mode 100644 libft/src/ft_tolower.c
 create mode 100644 libft/src/ft_toupper.c

(limited to 'libft/src')

diff --git a/libft/src/ft_atoi.c b/libft/src/ft_atoi.c
new file mode 100644
index 0000000..8903606
--- /dev/null
+++ b/libft/src/ft_atoi.c
@@ -0,0 +1,79 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_atoi.c                                        .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/10 05:32:13 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/15 02:16:20 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <inttypes.h>
+
+static uint8_t
+	ft_isaspace(int c)
+{
+	if (c == '\t' ||
+			c == '\n' ||
+			c == '\v' ||
+			c == '\f' ||
+			c == '\r' ||
+			c == ' ')
+		return (1);
+	return (0);
+}
+
+static int8_t
+	ft_setsign(const char c)
+{
+	int8_t	sign;
+
+	sign = 1;
+	if (c == '-')
+		sign = -1;
+	return (sign);
+}
+
+static uint8_t
+	ft_seti(const char *str)
+{
+	uint8_t	i;
+
+	i = 0;
+	while (ft_isaspace(str[i]))
+		i++;
+	return (i);
+}
+
+int
+	ft_atoi(const char *str)
+{
+	uint8_t	i;
+	int8_t	sign;
+	long	nb;
+
+	if (!str || !*str)
+		return (0);
+	i = ft_seti(str);
+	nb = 0;
+	sign = 1;
+	if (str[i] == '+' || str[i] == '-')
+		sign = ft_setsign(str[i++]);
+	while (ft_isdigit(str[i]))
+	{
+		if (nb * 10 + (str[i] - 48) < nb)
+		{
+			if (sign < 0)
+				return (0);
+			return (-1);
+		}
+		nb = nb * 10 + (str[i] - 48);
+		i++;
+	}
+	nb *= sign;
+	return ((int)nb);
+}
diff --git a/libft/src/ft_bzero.c b/libft/src/ft_bzero.c
new file mode 100644
index 0000000..05ff6b7
--- /dev/null
+++ b/libft/src/ft_bzero.c
@@ -0,0 +1,23 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_bzero.c                                       .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 14:04:55 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:45:28 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+void
+	ft_bzero(void *s, size_t n)
+{
+	if (!s)
+		return ;
+	ft_memset(s, 0, n);
+}
diff --git a/libft/src/ft_calloc.c b/libft/src/ft_calloc.c
new file mode 100644
index 0000000..49383da
--- /dev/null
+++ b/libft/src/ft_calloc.c
@@ -0,0 +1,29 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_calloc.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/11 02:47:15 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:43:53 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+#include <stdlib.h>
+
+void
+	*ft_calloc(size_t count, size_t size)
+{
+	void	*ptr;
+
+	ptr = 0;
+	ptr = malloc(count * size);
+	if (!ptr)
+		return (NULL);
+	ft_bzero(ptr, count * size);
+	return (ptr);
+}
diff --git a/libft/src/ft_isalnum.c b/libft/src/ft_isalnum.c
new file mode 100644
index 0000000..e9e1134
--- /dev/null
+++ b/libft/src/ft_isalnum.c
@@ -0,0 +1,22 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_isalnum.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 18:07:44 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:45:57 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+int
+	ft_isalnum(int c)
+{
+	if (ft_isalpha(c) || ft_isdigit(c))
+		return (1);
+	return (0);
+}
diff --git a/libft/src/ft_isalpha.c b/libft/src/ft_isalpha.c
new file mode 100644
index 0000000..9e95bd6
--- /dev/null
+++ b/libft/src/ft_isalpha.c
@@ -0,0 +1,36 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_isalpha.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 16:45:42 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:42:03 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+static int
+	ft_isupper(int c)
+{
+	if (c >= 65 && c <= 90)
+		return (1);
+	return (0);
+}
+
+static int
+	ft_islower(int c)
+{
+	if (c >= 97 && c <= 122)
+		return (1);
+	return (0);
+}
+
+int
+	ft_isalpha(int c)
+{
+	if (ft_isupper(c) || ft_islower(c))
+		return (1);
+	return (0);
+}
diff --git a/libft/src/ft_isascii.c b/libft/src/ft_isascii.c
new file mode 100644
index 0000000..937ead5
--- /dev/null
+++ b/libft/src/ft_isascii.c
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_isascii.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 18:18:31 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:41:32 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+int
+	ft_isascii(int c)
+{
+	if (c >= 0 && c <= 127)
+		return (1);
+	return (0);
+}
diff --git a/libft/src/ft_isdigit.c b/libft/src/ft_isdigit.c
new file mode 100644
index 0000000..52ededc
--- /dev/null
+++ b/libft/src/ft_isdigit.c
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_isdigit.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 17:46:41 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:41:27 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+int
+	ft_isdigit(int c)
+{
+	if (c >= 48 && c <= 57)
+		return (1);
+	return (0);
+}
diff --git a/libft/src/ft_isprint.c b/libft/src/ft_isprint.c
new file mode 100644
index 0000000..d82ded0
--- /dev/null
+++ b/libft/src/ft_isprint.c
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_isprint.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 18:23:39 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:41:21 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+int
+	ft_isprint(int c)
+{
+	if (c >= 32 && c <= 126)
+		return (1);
+	return (0);
+}
diff --git a/libft/src/ft_isspace.c b/libft/src/ft_isspace.c
new file mode 100644
index 0000000..c9cf255
--- /dev/null
+++ b/libft/src/ft_isspace.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_isspace.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/10 05:57:19 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:44:18 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <inttypes.h>
+
+uint8_t
+	ft_isspace(int c)
+{
+	if (c == '\t' ||
+			c == '\n' ||
+			c == '\v' ||
+			c == '\f' ||
+			c == '\r' ||
+			c == ' ')
+		return (1);
+	return (0);
+}
diff --git a/libft/src/ft_itoa.c b/libft/src/ft_itoa.c
new file mode 100644
index 0000000..bf3c0c8
--- /dev/null
+++ b/libft/src/ft_itoa.c
@@ -0,0 +1,62 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_itoa.c                                        .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 02:22:48 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 13:35:46 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <inttypes.h>
+#include <stdlib.h>
+
+static uint8_t
+	ft_intlen(int n)
+{
+	uint8_t	len;
+
+	len = 0;
+	if (!n)
+		return (1);
+	if (n < 0)
+		len = 1;
+	while (n != 0)
+	{
+		n /= 10;
+		len++;
+	}
+	return (len);
+}
+
+char
+	*ft_itoa(int n)
+{
+	char			*s;
+	unsigned int	nb;
+	uint8_t			i;
+
+	i = ft_intlen(n) - 1;
+	if (!(s = (char*)malloc((i + 2) * sizeof(char))))
+		return (NULL);
+	if (!n)
+		s[i] = '0';
+	nb = n;
+	if (n < 0)
+	{
+		s[0] = '-';
+		nb = -n;
+	}
+	s[i + 1] = '\0';
+	while (nb > 0)
+	{
+		s[i] = 48 + (nb % 10);
+		nb = nb / 10;
+		i--;
+	}
+	return (s);
+}
diff --git a/libft/src/ft_lstadd_back.c b/libft/src/ft_lstadd_back.c
new file mode 100644
index 0000000..58b3a72
--- /dev/null
+++ b/libft/src/ft_lstadd_back.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstadd_back.c                                 .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 10:04:16 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 10:11:08 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+void
+	ft_lstadd_back(t_list **alst, t_list *new)
+{
+	t_list *tmp;
+
+	if (!alst || !new)
+		return ;
+	if (!*alst)
+		*alst = new;
+	else
+	{
+		tmp = ft_lstlast(*alst);
+		tmp->next = new;
+	}
+}
diff --git a/libft/src/ft_lstadd_front.c b/libft/src/ft_lstadd_front.c
new file mode 100644
index 0000000..c9515ea
--- /dev/null
+++ b/libft/src/ft_lstadd_front.c
@@ -0,0 +1,23 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstadd_front.c                                .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 09:31:45 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 10:11:10 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void
+	ft_lstadd_front(t_list **alst, t_list *new)
+{
+	if (!alst || !new)
+		return ;
+	new->next = *alst;
+	*alst = new;
+}
diff --git a/libft/src/ft_lstclear.c b/libft/src/ft_lstclear.c
new file mode 100644
index 0000000..8d97b9c
--- /dev/null
+++ b/libft/src/ft_lstclear.c
@@ -0,0 +1,34 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstclear.c                                    .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 10:19:53 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 13:52:03 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stdlib.h>
+
+void
+	ft_lstclear(t_list **lst, void (*del)(void *))
+{
+	t_list	*tmp;
+	t_list	*renext;
+
+	if (!lst)
+		return ;
+	tmp = *lst;
+	while (tmp)
+	{
+		renext = tmp->next;
+		del(tmp->content);
+		free(tmp);
+		tmp = renext;
+	}
+	*lst = NULL;
+}
diff --git a/libft/src/ft_lstdelone.c b/libft/src/ft_lstdelone.c
new file mode 100644
index 0000000..42a1da8
--- /dev/null
+++ b/libft/src/ft_lstdelone.c
@@ -0,0 +1,25 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstdelone.c                                   .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 10:11:20 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 10:18:40 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stdlib.h>
+
+void
+	ft_lstdelone(t_list *lst, void (*del)(void *))
+{
+	if (lst)
+	{
+		del(lst->content);
+		free(lst);
+	}
+}
diff --git a/libft/src/ft_lstiter.c b/libft/src/ft_lstiter.c
new file mode 100644
index 0000000..3129ab5
--- /dev/null
+++ b/libft/src/ft_lstiter.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstiter.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 10:30:22 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 11:01:22 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+void
+	ft_lstiter(t_list *lst, void (*f)(void *))
+{
+	if (!lst)
+		return ;
+	while (lst != NULL)
+	{
+		(*f)(lst->content);
+		lst = lst->next;
+	}
+}
diff --git a/libft/src/ft_lstlast.c b/libft/src/ft_lstlast.c
new file mode 100644
index 0000000..a685322
--- /dev/null
+++ b/libft/src/ft_lstlast.c
@@ -0,0 +1,25 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstlast.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 09:53:13 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 10:11:09 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+t_list
+	*ft_lstlast(t_list *lst)
+{
+	if (!lst)
+		return (NULL);
+	while (lst->next != NULL)
+		lst = lst->next;
+	return (lst);
+}
diff --git a/libft/src/ft_lstmap.c b/libft/src/ft_lstmap.c
new file mode 100644
index 0000000..474b1bc
--- /dev/null
+++ b/libft/src/ft_lstmap.c
@@ -0,0 +1,40 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstmap.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 10:36:15 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 11:06:32 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+#include <stdlib.h>
+
+t_list
+	*ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
+{
+	t_list	*nlst;
+	t_list	*new;
+
+	if (!lst)
+		return (NULL);
+	nlst = ft_lstnew((*f)(lst->content));
+	if (!nlst)
+		return (NULL);
+	lst = lst->next;
+	while (lst != NULL)
+	{
+		new = ft_lstnew((*f)(lst->content));
+		(*del)(lst->content);
+		if (!new)
+			return (NULL);
+		lst = lst->next;
+		ft_lstadd_back(&nlst, new);
+	}
+	return (nlst);
+}
diff --git a/libft/src/ft_lstnew.c b/libft/src/ft_lstnew.c
new file mode 100644
index 0000000..a5e1c0a
--- /dev/null
+++ b/libft/src/ft_lstnew.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstnew.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 09:25:56 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 10:56:17 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+t_list
+	*ft_lstnew(void *content)
+{
+	t_list	*nlst;
+
+	nlst = (t_list*)ft_calloc(1, sizeof(t_list));
+	if (!nlst)
+		return (NULL);
+	nlst->content = content;
+	nlst->next = NULL;
+	return (nlst);
+}
diff --git a/libft/src/ft_lstsize.c b/libft/src/ft_lstsize.c
new file mode 100644
index 0000000..1742a5f
--- /dev/null
+++ b/libft/src/ft_lstsize.c
@@ -0,0 +1,30 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_lstsize.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 09:45:10 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 09:51:16 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+int
+	ft_lstsize(t_list *lst)
+{
+	int	i;
+
+	if (!lst)
+		return (0);
+	i = 0;
+	while (lst != NULL)
+	{
+		lst = lst->next;
+		i++;
+	}
+	return (i);
+}
diff --git a/libft/src/ft_memccpy.c b/libft/src/ft_memccpy.c
new file mode 100644
index 0000000..a029e7d
--- /dev/null
+++ b/libft/src/ft_memccpy.c
@@ -0,0 +1,37 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_memccpy.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 14:59:46 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:40:44 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+#include <stdio.h>
+
+void
+	*ft_memccpy(void *dst, const void *src, int c, size_t n)
+{
+	unsigned char		*dst_ptr;
+	const unsigned char	*src_ptr;
+
+	dst_ptr = (unsigned char*)dst;
+	src_ptr = (unsigned char*)src;
+	if (!*dst_ptr && !*src_ptr && n)
+		return (NULL);
+	if (n)
+	{
+		while (n)
+		{
+			if ((*dst_ptr++ = *src_ptr++) == (unsigned char)c)
+				return (dst_ptr);
+			n--;
+		}
+	}
+	return (NULL);
+}
diff --git a/libft/src/ft_memchr.c b/libft/src/ft_memchr.c
new file mode 100644
index 0000000..c2578aa
--- /dev/null
+++ b/libft/src/ft_memchr.c
@@ -0,0 +1,33 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_memchr.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 19:14:54 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:40:23 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+void
+	*ft_memchr(const void *s, int c, size_t n)
+{
+	unsigned char	*s_ptr;
+	size_t			i;
+
+	if (!s)
+		return (NULL);
+	i = 0;
+	s_ptr = (unsigned char*)s;
+	while (i < n)
+	{
+		if (s_ptr[i] == (unsigned char)c)
+			return ((char*)&s[i]);
+		i++;
+	}
+	return (NULL);
+}
diff --git a/libft/src/ft_memcmp.c b/libft/src/ft_memcmp.c
new file mode 100644
index 0000000..59a99bd
--- /dev/null
+++ b/libft/src/ft_memcmp.c
@@ -0,0 +1,35 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_memcmp.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 19:23:43 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:40:10 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+int
+	ft_memcmp(const void *s1, const void *s2, size_t n)
+{
+	const unsigned char	*s1_ptr;
+	const unsigned char	*s2_ptr;
+
+	s1_ptr = (unsigned char*)s1;
+	s2_ptr = (unsigned char*)s2;
+	if (!s1 || !s2)
+		return (0);
+	while (n)
+	{
+		if (*s1_ptr != *s2_ptr)
+			return (*s1_ptr - *s2_ptr);
+		s1_ptr++;
+		s2_ptr++;
+		n--;
+	}
+	return (0);
+}
diff --git a/libft/src/ft_memcpy.c b/libft/src/ft_memcpy.c
new file mode 100644
index 0000000..548ea95
--- /dev/null
+++ b/libft/src/ft_memcpy.c
@@ -0,0 +1,36 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_memcpy.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 14:17:11 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:39:01 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+#include <stdio.h>
+
+void
+	*ft_memcpy(void *dst, const void *src, size_t n)
+{
+	unsigned char	*dst_ptr;
+	unsigned char	*src_ptr;
+	size_t			i;
+
+	dst_ptr = (unsigned char*)dst;
+	src_ptr = (unsigned char*)src;
+	i = 0;
+	if (src_ptr == NULL && dst_ptr == NULL && n != 0)
+		return (NULL);
+	while (i < n)
+	{
+		dst_ptr[i] = src_ptr[i];
+		i++;
+	}
+	return (dst_ptr);
+}
diff --git a/libft/src/ft_memmove.c b/libft/src/ft_memmove.c
new file mode 100644
index 0000000..000a2b7
--- /dev/null
+++ b/libft/src/ft_memmove.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_memmove.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 18:57:44 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:38:47 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+void
+	*ft_memmove(void *dst, const void *src, size_t len)
+{
+	char	buff[len];
+
+	if (src == NULL && dst == NULL && len != 0)
+		return (NULL);
+	ft_memcpy(buff, src, len);
+	ft_memcpy(dst, buff, len);
+	return (dst);
+}
diff --git a/libft/src/ft_memset.c b/libft/src/ft_memset.c
new file mode 100644
index 0000000..b94c6fa
--- /dev/null
+++ b/libft/src/ft_memset.c
@@ -0,0 +1,33 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_memset.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 13:41:09 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:38:10 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+void
+	*ft_memset(void *b, int c, size_t len)
+{
+	unsigned char	*str;
+
+	str = b;
+	if (!b)
+		return (NULL);
+	if (!len)
+		return (b);
+	while (len > 0)
+	{
+		*str = (unsigned char)c;
+		str++;
+		len--;
+	}
+	return (b);
+}
diff --git a/libft/src/ft_putchar.c b/libft/src/ft_putchar.c
new file mode 100644
index 0000000..b558ead
--- /dev/null
+++ b/libft/src/ft_putchar.c
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putchar.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/12 15:02:55 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/15 01:10:32 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <unistd.h>
+
+int
+	ft_putchar(int c)
+{
+	return (write(1, &c, 1));
+}
diff --git a/libft/src/ft_putchar_fd.c b/libft/src/ft_putchar_fd.c
new file mode 100644
index 0000000..f57a4f9
--- /dev/null
+++ b/libft/src/ft_putchar_fd.c
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putchar_fd.c                                  .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 08:27:19 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:49:34 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <unistd.h>
+
+void
+	ft_putchar_fd(char c, int fd)
+{
+	write(fd, &c, 1);
+}
diff --git a/libft/src/ft_putendl.c b/libft/src/ft_putendl.c
new file mode 100644
index 0000000..26dc80b
--- /dev/null
+++ b/libft/src/ft_putendl.c
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putendl.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/15 05:19:52 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/15 05:19:53 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <unistd.h>
+
+int
+	ft_putendl(const char *s)
+{
+	return (write(1, s, ft_strlen(s)) + ft_putchar('\n'));
+}
diff --git a/libft/src/ft_putendl_fd.c b/libft/src/ft_putendl_fd.c
new file mode 100644
index 0000000..39fe7c1
--- /dev/null
+++ b/libft/src/ft_putendl_fd.c
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putendl_fd.c                                  .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 08:52:34 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 09:01:41 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void
+	ft_putendl_fd(char *s, int fd)
+{
+	ft_putstr_fd(s, fd);
+	ft_putchar_fd('\n', fd);
+}
diff --git a/libft/src/ft_putnbr.c b/libft/src/ft_putnbr.c
new file mode 100644
index 0000000..5220151
--- /dev/null
+++ b/libft/src/ft_putnbr.c
@@ -0,0 +1,36 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putnbr.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/08/08 12:22:48 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/08/12 17:54:48 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <unistd.h>
+
+int
+	ft_putnbr(int nb)
+{
+	unsigned int	i;
+
+	i = nb;
+	if (nb < 0)
+	{
+		ft_putchar('-');
+		i = -nb;
+	}
+	if (i > 9)
+	{
+		ft_putnbr(i / 10);
+		ft_putchar((i % 10) + '0');
+	}
+	else
+		ft_putchar(i + '0');
+	return (0);
+}
diff --git a/libft/src/ft_putnbr_fd.c b/libft/src/ft_putnbr_fd.c
new file mode 100644
index 0000000..b240f43
--- /dev/null
+++ b/libft/src/ft_putnbr_fd.c
@@ -0,0 +1,34 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putnbr_fd.c                                   .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 08:57:19 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 12:13:09 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+void
+	ft_putnbr_fd(int n, int fd)
+{
+	unsigned int	i;
+
+	i = n;
+	if (n < 0)
+	{
+		ft_putchar_fd('-', fd);
+		i = -n;
+	}
+	if (i > 9)
+	{
+		ft_putnbr_fd(i / 10, fd);
+		ft_putchar_fd((i % 10) + 48, fd);
+	}
+	else
+		ft_putchar_fd(i + 48, fd);
+}
diff --git a/libft/src/ft_putstr.c b/libft/src/ft_putstr.c
new file mode 100644
index 0000000..d29a940
--- /dev/null
+++ b/libft/src/ft_putstr.c
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putstr.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 09:05:27 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 09:07:45 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <unistd.h>
+
+int
+	ft_putstr(const char *s)
+{
+	return (write(1, s, ft_strlen(s)));
+}
diff --git a/libft/src/ft_putstr_fd.c b/libft/src/ft_putstr_fd.c
new file mode 100644
index 0000000..b90c078
--- /dev/null
+++ b/libft/src/ft_putstr_fd.c
@@ -0,0 +1,21 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_putstr_fd.c                                   .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 08:48:25 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 09:00:42 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <unistd.h>
+
+void
+	ft_putstr_fd(char *s, int fd)
+{
+	write(fd, s, ft_strlen(s));
+}
diff --git a/libft/src/ft_split.c b/libft/src/ft_split.c
new file mode 100644
index 0000000..7c706cf
--- /dev/null
+++ b/libft/src/ft_split.c
@@ -0,0 +1,109 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_split.c                                       .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/12 19:24:20 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:37:16 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+#include <stdlib.h>
+#include <inttypes.h>
+
+static uint8_t
+	ft_check(int c, char sep)
+{
+	if (c == sep)
+		return (1);
+	return (0);
+}
+
+static size_t
+	ft_strlen_plus(const char *str, char c)
+{
+	size_t	i;
+	size_t	count;
+	uint8_t	ibool;
+
+	i = 0;
+	count = 0;
+	ibool = 1;
+	while (str[i])
+	{
+		while (ft_check(str[i], c) && str[i])
+			i++;
+		while (!ft_check(str[i], c) && str[i])
+		{
+			if (ibool == 1)
+				count++;
+			ibool = 0;
+			i++;
+		}
+		ibool = 1;
+	}
+	return (count);
+}
+
+static size_t
+	ft_strlen_again(const char *str, char c)
+{
+	size_t	i;
+
+	i = 0;
+	while (!ft_check(str[i], c) && str[i])
+		i++;
+	return (i);
+}
+
+static char
+	*ft_strdup_plus(const char *src, char c)
+{
+	size_t	i;
+	size_t	slen;
+	char	*nstr;
+
+	i = 0;
+	slen = ft_strlen_again(src, c) + 1;
+	if (!(nstr = (char*)ft_calloc(slen, sizeof(char))))
+		return (NULL);
+	while (!ft_check(src[i], c) && src[i])
+	{
+		nstr[i] = src[i];
+		i++;
+	}
+	nstr[i] = '\0';
+	return (nstr);
+}
+
+char
+	**ft_split(const char *s, char c)
+{
+	size_t	i;
+	size_t	j;
+	char	**best_split;
+
+	i = 0;
+	j = 0;
+	if (!(best_split = (char **)ft_calloc(ft_strlen_plus(s, c) + 1,
+						sizeof(char *))))
+		return (NULL);
+	while (s[i])
+	{
+		while (ft_check(s[i], c) && s[i])
+			i++;
+		while (!ft_check(s[i], c) && s[i])
+		{
+			best_split[j] = ft_strdup_plus(&s[i], c);
+			i += ft_strlen_again(&s[i], c);
+			j++;
+		}
+	}
+	best_split[j] = 0;
+	return (best_split);
+}
diff --git a/libft/src/ft_sqrt.c b/libft/src/ft_sqrt.c
new file mode 100644
index 0000000..3003e6d
--- /dev/null
+++ b/libft/src/ft_sqrt.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_sqrt.c                                        .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/08/10 21:34:14 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/14 23:26:06 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <limits.h>
+
+double
+	ft_sqrt(double x)
+{
+	double	i;
+
+	i = 0.0000001;
+	while (i * i < x && i * i < INT_MAX)
+	{
+		i += 0.0000001;
+	}
+	return (i);
+}
diff --git a/libft/src/ft_strcat.c b/libft/src/ft_strcat.c
new file mode 100644
index 0000000..59084c2
--- /dev/null
+++ b/libft/src/ft_strcat.c
@@ -0,0 +1,32 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strcat.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/12 16:31:34 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:44:34 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+char
+	*ft_strcat(char *s1, const char *s2)
+{
+	int		i;
+	int		j;
+
+	i = 0;
+	j = 0;
+	while (s1[i] != '\0')
+		i++;
+	while (s2[j] != '\0')
+	{
+		s1[i] = s2[j];
+		i++;
+		j++;
+	}
+	s1[i] = '\0';
+	return (s1);
+}
diff --git a/libft/src/ft_strchr.c b/libft/src/ft_strchr.c
new file mode 100644
index 0000000..86bd41d
--- /dev/null
+++ b/libft/src/ft_strchr.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strchr.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 18:39:17 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:36:43 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+char
+	*ft_strchr(const char *s, int c)
+{
+	size_t	i;
+
+	i = 0;
+	if (!s)
+		return (NULL);
+	while (s[i] != c)
+	{
+		if (!s[i])
+			return (NULL);
+		i++;
+	}
+	return ((char*)&s[i]);
+}
diff --git a/libft/src/ft_strcmp.c b/libft/src/ft_strcmp.c
new file mode 100644
index 0000000..2e9ffe9
--- /dev/null
+++ b/libft/src/ft_strcmp.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strcmp.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 13:55:24 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 13:56:42 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+int
+	ft_strcmp(const char *s1, const char *s2)
+{
+	size_t		i;
+	int			diff;
+
+	i = 0;
+	while (s1[i] == s2[i])
+		i++;
+	diff = s1[i] - s2[i];
+	return (diff);
+}
diff --git a/libft/src/ft_strdup.c b/libft/src/ft_strdup.c
new file mode 100644
index 0000000..ce74fb5
--- /dev/null
+++ b/libft/src/ft_strdup.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strdup.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/11 05:45:32 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:36:24 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stdlib.h>
+
+char
+	*ft_strdup(const char *s1)
+{
+	size_t	slen;
+	char	*new_str;
+
+	new_str = "";
+	slen = ft_strlen(s1);
+	new_str = (char *)malloc((slen + 1) * sizeof(char));
+	if (new_str == NULL)
+		return (NULL);
+	ft_memcpy(new_str, s1, slen);
+	new_str[slen] = '\0';
+	return (new_str);
+}
diff --git a/libft/src/ft_strjoin.c b/libft/src/ft_strjoin.c
new file mode 100644
index 0000000..f666781
--- /dev/null
+++ b/libft/src/ft_strjoin.c
@@ -0,0 +1,68 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strjoin.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/12 16:35:23 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:36:17 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stdlib.h>
+
+size_t
+	ft_strleen(const char *s)
+{
+	size_t	i;
+
+	i = 0;
+	while (s[i] != '\0')
+		i++;
+	return (i);
+}
+
+static char
+	*ft_recalloc(size_t size)
+{
+	char	*str;
+
+	str = 0;
+	str = malloc((size + 1) * sizeof(char));
+	if (!str)
+		return (NULL);
+	ft_bzero(str, size);
+	return (str);
+}
+
+char
+	*ft_strjoin(const char *s1, const char *s2)
+{
+	char	*str;
+	size_t	i;
+	size_t	j;
+	size_t	size;
+
+	size = (ft_strleen(s1) + ft_strleen(s2));
+	str = (char*)ft_recalloc(ft_strleen(s1) + ft_strleen(s2));
+	i = 0;
+	j = 0;
+	if (!str)
+		return (NULL);
+	while (i < ft_strleen(s1))
+	{
+		str[i] = s1[i];
+		i++;
+	}
+	while (i < size)
+	{
+		str[i] = s2[j];
+		i++;
+		j++;
+	}
+	str[i] = '\0';
+	return (str);
+}
diff --git a/libft/src/ft_strlcat.c b/libft/src/ft_strlcat.c
new file mode 100644
index 0000000..98fa3e8
--- /dev/null
+++ b/libft/src/ft_strlcat.c
@@ -0,0 +1,41 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strlcat.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/09 06:44:30 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:36:04 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+static size_t
+	ft_strlen_size(const char *s, size_t size)
+{
+	const char *ptr = s;
+
+	while (size > 0 && *ptr)
+	{
+		size--;
+		ptr++;
+	}
+	return (ptr - s);
+}
+
+size_t
+	ft_strlcat(char *dst, const char *src, size_t size)
+{
+	size_t dst_len;
+
+	if (!dst || !src)
+		return (0);
+	dst_len = ft_strlen_size(dst, size);
+	if (dst_len == size)
+		return (dst_len + ft_strlen(src));
+	return (dst_len + ft_strlcpy(dst + dst_len, src, size - dst_len));
+}
diff --git a/libft/src/ft_strlcpy.c b/libft/src/ft_strlcpy.c
new file mode 100644
index 0000000..bba4263
--- /dev/null
+++ b/libft/src/ft_strlcpy.c
@@ -0,0 +1,33 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strlcpy.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/08 20:44:40 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:35:51 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+size_t
+	ft_strlcpy(char *dst, const char *src, size_t size)
+{
+	size_t		src_len;
+
+	if (!dst || !src)
+		return (0);
+	src_len = ft_strlen(src);
+	if (src_len + 1 < size)
+		ft_memcpy(dst, src, src_len + 1);
+	else if (size != 0)
+	{
+		ft_memcpy(dst, src, size - 1);
+		dst[size - 1] = 0;
+	}
+	return (src_len);
+}
diff --git a/libft/src/ft_strlen.c b/libft/src/ft_strlen.c
new file mode 100644
index 0000000..68c7614
--- /dev/null
+++ b/libft/src/ft_strlen.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strlen.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 16:32:28 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:35:37 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+size_t
+	ft_strlen(const char *s)
+{
+	size_t i;
+
+	i = 0;
+	if (!s)
+		return (0);
+	while (s[i] != '\0')
+		i++;
+	return (i);
+}
diff --git a/libft/src/ft_strmapi.c b/libft/src/ft_strmapi.c
new file mode 100644
index 0000000..7a38ca9
--- /dev/null
+++ b/libft/src/ft_strmapi.c
@@ -0,0 +1,34 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strmapi.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/13 05:57:35 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:35:12 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+char
+	*ft_strmapi(const char *s, char (*f)(unsigned int, char))
+{
+	unsigned int	i;
+	char			*nstr;
+
+	if (!s)
+		return (NULL);
+	i = 0;
+	nstr = (char *)ft_calloc(ft_strlen(s) + 1, sizeof(char));
+	if (!nstr)
+		return (NULL);
+	while (s[i])
+	{
+		nstr[i] = (*f)(i, s[i]);
+		i++;
+	}
+	return (nstr);
+}
diff --git a/libft/src/ft_strncmp.c b/libft/src/ft_strncmp.c
new file mode 100644
index 0000000..c8a0b87
--- /dev/null
+++ b/libft/src/ft_strncmp.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strncmp.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 20:25:31 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:35:01 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+int
+	ft_strncmp(const char *s1, const char *s2, size_t n)
+{
+	size_t	i;
+
+	i = 0;
+	if (!s1 || !s2 || !n)
+		return (0);
+	while (s1[i] == s2[i] && i < n - 1)
+	{
+		if (s1[i] == '\0' && s2[i] == '\0')
+			return (0);
+		i++;
+	}
+	return ((unsigned char)s1[i] - (unsigned char)s2[i]);
+}
diff --git a/libft/src/ft_strnlen.c b/libft/src/ft_strnlen.c
new file mode 100644
index 0000000..88bd437
--- /dev/null
+++ b/libft/src/ft_strnlen.c
@@ -0,0 +1,27 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strnlen.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/30 14:28:01 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/30 14:28:03 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include <stddef.h>
+
+size_t
+	ft_strlen_size(const char *s, size_t size)
+{
+	const char *ptr = s;
+
+	while (size > 0 && *ptr)
+	{
+		size--;
+		ptr++;
+	}
+	return (ptr - s);
+}
diff --git a/libft/src/ft_strnstr.c b/libft/src/ft_strnstr.c
new file mode 100644
index 0000000..583026e
--- /dev/null
+++ b/libft/src/ft_strnstr.c
@@ -0,0 +1,45 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strnstr.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/10 00:23:15 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:34:35 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+#include <inttypes.h>
+
+char
+	*ft_strnstr(const char *haystack, const char *needle, size_t len)
+{
+	unsigned long	i;
+	unsigned long	j;
+	char			*hay_ptr;
+	char			*nee_ptr;
+
+	hay_ptr = (char*)haystack;
+	nee_ptr = (char*)needle;
+	i = 0;
+	if (!nee_ptr[0])
+		return (hay_ptr);
+	while (hay_ptr[i] && i < len)
+	{
+		j = 0;
+		while (nee_ptr[j] == hay_ptr[i + j] && (i + j) < len)
+		{
+			if (!nee_ptr[j + 1])
+				return (hay_ptr + i);
+			j++;
+		}
+		if (!hay_ptr[i + 1] && !j)
+			return (0);
+		i++;
+	}
+	return (0);
+}
diff --git a/libft/src/ft_strrchr.c b/libft/src/ft_strrchr.c
new file mode 100644
index 0000000..47ba95b
--- /dev/null
+++ b/libft/src/ft_strrchr.c
@@ -0,0 +1,32 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strrchr.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 19:07:53 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:34:19 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+char
+	*ft_strrchr(const char *s, int c)
+{
+	size_t	i;
+
+	if (!s)
+		return (NULL);
+	i = ft_strlen(s);
+	while (s[i] != c)
+	{
+		if (!i)
+			return (NULL);
+		i--;
+	}
+	return ((char*)&s[i]);
+}
diff --git a/libft/src/ft_strtrim.c b/libft/src/ft_strtrim.c
new file mode 100644
index 0000000..c691815
--- /dev/null
+++ b/libft/src/ft_strtrim.c
@@ -0,0 +1,30 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_strtrim.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/12 17:30:33 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:34:03 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+
+char
+	*ft_strtrim(const char *s1, const char *set)
+{
+	size_t	len;
+
+	len = 0;
+	if (!s1 || !set)
+		return (NULL);
+	while (*s1 && ft_strchr(set, *s1))
+		s1++;
+	len = ft_strlen(s1);
+	while (len > 0 && ft_strchr(set, s1[len - 1]))
+		len--;
+	return (ft_substr(s1, 0, len));
+}
diff --git a/libft/src/ft_substr.c b/libft/src/ft_substr.c
new file mode 100644
index 0000000..87c2568
--- /dev/null
+++ b/libft/src/ft_substr.c
@@ -0,0 +1,33 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_substr.c                                      .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/12 15:37:02 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:33:09 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+#include "libft.h"
+#include <stddef.h>
+
+char
+	*ft_substr(const char *s, unsigned int start, size_t len)
+{
+	char *nstr;
+
+	if (start > ft_strlen(s) - 1)
+	{
+		nstr = (char*)ft_calloc(1, sizeof(char));
+		if (!nstr)
+			return (NULL);
+		return (nstr);
+	}
+	nstr = (char*)ft_calloc(len + 1, sizeof(char));
+	if (!nstr)
+		return (NULL);
+	return ((char*)ft_memcpy(nstr, s + start, len));
+}
diff --git a/libft/src/ft_tolower.c b/libft/src/ft_tolower.c
new file mode 100644
index 0000000..48c065e
--- /dev/null
+++ b/libft/src/ft_tolower.c
@@ -0,0 +1,28 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_tolower.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 18:32:59 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:32:22 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+static int
+	ft_isupper(int c)
+{
+	if (c >= 65 && c <= 90)
+		return (1);
+	return (0);
+}
+
+int
+	ft_tolower(int c)
+{
+	if (ft_isupper(c))
+		return (c + 32);
+	return (c);
+}
diff --git a/libft/src/ft_toupper.c b/libft/src/ft_toupper.c
new file mode 100644
index 0000000..3346cc3
--- /dev/null
+++ b/libft/src/ft_toupper.c
@@ -0,0 +1,28 @@
+/* ************************************************************************** */
+/*                                                          LE - /            */
+/*                                                              /             */
+/*   ft_toupper.c                                     .::    .:/ .      .::   */
+/*                                                 +:+:+   +:    +:  +:+:+    */
+/*   By: rbousset <marvin@le-101.fr>                +:+   +:    +:    +:+     */
+/*                                                 #+#   #+    #+    #+#      */
+/*   Created: 2019/10/07 18:25:57 by rbousset     #+#   ##    ##    #+#       */
+/*   Updated: 2019/10/13 08:32:15 by rbousset    ###    #+. /#+    ###.fr     */
+/*                                                         /                  */
+/*                                                        /                   */
+/* ************************************************************************** */
+
+static int
+	ft_islower(int c)
+{
+	if (c >= 97 && c <= 122)
+		return (1);
+	return (0);
+}
+
+int
+	ft_toupper(int c)
+{
+	if (ft_islower(c))
+		return (c - 32);
+	return (c);
+}
-- 
cgit v1.2.3