From 98f062ada208dcbb905278fb6a96b848dc010631 Mon Sep 17 00:00:00 2001 From: Alexandre POMMIER Date: Thu, 20 Jan 2022 19:09:35 +0100 Subject: [PATCH] first --- libft/Makefile | 67 ++++++++++++++++++++++++ libft/ft_atoi.c | 39 ++++++++++++++ libft/ft_bzero.c | 28 ++++++++++ libft/ft_calloc.c | 31 +++++++++++ libft/ft_isalnum.c | 23 +++++++++ libft/ft_isalpha.c | 21 ++++++++ libft/ft_isascii.c | 21 ++++++++ libft/ft_isdigit.c | 21 ++++++++ libft/ft_isprint.c | 21 ++++++++ libft/ft_itoa.c | 59 +++++++++++++++++++++ libft/ft_lstadd_back.c | 21 ++++++++ libft/ft_lstadd_front.c | 19 +++++++ libft/ft_lstbeforelast.c | 28 ++++++++++ libft/ft_lstclear.c | 28 ++++++++++ libft/ft_lstdelone.c | 21 ++++++++ libft/ft_lstiter.c | 22 ++++++++ libft/ft_lstlast.c | 22 ++++++++ libft/ft_lstmap.c | 33 ++++++++++++ libft/ft_lstnew.c | 26 ++++++++++ libft/ft_lstsize.c | 26 ++++++++++ libft/ft_memccpy.c | 32 ++++++++++++ libft/ft_memchr.c | 28 ++++++++++ libft/ft_memcmp.c | 28 ++++++++++ libft/ft_memcpy.c | 32 ++++++++++++ libft/ft_memmove.c | 39 ++++++++++++++ libft/ft_memset.c | 29 +++++++++++ libft/ft_putchar_fd.c | 18 +++++++ libft/ft_putendl_fd.c | 21 ++++++++ libft/ft_putnbr_fd.c | 28 ++++++++++ libft/ft_putstr_fd.c | 20 ++++++++ libft/ft_split.c | 80 +++++++++++++++++++++++++++++ libft/ft_strchr.c | 28 ++++++++++ libft/ft_strdup.c | 34 ++++++++++++ libft/ft_strlcat.c | 34 ++++++++++++ libft/ft_strlcpy.c | 36 +++++++++++++ libft/ft_strlen.c | 25 +++++++++ libft/ft_strmapi.c | 32 ++++++++++++ libft/ft_strncmp.c | 28 ++++++++++ libft/ft_strnstr.c | 41 +++++++++++++++ libft/ft_strrchr.c | 35 +++++++++++++ libft/ft_strtrim.c | 72 ++++++++++++++++++++++++++ libft/ft_substr.c | 39 ++++++++++++++ libft/ft_tolower.c | 20 ++++++++ libft/ft_toupper.c | 20 ++++++++ libft/get_next_line.c | 100 ++++++++++++++++++++++++++++++++++++ libft/get_next_line.h | 19 +++++++ libft/get_next_line_utils.c | 41 +++++++++++++++ libft/libft.h | 75 +++++++++++++++++++++++++++ main.c | 82 +++++++++++++++++++++++++++++ pipex.h | 20 ++++++++ 50 files changed, 1713 insertions(+) create mode 100644 libft/Makefile create mode 100644 libft/ft_atoi.c create mode 100644 libft/ft_bzero.c create mode 100644 libft/ft_calloc.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_lstbeforelast.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_memccpy.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_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_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/get_next_line.c create mode 100644 libft/get_next_line.h create mode 100644 libft/get_next_line_utils.c create mode 100644 libft/libft.h create mode 100644 main.c create mode 100644 pipex.h diff --git a/libft/Makefile b/libft/Makefile new file mode 100644 index 0000000..314810d --- /dev/null +++ b/libft/Makefile @@ -0,0 +1,67 @@ +NAME = libft.a +SRCS = ft_memset.c \ + ft_bzero.c \ + ft_memcpy.c \ + ft_memccpy.c \ + ft_memmove.c \ + ft_memchr.c \ + ft_memcmp.c \ + ft_strlen.c \ + ft_isalpha.c \ + ft_isdigit.c \ + ft_isalnum.c \ + ft_isascii.c \ + ft_isprint.c \ + ft_toupper.c \ + ft_tolower.c \ + ft_strchr.c \ + ft_strrchr.c \ + ft_strncmp.c \ + ft_strlcpy.c \ + ft_strlcat.c \ + ft_strnstr.c \ + ft_atoi.c \ + ft_calloc.c \ + ft_strdup.c \ + ft_substr.c \ + ft_strtrim.c \ + ft_split.c \ + ft_itoa.c \ + ft_strmapi.c \ + ft_putchar_fd.c \ + ft_putstr_fd.c \ + ft_putendl_fd.c \ + ft_putnbr_fd.c \ + get_next_line.c \ + get_next_line_utils.c +OBJS = ${SRCS:.c=.o} +BONUS_C = 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 ft_lstbeforelast.c +BONUS_O = ${BONUS_C:.c=.o} +CC = gcc +CFLAGS = -Wall -Wextra +RM = rm -rf + +.c.o: + ${CC} ${CFLAGS} -c $< -o ${<:.c=.o} + +${NAME}:${OBJS} + ar -rcs ${NAME} ${OBJS} + +all: ${NAME} + +bonus: all + ${CC} ${CFLAGS} -c ${BONUS_C} + ar -rcs ${NAME} ${BONUS_O} + +clean: + ${RM} ${OBJS} + ${RM} ${BONUS_O} + +fclean: clean + ${RM} ${NAME} + +re: fclean all + +.PHONY: all clean fclean re bonus + diff --git a/libft/ft_atoi.c b/libft/ft_atoi.c new file mode 100644 index 0000000..0073b7e --- /dev/null +++ b/libft/ft_atoi.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:09:17 by apommier #+# #+# */ +/* Updated: 2022/01/18 06:50:22 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +long ft_atoi(const char *nptr) +{ + int i; + long nbr; + long minus; + + minus = 1; + nbr = 0; + i = 0; + while ((nptr[i] >= 9 && nptr[i] <= 13) || nptr[i] == 32) + i++; + if (nptr[i] == '+') + i++; + else if (nptr[i] == '-') + { + i++; + minus = -1; + } + while (nptr[i] >= '0' && nptr[i] <= '9') + { + nbr = nbr * 10 + nptr[i] - '0'; + i++; + } + return (minus * nbr); +} diff --git a/libft/ft_bzero.c b/libft/ft_bzero.c new file mode 100644 index 0000000..5baa4fe --- /dev/null +++ b/libft/ft_bzero.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:09:48 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:26:30 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_bzero(void *s, size_t n) +{ + char *p; + int i; + + p = (char *)s; + i = 0; + while (n != 0) + { + p[i] = 0; + i++; + n--; + } +} diff --git a/libft/ft_calloc.c b/libft/ft_calloc.c new file mode 100644 index 0000000..e4cea33 --- /dev/null +++ b/libft/ft_calloc.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:09:57 by apommier #+# #+# */ +/* Updated: 2022/01/17 21:18:04 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_calloc(size_t nmemb, size_t size) +{ + char *new; + int i; + + i = 0; + new = malloc(size * nmemb); + if (new) + { + while (size * nmemb - i) + { + new[i] = 0; + i++; + } + } + return ((void *)new); +} diff --git a/libft/ft_isalnum.c b/libft/ft_isalnum.c new file mode 100644 index 0000000..7f628b5 --- /dev/null +++ b/libft/ft_isalnum.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:08 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:26:43 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isalnum(int c) +{ + if (c <= '9' && c >= '0') + return (1); + else if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) + return (1); + else + return (0); +} diff --git a/libft/ft_isalpha.c b/libft/ft_isalpha.c new file mode 100644 index 0000000..51292d2 --- /dev/null +++ b/libft/ft_isalpha.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:17 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:28:12 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isalpha(int c) +{ + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) + return (1); + else + return (0); +} diff --git a/libft/ft_isascii.c b/libft/ft_isascii.c new file mode 100644 index 0000000..be6ac40 --- /dev/null +++ b/libft/ft_isascii.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:30 by apommier #+# #+# */ +/* Updated: 2020/12/11 18:11:18 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + else + return (0); +} diff --git a/libft/ft_isdigit.c b/libft/ft_isdigit.c new file mode 100644 index 0000000..81ca1f0 --- /dev/null +++ b/libft/ft_isdigit.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:39 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:27:06 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isdigit(int c) +{ + if (c <= '9' && c >= '0') + return (1); + else + return (0); +} diff --git a/libft/ft_isprint.c b/libft/ft_isprint.c new file mode 100644 index 0000000..1915c16 --- /dev/null +++ b/libft/ft_isprint.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:10:55 by apommier #+# #+# */ +/* Updated: 2020/12/11 18:11:43 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_isprint(int c) +{ + if (c > 31 && c < 127) + return (1); + else + return (0); +} diff --git a/libft/ft_itoa.c b/libft/ft_itoa.c new file mode 100644 index 0000000..70f2fd0 --- /dev/null +++ b/libft/ft_itoa.c @@ -0,0 +1,59 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 18:20:19 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:28:01 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static char *fill(long n, int j, int minus) +{ + char *dest; + + j += minus; + dest = (char *)malloc(sizeof(char) * (j + 1)); + if (dest == 0) + return (0); + dest[j] = 0; + if (n == 0) + dest[j - 1] = '0'; + while (n) + { + dest[j - 1] = n % 10 + '0'; + j--; + n /= 10; + } + if (minus) + dest[j - 1] = '-'; + return (dest); +} + +char *ft_itoa(int n) +{ + long i; + long k; + int j; + int minus; + + k = n; + minus = 0; + j = 1; + if (k < 0) + { + minus = 1; + k = k * -1; + } + i = k; + while (k >= 10) + { + k /= 10; + j++; + } + return (fill(i, j, minus)); +} diff --git a/libft/ft_lstadd_back.c b/libft/ft_lstadd_back.c new file mode 100644 index 0000000..87c0a15 --- /dev/null +++ b/libft/ft_lstadd_back.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:30:14 by apommier #+# #+# */ +/* Updated: 2020/12/11 15:32:53 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_back(t_list **alst, t_list *new) +{ + if (*alst == 0) + *alst = new; + else + ft_lstlast(*alst)->next = new; +} diff --git a/libft/ft_lstadd_front.c b/libft/ft_lstadd_front.c new file mode 100644 index 0000000..8dfa145 --- /dev/null +++ b/libft/ft_lstadd_front.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 01:31:45 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:34:24 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_front(t_list **alst, t_list *new) +{ + new->next = *alst; + *alst = new; +} diff --git a/libft/ft_lstbeforelast.c b/libft/ft_lstbeforelast.c new file mode 100644 index 0000000..535dd53 --- /dev/null +++ b/libft/ft_lstbeforelast.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstbeforelast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/12/09 19:16:55 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:28:22 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstbeforelast(t_list *lst) +{ + t_list *save; + + save = 0; + if (!lst) + return (0); + while (lst->next) + { + save = lst; + lst = lst->next; + } + return (save); +} diff --git a/libft/ft_lstclear.c b/libft/ft_lstclear.c new file mode 100644 index 0000000..152fb31 --- /dev/null +++ b/libft/ft_lstclear.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:58:04 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:28:39 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void*)) +{ + t_list *chr; + + chr = *lst; + while (*lst) + { + chr = (*lst)->next; + del((*lst)->nbr); + free(*lst); + *lst = chr; + } + lst = 0; +} diff --git a/libft/ft_lstdelone.c b/libft/ft_lstdelone.c new file mode 100644 index 0000000..f0dea04 --- /dev/null +++ b/libft/ft_lstdelone.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:54:40 by apommier #+# #+# */ +/* Updated: 2020/12/12 09:10:11 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void*)) +{ + if (!lst) + return ; + del(lst->nbr); + free(lst); +} diff --git a/libft/ft_lstiter.c b/libft/ft_lstiter.c new file mode 100644 index 0000000..0e9ea7a --- /dev/null +++ b/libft/ft_lstiter.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 20:14:47 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:47:39 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(void *)) +{ + while (lst) + { + f(lst->nbr); + lst = lst->next; + } +} diff --git a/libft/ft_lstlast.c b/libft/ft_lstlast.c new file mode 100644 index 0000000..2bf317b --- /dev/null +++ b/libft/ft_lstlast.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 19:16:55 by apommier #+# #+# */ +/* Updated: 2021/11/26 01:21:39 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + if (!lst) + return (0); + while (lst->next) + lst = lst->next; + return (lst); +} diff --git a/libft/ft_lstmap.c b/libft/ft_lstmap.c new file mode 100644 index 0000000..252c0c6 --- /dev/null +++ b/libft/ft_lstmap.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/11 00:10:12 by apommier #+# #+# */ +/* Updated: 2020/12/13 22:37:30 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +{ + t_list *new; + t_list *begin; + + begin = 0; + while (lst) + { + new = ft_lstnew(f(lst->nbr)); + if (!new) + { + ft_lstclear(&begin, *del); + return (0); + } + ft_lstadd_back(&begin, new); + lst = lst->next; + } + return (begin); +} diff --git a/libft/ft_lstnew.c b/libft/ft_lstnew.c new file mode 100644 index 0000000..e108f42 --- /dev/null +++ b/libft/ft_lstnew.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 01:06:20 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:29:09 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstnew(void *content) +{ + t_list *new; + + new = (t_list *)malloc(sizeof(t_list)); + if (!new) + return (0); + new->swap = 0; + new->nbr = content; + new->next = 0; + return (new); +} diff --git a/libft/ft_lstsize.c b/libft/ft_lstsize.c new file mode 100644 index 0000000..2f6aebe --- /dev/null +++ b/libft/ft_lstsize.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/09 03:24:50 by apommier #+# #+# */ +/* Updated: 2020/12/11 15:33:49 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int i; + + i = 0; + while (lst) + { + lst = lst->next; + i++; + } + return (i); +} diff --git a/libft/ft_memccpy.c b/libft/ft_memccpy.c new file mode 100644 index 0000000..0b1644c --- /dev/null +++ b/libft/ft_memccpy.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memccpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:11:04 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:29:38 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memccpy(void *dest, const void *src, int c, size_t n) +{ + char *p; + const char *p1; + size_t i; + + i = 0; + p = (char *)dest; + p1 = (const char *)src; + while (i < n) + { + p[i] = p1[i]; + if ((unsigned char)p[i] == (unsigned char)c) + return (dest + i + 1); + i++; + } + return (0); +} diff --git a/libft/ft_memchr.c b/libft/ft_memchr.c new file mode 100644 index 0000000..ce8f294 --- /dev/null +++ b/libft/ft_memchr.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:11:39 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:29:51 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memchr(const void *s, int c, size_t n) +{ + unsigned char *str; + + str = (unsigned char *)s; + while (n) + { + if ((unsigned char)c == *str) + return (str); + n--; + str++; + } + return (0); +} diff --git a/libft/ft_memcmp.c b/libft/ft_memcmp.c new file mode 100644 index 0000000..f9af3ee --- /dev/null +++ b/libft/ft_memcmp.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:11:51 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:30:32 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_memcmp(const void *s1, const void *s2, size_t n) +{ + int i; + + i = 0; + while (n) + { + if (((unsigned char *)s1)[i] != ((unsigned char *)s2)[i]) + return (((unsigned char *)s1)[i] - ((unsigned char *)s2)[i]); + n--; + i++; + } + return (0); +} diff --git a/libft/ft_memcpy.c b/libft/ft_memcpy.c new file mode 100644 index 0000000..92c0480 --- /dev/null +++ b/libft/ft_memcpy.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:03 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:30:43 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memcpy(void *dest, const void *src, size_t n) +{ + size_t i; + char *p; + const char *p1; + + if (!dest && !src) + return (dest); + p = (char *)dest; + p1 = (const char *)src; + i = 0; + while (i < n) + { + p[i] = p1[i]; + i++; + } + return (dest); +} diff --git a/libft/ft_memmove.c b/libft/ft_memmove.c new file mode 100644 index 0000000..0a8a6db --- /dev/null +++ b/libft/ft_memmove.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:14 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:31:05 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memmove(void *dest, const void *src, size_t n) +{ + size_t i; + + i = 0; + if (!dest && !src) + return (dest); + if (dest > src) + { + while (n) + { + ((unsigned char *)dest)[n - 1] = ((unsigned char *)src)[n - 1]; + n--; + } + } + else + { + while (i < n) + { + ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; + i++; + } + } + return (dest); +} diff --git a/libft/ft_memset.c b/libft/ft_memset.c new file mode 100644 index 0000000..58dacd9 --- /dev/null +++ b/libft/ft_memset.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:24 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:31:28 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memset(void *s, int c, size_t n) +{ + int i; + unsigned char *p; + + i = 0; + p = (unsigned char *)s; + while (n > 0) + { + p[i] = (unsigned char)c; + i++; + n--; + } + return (s); +} diff --git a/libft/ft_putchar_fd.c b/libft/ft_putchar_fd.c new file mode 100644 index 0000000..96abcb5 --- /dev/null +++ b/libft/ft_putchar_fd.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:11:29 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:02:13 by apommier ### ########.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..a663173 --- /dev/null +++ b/libft/ft_putendl_fd.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:22:10 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:14:52 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + if (s == 0) + return ; + write(fd, s, ft_strlen(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..eb6aebd --- /dev/null +++ b/libft/ft_putnbr_fd.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:25:57 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:31:56 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + long nbr; + + nbr = n; + if (nbr < 0) + { + ft_putchar_fd('-', fd); + nbr *= -1; + } + if (nbr >= 10) + ft_putnbr_fd(nbr / 10, fd); + ft_putchar_fd(nbr % 10 + '0', fd); +} diff --git a/libft/ft_putstr_fd.c b/libft/ft_putstr_fd.c new file mode 100644 index 0000000..61fb28a --- /dev/null +++ b/libft/ft_putstr_fd.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 23:15:25 by apommier #+# #+# */ +/* Updated: 2020/12/11 17:15:10 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + if (s == 0) + return ; + write(fd, s, ft_strlen(s)); +} diff --git a/libft/ft_split.c b/libft/ft_split.c new file mode 100644 index 0000000..1fd6a7f --- /dev/null +++ b/libft/ft_split.c @@ -0,0 +1,80 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/07 00:54:12 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:34:08 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int fill_tab(char *s, char c, char **dest, size_t index) +{ + int i; + + i = 0; + while (s[i] != c && s[i]) + i++; + dest[index] = (char *)ft_calloc(i + 1, sizeof(char)); + if (dest[index] == 0) + return (0); + i = 0; + while (s[i] != c && s[i]) + { + dest[index][i] = s[i]; + i++; + } + return (1); +} + +static void call(char *s, char c, char **dest, int j) +{ + int index; + int k; + + k = 0; + index = 0; + while (j > index) + { + while (s[k] == c && s[k]) + k++; + if (!s[k]) + return ; + fill_tab(s + k, c, dest, index); + index++; + while (s[k] != c && s[k]) + k++; + } +} + +char **ft_split(char const *s, char c) +{ + int i; + int j; + char **dest; + + j = 0; + i = 0; + if (!s) + return (0); + while (s[i] == c && s[i]) + i++; + while (s[i]) + { + while (s[i] != c && s[i]) + i++; + j++; + while (s[i] == c && s[i]) + i++; + } + dest = (char **)malloc(sizeof(char *) * (i + j)); + if (!dest) + return (0); + dest[j] = 0; + call((char *)s, c, dest, j); + return (dest); +} diff --git a/libft/ft_strchr.c b/libft/ft_strchr.c new file mode 100644 index 0000000..d3699c2 --- /dev/null +++ b/libft/ft_strchr.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/12 13:57:59 by apommier #+# #+# */ +/* Updated: 2022/01/17 21:18:59 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strchr(const char *s, int c) +{ + char *str; + + if (!s) + return ("no s"); + str = (char *)s; + while ((*str != c) && (*str != 0)) + str++; + if (*str == c) + return ((char *)str); + else + return (0); +} diff --git a/libft/ft_strdup.c b/libft/ft_strdup.c new file mode 100644 index 0000000..58ead0f --- /dev/null +++ b/libft/ft_strdup.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:43 by apommier #+# #+# */ +/* Updated: 2020/12/11 18:35:10 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strdup(const char *s) +{ + int i; + char *sdup; + + i = 0; + while (s[i]) + i++; + sdup = malloc(sizeof(char) * (i + 1)); + if (sdup == 0) + return (0); + i = 0; + while (s[i]) + { + sdup[i] = s[i]; + i++; + } + sdup[i] = 0; + return (sdup); +} diff --git a/libft/ft_strlcat.c b/libft/ft_strlcat.c new file mode 100644 index 0000000..374d9d1 --- /dev/null +++ b/libft/ft_strlcat.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:12:57 by apommier #+# #+# */ +/* Updated: 2020/12/12 15:40:58 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcat(char *dst, const char *src, size_t size) +{ + size_t i; + size_t k; + + if (!size) + return (ft_strlen(src)); + i = 0; + k = ft_strlen(dst); + if (k >= size) + return (ft_strlen(src) + size); + while (size - k - 1 && src[i]) + { + dst[k + i] = src[i]; + i++; + size--; + } + dst[k + i] = 0; + return (k + ft_strlen(src)); +} diff --git a/libft/ft_strlcpy.c b/libft/ft_strlcpy.c new file mode 100644 index 0000000..05af28a --- /dev/null +++ b/libft/ft_strlcpy.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:07 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:38:48 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcpy(char *dst, const char *src, size_t size) +{ + int i; + int j; + + j = 0; + i = 0; + if (!src || !dst) + return (0); + while (src[i]) + i++; + if (!size) + return (i); + while (size - 1 && src[j] != 0) + { + dst[j] = src[j]; + j++; + size--; + } + dst[j] = 0; + return (i); +} diff --git a/libft/ft_strlen.c b/libft/ft_strlen.c new file mode 100644 index 0000000..5ac9d2b --- /dev/null +++ b/libft/ft_strlen.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:19 by apommier #+# #+# */ +/* Updated: 2022/01/17 21:12:05 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.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/ft_strmapi.c b/libft/ft_strmapi.c new file mode 100644 index 0000000..a983137 --- /dev/null +++ b/libft/ft_strmapi.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/08 19:03:09 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:39:05 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + char *dest; + int i; + + if (!s) + return (0); + i = 0; + dest = (char *)ft_calloc(ft_strlen(s) + 1, sizeof(char)); + if (!dest) + return (0); + while (s[i]) + { + dest[i] = f(i, s[i]); + i++; + } + return (dest); +} diff --git a/libft/ft_strncmp.c b/libft/ft_strncmp.c new file mode 100644 index 0000000..6de7048 --- /dev/null +++ b/libft/ft_strncmp.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:31 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:39:13 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_strncmp(const char *s1, const char *s2, size_t n) +{ + int i; + + i = 0; + while (n && (s1[i] || s2[i])) + { + if (s1[i] != s2[i]) + return ((unsigned char)s1[i] - (unsigned char)s2[i]); + n--; + i++; + } + return (0); +} diff --git a/libft/ft_strnstr.c b/libft/ft_strnstr.c new file mode 100644 index 0000000..e993e0d --- /dev/null +++ b/libft/ft_strnstr.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:42 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:39:28 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + int i; + int j; + + i = 0; + if (!little[i]) + return ((char *)big); + if (!little[i]) + return ((char *)big); + while (big[i] && len - i) + { + j = 0; + if (little[j] != big[i]) + i++; + else + { + while (little[j] == big[i + j] && little[j] && len - i - j) + j++; + if (little[j] == 0) + return ((char *)&big[i]); + else + i++; + } + } + return (0); +} diff --git a/libft/ft_strrchr.c b/libft/ft_strrchr.c new file mode 100644 index 0000000..0d11e30 --- /dev/null +++ b/libft/ft_strrchr.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strrchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:13:52 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:39:37 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strrchr(const char *s, int c) +{ + char *str; + char *last; + + str = (char *)s; + if (c == 0) + { + while (*str) + str++; + return (str); + } + last = 0; + while (*str) + { + if (*str == c) + last = str; + str++; + } + return (last); +} diff --git a/libft/ft_strtrim.c b/libft/ft_strtrim.c new file mode 100644 index 0000000..3930252 --- /dev/null +++ b/libft/ft_strtrim.c @@ -0,0 +1,72 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strtrim.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 23:52:05 by apommier #+# #+# */ +/* Updated: 2022/01/17 11:40:17 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int is_set(char const *set, char c) +{ + int i; + + i = 0; + while (set[i]) + { + if (set[i] == c) + return (1); + i++; + } + return (0); +} + +static int len_dest(const char *s1, char const *set) +{ + int len; + int j; + int i; + + i = 0; + j = 0; + len = ft_strlen(s1); + while (is_set(set, s1[i])) + i++; + while (is_set(set, s1[len - j - 1])) + j++; + len = len - j - i; + if (len < 0) + len = 0; + return (len); +} + +char *ft_strtrim(char const *s1, char const *set) +{ + int j; + int i; + int len; + char *dest; + + i = 0; + j = 0; + if (!s1) + return (0); + len = len_dest(s1, set); + dest = ft_calloc(len + 1, 1); + if (!dest) + return (0); + while (is_set(set, s1[i])) + i++; + while (s1[i] && len - j && len > 0) + { + dest[j] = s1[i]; + i++; + j++; + } + return (dest); +} diff --git a/libft/ft_substr.c b/libft/ft_substr.c new file mode 100644 index 0000000..7e4d95b --- /dev/null +++ b/libft/ft_substr.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_substr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 22:54:40 by apommier #+# #+# */ +/* Updated: 2020/12/16 16:45:34 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + char *dest; + unsigned int i; + + if (!s) + return (0); + i = 0; + dest = malloc(1 * len + 1); + if (dest == 0) + return (0); + if (start > ft_strlen(s) || len == 0) + { + dest[i] = 0; + return (dest); + } + while (len && s[i + start]) + { + dest[i] = s[i + start]; + len--; + i++; + } + dest[i] = 0; + return (dest); +} diff --git a/libft/ft_tolower.c b/libft/ft_tolower.c new file mode 100644 index 0000000..d375233 --- /dev/null +++ b/libft/ft_tolower.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:14:05 by apommier #+# #+# */ +/* Updated: 2020/11/29 17:20:51 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_tolower(int c) +{ + if (c >= 65 && c <= 90) + c = c + 32; + return (c); +} diff --git a/libft/ft_toupper.c b/libft/ft_toupper.c new file mode 100644 index 0000000..e8c8d89 --- /dev/null +++ b/libft/ft_toupper.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/11/29 00:14:15 by apommier #+# #+# */ +/* Updated: 2020/11/29 17:21:12 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c = c - 32; + return (c); +} diff --git a/libft/get_next_line.c b/libft/get_next_line.c new file mode 100644 index 0000000..c56d27e --- /dev/null +++ b/libft/get_next_line.c @@ -0,0 +1,100 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: kinou +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/10/23 07:55:17 by kinou #+# #+# */ +/* Updated: 2021/11/01 10:21:35 by kinou ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../Utils/push_swap.h" + +char *ft_free(char *save, int *end) +{ + if (!*end) + { + free(save); + free(end); + return (0); + } + free(end); + return (save); +} + +char *set_line(char *line, char *save) +{ + int i; + + i = 0; + line = ft_strjoin(save, 0); + while (line[i] && line[i] != '\n') + i++; + if (line[i] == '\n') + { + while (line[i++]) + line[i] = '\0'; + } + return (line); +} + +char *set_save(char *save) +{ + char *delete; + int i; + + i = 0; + delete = save; + while (save[i] && save[i] != '\n') + i++; + if (save[i] != '\n') + i = 0; + save = ft_strjoin((save + i + 1), 0); + free(delete); + return (save); +} + +char *next_line(char *save, int *end, int fd) +{ + char *delete; + char *dest; + + while (!ft_strchr(save, '\n') && *end > 0) + { + dest = ft_calloc(1, 1 + 1); + *end = read(fd, dest, 1); + delete = save; + save = ft_strjoin(save, dest); + free(delete); + free(dest); + } + return (save); +} + +char *get_next_line(int fd) +{ + static char *save = NULL; + int *end; + char *line; + + line = 0; + if (fd < 0) + return (0); + end = malloc(sizeof(int *)); + *end = 1; + if (save == NULL) + save = ft_calloc(1, 1); + save = next_line(save, end, fd); + line = set_line(line, save); + if (ft_strlen(line) > 0) + { + save = set_save(save); + save = ft_free(save, end); + return (line); + } + free(line); + save = ft_free(save, end); + return (0); +} diff --git a/libft/get_next_line.h b/libft/get_next_line.h new file mode 100644 index 0000000..35d74d6 --- /dev/null +++ b/libft/get_next_line.h @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/14 05:58:49 by apommier #+# #+# */ +/* Updated: 2022/01/17 21:45:15 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef GET_NEXT_LINE_H +# define GET_NEXT_LINE_H + +char *get_next_line(int fd); +char *ft_strjoin(char *save, char *s2); + +#endif diff --git a/libft/get_next_line_utils.c b/libft/get_next_line_utils.c new file mode 100644 index 0000000..ccd419d --- /dev/null +++ b/libft/get_next_line_utils.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/14 06:05:54 by apommier #+# #+# */ +/* Updated: 2022/01/17 21:42:00 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../Utils/push_swap.h" + +char *ft_strjoin(char *save, char *s2) +{ + char *dest; + int i; + int j; + + i = 0; + j = 0; + if (!save && !s2) + return (0); + dest = malloc(ft_strlen(save) + ft_strlen(s2) + 1); + while (save && save[i]) + { + dest[j] = save[i]; + j++; + i++; + } + i = 0; + while (s2 && s2[i]) + { + dest[j] = s2[i]; + j++; + i++; + } + dest[j] = 0; + return (dest); +} diff --git a/libft/libft.h b/libft/libft.h new file mode 100644 index 0000000..9a8f26b --- /dev/null +++ b/libft/libft.h @@ -0,0 +1,75 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/12/11 03:21:27 by apommier #+# #+# */ +/* Updated: 2022/01/18 01:32:40 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H + +# include +# include +# include "get_next_line.h" + +typedef struct t_slist +{ + void *nbr; + int index; + int swap; + struct t_slist *next; +} t_list; + +void *ft_memset(void *s, int c, size_t n); +void ft_bzero(void *s, size_t n); +void *ft_memcpy(void *dest, const void *src, size_t n); +void *ft_memccpy(void *dest, const void *src, int c, size_t n); +void *ft_memmove(void *dest, const void *src, size_t n); +void *ft_memchr(const void *s, int c, size_t n); +int ft_memcmp(const void *s1, const void *s2, size_t n); +size_t ft_strlen(const char *s); +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); +char *ft_strchr(const char *s, int c); +char *ft_strrchr(const char *s, int c); +int ft_strncmp(const char *s1, const char *s2, size_t n); +size_t ft_strlcpy(char *dst, const char *src, size_t size); +size_t ft_strlcat(char *dst, const char *src, size_t size); +char *ft_strnstr(const char *big, const char *little, size_t len); +long ft_atoi(const char *nptr); +void *ft_calloc(size_t nmenb, size_t size); +char *ft_strdup(const char *s); + +char *ft_substr(char const *s, unsigned int start, size_t len); +char *ft_strtrim(char const *s1, char const *set); +char **ft_split(char const *s, char c); +char *ft_itoa(int n); +char *ft_strmapi(char const *s, char (*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); + +t_list *ft_lstnew(void *content); +void ft_lstadd_front(t_list **alst, t_list *new); +int ft_lstsize(t_list *lst); +t_list *ft_lstlast(t_list *lst); +void ft_lstadd_back(t_list **alst, 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 *)); +t_list *ft_lstbeforelast(t_list *lst); + +#endif diff --git a/main.c b/main.c new file mode 100644 index 0000000..b97f12c --- /dev/null +++ b/main.c @@ -0,0 +1,82 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/01/19 12:45:03 by apommier #+# #+# */ +/* Updated: 2022/01/20 19:07:24 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pipex.h" + +int main(int argc, char **argv, char **envp) +{ + int fd1; + int fd2; + char *path; + + if (check_error) + return (0); + fd1 = open(argv[1], O_RDONLY); + fd2 = open(argv[4], O_RDWR | O_CREAT | O_TRUNC); + if (!fd1 || !fd2) + return (0); + path = get_path(envp); + pipex(argv[1], argv[4], fd1, fd2); + return (1); +} + +char *get_path(char **envp) +{ + int i; + int j; + char **line; + char **swap; + + i = 0; + j = 0; + line = 0; + swap = 0; + while (envp[i++] && envp[i]) + { + line = ft_split(envp[i], ':'); + if (!ft_strncmp(line[0], "PATH", 4)) + return (line); + free(line); + } + return (0); +} + +void pipex(char *cmd1, char *cmd2, int fd1, int fd2, char **) +{ + int *pipe; + pid_t parent; + + pipe = ft_calloc(sizeof(int), 2); + pipe(pipe); + parent = fork(); + if (parent < 0) + { + free(pipe); + return (0); + } + if (!parent) + child(cmd1, fd1, path); + else + parent(cmd2, fd2, path); + else + free(pipe); +} + +child(char *cmd1, int fd1, char **path) +{ + +} + +parent(char *cmd2, int fd2, char **path) +{ + +} \ No newline at end of file diff --git a/pipex.h b/pipex.h new file mode 100644 index 0000000..0da46bd --- /dev/null +++ b/pipex.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipex.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/01/19 12:45:13 by apommier #+# #+# */ +/* Updated: 2022/01/20 18:13:02 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include +#include +#include +#include +#include "/libft/libft.h" \ No newline at end of file