From d7c73e5ce1157d69f0a2326f249299d8a64b822e Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Fri, 23 Dec 2022 02:48:39 +0100 Subject: [PATCH 01/31] Whatever facinet helping me with --- Makefile | 65 +++++++++++ README.md | 47 ++++++++ f.txt | 7 ++ g.txt | 1 + includes/pipex.h | 33 ++++++ lib/libft/Makefile | 50 +++++++++ lib/libft/ft_atof.c | 36 ++++++ lib/libft/ft_atoi.c | 44 ++++++++ lib/libft/ft_bzero.c | 30 +++++ lib/libft/ft_calloc.c | 34 ++++++ lib/libft/ft_isalnum.c | 27 +++++ lib/libft/ft_isalpha.c | 24 ++++ lib/libft/ft_isascii.c | 25 +++++ lib/libft/ft_isdigit.c | 24 ++++ lib/libft/ft_isprint.c | 24 ++++ lib/libft/ft_itoa.c | 95 ++++++++++++++++ lib/libft/ft_lstadd_back.c | 28 +++++ lib/libft/ft_lstadd_front.c | 21 ++++ lib/libft/ft_lstclear.c | 31 +++++ lib/libft/ft_lstdelone.c | 27 +++++ lib/libft/ft_lstiter.c | 24 ++++ lib/libft/ft_lstlast.c | 25 +++++ lib/libft/ft_lstmap.c | 50 +++++++++ lib/libft/ft_lstnew.c | 30 +++++ lib/libft/ft_lstsize.c | 28 +++++ lib/libft/ft_memccpy.c | 38 +++++++ lib/libft/ft_memchr.c | 35 ++++++ lib/libft/ft_memcmp.c | 38 +++++++ lib/libft/ft_memcpy.c | 33 ++++++ lib/libft/ft_memmove.c | 37 ++++++ lib/libft/ft_memset.c | 31 +++++ lib/libft/ft_putchar_fd.c | 20 ++++ lib/libft/ft_putendl_fd.c | 28 +++++ lib/libft/ft_putnbr_fd.c | 36 ++++++ lib/libft/ft_putstr_fd.c | 26 +++++ lib/libft/ft_split.c | 106 ++++++++++++++++++ lib/libft/ft_strchr.c | 32 ++++++ lib/libft/ft_strdup.c | 38 +++++++ lib/libft/ft_strjoin.c | 45 ++++++++ lib/libft/ft_strlcat.c | 41 +++++++ lib/libft/ft_strlcpy.c | 39 +++++++ lib/libft/ft_strlen.c | 27 +++++ lib/libft/ft_strmapi.c | 39 +++++++ lib/libft/ft_strncmp.c | 32 ++++++ lib/libft/ft_strnstr.c | 42 +++++++ lib/libft/ft_strrchr.c | 35 ++++++ lib/libft/ft_strtrim.c | 34 ++++++ lib/libft/ft_substr.c | 44 ++++++++ lib/libft/ft_tolower.c | 24 ++++ lib/libft/ft_toupper.c | 24 ++++ lib/libft/libft.h | 70 ++++++++++++ pipex.dSYM/Contents/Info.plist | 20 ++++ pipex.dSYM/Contents/Resources/DWARF/pipex | Bin 0 -> 11776 bytes pipex_bonus | Bin 0 -> 52144 bytes pipex_bonus.dSYM/Contents/Info.plist | 20 ++++ .../Contents/Resources/DWARF/pipex_bonus | Bin 0 -> 12576 bytes srcs/pipex.c | 70 ++++++++++++ srcs/pipex.o | Bin 0 -> 4536 bytes srcs/pipex_bonus.c | 105 +++++++++++++++++ srcs/utils.c | 101 +++++++++++++++++ srcs/utils_bonus.c | 67 +++++++++++ 61 files changed, 2207 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100755 f.txt create mode 100755 g.txt create mode 100644 includes/pipex.h create mode 100644 lib/libft/Makefile create mode 100644 lib/libft/ft_atof.c create mode 100644 lib/libft/ft_atoi.c create mode 100644 lib/libft/ft_bzero.c create mode 100644 lib/libft/ft_calloc.c create mode 100644 lib/libft/ft_isalnum.c create mode 100644 lib/libft/ft_isalpha.c create mode 100644 lib/libft/ft_isascii.c create mode 100644 lib/libft/ft_isdigit.c create mode 100644 lib/libft/ft_isprint.c create mode 100644 lib/libft/ft_itoa.c create mode 100644 lib/libft/ft_lstadd_back.c create mode 100644 lib/libft/ft_lstadd_front.c create mode 100644 lib/libft/ft_lstclear.c create mode 100644 lib/libft/ft_lstdelone.c create mode 100644 lib/libft/ft_lstiter.c create mode 100644 lib/libft/ft_lstlast.c create mode 100644 lib/libft/ft_lstmap.c create mode 100644 lib/libft/ft_lstnew.c create mode 100644 lib/libft/ft_lstsize.c create mode 100644 lib/libft/ft_memccpy.c create mode 100644 lib/libft/ft_memchr.c create mode 100644 lib/libft/ft_memcmp.c create mode 100644 lib/libft/ft_memcpy.c create mode 100644 lib/libft/ft_memmove.c create mode 100644 lib/libft/ft_memset.c create mode 100644 lib/libft/ft_putchar_fd.c create mode 100644 lib/libft/ft_putendl_fd.c create mode 100644 lib/libft/ft_putnbr_fd.c create mode 100644 lib/libft/ft_putstr_fd.c create mode 100644 lib/libft/ft_split.c create mode 100644 lib/libft/ft_strchr.c create mode 100644 lib/libft/ft_strdup.c create mode 100644 lib/libft/ft_strjoin.c create mode 100644 lib/libft/ft_strlcat.c create mode 100644 lib/libft/ft_strlcpy.c create mode 100644 lib/libft/ft_strlen.c create mode 100644 lib/libft/ft_strmapi.c create mode 100644 lib/libft/ft_strncmp.c create mode 100644 lib/libft/ft_strnstr.c create mode 100644 lib/libft/ft_strrchr.c create mode 100644 lib/libft/ft_strtrim.c create mode 100644 lib/libft/ft_substr.c create mode 100644 lib/libft/ft_tolower.c create mode 100644 lib/libft/ft_toupper.c create mode 100644 lib/libft/libft.h create mode 100644 pipex.dSYM/Contents/Info.plist create mode 100644 pipex.dSYM/Contents/Resources/DWARF/pipex create mode 100755 pipex_bonus create mode 100644 pipex_bonus.dSYM/Contents/Info.plist create mode 100644 pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus create mode 100644 srcs/pipex.c create mode 100644 srcs/pipex.o create mode 100644 srcs/pipex_bonus.c create mode 100644 srcs/utils.c create mode 100644 srcs/utils_bonus.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6665488 --- /dev/null +++ b/Makefile @@ -0,0 +1,65 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: mabbas +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2022/12/23 01:03:33 by mabbas #+# #+# # +# Updated: 2022/12/23 02:47:32 by mabbas ### ########.fr # +# # +# **************************************************************************** # + + + +PROG = pipex +PROG_B = pipex_bonus + +SRCS = srcs/pipex.c srcs/utils.c +OBJS = ${SRCS:.c=.o} +#MAIN = srcs/pipex.c + +SRCS_B = srcs/pipex_bonus.c srcs/utils.c srcs/utils_bonus.c +OBJS_B = ${SRCS_B:.c=.o} +#MAIN_B = srcs/pipex_bonus.c + +HEADER = -Iincludes + +CC = gcc +CFLAGS = -Wall -Wextra -Werror -g + +.c.o: %.o : %.c + @gcc ${CFLAGS} ${HEADER} -c $< -o $(<:.c=.o) + +all: ${PROG} + +${PROG}: ${OBJS} + @echo "\033[33m----Compiling libft---" + @make re -C ./lib/libft + @$(CC) ${OBJS} -Llib/libft -lft -o ${PROG} + @echo "\033[32mPipex Compiled! (\033[31m\033[32m_\033[31m\033[32m)\n" + + +bonus: ${PROG_B} + +${PROG_B}: ${OBJS_B} + @echo "\033[33m----Compiling lib----" + @make re -C ./lib/libft + @$(CC) ${OBJS_B} -Llib/libft -lft -o ${PROG_B} + @echo "\033[32mPipex Bonus Compiled!(\033[31m\033[32m_\033[31m\033[32m)\n" + +clean: + @make clean -C ./lib/libft + @rm -f ${OBJS} ${OBJS_B} + +fclean: clean + @make fclean -C ./lib/libft + @rm -f $(NAME) + @rm -f ${PROG} + @echo "\n\033[31mDeleting EVERYTHING! ⌐(ಠ۾ಠ)¬\n" + +re: fclean all + +re_bonus: fclean bonus + +.PHONY: all clean fclean re re_bonus bonus \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..9b86012 --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# Get_Next_Line_42 +This project is about programming a function that returns a line read from a file descriptor + + +A Good Guide regarding the concept is given by @Raspurrin Life gets easier:xD!![42Guides](https://github.com/Raspurrin/42Guides/blob/main/get_next_line/get_next_line.md) + +I used a different implementation idea with Intrusive Linked List. Although it is not required but it helped me learn how to implement linked list. +(Its not about showing off though -->> Just was fedup with the previous implementation where I had timeouts _-_ + +## **A small visual of the concept:** ## + +image + +## Intrusive Link List: + +image + +## Advantages of Array Approach in this case : + +image + + For more detailed idea.. Look into this: [Data Structure the lord](https://www.data-structures-in-practice.com/intrusive-linked-lists/) + + + + One more thing : This is also faster. Have to do a benchmark test though. If anybody knows that please do and let me know ? + + +##Things/tools/resources I used while doing this : + +- **Debugging ( Use lldb or usual gdb)** + Resource Link: A great resource from a fellow 42 Student from another campus(this gem was found in the slack 42 Channel. Its a gem of resources and peer learning. Use it wisely : + + [Debug Me !!](https://sebastienwae.github.io/debugging-42/) ` + +- **Intutive sense about Memory Allocation** (still learning) - Malloc or Calloc -->> + [Stackoverflow !!](https://stackoverflow.com/questions/1538420/difference-between-malloc-and-calloc) + +- Static Variables and Allocating large memory to it .. :xD (You get Timeout( !!! ) -->:xD) + _
**Why allocating large memory in the stack with static variable not worth it ?**

+ _If you are allocating a big chunk of memory as a static variable inside a function, that memory will be allocated to your software until you exit from it. It is completely valid to do so if you are actively using that memory, like get_next_line. But if you are not using the memory you allocated, then your software will misuse the resources. I know that Mac will recognises this misuse and simply swap your memory usage to the hard drive, which causes your software to slow down._ ----- @Ali, Fellow Peer from 42 Wolfsburg +

+
+ +-->> Last but not least : Learn from Evaluations -- <<<< + + diff --git a/f.txt b/f.txt new file mode 100755 index 0000000..e8b7d01 --- /dev/null +++ b/f.txt @@ -0,0 +1,7 @@ + 2 + 1 + 1 + 0 + 2 + 2 + 5 diff --git a/g.txt b/g.txt new file mode 100755 index 0000000..9384ed0 --- /dev/null +++ b/g.txt @@ -0,0 +1 @@ + 12 diff --git a/includes/pipex.h b/includes/pipex.h new file mode 100644 index 0000000..c7d4c3f --- /dev/null +++ b/includes/pipex.h @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipex.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/08/02 09:58:35 by gcollet #+# #+# */ +/* Updated: 2022/12/23 02:31:56 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PIPEX_H +# define PIPEX_H + +# include +# include +# include +# include +# include +# include +# include "../lib/libft/libft.h" + +/* Mandatory functions */ +void error(void); +char *find_path(char *cmd, char **envp); +void execute(char *argv, char **envp); +int get_next_line(char **line); +/* Bonus functions */ +int open_file(char *argv, int i); +void usage(void); + +#endif diff --git a/lib/libft/Makefile b/lib/libft/Makefile new file mode 100644 index 0000000..e4388ac --- /dev/null +++ b/lib/libft/Makefile @@ -0,0 +1,50 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: mabbas +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2022/12/23 00:46:49 by mabbas #+# #+# # +# Updated: 2022/12/23 00:46:49 by mabbas ### ########.fr # +# # +# **************************************************************************** # + + +NAME = libft.a +SRCS = ft_isalnum.c ft_isdigit.c ft_memccpy.c ft_memcpy.c ft_putchar_fd.c\ + ft_putstr_fd.c ft_strdup.c ft_strlcpy.c ft_strncmp.c ft_strtrim.c\ + ft_toupper.c ft_bzero.c ft_isalpha.c ft_isprint.c ft_memchr.c\ + ft_memmove.c ft_putendl_fd.c ft_split.c ft_strjoin.c ft_strlen.c\ + ft_strnstr.c ft_substr.c ft_atoi.c ft_calloc.c ft_isascii.c ft_itoa.c\ + ft_memcmp.c ft_memset.c ft_putnbr_fd.c ft_strchr.c ft_strlcat.c\ + ft_strmapi.c ft_strrchr.c ft_tolower.c ft_atof.c +OBJS = ${SRCS:.c=.o} +SRCS_B = 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 +OBJS_B = ${SRCS_B:.c=.o} +HEADER = ./ + +CC = gcc +CFLAGS = -Wall -Wextra -Werror + +.c.o: %.o : %.c + @${CC} ${CFLAGS} -I ${HEADER} -c $< -o $(<:.c=.o) + +$(NAME): ${OBJS} + @ar rc ${NAME} ${OBJS} + +all: ${NAME} + +bonus: ${OBJS} ${OBJS_B} + @ar rc ${NAME} ${OBJS} ${OBJS_B} + +clean: + @rm -f ${OBJS} ${OBJS_B} + +fclean: clean + @rm -f $(NAME) + +re: fclean all + +.PHONY: all clean fclean re bonus \ No newline at end of file diff --git a/lib/libft/ft_atof.c b/lib/libft/ft_atof.c new file mode 100644 index 0000000..728290e --- /dev/null +++ b/lib/libft/ft_atof.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atof.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/07/12 15:38:52 by gcollet #+# #+# */ +/* Updated: 2021/07/28 16:25:22 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +double ft_atof(const char *str) +{ + double res; + double res2; + char *c; + int len; + + c = (char *)str; + res = (double)ft_atoi(c); + while (*c && *c != '.') + c++; + if (*c == '.') + c++; + res2 = (double)ft_atoi(c); + len = ft_strlen(c); + while (len--) + res2 /= 10; + if (res >= 0) + return (res + res2); + else + return (res + -res2); +} diff --git a/lib/libft/ft_atoi.c b/lib/libft/ft_atoi.c new file mode 100644 index 0000000..79f86ca --- /dev/null +++ b/lib/libft/ft_atoi.c @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 11:53:08 by gcollet #+# #+# */ +/* Updated: 2021/05/12 17:33:21 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction atoi() convertit le début de la chaîne pointée par nptr en +entier de type int . */ +/* VALEUR RENVOYÉE : Le résultat de la conversion. */ + +#include "libft.h" + +int ft_atoi(const char *nptr) +{ + long num; + int sign; + int i; + + i = 0; + sign = 1; + num = 0; + while ((nptr[i] >= '\t' && nptr[i] <= '\r') || nptr[i] == ' ') + nptr++; + if (nptr[i] == '-') + sign = sign * -1; + if (nptr[i] == '+' || nptr[i] == '-') + nptr++; + while (nptr[i] >= '0' && nptr[i] <= '9') + { + num = (num * 10) + nptr[i] - '0'; + nptr++; + if (num * sign > 2147483647) + return (-1); + if (num * sign < -2147483648) + return (0); + } + return (num * sign); +} diff --git a/lib/libft/ft_bzero.c b/lib/libft/ft_bzero.c new file mode 100644 index 0000000..1ec00d6 --- /dev/null +++ b/lib/libft/ft_bzero.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/05 15:00:08 by gcollet #+# #+# */ +/* Updated: 2021/05/08 12:41:53 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction bzero() met à 0 (octets contenant « \0 ») les n premiers octets +du bloc pointé par s. */ +/* VALEUR RENVOYÉE : Aucune. */ + +#include "libft.h" + +void ft_bzero(void *s, size_t n) +{ + char *str; + + str = (char *)s; + while (n) + { + *str = 0; + str++; + n--; + } +} diff --git a/lib/libft/ft_calloc.c b/lib/libft/ft_calloc.c new file mode 100644 index 0000000..6d7f9b0 --- /dev/null +++ b/lib/libft/ft_calloc.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 12:17:37 by gcollet #+# #+# */ +/* Updated: 2021/05/12 15:28:51 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* calloc() alloue la mémoire necessaire pour un tableau de nmemb éléments de +taille size octets, et renvoie un pointeur vers la mémoire allouée. Cette zone +est remplie avec des zéros. Si nmemb ou size vaut 0, calloc() renvoie soit +NULL, soit un pointeur unique qui pourra être passé ultérieurement à free() +avec succès. */ + +#include "libft.h" + +void *ft_calloc(size_t nmemb, size_t size) +{ + char *ptr; + + if (nmemb == 0 || size == 0) + { + nmemb = 1; + size = 1; + } + ptr = malloc (nmemb * size); + if (ptr) + ft_bzero(ptr, nmemb * size); + return (ptr); +} diff --git a/lib/libft/ft_isalnum.c b/lib/libft/ft_isalnum.c new file mode 100644 index 0000000..245a76e --- /dev/null +++ b/lib/libft/ft_isalnum.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 16:21:34 by gcollet #+# #+# */ +/* Updated: 2021/05/06 16:42:35 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si l'on a un caractère alphanumérique. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isalnum(int c) +{ + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') + || (c >= '0' && c <= '9')) + { + return (1); + } + return (0); +} diff --git a/lib/libft/ft_isalpha.c b/lib/libft/ft_isalpha.c new file mode 100644 index 0000000..97de5e2 --- /dev/null +++ b/lib/libft/ft_isalpha.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 15:08:39 by gcollet #+# #+# */ +/* Updated: 2021/05/06 15:45:10 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si l'on a un caractère alphabétique. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isalpha(int c) +{ + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) + return (1); + return (0); +} diff --git a/lib/libft/ft_isascii.c b/lib/libft/ft_isascii.c new file mode 100644 index 0000000..b049c10 --- /dev/null +++ b/lib/libft/ft_isascii.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 10:04:18 by gcollet #+# #+# */ +/* Updated: 2021/05/07 10:25:01 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si c est un unsigned char sur 7 bits, entrant dans le jeu de +caractères ASCII. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + return (0); +} diff --git a/lib/libft/ft_isdigit.c b/lib/libft/ft_isdigit.c new file mode 100644 index 0000000..e3714df --- /dev/null +++ b/lib/libft/ft_isdigit.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 16:04:28 by gcollet #+# #+# */ +/* Updated: 2021/05/12 10:09:29 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si l'on a un chiffre (0 à 9). */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isdigit(int c) +{ + if (c >= '0' && c <= '9') + return (1); + return (0); +} diff --git a/lib/libft/ft_isprint.c b/lib/libft/ft_isprint.c new file mode 100644 index 0000000..520492a --- /dev/null +++ b/lib/libft/ft_isprint.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 10:27:30 by gcollet #+# #+# */ +/* Updated: 2021/05/07 10:33:03 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie s'il s'agit d'un caractère imprimable, y compris l'espace. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isprint(int c) +{ + if (c >= 32 && c <= 126) + return (1); + return (0); +} diff --git a/lib/libft/ft_itoa.c b/lib/libft/ft_itoa.c new file mode 100644 index 0000000..f41e9fc --- /dev/null +++ b/lib/libft/ft_itoa.c @@ -0,0 +1,95 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 17:26:08 by gcollet #+# #+# */ +/* Updated: 2021/05/13 15:57:51 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne une chaine de caractères représentant +l’integer reçu en argument .Les nombres négatifs doivent être gérés. */ +/* La chaine de caractères représentant l’integer. NULL si l’allocation +échoue. */ + +#include "libft.h" + +static char *ft_swap(char *tab, int size) +{ + int temp; + int i; + int j; + + i = 0; + j = size - 1; + if (tab[i] == '-') + i++; + while (i < j) + { + temp = tab[i]; + tab[i] = tab[j]; + tab[j] = temp; + i++; + j--; + } + return (tab); +} + +static char *ft_is_zero(char *tab) +{ + int i; + + i = 0; + tab[i++] = '0'; + tab[i] = '\0'; + return (tab); +} + +static int ft_len(int c) +{ + int len; + + len = 1; + if (c >= 0) + c *= -1; + else + len++; + while (c <= -10) + { + c /= 10; + len++; + } + return (len); +} + +char *ft_itoa(int n) +{ + char *tab; + int i; + long l_n; + int len; + + i = 0; + len = ft_len(n); + l_n = n; + tab = (char *)malloc(sizeof(char) * (len + 1)); + if (!tab) + return (0); + if (l_n == 0) + return (ft_is_zero(tab)); + if (l_n < 0) + { + l_n = -l_n; + tab[i++] = '-'; + } + while (l_n != 0) + { + tab[i++] = (l_n % 10) + '0'; + l_n /= 10; + } + tab [i] = '\0'; + return (ft_swap (tab, ft_strlen(tab))); +} diff --git a/lib/libft/ft_lstadd_back.c b/lib/libft/ft_lstadd_back.c new file mode 100644 index 0000000..2c70388 --- /dev/null +++ b/lib/libft/ft_lstadd_back.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 11:10:13 by gcollet #+# #+# */ +/* Updated: 2021/05/20 11:48:50 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Ajoute l’élément new à la fin de la liste. */ + +#include "libft.h" + +void ft_lstadd_back(t_list **alst, t_list *new) +{ + t_list *temp; + + if (*alst == NULL) + *alst = new; + else + { + temp = ft_lstlast(*(alst)); + temp->next = new; + } +} diff --git a/lib/libft/ft_lstadd_front.c b/lib/libft/ft_lstadd_front.c new file mode 100644 index 0000000..261e2e4 --- /dev/null +++ b/lib/libft/ft_lstadd_front.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 09:29:13 by gcollet #+# #+# */ +/* Updated: 2021/05/20 10:49:20 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Ajoute l’élément ’new’ au début de la liste. */ + +#include "libft.h" + +void ft_lstadd_front(t_list **alst, t_list *new) +{ + new->next = *alst; + *alst = new; +} diff --git a/lib/libft/ft_lstclear.c b/lib/libft/ft_lstclear.c new file mode 100644 index 0000000..9ff9406 --- /dev/null +++ b/lib/libft/ft_lstclear.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 13:17:48 by gcollet #+# #+# */ +/* Updated: 2021/05/20 15:04:09 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Supprime et libère la mémoire de l’élément passé en paramètre, et de tous +les élements qui suivent, à l’aide de del et de free(3) Enfin, le pointeur +initial doit être mis à NULL. */ + +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void*)) +{ + t_list *temp; + + if (lst == NULL) + return ; + while (*lst) + { + temp = (*lst)->next; + ft_lstdelone(*lst, del); + (*lst) = temp; + } +} diff --git a/lib/libft/ft_lstdelone.c b/lib/libft/ft_lstdelone.c new file mode 100644 index 0000000..5bc96cb --- /dev/null +++ b/lib/libft/ft_lstdelone.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 11:52:19 by gcollet #+# #+# */ +/* Updated: 2021/05/20 13:45:11 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Libère la mémoire de l’élément passé en argument en utilisant la fonction +del puis avec free(3). La mémoire de next ne doit pas être free. */ + +#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void*)) +{ + if (lst == NULL) + return ; + if (lst->content) + { + del(lst->content); + free(lst); + } +} diff --git a/lib/libft/ft_lstiter.c b/lib/libft/ft_lstiter.c new file mode 100644 index 0000000..d619292 --- /dev/null +++ b/lib/libft/ft_lstiter.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 13:40:10 by gcollet #+# #+# */ +/* Updated: 2021/05/20 15:04:34 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Itère sur la list lst et applique la fonction f au contenu chaque élément. */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(void *)) +{ + while (lst) + { + f(lst->content); + lst = lst->next; + } +} diff --git a/lib/libft/ft_lstlast.c b/lib/libft/ft_lstlast.c new file mode 100644 index 0000000..dc9202b --- /dev/null +++ b/lib/libft/ft_lstlast.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 10:48:37 by gcollet #+# #+# */ +/* Updated: 2021/05/20 11:07:54 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Renvoie le dernier élément de la liste. */ + +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + if (lst) + { + while (lst->next) + lst = lst->next; + } + return (lst); +} diff --git a/lib/libft/ft_lstmap.c b/lib/libft/ft_lstmap.c new file mode 100644 index 0000000..2466f7c --- /dev/null +++ b/lib/libft/ft_lstmap.c @@ -0,0 +1,50 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 13:50:09 by gcollet #+# #+# */ +/* Updated: 2021/05/20 15:16:58 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Itère sur la liste lst et applique la fonction f au contenu de chaque +élément. Crée une nouvelle liste résultant des applications successives de f. +La fonction del est la pour detruire le contenu d un element si necessaire */ + +#include "libft.h" + +static t_list *ft_newlst(t_list *new_lst, t_list *lst, void *(*f)(void *) + , void (*del)(void *)) +{ + t_list *add; + + add = ft_lstnew(f(lst->content)); + if (add == NULL) + { + ft_lstclear(&new_lst, del); + return (NULL); + } + ft_lstadd_back(&new_lst, add); + return (new_lst); +} + +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +{ + t_list *new_lst; + + if (lst == NULL) + return (NULL); + new_lst = ft_lstnew(f(lst->content)); + if (new_lst == NULL) + return (NULL); + lst = lst->next; + while (lst) + { + ft_newlst(new_lst, lst, f, del); + lst = lst->next; + } + return (new_lst); +} diff --git a/lib/libft/ft_lstnew.c b/lib/libft/ft_lstnew.c new file mode 100644 index 0000000..a257ede --- /dev/null +++ b/lib/libft/ft_lstnew.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 08:21:11 by gcollet #+# #+# */ +/* Updated: 2021/05/20 11:42:33 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et renvoie un nouvel élément. La variable content est +initialisée à l’aide de la valeur du paramètre content. La variable ’next’ est +initialisée à NULL. */ +/* Valeur de retour: Le nouvel element */ + +#include "libft.h" + +t_list *ft_lstnew(void *content) +{ + t_list *list; + + list = malloc(sizeof(*list)); + if (list == NULL) + return (NULL); + list->content = content; + list->next = NULL; + return (list); +} diff --git a/lib/libft/ft_lstsize.c b/lib/libft/ft_lstsize.c new file mode 100644 index 0000000..75ae237 --- /dev/null +++ b/lib/libft/ft_lstsize.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 10:10:24 by gcollet #+# #+# */ +/* Updated: 2021/05/20 10:50:27 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Compte le nombre d’éléments de la liste. */ + +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int i; + + i = 0; + while (lst) + { + lst = lst->next; + i++; + } + return (i); +} diff --git a/lib/libft/ft_memccpy.c b/lib/libft/ft_memccpy.c new file mode 100644 index 0000000..7c95847 --- /dev/null +++ b/lib/libft/ft_memccpy.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memccpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 10:03:50 by gcollet #+# #+# */ +/* Updated: 2021/05/11 13:52:27 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memccpy() copie au plus n octets de la zone mémoire src vers +la zone mémoire dest, s'arrêtant dès qu'elle rencontre le caractère c. */ +/* La fonction memccpy() renvoie un pointeur sur le caractère immédiatement +après c dans la zone dest, ou NULL si c n'a pas été trouvé dans les n premiers +caractères de src. */ + +#include "libft.h" + +void *ft_memccpy(void *dest, const void *src, int c, size_t n) +{ + size_t i; + unsigned char *str_dest; + unsigned char *str_src; + + str_dest = (unsigned char *)dest; + str_src = (unsigned char *)src; + i = 0; + while (i < n) + { + str_dest[i] = str_src[i]; + if (str_dest[i] == (unsigned char)c) + return (dest + i + 1); + i++; + } + return (NULL); +} diff --git a/lib/libft/ft_memchr.c b/lib/libft/ft_memchr.c new file mode 100644 index 0000000..e40c94c --- /dev/null +++ b/lib/libft/ft_memchr.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 11:23:30 by gcollet #+# #+# */ +/* Updated: 2021/05/11 13:18:41 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memchr() examine les n premiers octets de la zone mémoire +pointée par s à la recherche du caractère c. Le premier octet correspondant à c +(interprété comme un unsigned char) arrête l'opération. */ +/* La fonction memchr() renvoie un pointeur sur l'octet correspondant, ou NULL +si le caractère n'est pas présent dans la zone de mémoire concernée. */ + +#include "libft.h" + +void *ft_memchr(const void *s, int c, size_t n) +{ + size_t i; + unsigned char *str_s; + + str_s = (unsigned char *)s; + i = 0; + while (i < n) + { + if (str_s[i] == (unsigned char)c) + return (str_s + i); + i++; + } + return (NULL); +} diff --git a/lib/libft/ft_memcmp.c b/lib/libft/ft_memcmp.c new file mode 100644 index 0000000..d17a009 --- /dev/null +++ b/lib/libft/ft_memcmp.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 11:49:42 by gcollet #+# #+# */ +/* Updated: 2021/05/12 16:49:27 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memcmp() compare les n premiers octets des zones mémoire s1 et +s2. Elle renvoie un entier inférieur, égal, ou supérieur à zéro, si s1 est +respectivement inférieure, égale ou supérieur à s2. */ +/* La fonction memcmp() renvoie un entier négatif, nul ou positif si les n +premiers octets de s1 sont respectivement inférieurs, égaux ou supérieurs aux n +premiers octets de s2. */ + +#include "libft.h" + +int ft_memcmp(const void *s1, const void *s2, size_t n) +{ + unsigned int i; + unsigned char *str_s1; + unsigned char *str_s2; + + i = 0; + str_s1 = (unsigned char *)s1; + str_s2 = (unsigned char *)s2; + if (n == 0) + return (0); + while (str_s1[i] == str_s2[i] && i < n - 1) + { + i++; + } + return (str_s1[i] - str_s2[i]); +} diff --git a/lib/libft/ft_memcpy.c b/lib/libft/ft_memcpy.c new file mode 100644 index 0000000..84f9c3e --- /dev/null +++ b/lib/libft/ft_memcpy.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/05 11:18:02 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:17:42 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memcpy() copie n octets depuis la zone mémoire src vers la zone +mémoire dest. Les deux zones ne doivent pas se chevaucher. Si c'est le cas, +utilisez plutôt memmove(). */ +/* La fonction memcpy() renvoie un pointeur sur dest. */ + +#include "libft.h" + +void *ft_memcpy(void *dest, const void *src, size_t n) +{ + size_t i; + + i = 0; + if (!dest && !src) + return (NULL); + while (i < n) + { + ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; + i++; + } + return (dest); +} diff --git a/lib/libft/ft_memmove.c b/lib/libft/ft_memmove.c new file mode 100644 index 0000000..8920416 --- /dev/null +++ b/lib/libft/ft_memmove.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 10:37:42 by gcollet #+# #+# */ +/* Updated: 2022/02/06 10:00:40 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memmove() copie n octets depuis la zone mémoire src vers la zone +mémoire dest. Les deux zones peuvent se chevaucher : la copie se passe comme +si les octets de src étaient d'abord copiés dans une zone temporaire qui ne +chevauche ni src ni dest, et les octets sont ensuite copiés de la zone +temporaire vers dest. */ +/* La fonction memmove() renvoie un pointeur sur dest. */ + +#include "libft.h" + +void *ft_memmove(void *dest, const void *src, size_t n) +{ + char *str_dest; + char *str_src; + + str_dest = (char *)dest; + str_src = (char *)src; + if (str_dest > str_src) + { + while (n--) + str_dest[n] = str_src[n]; + } + else if (str_dest < str_src) + ft_memcpy(dest, src, n); + return (dest); +} diff --git a/lib/libft/ft_memset.c b/lib/libft/ft_memset.c new file mode 100644 index 0000000..51dcd73 --- /dev/null +++ b/lib/libft/ft_memset.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/05 10:19:52 by gcollet #+# #+# */ +/* Updated: 2021/07/28 14:09:52 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memset() remplit les n premiers octets de la zone mémoire +pointée par s avec l'octet c. */ +/* La fonction memset() renvoie un pointeur sur la zone mémoire s. */ + +#include "libft.h" + +void *ft_memset(void *s, int c, size_t n) +{ + char *str; + + str = s; + while (n) + { + *str = (unsigned char)c; + str++; + n--; + } + return (s); +} diff --git a/lib/libft/ft_putchar_fd.c b/lib/libft/ft_putchar_fd.c new file mode 100644 index 0000000..70ce152 --- /dev/null +++ b/lib/libft/ft_putchar_fd.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:01:32 by gcollet #+# #+# */ +/* Updated: 2021/05/11 12:00:30 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit le caractère ’c’ sur le file descriptor donné. */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + write (fd, &c, 1); +} diff --git a/lib/libft/ft_putendl_fd.c b/lib/libft/ft_putendl_fd.c new file mode 100644 index 0000000..e1a3a2a --- /dev/null +++ b/lib/libft/ft_putendl_fd.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:44:55 by gcollet #+# #+# */ +/* Updated: 2021/05/13 16:00:14 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit La chaine de caractères ’s’ sur le file descriptor donné, suivie +d’un retour à la ligne. */ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + if (!s) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } + ft_putchar_fd('\n', fd); +} diff --git a/lib/libft/ft_putnbr_fd.c b/lib/libft/ft_putnbr_fd.c new file mode 100644 index 0000000..6ab0db8 --- /dev/null +++ b/lib/libft/ft_putnbr_fd.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:51:46 by gcollet #+# #+# */ +/* Updated: 2021/05/11 11:59:00 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit l’integer ’n’ sur le file descriptor donné. */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + long i; + + i = n; + if (i < 0) + { + ft_putchar_fd('-', fd); + i = i * -1; + } + if (i > 9) + { + ft_putnbr_fd(i / 10, fd); + ft_putnbr_fd(i % 10, fd); + } + else + { + ft_putchar_fd(i + 48, fd); + } +} diff --git a/lib/libft/ft_putstr_fd.c b/lib/libft/ft_putstr_fd.c new file mode 100644 index 0000000..95742f7 --- /dev/null +++ b/lib/libft/ft_putstr_fd.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:17:23 by gcollet #+# #+# */ +/* Updated: 2021/05/13 15:59:39 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit la chaine de caractères ’s’ sur le file descriptor donné. */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + if (!s) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } +} diff --git a/lib/libft/ft_split.c b/lib/libft/ft_split.c new file mode 100644 index 0000000..e8fcb5b --- /dev/null +++ b/lib/libft/ft_split.c @@ -0,0 +1,106 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 14:59:30 by gcollet #+# #+# */ +/* Updated: 2021/05/13 15:11:03 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne un tableau de chaines de caracteres obtenu +en séparant ’s’ à l’aide du caractère ’c’, utilisé comme délimiteur. Le tableau +doit être terminé par NULL. */ +/* Le tableau de nouvelles chaines de caractères, résultant du découpage. +NULL si l’allocation échoue. */ + +#include "libft.h" + +static char **ft_malloc_error(char **tab) +{ + size_t i; + + i = 0; + while (tab[i]) + { + free(tab[i]); + i++; + } + free(tab); + return (NULL); +} + +static size_t ft_nb_words(char const *s, char c) +{ + size_t i; + size_t nb_words; + + if (!s[0]) + return (0); + i = 0; + nb_words = 0; + while (s[i] && s[i] == c) + i++; + while (s[i]) + { + if (s[i] == c) + { + nb_words++; + while (s[i] && s[i] == c) + i++; + continue ; + } + i++; + } + if (s[i - 1] != c) + nb_words++; + return (nb_words); +} + +static void ft_get_next_word(char **next_word, size_t *next_word_len, char c) +{ + size_t i; + + *next_word += *next_word_len; + *next_word_len = 0; + i = 0; + while (**next_word && **next_word == c) + (*next_word)++; + while ((*next_word)[i]) + { + if ((*next_word)[i] == c) + return ; + (*next_word_len)++; + i++; + } +} + +char **ft_split(char const *s, char c) +{ + char **tab; + char *next_word; + size_t next_word_len; + size_t i; + + if (!s) + return (NULL); + tab = (char **)malloc(sizeof(char *) * (ft_nb_words(s, c) + 1)); + if (!tab) + return (NULL); + i = 0; + next_word = (char *)s; + next_word_len = 0; + while (i < ft_nb_words(s, c)) + { + ft_get_next_word(&next_word, &next_word_len, c); + tab[i] = (char *)malloc(sizeof(char) * (next_word_len + 1)); + if (!tab[i]) + return (ft_malloc_error(tab)); + ft_strlcpy(tab[i], next_word, next_word_len + 1); + i++; + } + tab[i] = NULL; + return (tab); +} diff --git a/lib/libft/ft_strchr.c b/lib/libft/ft_strchr.c new file mode 100644 index 0000000..c5a6730 --- /dev/null +++ b/lib/libft/ft_strchr.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:06:54 by gcollet #+# #+# */ +/* Updated: 2021/05/11 14:23:26 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strchr() renvoie un pointeur sur la première occurrence du +caractère c dans la chaîne s. */ +/* La fonction strchr() renvoie un pointeur sur le caractère correspondant, +ou NULL si le caractère n'a pas été trouvé. */ + +#include "libft.h" + +char *ft_strchr(const char *s, int c) +{ + char *str; + + str = (char *)s; + while (*str != c) + { + if (*str == '\0') + return (NULL); + str++; + } + return (str); +} diff --git a/lib/libft/ft_strdup.c b/lib/libft/ft_strdup.c new file mode 100644 index 0000000..c1972a4 --- /dev/null +++ b/lib/libft/ft_strdup.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 12:51:40 by gcollet #+# #+# */ +/* Updated: 2021/05/13 16:40:52 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strdup() renvoie un pointeur sur une nouvelle chaîne de +caractères qui est dupliquée depuis s. La mémoire occupée par cette nouvelle +chaîne est obtenue en appelant malloc(), et peut (doit) donc être libérée avec +free().*/ +/* La fonction strdup() renvoie un pointeur sur la chaîne dupliquée, ou NULL +s'il n'y avait pas assez de mémoire. */ + +#include "libft.h" + +char *ft_strdup(const char *s) +{ + char *tab; + int i; + + i = 0; + tab = (char *)malloc(sizeof(*tab) * (ft_strlen(s) + 1)); + if (!tab) + return (NULL); + while (s[i]) + { + tab[i] = s[i]; + i++; + } + tab[i] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_strjoin.c b/lib/libft/ft_strjoin.c new file mode 100644 index 0000000..dc416e0 --- /dev/null +++ b/lib/libft/ft_strjoin.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 11:42:29 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:20:08 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne une nouvelle chaine, résultat de la +concaténation de s1 et s2. */ +/* La nouvelle chaine de caractères. NULL si l’allocation échoue. */ + +#include "libft.h" + +char *ft_strjoin(char const *s1, char const *s2) +{ + char *tab; + int i; + int j; + + i = 0; + j = 0; + if (!s1 || !s2) + return (NULL); + tab = (char *)malloc(sizeof(*tab) * (ft_strlen(s1) + ft_strlen(s2)) + 1); + if (tab == 0) + return (NULL); + while (s1[i]) + { + tab[i] = s1[i]; + i++; + } + while (s2[j]) + { + tab[i] = s2[j]; + j++; + i++; + } + tab[i] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_strlcat.c b/lib/libft/ft_strlcat.c new file mode 100644 index 0000000..bdbe4c7 --- /dev/null +++ b/lib/libft/ft_strlcat.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 14:49:15 by gcollet #+# #+# */ +/* Updated: 2021/05/17 10:15:29 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* The strlcat() function appends the NUL-terminated string src to the end of +dst. It will append at most size - strlen(dst) - 1 bytes, NUL-terminating the +result. */ +/* The strlcat() functions return the total length of the string they tried +to create that means the initial length of dst plus the length of src. */ + +#include "libft.h" + +size_t ft_strlcat(char *dst, const char *src, size_t size) +{ + size_t n; + size_t m; + size_t p; + + m = 0; + n = ft_strlen(dst); + p = ft_strlen(src); + if (size == 0) + return (p); + while ((src[m] != '\0') && ((n + m) < (size - 1))) + { + dst[n + m] = src[m]; + m++; + } + dst[n + m] = '\0'; + if (size > n) + return (n + p); + return (size + p); +} diff --git a/lib/libft/ft_strlcpy.c b/lib/libft/ft_strlcpy.c new file mode 100644 index 0000000..0d57e17 --- /dev/null +++ b/lib/libft/ft_strlcpy.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 13:31:38 by gcollet #+# #+# */ +/* Updated: 2021/05/11 14:40:33 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* The strlcpy() function copies up to size characters from the +NUL-terminated string src to dst, NUL-terminating the result. */ +/* The strlcpy() functions return the total length of the string +they tried to create. For strlcpy() that means the length of src. */ + +#include "libft.h" + +size_t ft_strlcpy(char *dst, const char *src, size_t size) +{ + size_t i; + + i = 0; + if (!dst || !src) + return (0); + if (size > 0) + { + while (src[i] && --size) + { + dst[i] = src[i]; + i++; + } + dst[i] = '\0'; + } + while (src[i]) + i++; + return (i); +} diff --git a/lib/libft/ft_strlen.c b/lib/libft/ft_strlen.c new file mode 100644 index 0000000..dfdf22c --- /dev/null +++ b/lib/libft/ft_strlen.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 14:39:40 by gcollet #+# #+# */ +/* Updated: 2021/05/06 15:00:37 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strlen() calcule la longueur de la chaîne de caractères s, sans +compter l'octet nul « \0 » final. */ +/* La fonction strlen() renvoie le nombre de caractères dans la chaîne s. */ + +#include "libft.h" + +size_t ft_strlen(const char *s) +{ + size_t i; + + i = 0; + while (s[i]) + i++; + return (i); +} diff --git a/lib/libft/ft_strmapi.c b/lib/libft/ft_strmapi.c new file mode 100644 index 0000000..b92af1b --- /dev/null +++ b/lib/libft/ft_strmapi.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 10:20:19 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:34:37 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +/* Applique la fonction ’f’ à chaque caractère de la chaine de caractères +passée en argument pour créer une nouvelle chaine de caractères (avec malloc) +résultant des applications successives de ’f’. */ +/* La chaine de caractères résultant des application ssuccessives de f. +Retourne NULL si l’allocation échoue. */ + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + int i; + char *tab; + + i = 0; + if (!s || !f) + return (NULL); + tab = (char *)malloc(sizeof(char) * ft_strlen(s) + 1); + if (tab == 0) + return (NULL); + while (s[i]) + { + tab[i] = (*f)(i, s[i]); + i++; + } + tab[i] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_strncmp.c b/lib/libft/ft_strncmp.c new file mode 100644 index 0000000..5b7d741 --- /dev/null +++ b/lib/libft/ft_strncmp.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:51:46 by gcollet #+# #+# */ +/* Updated: 2022/12/23 01:56:56 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strcmp() compare les deux chaînes s1 et s2. Elle renvoie un +entier négatif, nul, ou positif, si s1 est respectivement inférieure, égale +ou supérieure à s2. */ +/* La fonction strncmp() renvoie un entier inférieur, égal ou supérieur à zéro +si s1 (ou ses n premiers octets) est respectivement inférieure, égale ou +supérieure à s2. */ + +#include "libft.h" + +int ft_strncmp(const char *str1, const char *str2, size_t n) +{ + while (n-- > 0 && (*str1 || *str2)) + { + if (*str1 != *str2) + return ((*(unsigned char *) str1) - (*(unsigned char *) str2)); + str1++; + str2++; + } + return (0); +} diff --git a/lib/libft/ft_strnstr.c b/lib/libft/ft_strnstr.c new file mode 100644 index 0000000..a0e1214 --- /dev/null +++ b/lib/libft/ft_strnstr.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 11:17:09 by gcollet #+# #+# */ +/* Updated: 2021/05/11 13:33:00 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* The strnstr() function locates the first occurrence of the null-terminated +string little in the string big, where not more than len character are +searched. */ +/* If little is an empty string, big is returned; if little occurs nowhere in +big, NULL is returned; otherwise a pointer to the first character of the first +occurrence of little is returned. */ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + size_t i; + size_t j; + + i = 0; + if (little[i] == '\0') + return ((char *)big); + while (big[i] && i < len) + { + j = 0; + while (big[i + j] == little[j] && i + j < len) + { + if (little[j + 1] == '\0') + return ((char *)big + i); + j++; + } + i++; + } + return (0); +} diff --git a/lib/libft/ft_strrchr.c b/lib/libft/ft_strrchr.c new file mode 100644 index 0000000..11f2c94 --- /dev/null +++ b/lib/libft/ft_strrchr.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strrchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:38:19 by gcollet #+# #+# */ +/* Updated: 2021/05/11 14:49:22 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strrchr() renvoie un pointeur sur la dernière occurrence du +caractère c dans la chaîne s. */ +/* La fonction strrchr() renvoie un pointeur sur le caractère correspondant, +ou NULL si le caractère n'a pas été trouvé. */ + +#include "libft.h" + +char *ft_strrchr(const char *s, int c) +{ + int i; + + i = 0; + while (s[i]) + i++; + if (c == '\0') + return ((char *)s + i); + while (i--) + { + if (s[i] == c) + return ((char *)(s + i)); + } + return (0); +} diff --git a/lib/libft/ft_strtrim.c b/lib/libft/ft_strtrim.c new file mode 100644 index 0000000..c2e7551 --- /dev/null +++ b/lib/libft/ft_strtrim.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strtrim.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 12:46:47 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:30:05 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne une copie de la chaine ’s1’, sans les +caractères spécifiés dans ’set’ au début et à la fin de la chaine de +caractères. */ +/* La chaine de caractères trimmée. NULL si l’allocation échoue. */ + +#include "libft.h" + +char *ft_strtrim(char const *s1, char const *set) +{ + size_t len; + char *tab; + + if (!s1 || !set) + return (NULL); + while (*s1 && ft_strchr(set, *s1)) + s1++; + len = ft_strlen(s1); + while (len && ft_strchr(set, s1[len])) + len--; + tab = ft_substr((char *)s1, 0, len + 1); + return (tab); +} diff --git a/lib/libft/ft_substr.c b/lib/libft/ft_substr.c new file mode 100644 index 0000000..45f68fe --- /dev/null +++ b/lib/libft/ft_substr.c @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_substr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 10:51:58 by gcollet #+# #+# */ +/* Updated: 2021/05/13 16:02:24 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc()) et retourne une chaine de caractères issue de la +chaine ’s’. Cette nouvelle chaine commence à l’index ’start’ et a pour taille +maximale ’len’ */ +/* La nouvelle chaine de caractere. NULL si l’allocation échoue. */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + char *tab; + size_t i; + size_t j; + + i = 0; + j = 0; + if (!s) + return (NULL); + tab = (char *)malloc(sizeof(*s) * (len + 1)); + if (!tab) + return (NULL); + while (s[i]) + { + if (i >= start && j < len) + { + tab[j] = s[i]; + j++; + } + i++; + } + tab[j] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_tolower.c b/lib/libft/ft_tolower.c new file mode 100644 index 0000000..024383f --- /dev/null +++ b/lib/libft/ft_tolower.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:01:50 by gcollet #+# #+# */ +/* Updated: 2021/05/07 11:05:35 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* tolower() convertit la lettre c en minuscule si c'est possible. */ +/* La valeur renvoyée est celle de la lettre convertie, ou bien c si la +conversion n'était pas possible. */ + +#include "libft.h" + +int ft_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + c += 32; + return (c); +} diff --git a/lib/libft/ft_toupper.c b/lib/libft/ft_toupper.c new file mode 100644 index 0000000..c98b9f7 --- /dev/null +++ b/lib/libft/ft_toupper.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 10:50:12 by gcollet #+# #+# */ +/* Updated: 2021/05/07 11:03:34 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* toupper() convertit la lettre c en majuscule si c'est possible. */ +/* La valeur renvoyée est celle de la lettre convertie, ou bien c si la à +conversion n'était pas possible. */ + +#include "libft.h" + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c -= 32; + return (c); +} diff --git a/lib/libft/libft.h b/lib/libft/libft.h new file mode 100644 index 0000000..0c29bed --- /dev/null +++ b/lib/libft/libft.h @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 01:04:25 by mabbas #+# #+# */ +/* Updated: 2022/12/23 01:04:28 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H + +# include +# include + +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; + +int ft_atoi(const char *nptr); +double ft_atof(const char *str); +void ft_bzero(void *s, size_t n); +void *ft_calloc(size_t nmemb, size_t size); +int ft_isalnum(int c); +int ft_isalpha(int c); +int ft_isascii(int c); +int ft_isdigit(int c); +int ft_isprint(int c); +char *ft_itoa(int n); +void *ft_memccpy(void *dest, const void *src, int c, 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); +void *ft_memcpy(void *dest, const void *src, size_t n); +void *ft_memmove(void *dest, const void *src, size_t n); +void *ft_memset(void *s, int c, size_t n); +void ft_putchar_fd(char c, int fd); +void ft_putendl_fd(char *s, int fd); +void ft_putnbr_fd(int n, int fd); +void ft_putstr_fd(char *s, int fd); +char **ft_split(char const *s, char c); +char *ft_strchr(const char *s, int c); +char *ft_strdup(const char *s); +char *ft_strjoin(char const *s1, char const *s2); +size_t ft_strlcat(char *dst, const char *src, size_t size); +size_t ft_strlcpy(char *dst, const char *src, size_t size); +size_t ft_strlen(const char *s); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +int ft_strncmp(const char *s1, const char *s2, size_t n); +char *ft_strnstr(const char *big, const char *little, size_t len); +char *ft_strrchr(const char *s, int c); +char *ft_strtrim(char const *s1, char const *set); +char *ft_substr(char const *s, unsigned int start, size_t len); +int ft_tolower(int c); +int ft_toupper(int c); +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 *)); + +#endif \ No newline at end of file diff --git a/pipex.dSYM/Contents/Info.plist b/pipex.dSYM/Contents/Info.plist new file mode 100644 index 0000000..a484750 --- /dev/null +++ b/pipex.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.pipex + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/pipex.dSYM/Contents/Resources/DWARF/pipex b/pipex.dSYM/Contents/Resources/DWARF/pipex new file mode 100644 index 0000000000000000000000000000000000000000..aca06bb9ba55ae1de2ca7149e5dda52d81f25431 GIT binary patch literal 11776 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 literal 0 HcmV?d00001 diff --git a/pipex_bonus b/pipex_bonus new file mode 100755 index 0000000000000000000000000000000000000000..ba4acca21d5371b8dc8b4b81955ee459ef6aa6c6 GIT binary patch literal 52144 zcmeHQe{kHzb>BNl?%5DdrjEzNNjV5VTaYZ{B(^bBrv8SniDd-%z`!tHpYBf9nbS$V zA6N>xB61d^)5VDE@tNr+() z042m#$R@I7b#A@ec*MB>UTUpPo?7;j9O;?EK+D=??A}#7M9R0h%rX0%y>*f2HatzEO{rRihYkvzC=gXS!0Arh0vgcPM>(^azJ{1bkZGGTor` zSv}Ese>91Z7qTwJUke3Bte92b%1%k(FH_oHSHt7kHW4Rpr>__-tA6kd+$j z?dpqL{psX~>Kjtxf})FbI0<`8T8qb-08Q-$!a5X+E>mRR~i-roo9j+dL@Kj|52 zLE%a???zG)fU+Ez+fsJ?QOZM1$M={FbL@eWYWI}_&~R~S@VP!Cq{q~ zU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u z0Y-okU<4QeM&SQD0zotXj+y&uyLr$kn}v_`;#)zpu-wddESmYOZRRsYGe2#Q;cMR9 z;*x)uJ_WXSH=?l6lsD#c*?FgVE1JOy|M0CCRmhg@Phw0Vdv1b0{L342_Eq4`0@M~V z#k_IKZiPgNzSP4Y`#pTF*Y+O7^2V%vmY7%buebfEke$yPuh{`9+VrpZhS4nGAMD#S z;~%EaPR-o0_QzhazY7unW!j%TW})e@9-B9$FZs+uF1xVIe^C06#?<$N*T`S%3x1X6zU7-6Z;E z(Kln}kJ=fZ5*nuOQQMa6wa^Bq(G789E}uQ7BwwCF(V%_bK0?f^`IC9$JNCPvfx(|k*g)0dwFh{89wRDvt(!K^L#4=P zfmNn#=7V-FyV&Iak_T%C3lSRwKJ(zGf-vU@d=d7y;R(So{26d2rk)X zxZ@ONodIk&0_!7)IAPD@gH}`GhDo9GRBqCPtso7m3N_A{O%$dGiiyo6)&#T>0>!HO zqEw&TGJ{A=(9nXRn$(O(px$0uA*E&zK**W0{U53UF_)dOzx@${l7h=lgOo<0CQTG> zi>0t+&^?Ies;N%_JJ^A8i6$*{oXSmk^6(Wap4&1Ddsf%kV{e3l(n&2q2g;3TFsF@0 z45axM)gJa=EhL@?@AxJ9?Num#NN0!rQ=r!EzZx;4@m`0`CL5sGjgJruNt<|GsJ#}9cFxviR^WYuV!95k!cO$&e(1wPW$lv_&ym8)cQ>{DDTF9KY zuLX;f;4WWyt4^ za;Z}d^SFk2aGE;9zN&}OW`Z`afB2)IWVkFkV-k7{IuxF{Y}vUCHUM%uHgdbLf=Im&@940f?giJS}nQ-$1u5nFljxj>w?!$mti_CULBb z5#zM~z|}Nj(m&C0Cingd*#hi@f5JFJ!F_0Iq~r9car!&(nKoBxd!=)Q{{Vf+?uo~sH~Ln{xC$2K*@I1a0&TPq zwmkv8P>PenBl!Rn6oL!+;Q33RE@PGTZ6C=lF%d7xfAw_LmRPAX>n=yjrt0ibN-3m@fM>n{Qo`0YDdV9K zobyj?Sed(kn0w2AfPR>Oxr=5K45L$~D35mvwzo!&w<^JQvl@qUsbfz0hU=(f4!%Kp zt^)X6>5y_z_L76nl1WL06aAp0PU>wXB@b?b!hu1qm&5U3FW&aOU z>kpc5ek0#;zC^#spwSh#;VqWYi8{L!gl+msf}P+S~S||Cys|m~^88&Uqpi&0XtubxPYJSF13;9WVQV!~vG&fE8 zb6+L~??Y_QS^q@vtURyb)oksq*g%sPI*PcL@Gxw|vjhQC=$OIHIfGq7KheP)Mf(&T z{&WfNlr4G?-R87f)UNHADRruFP^zaJ9e=R!m7Rh&vvc1%SYk!! zT&P8per*H@im-!fxqD<3Va2F}M6Y5ff3iU&m)af7Ir`lZ`=Mpx(=|Au*ZF+Omc(W40A7)eBfwF4r!>UP|X+B*d zAFBTP{jut-!db?vls}i2!W18v%w>;2{cS&g6bkjM{(XQ_fM?M zeIR$Pa|)pqmH_zR*-dW%_~Y0jHQQ9b%rMSpI^p6geb10)nE-%%c zqHhq`?9vAT_sae?v{S4NkrVFw3DG29D{2DVigFKBZY5X&y?B0oKzpI)v?#r*Rsc`H zY5Q$-;z0c>#jQ`m!a0Vmg?e-Hz&_y$A(>nyV&6=JmbLz*U zg5yd1A+>37pk92k{3)cW@g44%zv#-FSJwi);^*a+H!rWed3ohIqI4n7DbZV{9rB9Q zH%e7>PKwSIGLDWZ1(+P6uTA%1Q2Db)-xrJZYon&rd&G5am-NL`*2rslym0VGvHQNI z^BwoyHvdGUZ>#%n4GhIG_l^TkWgAy-*^{miD@x4(OXt-x-eqA?i{n&p$#~n9hI+-8n0JWZg#-MLi;Cn`8?QZ{$czzts=1j zvSfCPYN(vX#%$?Hg|ut;mu{ja*IzrpYUz6KT|z8f-zdvvvh>Mvg)A?Z+f74oWa*RQ(ha` zvSWM4_FcyPO0p_n6@;AnE$hcoQ*zf{@bo)(=l8bs8+A&=<3Cs6x3eDn7L{%ZnJR?S zz%?Vl2rvSS03*N%FanGKBftnS0*nA7zz8q`i~u9R2rvSS03*N%FanGKBftnS0*nA7 zzz8q`i~u9R2rvSS03*N%FanGKBftnS0*nA7zz8q`i~u9R2rvSS03*N%FanGKBftnS z0*nA7zzFi_GUuKh`28)#@Zu;@d$b{T~=2t z5s9LSEKk)-bcbSbbftXI6bgreHPVnC!n*(aTh^+c0V zD*~$$y`fk_q`JjGRD8vgNrm=C#rHg9q}3gZN5!~jZ!~Qsq629w9!o^Uiyki~YY;;Z zqnLe!sK_z}B#MxHwg*FJdoVPe6uDKEiV9{Kud8SweGbb){C|P(Zt#fmvgg7y1gvO5F?5TfTd@|`xp?Zo4tW-t67f4x zxOtNAyjAtxspTEskzYpy5>+Jc=H>h?s?T)h*SsTtTb;a{kLW(qU+@1;=yT)oAb9eB zwW#%fvQ^DLs^@ojXa3H*`Q1F(-`u9;4{3RacjNR@(%CF zkJrh&d6F+{`6Xw5%{%hf5P?J$`S0f4{zF{&J`DX1e!XD$R_A*cV-ia)IR zS>6A)ns@N}C(S$i?YQQL^!|BG^Uiv_<;ZLQPlJaYWQt5>lx`lOQo~6OXY(_ zy#*}wJg9kd$rn^ji+Y7Q&nf+oQco!7@q`+ew|X$Cr;_tXQqLpjVWgf!>M^9AL9(O= zkbe4H^v)yC5?$8*zGNgN-K=;=O|nJ3#~k=AsiHp_dm@A z)^{fR_C>?#RBI=mX9Lz}V~J3_HI)pfS_M7W2CS~WL?+b|{ + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.pipex_bonus + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus b/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus new file mode 100644 index 0000000000000000000000000000000000000000..b3efa25c23ed8f91783f4a691d6a14c8e87ac1ec GIT binary patch literal 12576 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 01:03:59 by mabbas #+# #+# */ +/* Updated: 2022/12/23 01:04:01 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Child process that run inside a fork, take the filein, put the output inside + a pipe and then close with the exec function */ +void child_process(char **argv, char **envp, int *fd) +{ + int filein; + + filein = open(argv[1], O_RDONLY, 0777); + if (filein == -1) + error(); + dup2(fd[1], STDOUT_FILENO); + dup2(filein, STDIN_FILENO); + close(fd[0]); + execute(argv[2], envp); +} + +/* Parent process that take the data from the pipe, change the output for the + fileout and also close with the exec function */ +void parent_process(char **argv, char **envp, int *fd) +{ + int fileout; + + fileout = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0777); + if (fileout == -1) + error(); + dup2(fd[0], STDIN_FILENO); + dup2(fileout, STDOUT_FILENO); + close(fd[1]); + execute(argv[3], envp); +} + +/* Main function that run the child and parent process or display an error + message if arguments are wrong */ +int main(int argc, char **argv, char **envp) +{ + int fd[2]; + pid_t pid1; + + if (argc == 5) + { + if (pipe(fd) == -1) + error(); + pid1 = fork(); + if (pid1 == -1) + error(); + if (pid1 == 0) + child_process(argv, envp, fd); + waitpid(pid1, NULL, 0); + parent_process(argv, envp, fd); + } + else + { + ft_putstr_fd("\033[31mError: Bad arguments\n\e[0m", 2); + ft_putstr_fd("Ex: ./pipex \n", 1); + } + return (0); +} diff --git a/srcs/pipex.o b/srcs/pipex.o new file mode 100644 index 0000000000000000000000000000000000000000..b16aa0ada0c8667bb977874915467d85e59eed44 GIT binary patch literal 4536 zcmb_gZERat89vw7_u8==J0H+y6ls?&rA1&ncDj*fNxN)u=cX--(sWH0!QG90ow)Uv zuI((DYPB@YG-D>E5)6qS6B0riKaddO&nT2hY~y2sBB-YR7*aGk5zr9%fwmM7<$2FN zPVCz-4YXG}=RNPodCq&@bM84u_xeBn`fm?olFU${xKW;?N<#tNgW@ImztC5Fw&5k= z(~yD5sO%E`biHgYmW2SO>yz=R$!)pO^1195;SuD)AY-2(m7858)*xL^mdaKpKPMDU zyavvgu>U}9^t8DcW=pB-DRZ_mrvsGhbba*9$i&et`=sa)r6hs=<-mig1+sx>%+6Zo z0?oG-Z-o*LdeLSqOF>C61BWIR& z!27mBqcGN3vg2Z%Z7r{N#4F66O_J3a-yV^#UIFma4~fU)D;h~B-a`(&KYmEO@=|ff z`RW4iZ4sZxFB;p-G2dh%hq%gmCI56LpVIXcquZ{GC1~@5p5irQ8^EI_@5OqErFY<& z^LpCCYSK z%|xxTk*J+sPt;FtChAMx+Uq~MgUG(m)~RrQZm_Au8Z>hbmZqWc;}&lS=4 z>eXAd_?obuT(2Lh#oua3gxQg(S2k+#o3?KG)xIzOEFBKsdzl7c>D5L&t zscJIU;=kp(Ki|ju4Ud3bqa7nWhaV@!)}kb~W2bdJ^o!t%7YSbT9%3rC8XqPeIIr88MGdRQAu=2C*iAdxn9*vCfb z1k{pQBR{7tm{uuM$ZOG9xG&tN9pKtfG}Z?x+#d_a4t<7|tYpbX4kuaUL}u19tfk1P zxnO1sMbnBrTFB*$eCh-~xyeEyTZ)_-Jzk2OG?I^>nu_*?qYs2jsdLOJN9GDR)GafT z!(CyNA_rsRR^hCfESDnVGz+E49Qr4 zt6?!Szfff96r;()NUTud4oMu&BNG!N)B34nPsa7h>G8O(vtlL{rAjZuoH8sNYI;Ki za(@g4sZ-h)=vL&wrSpNmT?lmS*&FDTy0F<@VVJtqhkN9}p#LHN{(Fw#-5@K>B^1ZH zaSI)65fx{bW8KtA?PYS{u-}g}!V_fF&nrp9+CBy8^HBT9!|y+grhhkd_K?^o=dqFO zThL2e3Qvzd)Wayae>puXI5B!4&{pI`U$yka_o(iaT~`)=&sz@w22$}4&C>kaTslgF zxvr$%A*nk|1G-jG5v`y|Ph6#1+d|V?&>E7BrZv#$YnATfXo|)s!Ps9o+OMdNkOheI ze{Yta;?YI~{uGavONg(?qm3T7qn&IAmttQcWc4~K#qAk{;5mXyy-8ZhLt}WUYCD6< z#eBD+_j>#pNL?uId;Mjw9uzs@C&&FLuFtW=sgVR){D`MxUfd}B%8;0SzmlD@{`{+t zrO#gY=J~nXFPx@(lU{-;6rMEjizq~V+Tg$85@URc(5CB%s4*tt5;@1b1NvWlC`u|H zBQOxngJPGNg1u#5T#Y#rHjx`X>aQOuS6ur#&iwH5`+XOm^Cz{hpPwmx^({JRmr-6o z`7X+jQ7G}0GQy!u?gj@@Zb?O}BUF@QQc>!KiaL{u^4<#$qIDw`Euv7-l97s5P^cg^ z(`8#Arxt47!!X=s*Mx?46TNR$CuW+l4U2dQC(7P$yZS;+D zk~<}(!{?n*{OTp8?MT^?*7I`{d(5c(6fal@>E`xpzo2@cc8uM7D#A-`<% z(09Pw;r9)2P>3!pJnKVe!P~%1A=6ijgDgb5mhk=HcnF2wM<=}QLi7;A_Y&dS98sZXz{x)iPX1Hi>mKkksL4msqIXB=|bA>-p{ zeQxQkk1^e(*C^BZD@?~zFpnn`{v;U5bMQQ;r;SXO>FI)Xj_Ky2nXHserYEz75*U4& jt=@AL!%8vzX(Lm{`wRW>%&U~~UqZ)gPES>e{O +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 00:47:16 by mabbas #+# #+# */ +/* Updated: 2022/12/23 02:39:56 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Child process that create a fork and a pipe, put the output inside a pipe + and then close with the exec function. The main process will change his stdin + for the pipe file descriptor. */ +void child_process(char *argv, char **envp) +{ + pid_t pid; + int fd[2]; + + if (pipe(fd) == -1) + error(); + pid = fork(); + if (pid == -1) + error(); + if (pid == 0) + { + close(fd[0]); + dup2(fd[1], STDOUT_FILENO); + execute(argv, envp); + } + else + { + close(fd[1]); + dup2(fd[0], STDIN_FILENO); + waitpid(pid, NULL, 0); + } +} + +/* Function who make a child process that will read from the stdin with + get_next_line until it find the limiter word and then put the output inside a + pipe. The main process will change his stdin for the pipe file descriptor. */ +void here_doc(char *limiter, int argc) +{ + pid_t reader; + int fd[2]; + char *line; + + if (argc < 6) + usage(); + if (pipe(fd) == -1) + error(); + reader = fork(); + if (reader == 0) + { + close(fd[0]); + while (get_next_line(&line)) + { + if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) + exit(EXIT_SUCCESS); + write(fd[1], line, ft_strlen(line)); + free(line); + } + } + else + { + close(fd[1]); + dup2(fd[0], STDIN_FILENO); + wait(NULL); + } +} + +/* Main function that run the childs process with the right file descriptor + or display an error message if arguments are wrong. It will run here_doc + function if the "here_doc" string is find in argv[1] */ +int main(int argc, char **argv, char **envp) +{ + int i; + int filein; + int fileout; + + if (argc >= 5) + { + if (ft_strncmp(argv[1], "here_doc", 8) == 0) + { + i = 3; + fileout = open_file(argv[argc - 1], 0); + here_doc(argv[2], argc); + } + else + { + i = 2; + fileout = open_file(argv[argc - 1], 1); + filein = open_file(argv[1], 2); + dup2(filein, STDIN_FILENO); + } + while (i < argc - 2) + child_process(argv[i++], envp); + dup2(fileout, STDOUT_FILENO); + execute(argv[argc - 2], envp); + } + usage(); +} diff --git a/srcs/utils.c b/srcs/utils.c new file mode 100644 index 0000000..8a4c7ce --- /dev/null +++ b/srcs/utils.c @@ -0,0 +1,101 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 02:45:19 by mabbas #+# #+# */ +/* Updated: 2022/12/23 02:45:27 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Function that will look for the path line inside the environment, will + split and test each command path and then return the right one. */ +char *find_path(char *cmd, char **envp) +{ + char **paths; + char *path; + int i; + char *part_path; + + i = 0; + while (ft_strnstr(envp[i], "PATH", 4) == 0) + i++; + paths = ft_split(envp[i] + 5, ':'); + i = 0; + while (paths[i]) + { + part_path = ft_strjoin(paths[i], "/"); + path = ft_strjoin(part_path, cmd); + free(part_path); + if (access(path, F_OK) == 0) + return (path); + free(path); + i++; + } + i = -1; + while (paths[++i]) + free(paths[i]); + free(paths); + return (0); +} + +/* A simple error displaying function. */ +void error(void) +{ + perror("\033[31mError"); + exit(EXIT_FAILURE); +} + +/* Function that take the command and send it to find_path + before executing it. */ +void execute(char *argv, char **envp) +{ + char **cmd; + int i; + char *path; + + i = -1; + cmd = ft_split(argv, ' '); + path = find_path(cmd[0], envp); + if (!path) + { + while (cmd[++i]) + free(cmd[i]); + free(cmd); + error(); + } + if (execve(path, cmd, envp) == -1) + error(); +} + +/* Function that will read input from the terminal and return line. */ +int get_next_line(char **line) +{ + char *buffer; + int readed; + int i; + char c; + + i = 0; + readed = 0; + buffer = (char *)malloc(10000); + if (!buffer) + return (-1); + readed = read(0, &c, 1); + while (readed && c != '\n' && c != '\0') + { + if (c != '\n' && c != '\0') + buffer[i] = c; + i++; + readed = read(0, &c, 1); + } + buffer[i] = '\n'; + buffer[++i] = '\0'; + *line = buffer; + free(buffer); + return (readed); +} diff --git a/srcs/utils_bonus.c b/srcs/utils_bonus.c new file mode 100644 index 0000000..e22a43e --- /dev/null +++ b/srcs/utils_bonus.c @@ -0,0 +1,67 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 01:03:50 by mabbas #+# #+# */ +/* Updated: 2022/12/23 02:39:09 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Function to display error message when arguments are wrong */ +void usage(void) +{ + ft_putstr_fd("\033[31mError: Bad argument\n\e[0m", 2); + ft_putstr_fd("Ex: ./pipex <...> \n", 1); + ft_putstr_fd("./pipex \"here_doc\" <...> \n", 1); + exit(EXIT_SUCCESS); +} + +/* Function to open the files with the right flags */ +int open_file(char *argv, int i) +{ + int file; + + file = 0; + if (i == 0) + file = open(argv, O_WRONLY | O_CREAT | O_APPEND, 0777); + else if (i == 1) + file = open(argv, O_WRONLY | O_CREAT | O_TRUNC, 0777); + else if (i == 2) + file = open(argv, O_RDONLY, 0777); + if (file == -1) + error(); + return (file); +} + +/* Function that will read input from the terminal and return line. */ +int get_next_line(char **line) +{ + char *buffer; + int readed; + int i; + char c; + + i = 0; + readed = 0; + buffer = (char *)malloc(10000); + if (!buffer) + return (-1); + readed = read(0, &c, 1); + while (readed && c != '\n' && c != '\0') + { + if (c != '\n' && c != '\0') + buffer[i] = c; + i++; + readed = read(0, &c, 1); + } + buffer[i] = '\n'; + buffer[++i] = '\0'; + *line = ft_strdup(buffer); + free(buffer); + return (readed); +} From a54ac644ac126b1430c90d2d8e2a455929e0475f Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Fri, 23 Dec 2022 03:08:31 +0100 Subject: [PATCH 02/31] finally done --- .gitignore | 2 ++ Makefile | 8 +++---- f.txt | 7 ------ g.txt | 1 - pipex_bonus | Bin 52144 -> 0 bytes srcs/pipex.o | Bin 4536 -> 0 bytes srcs/pipex_bonus.c | 17 ++++++++------ srcs/utils.c | 54 ++++++++++++++++++++++----------------------- 8 files changed, 43 insertions(+), 46 deletions(-) create mode 100644 .gitignore delete mode 100755 f.txt delete mode 100755 g.txt delete mode 100755 pipex_bonus delete mode 100644 srcs/pipex.o diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..507d0e6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.dSYM +.gitignore diff --git a/Makefile b/Makefile index 6665488..a73dbeb 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: mabbas +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/12/23 01:03:33 by mabbas #+# #+# # -# Updated: 2022/12/23 02:47:32 by mabbas ### ########.fr # +# Updated: 2022/12/23 03:05:17 by mabbas ### ########.fr # # # # **************************************************************************** # @@ -17,11 +17,11 @@ PROG_B = pipex_bonus SRCS = srcs/pipex.c srcs/utils.c OBJS = ${SRCS:.c=.o} -#MAIN = srcs/pipex.c +MAIN = srcs/pipex.c SRCS_B = srcs/pipex_bonus.c srcs/utils.c srcs/utils_bonus.c OBJS_B = ${SRCS_B:.c=.o} -#MAIN_B = srcs/pipex_bonus.c +MAIN_B = srcs/pipex_bonus.c HEADER = -Iincludes @@ -45,7 +45,7 @@ bonus: ${PROG_B} ${PROG_B}: ${OBJS_B} @echo "\033[33m----Compiling lib----" @make re -C ./lib/libft - @$(CC) ${OBJS_B} -Llib/libft -lft -o ${PROG_B} + @$(CC) ${OBJS_B} -Llib/libft -lft -o pipex @echo "\033[32mPipex Bonus Compiled!(\033[31m\033[32m_\033[31m\033[32m)\n" clean: diff --git a/f.txt b/f.txt deleted file mode 100755 index e8b7d01..0000000 --- a/f.txt +++ /dev/null @@ -1,7 +0,0 @@ - 2 - 1 - 1 - 0 - 2 - 2 - 5 diff --git a/g.txt b/g.txt deleted file mode 100755 index 9384ed0..0000000 --- a/g.txt +++ /dev/null @@ -1 +0,0 @@ - 12 diff --git a/pipex_bonus b/pipex_bonus deleted file mode 100755 index ba4acca21d5371b8dc8b4b81955ee459ef6aa6c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52144 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 jt=@AL!%8vzX(Lm{`wRW>%&U~~UqZ)gPES>e{O +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/23 00:47:16 by mabbas #+# #+# */ -/* Updated: 2022/12/23 02:39:56 by mabbas ### ########.fr */ +/* Updated: 2022/12/23 02:57:18 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,6 +39,14 @@ void child_process(char *argv, char **envp) } } +static void inputs(int fd, char *line, char *limiter) +{ + if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) + exit(EXIT_SUCCESS); + write(fd, line, ft_strlen(line)); + free(line); +} + /* Function who make a child process that will read from the stdin with get_next_line until it find the limiter word and then put the output inside a pipe. The main process will change his stdin for the pipe file descriptor. */ @@ -57,12 +65,7 @@ void here_doc(char *limiter, int argc) { close(fd[0]); while (get_next_line(&line)) - { - if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) - exit(EXIT_SUCCESS); - write(fd[1], line, ft_strlen(line)); - free(line); - } + inputs(fd[1], line, limiter); } else { diff --git a/srcs/utils.c b/srcs/utils.c index 8a4c7ce..1818a6d 100644 --- a/srcs/utils.c +++ b/srcs/utils.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/23 02:45:19 by mabbas #+# #+# */ -/* Updated: 2022/12/23 02:45:27 by mabbas ### ########.fr */ +/* Updated: 2022/12/23 02:49:33 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -72,30 +72,30 @@ void execute(char *argv, char **envp) error(); } -/* Function that will read input from the terminal and return line. */ -int get_next_line(char **line) -{ - char *buffer; - int readed; - int i; - char c; +// /* Function that will read input from the terminal and return line. */ +// int get_next_line(char **line) +// { +// char *buffer; +// int readed; +// int i; +// char c; - i = 0; - readed = 0; - buffer = (char *)malloc(10000); - if (!buffer) - return (-1); - readed = read(0, &c, 1); - while (readed && c != '\n' && c != '\0') - { - if (c != '\n' && c != '\0') - buffer[i] = c; - i++; - readed = read(0, &c, 1); - } - buffer[i] = '\n'; - buffer[++i] = '\0'; - *line = buffer; - free(buffer); - return (readed); -} +// i = 0; +// readed = 0; +// buffer = (char *)malloc(10000); +// if (!buffer) +// return (-1); +// readed = read(0, &c, 1); +// while (readed && c != '\n' && c != '\0') +// { +// if (c != '\n' && c != '\0') +// buffer[i] = c; +// i++; +// readed = read(0, &c, 1); +// } +// buffer[i] = '\n'; +// buffer[++i] = '\0'; +// *line = buffer; +// free(buffer); +// return (readed); +// } From 592a6e07dd84ad20b8f5aef897f7c2d49a9f02ff Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Fri, 23 Dec 2022 03:12:52 +0100 Subject: [PATCH 03/31] restart --- Makefile | 65 ----------- README.md | 47 -------- includes/pipex.h | 33 ------ lib/libft/Makefile | 50 -------- lib/libft/ft_atof.c | 36 ------ lib/libft/ft_atoi.c | 44 ------- lib/libft/ft_bzero.c | 30 ----- lib/libft/ft_calloc.c | 34 ------ lib/libft/ft_isalnum.c | 27 ----- lib/libft/ft_isalpha.c | 24 ---- lib/libft/ft_isascii.c | 25 ---- lib/libft/ft_isdigit.c | 24 ---- lib/libft/ft_isprint.c | 24 ---- lib/libft/ft_itoa.c | 95 --------------- lib/libft/ft_lstadd_back.c | 28 ----- lib/libft/ft_lstadd_front.c | 21 ---- lib/libft/ft_lstclear.c | 31 ----- lib/libft/ft_lstdelone.c | 27 ----- lib/libft/ft_lstiter.c | 24 ---- lib/libft/ft_lstlast.c | 25 ---- lib/libft/ft_lstmap.c | 50 -------- lib/libft/ft_lstnew.c | 30 ----- lib/libft/ft_lstsize.c | 28 ----- lib/libft/ft_memccpy.c | 38 ------ lib/libft/ft_memchr.c | 35 ------ lib/libft/ft_memcmp.c | 38 ------ lib/libft/ft_memcpy.c | 33 ------ lib/libft/ft_memmove.c | 37 ------ lib/libft/ft_memset.c | 31 ----- lib/libft/ft_putchar_fd.c | 20 ---- lib/libft/ft_putendl_fd.c | 28 ----- lib/libft/ft_putnbr_fd.c | 36 ------ lib/libft/ft_putstr_fd.c | 26 ----- lib/libft/ft_split.c | 106 ----------------- lib/libft/ft_strchr.c | 32 ------ lib/libft/ft_strdup.c | 38 ------ lib/libft/ft_strjoin.c | 45 -------- lib/libft/ft_strlcat.c | 41 ------- lib/libft/ft_strlcpy.c | 39 ------- lib/libft/ft_strlen.c | 27 ----- lib/libft/ft_strmapi.c | 39 ------- lib/libft/ft_strncmp.c | 32 ------ lib/libft/ft_strnstr.c | 42 ------- lib/libft/ft_strrchr.c | 35 ------ lib/libft/ft_strtrim.c | 34 ------ lib/libft/ft_substr.c | 44 ------- lib/libft/ft_tolower.c | 24 ---- lib/libft/ft_toupper.c | 24 ---- lib/libft/libft.h | 70 ------------ pipex.dSYM/Contents/Info.plist | 20 ---- pipex.dSYM/Contents/Resources/DWARF/pipex | Bin 11776 -> 0 bytes pipex_bonus.dSYM/Contents/Info.plist | 20 ---- .../Contents/Resources/DWARF/pipex_bonus | Bin 12576 -> 0 bytes srcs/pipex.c | 70 ------------ srcs/pipex_bonus.c | 108 ------------------ srcs/utils.c | 101 ---------------- srcs/utils_bonus.c | 67 ----------- 57 files changed, 2202 deletions(-) delete mode 100644 Makefile delete mode 100644 README.md delete mode 100644 includes/pipex.h delete mode 100644 lib/libft/Makefile delete mode 100644 lib/libft/ft_atof.c delete mode 100644 lib/libft/ft_atoi.c delete mode 100644 lib/libft/ft_bzero.c delete mode 100644 lib/libft/ft_calloc.c delete mode 100644 lib/libft/ft_isalnum.c delete mode 100644 lib/libft/ft_isalpha.c delete mode 100644 lib/libft/ft_isascii.c delete mode 100644 lib/libft/ft_isdigit.c delete mode 100644 lib/libft/ft_isprint.c delete mode 100644 lib/libft/ft_itoa.c delete mode 100644 lib/libft/ft_lstadd_back.c delete mode 100644 lib/libft/ft_lstadd_front.c delete mode 100644 lib/libft/ft_lstclear.c delete mode 100644 lib/libft/ft_lstdelone.c delete mode 100644 lib/libft/ft_lstiter.c delete mode 100644 lib/libft/ft_lstlast.c delete mode 100644 lib/libft/ft_lstmap.c delete mode 100644 lib/libft/ft_lstnew.c delete mode 100644 lib/libft/ft_lstsize.c delete mode 100644 lib/libft/ft_memccpy.c delete mode 100644 lib/libft/ft_memchr.c delete mode 100644 lib/libft/ft_memcmp.c delete mode 100644 lib/libft/ft_memcpy.c delete mode 100644 lib/libft/ft_memmove.c delete mode 100644 lib/libft/ft_memset.c delete mode 100644 lib/libft/ft_putchar_fd.c delete mode 100644 lib/libft/ft_putendl_fd.c delete mode 100644 lib/libft/ft_putnbr_fd.c delete mode 100644 lib/libft/ft_putstr_fd.c delete mode 100644 lib/libft/ft_split.c delete mode 100644 lib/libft/ft_strchr.c delete mode 100644 lib/libft/ft_strdup.c delete mode 100644 lib/libft/ft_strjoin.c delete mode 100644 lib/libft/ft_strlcat.c delete mode 100644 lib/libft/ft_strlcpy.c delete mode 100644 lib/libft/ft_strlen.c delete mode 100644 lib/libft/ft_strmapi.c delete mode 100644 lib/libft/ft_strncmp.c delete mode 100644 lib/libft/ft_strnstr.c delete mode 100644 lib/libft/ft_strrchr.c delete mode 100644 lib/libft/ft_strtrim.c delete mode 100644 lib/libft/ft_substr.c delete mode 100644 lib/libft/ft_tolower.c delete mode 100644 lib/libft/ft_toupper.c delete mode 100644 lib/libft/libft.h delete mode 100644 pipex.dSYM/Contents/Info.plist delete mode 100644 pipex.dSYM/Contents/Resources/DWARF/pipex delete mode 100644 pipex_bonus.dSYM/Contents/Info.plist delete mode 100644 pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus delete mode 100644 srcs/pipex.c delete mode 100644 srcs/pipex_bonus.c delete mode 100644 srcs/utils.c delete mode 100644 srcs/utils_bonus.c diff --git a/Makefile b/Makefile deleted file mode 100644 index a73dbeb..0000000 --- a/Makefile +++ /dev/null @@ -1,65 +0,0 @@ -# **************************************************************************** # -# # -# ::: :::::::: # -# Makefile :+: :+: :+: # -# +:+ +:+ +:+ # -# By: mabbas +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2022/12/23 01:03:33 by mabbas #+# #+# # -# Updated: 2022/12/23 03:05:17 by mabbas ### ########.fr # -# # -# **************************************************************************** # - - - -PROG = pipex -PROG_B = pipex_bonus - -SRCS = srcs/pipex.c srcs/utils.c -OBJS = ${SRCS:.c=.o} -MAIN = srcs/pipex.c - -SRCS_B = srcs/pipex_bonus.c srcs/utils.c srcs/utils_bonus.c -OBJS_B = ${SRCS_B:.c=.o} -MAIN_B = srcs/pipex_bonus.c - -HEADER = -Iincludes - -CC = gcc -CFLAGS = -Wall -Wextra -Werror -g - -.c.o: %.o : %.c - @gcc ${CFLAGS} ${HEADER} -c $< -o $(<:.c=.o) - -all: ${PROG} - -${PROG}: ${OBJS} - @echo "\033[33m----Compiling libft---" - @make re -C ./lib/libft - @$(CC) ${OBJS} -Llib/libft -lft -o ${PROG} - @echo "\033[32mPipex Compiled! (\033[31m\033[32m_\033[31m\033[32m)\n" - - -bonus: ${PROG_B} - -${PROG_B}: ${OBJS_B} - @echo "\033[33m----Compiling lib----" - @make re -C ./lib/libft - @$(CC) ${OBJS_B} -Llib/libft -lft -o pipex - @echo "\033[32mPipex Bonus Compiled!(\033[31m\033[32m_\033[31m\033[32m)\n" - -clean: - @make clean -C ./lib/libft - @rm -f ${OBJS} ${OBJS_B} - -fclean: clean - @make fclean -C ./lib/libft - @rm -f $(NAME) - @rm -f ${PROG} - @echo "\n\033[31mDeleting EVERYTHING! ⌐(ಠ۾ಠ)¬\n" - -re: fclean all - -re_bonus: fclean bonus - -.PHONY: all clean fclean re re_bonus bonus \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 9b86012..0000000 --- a/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Get_Next_Line_42 -This project is about programming a function that returns a line read from a file descriptor - - -A Good Guide regarding the concept is given by @Raspurrin Life gets easier:xD!![42Guides](https://github.com/Raspurrin/42Guides/blob/main/get_next_line/get_next_line.md) - -I used a different implementation idea with Intrusive Linked List. Although it is not required but it helped me learn how to implement linked list. -(Its not about showing off though -->> Just was fedup with the previous implementation where I had timeouts _-_ - -## **A small visual of the concept:** ## - -image - -## Intrusive Link List: - -image - -## Advantages of Array Approach in this case : - -image - - For more detailed idea.. Look into this: [Data Structure the lord](https://www.data-structures-in-practice.com/intrusive-linked-lists/) - - - - One more thing : This is also faster. Have to do a benchmark test though. If anybody knows that please do and let me know ? - - -##Things/tools/resources I used while doing this : - -- **Debugging ( Use lldb or usual gdb)** - Resource Link: A great resource from a fellow 42 Student from another campus(this gem was found in the slack 42 Channel. Its a gem of resources and peer learning. Use it wisely : - - [Debug Me !!](https://sebastienwae.github.io/debugging-42/) ` - -- **Intutive sense about Memory Allocation** (still learning) - Malloc or Calloc -->> - [Stackoverflow !!](https://stackoverflow.com/questions/1538420/difference-between-malloc-and-calloc) - -- Static Variables and Allocating large memory to it .. :xD (You get Timeout( !!! ) -->:xD) - _
**Why allocating large memory in the stack with static variable not worth it ?**

- _If you are allocating a big chunk of memory as a static variable inside a function, that memory will be allocated to your software until you exit from it. It is completely valid to do so if you are actively using that memory, like get_next_line. But if you are not using the memory you allocated, then your software will misuse the resources. I know that Mac will recognises this misuse and simply swap your memory usage to the hard drive, which causes your software to slow down._ ----- @Ali, Fellow Peer from 42 Wolfsburg -

-
- --->> Last but not least : Learn from Evaluations -- <<<< - - diff --git a/includes/pipex.h b/includes/pipex.h deleted file mode 100644 index c7d4c3f..0000000 --- a/includes/pipex.h +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipex.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/08/02 09:58:35 by gcollet #+# #+# */ -/* Updated: 2022/12/23 02:31:56 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef PIPEX_H -# define PIPEX_H - -# include -# include -# include -# include -# include -# include -# include "../lib/libft/libft.h" - -/* Mandatory functions */ -void error(void); -char *find_path(char *cmd, char **envp); -void execute(char *argv, char **envp); -int get_next_line(char **line); -/* Bonus functions */ -int open_file(char *argv, int i); -void usage(void); - -#endif diff --git a/lib/libft/Makefile b/lib/libft/Makefile deleted file mode 100644 index e4388ac..0000000 --- a/lib/libft/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# **************************************************************************** # -# # -# ::: :::::::: # -# Makefile :+: :+: :+: # -# +:+ +:+ +:+ # -# By: mabbas +#+ +:+ +#+ # -# +#+#+#+#+#+ +#+ # -# Created: 2022/12/23 00:46:49 by mabbas #+# #+# # -# Updated: 2022/12/23 00:46:49 by mabbas ### ########.fr # -# # -# **************************************************************************** # - - -NAME = libft.a -SRCS = ft_isalnum.c ft_isdigit.c ft_memccpy.c ft_memcpy.c ft_putchar_fd.c\ - ft_putstr_fd.c ft_strdup.c ft_strlcpy.c ft_strncmp.c ft_strtrim.c\ - ft_toupper.c ft_bzero.c ft_isalpha.c ft_isprint.c ft_memchr.c\ - ft_memmove.c ft_putendl_fd.c ft_split.c ft_strjoin.c ft_strlen.c\ - ft_strnstr.c ft_substr.c ft_atoi.c ft_calloc.c ft_isascii.c ft_itoa.c\ - ft_memcmp.c ft_memset.c ft_putnbr_fd.c ft_strchr.c ft_strlcat.c\ - ft_strmapi.c ft_strrchr.c ft_tolower.c ft_atof.c -OBJS = ${SRCS:.c=.o} -SRCS_B = 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 -OBJS_B = ${SRCS_B:.c=.o} -HEADER = ./ - -CC = gcc -CFLAGS = -Wall -Wextra -Werror - -.c.o: %.o : %.c - @${CC} ${CFLAGS} -I ${HEADER} -c $< -o $(<:.c=.o) - -$(NAME): ${OBJS} - @ar rc ${NAME} ${OBJS} - -all: ${NAME} - -bonus: ${OBJS} ${OBJS_B} - @ar rc ${NAME} ${OBJS} ${OBJS_B} - -clean: - @rm -f ${OBJS} ${OBJS_B} - -fclean: clean - @rm -f $(NAME) - -re: fclean all - -.PHONY: all clean fclean re bonus \ No newline at end of file diff --git a/lib/libft/ft_atof.c b/lib/libft/ft_atof.c deleted file mode 100644 index 728290e..0000000 --- a/lib/libft/ft_atof.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atof.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/07/12 15:38:52 by gcollet #+# #+# */ -/* Updated: 2021/07/28 16:25:22 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -double ft_atof(const char *str) -{ - double res; - double res2; - char *c; - int len; - - c = (char *)str; - res = (double)ft_atoi(c); - while (*c && *c != '.') - c++; - if (*c == '.') - c++; - res2 = (double)ft_atoi(c); - len = ft_strlen(c); - while (len--) - res2 /= 10; - if (res >= 0) - return (res + res2); - else - return (res + -res2); -} diff --git a/lib/libft/ft_atoi.c b/lib/libft/ft_atoi.c deleted file mode 100644 index 79f86ca..0000000 --- a/lib/libft/ft_atoi.c +++ /dev/null @@ -1,44 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_atoi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/08 11:53:08 by gcollet #+# #+# */ -/* Updated: 2021/05/12 17:33:21 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction atoi() convertit le début de la chaîne pointée par nptr en -entier de type int . */ -/* VALEUR RENVOYÉE : Le résultat de la conversion. */ - -#include "libft.h" - -int ft_atoi(const char *nptr) -{ - long num; - int sign; - int i; - - i = 0; - sign = 1; - num = 0; - while ((nptr[i] >= '\t' && nptr[i] <= '\r') || nptr[i] == ' ') - nptr++; - if (nptr[i] == '-') - sign = sign * -1; - if (nptr[i] == '+' || nptr[i] == '-') - nptr++; - while (nptr[i] >= '0' && nptr[i] <= '9') - { - num = (num * 10) + nptr[i] - '0'; - nptr++; - if (num * sign > 2147483647) - return (-1); - if (num * sign < -2147483648) - return (0); - } - return (num * sign); -} diff --git a/lib/libft/ft_bzero.c b/lib/libft/ft_bzero.c deleted file mode 100644 index 1ec00d6..0000000 --- a/lib/libft/ft_bzero.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_bzero.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/05 15:00:08 by gcollet #+# #+# */ -/* Updated: 2021/05/08 12:41:53 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction bzero() met à 0 (octets contenant « \0 ») les n premiers octets -du bloc pointé par s. */ -/* VALEUR RENVOYÉE : Aucune. */ - -#include "libft.h" - -void ft_bzero(void *s, size_t n) -{ - char *str; - - str = (char *)s; - while (n) - { - *str = 0; - str++; - n--; - } -} diff --git a/lib/libft/ft_calloc.c b/lib/libft/ft_calloc.c deleted file mode 100644 index 6d7f9b0..0000000 --- a/lib/libft/ft_calloc.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_calloc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/08 12:17:37 by gcollet #+# #+# */ -/* Updated: 2021/05/12 15:28:51 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* calloc() alloue la mémoire necessaire pour un tableau de nmemb éléments de -taille size octets, et renvoie un pointeur vers la mémoire allouée. Cette zone -est remplie avec des zéros. Si nmemb ou size vaut 0, calloc() renvoie soit -NULL, soit un pointeur unique qui pourra être passé ultérieurement à free() -avec succès. */ - -#include "libft.h" - -void *ft_calloc(size_t nmemb, size_t size) -{ - char *ptr; - - if (nmemb == 0 || size == 0) - { - nmemb = 1; - size = 1; - } - ptr = malloc (nmemb * size); - if (ptr) - ft_bzero(ptr, nmemb * size); - return (ptr); -} diff --git a/lib/libft/ft_isalnum.c b/lib/libft/ft_isalnum.c deleted file mode 100644 index 245a76e..0000000 --- a/lib/libft/ft_isalnum.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalnum.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 16:21:34 by gcollet #+# #+# */ -/* Updated: 2021/05/06 16:42:35 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Vérifie si l'on a un caractère alphanumérique. */ -/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la -catégorie testée, et zéro sinon */ - -#include "libft.h" - -int ft_isalnum(int c) -{ - if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') - || (c >= '0' && c <= '9')) - { - return (1); - } - return (0); -} diff --git a/lib/libft/ft_isalpha.c b/lib/libft/ft_isalpha.c deleted file mode 100644 index 97de5e2..0000000 --- a/lib/libft/ft_isalpha.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isalpha.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 15:08:39 by gcollet #+# #+# */ -/* Updated: 2021/05/06 15:45:10 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Vérifie si l'on a un caractère alphabétique. */ -/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la -catégorie testée, et zéro sinon */ - -#include "libft.h" - -int ft_isalpha(int c) -{ - if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) - return (1); - return (0); -} diff --git a/lib/libft/ft_isascii.c b/lib/libft/ft_isascii.c deleted file mode 100644 index b049c10..0000000 --- a/lib/libft/ft_isascii.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isascii.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 10:04:18 by gcollet #+# #+# */ -/* Updated: 2021/05/07 10:25:01 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Vérifie si c est un unsigned char sur 7 bits, entrant dans le jeu de -caractères ASCII. */ -/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la -catégorie testée, et zéro sinon */ - -#include "libft.h" - -int ft_isascii(int c) -{ - if (c >= 0 && c <= 127) - return (1); - return (0); -} diff --git a/lib/libft/ft_isdigit.c b/lib/libft/ft_isdigit.c deleted file mode 100644 index e3714df..0000000 --- a/lib/libft/ft_isdigit.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isdigit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 16:04:28 by gcollet #+# #+# */ -/* Updated: 2021/05/12 10:09:29 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Vérifie si l'on a un chiffre (0 à 9). */ -/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la -catégorie testée, et zéro sinon */ - -#include "libft.h" - -int ft_isdigit(int c) -{ - if (c >= '0' && c <= '9') - return (1); - return (0); -} diff --git a/lib/libft/ft_isprint.c b/lib/libft/ft_isprint.c deleted file mode 100644 index 520492a..0000000 --- a/lib/libft/ft_isprint.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_isprint.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 10:27:30 by gcollet #+# #+# */ -/* Updated: 2021/05/07 10:33:03 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Vérifie s'il s'agit d'un caractère imprimable, y compris l'espace. */ -/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la -catégorie testée, et zéro sinon */ - -#include "libft.h" - -int ft_isprint(int c) -{ - if (c >= 32 && c <= 126) - return (1); - return (0); -} diff --git a/lib/libft/ft_itoa.c b/lib/libft/ft_itoa.c deleted file mode 100644 index f41e9fc..0000000 --- a/lib/libft/ft_itoa.c +++ /dev/null @@ -1,95 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_itoa.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/10 17:26:08 by gcollet #+# #+# */ -/* Updated: 2021/05/13 15:57:51 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Alloue (avec malloc) et retourne une chaine de caractères représentant -l’integer reçu en argument .Les nombres négatifs doivent être gérés. */ -/* La chaine de caractères représentant l’integer. NULL si l’allocation -échoue. */ - -#include "libft.h" - -static char *ft_swap(char *tab, int size) -{ - int temp; - int i; - int j; - - i = 0; - j = size - 1; - if (tab[i] == '-') - i++; - while (i < j) - { - temp = tab[i]; - tab[i] = tab[j]; - tab[j] = temp; - i++; - j--; - } - return (tab); -} - -static char *ft_is_zero(char *tab) -{ - int i; - - i = 0; - tab[i++] = '0'; - tab[i] = '\0'; - return (tab); -} - -static int ft_len(int c) -{ - int len; - - len = 1; - if (c >= 0) - c *= -1; - else - len++; - while (c <= -10) - { - c /= 10; - len++; - } - return (len); -} - -char *ft_itoa(int n) -{ - char *tab; - int i; - long l_n; - int len; - - i = 0; - len = ft_len(n); - l_n = n; - tab = (char *)malloc(sizeof(char) * (len + 1)); - if (!tab) - return (0); - if (l_n == 0) - return (ft_is_zero(tab)); - if (l_n < 0) - { - l_n = -l_n; - tab[i++] = '-'; - } - while (l_n != 0) - { - tab[i++] = (l_n % 10) + '0'; - l_n /= 10; - } - tab [i] = '\0'; - return (ft_swap (tab, ft_strlen(tab))); -} diff --git a/lib/libft/ft_lstadd_back.c b/lib/libft/ft_lstadd_back.c deleted file mode 100644 index 2c70388..0000000 --- a/lib/libft/ft_lstadd_back.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_back.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 11:10:13 by gcollet #+# #+# */ -/* Updated: 2021/05/20 11:48:50 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Ajoute l’élément new à la fin de la liste. */ - -#include "libft.h" - -void ft_lstadd_back(t_list **alst, t_list *new) -{ - t_list *temp; - - if (*alst == NULL) - *alst = new; - else - { - temp = ft_lstlast(*(alst)); - temp->next = new; - } -} diff --git a/lib/libft/ft_lstadd_front.c b/lib/libft/ft_lstadd_front.c deleted file mode 100644 index 261e2e4..0000000 --- a/lib/libft/ft_lstadd_front.c +++ /dev/null @@ -1,21 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstadd_front.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 09:29:13 by gcollet #+# #+# */ -/* Updated: 2021/05/20 10:49:20 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Ajoute l’élément ’new’ au début de la liste. */ - -#include "libft.h" - -void ft_lstadd_front(t_list **alst, t_list *new) -{ - new->next = *alst; - *alst = new; -} diff --git a/lib/libft/ft_lstclear.c b/lib/libft/ft_lstclear.c deleted file mode 100644 index 9ff9406..0000000 --- a/lib/libft/ft_lstclear.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstclear.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 13:17:48 by gcollet #+# #+# */ -/* Updated: 2021/05/20 15:04:09 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Supprime et libère la mémoire de l’élément passé en paramètre, et de tous -les élements qui suivent, à l’aide de del et de free(3) Enfin, le pointeur -initial doit être mis à NULL. */ - -#include "libft.h" - -void ft_lstclear(t_list **lst, void (*del)(void*)) -{ - t_list *temp; - - if (lst == NULL) - return ; - while (*lst) - { - temp = (*lst)->next; - ft_lstdelone(*lst, del); - (*lst) = temp; - } -} diff --git a/lib/libft/ft_lstdelone.c b/lib/libft/ft_lstdelone.c deleted file mode 100644 index 5bc96cb..0000000 --- a/lib/libft/ft_lstdelone.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstdelone.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 11:52:19 by gcollet #+# #+# */ -/* Updated: 2021/05/20 13:45:11 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Libère la mémoire de l’élément passé en argument en utilisant la fonction -del puis avec free(3). La mémoire de next ne doit pas être free. */ - -#include "libft.h" - -void ft_lstdelone(t_list *lst, void (*del)(void*)) -{ - if (lst == NULL) - return ; - if (lst->content) - { - del(lst->content); - free(lst); - } -} diff --git a/lib/libft/ft_lstiter.c b/lib/libft/ft_lstiter.c deleted file mode 100644 index d619292..0000000 --- a/lib/libft/ft_lstiter.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstiter.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 13:40:10 by gcollet #+# #+# */ -/* Updated: 2021/05/20 15:04:34 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Itère sur la list lst et applique la fonction f au contenu chaque élément. */ - -#include "libft.h" - -void ft_lstiter(t_list *lst, void (*f)(void *)) -{ - while (lst) - { - f(lst->content); - lst = lst->next; - } -} diff --git a/lib/libft/ft_lstlast.c b/lib/libft/ft_lstlast.c deleted file mode 100644 index dc9202b..0000000 --- a/lib/libft/ft_lstlast.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstlast.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 10:48:37 by gcollet #+# #+# */ -/* Updated: 2021/05/20 11:07:54 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Renvoie le dernier élément de la liste. */ - -#include "libft.h" - -t_list *ft_lstlast(t_list *lst) -{ - if (lst) - { - while (lst->next) - lst = lst->next; - } - return (lst); -} diff --git a/lib/libft/ft_lstmap.c b/lib/libft/ft_lstmap.c deleted file mode 100644 index 2466f7c..0000000 --- a/lib/libft/ft_lstmap.c +++ /dev/null @@ -1,50 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstmap.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 13:50:09 by gcollet #+# #+# */ -/* Updated: 2021/05/20 15:16:58 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Itère sur la liste lst et applique la fonction f au contenu de chaque -élément. Crée une nouvelle liste résultant des applications successives de f. -La fonction del est la pour detruire le contenu d un element si necessaire */ - -#include "libft.h" - -static t_list *ft_newlst(t_list *new_lst, t_list *lst, void *(*f)(void *) - , void (*del)(void *)) -{ - t_list *add; - - add = ft_lstnew(f(lst->content)); - if (add == NULL) - { - ft_lstclear(&new_lst, del); - return (NULL); - } - ft_lstadd_back(&new_lst, add); - return (new_lst); -} - -t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) -{ - t_list *new_lst; - - if (lst == NULL) - return (NULL); - new_lst = ft_lstnew(f(lst->content)); - if (new_lst == NULL) - return (NULL); - lst = lst->next; - while (lst) - { - ft_newlst(new_lst, lst, f, del); - lst = lst->next; - } - return (new_lst); -} diff --git a/lib/libft/ft_lstnew.c b/lib/libft/ft_lstnew.c deleted file mode 100644 index a257ede..0000000 --- a/lib/libft/ft_lstnew.c +++ /dev/null @@ -1,30 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstnew.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 08:21:11 by gcollet #+# #+# */ -/* Updated: 2021/05/20 11:42:33 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Alloue (avec malloc) et renvoie un nouvel élément. La variable content est -initialisée à l’aide de la valeur du paramètre content. La variable ’next’ est -initialisée à NULL. */ -/* Valeur de retour: Le nouvel element */ - -#include "libft.h" - -t_list *ft_lstnew(void *content) -{ - t_list *list; - - list = malloc(sizeof(*list)); - if (list == NULL) - return (NULL); - list->content = content; - list->next = NULL; - return (list); -} diff --git a/lib/libft/ft_lstsize.c b/lib/libft/ft_lstsize.c deleted file mode 100644 index 75ae237..0000000 --- a/lib/libft/ft_lstsize.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstsize.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/20 10:10:24 by gcollet #+# #+# */ -/* Updated: 2021/05/20 10:50:27 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Compte le nombre d’éléments de la liste. */ - -#include "libft.h" - -int ft_lstsize(t_list *lst) -{ - int i; - - i = 0; - while (lst) - { - lst = lst->next; - i++; - } - return (i); -} diff --git a/lib/libft/ft_memccpy.c b/lib/libft/ft_memccpy.c deleted file mode 100644 index 7c95847..0000000 --- a/lib/libft/ft_memccpy.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memccpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 10:03:50 by gcollet #+# #+# */ -/* Updated: 2021/05/11 13:52:27 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction memccpy() copie au plus n octets de la zone mémoire src vers -la zone mémoire dest, s'arrêtant dès qu'elle rencontre le caractère c. */ -/* La fonction memccpy() renvoie un pointeur sur le caractère immédiatement -après c dans la zone dest, ou NULL si c n'a pas été trouvé dans les n premiers -caractères de src. */ - -#include "libft.h" - -void *ft_memccpy(void *dest, const void *src, int c, size_t n) -{ - size_t i; - unsigned char *str_dest; - unsigned char *str_src; - - str_dest = (unsigned char *)dest; - str_src = (unsigned char *)src; - i = 0; - while (i < n) - { - str_dest[i] = str_src[i]; - if (str_dest[i] == (unsigned char)c) - return (dest + i + 1); - i++; - } - return (NULL); -} diff --git a/lib/libft/ft_memchr.c b/lib/libft/ft_memchr.c deleted file mode 100644 index e40c94c..0000000 --- a/lib/libft/ft_memchr.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 11:23:30 by gcollet #+# #+# */ -/* Updated: 2021/05/11 13:18:41 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction memchr() examine les n premiers octets de la zone mémoire -pointée par s à la recherche du caractère c. Le premier octet correspondant à c -(interprété comme un unsigned char) arrête l'opération. */ -/* La fonction memchr() renvoie un pointeur sur l'octet correspondant, ou NULL -si le caractère n'est pas présent dans la zone de mémoire concernée. */ - -#include "libft.h" - -void *ft_memchr(const void *s, int c, size_t n) -{ - size_t i; - unsigned char *str_s; - - str_s = (unsigned char *)s; - i = 0; - while (i < n) - { - if (str_s[i] == (unsigned char)c) - return (str_s + i); - i++; - } - return (NULL); -} diff --git a/lib/libft/ft_memcmp.c b/lib/libft/ft_memcmp.c deleted file mode 100644 index d17a009..0000000 --- a/lib/libft/ft_memcmp.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 11:49:42 by gcollet #+# #+# */ -/* Updated: 2021/05/12 16:49:27 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction memcmp() compare les n premiers octets des zones mémoire s1 et -s2. Elle renvoie un entier inférieur, égal, ou supérieur à zéro, si s1 est -respectivement inférieure, égale ou supérieur à s2. */ -/* La fonction memcmp() renvoie un entier négatif, nul ou positif si les n -premiers octets de s1 sont respectivement inférieurs, égaux ou supérieurs aux n -premiers octets de s2. */ - -#include "libft.h" - -int ft_memcmp(const void *s1, const void *s2, size_t n) -{ - unsigned int i; - unsigned char *str_s1; - unsigned char *str_s2; - - i = 0; - str_s1 = (unsigned char *)s1; - str_s2 = (unsigned char *)s2; - if (n == 0) - return (0); - while (str_s1[i] == str_s2[i] && i < n - 1) - { - i++; - } - return (str_s1[i] - str_s2[i]); -} diff --git a/lib/libft/ft_memcpy.c b/lib/libft/ft_memcpy.c deleted file mode 100644 index 84f9c3e..0000000 --- a/lib/libft/ft_memcpy.c +++ /dev/null @@ -1,33 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/05 11:18:02 by gcollet #+# #+# */ -/* Updated: 2021/05/13 13:17:42 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction memcpy() copie n octets depuis la zone mémoire src vers la zone -mémoire dest. Les deux zones ne doivent pas se chevaucher. Si c'est le cas, -utilisez plutôt memmove(). */ -/* La fonction memcpy() renvoie un pointeur sur dest. */ - -#include "libft.h" - -void *ft_memcpy(void *dest, const void *src, size_t n) -{ - size_t i; - - i = 0; - if (!dest && !src) - return (NULL); - while (i < n) - { - ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; - i++; - } - return (dest); -} diff --git a/lib/libft/ft_memmove.c b/lib/libft/ft_memmove.c deleted file mode 100644 index 8920416..0000000 --- a/lib/libft/ft_memmove.c +++ /dev/null @@ -1,37 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memmove.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 10:37:42 by gcollet #+# #+# */ -/* Updated: 2022/02/06 10:00:40 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction memmove() copie n octets depuis la zone mémoire src vers la zone -mémoire dest. Les deux zones peuvent se chevaucher : la copie se passe comme -si les octets de src étaient d'abord copiés dans une zone temporaire qui ne -chevauche ni src ni dest, et les octets sont ensuite copiés de la zone -temporaire vers dest. */ -/* La fonction memmove() renvoie un pointeur sur dest. */ - -#include "libft.h" - -void *ft_memmove(void *dest, const void *src, size_t n) -{ - char *str_dest; - char *str_src; - - str_dest = (char *)dest; - str_src = (char *)src; - if (str_dest > str_src) - { - while (n--) - str_dest[n] = str_src[n]; - } - else if (str_dest < str_src) - ft_memcpy(dest, src, n); - return (dest); -} diff --git a/lib/libft/ft_memset.c b/lib/libft/ft_memset.c deleted file mode 100644 index 51dcd73..0000000 --- a/lib/libft/ft_memset.c +++ /dev/null @@ -1,31 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_memset.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/05 10:19:52 by gcollet #+# #+# */ -/* Updated: 2021/07/28 14:09:52 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction memset() remplit les n premiers octets de la zone mémoire -pointée par s avec l'octet c. */ -/* La fonction memset() renvoie un pointeur sur la zone mémoire s. */ - -#include "libft.h" - -void *ft_memset(void *s, int c, size_t n) -{ - char *str; - - str = s; - while (n) - { - *str = (unsigned char)c; - str++; - n--; - } - return (s); -} diff --git a/lib/libft/ft_putchar_fd.c b/lib/libft/ft_putchar_fd.c deleted file mode 100644 index 70ce152..0000000 --- a/lib/libft/ft_putchar_fd.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putchar_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/11 11:01:32 by gcollet #+# #+# */ -/* Updated: 2021/05/11 12:00:30 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Écrit le caractère ’c’ sur le file descriptor donné. */ - -#include "libft.h" - -void ft_putchar_fd(char c, int fd) -{ - write (fd, &c, 1); -} diff --git a/lib/libft/ft_putendl_fd.c b/lib/libft/ft_putendl_fd.c deleted file mode 100644 index e1a3a2a..0000000 --- a/lib/libft/ft_putendl_fd.c +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putendl_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/11 11:44:55 by gcollet #+# #+# */ -/* Updated: 2021/05/13 16:00:14 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Écrit La chaine de caractères ’s’ sur le file descriptor donné, suivie -d’un retour à la ligne. */ - -#include "libft.h" - -void ft_putendl_fd(char *s, int fd) -{ - if (!s) - return ; - while (*s) - { - ft_putchar_fd(*s, fd); - s++; - } - ft_putchar_fd('\n', fd); -} diff --git a/lib/libft/ft_putnbr_fd.c b/lib/libft/ft_putnbr_fd.c deleted file mode 100644 index 6ab0db8..0000000 --- a/lib/libft/ft_putnbr_fd.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putnbr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/11 11:51:46 by gcollet #+# #+# */ -/* Updated: 2021/05/11 11:59:00 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Écrit l’integer ’n’ sur le file descriptor donné. */ - -#include "libft.h" - -void ft_putnbr_fd(int n, int fd) -{ - long i; - - i = n; - if (i < 0) - { - ft_putchar_fd('-', fd); - i = i * -1; - } - if (i > 9) - { - ft_putnbr_fd(i / 10, fd); - ft_putnbr_fd(i % 10, fd); - } - else - { - ft_putchar_fd(i + 48, fd); - } -} diff --git a/lib/libft/ft_putstr_fd.c b/lib/libft/ft_putstr_fd.c deleted file mode 100644 index 95742f7..0000000 --- a/lib/libft/ft_putstr_fd.c +++ /dev/null @@ -1,26 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_putstr_fd.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/11 11:17:23 by gcollet #+# #+# */ -/* Updated: 2021/05/13 15:59:39 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Écrit la chaine de caractères ’s’ sur le file descriptor donné. */ - -#include "libft.h" - -void ft_putstr_fd(char *s, int fd) -{ - if (!s) - return ; - while (*s) - { - ft_putchar_fd(*s, fd); - s++; - } -} diff --git a/lib/libft/ft_split.c b/lib/libft/ft_split.c deleted file mode 100644 index e8fcb5b..0000000 --- a/lib/libft/ft_split.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_split.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/10 14:59:30 by gcollet #+# #+# */ -/* Updated: 2021/05/13 15:11:03 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Alloue (avec malloc) et retourne un tableau de chaines de caracteres obtenu -en séparant ’s’ à l’aide du caractère ’c’, utilisé comme délimiteur. Le tableau -doit être terminé par NULL. */ -/* Le tableau de nouvelles chaines de caractères, résultant du découpage. -NULL si l’allocation échoue. */ - -#include "libft.h" - -static char **ft_malloc_error(char **tab) -{ - size_t i; - - i = 0; - while (tab[i]) - { - free(tab[i]); - i++; - } - free(tab); - return (NULL); -} - -static size_t ft_nb_words(char const *s, char c) -{ - size_t i; - size_t nb_words; - - if (!s[0]) - return (0); - i = 0; - nb_words = 0; - while (s[i] && s[i] == c) - i++; - while (s[i]) - { - if (s[i] == c) - { - nb_words++; - while (s[i] && s[i] == c) - i++; - continue ; - } - i++; - } - if (s[i - 1] != c) - nb_words++; - return (nb_words); -} - -static void ft_get_next_word(char **next_word, size_t *next_word_len, char c) -{ - size_t i; - - *next_word += *next_word_len; - *next_word_len = 0; - i = 0; - while (**next_word && **next_word == c) - (*next_word)++; - while ((*next_word)[i]) - { - if ((*next_word)[i] == c) - return ; - (*next_word_len)++; - i++; - } -} - -char **ft_split(char const *s, char c) -{ - char **tab; - char *next_word; - size_t next_word_len; - size_t i; - - if (!s) - return (NULL); - tab = (char **)malloc(sizeof(char *) * (ft_nb_words(s, c) + 1)); - if (!tab) - return (NULL); - i = 0; - next_word = (char *)s; - next_word_len = 0; - while (i < ft_nb_words(s, c)) - { - ft_get_next_word(&next_word, &next_word_len, c); - tab[i] = (char *)malloc(sizeof(char) * (next_word_len + 1)); - if (!tab[i]) - return (ft_malloc_error(tab)); - ft_strlcpy(tab[i], next_word, next_word_len + 1); - i++; - } - tab[i] = NULL; - return (tab); -} diff --git a/lib/libft/ft_strchr.c b/lib/libft/ft_strchr.c deleted file mode 100644 index c5a6730..0000000 --- a/lib/libft/ft_strchr.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 11:06:54 by gcollet #+# #+# */ -/* Updated: 2021/05/11 14:23:26 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction strchr() renvoie un pointeur sur la première occurrence du -caractère c dans la chaîne s. */ -/* La fonction strchr() renvoie un pointeur sur le caractère correspondant, -ou NULL si le caractère n'a pas été trouvé. */ - -#include "libft.h" - -char *ft_strchr(const char *s, int c) -{ - char *str; - - str = (char *)s; - while (*str != c) - { - if (*str == '\0') - return (NULL); - str++; - } - return (str); -} diff --git a/lib/libft/ft_strdup.c b/lib/libft/ft_strdup.c deleted file mode 100644 index c1972a4..0000000 --- a/lib/libft/ft_strdup.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strdup.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/08 12:51:40 by gcollet #+# #+# */ -/* Updated: 2021/05/13 16:40:52 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction strdup() renvoie un pointeur sur une nouvelle chaîne de -caractères qui est dupliquée depuis s. La mémoire occupée par cette nouvelle -chaîne est obtenue en appelant malloc(), et peut (doit) donc être libérée avec -free().*/ -/* La fonction strdup() renvoie un pointeur sur la chaîne dupliquée, ou NULL -s'il n'y avait pas assez de mémoire. */ - -#include "libft.h" - -char *ft_strdup(const char *s) -{ - char *tab; - int i; - - i = 0; - tab = (char *)malloc(sizeof(*tab) * (ft_strlen(s) + 1)); - if (!tab) - return (NULL); - while (s[i]) - { - tab[i] = s[i]; - i++; - } - tab[i] = '\0'; - return (tab); -} diff --git a/lib/libft/ft_strjoin.c b/lib/libft/ft_strjoin.c deleted file mode 100644 index dc416e0..0000000 --- a/lib/libft/ft_strjoin.c +++ /dev/null @@ -1,45 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strjoin.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/10 11:42:29 by gcollet #+# #+# */ -/* Updated: 2021/05/13 13:20:08 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Alloue (avec malloc) et retourne une nouvelle chaine, résultat de la -concaténation de s1 et s2. */ -/* La nouvelle chaine de caractères. NULL si l’allocation échoue. */ - -#include "libft.h" - -char *ft_strjoin(char const *s1, char const *s2) -{ - char *tab; - int i; - int j; - - i = 0; - j = 0; - if (!s1 || !s2) - return (NULL); - tab = (char *)malloc(sizeof(*tab) * (ft_strlen(s1) + ft_strlen(s2)) + 1); - if (tab == 0) - return (NULL); - while (s1[i]) - { - tab[i] = s1[i]; - i++; - } - while (s2[j]) - { - tab[i] = s2[j]; - j++; - i++; - } - tab[i] = '\0'; - return (tab); -} diff --git a/lib/libft/ft_strlcat.c b/lib/libft/ft_strlcat.c deleted file mode 100644 index bdbe4c7..0000000 --- a/lib/libft/ft_strlcat.c +++ /dev/null @@ -1,41 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcat.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 14:49:15 by gcollet #+# #+# */ -/* Updated: 2021/05/17 10:15:29 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* The strlcat() function appends the NUL-terminated string src to the end of -dst. It will append at most size - strlen(dst) - 1 bytes, NUL-terminating the -result. */ -/* The strlcat() functions return the total length of the string they tried -to create that means the initial length of dst plus the length of src. */ - -#include "libft.h" - -size_t ft_strlcat(char *dst, const char *src, size_t size) -{ - size_t n; - size_t m; - size_t p; - - m = 0; - n = ft_strlen(dst); - p = ft_strlen(src); - if (size == 0) - return (p); - while ((src[m] != '\0') && ((n + m) < (size - 1))) - { - dst[n + m] = src[m]; - m++; - } - dst[n + m] = '\0'; - if (size > n) - return (n + p); - return (size + p); -} diff --git a/lib/libft/ft_strlcpy.c b/lib/libft/ft_strlcpy.c deleted file mode 100644 index 0d57e17..0000000 --- a/lib/libft/ft_strlcpy.c +++ /dev/null @@ -1,39 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlcpy.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 13:31:38 by gcollet #+# #+# */ -/* Updated: 2021/05/11 14:40:33 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* The strlcpy() function copies up to size characters from the -NUL-terminated string src to dst, NUL-terminating the result. */ -/* The strlcpy() functions return the total length of the string -they tried to create. For strlcpy() that means the length of src. */ - -#include "libft.h" - -size_t ft_strlcpy(char *dst, const char *src, size_t size) -{ - size_t i; - - i = 0; - if (!dst || !src) - return (0); - if (size > 0) - { - while (src[i] && --size) - { - dst[i] = src[i]; - i++; - } - dst[i] = '\0'; - } - while (src[i]) - i++; - return (i); -} diff --git a/lib/libft/ft_strlen.c b/lib/libft/ft_strlen.c deleted file mode 100644 index dfdf22c..0000000 --- a/lib/libft/ft_strlen.c +++ /dev/null @@ -1,27 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strlen.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/06 14:39:40 by gcollet #+# #+# */ -/* Updated: 2021/05/06 15:00:37 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction strlen() calcule la longueur de la chaîne de caractères s, sans -compter l'octet nul « \0 » final. */ -/* La fonction strlen() renvoie le nombre de caractères dans la chaîne s. */ - -#include "libft.h" - -size_t ft_strlen(const char *s) -{ - size_t i; - - i = 0; - while (s[i]) - i++; - return (i); -} diff --git a/lib/libft/ft_strmapi.c b/lib/libft/ft_strmapi.c deleted file mode 100644 index b92af1b..0000000 --- a/lib/libft/ft_strmapi.c +++ /dev/null @@ -1,39 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strmapi.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/11 10:20:19 by gcollet #+# #+# */ -/* Updated: 2021/05/13 13:34:37 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -/* Applique la fonction ’f’ à chaque caractère de la chaine de caractères -passée en argument pour créer une nouvelle chaine de caractères (avec malloc) -résultant des applications successives de ’f’. */ -/* La chaine de caractères résultant des application ssuccessives de f. -Retourne NULL si l’allocation échoue. */ - -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) -{ - int i; - char *tab; - - i = 0; - if (!s || !f) - return (NULL); - tab = (char *)malloc(sizeof(char) * ft_strlen(s) + 1); - if (tab == 0) - return (NULL); - while (s[i]) - { - tab[i] = (*f)(i, s[i]); - i++; - } - tab[i] = '\0'; - return (tab); -} diff --git a/lib/libft/ft_strncmp.c b/lib/libft/ft_strncmp.c deleted file mode 100644 index 5b7d741..0000000 --- a/lib/libft/ft_strncmp.c +++ /dev/null @@ -1,32 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strncmp.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 11:51:46 by gcollet #+# #+# */ -/* Updated: 2022/12/23 01:56:56 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction strcmp() compare les deux chaînes s1 et s2. Elle renvoie un -entier négatif, nul, ou positif, si s1 est respectivement inférieure, égale -ou supérieure à s2. */ -/* La fonction strncmp() renvoie un entier inférieur, égal ou supérieur à zéro -si s1 (ou ses n premiers octets) est respectivement inférieure, égale ou -supérieure à s2. */ - -#include "libft.h" - -int ft_strncmp(const char *str1, const char *str2, size_t n) -{ - while (n-- > 0 && (*str1 || *str2)) - { - if (*str1 != *str2) - return ((*(unsigned char *) str1) - (*(unsigned char *) str2)); - str1++; - str2++; - } - return (0); -} diff --git a/lib/libft/ft_strnstr.c b/lib/libft/ft_strnstr.c deleted file mode 100644 index a0e1214..0000000 --- a/lib/libft/ft_strnstr.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strnstr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/08 11:17:09 by gcollet #+# #+# */ -/* Updated: 2021/05/11 13:33:00 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* The strnstr() function locates the first occurrence of the null-terminated -string little in the string big, where not more than len character are -searched. */ -/* If little is an empty string, big is returned; if little occurs nowhere in -big, NULL is returned; otherwise a pointer to the first character of the first -occurrence of little is returned. */ - -#include "libft.h" - -char *ft_strnstr(const char *big, const char *little, size_t len) -{ - size_t i; - size_t j; - - i = 0; - if (little[i] == '\0') - return ((char *)big); - while (big[i] && i < len) - { - j = 0; - while (big[i + j] == little[j] && i + j < len) - { - if (little[j + 1] == '\0') - return ((char *)big + i); - j++; - } - i++; - } - return (0); -} diff --git a/lib/libft/ft_strrchr.c b/lib/libft/ft_strrchr.c deleted file mode 100644 index 11f2c94..0000000 --- a/lib/libft/ft_strrchr.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strrchr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 11:38:19 by gcollet #+# #+# */ -/* Updated: 2021/05/11 14:49:22 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* La fonction strrchr() renvoie un pointeur sur la dernière occurrence du -caractère c dans la chaîne s. */ -/* La fonction strrchr() renvoie un pointeur sur le caractère correspondant, -ou NULL si le caractère n'a pas été trouvé. */ - -#include "libft.h" - -char *ft_strrchr(const char *s, int c) -{ - int i; - - i = 0; - while (s[i]) - i++; - if (c == '\0') - return ((char *)s + i); - while (i--) - { - if (s[i] == c) - return ((char *)(s + i)); - } - return (0); -} diff --git a/lib/libft/ft_strtrim.c b/lib/libft/ft_strtrim.c deleted file mode 100644 index c2e7551..0000000 --- a/lib/libft/ft_strtrim.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_strtrim.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/10 12:46:47 by gcollet #+# #+# */ -/* Updated: 2021/05/13 13:30:05 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Alloue (avec malloc) et retourne une copie de la chaine ’s1’, sans les -caractères spécifiés dans ’set’ au début et à la fin de la chaine de -caractères. */ -/* La chaine de caractères trimmée. NULL si l’allocation échoue. */ - -#include "libft.h" - -char *ft_strtrim(char const *s1, char const *set) -{ - size_t len; - char *tab; - - if (!s1 || !set) - return (NULL); - while (*s1 && ft_strchr(set, *s1)) - s1++; - len = ft_strlen(s1); - while (len && ft_strchr(set, s1[len])) - len--; - tab = ft_substr((char *)s1, 0, len + 1); - return (tab); -} diff --git a/lib/libft/ft_substr.c b/lib/libft/ft_substr.c deleted file mode 100644 index 45f68fe..0000000 --- a/lib/libft/ft_substr.c +++ /dev/null @@ -1,44 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_substr.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/10 10:51:58 by gcollet #+# #+# */ -/* Updated: 2021/05/13 16:02:24 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* Alloue (avec malloc()) et retourne une chaine de caractères issue de la -chaine ’s’. Cette nouvelle chaine commence à l’index ’start’ et a pour taille -maximale ’len’ */ -/* La nouvelle chaine de caractere. NULL si l’allocation échoue. */ - -#include "libft.h" - -char *ft_substr(char const *s, unsigned int start, size_t len) -{ - char *tab; - size_t i; - size_t j; - - i = 0; - j = 0; - if (!s) - return (NULL); - tab = (char *)malloc(sizeof(*s) * (len + 1)); - if (!tab) - return (NULL); - while (s[i]) - { - if (i >= start && j < len) - { - tab[j] = s[i]; - j++; - } - i++; - } - tab[j] = '\0'; - return (tab); -} diff --git a/lib/libft/ft_tolower.c b/lib/libft/ft_tolower.c deleted file mode 100644 index 024383f..0000000 --- a/lib/libft/ft_tolower.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_tolower.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 11:01:50 by gcollet #+# #+# */ -/* Updated: 2021/05/07 11:05:35 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* tolower() convertit la lettre c en minuscule si c'est possible. */ -/* La valeur renvoyée est celle de la lettre convertie, ou bien c si la -conversion n'était pas possible. */ - -#include "libft.h" - -int ft_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - c += 32; - return (c); -} diff --git a/lib/libft/ft_toupper.c b/lib/libft/ft_toupper.c deleted file mode 100644 index c98b9f7..0000000 --- a/lib/libft/ft_toupper.c +++ /dev/null @@ -1,24 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_toupper.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: gcollet +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2021/05/07 10:50:12 by gcollet #+# #+# */ -/* Updated: 2021/05/07 11:03:34 by gcollet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -/* toupper() convertit la lettre c en majuscule si c'est possible. */ -/* La valeur renvoyée est celle de la lettre convertie, ou bien c si la à -conversion n'était pas possible. */ - -#include "libft.h" - -int ft_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - c -= 32; - return (c); -} diff --git a/lib/libft/libft.h b/lib/libft/libft.h deleted file mode 100644 index 0c29bed..0000000 --- a/lib/libft/libft.h +++ /dev/null @@ -1,70 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* libft.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/23 01:04:25 by mabbas #+# #+# */ -/* Updated: 2022/12/23 01:04:28 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef LIBFT_H -# define LIBFT_H - -# include -# include - -typedef struct s_list -{ - void *content; - struct s_list *next; -} t_list; - -int ft_atoi(const char *nptr); -double ft_atof(const char *str); -void ft_bzero(void *s, size_t n); -void *ft_calloc(size_t nmemb, size_t size); -int ft_isalnum(int c); -int ft_isalpha(int c); -int ft_isascii(int c); -int ft_isdigit(int c); -int ft_isprint(int c); -char *ft_itoa(int n); -void *ft_memccpy(void *dest, const void *src, int c, 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); -void *ft_memcpy(void *dest, const void *src, size_t n); -void *ft_memmove(void *dest, const void *src, size_t n); -void *ft_memset(void *s, int c, size_t n); -void ft_putchar_fd(char c, int fd); -void ft_putendl_fd(char *s, int fd); -void ft_putnbr_fd(int n, int fd); -void ft_putstr_fd(char *s, int fd); -char **ft_split(char const *s, char c); -char *ft_strchr(const char *s, int c); -char *ft_strdup(const char *s); -char *ft_strjoin(char const *s1, char const *s2); -size_t ft_strlcat(char *dst, const char *src, size_t size); -size_t ft_strlcpy(char *dst, const char *src, size_t size); -size_t ft_strlen(const char *s); -char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); -int ft_strncmp(const char *s1, const char *s2, size_t n); -char *ft_strnstr(const char *big, const char *little, size_t len); -char *ft_strrchr(const char *s, int c); -char *ft_strtrim(char const *s1, char const *set); -char *ft_substr(char const *s, unsigned int start, size_t len); -int ft_tolower(int c); -int ft_toupper(int c); -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 *)); - -#endif \ No newline at end of file diff --git a/pipex.dSYM/Contents/Info.plist b/pipex.dSYM/Contents/Info.plist deleted file mode 100644 index a484750..0000000 --- a/pipex.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.pipex - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/pipex.dSYM/Contents/Resources/DWARF/pipex b/pipex.dSYM/Contents/Resources/DWARF/pipex deleted file mode 100644 index aca06bb9ba55ae1de2ca7149e5dda52d81f25431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 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 diff --git a/pipex_bonus.dSYM/Contents/Info.plist b/pipex_bonus.dSYM/Contents/Info.plist deleted file mode 100644 index 65a85a2..0000000 --- a/pipex_bonus.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.pipex_bonus - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus b/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus deleted file mode 100644 index b3efa25c23ed8f91783f4a691d6a14c8e87ac1ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12576 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 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/23 01:03:59 by mabbas #+# #+# */ -/* Updated: 2022/12/23 01:04:01 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/* Child process that run inside a fork, take the filein, put the output inside - a pipe and then close with the exec function */ -void child_process(char **argv, char **envp, int *fd) -{ - int filein; - - filein = open(argv[1], O_RDONLY, 0777); - if (filein == -1) - error(); - dup2(fd[1], STDOUT_FILENO); - dup2(filein, STDIN_FILENO); - close(fd[0]); - execute(argv[2], envp); -} - -/* Parent process that take the data from the pipe, change the output for the - fileout and also close with the exec function */ -void parent_process(char **argv, char **envp, int *fd) -{ - int fileout; - - fileout = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0777); - if (fileout == -1) - error(); - dup2(fd[0], STDIN_FILENO); - dup2(fileout, STDOUT_FILENO); - close(fd[1]); - execute(argv[3], envp); -} - -/* Main function that run the child and parent process or display an error - message if arguments are wrong */ -int main(int argc, char **argv, char **envp) -{ - int fd[2]; - pid_t pid1; - - if (argc == 5) - { - if (pipe(fd) == -1) - error(); - pid1 = fork(); - if (pid1 == -1) - error(); - if (pid1 == 0) - child_process(argv, envp, fd); - waitpid(pid1, NULL, 0); - parent_process(argv, envp, fd); - } - else - { - ft_putstr_fd("\033[31mError: Bad arguments\n\e[0m", 2); - ft_putstr_fd("Ex: ./pipex \n", 1); - } - return (0); -} diff --git a/srcs/pipex_bonus.c b/srcs/pipex_bonus.c deleted file mode 100644 index f79cb11..0000000 --- a/srcs/pipex_bonus.c +++ /dev/null @@ -1,108 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipex_bonus.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/23 00:47:16 by mabbas #+# #+# */ -/* Updated: 2022/12/23 02:57:18 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/* Child process that create a fork and a pipe, put the output inside a pipe - and then close with the exec function. The main process will change his stdin - for the pipe file descriptor. */ -void child_process(char *argv, char **envp) -{ - pid_t pid; - int fd[2]; - - if (pipe(fd) == -1) - error(); - pid = fork(); - if (pid == -1) - error(); - if (pid == 0) - { - close(fd[0]); - dup2(fd[1], STDOUT_FILENO); - execute(argv, envp); - } - else - { - close(fd[1]); - dup2(fd[0], STDIN_FILENO); - waitpid(pid, NULL, 0); - } -} - -static void inputs(int fd, char *line, char *limiter) -{ - if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) - exit(EXIT_SUCCESS); - write(fd, line, ft_strlen(line)); - free(line); -} - -/* Function who make a child process that will read from the stdin with - get_next_line until it find the limiter word and then put the output inside a - pipe. The main process will change his stdin for the pipe file descriptor. */ -void here_doc(char *limiter, int argc) -{ - pid_t reader; - int fd[2]; - char *line; - - if (argc < 6) - usage(); - if (pipe(fd) == -1) - error(); - reader = fork(); - if (reader == 0) - { - close(fd[0]); - while (get_next_line(&line)) - inputs(fd[1], line, limiter); - } - else - { - close(fd[1]); - dup2(fd[0], STDIN_FILENO); - wait(NULL); - } -} - -/* Main function that run the childs process with the right file descriptor - or display an error message if arguments are wrong. It will run here_doc - function if the "here_doc" string is find in argv[1] */ -int main(int argc, char **argv, char **envp) -{ - int i; - int filein; - int fileout; - - if (argc >= 5) - { - if (ft_strncmp(argv[1], "here_doc", 8) == 0) - { - i = 3; - fileout = open_file(argv[argc - 1], 0); - here_doc(argv[2], argc); - } - else - { - i = 2; - fileout = open_file(argv[argc - 1], 1); - filein = open_file(argv[1], 2); - dup2(filein, STDIN_FILENO); - } - while (i < argc - 2) - child_process(argv[i++], envp); - dup2(fileout, STDOUT_FILENO); - execute(argv[argc - 2], envp); - } - usage(); -} diff --git a/srcs/utils.c b/srcs/utils.c deleted file mode 100644 index 1818a6d..0000000 --- a/srcs/utils.c +++ /dev/null @@ -1,101 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/23 02:45:19 by mabbas #+# #+# */ -/* Updated: 2022/12/23 02:49:33 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/* Function that will look for the path line inside the environment, will - split and test each command path and then return the right one. */ -char *find_path(char *cmd, char **envp) -{ - char **paths; - char *path; - int i; - char *part_path; - - i = 0; - while (ft_strnstr(envp[i], "PATH", 4) == 0) - i++; - paths = ft_split(envp[i] + 5, ':'); - i = 0; - while (paths[i]) - { - part_path = ft_strjoin(paths[i], "/"); - path = ft_strjoin(part_path, cmd); - free(part_path); - if (access(path, F_OK) == 0) - return (path); - free(path); - i++; - } - i = -1; - while (paths[++i]) - free(paths[i]); - free(paths); - return (0); -} - -/* A simple error displaying function. */ -void error(void) -{ - perror("\033[31mError"); - exit(EXIT_FAILURE); -} - -/* Function that take the command and send it to find_path - before executing it. */ -void execute(char *argv, char **envp) -{ - char **cmd; - int i; - char *path; - - i = -1; - cmd = ft_split(argv, ' '); - path = find_path(cmd[0], envp); - if (!path) - { - while (cmd[++i]) - free(cmd[i]); - free(cmd); - error(); - } - if (execve(path, cmd, envp) == -1) - error(); -} - -// /* Function that will read input from the terminal and return line. */ -// int get_next_line(char **line) -// { -// char *buffer; -// int readed; -// int i; -// char c; - -// i = 0; -// readed = 0; -// buffer = (char *)malloc(10000); -// if (!buffer) -// return (-1); -// readed = read(0, &c, 1); -// while (readed && c != '\n' && c != '\0') -// { -// if (c != '\n' && c != '\0') -// buffer[i] = c; -// i++; -// readed = read(0, &c, 1); -// } -// buffer[i] = '\n'; -// buffer[++i] = '\0'; -// *line = buffer; -// free(buffer); -// return (readed); -// } diff --git a/srcs/utils_bonus.c b/srcs/utils_bonus.c deleted file mode 100644 index e22a43e..0000000 --- a/srcs/utils_bonus.c +++ /dev/null @@ -1,67 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* utils_bonus.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/23 01:03:50 by mabbas #+# #+# */ -/* Updated: 2022/12/23 02:39:09 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/* Function to display error message when arguments are wrong */ -void usage(void) -{ - ft_putstr_fd("\033[31mError: Bad argument\n\e[0m", 2); - ft_putstr_fd("Ex: ./pipex <...> \n", 1); - ft_putstr_fd("./pipex \"here_doc\" <...> \n", 1); - exit(EXIT_SUCCESS); -} - -/* Function to open the files with the right flags */ -int open_file(char *argv, int i) -{ - int file; - - file = 0; - if (i == 0) - file = open(argv, O_WRONLY | O_CREAT | O_APPEND, 0777); - else if (i == 1) - file = open(argv, O_WRONLY | O_CREAT | O_TRUNC, 0777); - else if (i == 2) - file = open(argv, O_RDONLY, 0777); - if (file == -1) - error(); - return (file); -} - -/* Function that will read input from the terminal and return line. */ -int get_next_line(char **line) -{ - char *buffer; - int readed; - int i; - char c; - - i = 0; - readed = 0; - buffer = (char *)malloc(10000); - if (!buffer) - return (-1); - readed = read(0, &c, 1); - while (readed && c != '\n' && c != '\0') - { - if (c != '\n' && c != '\0') - buffer[i] = c; - i++; - readed = read(0, &c, 1); - } - buffer[i] = '\n'; - buffer[++i] = '\0'; - *line = ft_strdup(buffer); - free(buffer); - return (readed); -} From c6b6b051e9a5603e20b7f4f752bd6fd92d7350d0 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Sun, 18 Dec 2022 03:43:51 +0100 Subject: [PATCH 04/31] feat:added submodule and header --- Makefile | 99 ++++++++++++++++++++++++++++++++++++++++++++++++ includes/pipex.h | 35 +++++++++++++++++ libs/libft | 1 + src/gnl | 1 + src/pipex.c | 12 ++++++ 5 files changed, 148 insertions(+) create mode 100644 Makefile create mode 100644 includes/pipex.h create mode 160000 libs/libft create mode 160000 src/gnl create mode 100644 src/pipex.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..211e263 --- /dev/null +++ b/Makefile @@ -0,0 +1,99 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: mabbas +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2022/12/18 02:39:41 by mabbas #+# #+# # +# Updated: 2022/12/18 03:27:03 by mabbas ### ########.fr # +# # +# **************************************************************************** # + +NAME = pipex +NAME_B = pipex_bonus +#define compiler and flags for Debugger +CC = gcc +CFLAGS = -Wall -Werror -Wextra -g +INC = -I ./includes/ + +LIBFT = ./libs/libft/ + +SRCS = src/pipex.c \ + src/gnl/get_next_line.c \ + src/gnl/get_next_line_utils.c \ + src/utils.c + +SRCS_B = src/pipex_bonus.c \ + src/utils.c \ + src/utils_bonus.c \ + src/gnl/get_next_line.c \ + src/gnl/get_next_line_utils.c + +OBJS = ${SRCS:.c=.o} +OBJ_PATH = obj/ + +SUBM_STATE := $(shell find libs/libft -type f && libs/gnl -type f) + +ifeq ($(SUBM_STATE),) +SUBM_FLAG = submodule +else +SUBM_FLAG = +endif + +NC := \033[m +B_RED := \033[1;31m +RED := \033[0;31m +B_GREEN := \033[1;32m +GREEN := \033[0;33m +B_BLUE := \033[1;34m +BLUE := \033[0;34m +PURPLE := \033[0;35m +WHCOLOR := \033[0;40m + + +UNAME = $(shell uname -s) + +ifeq ($(UNAME),Linux) + VALGRIND = valgrind -q --leak-check=full --track-origin=yes +else + detected_OS := $(shell sh -c 'uname 2>/dev/null || echo You are Mac stupid!_!') +endif + +all: libft $(NAME) + + +%.o : %.c + @$(CC) $(CFLAGS) -c $< -o $@ $(INC) + +submodule: + git submodule init + git submodule update + +libft: + @echo "____!!!$(BLUE)----- Compiling Libft------$(NC)" + @$(MAKE) -C $(LIBFT) + @$(MAKE) -C $(LIBFT) bonus + @echo "Compiling Libft: \033[1;32mOK\033[m" + +$(NAME): $(OBJS) + @$(CC) $(CFLAGS) $(OBJS) $(LIBFT)libft.a -o $(NAME) + @echo "Pipex: \033[1;32mCOMPILED⛓️\033[m" + +clean: + @echo "$(PURPLE)🚿 Sweeping in progress $(B_RED)🚿" + @rm -f $(OBJS) + @$(MAKE) -C $(LIBFT) clean + @sleep 0.5 + @echo "$(B_GREEN) Swept off 🧹🧹🧹$(NC)" + +fclean: clean + @rm -f $(NAME) + @echo "$(GREEN) I am gone forever🚿🚿🚿 $(B_RED)🚿🚿 $(NC)" + +re: fclean all + +.phony: all libft clean fclean +.silent: all libft clean fclean + + \ No newline at end of file diff --git a/includes/pipex.h b/includes/pipex.h new file mode 100644 index 0000000..5ba5d71 --- /dev/null +++ b/includes/pipex.h @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipex.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ +/* Updated: 2022/12/18 03:09:02 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PIPEX_H +# define PIPEX_H + +# include +# include +# include +# include +# include +# include +# include "..libs/libft/libft.h" +# include "..libs/gnl/get_next_line.h" + +/** Mandatory portion **/ +void error_chk(void); +char *path_finder(char *cmd, char **envp); +void execution(char *argv, char **envp); + +/** Bonus portion **/ +int file_open(char *argv, int i); +void use(void); + +#endif diff --git a/libs/libft b/libs/libft new file mode 160000 index 0000000..e6ade01 --- /dev/null +++ b/libs/libft @@ -0,0 +1 @@ +Subproject commit e6ade01d8096032a787619f82b91188ef18383c9 diff --git a/src/gnl b/src/gnl new file mode 160000 index 0000000..46993cf --- /dev/null +++ b/src/gnl @@ -0,0 +1 @@ +Subproject commit 46993cf145772ed890ee36860ce91e5647ba5527 diff --git a/src/pipex.c b/src/pipex.c new file mode 100644 index 0000000..b8ad24d --- /dev/null +++ b/src/pipex.c @@ -0,0 +1,12 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipex.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ +/* Updated: 2022/12/18 02:31:27 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + From 36d79be04205dd1f3364b42e6c23d935c17ed62b Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Sun, 18 Dec 2022 13:30:51 +0100 Subject: [PATCH 05/31] pipe initialization and perror setup done --- Makefile | 13 +++++++------ includes/pipex.h | 41 ++++++++++++++++++++++++++++++++++++----- {src => libs}/gnl | 0 src/file_utils.c | 35 +++++++++++++++++++++++++++++++++++ src/initialization.c | 25 +++++++++++++++++++++++++ src/main.c | 18 ++++++++++++++++++ src/pipex.c | 28 ++++++++++++++++++++++++++-- src/pipex.o | Bin 0 -> 680 bytes 8 files changed, 147 insertions(+), 13 deletions(-) rename {src => libs}/gnl (100%) create mode 100644 src/file_utils.c create mode 100644 src/initialization.c create mode 100644 src/main.c create mode 100644 src/pipex.o diff --git a/Makefile b/Makefile index 211e263..129b29a 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: mabbas +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/12/18 02:39:41 by mabbas #+# #+# # -# Updated: 2022/12/18 03:27:03 by mabbas ### ########.fr # +# Updated: 2022/12/18 13:20:06 by mabbas ### ########.fr # # # # **************************************************************************** # @@ -20,15 +20,16 @@ INC = -I ./includes/ LIBFT = ./libs/libft/ SRCS = src/pipex.c \ - src/gnl/get_next_line.c \ - src/gnl/get_next_line_utils.c \ - src/utils.c + src/file_utils.c \ + src/initialization.c \ + libs/gnl/get_next_line.c \ + libs/gnl/get_next_line_utils.c \ SRCS_B = src/pipex_bonus.c \ src/utils.c \ src/utils_bonus.c \ - src/gnl/get_next_line.c \ - src/gnl/get_next_line_utils.c + libs/gnl/get_next_line.c \ + libs/gnl/get_next_line_utils.c OBJS = ${SRCS:.c=.o} OBJ_PATH = obj/ diff --git a/includes/pipex.h b/includes/pipex.h index 5ba5d71..227a59a 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/18 03:09:02 by mabbas ### ########.fr */ +/* Updated: 2022/12/18 13:18:38 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,10 +23,41 @@ # include "..libs/libft/libft.h" # include "..libs/gnl/get_next_line.h" -/** Mandatory portion **/ -void error_chk(void); -char *path_finder(char *cmd, char **envp); -void execution(char *argv, char **envp); + +typedef struct pipe +{ + int argc; + int indx_cmd; + int in_file; + int out_file; + int offset; + int lock_state; + int **pipe; + char error_str[128]; + char **argv; + char **envp; +} t_pipe; + +/** Pipe opetator initialization and file handling **/ +int pipex(int argc, char **argv, char **envp); +int pipe_init(int argc, char **argv, char **envp, t_pipe *pipex); +int exec_cmd(t_pipe *pipex); +int file_open(t_pipe *pipe); +int file_close(t_pipe *pipex); +int pipe_exit(t_pipe *pipex); + +void cmd_not_found(char *cmd, char **split_cmd, t_pipe *pipex); +void dup42(int fd1, int fd2, char **cmd, t_pipe *pipex); + +/** Error Handling **/ +void exec_perror(char **cmd, char *error, int code, t_pipe *pipex); +void exit_perror(char *error, int code); + +/** Reading and execution of strdin and out **/ +void split_mtx_free(char **mtx); +void replace_all_mtx(char **cmd, char *old_w, char *new_w); +void std_in_read(int *fd, char *limiter); +void replace_all_str(char **str, char *old_w, char *new_w); /** Bonus portion **/ int file_open(char *argv, int i); diff --git a/src/gnl b/libs/gnl similarity index 100% rename from src/gnl rename to libs/gnl diff --git a/src/file_utils.c b/src/file_utils.c new file mode 100644 index 0000000..03a422a --- /dev/null +++ b/src/file_utils.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* file_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 13:20:12 by mabbas #+# #+# */ +/* Updated: 2022/12/18 13:29:04 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +int file_close(t_pipe *pipex) +{ + close(pipe->in_file); + close(pipe->out_file); + return (0); +} + +int file_open(t_pipe *pipex) +{ + pipe->out_file = open(pipe->argv[pipe->argc - 1], \ + O_CREAT | O_WRONLY | O_TRUNC, 0777); + if (pipe->out_file < 0) + exit_perror(pipe->argv[pipe->argc - 1], 0); + pipe->in_file = open(pipe->argv[1], O_RDONLY); + if (pipe->in_file < 0) + { + ft_putendl_fd("Wrong input(0)\n", pipe->out_file); + exit_perror(pipe->argv[1], 0); + } + return (0); +} diff --git a/src/initialization.c b/src/initialization.c new file mode 100644 index 0000000..5f5936f --- /dev/null +++ b/src/initialization.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* initialization.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 13:05:15 by mabbas #+# #+# */ +/* Updated: 2022/12/18 13:07:08 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +int pipe_init(int argc, char **argv, char **envp, t_pipe *pipex) +{ + pipe->argc; + pipe->argv; + pipe->envp; + pipe->indx_cmd = argc - 3; + pipe->offset = 2; + pipe->lock_state = 0; + file_open(pipex); + return (0); +} \ No newline at end of file diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..41d2aa4 --- /dev/null +++ b/src/main.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 12:57:19 by mabbas #+# #+# */ +/* Updated: 2022/12/18 12:59:24 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +int main(int argc, char **argv) +{ + return (pipex(argc, argv, envp)); +} diff --git a/src/pipex.c b/src/pipex.c index b8ad24d..b494c1c 100644 --- a/src/pipex.c +++ b/src/pipex.c @@ -3,10 +3,34 @@ /* ::: :::::::: */ /* pipex.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ +/* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ -/* Updated: 2022/12/18 02:31:27 by mabbas ### ########.fr */ +/* Updated: 2022/12/18 13:04:37 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ +#include "../includes/pipex.h" + +int pipex(int argc, char **argv, char **envp) +{ + t_pipe pipex; + + if (argc > 5) + { + ft_putendl_fd("Argument threshold exceeded!\n", 2); + exit(EXIT_FAILURE); + } + else if (argc == 5) + { + pipe_init(argc, argv, envp, &pipex); + exec_cmd(&pipex); + pipe_exit(&pipex); + } + else + { + ft_putendl_fd("Argument threshold not covered\n", 2); + exit(EXIT_FAILURE); + } + return (pipe.lock_state); +} diff --git a/src/pipex.o b/src/pipex.o new file mode 100644 index 0000000000000000000000000000000000000000..f411e1a507ccfa7114e83c7be54f3b327b947283 GIT binary patch literal 680 zcmX^A>+L^w1_nlE1|R{%OhEhr#83cYAdm#&8z4RoFas(s0MZBqFh0;s1`uWi2?9ZU zd`W6W34{&dhqy+BAo%Dkn0ZLz4M=RDd5HxDIjQk^iMgr8K#BNxmvF}*H)JJXwhB}P zi+NBNLlnTw%TLNm28p1X2Qvpoo1o|hn}H$%GY{;(g2ZHW^E@EdGQiA>K+%ocypqZS ztp3e`nx_M$YY3QU1XL#h#Nepq=VD+3Vi52McJu&=!J?c8EDGT>GO#iH2Lf8D5rNtT RNsDX@%)r#c!oUr-69D}rLizvz literal 0 HcmV?d00001 From 760d27c51568881ebed5f0839980e452f43d092b Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Sun, 18 Dec 2022 14:06:17 +0100 Subject: [PATCH 06/31] free the pointers --- includes/pipex.h | 10 +++++----- src/error_handler.c | 47 +++++++++++++++++++++++++++++++++++++++++++++ src/free_fnc.c | 40 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 src/error_handler.c create mode 100644 src/free_fnc.c diff --git a/includes/pipex.h b/includes/pipex.h index 227a59a..39d110f 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/18 13:18:38 by mabbas ### ########.fr */ +/* Updated: 2022/12/18 13:58:06 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,12 +50,12 @@ void cmd_not_found(char *cmd, char **split_cmd, t_pipe *pipex); void dup42(int fd1, int fd2, char **cmd, t_pipe *pipex); /** Error Handling **/ -void exec_perror(char **cmd, char *error, int code, t_pipe *pipex); -void exit_perror(char *error, int code); +void exec_perror(char **cmd, char *error, int code_no, t_pipe *pipex); +void exit_perror(char *error, int code_no); /** Reading and execution of strdin and out **/ -void split_mtx_free(char **mtx); -void replace_all_mtx(char **cmd, char *old_w, char *new_w); +void free_split_str(char **str); +void replace_all_str(char **cmd, char *old_w, char *new_w); void std_in_read(int *fd, char *limiter); void replace_all_str(char **str, char *old_w, char *new_w); diff --git a/src/error_handler.c b/src/error_handler.c new file mode 100644 index 0000000..4bab0b4 --- /dev/null +++ b/src/error_handler.c @@ -0,0 +1,47 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* error_handler.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 13:33:58 by mabbas #+# #+# */ +/* Updated: 2022/12/18 14:04:29 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/** It simplifies error reporting in unified way by showing + * error code(errno-> external int var) **/ + +void exit_perror(char *error, int code_no) +{ + perror(error); + exit(code_no); +} + +void msg +/** Writes error msg on the basis of error code **/ + +void cmd_not_found(char *cmd, char **split_cmd, t_pipe *pipex) +{ + ft_strlcpy(pipe->error_str, cmd, ft_strlen(cmd) + 1); + if (split_cmd) + free_split_str(split_cmd); + pipe_exit(pipex); + ft_putendl_fd(pipe->error_str, 2); + ft_putendl_fd(":", 2); + ft_putendl_fd("find the correct command bro!", 2); + ft_putendl_fd("\n", 2); + exit(127); +} +/**executes the perror function and returns the error code **/ + +void exec_perror(char **cmd, char *error, int code_no, t_pipe *pipex) +{ + ft_strlcpy(pipe->error_str, error, ft_strlen(error) + 1); + free_split_str(cmd); + pipe_exit(pipex); + exit_perror(pipe->error_str, code_no); +} diff --git a/src/free_fnc.c b/src/free_fnc.c new file mode 100644 index 0000000..17af0fa --- /dev/null +++ b/src/free_fnc.c @@ -0,0 +1,40 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* free_fnc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 13:56:13 by mabbas #+# #+# */ +/* Updated: 2022/12/18 14:03:17 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/** Frees str or array of strings. Using + * void * is used as its defines generic + * type **/ + + +void free_ptr(void **ptr) +{ + if (*ptr) + { + free(*ptr); + *ptr = NULL; + } +} + +void *free_split_str(char **str) +{ + int i; + + i = 0; + if (str) + { + while (str[i++] + ft_ptr_free((void *)&str[i]); + ft_ptr_free((void *)&str); + } +} \ No newline at end of file From 13ebf260cc68552e0681338ec0f3913ee3c111c5 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Sun, 18 Dec 2022 14:18:44 +0100 Subject: [PATCH 07/31] str replacement functions --- includes/pipex.h | 4 ++-- src/exit.c | 19 +++++++++++++++++++ src/pipe_utils.c | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/exit.c create mode 100644 src/pipe_utils.c diff --git a/includes/pipex.h b/includes/pipex.h index 39d110f..a3593c1 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/18 13:58:06 by mabbas ### ########.fr */ +/* Updated: 2022/12/18 14:11:50 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -55,7 +55,7 @@ void exit_perror(char *error, int code_no); /** Reading and execution of strdin and out **/ void free_split_str(char **str); -void replace_all_str(char **cmd, char *old_w, char *new_w); +void replace_all_cmd(char **cmd, char *old_w, char *new_w); void std_in_read(int *fd, char *limiter); void replace_all_str(char **str, char *old_w, char *new_w); diff --git a/src/exit.c b/src/exit.c new file mode 100644 index 0000000..55d58ac --- /dev/null +++ b/src/exit.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* exit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 14:07:06 by mabbas #+# #+# */ +/* Updated: 2022/12/18 14:07:55 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +int pipe_exit(t_pipe *pipex) +{ + file_close(pipex); + return (0); +} diff --git a/src/pipe_utils.c b/src/pipe_utils.c new file mode 100644 index 0000000..748d39a --- /dev/null +++ b/src/pipe_utils.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipe_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/18 14:13:34 by mabbas #+# #+# */ +/* Updated: 2022/12/18 14:18:08 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +void dup42(int fd1, int fd2, char **cmd, t_pipe *pipe) +{ + if (dup(fd1, fd2) == -1) + exec_perror(cmd, "command execution", 1, pipex); +} + +void replace_all_cmd(char **cmd, char *old_w, char *new_w) +{ + int i; + + i = 0; + while (cmd[i++]) + replace_all_str(&cmds[i], old_w, new_w); +} + +void replace_all_str(char **str, char *old_w, char *new_w) +{ + if (!str || !*str) + return ; + while (ft_strnstr(*str, old_w, ft_strlen(*str))) + *str = ft_str_replace(*str, old_w, new_w); +} From 48b64994f0ba0e42a215da0624a64a5f3c738b68 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Sun, 18 Dec 2022 14:26:40 +0100 Subject: [PATCH 08/31] replace string function complicated --- src/pipe_utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pipe_utils.c b/src/pipe_utils.c index 748d39a..3fdd1c8 100644 --- a/src/pipe_utils.c +++ b/src/pipe_utils.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 14:13:34 by mabbas #+# #+# */ -/* Updated: 2022/12/18 14:18:08 by mabbas ### ########.fr */ +/* Updated: 2022/12/18 14:20:28 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,5 +32,5 @@ void replace_all_str(char **str, char *old_w, char *new_w) if (!str || !*str) return ; while (ft_strnstr(*str, old_w, ft_strlen(*str))) - *str = ft_str_replace(*str, old_w, new_w); + *str = ft_replace_str(*str, old_w, new_w); } From e66cf29b16e5d54537a2d39070492d685cafd737 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Mon, 19 Dec 2022 02:04:55 +0100 Subject: [PATCH 09/31] recoded the whole pipe as earlier approach is too complicated --- Makefile | 8 +++--- includes/pipex.h | 48 ++++++++--------------------------- src/error_handler.c | 47 ----------------------------------- src/exit.c | 19 -------------- src/file_utils.c | 35 -------------------------- src/free_fnc.c | 40 ----------------------------- src/initialization.c | 25 ------------------- src/pipex.c | 58 +++++++++++++++++++++++++++++++++++++------ src/pipex.o | Bin 680 -> 3236 bytes 9 files changed, 66 insertions(+), 214 deletions(-) delete mode 100644 src/error_handler.c delete mode 100644 src/exit.c delete mode 100644 src/file_utils.c delete mode 100644 src/free_fnc.c delete mode 100644 src/initialization.c diff --git a/Makefile b/Makefile index 129b29a..e7d4326 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: mabbas +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/12/18 02:39:41 by mabbas #+# #+# # -# Updated: 2022/12/18 13:20:06 by mabbas ### ########.fr # +# Updated: 2022/12/19 01:13:02 by mabbas ### ########.fr # # # # **************************************************************************** # @@ -21,9 +21,9 @@ LIBFT = ./libs/libft/ SRCS = src/pipex.c \ src/file_utils.c \ - src/initialization.c \ libs/gnl/get_next_line.c \ libs/gnl/get_next_line_utils.c \ + # src/initialization.c \ SRCS_B = src/pipex_bonus.c \ src/utils.c \ @@ -32,7 +32,7 @@ SRCS_B = src/pipex_bonus.c \ libs/gnl/get_next_line_utils.c OBJS = ${SRCS:.c=.o} -OBJ_PATH = obj/ +OBJ_PATH = objs/ SUBM_STATE := $(shell find libs/libft -type f && libs/gnl -type f) @@ -63,7 +63,6 @@ endif all: libft $(NAME) - %.o : %.c @$(CC) $(CFLAGS) -c $< -o $@ $(INC) @@ -77,6 +76,7 @@ libft: @$(MAKE) -C $(LIBFT) bonus @echo "Compiling Libft: \033[1;32mOK\033[m" + $(NAME): $(OBJS) @$(CC) $(CFLAGS) $(OBJS) $(LIBFT)libft.a -o $(NAME) @echo "Pipex: \033[1;32mCOMPILED⛓️\033[m" diff --git a/includes/pipex.h b/includes/pipex.h index a3593c1..e056415 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,61 +6,35 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/18 14:11:50 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 02:02:36 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef PIPEX_H # define PIPEX_H -# include # include # include # include # include -# include -# include "..libs/libft/libft.h" -# include "..libs/gnl/get_next_line.h" - +# include +# include +# include "../libs/libft/libft.h" +# include "../libs/gnl/get_next_line.h" typedef struct pipe { - int argc; - int indx_cmd; - int in_file; - int out_file; - int offset; - int lock_state; - int **pipe; - char error_str[128]; - char **argv; - char **envp; + int fd[2]; + pid_t pid1; } t_pipe; /** Pipe opetator initialization and file handling **/ -int pipex(int argc, char **argv, char **envp); -int pipe_init(int argc, char **argv, char **envp, t_pipe *pipex); -int exec_cmd(t_pipe *pipex); -int file_open(t_pipe *pipe); -int file_close(t_pipe *pipex); -int pipe_exit(t_pipe *pipex); - -void cmd_not_found(char *cmd, char **split_cmd, t_pipe *pipex); -void dup42(int fd1, int fd2, char **cmd, t_pipe *pipex); - -/** Error Handling **/ -void exec_perror(char **cmd, char *error, int code_no, t_pipe *pipex); -void exit_perror(char *error, int code_no); - -/** Reading and execution of strdin and out **/ -void free_split_str(char **str); -void replace_all_cmd(char **cmd, char *old_w, char *new_w); -void std_in_read(int *fd, char *limiter); -void replace_all_str(char **str, char *old_w, char *new_w); +void error(void); +char *path_find(char *cmd, char **envp); +void exec(char *argv, char **envp); -/** Bonus portion **/ -int file_open(char *argv, int i); +int file_open(const char *argv, int i); void use(void); #endif diff --git a/src/error_handler.c b/src/error_handler.c deleted file mode 100644 index 4bab0b4..0000000 --- a/src/error_handler.c +++ /dev/null @@ -1,47 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* error_handler.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 13:33:58 by mabbas #+# #+# */ -/* Updated: 2022/12/18 14:04:29 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/** It simplifies error reporting in unified way by showing - * error code(errno-> external int var) **/ - -void exit_perror(char *error, int code_no) -{ - perror(error); - exit(code_no); -} - -void msg -/** Writes error msg on the basis of error code **/ - -void cmd_not_found(char *cmd, char **split_cmd, t_pipe *pipex) -{ - ft_strlcpy(pipe->error_str, cmd, ft_strlen(cmd) + 1); - if (split_cmd) - free_split_str(split_cmd); - pipe_exit(pipex); - ft_putendl_fd(pipe->error_str, 2); - ft_putendl_fd(":", 2); - ft_putendl_fd("find the correct command bro!", 2); - ft_putendl_fd("\n", 2); - exit(127); -} -/**executes the perror function and returns the error code **/ - -void exec_perror(char **cmd, char *error, int code_no, t_pipe *pipex) -{ - ft_strlcpy(pipe->error_str, error, ft_strlen(error) + 1); - free_split_str(cmd); - pipe_exit(pipex); - exit_perror(pipe->error_str, code_no); -} diff --git a/src/exit.c b/src/exit.c deleted file mode 100644 index 55d58ac..0000000 --- a/src/exit.c +++ /dev/null @@ -1,19 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* exit.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 14:07:06 by mabbas #+# #+# */ -/* Updated: 2022/12/18 14:07:55 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -int pipe_exit(t_pipe *pipex) -{ - file_close(pipex); - return (0); -} diff --git a/src/file_utils.c b/src/file_utils.c deleted file mode 100644 index 03a422a..0000000 --- a/src/file_utils.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* file_utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 13:20:12 by mabbas #+# #+# */ -/* Updated: 2022/12/18 13:29:04 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -int file_close(t_pipe *pipex) -{ - close(pipe->in_file); - close(pipe->out_file); - return (0); -} - -int file_open(t_pipe *pipex) -{ - pipe->out_file = open(pipe->argv[pipe->argc - 1], \ - O_CREAT | O_WRONLY | O_TRUNC, 0777); - if (pipe->out_file < 0) - exit_perror(pipe->argv[pipe->argc - 1], 0); - pipe->in_file = open(pipe->argv[1], O_RDONLY); - if (pipe->in_file < 0) - { - ft_putendl_fd("Wrong input(0)\n", pipe->out_file); - exit_perror(pipe->argv[1], 0); - } - return (0); -} diff --git a/src/free_fnc.c b/src/free_fnc.c deleted file mode 100644 index 17af0fa..0000000 --- a/src/free_fnc.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* free_fnc.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 13:56:13 by mabbas #+# #+# */ -/* Updated: 2022/12/18 14:03:17 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/** Frees str or array of strings. Using - * void * is used as its defines generic - * type **/ - - -void free_ptr(void **ptr) -{ - if (*ptr) - { - free(*ptr); - *ptr = NULL; - } -} - -void *free_split_str(char **str) -{ - int i; - - i = 0; - if (str) - { - while (str[i++] - ft_ptr_free((void *)&str[i]); - ft_ptr_free((void *)&str); - } -} \ No newline at end of file diff --git a/src/initialization.c b/src/initialization.c deleted file mode 100644 index 5f5936f..0000000 --- a/src/initialization.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* initialization.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 13:05:15 by mabbas #+# #+# */ -/* Updated: 2022/12/18 13:07:08 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -int pipe_init(int argc, char **argv, char **envp, t_pipe *pipex) -{ - pipe->argc; - pipe->argv; - pipe->envp; - pipe->indx_cmd = argc - 3; - pipe->offset = 2; - pipe->lock_state = 0; - file_open(pipex); - return (0); -} \ No newline at end of file diff --git a/src/pipex.c b/src/pipex.c index b494c1c..d217dd7 100644 --- a/src/pipex.c +++ b/src/pipex.c @@ -6,12 +6,50 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ -/* Updated: 2022/12/18 13:04:37 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 02:02:31 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ #include "../includes/pipex.h" +/** Child process inside a fork that runs , takes the input file, puts the + * output inside a pipe and closes with the exec function */ + +void process_child(char **argv, char **envp, int fd) +{ + t_pipe piped; + int in_file; + + in_file = open(argv[1], O_RDONLY, 0777); + if (in_file == -1) + error(); + dup2(piped.fd[1], STDOUT_FILENO); + dup2(in_file, STDIN_FILENO); + close(piped.fd[0]); + exec(argv[2], envp); +} + +/** Parent process takes data from the pipe and changes the output + * for the output.It closes with the exec function. + * If it is not done then it can lead to resource leaks /the fd remaining open + * even after cmd is executed **/ + +void process_parent(char **argv, char **envp, int *fd) +{ + int out_file; + + out_file = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0777); + if (out_file == -1) + error(); + dup2(fd[0], STDIN_FILENO); + dup2(out_file, STDOUT_FILENO); + close(fd[1]); + exec(argv[3], envp); +} + +/** This fnc runs the child and parent process or displays an + * an error message if wrong arguments are passed **/ + int pipex(int argc, char **argv, char **envp) { t_pipe pipex; @@ -23,14 +61,20 @@ int pipex(int argc, char **argv, char **envp) } else if (argc == 5) { - pipe_init(argc, argv, envp, &pipex); - exec_cmd(&pipex); - pipe_exit(&pipex); + if (pipe(pipex.fd) == -1) + error(); + pipex.pid1 = fork(); + if (pipex.pid1 == -1) + error(); + if (pipex.pid1 == 0) + process_child(argv, envp, pipex.fd); + waitpid(pipex.pid1, NULL, 0); + process_parent(argv, envp, pipex.fd); } else { - ft_putendl_fd("Argument threshold not covered\n", 2); - exit(EXIT_FAILURE); + ft_putendl_fd("\033[32mArguments are wrong Bro!!\n\e[0m", 2); + ft_putendl_fd("Ex: ./pipex \n"); } - return (pipe.lock_state); + return (0); } diff --git a/src/pipex.o b/src/pipex.o index f411e1a507ccfa7114e83c7be54f3b327b947283..83f5386f958c6abd911c73335d2de5a61d52b0c2 100644 GIT binary patch literal 3236 zcmb7GU2GIp6uz^wGu`dBy9)&b5!~AHW5VvX1rgLDl@_KJVr`4I{AAqD&UTk>cQ>=M zr5I8{Q>3m{NF>ojW1~?q5W@>eqd|=Hfy4(i@x{akd@vEBF~%2yhWeeEJ9WFPQEzhZ zch0%ze)rs;Id`tz{^d>;V}i)gpt?~{QWHW&S%K;y{U6G^vfXi(`#3r{8Pys-PE}2P z%;X9{Rr@;n`~KD)$xT6^5Fb%0KF;B0$H?v!Rn_vQk;)8lLph(rvyJzkmz*{&Au*zF01o*40dGM9){?>*DA67)^%qyT`_owjy74 z@Q_A6wsXGcI3HIT zXp@di=-j__Dq}I0@82!X_Yog74L&Mg{6l;#=v$6z#U7|;GAb2X1lg}*99pHSIliouc`zlly*iZ)TvCMsG)%G8tsKFe8|xp>mADt zK4A`gl_tCaJ1b5cfWK0#B}FNEmEzu8%GPftCmLZ6Oav?!l9l7L*P$G|V$C1$wHZT& z5j|su%%q{`li74Uq>pL39@pdb)vQ8qCToVY?5J+&arD#o9@5gW%uooXd@7p>HMc~X zB2A(7mNnem(gZECu_e;7^+A?5v}i7s)5jtji|$Sh8ZqNYv|S(7)7hMEM0aFIMq-)x zZrrcFY&M;b_O^HBqkCf7Q@#DoO_An@BKi0*E7zk#S!6InkB%TQ#`4ikE!{@;kgl2e zXgAHptQlDsEBuJ&p%al$eW~I_vOEZCap8jZE}!^ZD=v$N@$URm%W2 z1wN8GLG=54#K)Mo7QUTzq-=p&EePcAtB3!?&})dw=i3I6?ZmCMbCiefFCNw=w3MC; zq@qmNV72u8&F2?Vgl9fPhY&c4RuoUqj$bHMXT~pD>g#szh4IVts#`pLb=(@eXc|T) zou|evzX6cnBKcF2gsO9ZSyb0L&sTs8u9aSzgC=yXV&1PEd9~a7og?4x@&4e*p&IW^ zN3IWge{DI4h>z@qbe`0o-}Uy<{rOkFZ#s6;cjD6UDlK&8XdL##sIQ>DgGxJ3yGCoG zgTbw$LOVbv+K@)e!ss~3M7zaJv)nWdT!xB5XG~tSo!kpjN#Xxn+L^w1_nlE1|R{%OhEhr#83cYAdm#&8z4RoFas(s0MZBqFh0;s1`uWi2?9ZU zd`W6W34{&dhqy+BAo%Dkn0ZLz4M=RDd5HxDIjQk^iMgr8K#BNxmvF}*H)JJXwhB}P zi+NBNLlnTw%TLNm28p1X2Qvpoo1o|hn}H$%GY{;(g2ZHW^E@EdGQiA>K+%ocypqZS ztp3e`nx_M$YY3QU1XL#h#Nepq=VD+3Vi52McJu&=!J?c8EDGT>GO#iH2Lf8D5rNtT RNsDX@%)r#c!oUr-69D}rLizvz From fdf02e70e484f344344b5743c6193a4e9125d317 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Mon, 19 Dec 2022 03:04:44 +0100 Subject: [PATCH 10/31] fnc created to search through env and split the cmd --- src/main.c | 4 ++- src/pipe_utils.c | 69 ++++++++++++++++++++++++++++++++++++++--------- src/pipex_bonus.c | 12 +++++++++ 3 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 src/pipex_bonus.c diff --git a/src/main.c b/src/main.c index 41d2aa4..a7f7994 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 12:57:19 by mabbas #+# #+# */ -/* Updated: 2022/12/18 12:59:24 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 03:03:28 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,5 +14,7 @@ int main(int argc, char **argv) { + char **envp; + return (pipex(argc, argv, envp)); } diff --git a/src/pipe_utils.c b/src/pipe_utils.c index 3fdd1c8..243856b 100644 --- a/src/pipe_utils.c +++ b/src/pipe_utils.c @@ -6,31 +6,74 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 14:13:34 by mabbas #+# #+# */ -/* Updated: 2022/12/18 14:20:28 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 03:02:34 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ #include "../includes/pipex.h" -void dup42(int fd1, int fd2, char **cmd, t_pipe *pipe) +void free_ptr(char **ptr) { - if (dup(fd1, fd2) == -1) - exec_perror(cmd, "command execution", 1, pipex); + int i; + + i = 0; + while (ptr[i++]) + free(ptr[i]); + free(ptr); } -void replace_all_cmd(char **cmd, char *old_w, char *new_w) +/**Function to look into the path line inside the environment variable + * Each command path is splitted and tested and then returns the correct value. +**/ +char *path_find(char *cmd, char **envp) { - int i; + char **path_var; + char *path; + int i; + char *partial_path; i = 0; - while (cmd[i++]) - replace_all_str(&cmds[i], old_w, new_w); + while (ft_strnstr(envp[i], "PATH", 4) == 0) + i++; + path_var = ft_split(envp[i] + 5, ':'); + i = 0; + while (path_var[i]) + { + partial_path = ft_strjoin(path_var[i], "/"); + path = ft_strjoin(path_var, cmd); + free(partial_path); + if (get_access(path, 0) == 0) + return (path); + free (path); + i++; + } + free_path(path_var); } -void replace_all_str(char **str, char *old_w, char *new_w) +void error(void) { - if (!str || !*str) - return ; - while (ft_strnstr(*str, old_w, ft_strlen(*str))) - *str = ft_replace_str(*str, old_w, new_w); + perror("\033[32mError"); + exit(EXIT_FAILURE); +} + +/**Function to take the cmd and send to find_path before executing. + * Here using the execve which transforms the calling process + * to a new process.If execve return to calling process then + * error will occur and return value is -1. **/ +void exec(char *argv, char **envp) +{ + char **cmd; + int i; + char *path; + + i = 0; + cmd = ft_split(argv, ' '); + path = path_find(cmd[0], envp); + if (!path) + { + free_ptr(cmd); + error(); + } + if (execve(path, cmd, envp) == -1) + error(); } diff --git a/src/pipex_bonus.c b/src/pipex_bonus.c new file mode 100644 index 0000000..1fcfdf4 --- /dev/null +++ b/src/pipex_bonus.c @@ -0,0 +1,12 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipex_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/19 03:03:44 by mabbas #+# #+# */ +/* Updated: 2022/12/19 03:03:44 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + From 37dec412edf10b5c7980ec55999b0299c99561c3 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Mon, 19 Dec 2022 03:47:09 +0100 Subject: [PATCH 11/31] heredoc function created and needs to be refactored --- includes/pipex.h | 5 ++- src/pipe_utils_bonus.c | 39 ++++++++++++++++++ src/pipex.c | 4 +- src/pipex_bonus.c | 91 +++++++++++++++++++++++++++++++++++++++++- 4 files changed, 135 insertions(+), 4 deletions(-) create mode 100644 src/pipe_utils_bonus.c diff --git a/includes/pipex.h b/includes/pipex.h index e056415..43c91c3 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/19 02:02:36 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 03:34:21 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,9 @@ typedef struct pipe { int fd[2]; pid_t pid1; + pid_t reader; + int in_file; + int out_file; } t_pipe; /** Pipe opetator initialization and file handling **/ diff --git a/src/pipe_utils_bonus.c b/src/pipe_utils_bonus.c new file mode 100644 index 0000000..288b0a3 --- /dev/null +++ b/src/pipe_utils_bonus.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipe_utils_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/19 03:36:07 by mabbas #+# #+# */ +/* Updated: 2022/12/19 03:42:30 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +void display(void) +{ + ft_putendl_fd("\033[32mArguments are wrong Bro!!\n\e[0m", 2); + ft_putendl_fd("Ex: ./pipex <...> \n", 1); + ft_putendl_fd("Ex: ./pipex \"here_doc\" \ + <...> \n", 1); + exit(EXIT_SUCCESS); +} + +/** Fnc to open the files with right flag **/ +int file_open(char *argv, int i) +{ + int file; + + file = 0; + if (i == 0) + file = open(argv, O_WRONLY | O_CREAT | O_APPEND, 0777); + else if (i == 1) + file = open(argv, O_WRONLY | O_CREAT | O_TRUNC, 0777); + else if (i == 2) + file = open(argv, O_RDONLY, 0777); + if (file == -1) + error(); + return (file); +} diff --git a/src/pipex.c b/src/pipex.c index d217dd7..1e9a4bf 100644 --- a/src/pipex.c +++ b/src/pipex.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ -/* Updated: 2022/12/19 02:02:31 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 03:37:08 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -74,7 +74,7 @@ int pipex(int argc, char **argv, char **envp) else { ft_putendl_fd("\033[32mArguments are wrong Bro!!\n\e[0m", 2); - ft_putendl_fd("Ex: ./pipex \n"); + ft_putendl_fd("Ex: ./pipex \n", 2); } return (0); } diff --git a/src/pipex_bonus.c b/src/pipex_bonus.c index 1fcfdf4..72c5af6 100644 --- a/src/pipex_bonus.c +++ b/src/pipex_bonus.c @@ -6,7 +6,96 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/19 03:03:44 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:03:44 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 03:43:31 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ +#include "../includes/pipex.h" + +/** Child process that is created by fork and pipe, outputs are put + * inside a pipe and then closed with the exec fnc. Main process will + * change the stdin for the pipe file descriptor. */ +void process_child(char *argv, char **envp) +{ + t_pipe pipex; + + if (pipe(pipex.fd) == -1) + error(); + pipex.pid1 = fork(); + if (pipex.pid1 == -1) + error(); + if (pipex.pid1 == 0) + { + close(pipex.fd[0]); + dup2(pipex.fd[1], STDOUT_FILENO); + exec(argv, envp); + } + else + { + close(pipex.fd[1]); + dup2(pipex.fd[0], STDIN_FILENO); + waitpid(pipex.pid1, NULL, 0); + } +} + +/** Function which makes a child process and reads from the stdin + * with get_next_line until reaching the delimiter word and puts + * the output inside a pipe. + * like suppose cmd << delimiter. THis helps to avoid escape + * special characters in the text. **/ + +void heredoc(char *limiter, int argc) +{ + char *line; + t_pipe pipex; + + if (argc < 6) + use(); + if (pipe(pipex.fd) == -1) + error(); + pipex.reader = fork(); + if (pipex.reader == 0) + { + close(pipex.fd[0]); + while (get_next_line(pipex.fd) != NULL) + { + if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) + exit(EXIT_SUCCESS); + write(pipex.fd[1], line, ft_strlen(line)); + } + } + else + { + close(pipex.fd[1]); + dup2(pipex.fd[0], STDIN_FILENO); + wait (NULL); + } +} + +int main(int argc, char **argv, char **envp) +{ + int i; + t_pipe *pipex; + + if (argc >= 5) + { + if (ft_strncmp(argv[1], "here_doc", 8) == 0) + { + i = 3; + pipex->out_file = file_open(argv[argc - 1], 0); + heredoc(argv[2], argc); + } + else + { + i = 2; + pipex->out_file = file_open(argv[argc - 1], 1); + pipex->out_file = file_open(argv[1], 2); + dup2(pipex->in_file, STDIN_FILENO); + } + while (i < argc -2) + process_child(argv[i++], envp); + dup2(pipex->out_file, STDOUT_FILENO); + exec(argv[argc - 2], envp); + } + display(); +} From 22c4715d90906311f4f34f63cf64b3fa4d9fd63d Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Mon, 19 Dec 2022 04:03:03 +0100 Subject: [PATCH 12/31] refactored the file open fnc to replace all if else --- includes/pipex.h | 16 +++++++++++++--- src/pipe_utils_bonus.c | 26 +++++++++++++++++--------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/includes/pipex.h b/includes/pipex.h index 43c91c3..787841c 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:34:21 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 03:54:44 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ # include "../libs/libft/libft.h" # include "../libs/gnl/get_next_line.h" -typedef struct pipe +typedef struct s_pipe { int fd[2]; pid_t pid1; @@ -32,12 +32,22 @@ typedef struct pipe int out_file; } t_pipe; +typedef struct s_mode +{ + int mode; + char *name; +} t_filemode; + +t_filemode g_file_mode[] = {{O_WRONLY | O_CREAT | O_APPEND, "append"}, \ + {O_WRONLY | O_CREAT | O_TRUNC, "truncate"}, \ + {O_RDONLY, "read"}}; + /** Pipe opetator initialization and file handling **/ void error(void); char *path_find(char *cmd, char **envp); void exec(char *argv, char **envp); -int file_open(const char *argv, int i); +int file_open(char *argv, int i); void use(void); #endif diff --git a/src/pipe_utils_bonus.c b/src/pipe_utils_bonus.c index 288b0a3..639daec 100644 --- a/src/pipe_utils_bonus.c +++ b/src/pipe_utils_bonus.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/19 03:36:07 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:42:30 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 04:02:27 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,18 +21,26 @@ void display(void) exit(EXIT_SUCCESS); } -/** Fnc to open the files with right flag **/ +/** Fnc to open the files with right flag + * Here I had an array f structs containing all the necessary info + * for each file opening mode. Also added descriptinve name for the + * mode("append"). I used the global var g_file_mode array to replace + * if else statements. When the array of struct matches **/ int file_open(char *argv, int i) { int file; + int j; - file = 0; - if (i == 0) - file = open(argv, O_WRONLY | O_CREAT | O_APPEND, 0777); - else if (i == 1) - file = open(argv, O_WRONLY | O_CREAT | O_TRUNC, 0777); - else if (i == 2) - file = open(argv, O_RDONLY, 0777); + file = -1; + j = 0; + while (j++ < 3) + { + if (g_file_mode[j].mode == i) + { + file = open(argv, g_file_mode[j].mode, 0777); + break ; + } + } if (file == -1) error(); return (file); From ec2f2bfb7ffe7f4eb12ba34d72b5ccd73674f2c7 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Mon, 19 Dec 2022 04:12:32 +0100 Subject: [PATCH 13/31] fixed bugs with infile and outfile --- includes/pipex.h | 4 ++-- src/pipex.c | 35 ++++++++++++++++++----------------- src/pipex.o | Bin 3236 -> 5232 bytes 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/includes/pipex.h b/includes/pipex.h index 787841c..fea4c72 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:54:44 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 04:10:54 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,6 +48,6 @@ char *path_find(char *cmd, char **envp); void exec(char *argv, char **envp); int file_open(char *argv, int i); -void use(void); +void display(void); #endif diff --git a/src/pipex.c b/src/pipex.c index 1e9a4bf..e43d3ba 100644 --- a/src/pipex.c +++ b/src/pipex.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:37:08 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 04:11:50 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,17 +15,17 @@ /** Child process inside a fork that runs , takes the input file, puts the * output inside a pipe and closes with the exec function */ -void process_child(char **argv, char **envp, int fd) +void process_child(char **argv, char **envp, int *fd) { - t_pipe piped; - int in_file; + t_pipe *piped; - in_file = open(argv[1], O_RDONLY, 0777); - if (in_file == -1) + piped = NULL; + piped->in_file = open(argv[1], O_RDONLY, 0777); + if (piped->in_file == -1) error(); - dup2(piped.fd[1], STDOUT_FILENO); - dup2(in_file, STDIN_FILENO); - close(piped.fd[0]); + dup2(fd[1], STDOUT_FILENO); + dup2(piped->in_file, STDIN_FILENO); + close(fd[0]); exec(argv[2], envp); } @@ -52,8 +52,9 @@ void process_parent(char **argv, char **envp, int *fd) int pipex(int argc, char **argv, char **envp) { - t_pipe pipex; + t_pipe *pipex; + pipex = NULL; if (argc > 5) { ft_putendl_fd("Argument threshold exceeded!\n", 2); @@ -61,15 +62,15 @@ int pipex(int argc, char **argv, char **envp) } else if (argc == 5) { - if (pipe(pipex.fd) == -1) + if (pipe(pipex->fd) == -1) error(); - pipex.pid1 = fork(); - if (pipex.pid1 == -1) + pipex->pid1 = fork(); + if (pipex->pid1 == -1) error(); - if (pipex.pid1 == 0) - process_child(argv, envp, pipex.fd); - waitpid(pipex.pid1, NULL, 0); - process_parent(argv, envp, pipex.fd); + if (pipex->pid1 == 0) + process_child(argv, envp, pipex->fd); + waitpid(pipex->pid1, NULL, 0); + process_parent(argv, envp, pipex->fd); } else { diff --git a/src/pipex.o b/src/pipex.o index 83f5386f958c6abd911c73335d2de5a61d52b0c2..1c3ce96e8a2eac3ca09492af35c2411f0fb4405f 100644 GIT binary patch literal 5232 zcmb_gZEO?g9e>XDoiA}>8waRqT5vW}K&#)vOMwMwTD+M+wI~UY5Uq!EzQit$ZJlj! zDk2yuY?ez0)i!PWFtIPwKJ)|XCQW-OMOsCvDzvVeHl}t{v_YF{otEuGmu+6tz^=v-xozu;W=c zXLx-Fk!cYAnuUm>q*LY8f(w3odj@+J{mZ;TjEBAtJmPmbz!;64U4W;JR>l>OG^&7i zxTpVf3u!YPuSkOqxoP8v&=QIkUTSny*N)TpEye32GLY9z#ga|jSX9g6W%FYNO0na$ zi)O=>yj5GX>0d{Gd6f+>RV?N-C7+tmO3UCydH*h$Fl+-~H{2z)EM8&sDU~Yi{9fjG z>!}j*qmPMa@GGWNJKi5{cyE17yz*pm+5Wm^lh>1ce(!!Ho?4gyud-6fpUCFZigIAD ziC{i6d_Irz;8Cx+?&cQPpKbiKj54NUHp~Y0{c)Y+S@Us~<8gTAVJu_Wq^LoF=<}JazNfwzQT7Xm>PV|aYcOhO@{B#Qgd4wTp&^l51DVSOl#LQ9?s ze|2NkN7@IIwcE+*_ha#^$=cL>vR0W()(*}lUro$V(`5aL`DA@ku3h`dT`;`NW_fg` z*5gOz%=D!HuJ0^u1YVPvtyf)Fs5eF+{sCpxC;hd=+g97z`i@%SrsWYnpel2<#IMZQ z^eeG1{@l0j8G047_$^^qPoPybbVZODYa~`n+?t-c)kuim4@%n&FemwM;Ug+p(ZXbzFutardC=xAZi&{0* zJ(kUB@!g?rbt27G7d(n~?dFTSiN+LSeb;CSki>Z0^cdU0{T@1vLuxLC*B;mOQnru} z#k(T0NG!C`h=$``F?f;9U6HOGn^;L#O*RpgMGs_0^^`st-K!nfa)qL%M;|XtOr-MZ z1K9n8g+i_r9oW0S6n!G4eqmrJ9*e}cMoQ^p%K%1z{f!HCG4Q*Y*gGHE}fzr2KWj=I2p_O-)YgrsNzz!1X*HP9{DH^&%x~kY0lF3!iqs0)2`? zoy>g$`W)F0$xMC?hUjXlL&GX`73BYsA^M+|;VG$2g`(ew?p7r%=~2a3=kZG;L6 z_q(ZY?@;Ig=8i)DjqC?y_kd-uZE+ugZ4C1|znl0Pc4#GYl3`4bgNYxaVhf76PLwg9 zJ7Kz#B4zA@>3oM5#=%rTTirfVdiL$ZKYZrzAHMp_JLg_H_F%=)>5rZM zisxtURqfJ^$I5Ex>nATE_XjA~P=1T@J_-$B03GT?*^aUwg=QLmj3ysDn1uEMg=lB3 zM}g3MQHZ8-wGlBl8%)}SJY*~$xU`yhh~}Ic(!${(+I;F2V<|+Nn3JGoK_OZ# zydiB>3emph4PjYATNXkIOXL#w_>po?edD%5>OJ+=gb7dgGok7i{4H+z0AOZ zS&K0C(}L}SZG3kTr+wveFze=nO&JhGxmg|&gVSQ0bVhXiT3pd9O42TIl?2@@I;C;Z zJuEt;vgnq6DtZxejES;Dp$iBNi+*ZW76q8>_hO(~-Xpdm*zuA~_EZA>H|K z1P#ZGh7PG4K(E37&OJbKkZ8q4&ol?f$avEc(F3#=DTDl8@jd`{i!KmcF$|tVqOTY6 zUFZjNuTcT!+zTKrh>EqS=ym@1)DWPY*V&jDK+xF@HEh*8%b*0r5xGrrzIY1#a7fNK zSlJ6D}Py_@0NKgQonap(&sC z80FCwopdiW<%SBms8{|^c3b;bYy literal 3236 zcmb7GU2GIp6uz^wGu`dBy9)&b5!~AHW5VvX1rgLDl@_KJVr`4I{AAqD&UTk>cQ>=M zr5I8{Q>3m{NF>ojW1~?q5W@>eqd|=Hfy4(i@x{akd@vEBF~%2yhWeeEJ9WFPQEzhZ zch0%ze)rs;Id`tz{^d>;V}i)gpt?~{QWHW&S%K;y{U6G^vfXi(`#3r{8Pys-PE}2P z%;X9{Rr@;n`~KD)$xT6^5Fb%0KF;B0$H?v!Rn_vQk;)8lLph(rvyJzkmz*{&Au*zF01o*40dGM9){?>*DA67)^%qyT`_owjy74 z@Q_A6wsXGcI3HIT zXp@di=-j__Dq}I0@82!X_Yog74L&Mg{6l;#=v$6z#U7|;GAb2X1lg}*99pHSIliouc`zlly*iZ)TvCMsG)%G8tsKFe8|xp>mADt zK4A`gl_tCaJ1b5cfWK0#B}FNEmEzu8%GPftCmLZ6Oav?!l9l7L*P$G|V$C1$wHZT& z5j|su%%q{`li74Uq>pL39@pdb)vQ8qCToVY?5J+&arD#o9@5gW%uooXd@7p>HMc~X zB2A(7mNnem(gZECu_e;7^+A?5v}i7s)5jtji|$Sh8ZqNYv|S(7)7hMEM0aFIMq-)x zZrrcFY&M;b_O^HBqkCf7Q@#DoO_An@BKi0*E7zk#S!6InkB%TQ#`4ikE!{@;kgl2e zXgAHptQlDsEBuJ&p%al$eW~I_vOEZCap8jZE}!^ZD=v$N@$URm%W2 z1wN8GLG=54#K)Mo7QUTzq-=p&EePcAtB3!?&})dw=i3I6?ZmCMbCiefFCNw=w3MC; zq@qmNV72u8&F2?Vgl9fPhY&c4RuoUqj$bHMXT~pD>g#szh4IVts#`pLb=(@eXc|T) zou|evzX6cnBKcF2gsO9ZSyb0L&sTs8u9aSzgC=yXV&1PEd9~a7og?4x@&4e*p&IW^ zN3IWge{DI4h>z@qbe`0o-}Uy<{rOkFZ#s6;cjD6UDlK&8XdL##sIQ>DgGxJ3yGCoG zgTbw$LOVbv+K@)e!ss~3M7zaJv)nWdT!xB5XG~tSo!kpjN#Xxn Date: Mon, 19 Dec 2022 04:16:32 +0100 Subject: [PATCH 14/31] next step:fix makefile --- Makefile | 17 +++++++++-------- src/pipex.o | Bin 5232 -> 0 bytes 2 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 src/pipex.o diff --git a/Makefile b/Makefile index e7d4326..3dc3ab8 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: mabbas +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/12/18 02:39:41 by mabbas #+# #+# # -# Updated: 2022/12/19 01:13:02 by mabbas ### ########.fr # +# Updated: 2022/12/19 04:15:44 by mabbas ### ########.fr # # # # **************************************************************************** # @@ -19,20 +19,21 @@ INC = -I ./includes/ LIBFT = ./libs/libft/ -SRCS = src/pipex.c \ - src/file_utils.c \ +SRCS = src/main.c \ + src/pipex.c \ + src/pipex_utils.c \ libs/gnl/get_next_line.c \ - libs/gnl/get_next_line_utils.c \ - # src/initialization.c \ + libs/gnl/get_next_line_utils.c SRCS_B = src/pipex_bonus.c \ - src/utils.c \ - src/utils_bonus.c \ + src/pipex_utils.c \ + src/pipex_utils_bonus.c \ libs/gnl/get_next_line.c \ libs/gnl/get_next_line_utils.c OBJS = ${SRCS:.c=.o} -OBJ_PATH = objs/ +OBJS_B = ${SRCS_B:.c=.o} + SUBM_STATE := $(shell find libs/libft -type f && libs/gnl -type f) diff --git a/src/pipex.o b/src/pipex.o deleted file mode 100644 index 1c3ce96e8a2eac3ca09492af35c2411f0fb4405f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5232 zcmb_gZEO?g9e>XDoiA}>8waRqT5vW}K&#)vOMwMwTD+M+wI~UY5Uq!EzQit$ZJlj! zDk2yuY?ez0)i!PWFtIPwKJ)|XCQW-OMOsCvDzvVeHl}t{v_YF{otEuGmu+6tz^=v-xozu;W=c zXLx-Fk!cYAnuUm>q*LY8f(w3odj@+J{mZ;TjEBAtJmPmbz!;64U4W;JR>l>OG^&7i zxTpVf3u!YPuSkOqxoP8v&=QIkUTSny*N)TpEye32GLY9z#ga|jSX9g6W%FYNO0na$ zi)O=>yj5GX>0d{Gd6f+>RV?N-C7+tmO3UCydH*h$Fl+-~H{2z)EM8&sDU~Yi{9fjG z>!}j*qmPMa@GGWNJKi5{cyE17yz*pm+5Wm^lh>1ce(!!Ho?4gyud-6fpUCFZigIAD ziC{i6d_Irz;8Cx+?&cQPpKbiKj54NUHp~Y0{c)Y+S@Us~<8gTAVJu_Wq^LoF=<}JazNfwzQT7Xm>PV|aYcOhO@{B#Qgd4wTp&^l51DVSOl#LQ9?s ze|2NkN7@IIwcE+*_ha#^$=cL>vR0W()(*}lUro$V(`5aL`DA@ku3h`dT`;`NW_fg` z*5gOz%=D!HuJ0^u1YVPvtyf)Fs5eF+{sCpxC;hd=+g97z`i@%SrsWYnpel2<#IMZQ z^eeG1{@l0j8G047_$^^qPoPybbVZODYa~`n+?t-c)kuim4@%n&FemwM;Ug+p(ZXbzFutardC=xAZi&{0* zJ(kUB@!g?rbt27G7d(n~?dFTSiN+LSeb;CSki>Z0^cdU0{T@1vLuxLC*B;mOQnru} z#k(T0NG!C`h=$``F?f;9U6HOGn^;L#O*RpgMGs_0^^`st-K!nfa)qL%M;|XtOr-MZ z1K9n8g+i_r9oW0S6n!G4eqmrJ9*e}cMoQ^p%K%1z{f!HCG4Q*Y*gGHE}fzr2KWj=I2p_O-)YgrsNzz!1X*HP9{DH^&%x~kY0lF3!iqs0)2`? zoy>g$`W)F0$xMC?hUjXlL&GX`73BYsA^M+|;VG$2g`(ew?p7r%=~2a3=kZG;L6 z_q(ZY?@;Ig=8i)DjqC?y_kd-uZE+ugZ4C1|znl0Pc4#GYl3`4bgNYxaVhf76PLwg9 zJ7Kz#B4zA@>3oM5#=%rTTirfVdiL$ZKYZrzAHMp_JLg_H_F%=)>5rZM zisxtURqfJ^$I5Ex>nATE_XjA~P=1T@J_-$B03GT?*^aUwg=QLmj3ysDn1uEMg=lB3 zM}g3MQHZ8-wGlBl8%)}SJY*~$xU`yhh~}Ic(!${(+I;F2V<|+Nn3JGoK_OZ# zydiB>3emph4PjYATNXkIOXL#w_>po?edD%5>OJ+=gb7dgGok7i{4H+z0AOZ zS&K0C(}L}SZG3kTr+wveFze=nO&JhGxmg|&gVSQ0bVhXiT3pd9O42TIl?2@@I;C;Z zJuEt;vgnq6DtZxejES;Dp$iBNi+*ZW76q8>_hO(~-Xpdm*zuA~_EZA>H|K z1P#ZGh7PG4K(E37&OJbKkZ8q4&ol?f$avEc(F3#=DTDl8@jd`{i!KmcF$|tVqOTY6 zUFZjNuTcT!+zTKrh>EqS=ym@1)DWPY*V&jDK+xF@HEh*8%b*0r5xGrrzIY1#a7fNK zSlJ6D}Py_@0NKgQonap(&sC z80FCwopdiW<%SBms8{|^c3b;bYy From 50b9254a62431100c14f179a4ea0c077c104809d Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Tue, 20 Dec 2022 02:35:52 +0100 Subject: [PATCH 15/31] refactored the file open fnc to replace all if else --- Makefile | 5 ++--- includes/pipex.h | 2 +- src/main.c | 20 ------------------ src/pipex.c | 16 ++++++++------ src/pipex.o | Bin 0 -> 5468 bytes src/pipex_bonus.c | 7 +++--- src/{pipe_utils.c => pipex_utils.c} | 8 +++---- ...pipe_utils_bonus.c => pipex_utils_bonus.c} | 0 8 files changed, 20 insertions(+), 38 deletions(-) delete mode 100644 src/main.c create mode 100644 src/pipex.o rename src/{pipe_utils.c => pipex_utils.c} (91%) rename src/{pipe_utils_bonus.c => pipex_utils_bonus.c} (100%) diff --git a/Makefile b/Makefile index 3dc3ab8..decb687 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: mabbas +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/12/18 02:39:41 by mabbas #+# #+# # -# Updated: 2022/12/19 04:15:44 by mabbas ### ########.fr # +# Updated: 2022/12/20 02:31:26 by mabbas ### ########.fr # # # # **************************************************************************** # @@ -19,8 +19,7 @@ INC = -I ./includes/ LIBFT = ./libs/libft/ -SRCS = src/main.c \ - src/pipex.c \ +SRCS = src/pipex.c \ src/pipex_utils.c \ libs/gnl/get_next_line.c \ libs/gnl/get_next_line_utils.c diff --git a/includes/pipex.h b/includes/pipex.h index fea4c72..7eb0c67 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/19 04:10:54 by mabbas ### ########.fr */ +/* Updated: 2022/12/20 02:30:50 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/main.c b/src/main.c deleted file mode 100644 index a7f7994..0000000 --- a/src/main.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* main.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 12:57:19 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:03:28 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -int main(int argc, char **argv) -{ - char **envp; - - return (pipex(argc, argv, envp)); -} diff --git a/src/pipex.c b/src/pipex.c index e43d3ba..dea05c4 100644 --- a/src/pipex.c +++ b/src/pipex.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ -/* Updated: 2022/12/19 04:11:50 by mabbas ### ########.fr */ +/* Updated: 2022/12/20 02:31:51 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -47,10 +47,15 @@ void process_parent(char **argv, char **envp, int *fd) exec(argv[3], envp); } -/** This fnc runs the child and parent process or displays an +/** This two fnc runs the child and parent process or displays an * an error message if wrong arguments are passed **/ +void msg(void) +{ + ft_putendl_fd("\033[32mArguments are wrong Bro!!\n\e[0m", 2); + ft_putendl_fd("Ex: ./pipex \n", 2); +} -int pipex(int argc, char **argv, char **envp) +int main(int argc, char **argv, char **envp) { t_pipe *pipex; @@ -73,9 +78,6 @@ int pipex(int argc, char **argv, char **envp) process_parent(argv, envp, pipex->fd); } else - { - ft_putendl_fd("\033[32mArguments are wrong Bro!!\n\e[0m", 2); - ft_putendl_fd("Ex: ./pipex \n", 2); - } + msg(); return (0); } diff --git a/src/pipex.o b/src/pipex.o new file mode 100644 index 0000000000000000000000000000000000000000..ff114a2bd0bd32945b719c7da9be940a96b52fb7 GIT binary patch literal 5468 zcmb_geQXow8Gp~tot-$bO~OZ53K)&>u{CxQprtf{2JmJARapp-z}myum&B0R-q{Wb z0>MZ@L@6z_owiohL^Y}VW0f{-)iiA@LmGl24UM5`V_G#uDqT~p)A(mywsvE`-`#tO z<7DbK^^u=@zMp&E&wF40@*jWxmq!T2E${%A0q^h;0syE><3huiA1Ip$-^OVvWuQB@{RkvO31iCo@HrF*5KG@p~_w6s6U zVv0b%W=f;$$#_0KC8FMKZJlk?@+}$AC{=GEAL|>c5rTbJ3dm<1D)j0o(lR06zP64p zOuNaTVRkxTvZOw!W|ZjUiyt~<8iRuM&B!;*VgTdTQ;4sWOJ3oCHdmnY`>wW;{!%+j(n$O`(C$W#j#4sOp`hDWey!q(51A#u-6V; zA>&s%6HUq>bLO+^%f=I>`8rDSwf~p-^26CV+dC-pJtfCC{fYS!nE}+5*9+;RsdQ4; zcW#?*3f80?&r?!)%Wu!SD;N(s^d;>z`t%+XqhSY>u8%G`oso)3nGBMoG8(<(NX(B^ zg?ppXU)#EotBp_oJg|(d6~d`+Ms;IRL=A;5D_DWWg^fn3omnw>_q2V8)qnH*MB|wF`F|- zACH`vR0Gd)Z;zdCoj)VZ&!+m(ayoO0PGcwR>PIGv8|pL&1LL&^##?MgFN}{2c}3vN zJUhodv~nUgw#UxZbY=8f(`|dGyfW2^DHo@M-k%!h_mMUF4bMm?Mcyo=6Y;zu zOe3BYbqCfq544%Rg#ja-&xPWq5jtvS(!HTAW@h>Fin;@h10p)KF%*tuQ(0pu)Y6mc zH<~tuS`q_ENtz*1+q|hlIGIBEKGVqcW%`pLV<=%5Nh7&@#gA>`Wap zZV2G=NVzt3k2o+>Mp!Uov9D#X|g6>u8W{Ccm)*&BM|$%jz+~><^Nct5{SD9+_Hz1&V+(HnEei5jw zDR(>PEcb3G%AUu=E!3w#zE6i$+M6Ij<+GlvpeL!S7oMA-XUVVh3hxatYFYUhi1#)g zno{vw@*cF^hHro8cc4{&h{p<`vRwN-NUic24;%auRSyVH zGpGjxq%84z_B#C1O3#zvt-fCt^so^YADS=RWUMiB3AGx555uS~Q9G^6 z`#}-g-4+99eZjfGItN1P6nVx(ptvuAlj^ySeYf6wJ@m(4Ts-GHeDdYvH@_Nq>&wvh z1CIlr0los{jA9<1G6)=O$}dp>u!AYD=L5jLCEG4#4ky|7fCQ&jX`WRpOZ;DaxOEe8 zxUqnj0k#=)9gD|jwV4LyrHySTPhekZKpqI+eQ{ykf!s51?|b9vzy0(2uRcEe=8+`@ zSADSY)H&ZzJqzlzn_KdU(ASP%g6|K2*MPqRegM1=tVVco^@@l;)oLHw~fq)wx6tXPCw52KIzAe!-6^Ty$C~A`pLRy z<$D1=TPC8YR8f?V{8c1uDi!?phr^LnI?-Q9;d8xBbXyHEgfz2j(J+ZA&V_{D5W#FyD0Q6j-WiH{I$gtT}E2_7`dqAxnQERl* zs_QrEymnR7TGa&_XuImxdR0%i>eBM6NBfEDhsxEXdNrypK-H}V8J1TSu;LGDb%l4c zS_PHQTdf9=N3)Y??mb;_cRv_LV2>5((pr${2IOzfO5|Onx+->fYg7d&US*9hsJ;=I zt@8{;s-4%3qPx^UJM^t+6ll9;Kr^IN4Yyhtmcr2Pe&b{p zQn_!69<>@ucMC|jV|V9KA2ROO+~0+tOLN~Ad6$McD4NmZ_%*Dy=BH?w4~naAg9{V` z(C`ih2Y)Rz+yKRn+Hh6M+`(|=Zuk}`cFKmAKydaXu~816>GGCmju$^gIezet%Uq6DE*It(w}RSeg`CN2c-5?B{yXa9Rb z%Cr&aM*AfSfb~EbYRUZi7R!rDt7_RE95 zZVaVxayLvfgKL6y +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/19 03:03:44 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:43:31 by mabbas ### ########.fr */ +/* Updated: 2022/12/19 04:21:39 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,7 +42,8 @@ void process_child(char *argv, char **envp) * with get_next_line until reaching the delimiter word and puts * the output inside a pipe. * like suppose cmd << delimiter. THis helps to avoid escape - * special characters in the text. **/ + * special characters in the text. + * Here I used fd[0] to read from the stdin. **/ void heredoc(char *limiter, int argc) { @@ -57,7 +58,7 @@ void heredoc(char *limiter, int argc) if (pipex.reader == 0) { close(pipex.fd[0]); - while (get_next_line(pipex.fd) != NULL) + while (get_next_line(pipex.fd[0]) != NULL) { if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) exit(EXIT_SUCCESS); diff --git a/src/pipe_utils.c b/src/pipex_utils.c similarity index 91% rename from src/pipe_utils.c rename to src/pipex_utils.c index 243856b..cb9c9db 100644 --- a/src/pipe_utils.c +++ b/src/pipex_utils.c @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* pipe_utils.c :+: :+: :+: */ +/* pipex_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 14:13:34 by mabbas #+# #+# */ -/* Updated: 2022/12/19 03:02:34 by mabbas ### ########.fr */ +/* Updated: 2022/12/20 02:34:09 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -40,14 +40,14 @@ char *path_find(char *cmd, char **envp) while (path_var[i]) { partial_path = ft_strjoin(path_var[i], "/"); - path = ft_strjoin(path_var, cmd); + path = ft_strjoin(*path_var, cmd); free(partial_path); if (get_access(path, 0) == 0) return (path); free (path); i++; } - free_path(path_var); + free_ptr(path_var); } void error(void) diff --git a/src/pipe_utils_bonus.c b/src/pipex_utils_bonus.c similarity index 100% rename from src/pipe_utils_bonus.c rename to src/pipex_utils_bonus.c From cec5a5cfefa9d05d0a7dd58cbd69c927167d473b Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Mon, 19 Dec 2022 04:24:13 +0100 Subject: [PATCH 16/31] Create README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1fdb0e0 --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Pipex + +##Learning Goal: + +1. Usage of the Pipe ( | ) operator +2. Learning how linux handle processes +3. Usage of the heredoc, execve, dup,dup2 functions. +4. fork() , Child and Parent process +5. File descriptors and when and what happens with stdin, stdout, stderror +6. usage of perror From a425570d1decba320708f6f67e9d8ba61e799dd5 Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Mon, 19 Dec 2022 04:25:00 +0100 Subject: [PATCH 17/31] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1fdb0e0..1820631 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ ##Learning Goal: -1. Usage of the Pipe ( | ) operator -2. Learning how linux handle processes -3. Usage of the heredoc, execve, dup,dup2 functions. -4. fork() , Child and Parent process -5. File descriptors and when and what happens with stdin, stdout, stderror -6. usage of perror +[1.] Usage of the Pipe ( | ) operator +[2.] Learning how linux handle processes +[3.] Usage of the heredoc, execve, dup,dup2 functions. +[4.] fork() , Child and Parent process +[5.] File descriptors and when and what happens with stdin, stdout, stderror +[6.] usage of perror From 84a644816c1237b7e7e6dfff0abce6ab0741d976 Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Mon, 19 Dec 2022 04:25:26 +0100 Subject: [PATCH 18/31] Update README.md --- README.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1820631..2dcf1db 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,14 @@ ##Learning Goal: -[1.] Usage of the Pipe ( | ) operator -[2.] Learning how linux handle processes -[3.] Usage of the heredoc, execve, dup,dup2 functions. -[4.] fork() , Child and Parent process -[5.] File descriptors and when and what happens with stdin, stdout, stderror -[6.] usage of perror +[1.] Usage of the Pipe ( | ) operator, + +[2.] Learning how linux handle processes, + +[3.] Usage of the heredoc, execve, dup,dup2 functions, + +[4.] fork() , Child and Parent process, + +[5.] File descriptors and when and what happens with stdin, stdout, stderror, + +[6.] usage of perror. From b94bb32f1731b57ea85dc2f109b0a58779ce7d6e Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Mon, 19 Dec 2022 04:26:10 +0100 Subject: [PATCH 19/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2dcf1db..d1b5d77 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Pipex -##Learning Goal: +## Learning Goal: [1.] Usage of the Pipe ( | ) operator, From 9265a06ee7b5405dde6fdab1fe05133e6545ac36 Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Mon, 19 Dec 2022 04:27:28 +0100 Subject: [PATCH 20/31] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d1b5d77..467cad6 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,14 @@ ## Learning Goal: -[1.] Usage of the Pipe ( | ) operator, +[1.☑] Usage of the Pipe ( | ) operator, -[2.] Learning how linux handle processes, +[2.☑] Learning how linux handle processes, -[3.] Usage of the heredoc, execve, dup,dup2 functions, +[3.☑] Usage of the heredoc, execve, dup,dup2 functions, -[4.] fork() , Child and Parent process, +[4.☑] fork() , Child and Parent process, -[5.] File descriptors and when and what happens with stdin, stdout, stderror, +[5.☑] File descriptors and when and what happens with stdin, stdout, stderror, -[6.] usage of perror. +[6.☑] usage of perror. From 84667398d77f14e3a0924a7437e6d3e9fd40e2d4 Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Mon, 19 Dec 2022 04:27:54 +0100 Subject: [PATCH 21/31] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 467cad6..b50af43 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,14 @@ ## Learning Goal: -[1.☑] Usage of the Pipe ( | ) operator, +[1.]☑ Usage of the Pipe ( | ) operator, -[2.☑] Learning how linux handle processes, +[2.]☑ Learning how linux handle processes, -[3.☑] Usage of the heredoc, execve, dup,dup2 functions, +[3.]☑ Usage of the heredoc, execve, dup,dup2 functions, -[4.☑] fork() , Child and Parent process, +[4.]☑ fork() , Child and Parent process, -[5.☑] File descriptors and when and what happens with stdin, stdout, stderror, +[5.]☑ File descriptors and when and what happens with stdin, stdout, stderror, -[6.☑] usage of perror. +[6.]☑ usage of perror. From b3632bb66d08878a51104656e3860f73e7a5c002 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Tue, 20 Dec 2022 02:40:50 +0100 Subject: [PATCH 22/31] all submodules added --- libs/gnl | 2 +- libs/libft | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/gnl b/libs/gnl index 46993cf..6486e2d 160000 --- a/libs/gnl +++ b/libs/gnl @@ -1 +1 @@ -Subproject commit 46993cf145772ed890ee36860ce91e5647ba5527 +Subproject commit 6486e2df2c80976baffd125dd023d79c84a82a09 diff --git a/libs/libft b/libs/libft index e6ade01..494a5e2 160000 --- a/libs/libft +++ b/libs/libft @@ -1 +1 @@ -Subproject commit e6ade01d8096032a787619f82b91188ef18383c9 +Subproject commit 494a5e2c9eae73c2c707a4d85f108f4054dfb502 From 997c05f5908c2991485adbf10b6270ba9d78f4e0 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Wed, 21 Dec 2022 04:19:20 +0100 Subject: [PATCH 23/31] included header for the global variable --- Bug_report_Pipex.jpeg | Bin 0 -> 455021 bytes includes/mode.h | 28 ++++++++++++++++++++++++++++ includes/pipex.h | 12 +----------- pipex | Bin 0 -> 53304 bytes src/pipex.c | 13 ++++++++----- src/pipex.o | Bin 5468 -> 5068 bytes src/pipex_utils.c | 6 ++++-- src/pipex_utils.o | Bin 0 -> 4008 bytes src/pipex_utils_bonus.c | 5 +++-- 9 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 Bug_report_Pipex.jpeg create mode 100644 includes/mode.h create mode 100755 pipex create mode 100644 src/pipex_utils.o diff --git a/Bug_report_Pipex.jpeg b/Bug_report_Pipex.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..736e336599732dd0b0382fc7047e3c574ea352da GIT binary patch literal 455021 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%0AIa)ah|K%4E6b(o0?0*?pov6P*V;a{Z6{hHS)JI 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⋙JHLjnxj85PpL>dxUSZV)$8UwF!p0DaYg~s(e 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

7ienl%Y2q9yw5@6upS%OwY?}Ht_j*Jv zQUu-~I6GhseD7-6-X!XC){DU$bf~cJto(S@Hp5zwQbnS6uj~yD< znN_Gq-kK+#?zP|)`8{GkKDfIO)T;Va@6-g7c#_x<_{2bDQ?1>3maXNYhqLl}?VwU8 zHK7Pj(-%%UJEP2!=IfxISp1$~AWS8OfyK1JN40`klw|!b&f6qcj;#^b0qL9IG_1e{ z(JC3XQ=uJ0t8H&*nyJbA14T)x88srMPPL}9(Cj$EbG7I;j4sIs)(Nf+{1OsJr^fG; zEBgobOgJ*UTIdolnZmZta05jAV_qD-MBW~szq6-pk6&YrdPAU$GyswzP^c5dUK>{6Ykm3Px+3qFi`)L&{+qSd4vk>)uD&`?0qLX)H|ub$H0?JaQ)}fa z^UZ$gpS2@>qV_g#d6Eyoc;qNSDBt8@v)_w9KlOX1mLguq6Kt3&@+`X#3u_`5i-x4u zE?A=*(*u&fJe?ZhTxs%}t<>5Y6zMtheRp^w@E!)&W+76C@@!wsoP?oF9-OSLmR)ezV_IxYsC)>q-sN3bK;k5E*aB&qwU z!M2SL$y>V%=ySjp<&o@GsXFIr-{rLTU=EkcNZtYuf+wV+A zsq5qplDBoH;4Y$pDP=0N$uMM{~${cd-acq1HDZ+Yvq^}9+i6|-b$ zjTTu`N>*ZaJ%+fHWFmrxRHA8gf1tuN!QjWBoF-<`ZZzhJxN=&KbeT-q0HuqO z>^^i+qYkt-dK%0W#u54gQ*o#Ov$KPidJN3K2!KnGIK3+9)d%(_8I4mST${UAFw8?2 zn;D?@P_>@!(pO|j(W7)pjRhl<3{U_D#;-R`AFY}B`WbJv;>T7$xU6Dhuj)Ndf-GNy^!zc=aWeO4`yG&%?7JcZ%R6#|}-1P62E$jKIm z^2_a;Tb)v4M5FKB-{ey@?9@=y4|z!gd#(nF#t+|CB|Omp0#buFVMU(U1;IOzKAB5R zx!=58W1a}MYEXKUBMi;B@xzEWqTYDt^rIt*^;1ys%c67g(W7i(=oZ#@rxtdt7p8C& z_i?>P=~Axt@TG}s)gtHbFtFIuaJ7#dT!?7Gg|7}h^J=87{DH%M)Tq<+fulfHCP_41 zen{WWxAzgY6;+4V{3H+DviViq_A>j8j9i%g6_qk@J=QJihv8hOj9{KnASlAN2pOq9aS+JMpFu*JUIPEbFZirkM$n(6xChzr1X+J#_GsxgS$! zyFsUQKviN7n$Wjw3tinZFo}mPXLML+53qQkzIyo>*U0M<{VyGDYR3B>KdD*P`1*1X zWhJmH5a5+jgNv^=(}{>_FIvtbWo-0!TTc-dzMZhP`&pJsX(z?TD}6nVQyki*f0Rj7 z{F+Sa5-1Y8!0KC^)la?B1eL93tK$@_s7$F?|E0bpr~NhM9?jb`!l@MBsd}Wj*%zmm z4Rt%DjOGv;oD>q0%*v5Tbh;xcc|8L9B$iXcP|O=quBbwvu!pWxB;!~l?v~JPPP(U6 z1z`^d+kMBp892^XSws{De$BbWxxJ@e7$W(2fxTbAuFJZgHL4goF@7C6kI@=&%630g zb#)oE$P@c6@T1E`rE9|j`!G>hTwkWB6`PTpDb>7Wn(3-ssahghfg6&16cjCxow9Ta zmn&kZ({_N3+rClnDvk6OLA5Wxtxi3s^qnk-s7Hu@sk-eJpU!+UZZ1;tHUz2(-2kM1 zWTt(yrqV5drAM&2=W3>HR>J+zDLVmXYk=oNS=3#A%)bB$i^TXT8+>50-( z^Mpz-w$3WqD<4p!;4`aM%R@9k5^}Y^nr6BN>*}68G?lW(!YWMwexjC8Jzc_Y-eOY2 zsvII6y0J+HLA890F}K!A4v%)~unSp#iIeTJtBLwGDLd$qJj~-rSR3TU5q|Ssx5eI} zmJIi&Yc@`?Q!^q4%yH2v-;z~t7q5GN?X?lcPP*hFiS7O3q+%_5w&W^yO!WysHnu~Q zh#>IU%{5M@fT1pczImsvto&Dih9nb)l=9$VoQT5bfEwi#o(wjBcZd2Jrd7hkDI6ZRQ{HwvU5LTE^o`9Da%o$J+TibgiBu zCcd-;YgP?WkT^xdB&r*-DNg-@EtBhl!r*eQ{pR&z8N_A>x>Ve0ZHq_NW(>!7ybG@8 z4*%X20A0}_LH}7U{$SXv83^q+EnMP2{Bakt(Pd#lXqSbC(J7%g07@=#kxH%Tw0vDN z(JO_KM6~MsEf`3?D7F?{*X7MlHhO`u9sPzTGDl4sV?%;BkQ>Hb$DbS#AHhGF+H5_* zn+1XP_Tya5`ATD-lV*({=g`{JfeSI0gOtT*bOqQ<7_6oDw9U^VPw5APq5i!qV2a^& z#ms2Kwj}Ne371$()Rl0=oUi$UUCt-;KQ0auXwflm42!PdNkoXRrv`Jqk<*M; zia28TdPKP-S76hVSt8Le{k{?X4xUH)MzisI)`qZ^-pkoy6d(mRP|9QJz1u9;ygGf0 zy{Cg-lguDx+>&fPYJLQ5W)3kXLn(k4*|fwgD2xJC5>+)4!8AieJi>{{W4@WbQVh~s zX9ipkiq;))IPV9N3lB_c_KiV59bVm{AgDvFco*hPfjM)2_zDN*e5CvmRj9CK2A zmQlu(h-c||{z$5UVGQi?#5f}@5JvMth~LL}l3vmaSZ#PH7K6)_0i1l?CEmS^DEl{N8c{Ep@wnYdZN)yWxzZ=K1#5RpEnYU?U7dAigW+WE zahY=2+=VfFPJ8Q8Z>ExMg7hhNQ9;c&={VUmhjx$_JFbnyKAU%6C|f<&a9f@4!Sgym zIp^YXK(S%@g1DH(i6wV!=Hu7sPV}91ZlZ=AjBsKwi@qM_OBVm3VY7}6W;ov@V0wc%kbfzpRpxWS$m z34OVQg^DDM)Nv=-(BiIqbjAE&&53%iE7fZJ!Mn}R$$P@8Cd>>Ykn|mJSlJzY$B-{L zDMLJNH)hkfW&!iiNj25P0hS-eXS7wvergs;0%HQDfDz|ZSo(z;eCdGsH1U0#-sJV1 zI$d8}j@@lOlz?9WtJ`A}SHt_Mh4h-Re8Dt#O8fBskOU1Dk#zlnOio_Dd4!27qd_7_ z#p(RCInh3e#FVliG7yQ52e9SQ>~)IY3f!Pw(L!A|YUxb(Gi~Nd&3MCcZ}#3;s&V%1 ztn(SDhWu=ez~vANp_eCY`pXz@{v2>X4hNBr9Elx39U!5pu_guk_0eYw{OtnE6>-S4 zlUB6fC8HDB?59neRk|-Y%dG|%4^dQlM4nor&>}rZMT+jkXO%{Fl((h+J;fqrhJZ$7 z_bMD+??_z}S1{s`c&#~s1)`sn%yEj$Do_yCrMqO;?%Xr7Q*e8eqz~l)FMQ|BV6&?w zJ+UcVY%Jw7X+8f406#KSD*F+9{=l)(N)d4LB2BzXS075oGY_}mX+97o+K0;^C-}4@ z!^eJ%2%F;?cJYb0%pE-(ns^X(d-c9GPItwGJHz&3+4SI8bL=I5qPQW92<&qJ2*@|L zJIt>&KfjFPaSh{jlu^|hzYuFyAn z*~F0|8)~-OV}2~@1fbcNQkJ2hw8Dm!i9MlFkr(yl)QMKpX>Zx{f06fAQE_zPns5V+ zCb$H5Z6ru=Yg~du;~E@-I|O$KE&+l&G#(s62yVeOxJ%>i-}HCRnKc(P|K0i5Tufb6 z*IK)(`qf=~zwh&SoRMxC%xG59+w^z_Bp6xCgO{u+XW6hvT@vY`I6*_?-DtDX1xs z{!WC~hGwk=gvS~)nfJGNHGf-l`?eyzeb!J{_a>I1JKEh!SAm8)M@4TkD;z87)qTb5 zWLo6$5@C?sZ}6A%hP0?KZ1wNZWexF19f#Ibfh(tCoO}gsFN8Ss6h{1-PUwk6NDBw) zTSEpG&)xBBOclBL#OfCG8`%p^%#V4YCb?wMqotqClYaBnrlv8|n-gjvx?R@^j!uip zAl{_*IBzIi%asctV3VJO%#ZJ*Z$dra`M9`#l_{y_KzC4lFID2}sGc`Q(ey9%up*Fs zj6d{yucr5vO}~SV>u(iLa@IiB@Tt@x4Q+)Sdis-29d@@CaZ}j@hjg#1><>V~&zGL+ zy)sE^g%CWUH|;{8!hBT4=!{ZjRjE{uLvIeM2zJkcDzT*!16{r*3rp$}v&Q5$^vq-> zd{I7>pQ912){!#t_)&Dgx=)*5xylGM9mA>wS4*|zk>)eGt^Er@nw>P~eCFR)jS0u= z?_Y**%-vuFM*UA*NTki!RTi zuQ*$5yxFqDSOQf%bb44;vs2bxFDF`Bgc(;k?$e#D*E!qqB;=S08wUf~{4JoKQMQsM z=DNnp^&I6Wz{8QxUV?1BKDY-5|a}8;=#v6d#K~k5dz$XG<-==+v z92fRT?CoshHQJ4qAMO4NTCi>}8bv+9S$Yx%X*6m(g+mi@Pu9Pxn9g#9x4$B``E^6I z&hS^;oV;BBel^(lVBtxmZ`PS=$7UI2oEo0 zpG$L~(#=&qszyLwKt@|U#ib1~!%9;783y!NaLMI0i#az2b@CI{wM%B5_6qVKh8?Bu zVk`oq_RRh5XF9aE)(E${hA;Lxzk-cAJ0Ng+J9TE#5D$#0C_~Vt-xO>b zvu;?m`bGThGx~vD_osuO<<#AV zW2VT|f-DeBJ-3aGJIJ1~qrC&sAeCzk)@1tZCnH+AEzLRsl4MlvnJh`d474A3H}2B2 zZF^T6&i7Ha1U_Z=)OG6b9#bAIl{|`$zNZ7JT?Vm-(J;S(vkz{XRMq86`>tQagV(4c zu%=6$zrJ}+aary>DWkAZG!p&5P+iZq(n;LPWU~-sNly{ua&eBG&A5t8p4nNbff!u4 zC~ov#y}Q=I`&}cOrT1UOW3FS72%O^NWtDOUc^6TlWOtFKY3V%ojWN5?hTM7Ymr4{bb9+8FWbNS!JRN_Z}9n{bQ2=8 z?8VJ%GdJptrhPfw!kr(y(lS)ZuWrJ5z{*a@IR_1&`D6~G3nKNxJwd`71nXK)%|$-y zm+_o@kTg)78zTrlxxhCt9%gsEhqeT8o*?tV0?~}g;c;tKBK9AE9E-e<6(U4X0ZxrM zo;6RkNY+%}OuIJj>zYAFg%pyrb9Xbsc&_)LZgj6+ftGl53YGGL#@Owtb zXAq8jaw>Gbrk($Lm=>*OY+B-|p+J}0n-oo1~X^(Qvy+q$>sI*!%FCr zQyNlGmA8%S6O$R*$@YH zEZl6(>k8utWaJ_KYP|JJl=LUSNg(r9>2sC_UUR1Renh0*=nkQl69TEJvPF#SNmNGS z-&natkEgVVluTf1IivZg9w}8|{KYN>YODX8`&4fNP^5?IZ5|QjKLAhj{@?3KxKurK zY%#+Ct`7{ySh2{yXkrGShMD z^$#HRu2KBhZU33s&9U`a^i> z#FfNCp~2TwCO?ku{X4O$be(tEYiSfiqN5YVy;4<;jX-lWEx`8zbn}wmjb#{2ao!FT zY0{~B6DBbWda-WRrjCAXFuD!Op2A3N{{Z{)VoO3llr+hbTZZuvC8!(4){b6Tm#rzk z0Yr@Uq2OcbB^Qrfq1`*fMqZ>iO0IiTNj_0Ai&XWD>?Tl)d_KU|xU#b8AQ+{3@}2_S z#U40JT8t}n{7He!NCry1!#X3-`c!hd>1c+083eBXp=V{C`5V{}1?Av8Daq-S6;!bN z`@@5=h?~~>bSeLEJ-ar8X}JD39IRot&D z#L5=R`t-WI!kI>op@L#^YN^{@3VlYr8?RUW#KT|i{9MtmV@rxcVZncMs@cOIC&!zI zNUG#)a8u1~KTJvx7}KvVdv;P3$zdi#iahs)gH5#ekiCZN`28O>nC(AXI@^9PyYw|i)P^XkeV+{Spe~W%VU!HH6Ge6)>gSh1kM=53 zS`phk`S#|mn?P)~L;CoO0`#VOYOnq|O_7>_MCXit4_T~yk6JF?FyyVmw8jG(qx8e8 z=w|UJLqY2>vrWFS4_E90L5pskPKImcETfIKv~SONetSZfPUd-fl+VxJaL(|>4szb5 zS?HbNtdXw!9lj;6ln>tnPXN&7gbu6uzdU7faA~AwDz&9pUO=ODYKjgn7oY@bdc+qg z!b9^F3r52N(Vs(cK$5Ek`UF+!GCYl}nyD{-*-WALcKyT-Fk<;nM}Gz=T|VmS8)@2d zQ)`=9&~n9|B3a zJxJoYn-vD9Y8QA~F0TD{n~VFerWAk}7u%rcJ~w_9#TaBIXscu4j%rvEgkBLH=I0+~ zrkhf{W|sb*+x>L58+36qJUJ*)D<;`)Xdl7J<{f!H+pZFnR zR1Fo~j~%0nnVaF;UH0(U|8_FT_vM>couv3B1+VY&av{ThuAB(U=@Or7v|+PWg@Al4 zqehh^vmvW7{^ob&cb}b$^*gm7nN5-sqWIsGy+ViF%Ij+0Y#L&0&p3Z3n(nzSCAv~B zM)WPAwyn)^Cmy9;=Aw8lOFp<{jBV1i(jV&+W|;?$6}fQfSe!?dN3X~!@T&KHF5*%v z_9H!+fdDbeGlYb#l{+VDxKo4NsVVqpPj(qQx~Tdcy}d}A2S4X{8#fewqnS?6X*NX7 zWDiCX03h3^^YNHayzVk3IW~Xa>1EbE^mE^SdRrv)?A_nXz`)$LD#n9C=@)DlbD9e2 zE@rJnRyPj@Rs^Hz&bkR0{#6=?%+uhVQAp@17;t%$t-W^(#H;zMu4SmeUn3*p{Db&I9>-E;{LELG zdh%GSjW(@IT!I_ER^ITEJtp57w2${CBUG)rI9g$7r_lgB0!F2)zeR0bo$U?Ev9;xm z8I!}LuIL$v{#^&+gm%N`r78pZAfASs@8sNDdmv8~g=6VH*FEM^4?Tr}s(Fcmv81n3 zZ*=4l!?{uniR5LtM*FI&>iziZj%9lWuCO6J>z3bRosX6jlY_{x2(cjyc+|Fxm z>zhyqUH{?cp`bKCqFWNT0#JHF>V79yY>OYk9lgQ8EkL)vz#?9fvU}W|THm-XE6T27 zgvBFPtfl9MC-d4%&{=q0^2gdfR;Ndboh^Ob1b`7=^zFnZi3}%tGwr zF3;R?D-`g20iF=U&aOl$vUrC@H7P5jnWj0j| zs;1&IR-T!eBb2#jtxCEYx9lBcNwFv0V4lhqu?D+}tE%U-_CcjE$E~r5?l&{Fgngzd zJ5??#fMI2I(f-@6MBOj%wb+Xx-NGEkxqZxkB zI1{nv(kHrJ;>Zri%QT;-&%B8*&NXJr)~-~)98e!%NMaNi^3n&n?kQb{RW6lmqSLyA zC6G<zp z*Iy4;-<)#FJHD|(AJYhpWZqhY4WlA+!i;=ecXy{9S2SW{6wZFIa=KW^nyOU5D9v-s z#a{l5IyPUmbqt3BafF;&n&nrns$WI|=$DFE9MT8hA)CMx-#5N~5;PD$!jQ4g42y9QN1bR^UeJm6V`R4T>N?v(@yTM( z_f%%js!)wEly%VGiaD5w#m|@~N^A-)`xE>rrBxZ6ciwa2JM{?8QRfvOuo}t?m^qxf zzF!OHc^N@}IY`tc;p2z~$?b{Qdw$XBl-&6u*CK!RUQTxLsI>;F7g4+wLzvdfV7!pO zT$macew~bSy4pkfX~N3+R^lq-PF22GAIBwD#5G&$6aQdC?-YE;HiNCYr>;CI5eTs2 zU6308Kqx2g0*=O^GqU56niPE;M*zPRYL3}g+|3%TC-h#G)|7c|pFhJs%-%7y`jV4+ zRLXjcHi0gImw$V78YoIZ3`xG42)Agr$+o~7E*IMi`QVArdCHZdjc)h0@5*Dg4>ToU3v|KQfDzA(b$nK#V zZ}HS_o@W;uecQb3#F>t000zsy!2of!(amv@A{-w%ux0gDr@*U;Z6g~9cxdNWKBSc~ zUHp!ULU^UyD>f6Lv_EMKlEC_m~t_SY3_x5vt9d(3f%g5KMZ|xhGM$jv`KIf$5r3x8I ztEoRos*kn=$X90BVK8bPMn@rjiV8xvHw!VnxBm^ZC!h}N2E-A08FtUfX#(sE7(s0B z!|(kNTD(m&%=vU`Dn2UjFvv6%28Y9*JQb+Nxf3MQ^To9D zRSW6xG9b&zx&?x~q1%UWYBo#&LiRPw4#Ns5hh+;2K?!jT_UIn7Mk_P1&p_iQ8_J&+ zGHcAH&m7VPbr>4%H1uQg^b~^A%b~6M-CO9rb>w`*-{<{OoByJ@G^D(}{QB-COs0~a)^W+I!jPLru0{EDrgpu&J zyjMdJI6d*oRgKm1%k`q0P<=!?X8R)Dq*mrwq1&)~97?9oRn$zdHtM6I-tvcU7vGUt zK6i;*Evai5xwmDSG^Um#TSn90lNN8p!MiXqBX6(pRckT@SMW0ltOg~Gt0RD^pzWC}Nzss`Rfdd?R(#LF^Jv06~ zO=h|sZ4)GB19 zzGQC3NZd#lnnpj;u<6*EeK7x}0CB*tLa$6lOD-0zK2l zOwLW-Y)v$tvIm=e8B)T9v7l5gJSK>zWgSXI`i#D^|Z2i4tHvBTBNA}BS{)xhMy82PH}4l z80_kD5s5fGCnDeu?9>^~q z*cf$NEqdETu+!1f(l-2j72{y!7HuOL9FQ6OQCBz>_Sx@4vQ>Yqh34m}N*3x6+tN%$ z(tiLufp2T}Ht)`x*JOs&JkoH}G|T@S!GQE9PxZT1UO(2}_#Q3~dI$77ts;|6mnO=L z%wpHH%F~DUOe^j^FNlgF+2xE0DmqRT(ZOW^DbIL5@M5G9XeEM8YM;*KJGAc8l^BvmOK%BxPCU6q&#hUio(odF6hGyryA_; zMg%Y-*%OZA|Atu2L3NFZmn>iJ1so6<1k2cvqqqvVt(qc#IHEXP`9(OV3930QC7Ag;YBUKt<)sH{EHMA*FJZ@!9ujvQ z{z#vktf4rhl7pM_Cw9m^DtaFzSQ5t7tMfD9uJh!nM+p)}_UstFcaq{bm2wDfNVCsuO6SYTR1 z1XIAH=DQt(W}!glpbsf7aCo5k1p3JsjEd&O2lgK1FUcS@62x{;iQMSN{CtKTXD%_4 z?u)9}ezx#Gy;eA{rfI;023o8ll>lilVbx$OQpkN7Yqms4;o~9dTr0*$3j}Jkp+c|a z58jYp_Dz4C(oyF-`s01KEmL)4hbQ#*N|;Ki%Cjt`Lyk1`W`>c2qEn0I30$41^U+JD zg9vekntxYuJ~MCL+tbdiE4+UM1Cm3mJLsg~z|Z{D=820NE20tSt0mRxz#cZ;Pn(Wa zz>u;mbwPb~l7OM$?}k%#lV780vTNU;f5BQuVS_Rm?Ls0%dsl0@sZ%>+1n;AbWR!3!+Ml|0Z!!J27p^s~KEht2 zXU<_wzPR<$i_5gf+5#Fdw;BMECr@`G&FlvtqZA7a?8iaCK|-ZPTIuIRBhRNBN?eU6 zPhI^g)Q=X%LO-lVXA~^54g03J&0W4~ECOL$5g_WtE$PIkX3o>MIL4nGzhR|h>|)`Y zzVMCTDcG!%I#fj^Yku>Y z%c5n7=Of5m&%Djv__j6;D@cYrHJR{dD(JgzrU4U|8)(Ly}!f zw7^glAZ4KS{2r46>FmkZ2$dhZB7^$hRHqcqmtTLe7ybiie?tskhxF}#+X)B5o0Jpp zDI3rIg>-6~C9Q%5}X8x*v zxGMTWa{o&3|If%f+Z@pVl)S=}&6bw{1DSsS?nGR0g0bt<+}E$qfgS(8(T5j;Jj`FP z%fIiR^6L{GtOi&Qn&~{Yvov{Lq)b)~Y7KWe3Ig z4*vj5(x(Dfk-r9xhzgheDiWva$(&i(2*e18QH@x?d2o35GO0WGTr|_}2ZwlhW`QdP z_5AK7mtDOcg%?mCQ32?v)k>{ER<%c$R-ttP|V4M7y^nMP=DmBBW zgZ26nBD5im%?ZVby=al(@lx2WT_D{>b_GC;^Qlz+0R;K4hr;ICk}c$C{O#J3JvCGt zAs%WHe`^?lIpMteE&t)8%Ag|~C3Ime)+f28OTxajLJ2HsFnEVw1RZk-jl5{F9~bb* zh=3)PD~Ki8?`22X`UVh!5;?!)k>mRXv^RT+&c?>q8d5~&7ENaY+U^Fp0vHhPJ$KN6 z2xk-I1R>y?lUa(;7H;OWeEMd!r2NCulu_fK?pfUAmX^yUu|b}S9sq|%+ldv?><4)B zHkvC%WUDjMa!bGf^X(lP_Al+BBhjr|kOGsM2)*s;ha)Vo;Hg+}_oe9l^GjpWtY5!& z2(^jv+OL#Zv2`dU3eTNPmEHQh5)b83GZ(DoL8^pIg;#w)}V z%0Zn^(`7PM77CI^%H5uzGEr4kdkLO3mYX?5?c-IG3@cNgg6q>WhB{|@Bdv%ulrJ%Bcft1-24g#GiD%Vxc2sou1G^2d! zcoz?+gG<~$!PJmeI$ZeHl^LmiR;Gp)v<0;nQsCd%y!Ky;kI_j}-0jdkTv3eC!4WbkCt9 zxhbH20=56AH$b&^#D4XOw^jZt@Cv%}yBIgPrvydr&tXjRtHIw01quyDRsRnH?y?Q4 zzyP4sK_uhZAVp~FGg4O#y1IfIDl?~&4Yp!29PoHqYd_v+M_@-Tk#fcN>F3{OiAfSs zmJAQd$NY?v{iN++97_KlbsSFY-e3fT{S9$Uz?hj(Zm8yIaeUDlYZO5VjyNL923WZp zA?U40ln21WnO5yl)TqNhD?ClCiG@Qb_>G#pIv%3Jq(@X-8_B|_G{^3dE7c0t*_t`} zax2)26UD%OiQ5sscqM;;=<_9Ip@`c=K|uYEzu@fBDrlsHo?5j^_Pgx9q>%SzG)mv! zMIL^lyNsBgD9x`cR%355@pz}Px_G+&T|w1Tjc7uzpo+<-sph` zQm2B=xO3iTdr|YVeQjCd%iaUWla^&B8h3(bH+cqEC0i~bCHpEJF|b^`KfEgPA3&>6 zvP9G#y^rmEOp1_rwAf>rdVpBY&&O(=e}7#-c2ILsbHzyU04e!oDd5JORP2S`p_$wO z@i3scSa}+9v;+nv>0||6#=~>P#PWUQ-3O4OH5Vd(3S=y|XdN<%BONDEIrASInIWF| zigtCf8wr*yl^P);zDN0lIDlkN#I!yojn{IpFxuV8B0!1m)>)m>UjTthSzlfu90yyf z;C{~ZT5MajkdaEI5DhKJH?apr2?!R~pw%SLjsiq0nNos#|G+EnirlzA$(e&Nq* zOni%vI;dEVMhxhu1p91AO?u-ZZ1|(XReNvuKw%fIKt4FJ3z`1UgjOa72eps#@1{Gy z2P7;aozGz;^Ha;k>2Uid_yfTHf>f$tDsN(`)pM4}W9Da6>BNc=H`$A79;~8u2~N~n zr*84Ke~ko`neqqhlPKnnfN)CjvKkb~UjtP-$QWZ9g8+B2fYJcW$D}*5)=0CvJ1k*a zI-i+pZ8`Nb!qI!L6R2>X0!c8PGjD>2c2?&B{mFdllvo`|CEroDcLG+c2oc1ty}&-T zOBPD-u9Szn1GI9EhpBcvs{-hVc2yaURR1ueRSAy-kkHAe%AgQar$&iNxVK!O1^8>! zP{;iyG*Q+I{iF@C`m=7-!CcgMQSXyV);U4Q5wrk)ha&Y1 zhtA6~HLtVBT%X5QO4Pg{KmsD1TdG}kVSBn7LjeyhL8w4U(~J3%3g;Rg{UL7jZdBrF zuG1C&F%76h3kEBR2IVty-ffg%tK(h+u)PxyD&@%%MUIZpg3y8+9kjvl{t_o4x!IXS9lClUZ2$ihf$hI>;6J3DBeQ{; zxFHQjU7=Oq0HbapEhiXz=#h=**#7I(wQ6X9NLoYywFovMB6(1x;|4V~wb=PtrIqRh zw)ej`V43*!Ym4g7pinK#?m`*@uzNN>Yc7ED=PQ8jp~+4=ZCnOf_S_m~*N!c9%G-yf z>CC{1tp@lO{~Q#ogh=iil-iGjbMiaL9~DB61Pt<}swFMaN!-qJc6$&FB!Z%rsFfoD zVOmH8YY_;?NQ-{w)QCv8Xv9Sm-BR0?iC|y|!eSCU*kQWPfjS^SaKTU%;EUXSAht4S zWmx3(EJqMKp;ay+5COKl(DG}u5}7_bKg1W)?x+SjPCce1@wZ%_Z0^6TV!AkP7Nx#| zY=-kl^m;!bVGH;9cV#kuThxLPOD0ps!_FQnMDhC``+!LNfI2* z^`Y`=@I_MmJA|HIv5`XAAd@L?^{Vvy-0XBU2=H4R$n-KWx!9 zyr-@@oF}jp1dtQ;XPzDH*_F!w|J_2?lkXKg} zyB(fr13XluV9!!dStr{xytAY*x3lou)u&wdsLBP zU0J0TH>9?wT+KINiAh{;X_W^4%B$0RyL>!)M7cEWtSZXLRYki*l^$D@Oc_qf9^;y% z{U88kZvK8=AjK!jpYVCfCiL4%1t)+>nMtjB!pLL6$k(lsunM~&pO5UN7iL1bJ8Qi9 z;tjYtr6mtS9ZWo>qVg)O?{&z0$)J;{d%VxH)LW;b@VrUbgzSjb-`yfmnf%U|l6zJ1 zk+fdr(Fw1L1`Ha`{#Vk!gMWZXiw-~A=J;bj%z*{va)H8b6LZt#-}52?aJJ^sa*fF# zHH6*#d;6P{N^27tzlm=PzwBz&;CB3Ud-sBa%fE$~AuZaCG*Mb<;K0Q$YsQiYj4v{3 zx-9j$)={2VXtAq3zrMFCD8{9!rt`)@{iWhQ-W79~*HbYePSr>A(5qd+R;Cda^*Rv^ z+lP$T5B&qk5eK9^}ivKP5HxL6M2n<9`q!hr}k@_X#g|*rZl=@W` zsBB2~IT{lYkQof{d-i{Hf^aZ95}t{N>u6JMIEE!~ij$W4ehC~G57*3Vxxk8fOOIGg zkJKD$5~m}yWeR(-Eu*=4rFr>dvf6~d8g;3<4H@r>d_Ho!y~6<$(pa`}ZlXR3=+gD>EHVk6fp!+e)y5!0|G1C-|i~ zzv4g{Ay>eGXp>}9Fg=dY-hW+xV?)-oS$7ZHysQjoJ4V0MngjdH&;?Ef7Gke!aWE58 zhlp3JJ|NBHZXZx|36zAat<&40SLSjf;q88utiYSE{4w4Ia7h& zcj!T2)JbVnZA*(WzPC>KGZXq=WrNS#_Yk4jZfu(FN9;1uAipngcXo=0Ce>y{l zMW8nVoFoSx8{j9DelD;H2Yo3z$*=^|f2|g-H4|gn?3Z6r0qc?7;DFzAOJuZu^%U|r z{>4Wgx5_#~k5pF`@W_lU@%UN`)f$>r^`wT0RZ%4*j6*pBF@B9#UY$MOUsD+az2V`F zKpG$%1xP3@M`APsz^VWqclUE8_9~lFV|g_mU>w{H;RHD0XeYpxZm=6^)pJEuPyjn{*6S@I%tI&?-ArNK=N^ua@i|PFgPcjO`zPT(-v#O95V7gP( z{US9t)BTJJJ$U)qWb={Htj^pUNmbOQq#B0+!`fD7zKd*58Z0W8@YpRb5EMXRn4VbM zF!n$n!0Ys%My>W1kvx(Xo_=ti|5n%ne%qm~z~$Rxx6zaX7T?!lSAdk3SD^nn6~_n< zw0RPfY%qF*v8PluZY)K-^(8KGQ74%v^R6+=A!2NvunhwPeb-QWuw7DQBauS0^g;^| zol>R3aD-=C`G5%p4M$Tu;O~|eWn4kCR!x@v0d!_H9czu|NHiLBIEc;Z*ozEX-`w$m zo;&gI{}^P4>5U0ZSCgbG7fKe&LV9tX(Fr~Ggv|EeeNA6)@zNusG>zIVAb<7MQuW{7 zv3o8$S$578!tDP}W;#|IQ2hZ^>StCq$v)4_w-Fr{OME%y9G~H1^8(QA*(gj3RuhyO zMbMb??RA}vGsU0S993`h*2Vwr14PCaiK-D zXY%Oe^sb8VTSeo7H4B*m+x^xylA$w`5{!{q`J?2IctK>~tnNtWZ(NXV_Lp941!XcF z<<3oblM_k1jdvuiBz^=bq5zRZMc|aaK@mIG(|Mc>Qv&MO5`1O9*=!;#bMk))6=d`0h5F zEC{z^v?J13CJWPQv|esb7`Z0}7dVem@nz$>58<88>0{cy(Tx3XI0>bfDzD zy0`kQCwk=MMC<@%3cn3j{Q+J-(H^#0oD6RqkkC4~jkYPPFJGiv_-s*JjR~8I&C!My zS{St=W~hwGH!IH_*rJmZsiAU;7OigY@isTjfBf7gd6;LWA$LAMf?(x8_+ z2T668?G9m+&zka-YL*|NW~DDgEFj#}WK=frdPj$IZJDy_Wv``@ocE(NrR#CletG%k z+K#5V!){qwoQcT9V=?_Olk3}`2knZv@^>X%EBAU7%ppnKp(4_T(U}b_M)W^8LKs^b zab>gs(rEtG`&Z)P*GHZYPhyYjXT;T|4l{NS?> zH)%e!k$&yVU@V9Uv(<0biYm@RQLl%9(9nN#o0}~d9bw3}%W*_bn4iKC*d>R=H?Km~ z?gpuDqF(*2i=_{r22)l3&Xv$GqUKKBH1T?9WKn!|8cAc)g%_uLubpkGe)n2iTXuSa zZT=bP`4pKNCMK($`vLk!$&>9EYX)s+4=2EfHM{WBc|tgHaDqZICr%$@8?65>Uq}Iu z8lMYQCI89y9`Z88)%-$t_Ar;UIn&VB68uw%wYe(&;~YjsQqLS6FLw|11(B5+WW*@9 zFFTc4m0P_qck+^^$ejEnJD-K44(%opaJRBXO+)ij)~GSWBPTfCfQop{Xy{Q@k1jXm z^0MlkcQ^i(aLib1ibLAx*ev_TuVqQBALd|$nZj`q+TRe|^CGIohl{ime3OXM!Ym0+ ztkDZ&bx=8T2vz9uD7D{9>N3d9CB985KrPLkpcyYWK*yhP5HYVEsFxn#8iv4t$i7Cv&Dg+9Vb&@ z*b1tW_%LRjujT4DFLV_*{=&a|N;wkMh)&;^qgu(zsKd9N&GyZ0(qMC?#{LcRMzlqk zZ9+Acwf#ji;iN=%YNz-xll$+K=21a?-kDi-oBJI*XQ82(ekszuiwGPY_(la&fe=1@ z-1Yj9R=F*w=XzPtMfKPP>G{mCFvSYR8PS|Mcdp4mqY%6jY~18&acofHjjhmMx0y)q zTXsSHZP{}xq3T?YuZ5P5RvXrg3cO=lMNM6wcC04jO+3~VE9q~_(43MvAh=G;GJPz@Q%pIk=qYYpYl6X==I zT8*8tckYn;3~?Kl!WEdM-?ul|{CP zBcPy)`n)pMxeOIr3lcENC%&K{P%23Qh<%j+$GJJfSZL_ODCAN7Bi1H@pdpB18HbH8PWmrd=PPS$BM&v9 z@35`XLi+TC;KfQRt>K_Kmm08ex>UyPGNp-htmA z<`Y*vpK@KQed1c^%nWO#D~Hplzy2`fx~XYGrmo!jl>gmUp*-UjMK}dP;+MwoLuWRI zMzo^lp0DzcST%{8o$(@9k3%uxq~;Wz_s7B0sI9o#3;}tL&B>OEB^skvDjmed$B&7e z8X6V9yYnrE_UtT{=~3UOAN#sD#=pvDR>@al_dJQnSJh1s_VHjE5S%souPMs; zYQ2@(K)SoFAQ`!_jTgg6R0*U7!UUT+%9+kjku1P}Pd@yVV9Ob-0b(DktR$|Wju{m6 zDQ~w0NxCCz#3_6=0%WB7#+Up*%7_L?B(u$3{Sy8JIq}p-SwR7XO}67MhK+6gnCGmKWb- zp<~+&^RbL5)2?3{_=R`WFGhG^%knG9eoQ4x)!Jf!tE0e@U|0t;=H#kQqEN=5cAS$y z=%{S5S(RNbh(2@(t8CB-Bc)9>Qu&v7{Egp|=Rbfvmf6MUSjQeceJD8nRyBpASqQlq ztLE7_2+7%rp9U+;CH(hSu>EMzZAfL(=rl$mCUyz;;XE%To+x~9#COd$`NI?ZE8b}M zx(NIu5C;L_Yz1}F?_9KZi~QLmIb(#*X1bado#MkC#6w?GQOCukM)zdqEo@EzJyzs7 zx}W(#0Bxb+@@#=>ws>4fwBwtj@*tz;u!4jFCwJNVbWLJvpVI?a**5-6AT|c%BB?IG zuD5{rb4%2v3Kx2AUUI~fLc<(7-E2%ekc5SwXqcZ7n8NjlC-@Z^lxxb!5-rPk+A$5x zJTN_+&|P-fA4!Y7$y7YEyD^YC^2pKtrdPkh<_c*0t8& zl%fD#LW;5bXB?HoVKppgWi*LKC{2%`&`6`>LPp zIPCz04wIm1!6xvHAsx*loisQI-jVgy*{`&J>cHxF`Hb!h3RhP`abvTV`3g*#Ilsg) zW>9qgOr0KJ*_W=8y*go@ne#4&@ zEFwWSp`@`pwC2-v`&P;g_BoetItWQx6nJna^W9oOlI^X{Ug9kt^>xNZf`ghTyQOR9 z4D5)hIlO?AyP@*W#oMq`r7Xp!xI=B|OWJQGch=cO5_`7k;o$Bd_ad6VqF?e|83;v6 zM+mtSm^ht{tG;DReMHc=npH``rv|V4Z!iDUZ%!#)dBDav?v zffM8-S0C%Ojl^k7@o@f-{i!qc!a(nqHeedrO7w_EO5`Y2o*|K+rp5Y2@yUG9HiJtW zB`mIms$+X!gGS=KVs!pz#J?*4g84 zDv=>7I#nTTTjdQYw&a>wGFqn#{iy6q zXXnP9!kRsL(}i)+r4S^RG{QetEzwXwpToP5{`#614(hMatX?=AXo}%A?saYG+F!K4 z@wR0Jj@Gk)2Z6L(WTJ^$_&XRCGoRg~3SuP0o%tFxT}Lr1Ka8WTdEtoWa#6a-=Lj91 zLA$0xc`PXx@TJ=}p9?fQRGFpokN7|og|x#0g`;U5?gcbdGDR$)%8~2}g0ESu(=99+ zU;)8;fA*SRxH?|wkEj<_{yf<1Mrp~Rxv@#%nNhxbVk)$HDN%>=ch!X4tc_oO|Fspg zIiyQegnFcaqO*a8NP~2OCgnuD7G?ttu;zEF=wMxWA#X0(~l8cf3+HtMS__iKag zB)VvO*R_;n#CwffH{Yg>wI5?f_iG{&#wRsP8ZMmShJ7J>TK50v`tdO*7 zxr4@2W5vVh?K7z@Esy& zN+3Wgal;!20b2sgBSmfQFfMO$>ym;|m3h9HLtr;NndQ$G6q~~v-4EG}$(B@~mfI$} zipz)6^ z?UKAr++_CMk>1ZJP^olSY~+c&2y@S>{vJ}ExUpm&9n{B&+4TFJy`vTNXYedGR_{g_lUMzs2{SI6C}lniMBTD0tE zY#j=b_#dk->`~B0eRrOZpD;9bjhyqTt zexd>mNVB!-q)^d!l$ul{5|;ADh2^e{j7o(PECb?-HixA@}fBBQNHQ-+x{s z666;=;qf9%%!nWT0OeTA=Q@7#FaKl zG%U@?VIb&tBQ(Q`C|00G7xlfq%uPMjyf}P#2JuxbPS8)6=|XCBZ($k@@P3Aiv{6iL zMh`}pPMMBL?Z zqIt%I{`!2wt&cLFTUc`u{}3wrOwlF(JtiJF#MdX<2T<9N>`#`<;8GP!C_{`Hv%>Me zmkR+=h-x$RQ$u9)qv>Uzn`Q?(Y$tl66=%)JUTj;RS&3&WbVS01<|`78v_JmLe0XaG zc}!(139+4$2XG*FS{TTwLI}Y9`0n|%dFo0#WQp?T7Vn5n2@kM}l`y?#I6C@#?qN)x zulo+yK!?_SN@?j!Mmt@WWsI7BZ+$0o*UaSLr1I}^zez^1)sNKSG(+#TzRNB+rd-Pp zCo9g<>oxFfdh%$P&TUQt;Jw<^7k?P?pKq7LYS0}@*9R~l6>PoAp)|Fjw!nw>XX5` zDytIs3#qUYLoy5mSKfGL2hw#*+E`c!%U*X8dbhywOUm?)+2c?Z2SL5r;#|*G=~n9u z8%bs`E6hPwrsd+%oRu+CiichM1`D-HPDJV?R*Xeaa=55cqLQZ)l-cXLODif@IRnR@ z-sv(TdI+FMUWd=?QP!>;jf8VXA1qRtZxUpzVvOi@LM?oy*y@SPkV<6=Xyqp3*dp_k zlUU>I>Zk?s#HKJ0JrwkY7G%JWT3{a^IQ)k3H+Lx=J=60w*}B`l;2BbjlAhrFw9g!w zGB_>i);+g2s*7U~RQ8{jmWNI#sCi%q^N#eW0SualREemW&Nr;Np^luio_hU!YJrsf z3Hh3_E3})fwVc$AR-I|GN7mand18A50WUDx0kg#%B+<;vh78;z7}?5=7flsjD36+Q zaFI>|2Gi0SN2&NKvCIt=bO0UvE1BXxnx^F}1aFCJ#0(YMcqp7PLWI&B|8_$o4n%}LX z_+aF{%3$5wW$DPwuR~h{VMxrcj3JZ86AzHhFQnVfyln*p?dx<1oJbePnU<)*W+tGkr=Y2o?nSbJF` zVH@d9Nc7lBTeh_|Ks-dv0dCYa?=N0HjXucX)3XigPd&b`W3*D|wpR(o`*ruI; zaP59>v1f^67R%e0xLA-oMpMOL_u1sqP5H$r^c6v~WK(vt)4WSU_9nEgC`4w?0rH+? zf#IZc>lJr$pANfze+{ZH>YHG3xc%U|#u!TzW@1!QHabC&C79IIRHs6n

izSvzQrUQ<`N%9l7Jv5((I(JF%_kMNVZ>M27 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 I(x~760Y&{QO#lD@ literal 0 HcmV?d00001 diff --git a/includes/mode.h b/includes/mode.h new file mode 100644 index 0000000..965dcc3 --- /dev/null +++ b/includes/mode.h @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* mode.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/21 04:15:27 by mabbas #+# #+# */ +/* Updated: 2022/12/21 04:17:29 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef MODE_H +# define MODE_H + +# include + +typedef struct s_mode +{ + int mode; + char *name; +} t_filemode; + +t_filemode g_file_mode[] = {{O_WRONLY | O_CREAT | O_APPEND, "append"}, \ + {O_WRONLY | O_CREAT | O_TRUNC, "truncate"}, \ + {O_RDONLY, "read"}}; + +#endif \ No newline at end of file diff --git a/includes/pipex.h b/includes/pipex.h index 7eb0c67..8504f19 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/20 02:30:50 by mabbas ### ########.fr */ +/* Updated: 2022/12/21 04:18:17 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,16 +32,6 @@ typedef struct s_pipe int out_file; } t_pipe; -typedef struct s_mode -{ - int mode; - char *name; -} t_filemode; - -t_filemode g_file_mode[] = {{O_WRONLY | O_CREAT | O_APPEND, "append"}, \ - {O_WRONLY | O_CREAT | O_TRUNC, "truncate"}, \ - {O_RDONLY, "read"}}; - /** Pipe opetator initialization and file handling **/ void error(void); char *path_find(char *cmd, char **envp); diff --git a/pipex b/pipex new file mode 100755 index 0000000000000000000000000000000000000000..308dfe3829985312ab84e4009af885b80677f7ba GIT binary patch literal 53304 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 MrDDO+VwdTE0C)--j{pDw literal 0 HcmV?d00001 diff --git a/src/pipex.c b/src/pipex.c index dea05c4..90a8731 100644 --- a/src/pipex.c +++ b/src/pipex.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ -/* Updated: 2022/12/20 02:31:51 by mabbas ### ########.fr */ +/* Updated: 2022/12/21 04:03:55 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,13 +36,16 @@ void process_child(char **argv, char **envp, int *fd) void process_parent(char **argv, char **envp, int *fd) { - int out_file; + t_pipe *pipex; + int j; - out_file = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0777); - if (out_file == -1) + j = 1; + pipex = NULL; + pipex->out_file = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0777); + if (pipex->out_file == -1) error(); dup2(fd[0], STDIN_FILENO); - dup2(out_file, STDOUT_FILENO); + dup2(pipex->out_file, STDOUT_FILENO); close(fd[1]); exec(argv[3], envp); } diff --git a/src/pipex.o b/src/pipex.o index ff114a2bd0bd32945b719c7da9be940a96b52fb7..5819a6eb5e29b9c290768c391fa66e42ec29b063 100644 GIT binary patch delta 2259 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/18 14:13:34 by mabbas #+# #+# */ -/* Updated: 2022/12/20 02:34:09 by mabbas ### ########.fr */ +/* Updated: 2022/12/21 03:17:52 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,7 @@ void free_ptr(char **ptr) /**Function to look into the path line inside the environment variable * Each command path is splitted and tested and then returns the correct value. + * access function is used to check accessibility of a file **/ char *path_find(char *cmd, char **envp) { @@ -42,12 +43,13 @@ char *path_find(char *cmd, char **envp) partial_path = ft_strjoin(path_var[i], "/"); path = ft_strjoin(*path_var, cmd); free(partial_path); - if (get_access(path, 0) == 0) + if (access(path, 0) == 0) return (path); free (path); i++; } free_ptr(path_var); + return (0); } void error(void) diff --git a/src/pipex_utils.o b/src/pipex_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..6af4f40c3c1b356e87d8e28fc11eaaf0dbe85900 GIT binary patch literal 4008 zcmb7HeQaA-6~E8+eRh(@&d1tyD{H-}gI2;HNjKJQ*+^(Sy}9jLwQ1)Ssu$Q~V4Mi~z<<^oU}B?!X9<{6FZukYjj5`nWPM z8I3J6PS;6c>{>EdNaMl5rR>TSkL zP{TnDhq2#LvzlpByj)?dNN!%dixTe}GQSb|yL>s!7ksZ<`F7 zb7I-07CBjGo8lEm&KTt4&F^)Iw_C;1dL z8Rk^kyfT+ z5Rntym+DJJnXT{xE(OImXS`fCzeyveic6EzdW7a9K z=bxA^3Vn_8!of*ki&{Oka$}DWqzzzlR?%VubhJf{e6}zioieR*u2_in z^v09%WOR?v#(H{_kmCD#jt?FzCk|(gBgZp6$#~EG@$%?5nO9DX7ja};W?~XILAIQ@ zulJ}`JYyPmIdPO$WU!ff3AauuYvTmKQNm17ggI>*%$Uf+0&9-t3N|w)VJ%FR9Oo&r zAqo%6&Smqu5VF?z6jM5td&Aw_AAW8o{NZ=P9k=fYcPd>tLws?Vy43#d{_sO>54U~k zj<4c|_jBfxipRV0j^5WKa&O4v-4vw8*{w*y2qT2hZsrd^+SW#=Kn6R7UKwa<&)}3u z;`udjgBu9zJmK;Jq0w%x<>Zes zQ|>x|IigCx-zZJIFC>XE{6~^@Nh$MJlA;s`{2_sVH{nClmdSPx*_c|TC+JQL<>cG+ ze86`>Dyb^v84NSe?! z%z1!m#|OwH`b#~QhqySU73N$Sc*R%Ahi;$u{%~aRqiSAzbN2kqhj$whI-!R#N*GlP z(Q0ry?TJJq!AFI}n5YW#zerh>j`?q-?B+x35qa~WTt1Hv?F1UP5g3SSpt}6{rU{5U zhGfQ))tB0g=qoe*m>xf>ir-6IwCOR7li5^XgQc{I_mlxSmtZn0OThPJ|H z_6yQ3_xdgIZe_}|$CxtRp>%8shUVZ!DSiPX^fC2pbyeoa*g&}B1>b>o`8go`2I1E) z{bZh-`sLxb{}TsK=DVri_u-e6e(pQ!U6U%kkE>XSTp3M|bPwZ_@|a9!cIRd@@GdqQ2@ zm*xR=ocq4Vx1HiUp==-HZ41yHBtW0~9KTEbA@72r<09V%?N&fV`*>@bhcXcT5W{MP z2f=U8@L(U`0=NLA7WJI42Gpmx&p$oK+x)E=$^^24R6>Wjuk~Q4o3kGwsekd#3bIaf z^)=oN+#RaTThcs8Yp7}ls1t;S*!EL!Nb~J*P4k@@uJ*w&&XuQpDjL`6^d;s8$K4kD zNOX(EJ^+U*b`2amKlXF*5cqj;{Qj};g5!jZy$BA!t-8Zw^xNR`F18mu0KQYoo#6P4 zkI{)loNjxHn+GS{IdFW{#a@v5C%_5k5y|P!1%xWjDR5KD`y~IO1jWE5swXYhSMK&CNeI?hbo M +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/19 03:36:07 by mabbas #+# #+# */ -/* Updated: 2022/12/19 04:02:27 by mabbas ### ########.fr */ +/* Updated: 2022/12/21 04:17:57 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ #include "../includes/pipex.h" +#include "..includes/mode.h" void display(void) { From 8ea6badf2ef1b7283423022007f1e6dcfbf8db6e Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Fri, 23 Dec 2022 03:17:33 +0100 Subject: [PATCH 24/31] lets see rebasing --- Makefile | 109 ++++++------------ README.md | 48 ++++++-- includes/pipex.h | 32 ++--- lib/libft/Makefile | 50 ++++++++ lib/libft/ft_atof.c | 36 ++++++ lib/libft/ft_atoi.c | 44 +++++++ lib/libft/ft_bzero.c | 30 +++++ lib/libft/ft_calloc.c | 34 ++++++ lib/libft/ft_isalnum.c | 27 +++++ lib/libft/ft_isalpha.c | 24 ++++ lib/libft/ft_isascii.c | 25 ++++ lib/libft/ft_isdigit.c | 24 ++++ lib/libft/ft_isprint.c | 24 ++++ lib/libft/ft_itoa.c | 95 +++++++++++++++ lib/libft/ft_lstadd_back.c | 28 +++++ lib/libft/ft_lstadd_front.c | 21 ++++ lib/libft/ft_lstclear.c | 31 +++++ lib/libft/ft_lstdelone.c | 27 +++++ lib/libft/ft_lstiter.c | 24 ++++ lib/libft/ft_lstlast.c | 25 ++++ lib/libft/ft_lstmap.c | 50 ++++++++ lib/libft/ft_lstnew.c | 30 +++++ lib/libft/ft_lstsize.c | 28 +++++ lib/libft/ft_memccpy.c | 38 ++++++ lib/libft/ft_memchr.c | 35 ++++++ lib/libft/ft_memcmp.c | 38 ++++++ lib/libft/ft_memcpy.c | 33 ++++++ lib/libft/ft_memmove.c | 37 ++++++ lib/libft/ft_memset.c | 31 +++++ lib/libft/ft_putchar_fd.c | 20 ++++ lib/libft/ft_putendl_fd.c | 28 +++++ lib/libft/ft_putnbr_fd.c | 36 ++++++ lib/libft/ft_putstr_fd.c | 26 +++++ lib/libft/ft_split.c | 106 +++++++++++++++++ lib/libft/ft_strchr.c | 32 +++++ lib/libft/ft_strdup.c | 38 ++++++ lib/libft/ft_strjoin.c | 45 ++++++++ lib/libft/ft_strlcat.c | 41 +++++++ lib/libft/ft_strlcpy.c | 39 +++++++ lib/libft/ft_strlen.c | 27 +++++ lib/libft/ft_strmapi.c | 39 +++++++ lib/libft/ft_strncmp.c | 32 +++++ lib/libft/ft_strnstr.c | 42 +++++++ lib/libft/ft_strrchr.c | 35 ++++++ lib/libft/ft_strtrim.c | 34 ++++++ lib/libft/ft_substr.c | 44 +++++++ lib/libft/ft_tolower.c | 24 ++++ lib/libft/ft_toupper.c | 24 ++++ lib/libft/libft.h | 70 +++++++++++ pipex.dSYM/Contents/Info.plist | 20 ++++ pipex.dSYM/Contents/Resources/DWARF/pipex | Bin 0 -> 11776 bytes pipex_bonus.dSYM/Contents/Info.plist | 20 ++++ .../Contents/Resources/DWARF/pipex_bonus | Bin 0 -> 12576 bytes srcs/pipex.c | 70 +++++++++++ srcs/pipex_bonus.c | 108 +++++++++++++++++ srcs/utils.c | 101 ++++++++++++++++ srcs/utils_bonus.c | 67 +++++++++++ 57 files changed, 2145 insertions(+), 101 deletions(-) create mode 100644 lib/libft/Makefile create mode 100644 lib/libft/ft_atof.c create mode 100644 lib/libft/ft_atoi.c create mode 100644 lib/libft/ft_bzero.c create mode 100644 lib/libft/ft_calloc.c create mode 100644 lib/libft/ft_isalnum.c create mode 100644 lib/libft/ft_isalpha.c create mode 100644 lib/libft/ft_isascii.c create mode 100644 lib/libft/ft_isdigit.c create mode 100644 lib/libft/ft_isprint.c create mode 100644 lib/libft/ft_itoa.c create mode 100644 lib/libft/ft_lstadd_back.c create mode 100644 lib/libft/ft_lstadd_front.c create mode 100644 lib/libft/ft_lstclear.c create mode 100644 lib/libft/ft_lstdelone.c create mode 100644 lib/libft/ft_lstiter.c create mode 100644 lib/libft/ft_lstlast.c create mode 100644 lib/libft/ft_lstmap.c create mode 100644 lib/libft/ft_lstnew.c create mode 100644 lib/libft/ft_lstsize.c create mode 100644 lib/libft/ft_memccpy.c create mode 100644 lib/libft/ft_memchr.c create mode 100644 lib/libft/ft_memcmp.c create mode 100644 lib/libft/ft_memcpy.c create mode 100644 lib/libft/ft_memmove.c create mode 100644 lib/libft/ft_memset.c create mode 100644 lib/libft/ft_putchar_fd.c create mode 100644 lib/libft/ft_putendl_fd.c create mode 100644 lib/libft/ft_putnbr_fd.c create mode 100644 lib/libft/ft_putstr_fd.c create mode 100644 lib/libft/ft_split.c create mode 100644 lib/libft/ft_strchr.c create mode 100644 lib/libft/ft_strdup.c create mode 100644 lib/libft/ft_strjoin.c create mode 100644 lib/libft/ft_strlcat.c create mode 100644 lib/libft/ft_strlcpy.c create mode 100644 lib/libft/ft_strlen.c create mode 100644 lib/libft/ft_strmapi.c create mode 100644 lib/libft/ft_strncmp.c create mode 100644 lib/libft/ft_strnstr.c create mode 100644 lib/libft/ft_strrchr.c create mode 100644 lib/libft/ft_strtrim.c create mode 100644 lib/libft/ft_substr.c create mode 100644 lib/libft/ft_tolower.c create mode 100644 lib/libft/ft_toupper.c create mode 100644 lib/libft/libft.h create mode 100644 pipex.dSYM/Contents/Info.plist create mode 100644 pipex.dSYM/Contents/Resources/DWARF/pipex create mode 100644 pipex_bonus.dSYM/Contents/Info.plist create mode 100644 pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus create mode 100644 srcs/pipex.c create mode 100644 srcs/pipex_bonus.c create mode 100644 srcs/utils.c create mode 100644 srcs/utils_bonus.c diff --git a/Makefile b/Makefile index decb687..a73dbeb 100644 --- a/Makefile +++ b/Makefile @@ -5,96 +5,61 @@ # +:+ +:+ +:+ # # By: mabbas +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # -# Created: 2022/12/18 02:39:41 by mabbas #+# #+# # -# Updated: 2022/12/20 02:31:26 by mabbas ### ########.fr # +# Created: 2022/12/23 01:03:33 by mabbas #+# #+# # +# Updated: 2022/12/23 03:05:17 by mabbas ### ########.fr # # # # **************************************************************************** # -NAME = pipex -NAME_B = pipex_bonus -#define compiler and flags for Debugger -CC = gcc -CFLAGS = -Wall -Werror -Wextra -g -INC = -I ./includes/ - -LIBFT = ./libs/libft/ - -SRCS = src/pipex.c \ - src/pipex_utils.c \ - libs/gnl/get_next_line.c \ - libs/gnl/get_next_line_utils.c -SRCS_B = src/pipex_bonus.c \ - src/pipex_utils.c \ - src/pipex_utils_bonus.c \ - libs/gnl/get_next_line.c \ - libs/gnl/get_next_line_utils.c -OBJS = ${SRCS:.c=.o} -OBJS_B = ${SRCS_B:.c=.o} +PROG = pipex +PROG_B = pipex_bonus +SRCS = srcs/pipex.c srcs/utils.c +OBJS = ${SRCS:.c=.o} +MAIN = srcs/pipex.c -SUBM_STATE := $(shell find libs/libft -type f && libs/gnl -type f) +SRCS_B = srcs/pipex_bonus.c srcs/utils.c srcs/utils_bonus.c +OBJS_B = ${SRCS_B:.c=.o} +MAIN_B = srcs/pipex_bonus.c -ifeq ($(SUBM_STATE),) -SUBM_FLAG = submodule -else -SUBM_FLAG = -endif +HEADER = -Iincludes -NC := \033[m -B_RED := \033[1;31m -RED := \033[0;31m -B_GREEN := \033[1;32m -GREEN := \033[0;33m -B_BLUE := \033[1;34m -BLUE := \033[0;34m -PURPLE := \033[0;35m -WHCOLOR := \033[0;40m - - -UNAME = $(shell uname -s) +CC = gcc +CFLAGS = -Wall -Wextra -Werror -g -ifeq ($(UNAME),Linux) - VALGRIND = valgrind -q --leak-check=full --track-origin=yes -else - detected_OS := $(shell sh -c 'uname 2>/dev/null || echo You are Mac stupid!_!') -endif +.c.o: %.o : %.c + @gcc ${CFLAGS} ${HEADER} -c $< -o $(<:.c=.o) -all: libft $(NAME) +all: ${PROG} -%.o : %.c - @$(CC) $(CFLAGS) -c $< -o $@ $(INC) +${PROG}: ${OBJS} + @echo "\033[33m----Compiling libft---" + @make re -C ./lib/libft + @$(CC) ${OBJS} -Llib/libft -lft -o ${PROG} + @echo "\033[32mPipex Compiled! (\033[31m\033[32m_\033[31m\033[32m)\n" -submodule: - git submodule init - git submodule update -libft: - @echo "____!!!$(BLUE)----- Compiling Libft------$(NC)" - @$(MAKE) -C $(LIBFT) - @$(MAKE) -C $(LIBFT) bonus - @echo "Compiling Libft: \033[1;32mOK\033[m" - +bonus: ${PROG_B} -$(NAME): $(OBJS) - @$(CC) $(CFLAGS) $(OBJS) $(LIBFT)libft.a -o $(NAME) - @echo "Pipex: \033[1;32mCOMPILED⛓️\033[m" +${PROG_B}: ${OBJS_B} + @echo "\033[33m----Compiling lib----" + @make re -C ./lib/libft + @$(CC) ${OBJS_B} -Llib/libft -lft -o pipex + @echo "\033[32mPipex Bonus Compiled!(\033[31m\033[32m_\033[31m\033[32m)\n" clean: - @echo "$(PURPLE)🚿 Sweeping in progress $(B_RED)🚿" - @rm -f $(OBJS) - @$(MAKE) -C $(LIBFT) clean - @sleep 0.5 - @echo "$(B_GREEN) Swept off 🧹🧹🧹$(NC)" + @make clean -C ./lib/libft + @rm -f ${OBJS} ${OBJS_B} -fclean: clean - @rm -f $(NAME) - @echo "$(GREEN) I am gone forever🚿🚿🚿 $(B_RED)🚿🚿 $(NC)" +fclean: clean + @make fclean -C ./lib/libft + @rm -f $(NAME) + @rm -f ${PROG} + @echo "\n\033[31mDeleting EVERYTHING! ⌐(ಠ۾ಠ)¬\n" -re: fclean all +re: fclean all -.phony: all libft clean fclean -.silent: all libft clean fclean +re_bonus: fclean bonus - \ No newline at end of file +.PHONY: all clean fclean re re_bonus bonus \ No newline at end of file diff --git a/README.md b/README.md index b50af43..9b86012 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,47 @@ -# Pipex +# Get_Next_Line_42 +This project is about programming a function that returns a line read from a file descriptor -## Learning Goal: -[1.]☑ Usage of the Pipe ( | ) operator, +A Good Guide regarding the concept is given by @Raspurrin Life gets easier:xD!![42Guides](https://github.com/Raspurrin/42Guides/blob/main/get_next_line/get_next_line.md) -[2.]☑ Learning how linux handle processes, +I used a different implementation idea with Intrusive Linked List. Although it is not required but it helped me learn how to implement linked list. +(Its not about showing off though -->> Just was fedup with the previous implementation where I had timeouts _-_ -[3.]☑ Usage of the heredoc, execve, dup,dup2 functions, +## **A small visual of the concept:** ## -[4.]☑ fork() , Child and Parent process, +image -[5.]☑ File descriptors and when and what happens with stdin, stdout, stderror, +## Intrusive Link List: -[6.]☑ usage of perror. +image + +## Advantages of Array Approach in this case : + +image + + For more detailed idea.. Look into this: [Data Structure the lord](https://www.data-structures-in-practice.com/intrusive-linked-lists/) + + + + One more thing : This is also faster. Have to do a benchmark test though. If anybody knows that please do and let me know ? + + +##Things/tools/resources I used while doing this : + +- **Debugging ( Use lldb or usual gdb)** + Resource Link: A great resource from a fellow 42 Student from another campus(this gem was found in the slack 42 Channel. Its a gem of resources and peer learning. Use it wisely : + + [Debug Me !!](https://sebastienwae.github.io/debugging-42/) ` + +- **Intutive sense about Memory Allocation** (still learning) - Malloc or Calloc -->> + [Stackoverflow !!](https://stackoverflow.com/questions/1538420/difference-between-malloc-and-calloc) + +- Static Variables and Allocating large memory to it .. :xD (You get Timeout( !!! ) -->:xD) + _
**Why allocating large memory in the stack with static variable not worth it ?**

+ _If you are allocating a big chunk of memory as a static variable inside a function, that memory will be allocated to your software until you exit from it. It is completely valid to do so if you are actively using that memory, like get_next_line. But if you are not using the memory you allocated, then your software will misuse the resources. I know that Mac will recognises this misuse and simply swap your memory usage to the hard drive, which causes your software to slow down._ ----- @Ali, Fellow Peer from 42 Wolfsburg +

+
+ +-->> Last but not least : Learn from Evaluations -- <<<< + + diff --git a/includes/pipex.h b/includes/pipex.h index 8504f19..c7d4c3f 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -5,8 +5,8 @@ /* +:+ +:+ +:+ */ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 02:33:33 by mabbas #+# #+# */ -/* Updated: 2022/12/21 04:18:17 by mabbas ### ########.fr */ +/* Created: 2021/08/02 09:58:35 by gcollet #+# #+# */ +/* Updated: 2022/12/23 02:31:56 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,29 +15,19 @@ # include # include +# include # include # include -# include # include -# include -# include "../libs/libft/libft.h" -# include "../libs/gnl/get_next_line.h" +# include "../lib/libft/libft.h" -typedef struct s_pipe -{ - int fd[2]; - pid_t pid1; - pid_t reader; - int in_file; - int out_file; -} t_pipe; - -/** Pipe opetator initialization and file handling **/ +/* Mandatory functions */ void error(void); -char *path_find(char *cmd, char **envp); -void exec(char *argv, char **envp); - -int file_open(char *argv, int i); -void display(void); +char *find_path(char *cmd, char **envp); +void execute(char *argv, char **envp); +int get_next_line(char **line); +/* Bonus functions */ +int open_file(char *argv, int i); +void usage(void); #endif diff --git a/lib/libft/Makefile b/lib/libft/Makefile new file mode 100644 index 0000000..e4388ac --- /dev/null +++ b/lib/libft/Makefile @@ -0,0 +1,50 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: mabbas +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2022/12/23 00:46:49 by mabbas #+# #+# # +# Updated: 2022/12/23 00:46:49 by mabbas ### ########.fr # +# # +# **************************************************************************** # + + +NAME = libft.a +SRCS = ft_isalnum.c ft_isdigit.c ft_memccpy.c ft_memcpy.c ft_putchar_fd.c\ + ft_putstr_fd.c ft_strdup.c ft_strlcpy.c ft_strncmp.c ft_strtrim.c\ + ft_toupper.c ft_bzero.c ft_isalpha.c ft_isprint.c ft_memchr.c\ + ft_memmove.c ft_putendl_fd.c ft_split.c ft_strjoin.c ft_strlen.c\ + ft_strnstr.c ft_substr.c ft_atoi.c ft_calloc.c ft_isascii.c ft_itoa.c\ + ft_memcmp.c ft_memset.c ft_putnbr_fd.c ft_strchr.c ft_strlcat.c\ + ft_strmapi.c ft_strrchr.c ft_tolower.c ft_atof.c +OBJS = ${SRCS:.c=.o} +SRCS_B = 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 +OBJS_B = ${SRCS_B:.c=.o} +HEADER = ./ + +CC = gcc +CFLAGS = -Wall -Wextra -Werror + +.c.o: %.o : %.c + @${CC} ${CFLAGS} -I ${HEADER} -c $< -o $(<:.c=.o) + +$(NAME): ${OBJS} + @ar rc ${NAME} ${OBJS} + +all: ${NAME} + +bonus: ${OBJS} ${OBJS_B} + @ar rc ${NAME} ${OBJS} ${OBJS_B} + +clean: + @rm -f ${OBJS} ${OBJS_B} + +fclean: clean + @rm -f $(NAME) + +re: fclean all + +.PHONY: all clean fclean re bonus \ No newline at end of file diff --git a/lib/libft/ft_atof.c b/lib/libft/ft_atof.c new file mode 100644 index 0000000..728290e --- /dev/null +++ b/lib/libft/ft_atof.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atof.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/07/12 15:38:52 by gcollet #+# #+# */ +/* Updated: 2021/07/28 16:25:22 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +double ft_atof(const char *str) +{ + double res; + double res2; + char *c; + int len; + + c = (char *)str; + res = (double)ft_atoi(c); + while (*c && *c != '.') + c++; + if (*c == '.') + c++; + res2 = (double)ft_atoi(c); + len = ft_strlen(c); + while (len--) + res2 /= 10; + if (res >= 0) + return (res + res2); + else + return (res + -res2); +} diff --git a/lib/libft/ft_atoi.c b/lib/libft/ft_atoi.c new file mode 100644 index 0000000..79f86ca --- /dev/null +++ b/lib/libft/ft_atoi.c @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 11:53:08 by gcollet #+# #+# */ +/* Updated: 2021/05/12 17:33:21 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction atoi() convertit le début de la chaîne pointée par nptr en +entier de type int . */ +/* VALEUR RENVOYÉE : Le résultat de la conversion. */ + +#include "libft.h" + +int ft_atoi(const char *nptr) +{ + long num; + int sign; + int i; + + i = 0; + sign = 1; + num = 0; + while ((nptr[i] >= '\t' && nptr[i] <= '\r') || nptr[i] == ' ') + nptr++; + if (nptr[i] == '-') + sign = sign * -1; + if (nptr[i] == '+' || nptr[i] == '-') + nptr++; + while (nptr[i] >= '0' && nptr[i] <= '9') + { + num = (num * 10) + nptr[i] - '0'; + nptr++; + if (num * sign > 2147483647) + return (-1); + if (num * sign < -2147483648) + return (0); + } + return (num * sign); +} diff --git a/lib/libft/ft_bzero.c b/lib/libft/ft_bzero.c new file mode 100644 index 0000000..1ec00d6 --- /dev/null +++ b/lib/libft/ft_bzero.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_bzero.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/05 15:00:08 by gcollet #+# #+# */ +/* Updated: 2021/05/08 12:41:53 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction bzero() met à 0 (octets contenant « \0 ») les n premiers octets +du bloc pointé par s. */ +/* VALEUR RENVOYÉE : Aucune. */ + +#include "libft.h" + +void ft_bzero(void *s, size_t n) +{ + char *str; + + str = (char *)s; + while (n) + { + *str = 0; + str++; + n--; + } +} diff --git a/lib/libft/ft_calloc.c b/lib/libft/ft_calloc.c new file mode 100644 index 0000000..6d7f9b0 --- /dev/null +++ b/lib/libft/ft_calloc.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 12:17:37 by gcollet #+# #+# */ +/* Updated: 2021/05/12 15:28:51 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* calloc() alloue la mémoire necessaire pour un tableau de nmemb éléments de +taille size octets, et renvoie un pointeur vers la mémoire allouée. Cette zone +est remplie avec des zéros. Si nmemb ou size vaut 0, calloc() renvoie soit +NULL, soit un pointeur unique qui pourra être passé ultérieurement à free() +avec succès. */ + +#include "libft.h" + +void *ft_calloc(size_t nmemb, size_t size) +{ + char *ptr; + + if (nmemb == 0 || size == 0) + { + nmemb = 1; + size = 1; + } + ptr = malloc (nmemb * size); + if (ptr) + ft_bzero(ptr, nmemb * size); + return (ptr); +} diff --git a/lib/libft/ft_isalnum.c b/lib/libft/ft_isalnum.c new file mode 100644 index 0000000..245a76e --- /dev/null +++ b/lib/libft/ft_isalnum.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 16:21:34 by gcollet #+# #+# */ +/* Updated: 2021/05/06 16:42:35 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si l'on a un caractère alphanumérique. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isalnum(int c) +{ + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') + || (c >= '0' && c <= '9')) + { + return (1); + } + return (0); +} diff --git a/lib/libft/ft_isalpha.c b/lib/libft/ft_isalpha.c new file mode 100644 index 0000000..97de5e2 --- /dev/null +++ b/lib/libft/ft_isalpha.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalpha.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 15:08:39 by gcollet #+# #+# */ +/* Updated: 2021/05/06 15:45:10 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si l'on a un caractère alphabétique. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isalpha(int c) +{ + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) + return (1); + return (0); +} diff --git a/lib/libft/ft_isascii.c b/lib/libft/ft_isascii.c new file mode 100644 index 0000000..b049c10 --- /dev/null +++ b/lib/libft/ft_isascii.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 10:04:18 by gcollet #+# #+# */ +/* Updated: 2021/05/07 10:25:01 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si c est un unsigned char sur 7 bits, entrant dans le jeu de +caractères ASCII. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + return (0); +} diff --git a/lib/libft/ft_isdigit.c b/lib/libft/ft_isdigit.c new file mode 100644 index 0000000..e3714df --- /dev/null +++ b/lib/libft/ft_isdigit.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 16:04:28 by gcollet #+# #+# */ +/* Updated: 2021/05/12 10:09:29 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie si l'on a un chiffre (0 à 9). */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isdigit(int c) +{ + if (c >= '0' && c <= '9') + return (1); + return (0); +} diff --git a/lib/libft/ft_isprint.c b/lib/libft/ft_isprint.c new file mode 100644 index 0000000..520492a --- /dev/null +++ b/lib/libft/ft_isprint.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 10:27:30 by gcollet #+# #+# */ +/* Updated: 2021/05/07 10:33:03 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Vérifie s'il s'agit d'un caractère imprimable, y compris l'espace. */ +/* Les valeurs renvoyées sont non nulles si le caractère c entre dans la +catégorie testée, et zéro sinon */ + +#include "libft.h" + +int ft_isprint(int c) +{ + if (c >= 32 && c <= 126) + return (1); + return (0); +} diff --git a/lib/libft/ft_itoa.c b/lib/libft/ft_itoa.c new file mode 100644 index 0000000..f41e9fc --- /dev/null +++ b/lib/libft/ft_itoa.c @@ -0,0 +1,95 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 17:26:08 by gcollet #+# #+# */ +/* Updated: 2021/05/13 15:57:51 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne une chaine de caractères représentant +l’integer reçu en argument .Les nombres négatifs doivent être gérés. */ +/* La chaine de caractères représentant l’integer. NULL si l’allocation +échoue. */ + +#include "libft.h" + +static char *ft_swap(char *tab, int size) +{ + int temp; + int i; + int j; + + i = 0; + j = size - 1; + if (tab[i] == '-') + i++; + while (i < j) + { + temp = tab[i]; + tab[i] = tab[j]; + tab[j] = temp; + i++; + j--; + } + return (tab); +} + +static char *ft_is_zero(char *tab) +{ + int i; + + i = 0; + tab[i++] = '0'; + tab[i] = '\0'; + return (tab); +} + +static int ft_len(int c) +{ + int len; + + len = 1; + if (c >= 0) + c *= -1; + else + len++; + while (c <= -10) + { + c /= 10; + len++; + } + return (len); +} + +char *ft_itoa(int n) +{ + char *tab; + int i; + long l_n; + int len; + + i = 0; + len = ft_len(n); + l_n = n; + tab = (char *)malloc(sizeof(char) * (len + 1)); + if (!tab) + return (0); + if (l_n == 0) + return (ft_is_zero(tab)); + if (l_n < 0) + { + l_n = -l_n; + tab[i++] = '-'; + } + while (l_n != 0) + { + tab[i++] = (l_n % 10) + '0'; + l_n /= 10; + } + tab [i] = '\0'; + return (ft_swap (tab, ft_strlen(tab))); +} diff --git a/lib/libft/ft_lstadd_back.c b/lib/libft/ft_lstadd_back.c new file mode 100644 index 0000000..2c70388 --- /dev/null +++ b/lib/libft/ft_lstadd_back.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 11:10:13 by gcollet #+# #+# */ +/* Updated: 2021/05/20 11:48:50 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Ajoute l’élément new à la fin de la liste. */ + +#include "libft.h" + +void ft_lstadd_back(t_list **alst, t_list *new) +{ + t_list *temp; + + if (*alst == NULL) + *alst = new; + else + { + temp = ft_lstlast(*(alst)); + temp->next = new; + } +} diff --git a/lib/libft/ft_lstadd_front.c b/lib/libft/ft_lstadd_front.c new file mode 100644 index 0000000..261e2e4 --- /dev/null +++ b/lib/libft/ft_lstadd_front.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 09:29:13 by gcollet #+# #+# */ +/* Updated: 2021/05/20 10:49:20 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Ajoute l’élément ’new’ au début de la liste. */ + +#include "libft.h" + +void ft_lstadd_front(t_list **alst, t_list *new) +{ + new->next = *alst; + *alst = new; +} diff --git a/lib/libft/ft_lstclear.c b/lib/libft/ft_lstclear.c new file mode 100644 index 0000000..9ff9406 --- /dev/null +++ b/lib/libft/ft_lstclear.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 13:17:48 by gcollet #+# #+# */ +/* Updated: 2021/05/20 15:04:09 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Supprime et libère la mémoire de l’élément passé en paramètre, et de tous +les élements qui suivent, à l’aide de del et de free(3) Enfin, le pointeur +initial doit être mis à NULL. */ + +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void*)) +{ + t_list *temp; + + if (lst == NULL) + return ; + while (*lst) + { + temp = (*lst)->next; + ft_lstdelone(*lst, del); + (*lst) = temp; + } +} diff --git a/lib/libft/ft_lstdelone.c b/lib/libft/ft_lstdelone.c new file mode 100644 index 0000000..5bc96cb --- /dev/null +++ b/lib/libft/ft_lstdelone.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 11:52:19 by gcollet #+# #+# */ +/* Updated: 2021/05/20 13:45:11 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Libère la mémoire de l’élément passé en argument en utilisant la fonction +del puis avec free(3). La mémoire de next ne doit pas être free. */ + +#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void*)) +{ + if (lst == NULL) + return ; + if (lst->content) + { + del(lst->content); + free(lst); + } +} diff --git a/lib/libft/ft_lstiter.c b/lib/libft/ft_lstiter.c new file mode 100644 index 0000000..d619292 --- /dev/null +++ b/lib/libft/ft_lstiter.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 13:40:10 by gcollet #+# #+# */ +/* Updated: 2021/05/20 15:04:34 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Itère sur la list lst et applique la fonction f au contenu chaque élément. */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(void *)) +{ + while (lst) + { + f(lst->content); + lst = lst->next; + } +} diff --git a/lib/libft/ft_lstlast.c b/lib/libft/ft_lstlast.c new file mode 100644 index 0000000..dc9202b --- /dev/null +++ b/lib/libft/ft_lstlast.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 10:48:37 by gcollet #+# #+# */ +/* Updated: 2021/05/20 11:07:54 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Renvoie le dernier élément de la liste. */ + +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + if (lst) + { + while (lst->next) + lst = lst->next; + } + return (lst); +} diff --git a/lib/libft/ft_lstmap.c b/lib/libft/ft_lstmap.c new file mode 100644 index 0000000..2466f7c --- /dev/null +++ b/lib/libft/ft_lstmap.c @@ -0,0 +1,50 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 13:50:09 by gcollet #+# #+# */ +/* Updated: 2021/05/20 15:16:58 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Itère sur la liste lst et applique la fonction f au contenu de chaque +élément. Crée une nouvelle liste résultant des applications successives de f. +La fonction del est la pour detruire le contenu d un element si necessaire */ + +#include "libft.h" + +static t_list *ft_newlst(t_list *new_lst, t_list *lst, void *(*f)(void *) + , void (*del)(void *)) +{ + t_list *add; + + add = ft_lstnew(f(lst->content)); + if (add == NULL) + { + ft_lstclear(&new_lst, del); + return (NULL); + } + ft_lstadd_back(&new_lst, add); + return (new_lst); +} + +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +{ + t_list *new_lst; + + if (lst == NULL) + return (NULL); + new_lst = ft_lstnew(f(lst->content)); + if (new_lst == NULL) + return (NULL); + lst = lst->next; + while (lst) + { + ft_newlst(new_lst, lst, f, del); + lst = lst->next; + } + return (new_lst); +} diff --git a/lib/libft/ft_lstnew.c b/lib/libft/ft_lstnew.c new file mode 100644 index 0000000..a257ede --- /dev/null +++ b/lib/libft/ft_lstnew.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 08:21:11 by gcollet #+# #+# */ +/* Updated: 2021/05/20 11:42:33 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et renvoie un nouvel élément. La variable content est +initialisée à l’aide de la valeur du paramètre content. La variable ’next’ est +initialisée à NULL. */ +/* Valeur de retour: Le nouvel element */ + +#include "libft.h" + +t_list *ft_lstnew(void *content) +{ + t_list *list; + + list = malloc(sizeof(*list)); + if (list == NULL) + return (NULL); + list->content = content; + list->next = NULL; + return (list); +} diff --git a/lib/libft/ft_lstsize.c b/lib/libft/ft_lstsize.c new file mode 100644 index 0000000..75ae237 --- /dev/null +++ b/lib/libft/ft_lstsize.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/20 10:10:24 by gcollet #+# #+# */ +/* Updated: 2021/05/20 10:50:27 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Compte le nombre d’éléments de la liste. */ + +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int i; + + i = 0; + while (lst) + { + lst = lst->next; + i++; + } + return (i); +} diff --git a/lib/libft/ft_memccpy.c b/lib/libft/ft_memccpy.c new file mode 100644 index 0000000..7c95847 --- /dev/null +++ b/lib/libft/ft_memccpy.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memccpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 10:03:50 by gcollet #+# #+# */ +/* Updated: 2021/05/11 13:52:27 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memccpy() copie au plus n octets de la zone mémoire src vers +la zone mémoire dest, s'arrêtant dès qu'elle rencontre le caractère c. */ +/* La fonction memccpy() renvoie un pointeur sur le caractère immédiatement +après c dans la zone dest, ou NULL si c n'a pas été trouvé dans les n premiers +caractères de src. */ + +#include "libft.h" + +void *ft_memccpy(void *dest, const void *src, int c, size_t n) +{ + size_t i; + unsigned char *str_dest; + unsigned char *str_src; + + str_dest = (unsigned char *)dest; + str_src = (unsigned char *)src; + i = 0; + while (i < n) + { + str_dest[i] = str_src[i]; + if (str_dest[i] == (unsigned char)c) + return (dest + i + 1); + i++; + } + return (NULL); +} diff --git a/lib/libft/ft_memchr.c b/lib/libft/ft_memchr.c new file mode 100644 index 0000000..e40c94c --- /dev/null +++ b/lib/libft/ft_memchr.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 11:23:30 by gcollet #+# #+# */ +/* Updated: 2021/05/11 13:18:41 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memchr() examine les n premiers octets de la zone mémoire +pointée par s à la recherche du caractère c. Le premier octet correspondant à c +(interprété comme un unsigned char) arrête l'opération. */ +/* La fonction memchr() renvoie un pointeur sur l'octet correspondant, ou NULL +si le caractère n'est pas présent dans la zone de mémoire concernée. */ + +#include "libft.h" + +void *ft_memchr(const void *s, int c, size_t n) +{ + size_t i; + unsigned char *str_s; + + str_s = (unsigned char *)s; + i = 0; + while (i < n) + { + if (str_s[i] == (unsigned char)c) + return (str_s + i); + i++; + } + return (NULL); +} diff --git a/lib/libft/ft_memcmp.c b/lib/libft/ft_memcmp.c new file mode 100644 index 0000000..d17a009 --- /dev/null +++ b/lib/libft/ft_memcmp.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 11:49:42 by gcollet #+# #+# */ +/* Updated: 2021/05/12 16:49:27 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memcmp() compare les n premiers octets des zones mémoire s1 et +s2. Elle renvoie un entier inférieur, égal, ou supérieur à zéro, si s1 est +respectivement inférieure, égale ou supérieur à s2. */ +/* La fonction memcmp() renvoie un entier négatif, nul ou positif si les n +premiers octets de s1 sont respectivement inférieurs, égaux ou supérieurs aux n +premiers octets de s2. */ + +#include "libft.h" + +int ft_memcmp(const void *s1, const void *s2, size_t n) +{ + unsigned int i; + unsigned char *str_s1; + unsigned char *str_s2; + + i = 0; + str_s1 = (unsigned char *)s1; + str_s2 = (unsigned char *)s2; + if (n == 0) + return (0); + while (str_s1[i] == str_s2[i] && i < n - 1) + { + i++; + } + return (str_s1[i] - str_s2[i]); +} diff --git a/lib/libft/ft_memcpy.c b/lib/libft/ft_memcpy.c new file mode 100644 index 0000000..84f9c3e --- /dev/null +++ b/lib/libft/ft_memcpy.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/05 11:18:02 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:17:42 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memcpy() copie n octets depuis la zone mémoire src vers la zone +mémoire dest. Les deux zones ne doivent pas se chevaucher. Si c'est le cas, +utilisez plutôt memmove(). */ +/* La fonction memcpy() renvoie un pointeur sur dest. */ + +#include "libft.h" + +void *ft_memcpy(void *dest, const void *src, size_t n) +{ + size_t i; + + i = 0; + if (!dest && !src) + return (NULL); + while (i < n) + { + ((unsigned char *)dest)[i] = ((unsigned char *)src)[i]; + i++; + } + return (dest); +} diff --git a/lib/libft/ft_memmove.c b/lib/libft/ft_memmove.c new file mode 100644 index 0000000..8920416 --- /dev/null +++ b/lib/libft/ft_memmove.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 10:37:42 by gcollet #+# #+# */ +/* Updated: 2022/02/06 10:00:40 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memmove() copie n octets depuis la zone mémoire src vers la zone +mémoire dest. Les deux zones peuvent se chevaucher : la copie se passe comme +si les octets de src étaient d'abord copiés dans une zone temporaire qui ne +chevauche ni src ni dest, et les octets sont ensuite copiés de la zone +temporaire vers dest. */ +/* La fonction memmove() renvoie un pointeur sur dest. */ + +#include "libft.h" + +void *ft_memmove(void *dest, const void *src, size_t n) +{ + char *str_dest; + char *str_src; + + str_dest = (char *)dest; + str_src = (char *)src; + if (str_dest > str_src) + { + while (n--) + str_dest[n] = str_src[n]; + } + else if (str_dest < str_src) + ft_memcpy(dest, src, n); + return (dest); +} diff --git a/lib/libft/ft_memset.c b/lib/libft/ft_memset.c new file mode 100644 index 0000000..51dcd73 --- /dev/null +++ b/lib/libft/ft_memset.c @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memset.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/05 10:19:52 by gcollet #+# #+# */ +/* Updated: 2021/07/28 14:09:52 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction memset() remplit les n premiers octets de la zone mémoire +pointée par s avec l'octet c. */ +/* La fonction memset() renvoie un pointeur sur la zone mémoire s. */ + +#include "libft.h" + +void *ft_memset(void *s, int c, size_t n) +{ + char *str; + + str = s; + while (n) + { + *str = (unsigned char)c; + str++; + n--; + } + return (s); +} diff --git a/lib/libft/ft_putchar_fd.c b/lib/libft/ft_putchar_fd.c new file mode 100644 index 0000000..70ce152 --- /dev/null +++ b/lib/libft/ft_putchar_fd.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:01:32 by gcollet #+# #+# */ +/* Updated: 2021/05/11 12:00:30 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit le caractère ’c’ sur le file descriptor donné. */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + write (fd, &c, 1); +} diff --git a/lib/libft/ft_putendl_fd.c b/lib/libft/ft_putendl_fd.c new file mode 100644 index 0000000..e1a3a2a --- /dev/null +++ b/lib/libft/ft_putendl_fd.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putendl_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:44:55 by gcollet #+# #+# */ +/* Updated: 2021/05/13 16:00:14 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit La chaine de caractères ’s’ sur le file descriptor donné, suivie +d’un retour à la ligne. */ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + if (!s) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } + ft_putchar_fd('\n', fd); +} diff --git a/lib/libft/ft_putnbr_fd.c b/lib/libft/ft_putnbr_fd.c new file mode 100644 index 0000000..6ab0db8 --- /dev/null +++ b/lib/libft/ft_putnbr_fd.c @@ -0,0 +1,36 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:51:46 by gcollet #+# #+# */ +/* Updated: 2021/05/11 11:59:00 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit l’integer ’n’ sur le file descriptor donné. */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + long i; + + i = n; + if (i < 0) + { + ft_putchar_fd('-', fd); + i = i * -1; + } + if (i > 9) + { + ft_putnbr_fd(i / 10, fd); + ft_putnbr_fd(i % 10, fd); + } + else + { + ft_putchar_fd(i + 48, fd); + } +} diff --git a/lib/libft/ft_putstr_fd.c b/lib/libft/ft_putstr_fd.c new file mode 100644 index 0000000..95742f7 --- /dev/null +++ b/lib/libft/ft_putstr_fd.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putstr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 11:17:23 by gcollet #+# #+# */ +/* Updated: 2021/05/13 15:59:39 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Écrit la chaine de caractères ’s’ sur le file descriptor donné. */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + if (!s) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } +} diff --git a/lib/libft/ft_split.c b/lib/libft/ft_split.c new file mode 100644 index 0000000..e8fcb5b --- /dev/null +++ b/lib/libft/ft_split.c @@ -0,0 +1,106 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 14:59:30 by gcollet #+# #+# */ +/* Updated: 2021/05/13 15:11:03 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne un tableau de chaines de caracteres obtenu +en séparant ’s’ à l’aide du caractère ’c’, utilisé comme délimiteur. Le tableau +doit être terminé par NULL. */ +/* Le tableau de nouvelles chaines de caractères, résultant du découpage. +NULL si l’allocation échoue. */ + +#include "libft.h" + +static char **ft_malloc_error(char **tab) +{ + size_t i; + + i = 0; + while (tab[i]) + { + free(tab[i]); + i++; + } + free(tab); + return (NULL); +} + +static size_t ft_nb_words(char const *s, char c) +{ + size_t i; + size_t nb_words; + + if (!s[0]) + return (0); + i = 0; + nb_words = 0; + while (s[i] && s[i] == c) + i++; + while (s[i]) + { + if (s[i] == c) + { + nb_words++; + while (s[i] && s[i] == c) + i++; + continue ; + } + i++; + } + if (s[i - 1] != c) + nb_words++; + return (nb_words); +} + +static void ft_get_next_word(char **next_word, size_t *next_word_len, char c) +{ + size_t i; + + *next_word += *next_word_len; + *next_word_len = 0; + i = 0; + while (**next_word && **next_word == c) + (*next_word)++; + while ((*next_word)[i]) + { + if ((*next_word)[i] == c) + return ; + (*next_word_len)++; + i++; + } +} + +char **ft_split(char const *s, char c) +{ + char **tab; + char *next_word; + size_t next_word_len; + size_t i; + + if (!s) + return (NULL); + tab = (char **)malloc(sizeof(char *) * (ft_nb_words(s, c) + 1)); + if (!tab) + return (NULL); + i = 0; + next_word = (char *)s; + next_word_len = 0; + while (i < ft_nb_words(s, c)) + { + ft_get_next_word(&next_word, &next_word_len, c); + tab[i] = (char *)malloc(sizeof(char) * (next_word_len + 1)); + if (!tab[i]) + return (ft_malloc_error(tab)); + ft_strlcpy(tab[i], next_word, next_word_len + 1); + i++; + } + tab[i] = NULL; + return (tab); +} diff --git a/lib/libft/ft_strchr.c b/lib/libft/ft_strchr.c new file mode 100644 index 0000000..c5a6730 --- /dev/null +++ b/lib/libft/ft_strchr.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:06:54 by gcollet #+# #+# */ +/* Updated: 2021/05/11 14:23:26 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strchr() renvoie un pointeur sur la première occurrence du +caractère c dans la chaîne s. */ +/* La fonction strchr() renvoie un pointeur sur le caractère correspondant, +ou NULL si le caractère n'a pas été trouvé. */ + +#include "libft.h" + +char *ft_strchr(const char *s, int c) +{ + char *str; + + str = (char *)s; + while (*str != c) + { + if (*str == '\0') + return (NULL); + str++; + } + return (str); +} diff --git a/lib/libft/ft_strdup.c b/lib/libft/ft_strdup.c new file mode 100644 index 0000000..c1972a4 --- /dev/null +++ b/lib/libft/ft_strdup.c @@ -0,0 +1,38 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 12:51:40 by gcollet #+# #+# */ +/* Updated: 2021/05/13 16:40:52 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strdup() renvoie un pointeur sur une nouvelle chaîne de +caractères qui est dupliquée depuis s. La mémoire occupée par cette nouvelle +chaîne est obtenue en appelant malloc(), et peut (doit) donc être libérée avec +free().*/ +/* La fonction strdup() renvoie un pointeur sur la chaîne dupliquée, ou NULL +s'il n'y avait pas assez de mémoire. */ + +#include "libft.h" + +char *ft_strdup(const char *s) +{ + char *tab; + int i; + + i = 0; + tab = (char *)malloc(sizeof(*tab) * (ft_strlen(s) + 1)); + if (!tab) + return (NULL); + while (s[i]) + { + tab[i] = s[i]; + i++; + } + tab[i] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_strjoin.c b/lib/libft/ft_strjoin.c new file mode 100644 index 0000000..dc416e0 --- /dev/null +++ b/lib/libft/ft_strjoin.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 11:42:29 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:20:08 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne une nouvelle chaine, résultat de la +concaténation de s1 et s2. */ +/* La nouvelle chaine de caractères. NULL si l’allocation échoue. */ + +#include "libft.h" + +char *ft_strjoin(char const *s1, char const *s2) +{ + char *tab; + int i; + int j; + + i = 0; + j = 0; + if (!s1 || !s2) + return (NULL); + tab = (char *)malloc(sizeof(*tab) * (ft_strlen(s1) + ft_strlen(s2)) + 1); + if (tab == 0) + return (NULL); + while (s1[i]) + { + tab[i] = s1[i]; + i++; + } + while (s2[j]) + { + tab[i] = s2[j]; + j++; + i++; + } + tab[i] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_strlcat.c b/lib/libft/ft_strlcat.c new file mode 100644 index 0000000..bdbe4c7 --- /dev/null +++ b/lib/libft/ft_strlcat.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcat.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 14:49:15 by gcollet #+# #+# */ +/* Updated: 2021/05/17 10:15:29 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* The strlcat() function appends the NUL-terminated string src to the end of +dst. It will append at most size - strlen(dst) - 1 bytes, NUL-terminating the +result. */ +/* The strlcat() functions return the total length of the string they tried +to create that means the initial length of dst plus the length of src. */ + +#include "libft.h" + +size_t ft_strlcat(char *dst, const char *src, size_t size) +{ + size_t n; + size_t m; + size_t p; + + m = 0; + n = ft_strlen(dst); + p = ft_strlen(src); + if (size == 0) + return (p); + while ((src[m] != '\0') && ((n + m) < (size - 1))) + { + dst[n + m] = src[m]; + m++; + } + dst[n + m] = '\0'; + if (size > n) + return (n + p); + return (size + p); +} diff --git a/lib/libft/ft_strlcpy.c b/lib/libft/ft_strlcpy.c new file mode 100644 index 0000000..0d57e17 --- /dev/null +++ b/lib/libft/ft_strlcpy.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 13:31:38 by gcollet #+# #+# */ +/* Updated: 2021/05/11 14:40:33 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* The strlcpy() function copies up to size characters from the +NUL-terminated string src to dst, NUL-terminating the result. */ +/* The strlcpy() functions return the total length of the string +they tried to create. For strlcpy() that means the length of src. */ + +#include "libft.h" + +size_t ft_strlcpy(char *dst, const char *src, size_t size) +{ + size_t i; + + i = 0; + if (!dst || !src) + return (0); + if (size > 0) + { + while (src[i] && --size) + { + dst[i] = src[i]; + i++; + } + dst[i] = '\0'; + } + while (src[i]) + i++; + return (i); +} diff --git a/lib/libft/ft_strlen.c b/lib/libft/ft_strlen.c new file mode 100644 index 0000000..dfdf22c --- /dev/null +++ b/lib/libft/ft_strlen.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/06 14:39:40 by gcollet #+# #+# */ +/* Updated: 2021/05/06 15:00:37 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strlen() calcule la longueur de la chaîne de caractères s, sans +compter l'octet nul « \0 » final. */ +/* La fonction strlen() renvoie le nombre de caractères dans la chaîne s. */ + +#include "libft.h" + +size_t ft_strlen(const char *s) +{ + size_t i; + + i = 0; + while (s[i]) + i++; + return (i); +} diff --git a/lib/libft/ft_strmapi.c b/lib/libft/ft_strmapi.c new file mode 100644 index 0000000..b92af1b --- /dev/null +++ b/lib/libft/ft_strmapi.c @@ -0,0 +1,39 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/11 10:20:19 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:34:37 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +/* Applique la fonction ’f’ à chaque caractère de la chaine de caractères +passée en argument pour créer une nouvelle chaine de caractères (avec malloc) +résultant des applications successives de ’f’. */ +/* La chaine de caractères résultant des application ssuccessives de f. +Retourne NULL si l’allocation échoue. */ + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + int i; + char *tab; + + i = 0; + if (!s || !f) + return (NULL); + tab = (char *)malloc(sizeof(char) * ft_strlen(s) + 1); + if (tab == 0) + return (NULL); + while (s[i]) + { + tab[i] = (*f)(i, s[i]); + i++; + } + tab[i] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_strncmp.c b/lib/libft/ft_strncmp.c new file mode 100644 index 0000000..5b7d741 --- /dev/null +++ b/lib/libft/ft_strncmp.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:51:46 by gcollet #+# #+# */ +/* Updated: 2022/12/23 01:56:56 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strcmp() compare les deux chaînes s1 et s2. Elle renvoie un +entier négatif, nul, ou positif, si s1 est respectivement inférieure, égale +ou supérieure à s2. */ +/* La fonction strncmp() renvoie un entier inférieur, égal ou supérieur à zéro +si s1 (ou ses n premiers octets) est respectivement inférieure, égale ou +supérieure à s2. */ + +#include "libft.h" + +int ft_strncmp(const char *str1, const char *str2, size_t n) +{ + while (n-- > 0 && (*str1 || *str2)) + { + if (*str1 != *str2) + return ((*(unsigned char *) str1) - (*(unsigned char *) str2)); + str1++; + str2++; + } + return (0); +} diff --git a/lib/libft/ft_strnstr.c b/lib/libft/ft_strnstr.c new file mode 100644 index 0000000..a0e1214 --- /dev/null +++ b/lib/libft/ft_strnstr.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/08 11:17:09 by gcollet #+# #+# */ +/* Updated: 2021/05/11 13:33:00 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* The strnstr() function locates the first occurrence of the null-terminated +string little in the string big, where not more than len character are +searched. */ +/* If little is an empty string, big is returned; if little occurs nowhere in +big, NULL is returned; otherwise a pointer to the first character of the first +occurrence of little is returned. */ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + size_t i; + size_t j; + + i = 0; + if (little[i] == '\0') + return ((char *)big); + while (big[i] && i < len) + { + j = 0; + while (big[i + j] == little[j] && i + j < len) + { + if (little[j + 1] == '\0') + return ((char *)big + i); + j++; + } + i++; + } + return (0); +} diff --git a/lib/libft/ft_strrchr.c b/lib/libft/ft_strrchr.c new file mode 100644 index 0000000..11f2c94 --- /dev/null +++ b/lib/libft/ft_strrchr.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strrchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:38:19 by gcollet #+# #+# */ +/* Updated: 2021/05/11 14:49:22 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* La fonction strrchr() renvoie un pointeur sur la dernière occurrence du +caractère c dans la chaîne s. */ +/* La fonction strrchr() renvoie un pointeur sur le caractère correspondant, +ou NULL si le caractère n'a pas été trouvé. */ + +#include "libft.h" + +char *ft_strrchr(const char *s, int c) +{ + int i; + + i = 0; + while (s[i]) + i++; + if (c == '\0') + return ((char *)s + i); + while (i--) + { + if (s[i] == c) + return ((char *)(s + i)); + } + return (0); +} diff --git a/lib/libft/ft_strtrim.c b/lib/libft/ft_strtrim.c new file mode 100644 index 0000000..c2e7551 --- /dev/null +++ b/lib/libft/ft_strtrim.c @@ -0,0 +1,34 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strtrim.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 12:46:47 by gcollet #+# #+# */ +/* Updated: 2021/05/13 13:30:05 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc) et retourne une copie de la chaine ’s1’, sans les +caractères spécifiés dans ’set’ au début et à la fin de la chaine de +caractères. */ +/* La chaine de caractères trimmée. NULL si l’allocation échoue. */ + +#include "libft.h" + +char *ft_strtrim(char const *s1, char const *set) +{ + size_t len; + char *tab; + + if (!s1 || !set) + return (NULL); + while (*s1 && ft_strchr(set, *s1)) + s1++; + len = ft_strlen(s1); + while (len && ft_strchr(set, s1[len])) + len--; + tab = ft_substr((char *)s1, 0, len + 1); + return (tab); +} diff --git a/lib/libft/ft_substr.c b/lib/libft/ft_substr.c new file mode 100644 index 0000000..45f68fe --- /dev/null +++ b/lib/libft/ft_substr.c @@ -0,0 +1,44 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_substr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/10 10:51:58 by gcollet #+# #+# */ +/* Updated: 2021/05/13 16:02:24 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* Alloue (avec malloc()) et retourne une chaine de caractères issue de la +chaine ’s’. Cette nouvelle chaine commence à l’index ’start’ et a pour taille +maximale ’len’ */ +/* La nouvelle chaine de caractere. NULL si l’allocation échoue. */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + char *tab; + size_t i; + size_t j; + + i = 0; + j = 0; + if (!s) + return (NULL); + tab = (char *)malloc(sizeof(*s) * (len + 1)); + if (!tab) + return (NULL); + while (s[i]) + { + if (i >= start && j < len) + { + tab[j] = s[i]; + j++; + } + i++; + } + tab[j] = '\0'; + return (tab); +} diff --git a/lib/libft/ft_tolower.c b/lib/libft/ft_tolower.c new file mode 100644 index 0000000..024383f --- /dev/null +++ b/lib/libft/ft_tolower.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 11:01:50 by gcollet #+# #+# */ +/* Updated: 2021/05/07 11:05:35 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* tolower() convertit la lettre c en minuscule si c'est possible. */ +/* La valeur renvoyée est celle de la lettre convertie, ou bien c si la +conversion n'était pas possible. */ + +#include "libft.h" + +int ft_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + c += 32; + return (c); +} diff --git a/lib/libft/ft_toupper.c b/lib/libft/ft_toupper.c new file mode 100644 index 0000000..c98b9f7 --- /dev/null +++ b/lib/libft/ft_toupper.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: gcollet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/05/07 10:50:12 by gcollet #+# #+# */ +/* Updated: 2021/05/07 11:03:34 by gcollet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* toupper() convertit la lettre c en majuscule si c'est possible. */ +/* La valeur renvoyée est celle de la lettre convertie, ou bien c si la à +conversion n'était pas possible. */ + +#include "libft.h" + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c -= 32; + return (c); +} diff --git a/lib/libft/libft.h b/lib/libft/libft.h new file mode 100644 index 0000000..0c29bed --- /dev/null +++ b/lib/libft/libft.h @@ -0,0 +1,70 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libft.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 01:04:25 by mabbas #+# #+# */ +/* Updated: 2022/12/23 01:04:28 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H + +# include +# include + +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; + +int ft_atoi(const char *nptr); +double ft_atof(const char *str); +void ft_bzero(void *s, size_t n); +void *ft_calloc(size_t nmemb, size_t size); +int ft_isalnum(int c); +int ft_isalpha(int c); +int ft_isascii(int c); +int ft_isdigit(int c); +int ft_isprint(int c); +char *ft_itoa(int n); +void *ft_memccpy(void *dest, const void *src, int c, 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); +void *ft_memcpy(void *dest, const void *src, size_t n); +void *ft_memmove(void *dest, const void *src, size_t n); +void *ft_memset(void *s, int c, size_t n); +void ft_putchar_fd(char c, int fd); +void ft_putendl_fd(char *s, int fd); +void ft_putnbr_fd(int n, int fd); +void ft_putstr_fd(char *s, int fd); +char **ft_split(char const *s, char c); +char *ft_strchr(const char *s, int c); +char *ft_strdup(const char *s); +char *ft_strjoin(char const *s1, char const *s2); +size_t ft_strlcat(char *dst, const char *src, size_t size); +size_t ft_strlcpy(char *dst, const char *src, size_t size); +size_t ft_strlen(const char *s); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +int ft_strncmp(const char *s1, const char *s2, size_t n); +char *ft_strnstr(const char *big, const char *little, size_t len); +char *ft_strrchr(const char *s, int c); +char *ft_strtrim(char const *s1, char const *set); +char *ft_substr(char const *s, unsigned int start, size_t len); +int ft_tolower(int c); +int ft_toupper(int c); +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 *)); + +#endif \ No newline at end of file diff --git a/pipex.dSYM/Contents/Info.plist b/pipex.dSYM/Contents/Info.plist new file mode 100644 index 0000000..a484750 --- /dev/null +++ b/pipex.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.pipex + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/pipex.dSYM/Contents/Resources/DWARF/pipex b/pipex.dSYM/Contents/Resources/DWARF/pipex new file mode 100644 index 0000000000000000000000000000000000000000..aca06bb9ba55ae1de2ca7149e5dda52d81f25431 GIT binary patch literal 11776 zcmeHNe{fty9pCrf?YqledTE+cODl3{fdb_&Neh9HwnUoJUIVRdNG~bl>-~6_T)Euc zynENCS|+gtMa7zqijJd<<5c`HfJ|j97G=@_o#LqY2UgHBGLAEXBZK~-RTS~_-M4$W zTpEoI|2W>xeBbW(yWjoncfb4N?c2A{z46*V{ETS^V=M@20=)u(3M-LV4w`)Io2^&8 z+7&$c?ZElhmc+l(Ddid|wgj08qM(CFpDkvr4N-e5V{ah77_*Yi`?ub{t#8v-HMgc^JC(y^e6?&C`JG4w!g&IQ!(Y35cWzc<#(r9d6OmbAFQ)cU zdqYx;_Svb*h?UP3Y!c0fcS23dh%7iyr0`0WR3SNLm+SFPJnz|epDcf3)jU8_T!ZHx zEX~F1{+WmOQK{d3`NHs$PO>m!m*=$iX^Hokgn4>_cyfBq!7HEj>-(eq7arb}99->J|2w>7sg$=Z(Ya8q$D978hxZ!^ zGkwi}fLBVU>+z1C^YGL#Ilg9Lcw(?zz`ipQZ>enWnFZn%Q~T0XbG?1%UYc#+xoiKm zeU03P2O1t|c%b2dh6frR`2X<$ZR5k(bG&?mw_l)dAL93Rd;DdR-*J=2(|3Ou9~J8R zq8EIN=6w{P7`sF8jH&PEjO5umul!w-k4WB?{9^#7@)Jt`dXGOU`F6>FLGn{wUOs*Q zwxHm&wC{wDpk&MlE~XPFGwTpZCcOKJTsc zXilgU({>r4vY^xgBz65py7dr2O1t|c%b2dh6frRXn3IEfrbYf z9{8X2KpqDGK6VYhpfyeVTX+#g^c_xuvXd^eSbr|%B%On?P4<2}U&P<&*e%7ev1B3B zk6&{G#bUl3+qG$1Id)qzy?s}rqdnSjU9_CJD^@8xv0NdYuVn04ZtV@%zdcChgKv{b z0E$`iZ%ipyvd5!oYP2Vcj?&NcYMTCMmU0=(h1^G7-K4AY4Wm`#i-UnZJY*i`O=tNc zb3HfBI5*4@?jPd1>2kmMB;qU&n8Z)n_*KA>D+_0oX1N7>tO2D8ZV=;*{+i7*-dM%W<;z}YkfYVX5INcx{0m=N;Z5c#zM9}Y z8}(1}wqd>!!XTV{26k`bO%+srn6EG&<2;Z++CVyNRzyoz2p2TN z1wKdvXb9Mh_bP2&_7V zjNLpiOh%&GMZ+kJo&ijpzbnDfBQ*H5>c~<@TgHzV)jD0_ZREoT(R5YMh-rL%;uI=1 zUSLsFan|_S1XX9e2sUK8##bk@JS@1ys4B}>X89#?NZ}1gdjR!AsK-9_k2pEQNtQgfgU^H{R z-UK(|AWz^a8h^AFnTWXRv_$WPF4gJ{ocSY(t0D>!>uH{C5Ah^v`nSLxo=e}AS z^%AQtwd4?O5EoOJ7OA2|W}zw0LyIW1Us0KN3p8HqPHphFloO*IAdddNmfI_=jY<53 zuvT!euOzJP*ydR~@JA}wNkfI1f5wCR{M}&uG`h?;NUHg%jsQKHXsGEd_!i^=e~5-v z8_0KQh=$X}AY)626jy`vHSEKPX8XSr5}F9){}TL7{#U);kC&gH#+|H}s|*?r+8|k^ zwbCr49@tvTjh=>7YrO|Dv~aJ`ZyG<5O)y`YH(YIiCac_teMpeHf=CN zIWfI<#A$>3NZ3{Fz%FIXX{x?URyZn5yHRo(QDL{N&@<*HQ6aA#z1pBd*!`qO&7(y_ z>sN^P5_h|7f`_0398<@H6jwoxH-6*IycLLuC%^0zQ5 zhe=0K(`DegAP$m7D6|2|&@#xpD&hJln`;AOy>!hclFs9rQe?mFlyk*Gq@y$19&L}T z7Sd}wI@`fT*LFrbZ@h}pCNicrSpV&2lGSZ4S!@KqHnNT#8%w5A$#QI6=MJa1&rZAL z*bdsvS(|f(WWMgrkaR}&GrO?A#PI7Ro6Fny%Tf2HAZfAUdT$Hpr)jP35KFCC)i1Q7 zd#gEq^VF{77A{75tGIB0+SJUvYSLpFRPK(J#gpa868vnTpFG|hNWFb#zj?&#CsoO2 z@!QB@X|`oo?-q2pAQd^V`wT(#JK}PHYksl1){^ht` zXiA?DmhuagCq47W?{zEs<%@See$V;#$@@a-$Y&1iDc^sNeDQJ6mqFhF;VKz>6GZDN z;m|U>jIj^={ZB{1iN%-1w0uMS>SupV6^VtI#I!y`yzSxl+(lwq-l?6mK(B(YS9dqR x30@{igVuY}Ah$!j`{y70)XAA7Y0%0KiP&>Mw31v~J9~;!}e**3evNr$# literal 0 HcmV?d00001 diff --git a/pipex_bonus.dSYM/Contents/Info.plist b/pipex_bonus.dSYM/Contents/Info.plist new file mode 100644 index 0000000..65a85a2 --- /dev/null +++ b/pipex_bonus.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.pipex_bonus + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus b/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus new file mode 100644 index 0000000000000000000000000000000000000000..b3efa25c23ed8f91783f4a691d6a14c8e87ac1ec GIT binary patch literal 12576 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 01:03:59 by mabbas #+# #+# */ +/* Updated: 2022/12/23 01:04:01 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Child process that run inside a fork, take the filein, put the output inside + a pipe and then close with the exec function */ +void child_process(char **argv, char **envp, int *fd) +{ + int filein; + + filein = open(argv[1], O_RDONLY, 0777); + if (filein == -1) + error(); + dup2(fd[1], STDOUT_FILENO); + dup2(filein, STDIN_FILENO); + close(fd[0]); + execute(argv[2], envp); +} + +/* Parent process that take the data from the pipe, change the output for the + fileout and also close with the exec function */ +void parent_process(char **argv, char **envp, int *fd) +{ + int fileout; + + fileout = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0777); + if (fileout == -1) + error(); + dup2(fd[0], STDIN_FILENO); + dup2(fileout, STDOUT_FILENO); + close(fd[1]); + execute(argv[3], envp); +} + +/* Main function that run the child and parent process or display an error + message if arguments are wrong */ +int main(int argc, char **argv, char **envp) +{ + int fd[2]; + pid_t pid1; + + if (argc == 5) + { + if (pipe(fd) == -1) + error(); + pid1 = fork(); + if (pid1 == -1) + error(); + if (pid1 == 0) + child_process(argv, envp, fd); + waitpid(pid1, NULL, 0); + parent_process(argv, envp, fd); + } + else + { + ft_putstr_fd("\033[31mError: Bad arguments\n\e[0m", 2); + ft_putstr_fd("Ex: ./pipex \n", 1); + } + return (0); +} diff --git a/srcs/pipex_bonus.c b/srcs/pipex_bonus.c new file mode 100644 index 0000000..f79cb11 --- /dev/null +++ b/srcs/pipex_bonus.c @@ -0,0 +1,108 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipex_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 00:47:16 by mabbas #+# #+# */ +/* Updated: 2022/12/23 02:57:18 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Child process that create a fork and a pipe, put the output inside a pipe + and then close with the exec function. The main process will change his stdin + for the pipe file descriptor. */ +void child_process(char *argv, char **envp) +{ + pid_t pid; + int fd[2]; + + if (pipe(fd) == -1) + error(); + pid = fork(); + if (pid == -1) + error(); + if (pid == 0) + { + close(fd[0]); + dup2(fd[1], STDOUT_FILENO); + execute(argv, envp); + } + else + { + close(fd[1]); + dup2(fd[0], STDIN_FILENO); + waitpid(pid, NULL, 0); + } +} + +static void inputs(int fd, char *line, char *limiter) +{ + if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) + exit(EXIT_SUCCESS); + write(fd, line, ft_strlen(line)); + free(line); +} + +/* Function who make a child process that will read from the stdin with + get_next_line until it find the limiter word and then put the output inside a + pipe. The main process will change his stdin for the pipe file descriptor. */ +void here_doc(char *limiter, int argc) +{ + pid_t reader; + int fd[2]; + char *line; + + if (argc < 6) + usage(); + if (pipe(fd) == -1) + error(); + reader = fork(); + if (reader == 0) + { + close(fd[0]); + while (get_next_line(&line)) + inputs(fd[1], line, limiter); + } + else + { + close(fd[1]); + dup2(fd[0], STDIN_FILENO); + wait(NULL); + } +} + +/* Main function that run the childs process with the right file descriptor + or display an error message if arguments are wrong. It will run here_doc + function if the "here_doc" string is find in argv[1] */ +int main(int argc, char **argv, char **envp) +{ + int i; + int filein; + int fileout; + + if (argc >= 5) + { + if (ft_strncmp(argv[1], "here_doc", 8) == 0) + { + i = 3; + fileout = open_file(argv[argc - 1], 0); + here_doc(argv[2], argc); + } + else + { + i = 2; + fileout = open_file(argv[argc - 1], 1); + filein = open_file(argv[1], 2); + dup2(filein, STDIN_FILENO); + } + while (i < argc - 2) + child_process(argv[i++], envp); + dup2(fileout, STDOUT_FILENO); + execute(argv[argc - 2], envp); + } + usage(); +} diff --git a/srcs/utils.c b/srcs/utils.c new file mode 100644 index 0000000..1818a6d --- /dev/null +++ b/srcs/utils.c @@ -0,0 +1,101 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 02:45:19 by mabbas #+# #+# */ +/* Updated: 2022/12/23 02:49:33 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Function that will look for the path line inside the environment, will + split and test each command path and then return the right one. */ +char *find_path(char *cmd, char **envp) +{ + char **paths; + char *path; + int i; + char *part_path; + + i = 0; + while (ft_strnstr(envp[i], "PATH", 4) == 0) + i++; + paths = ft_split(envp[i] + 5, ':'); + i = 0; + while (paths[i]) + { + part_path = ft_strjoin(paths[i], "/"); + path = ft_strjoin(part_path, cmd); + free(part_path); + if (access(path, F_OK) == 0) + return (path); + free(path); + i++; + } + i = -1; + while (paths[++i]) + free(paths[i]); + free(paths); + return (0); +} + +/* A simple error displaying function. */ +void error(void) +{ + perror("\033[31mError"); + exit(EXIT_FAILURE); +} + +/* Function that take the command and send it to find_path + before executing it. */ +void execute(char *argv, char **envp) +{ + char **cmd; + int i; + char *path; + + i = -1; + cmd = ft_split(argv, ' '); + path = find_path(cmd[0], envp); + if (!path) + { + while (cmd[++i]) + free(cmd[i]); + free(cmd); + error(); + } + if (execve(path, cmd, envp) == -1) + error(); +} + +// /* Function that will read input from the terminal and return line. */ +// int get_next_line(char **line) +// { +// char *buffer; +// int readed; +// int i; +// char c; + +// i = 0; +// readed = 0; +// buffer = (char *)malloc(10000); +// if (!buffer) +// return (-1); +// readed = read(0, &c, 1); +// while (readed && c != '\n' && c != '\0') +// { +// if (c != '\n' && c != '\0') +// buffer[i] = c; +// i++; +// readed = read(0, &c, 1); +// } +// buffer[i] = '\n'; +// buffer[++i] = '\0'; +// *line = buffer; +// free(buffer); +// return (readed); +// } diff --git a/srcs/utils_bonus.c b/srcs/utils_bonus.c new file mode 100644 index 0000000..e22a43e --- /dev/null +++ b/srcs/utils_bonus.c @@ -0,0 +1,67 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* utils_bonus.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: mabbas +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/23 01:03:50 by mabbas #+# #+# */ +/* Updated: 2022/12/23 02:39:09 by mabbas ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "../includes/pipex.h" + +/* Function to display error message when arguments are wrong */ +void usage(void) +{ + ft_putstr_fd("\033[31mError: Bad argument\n\e[0m", 2); + ft_putstr_fd("Ex: ./pipex <...> \n", 1); + ft_putstr_fd("./pipex \"here_doc\" <...> \n", 1); + exit(EXIT_SUCCESS); +} + +/* Function to open the files with the right flags */ +int open_file(char *argv, int i) +{ + int file; + + file = 0; + if (i == 0) + file = open(argv, O_WRONLY | O_CREAT | O_APPEND, 0777); + else if (i == 1) + file = open(argv, O_WRONLY | O_CREAT | O_TRUNC, 0777); + else if (i == 2) + file = open(argv, O_RDONLY, 0777); + if (file == -1) + error(); + return (file); +} + +/* Function that will read input from the terminal and return line. */ +int get_next_line(char **line) +{ + char *buffer; + int readed; + int i; + char c; + + i = 0; + readed = 0; + buffer = (char *)malloc(10000); + if (!buffer) + return (-1); + readed = read(0, &c, 1); + while (readed && c != '\n' && c != '\0') + { + if (c != '\n' && c != '\0') + buffer[i] = c; + i++; + readed = read(0, &c, 1); + } + buffer[i] = '\n'; + buffer[++i] = '\0'; + *line = ft_strdup(buffer); + free(buffer); + return (readed); +} From 26c92eaf23596587382c3c856a718dde218ddf34 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Fri, 23 Dec 2022 03:29:38 +0100 Subject: [PATCH 25/31] final commit --- Bug_report_Pipex.jpeg | Bin 455021 -> 0 bytes README.md | 47 -------- libs/gnl | 1 - libs/libft | 1 - pipex | Bin 53304 -> 0 bytes pipex.dSYM/Contents/Info.plist | 20 ---- pipex.dSYM/Contents/Resources/DWARF/pipex | Bin 11776 -> 0 bytes pipex_bonus.dSYM/Contents/Info.plist | 20 ---- .../Contents/Resources/DWARF/pipex_bonus | Bin 12576 -> 0 bytes src/pipex.c | 86 --------------- src/pipex.o | Bin 5068 -> 0 bytes src/pipex_bonus.c | 102 ------------------ src/pipex_utils.c | 81 -------------- src/pipex_utils.o | Bin 4008 -> 0 bytes src/pipex_utils_bonus.c | 48 --------- 15 files changed, 406 deletions(-) delete mode 100644 Bug_report_Pipex.jpeg delete mode 100644 README.md delete mode 160000 libs/gnl delete mode 160000 libs/libft delete mode 100755 pipex delete mode 100644 pipex.dSYM/Contents/Info.plist delete mode 100644 pipex.dSYM/Contents/Resources/DWARF/pipex delete mode 100644 pipex_bonus.dSYM/Contents/Info.plist delete mode 100644 pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus delete mode 100644 src/pipex.c delete mode 100644 src/pipex.o delete mode 100644 src/pipex_bonus.c delete mode 100644 src/pipex_utils.c delete mode 100644 src/pipex_utils.o delete mode 100644 src/pipex_utils_bonus.c diff --git a/Bug_report_Pipex.jpeg b/Bug_report_Pipex.jpeg deleted file mode 100644 index 736e336599732dd0b0382fc7047e3c574ea352da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455021 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%0AIa)ah|K%4E6b(o0?0*?pov6P*V;a{Z6{hHS)JI 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
O)$NAxU{FhF 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⋙JHLjnxj85PpL>dxUSZV)$8UwF!p0DaYg~s(e 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

7ienl%Y2q9yw5@6upS%OwY?}Ht_j*Jv zQUu-~I6GhseD7-6-X!XC){DU$bf~cJto(S@Hp5zwQbnS6uj~yD< znN_Gq-kK+#?zP|)`8{GkKDfIO)T;Va@6-g7c#_x<_{2bDQ?1>3maXNYhqLl}?VwU8 zHK7Pj(-%%UJEP2!=IfxISp1$~AWS8OfyK1JN40`klw|!b&f6qcj;#^b0qL9IG_1e{ z(JC3XQ=uJ0t8H&*nyJbA14T)x88srMPPL}9(Cj$EbG7I;j4sIs)(Nf+{1OsJr^fG; zEBgobOgJ*UTIdolnZmZta05jAV_qD-MBW~szq6-pk6&YrdPAU$GyswzP^c5dUK>{6Ykm3Px+3qFi`)L&{+qSd4vk>)uD&`?0qLX)H|ub$H0?JaQ)}fa z^UZ$gpS2@>qV_g#d6Eyoc;qNSDBt8@v)_w9KlOX1mLguq6Kt3&@+`X#3u_`5i-x4u zE?A=*(*u&fJe?ZhTxs%}t<>5Y6zMtheRp^w@E!)&W+76C@@!wsoP?oF9-OSLmR)ezV_IxYsC)>q-sN3bK;k5E*aB&qwU z!M2SL$y>V%=ySjp<&o@GsXFIr-{rLTU=EkcNZtYuf+wV+A zsq5qplDBoH;4Y$pDP=0N$uMM{~${cd-acq1HDZ+Yvq^}9+i6|-b$ zjTTu`N>*ZaJ%+fHWFmrxRHA8gf1tuN!QjWBoF-<`ZZzhJxN=&KbeT-q0HuqO z>^^i+qYkt-dK%0W#u54gQ*o#Ov$KPidJN3K2!KnGIK3+9)d%(_8I4mST${UAFw8?2 zn;D?@P_>@!(pO|j(W7)pjRhl<3{U_D#;-R`AFY}B`WbJv;>T7$xU6Dhuj)Ndf-GNy^!zc=aWeO4`yG&%?7JcZ%R6#|}-1P62E$jKIm z^2_a;Tb)v4M5FKB-{ey@?9@=y4|z!gd#(nF#t+|CB|Omp0#buFVMU(U1;IOzKAB5R zx!=58W1a}MYEXKUBMi;B@xzEWqTYDt^rIt*^;1ys%c67g(W7i(=oZ#@rxtdt7p8C& z_i?>P=~Axt@TG}s)gtHbFtFIuaJ7#dT!?7Gg|7}h^J=87{DH%M)Tq<+fulfHCP_41 zen{WWxAzgY6;+4V{3H+DviViq_A>j8j9i%g6_qk@J=QJihv8hOj9{KnASlAN2pOq9aS+JMpFu*JUIPEbFZirkM$n(6xChzr1X+J#_GsxgS$! zyFsUQKviN7n$Wjw3tinZFo}mPXLML+53qQkzIyo>*U0M<{VyGDYR3B>KdD*P`1*1X zWhJmH5a5+jgNv^=(}{>_FIvtbWo-0!TTc-dzMZhP`&pJsX(z?TD}6nVQyki*f0Rj7 z{F+Sa5-1Y8!0KC^)la?B1eL93tK$@_s7$F?|E0bpr~NhM9?jb`!l@MBsd}Wj*%zmm z4Rt%DjOGv;oD>q0%*v5Tbh;xcc|8L9B$iXcP|O=quBbwvu!pWxB;!~l?v~JPPP(U6 z1z`^d+kMBp892^XSws{De$BbWxxJ@e7$W(2fxTbAuFJZgHL4goF@7C6kI@=&%630g zb#)oE$P@c6@T1E`rE9|j`!G>hTwkWB6`PTpDb>7Wn(3-ssahghfg6&16cjCxow9Ta zmn&kZ({_N3+rClnDvk6OLA5Wxtxi3s^qnk-s7Hu@sk-eJpU!+UZZ1;tHUz2(-2kM1 zWTt(yrqV5drAM&2=W3>HR>J+zDLVmXYk=oNS=3#A%)bB$i^TXT8+>50-( z^Mpz-w$3WqD<4p!;4`aM%R@9k5^}Y^nr6BN>*}68G?lW(!YWMwexjC8Jzc_Y-eOY2 zsvII6y0J+HLA890F}K!A4v%)~unSp#iIeTJtBLwGDLd$qJj~-rSR3TU5q|Ssx5eI} zmJIi&Yc@`?Q!^q4%yH2v-;z~t7q5GN?X?lcPP*hFiS7O3q+%_5w&W^yO!WysHnu~Q zh#>IU%{5M@fT1pczImsvto&Dih9nb)l=9$VoQT5bfEwi#o(wjBcZd2Jrd7hkDI6ZRQ{HwvU5LTE^o`9Da%o$J+TibgiBu zCcd-;YgP?WkT^xdB&r*-DNg-@EtBhl!r*eQ{pR&z8N_A>x>Ve0ZHq_NW(>!7ybG@8 z4*%X20A0}_LH}7U{$SXv83^q+EnMP2{Bakt(Pd#lXqSbC(J7%g07@=#kxH%Tw0vDN z(JO_KM6~MsEf`3?D7F?{*X7MlHhO`u9sPzTGDl4sV?%;BkQ>Hb$DbS#AHhGF+H5_* zn+1XP_Tya5`ATD-lV*({=g`{JfeSI0gOtT*bOqQ<7_6oDw9U^VPw5APq5i!qV2a^& z#ms2Kwj}Ne371$()Rl0=oUi$UUCt-;KQ0auXwflm42!PdNkoXRrv`Jqk<*M; zia28TdPKP-S76hVSt8Le{k{?X4xUH)MzisI)`qZ^-pkoy6d(mRP|9QJz1u9;ygGf0 zy{Cg-lguDx+>&fPYJLQ5W)3kXLn(k4*|fwgD2xJC5>+)4!8AieJi>{{W4@WbQVh~s zX9ipkiq;))IPV9N3lB_c_KiV59bVm{AgDvFco*hPfjM)2_zDN*e5CvmRj9CK2A zmQlu(h-c||{z$5UVGQi?#5f}@5JvMth~LL}l3vmaSZ#PH7K6)_0i1l?CEmS^DEl{N8c{Ep@wnYdZN)yWxzZ=K1#5RpEnYU?U7dAigW+WE zahY=2+=VfFPJ8Q8Z>ExMg7hhNQ9;c&={VUmhjx$_JFbnyKAU%6C|f<&a9f@4!Sgym zIp^YXK(S%@g1DH(i6wV!=Hu7sPV}91ZlZ=AjBsKwi@qM_OBVm3VY7}6W;ov@V0wc%kbfzpRpxWS$m z34OVQg^DDM)Nv=-(BiIqbjAE&&53%iE7fZJ!Mn}R$$P@8Cd>>Ykn|mJSlJzY$B-{L zDMLJNH)hkfW&!iiNj25P0hS-eXS7wvergs;0%HQDfDz|ZSo(z;eCdGsH1U0#-sJV1 zI$d8}j@@lOlz?9WtJ`A}SHt_Mh4h-Re8Dt#O8fBskOU1Dk#zlnOio_Dd4!27qd_7_ z#p(RCInh3e#FVliG7yQ52e9SQ>~)IY3f!Pw(L!A|YUxb(Gi~Nd&3MCcZ}#3;s&V%1 ztn(SDhWu=ez~vANp_eCY`pXz@{v2>X4hNBr9Elx39U!5pu_guk_0eYw{OtnE6>-S4 zlUB6fC8HDB?59neRk|-Y%dG|%4^dQlM4nor&>}rZMT+jkXO%{Fl((h+J;fqrhJZ$7 z_bMD+??_z}S1{s`c&#~s1)`sn%yEj$Do_yCrMqO;?%Xr7Q*e8eqz~l)FMQ|BV6&?w zJ+UcVY%Jw7X+8f406#KSD*F+9{=l)(N)d4LB2BzXS075oGY_}mX+97o+K0;^C-}4@ z!^eJ%2%F;?cJYb0%pE-(ns^X(d-c9GPItwGJHz&3+4SI8bL=I5qPQW92<&qJ2*@|L zJIt>&KfjFPaSh{jlu^|hzYuFyAn z*~F0|8)~-OV}2~@1fbcNQkJ2hw8Dm!i9MlFkr(yl)QMKpX>Zx{f06fAQE_zPns5V+ zCb$H5Z6ru=Yg~du;~E@-I|O$KE&+l&G#(s62yVeOxJ%>i-}HCRnKc(P|K0i5Tufb6 z*IK)(`qf=~zwh&SoRMxC%xG59+w^z_Bp6xCgO{u+XW6hvT@vY`I6*_?-DtDX1xs z{!WC~hGwk=gvS~)nfJGNHGf-l`?eyzeb!J{_a>I1JKEh!SAm8)M@4TkD;z87)qTb5 zWLo6$5@C?sZ}6A%hP0?KZ1wNZWexF19f#Ibfh(tCoO}gsFN8Ss6h{1-PUwk6NDBw) zTSEpG&)xBBOclBL#OfCG8`%p^%#V4YCb?wMqotqClYaBnrlv8|n-gjvx?R@^j!uip zAl{_*IBzIi%asctV3VJO%#ZJ*Z$dra`M9`#l_{y_KzC4lFID2}sGc`Q(ey9%up*Fs zj6d{yucr5vO}~SV>u(iLa@IiB@Tt@x4Q+)Sdis-29d@@CaZ}j@hjg#1><>V~&zGL+ zy)sE^g%CWUH|;{8!hBT4=!{ZjRjE{uLvIeM2zJkcDzT*!16{r*3rp$}v&Q5$^vq-> zd{I7>pQ912){!#t_)&Dgx=)*5xylGM9mA>wS4*|zk>)eGt^Er@nw>P~eCFR)jS0u= z?_Y**%-vuFM*UA*NTki!RTi zuQ*$5yxFqDSOQf%bb44;vs2bxFDF`Bgc(;k?$e#D*E!qqB;=S08wUf~{4JoKQMQsM z=DNnp^&I6Wz{8QxUV?1BKDY-5|a}8;=#v6d#K~k5dz$XG<-==+v z92fRT?CoshHQJ4qAMO4NTCi>}8bv+9S$Yx%X*6m(g+mi@Pu9Pxn9g#9x4$B``E^6I z&hS^;oV;BBel^(lVBtxmZ`PS=$7UI2oEo0 zpG$L~(#=&qszyLwKt@|U#ib1~!%9;783y!NaLMI0i#az2b@CI{wM%B5_6qVKh8?Bu zVk`oq_RRh5XF9aE)(E${hA;Lxzk-cAJ0Ng+J9TE#5D$#0C_~Vt-xO>b zvu;?m`bGThGx~vD_osuO<<#AV zW2VT|f-DeBJ-3aGJIJ1~qrC&sAeCzk)@1tZCnH+AEzLRsl4MlvnJh`d474A3H}2B2 zZF^T6&i7Ha1U_Z=)OG6b9#bAIl{|`$zNZ7JT?Vm-(J;S(vkz{XRMq86`>tQagV(4c zu%=6$zrJ}+aary>DWkAZG!p&5P+iZq(n;LPWU~-sNly{ua&eBG&A5t8p4nNbff!u4 zC~ov#y}Q=I`&}cOrT1UOW3FS72%O^NWtDOUc^6TlWOtFKY3V%ojWN5?hTM7Ymr4{bb9+8FWbNS!JRN_Z}9n{bQ2=8 z?8VJ%GdJptrhPfw!kr(y(lS)ZuWrJ5z{*a@IR_1&`D6~G3nKNxJwd`71nXK)%|$-y zm+_o@kTg)78zTrlxxhCt9%gsEhqeT8o*?tV0?~}g;c;tKBK9AE9E-e<6(U4X0ZxrM zo;6RkNY+%}OuIJj>zYAFg%pyrb9Xbsc&_)LZgj6+ftGl53YGGL#@Owtb zXAq8jaw>Gbrk($Lm=>*OY+B-|p+J}0n-oo1~X^(Qvy+q$>sI*!%FCr zQyNlGmA8%S6O$R*$@YH zEZl6(>k8utWaJ_KYP|JJl=LUSNg(r9>2sC_UUR1Renh0*=nkQl69TEJvPF#SNmNGS z-&natkEgVVluTf1IivZg9w}8|{KYN>YODX8`&4fNP^5?IZ5|QjKLAhj{@?3KxKurK zY%#+Ct`7{ySh2{yXkrGShMD z^$#HRu2KBhZU33s&9U`a^i> z#FfNCp~2TwCO?ku{X4O$be(tEYiSfiqN5YVy;4<;jX-lWEx`8zbn}wmjb#{2ao!FT zY0{~B6DBbWda-WRrjCAXFuD!Op2A3N{{Z{)VoO3llr+hbTZZuvC8!(4){b6Tm#rzk z0Yr@Uq2OcbB^Qrfq1`*fMqZ>iO0IiTNj_0Ai&XWD>?Tl)d_KU|xU#b8AQ+{3@}2_S z#U40JT8t}n{7He!NCry1!#X3-`c!hd>1c+083eBXp=V{C`5V{}1?Av8Daq-S6;!bN z`@@5=h?~~>bSeLEJ-ar8X}JD39IRot&D z#L5=R`t-WI!kI>op@L#^YN^{@3VlYr8?RUW#KT|i{9MtmV@rxcVZncMs@cOIC&!zI zNUG#)a8u1~KTJvx7}KvVdv;P3$zdi#iahs)gH5#ekiCZN`28O>nC(AXI@^9PyYw|i)P^XkeV+{Spe~W%VU!HH6Ge6)>gSh1kM=53 zS`phk`S#|mn?P)~L;CoO0`#VOYOnq|O_7>_MCXit4_T~yk6JF?FyyVmw8jG(qx8e8 z=w|UJLqY2>vrWFS4_E90L5pskPKImcETfIKv~SONetSZfPUd-fl+VxJaL(|>4szb5 zS?HbNtdXw!9lj;6ln>tnPXN&7gbu6uzdU7faA~AwDz&9pUO=ODYKjgn7oY@bdc+qg z!b9^F3r52N(Vs(cK$5Ek`UF+!GCYl}nyD{-*-WALcKyT-Fk<;nM}Gz=T|VmS8)@2d zQ)`=9&~n9|B3a zJxJoYn-vD9Y8QA~F0TD{n~VFerWAk}7u%rcJ~w_9#TaBIXscu4j%rvEgkBLH=I0+~ zrkhf{W|sb*+x>L58+36qJUJ*)D<;`)Xdl7J<{f!H+pZFnR zR1Fo~j~%0nnVaF;UH0(U|8_FT_vM>couv3B1+VY&av{ThuAB(U=@Or7v|+PWg@Al4 zqehh^vmvW7{^ob&cb}b$^*gm7nN5-sqWIsGy+ViF%Ij+0Y#L&0&p3Z3n(nzSCAv~B zM)WPAwyn)^Cmy9;=Aw8lOFp<{jBV1i(jV&+W|;?$6}fQfSe!?dN3X~!@T&KHF5*%v z_9H!+fdDbeGlYb#l{+VDxKo4NsVVqpPj(qQx~Tdcy}d}A2S4X{8#fewqnS?6X*NX7 zWDiCX03h3^^YNHayzVk3IW~Xa>1EbE^mE^SdRrv)?A_nXz`)$LD#n9C=@)DlbD9e2 zE@rJnRyPj@Rs^Hz&bkR0{#6=?%+uhVQAp@17;t%$t-W^(#H;zMu4SmeUn3*p{Db&I9>-E;{LELG zdh%GSjW(@IT!I_ER^ITEJtp57w2${CBUG)rI9g$7r_lgB0!F2)zeR0bo$U?Ev9;xm z8I!}LuIL$v{#^&+gm%N`r78pZAfASs@8sNDdmv8~g=6VH*FEM^4?Tr}s(Fcmv81n3 zZ*=4l!?{uniR5LtM*FI&>iziZj%9lWuCO6J>z3bRosX6jlY_{x2(cjyc+|Fxm z>zhyqUH{?cp`bKCqFWNT0#JHF>V79yY>OYk9lgQ8EkL)vz#?9fvU}W|THm-XE6T27 zgvBFPtfl9MC-d4%&{=q0^2gdfR;Ndboh^Ob1b`7=^zFnZi3}%tGwr zF3;R?D-`g20iF=U&aOl$vUrC@H7P5jnWj0j| zs;1&IR-T!eBb2#jtxCEYx9lBcNwFv0V4lhqu?D+}tE%U-_CcjE$E~r5?l&{Fgngzd zJ5??#fMI2I(f-@6MBOj%wb+Xx-NGEkxqZxkB zI1{nv(kHrJ;>Zri%QT;-&%B8*&NXJr)~-~)98e!%NMaNi^3n&n?kQb{RW6lmqSLyA zC6G<zp z*Iy4;-<)#FJHD|(AJYhpWZqhY4WlA+!i;=ecXy{9S2SW{6wZFIa=KW^nyOU5D9v-s z#a{l5IyPUmbqt3BafF;&n&nrns$WI|=$DFE9MT8hA)CMx-#5N~5;PD$!jQ4g42y9QN1bR^UeJm6V`R4T>N?v(@yTM( z_f%%js!)wEly%VGiaD5w#m|@~N^A-)`xE>rrBxZ6ciwa2JM{?8QRfvOuo}t?m^qxf zzF!OHc^N@}IY`tc;p2z~$?b{Qdw$XBl-&6u*CK!RUQTxLsI>;F7g4+wLzvdfV7!pO zT$macew~bSy4pkfX~N3+R^lq-PF22GAIBwD#5G&$6aQdC?-YE;HiNCYr>;CI5eTs2 zU6308Kqx2g0*=O^GqU56niPE;M*zPRYL3}g+|3%TC-h#G)|7c|pFhJs%-%7y`jV4+ zRLXjcHi0gImw$V78YoIZ3`xG42)Agr$+o~7E*IMi`QVArdCHZdjc)h0@5*Dg4>ToU3v|KQfDzA(b$nK#V zZ}HS_o@W;uecQb3#F>t000zsy!2of!(amv@A{-w%ux0gDr@*U;Z6g~9cxdNWKBSc~ zUHp!ULU^UyD>f6Lv_EMKlEC_m~t_SY3_x5vt9d(3f%g5KMZ|xhGM$jv`KIf$5r3x8I ztEoRos*kn=$X90BVK8bPMn@rjiV8xvHw!VnxBm^ZC!h}N2E-A08FtUfX#(sE7(s0B z!|(kNTD(m&%=vU`Dn2UjFvv6%28Y9*JQb+Nxf3MQ^To9D zRSW6xG9b&zx&?x~q1%UWYBo#&LiRPw4#Ns5hh+;2K?!jT_UIn7Mk_P1&p_iQ8_J&+ zGHcAH&m7VPbr>4%H1uQg^b~^A%b~6M-CO9rb>w`*-{<{OoByJ@G^D(}{QB-COs0~a)^W+I!jPLru0{EDrgpu&J zyjMdJI6d*oRgKm1%k`q0P<=!?X8R)Dq*mrwq1&)~97?9oRn$zdHtM6I-tvcU7vGUt zK6i;*Evai5xwmDSG^Um#TSn90lNN8p!MiXqBX6(pRckT@SMW0ltOg~Gt0RD^pzWC}Nzss`Rfdd?R(#LF^Jv06~ zO=h|sZ4)GB19 zzGQC3NZd#lnnpj;u<6*EeK7x}0CB*tLa$6lOD-0zK2l zOwLW-Y)v$tvIm=e8B)T9v7l5gJSK>zWgSXI`i#D^|Z2i4tHvBTBNA}BS{)xhMy82PH}4l z80_kD5s5fGCnDeu?9>^~q z*cf$NEqdETu+!1f(l-2j72{y!7HuOL9FQ6OQCBz>_Sx@4vQ>Yqh34m}N*3x6+tN%$ z(tiLufp2T}Ht)`x*JOs&JkoH}G|T@S!GQE9PxZT1UO(2}_#Q3~dI$77ts;|6mnO=L z%wpHH%F~DUOe^j^FNlgF+2xE0DmqRT(ZOW^DbIL5@M5G9XeEM8YM;*KJGAc8l^BvmOK%BxPCU6q&#hUio(odF6hGyryA_; zMg%Y-*%OZA|Atu2L3NFZmn>iJ1so6<1k2cvqqqvVt(qc#IHEXP`9(OV3930QC7Ag;YBUKt<)sH{EHMA*FJZ@!9ujvQ z{z#vktf4rhl7pM_Cw9m^DtaFzSQ5t7tMfD9uJh!nM+p)}_UstFcaq{bm2wDfNVCsuO6SYTR1 z1XIAH=DQt(W}!glpbsf7aCo5k1p3JsjEd&O2lgK1FUcS@62x{;iQMSN{CtKTXD%_4 z?u)9}ezx#Gy;eA{rfI;023o8ll>lilVbx$OQpkN7Yqms4;o~9dTr0*$3j}Jkp+c|a z58jYp_Dz4C(oyF-`s01KEmL)4hbQ#*N|;Ki%Cjt`Lyk1`W`>c2qEn0I30$41^U+JD zg9vekntxYuJ~MCL+tbdiE4+UM1Cm3mJLsg~z|Z{D=820NE20tSt0mRxz#cZ;Pn(Wa zz>u;mbwPb~l7OM$?}k%#lV780vTNU;f5BQuVS_Rm?Ls0%dsl0@sZ%>+1n;AbWR!3!+Ml|0Z!!J27p^s~KEht2 zXU<_wzPR<$i_5gf+5#Fdw;BMECr@`G&FlvtqZA7a?8iaCK|-ZPTIuIRBhRNBN?eU6 zPhI^g)Q=X%LO-lVXA~^54g03J&0W4~ECOL$5g_WtE$PIkX3o>MIL4nGzhR|h>|)`Y zzVMCTDcG!%I#fj^Yku>Y z%c5n7=Of5m&%Djv__j6;D@cYrHJR{dD(JgzrU4U|8)(Ly}!f zw7^glAZ4KS{2r46>FmkZ2$dhZB7^$hRHqcqmtTLe7ybiie?tskhxF}#+X)B5o0Jpp zDI3rIg>-6~C9Q%5}X8x*v zxGMTWa{o&3|If%f+Z@pVl)S=}&6bw{1DSsS?nGR0g0bt<+}E$qfgS(8(T5j;Jj`FP z%fIiR^6L{GtOi&Qn&~{Yvov{Lq)b)~Y7KWe3Ig z4*vj5(x(Dfk-r9xhzgheDiWva$(&i(2*e18QH@x?d2o35GO0WGTr|_}2ZwlhW`QdP z_5AK7mtDOcg%?mCQ32?v)k>{ER<%c$R-ttP|V4M7y^nMP=DmBBW zgZ26nBD5im%?ZVby=al(@lx2WT_D{>b_GC;^Qlz+0R;K4hr;ICk}c$C{O#J3JvCGt zAs%WHe`^?lIpMteE&t)8%Ag|~C3Ime)+f28OTxajLJ2HsFnEVw1RZk-jl5{F9~bb* zh=3)PD~Ki8?`22X`UVh!5;?!)k>mRXv^RT+&c?>q8d5~&7ENaY+U^Fp0vHhPJ$KN6 z2xk-I1R>y?lUa(;7H;OWeEMd!r2NCulu_fK?pfUAmX^yUu|b}S9sq|%+ldv?><4)B zHkvC%WUDjMa!bGf^X(lP_Al+BBhjr|kOGsM2)*s;ha)Vo;Hg+}_oe9l^GjpWtY5!& z2(^jv+OL#Zv2`dU3eTNPmEHQh5)b83GZ(DoL8^pIg;#w)}V z%0Zn^(`7PM77CI^%H5uzGEr4kdkLO3mYX?5?c-IG3@cNgg6q>WhB{|@Bdv%ulrJ%Bcft1-24g#GiD%Vxc2sou1G^2d! zcoz?+gG<~$!PJmeI$ZeHl^LmiR;Gp)v<0;nQsCd%y!Ky;kI_j}-0jdkTv3eC!4WbkCt9 zxhbH20=56AH$b&^#D4XOw^jZt@Cv%}yBIgPrvydr&tXjRtHIw01quyDRsRnH?y?Q4 zzyP4sK_uhZAVp~FGg4O#y1IfIDl?~&4Yp!29PoHqYd_v+M_@-Tk#fcN>F3{OiAfSs zmJAQd$NY?v{iN++97_KlbsSFY-e3fT{S9$Uz?hj(Zm8yIaeUDlYZO5VjyNL923WZp zA?U40ln21WnO5yl)TqNhD?ClCiG@Qb_>G#pIv%3Jq(@X-8_B|_G{^3dE7c0t*_t`} zax2)26UD%OiQ5sscqM;;=<_9Ip@`c=K|uYEzu@fBDrlsHo?5j^_Pgx9q>%SzG)mv! zMIL^lyNsBgD9x`cR%355@pz}Px_G+&T|w1Tjc7uzpo+<-sph` zQm2B=xO3iTdr|YVeQjCd%iaUWla^&B8h3(bH+cqEC0i~bCHpEJF|b^`KfEgPA3&>6 zvP9G#y^rmEOp1_rwAf>rdVpBY&&O(=e}7#-c2ILsbHzyU04e!oDd5JORP2S`p_$wO z@i3scSa}+9v;+nv>0||6#=~>P#PWUQ-3O4OH5Vd(3S=y|XdN<%BONDEIrASInIWF| zigtCf8wr*yl^P);zDN0lIDlkN#I!yojn{IpFxuV8B0!1m)>)m>UjTthSzlfu90yyf z;C{~ZT5MajkdaEI5DhKJH?apr2?!R~pw%SLjsiq0nNos#|G+EnirlzA$(e&Nq* zOni%vI;dEVMhxhu1p91AO?u-ZZ1|(XReNvuKw%fIKt4FJ3z`1UgjOa72eps#@1{Gy z2P7;aozGz;^Ha;k>2Uid_yfTHf>f$tDsN(`)pM4}W9Da6>BNc=H`$A79;~8u2~N~n zr*84Ke~ko`neqqhlPKnnfN)CjvKkb~UjtP-$QWZ9g8+B2fYJcW$D}*5)=0CvJ1k*a zI-i+pZ8`Nb!qI!L6R2>X0!c8PGjD>2c2?&B{mFdllvo`|CEroDcLG+c2oc1ty}&-T zOBPD-u9Szn1GI9EhpBcvs{-hVc2yaURR1ueRSAy-kkHAe%AgQar$&iNxVK!O1^8>! zP{;iyG*Q+I{iF@C`m=7-!CcgMQSXyV);U4Q5wrk)ha&Y1 zhtA6~HLtVBT%X5QO4Pg{KmsD1TdG}kVSBn7LjeyhL8w4U(~J3%3g;Rg{UL7jZdBrF zuG1C&F%76h3kEBR2IVty-ffg%tK(h+u)PxyD&@%%MUIZpg3y8+9kjvl{t_o4x!IXS9lClUZ2$ihf$hI>;6J3DBeQ{; zxFHQjU7=Oq0HbapEhiXz=#h=**#7I(wQ6X9NLoYywFovMB6(1x;|4V~wb=PtrIqRh zw)ej`V43*!Ym4g7pinK#?m`*@uzNN>Yc7ED=PQ8jp~+4=ZCnOf_S_m~*N!c9%G-yf z>CC{1tp@lO{~Q#ogh=iil-iGjbMiaL9~DB61Pt<}swFMaN!-qJc6$&FB!Z%rsFfoD zVOmH8YY_;?NQ-{w)QCv8Xv9Sm-BR0?iC|y|!eSCU*kQWPfjS^SaKTU%;EUXSAht4S zWmx3(EJqMKp;ay+5COKl(DG}u5}7_bKg1W)?x+SjPCce1@wZ%_Z0^6TV!AkP7Nx#| zY=-kl^m;!bVGH;9cV#kuThxLPOD0ps!_FQnMDhC``+!LNfI2* z^`Y`=@I_MmJA|HIv5`XAAd@L?^{Vvy-0XBU2=H4R$n-KWx!9 zyr-@@oF}jp1dtQ;XPzDH*_F!w|J_2?lkXKg} zyB(fr13XluV9!!dStr{xytAY*x3lou)u&wdsLBP zU0J0TH>9?wT+KINiAh{;X_W^4%B$0RyL>!)M7cEWtSZXLRYki*l^$D@Oc_qf9^;y% z{U88kZvK8=AjK!jpYVCfCiL4%1t)+>nMtjB!pLL6$k(lsunM~&pO5UN7iL1bJ8Qi9 z;tjYtr6mtS9ZWo>qVg)O?{&z0$)J;{d%VxH)LW;b@VrUbgzSjb-`yfmnf%U|l6zJ1 zk+fdr(Fw1L1`Ha`{#Vk!gMWZXiw-~A=J;bj%z*{va)H8b6LZt#-}52?aJJ^sa*fF# zHH6*#d;6P{N^27tzlm=PzwBz&;CB3Ud-sBa%fE$~AuZaCG*Mb<;K0Q$YsQiYj4v{3 zx-9j$)={2VXtAq3zrMFCD8{9!rt`)@{iWhQ-W79~*HbYePSr>A(5qd+R;Cda^*Rv^ z+lP$T5B&qk5eK9^}ivKP5HxL6M2n<9`q!hr}k@_X#g|*rZl=@W` zsBB2~IT{lYkQof{d-i{Hf^aZ95}t{N>u6JMIEE!~ij$W4ehC~G57*3Vxxk8fOOIGg zkJKD$5~m}yWeR(-Eu*=4rFr>dvf6~d8g;3<4H@r>d_Ho!y~6<$(pa`}ZlXR3=+gD>EHVk6fp!+e)y5!0|G1C-|i~ zzv4g{Ay>eGXp>}9Fg=dY-hW+xV?)-oS$7ZHysQjoJ4V0MngjdH&;?Ef7Gke!aWE58 zhlp3JJ|NBHZXZx|36zAat<&40SLSjf;q88utiYSE{4w4Ia7h& zcj!T2)JbVnZA*(WzPC>KGZXq=WrNS#_Yk4jZfu(FN9;1uAipngcXo=0Ce>y{l zMW8nVoFoSx8{j9DelD;H2Yo3z$*=^|f2|g-H4|gn?3Z6r0qc?7;DFzAOJuZu^%U|r z{>4Wgx5_#~k5pF`@W_lU@%UN`)f$>r^`wT0RZ%4*j6*pBF@B9#UY$MOUsD+az2V`F zKpG$%1xP3@M`APsz^VWqclUE8_9~lFV|g_mU>w{H;RHD0XeYpxZm=6^)pJEuPyjn{*6S@I%tI&?-ArNK=N^ua@i|PFgPcjO`zPT(-v#O95V7gP( z{US9t)BTJJJ$U)qWb={Htj^pUNmbOQq#B0+!`fD7zKd*58Z0W8@YpRb5EMXRn4VbM zF!n$n!0Ys%My>W1kvx(Xo_=ti|5n%ne%qm~z~$Rxx6zaX7T?!lSAdk3SD^nn6~_n< zw0RPfY%qF*v8PluZY)K-^(8KGQ74%v^R6+=A!2NvunhwPeb-QWuw7DQBauS0^g;^| zol>R3aD-=C`G5%p4M$Tu;O~|eWn4kCR!x@v0d!_H9czu|NHiLBIEc;Z*ozEX-`w$m zo;&gI{}^P4>5U0ZSCgbG7fKe&LV9tX(Fr~Ggv|EeeNA6)@zNusG>zIVAb<7MQuW{7 zv3o8$S$578!tDP}W;#|IQ2hZ^>StCq$v)4_w-Fr{OME%y9G~H1^8(QA*(gj3RuhyO zMbMb??RA}vGsU0S993`h*2Vwr14PCaiK-D zXY%Oe^sb8VTSeo7H4B*m+x^xylA$w`5{!{q`J?2IctK>~tnNtWZ(NXV_Lp941!XcF z<<3oblM_k1jdvuiBz^=bq5zRZMc|aaK@mIG(|Mc>Qv&MO5`1O9*=!;#bMk))6=d`0h5F zEC{z^v?J13CJWPQv|esb7`Z0}7dVem@nz$>58<88>0{cy(Tx3XI0>bfDzD zy0`kQCwk=MMC<@%3cn3j{Q+J-(H^#0oD6RqkkC4~jkYPPFJGiv_-s*JjR~8I&C!My zS{St=W~hwGH!IH_*rJmZsiAU;7OigY@isTjfBf7gd6;LWA$LAMf?(x8_+ z2T668?G9m+&zka-YL*|NW~DDgEFj#}WK=frdPj$IZJDy_Wv``@ocE(NrR#CletG%k z+K#5V!){qwoQcT9V=?_Olk3}`2knZv@^>X%EBAU7%ppnKp(4_T(U}b_M)W^8LKs^b zab>gs(rEtG`&Z)P*GHZYPhyYjXT;T|4l{NS?> zH)%e!k$&yVU@V9Uv(<0biYm@RQLl%9(9nN#o0}~d9bw3}%W*_bn4iKC*d>R=H?Km~ z?gpuDqF(*2i=_{r22)l3&Xv$GqUKKBH1T?9WKn!|8cAc)g%_uLubpkGe)n2iTXuSa zZT=bP`4pKNCMK($`vLk!$&>9EYX)s+4=2EfHM{WBc|tgHaDqZICr%$@8?65>Uq}Iu z8lMYQCI89y9`Z88)%-$t_Ar;UIn&VB68uw%wYe(&;~YjsQqLS6FLw|11(B5+WW*@9 zFFTc4m0P_qck+^^$ejEnJD-K44(%opaJRBXO+)ij)~GSWBPTfCfQop{Xy{Q@k1jXm z^0MlkcQ^i(aLib1ibLAx*ev_TuVqQBALd|$nZj`q+TRe|^CGIohl{ime3OXM!Ym0+ ztkDZ&bx=8T2vz9uD7D{9>N3d9CB985KrPLkpcyYWK*yhP5HYVEsFxn#8iv4t$i7Cv&Dg+9Vb&@ z*b1tW_%LRjujT4DFLV_*{=&a|N;wkMh)&;^qgu(zsKd9N&GyZ0(qMC?#{LcRMzlqk zZ9+Acwf#ji;iN=%YNz-xll$+K=21a?-kDi-oBJI*XQ82(ekszuiwGPY_(la&fe=1@ z-1Yj9R=F*w=XzPtMfKPP>G{mCFvSYR8PS|Mcdp4mqY%6jY~18&acofHjjhmMx0y)q zTXsSHZP{}xq3T?YuZ5P5RvXrg3cO=lMNM6wcC04jO+3~VE9q~_(43MvAh=G;GJPz@Q%pIk=qYYpYl6X==I zT8*8tckYn;3~?Kl!WEdM-?ul|{CP zBcPy)`n)pMxeOIr3lcENC%&K{P%23Qh<%j+$GJJfSZL_ODCAN7Bi1H@pdpB18HbH8PWmrd=PPS$BM&v9 z@35`XLi+TC;KfQRt>K_Kmm08ex>UyPGNp-htmA z<`Y*vpK@KQed1c^%nWO#D~Hplzy2`fx~XYGrmo!jl>gmUp*-UjMK}dP;+MwoLuWRI zMzo^lp0DzcST%{8o$(@9k3%uxq~;Wz_s7B0sI9o#3;}tL&B>OEB^skvDjmed$B&7e z8X6V9yYnrE_UtT{=~3UOAN#sD#=pvDR>@al_dJQnSJh1s_VHjE5S%souPMs; zYQ2@(K)SoFAQ`!_jTgg6R0*U7!UUT+%9+kjku1P}Pd@yVV9Ob-0b(DktR$|Wju{m6 zDQ~w0NxCCz#3_6=0%WB7#+Up*%7_L?B(u$3{Sy8JIq}p-SwR7XO}67MhK+6gnCGmKWb- zp<~+&^RbL5)2?3{_=R`WFGhG^%knG9eoQ4x)!Jf!tE0e@U|0t;=H#kQqEN=5cAS$y z=%{S5S(RNbh(2@(t8CB-Bc)9>Qu&v7{Egp|=Rbfvmf6MUSjQeceJD8nRyBpASqQlq ztLE7_2+7%rp9U+;CH(hSu>EMzZAfL(=rl$mCUyz;;XE%To+x~9#COd$`NI?ZE8b}M zx(NIu5C;L_Yz1}F?_9KZi~QLmIb(#*X1bado#MkC#6w?GQOCukM)zdqEo@EzJyzs7 zx}W(#0Bxb+@@#=>ws>4fwBwtj@*tz;u!4jFCwJNVbWLJvpVI?a**5-6AT|c%BB?IG zuD5{rb4%2v3Kx2AUUI~fLc<(7-E2%ekc5SwXqcZ7n8NjlC-@Z^lxxb!5-rPk+A$5x zJTN_+&|P-fA4!Y7$y7YEyD^YC^2pKtrdPkh<_c*0t8& zl%fD#LW;5bXB?HoVKppgWi*LKC{2%`&`6`>LPp zIPCz04wIm1!6xvHAsx*loisQI-jVgy*{`&J>cHxF`Hb!h3RhP`abvTV`3g*#Ilsg) zW>9qgOr0KJ*_W=8y*go@ne#4&@ zEFwWSp`@`pwC2-v`&P;g_BoetItWQx6nJna^W9oOlI^X{Ug9kt^>xNZf`ghTyQOR9 z4D5)hIlO?AyP@*W#oMq`r7Xp!xI=B|OWJQGch=cO5_`7k;o$Bd_ad6VqF?e|83;v6 zM+mtSm^ht{tG;DReMHc=npH``rv|V4Z!iDUZ%!#)dBDav?v zffM8-S0C%Ojl^k7@o@f-{i!qc!a(nqHeedrO7w_EO5`Y2o*|K+rp5Y2@yUG9HiJtW zB`mIms$+X!gGS=KVs!pz#J?*4g84 zDv=>7I#nTTTjdQYw&a>wGFqn#{iy6q zXXnP9!kRsL(}i)+r4S^RG{QetEzwXwpToP5{`#614(hMatX?=AXo}%A?saYG+F!K4 z@wR0Jj@Gk)2Z6L(WTJ^$_&XRCGoRg~3SuP0o%tFxT}Lr1Ka8WTdEtoWa#6a-=Lj91 zLA$0xc`PXx@TJ=}p9?fQRGFpokN7|og|x#0g`;U5?gcbdGDR$)%8~2}g0ESu(=99+ zU;)8;fA*SRxH?|wkEj<_{yf<1Mrp~Rxv@#%nNhxbVk)$HDN%>=ch!X4tc_oO|Fspg zIiyQegnFcaqO*a8NP~2OCgnuD7G?ttu;zEF=wMxWA#X0(~l8cf3+HtMS__iKag zB)VvO*R_;n#CwffH{Yg>wI5?f_iG{&#wRsP8ZMmShJ7J>TK50v`tdO*7 zxr4@2W5vVh?K7z@Esy& zN+3Wgal;!20b2sgBSmfQFfMO$>ym;|m3h9HLtr;NndQ$G6q~~v-4EG}$(B@~mfI$} zipz)6^ z?UKAr++_CMk>1ZJP^olSY~+c&2y@S>{vJ}ExUpm&9n{B&+4TFJy`vTNXYedGR_{g_lUMzs2{SI6C}lniMBTD0tE zY#j=b_#dk->`~B0eRrOZpD;9bjhyqTt zexd>mNVB!-q)^d!l$ul{5|;ADh2^e{j7o(PECb?-HixA@}fBBQNHQ-+x{s z666;=;qf9%%!nWT0OeTA=Q@7#FaKl zG%U@?VIb&tBQ(Q`C|00G7xlfq%uPMjyf}P#2JuxbPS8)6=|XCBZ($k@@P3Aiv{6iL zMh`}pPMMBL?Z zqIt%I{`!2wt&cLFTUc`u{}3wrOwlF(JtiJF#MdX<2T<9N>`#`<;8GP!C_{`Hv%>Me zmkR+=h-x$RQ$u9)qv>Uzn`Q?(Y$tl66=%)JUTj;RS&3&WbVS01<|`78v_JmLe0XaG zc}!(139+4$2XG*FS{TTwLI}Y9`0n|%dFo0#WQp?T7Vn5n2@kM}l`y?#I6C@#?qN)x zulo+yK!?_SN@?j!Mmt@WWsI7BZ+$0o*UaSLr1I}^zez^1)sNKSG(+#TzRNB+rd-Pp zCo9g<>oxFfdh%$P&TUQt;Jw<^7k?P?pKq7LYS0}@*9R~l6>PoAp)|Fjw!nw>XX5` zDytIs3#qUYLoy5mSKfGL2hw#*+E`c!%U*X8dbhywOUm?)+2c?Z2SL5r;#|*G=~n9u z8%bs`E6hPwrsd+%oRu+CiichM1`D-HPDJV?R*Xeaa=55cqLQZ)l-cXLODif@IRnR@ z-sv(TdI+FMUWd=?QP!>;jf8VXA1qRtZxUpzVvOi@LM?oy*y@SPkV<6=Xyqp3*dp_k zlUU>I>Zk?s#HKJ0JrwkY7G%JWT3{a^IQ)k3H+Lx=J=60w*}B`l;2BbjlAhrFw9g!w zGB_>i);+g2s*7U~RQ8{jmWNI#sCi%q^N#eW0SualREemW&Nr;Np^luio_hU!YJrsf z3Hh3_E3})fwVc$AR-I|GN7mand18A50WUDx0kg#%B+<;vh78;z7}?5=7flsjD36+Q zaFI>|2Gi0SN2&NKvCIt=bO0UvE1BXxnx^F}1aFCJ#0(YMcqp7PLWI&B|8_$o4n%}LX z_+aF{%3$5wW$DPwuR~h{VMxrcj3JZ86AzHhFQnVfyln*p?dx<1oJbePnU<)*W+tGkr=Y2o?nSbJF` zVH@d9Nc7lBTeh_|Ks-dv0dCYa?=N0HjXucX)3XigPd&b`W3*D|wpR(o`*ruI; zaP59>v1f^67R%e0xLA-oMpMOL_u1sqP5H$r^c6v~WK(vt)4WSU_9nEgC`4w?0rH+? zf#IZc>lJr$pANfze+{ZH>YHG3xc%U|#u!TzW@1!QHabC&C79IIRHs6n

izSvzQrUQ<`N%9l7Jv5((I(JF%_kMNVZ>M27 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 I(x~760Y&{QO#lD@ diff --git a/README.md b/README.md deleted file mode 100644 index 9b86012..0000000 --- a/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Get_Next_Line_42 -This project is about programming a function that returns a line read from a file descriptor - - -A Good Guide regarding the concept is given by @Raspurrin Life gets easier:xD!![42Guides](https://github.com/Raspurrin/42Guides/blob/main/get_next_line/get_next_line.md) - -I used a different implementation idea with Intrusive Linked List. Although it is not required but it helped me learn how to implement linked list. -(Its not about showing off though -->> Just was fedup with the previous implementation where I had timeouts _-_ - -## **A small visual of the concept:** ## - -image - -## Intrusive Link List: - -image - -## Advantages of Array Approach in this case : - -image - - For more detailed idea.. Look into this: [Data Structure the lord](https://www.data-structures-in-practice.com/intrusive-linked-lists/) - - - - One more thing : This is also faster. Have to do a benchmark test though. If anybody knows that please do and let me know ? - - -##Things/tools/resources I used while doing this : - -- **Debugging ( Use lldb or usual gdb)** - Resource Link: A great resource from a fellow 42 Student from another campus(this gem was found in the slack 42 Channel. Its a gem of resources and peer learning. Use it wisely : - - [Debug Me !!](https://sebastienwae.github.io/debugging-42/) ` - -- **Intutive sense about Memory Allocation** (still learning) - Malloc or Calloc -->> - [Stackoverflow !!](https://stackoverflow.com/questions/1538420/difference-between-malloc-and-calloc) - -- Static Variables and Allocating large memory to it .. :xD (You get Timeout( !!! ) -->:xD) - _
**Why allocating large memory in the stack with static variable not worth it ?**

- _If you are allocating a big chunk of memory as a static variable inside a function, that memory will be allocated to your software until you exit from it. It is completely valid to do so if you are actively using that memory, like get_next_line. But if you are not using the memory you allocated, then your software will misuse the resources. I know that Mac will recognises this misuse and simply swap your memory usage to the hard drive, which causes your software to slow down._ ----- @Ali, Fellow Peer from 42 Wolfsburg -

-
- --->> Last but not least : Learn from Evaluations -- <<<< - - diff --git a/libs/gnl b/libs/gnl deleted file mode 160000 index 6486e2d..0000000 --- a/libs/gnl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6486e2df2c80976baffd125dd023d79c84a82a09 diff --git a/libs/libft b/libs/libft deleted file mode 160000 index 494a5e2..0000000 --- a/libs/libft +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 494a5e2c9eae73c2c707a4d85f108f4054dfb502 diff --git a/pipex b/pipex deleted file mode 100755 index 308dfe3829985312ab84e4009af885b80677f7ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53304 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 MrDDO+VwdTE0C)--j{pDw diff --git a/pipex.dSYM/Contents/Info.plist b/pipex.dSYM/Contents/Info.plist deleted file mode 100644 index a484750..0000000 --- a/pipex.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.pipex - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/pipex.dSYM/Contents/Resources/DWARF/pipex b/pipex.dSYM/Contents/Resources/DWARF/pipex deleted file mode 100644 index aca06bb9ba55ae1de2ca7149e5dda52d81f25431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11776 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 diff --git a/pipex_bonus.dSYM/Contents/Info.plist b/pipex_bonus.dSYM/Contents/Info.plist deleted file mode 100644 index 65a85a2..0000000 --- a/pipex_bonus.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.pipex_bonus - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus b/pipex_bonus.dSYM/Contents/Resources/DWARF/pipex_bonus deleted file mode 100644 index b3efa25c23ed8f91783f4a691d6a14c8e87ac1ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12576 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 +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 02:31:23 by mabbas #+# #+# */ -/* Updated: 2022/12/21 04:03:55 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/** Child process inside a fork that runs , takes the input file, puts the - * output inside a pipe and closes with the exec function */ - -void process_child(char **argv, char **envp, int *fd) -{ - t_pipe *piped; - - piped = NULL; - piped->in_file = open(argv[1], O_RDONLY, 0777); - if (piped->in_file == -1) - error(); - dup2(fd[1], STDOUT_FILENO); - dup2(piped->in_file, STDIN_FILENO); - close(fd[0]); - exec(argv[2], envp); -} - -/** Parent process takes data from the pipe and changes the output - * for the output.It closes with the exec function. - * If it is not done then it can lead to resource leaks /the fd remaining open - * even after cmd is executed **/ - -void process_parent(char **argv, char **envp, int *fd) -{ - t_pipe *pipex; - int j; - - j = 1; - pipex = NULL; - pipex->out_file = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0777); - if (pipex->out_file == -1) - error(); - dup2(fd[0], STDIN_FILENO); - dup2(pipex->out_file, STDOUT_FILENO); - close(fd[1]); - exec(argv[3], envp); -} - -/** This two fnc runs the child and parent process or displays an - * an error message if wrong arguments are passed **/ -void msg(void) -{ - ft_putendl_fd("\033[32mArguments are wrong Bro!!\n\e[0m", 2); - ft_putendl_fd("Ex: ./pipex \n", 2); -} - -int main(int argc, char **argv, char **envp) -{ - t_pipe *pipex; - - pipex = NULL; - if (argc > 5) - { - ft_putendl_fd("Argument threshold exceeded!\n", 2); - exit(EXIT_FAILURE); - } - else if (argc == 5) - { - if (pipe(pipex->fd) == -1) - error(); - pipex->pid1 = fork(); - if (pipex->pid1 == -1) - error(); - if (pipex->pid1 == 0) - process_child(argv, envp, pipex->fd); - waitpid(pipex->pid1, NULL, 0); - process_parent(argv, envp, pipex->fd); - } - else - msg(); - return (0); -} diff --git a/src/pipex.o b/src/pipex.o deleted file mode 100644 index 5819a6eb5e29b9c290768c391fa66e42ec29b063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5068 zcmb_g4{TdU8NX-yy}ZPU<0fgFlC5=7!V1E6{;XR!k}hfM;bs}@lC(>jp;yO#iQW32 zo}XK1YSnC6rxFeY2o3cN@*o7A;*B&Fxp zz`HEg>x|WxnQl>87Hi^V#t%oyr82%p#d@`h{w{lC+yalsmyJX#@un;Aw*8lQ=2Ujg z`F>B}`NaAS+!8OENg*y%%cqYe(lJdN*t0wp#x99`P77nUjxjo81IUL+RmJ-0ac#mt zHmnYn`#CJ~`7?ocUEm3oAw6-sPSW0g$wZnXR<0kbvAmxbQM}->^d#aFORyroPBb@z zd0TxAQ@}*zM0OMX2x7RAu>vG*mwn)JqInaGq05_YS>GQnz8jwTOMA!paPh>=a4~;9 zT-?7Hz8G4duHm@{Z-(cl)Z&GoFCoGou|;8BDE4{LxG*#2U8+At2SK!i7Uv4Cb2J-n z=(s^%b5q`8=$hSkaqgaC=uKNAd_d)|7eiMq+sv=pzxrzZmM3W_X2(|^-Nn!~8elod z5I_pPa}v(h>NuOMIGf7jq_7a_4m$`$*u;Y_3v6+2%2kTVT8CyU&MRec^7u~os0ipB z<;-e2-P5wduzEfhL;s}dt+D1aCvM91Pt)BTKHakfv5fo6(zhdx8K6*IA6Tb@f$03s(@N{v2*!BDeoTu zgkcNu)U}Ltb*B1^$$Uyrn>k;^(0#{@OnTC{%gAiqTGKMto?@ZGy}m#&o5<<~U-v{J zsdw!3bw^V%Av&RvwR2|;vypse+|YCJOfu%v3sGH<>9MV7rQ6mQO-6u!R5x;oOxoAc z8E6l*`?hhbzoWAqTA-^l(0R}2S-(IFJ}OBF0p3kA757X0o~w+?`3KBI(!w zPWNyolgtH&_B@aaJ{XBUG&IuD9_ZK}$i9$xdX zS(MU&?^D^}bet_*;kACiK+FE2T#NsSYhyH+aXulg(G>Wg_wgxIT?U5iQXfKRbr?m}8!#x6N~o%iqMF8}i^8$B=0k{P$7kHM zB0q)MaT{~jKwhHy?W#Lq*EiR?x1&xVjxAnyk6rgQv05_Ly+SR_a|1wXRrPP7)q~|N z)o($p2fM=6$%n3KdWN-6&$^?&Zyq1Zef?VA(dK>knGG#Z{o=^& z%4@sKM_zjJqgnWT8~j7?E8wf(_rV{7>i|f*fN=SeLxN}@kcl=$D;XH0Y>|nQCrp$z zGSLp$012W^LMGZbIJrc$eaJ-nNqA9W$wc`UCQ3V*Xg3HGv=Y&g1(C-JniraotJ-^o zWt-)Jp(UVf!n~(-k@wOEs6LT>+^V@a_p|NcBSRF z2Y%jPK5{dRVLL$k2dX$s=J0y+! zCL~@O{-+_y|1n7Nr*levV?y>rl7BlS`BQ&DDt{F6aUr{e{G5=7gzOd4CnN;#KL`-Q z*$kboTKle|aY*k46YT<%ZWC2WpBIMhkY&w`{vlGXZ>-Q06*~QtDEI$Dg?_L?Z>`Yj zO;+Cj;R+o`O}wMU%URP43A}c7!^jv+<8NpU&-gUcCNjnmSn#seqRC87r&EgOa|ytD ih-=3p2@}T`{&-*KO+6h;YIt%3SC29+me2A}`M&|xJz?Si diff --git a/src/pipex_bonus.c b/src/pipex_bonus.c deleted file mode 100644 index 496d3d6..0000000 --- a/src/pipex_bonus.c +++ /dev/null @@ -1,102 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipex_bonus.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/19 03:03:44 by mabbas #+# #+# */ -/* Updated: 2022/12/19 04:21:39 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -/** Child process that is created by fork and pipe, outputs are put - * inside a pipe and then closed with the exec fnc. Main process will - * change the stdin for the pipe file descriptor. */ -void process_child(char *argv, char **envp) -{ - t_pipe pipex; - - if (pipe(pipex.fd) == -1) - error(); - pipex.pid1 = fork(); - if (pipex.pid1 == -1) - error(); - if (pipex.pid1 == 0) - { - close(pipex.fd[0]); - dup2(pipex.fd[1], STDOUT_FILENO); - exec(argv, envp); - } - else - { - close(pipex.fd[1]); - dup2(pipex.fd[0], STDIN_FILENO); - waitpid(pipex.pid1, NULL, 0); - } -} - -/** Function which makes a child process and reads from the stdin - * with get_next_line until reaching the delimiter word and puts - * the output inside a pipe. - * like suppose cmd << delimiter. THis helps to avoid escape - * special characters in the text. - * Here I used fd[0] to read from the stdin. **/ - -void heredoc(char *limiter, int argc) -{ - char *line; - t_pipe pipex; - - if (argc < 6) - use(); - if (pipe(pipex.fd) == -1) - error(); - pipex.reader = fork(); - if (pipex.reader == 0) - { - close(pipex.fd[0]); - while (get_next_line(pipex.fd[0]) != NULL) - { - if (ft_strncmp(line, limiter, ft_strlen(limiter)) == 0) - exit(EXIT_SUCCESS); - write(pipex.fd[1], line, ft_strlen(line)); - } - } - else - { - close(pipex.fd[1]); - dup2(pipex.fd[0], STDIN_FILENO); - wait (NULL); - } -} - -int main(int argc, char **argv, char **envp) -{ - int i; - t_pipe *pipex; - - if (argc >= 5) - { - if (ft_strncmp(argv[1], "here_doc", 8) == 0) - { - i = 3; - pipex->out_file = file_open(argv[argc - 1], 0); - heredoc(argv[2], argc); - } - else - { - i = 2; - pipex->out_file = file_open(argv[argc - 1], 1); - pipex->out_file = file_open(argv[1], 2); - dup2(pipex->in_file, STDIN_FILENO); - } - while (i < argc -2) - process_child(argv[i++], envp); - dup2(pipex->out_file, STDOUT_FILENO); - exec(argv[argc - 2], envp); - } - display(); -} diff --git a/src/pipex_utils.c b/src/pipex_utils.c deleted file mode 100644 index dee9256..0000000 --- a/src/pipex_utils.c +++ /dev/null @@ -1,81 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* pipex_utils.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/18 14:13:34 by mabbas #+# #+# */ -/* Updated: 2022/12/21 03:17:52 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" - -void free_ptr(char **ptr) -{ - int i; - - i = 0; - while (ptr[i++]) - free(ptr[i]); - free(ptr); -} - -/**Function to look into the path line inside the environment variable - * Each command path is splitted and tested and then returns the correct value. - * access function is used to check accessibility of a file -**/ -char *path_find(char *cmd, char **envp) -{ - char **path_var; - char *path; - int i; - char *partial_path; - - i = 0; - while (ft_strnstr(envp[i], "PATH", 4) == 0) - i++; - path_var = ft_split(envp[i] + 5, ':'); - i = 0; - while (path_var[i]) - { - partial_path = ft_strjoin(path_var[i], "/"); - path = ft_strjoin(*path_var, cmd); - free(partial_path); - if (access(path, 0) == 0) - return (path); - free (path); - i++; - } - free_ptr(path_var); - return (0); -} - -void error(void) -{ - perror("\033[32mError"); - exit(EXIT_FAILURE); -} - -/**Function to take the cmd and send to find_path before executing. - * Here using the execve which transforms the calling process - * to a new process.If execve return to calling process then - * error will occur and return value is -1. **/ -void exec(char *argv, char **envp) -{ - char **cmd; - int i; - char *path; - - i = 0; - cmd = ft_split(argv, ' '); - path = path_find(cmd[0], envp); - if (!path) - { - free_ptr(cmd); - error(); - } - if (execve(path, cmd, envp) == -1) - error(); -} diff --git a/src/pipex_utils.o b/src/pipex_utils.o deleted file mode 100644 index 6af4f40c3c1b356e87d8e28fc11eaaf0dbe85900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4008 zcmb7HeQaA-6~E8+eRh(@&d1tyD{H-}gI2;HNjKJQ*+^(Sy}9jLwQ1)Ssu$Q~V4Mi~z<<^oU}B?!X9<{6FZukYjj5`nWPM z8I3J6PS;6c>{>EdNaMl5rR>TSkL zP{TnDhq2#LvzlpByj)?dNN!%dixTe}GQSb|yL>s!7ksZ<`F7 zb7I-07CBjGo8lEm&KTt4&F^)Iw_C;1dL z8Rk^kyfT+ z5Rntym+DJJnXT{xE(OImXS`fCzeyveic6EzdW7a9K z=bxA^3Vn_8!of*ki&{Oka$}DWqzzzlR?%VubhJf{e6}zioieR*u2_in z^v09%WOR?v#(H{_kmCD#jt?FzCk|(gBgZp6$#~EG@$%?5nO9DX7ja};W?~XILAIQ@ zulJ}`JYyPmIdPO$WU!ff3AauuYvTmKQNm17ggI>*%$Uf+0&9-t3N|w)VJ%FR9Oo&r zAqo%6&Smqu5VF?z6jM5td&Aw_AAW8o{NZ=P9k=fYcPd>tLws?Vy43#d{_sO>54U~k zj<4c|_jBfxipRV0j^5WKa&O4v-4vw8*{w*y2qT2hZsrd^+SW#=Kn6R7UKwa<&)}3u z;`udjgBu9zJmK;Jq0w%x<>Zes zQ|>x|IigCx-zZJIFC>XE{6~^@Nh$MJlA;s`{2_sVH{nClmdSPx*_c|TC+JQL<>cG+ ze86`>Dyb^v84NSe?! z%z1!m#|OwH`b#~QhqySU73N$Sc*R%Ahi;$u{%~aRqiSAzbN2kqhj$whI-!R#N*GlP z(Q0ry?TJJq!AFI}n5YW#zerh>j`?q-?B+x35qa~WTt1Hv?F1UP5g3SSpt}6{rU{5U zhGfQ))tB0g=qoe*m>xf>ir-6IwCOR7li5^XgQc{I_mlxSmtZn0OThPJ|H z_6yQ3_xdgIZe_}|$CxtRp>%8shUVZ!DSiPX^fC2pbyeoa*g&}B1>b>o`8go`2I1E) z{bZh-`sLxb{}TsK=DVri_u-e6e(pQ!U6U%kkE>XSTp3M|bPwZ_@|a9!cIRd@@GdqQ2@ zm*xR=ocq4Vx1HiUp==-HZ41yHBtW0~9KTEbA@72r<09V%?N&fV`*>@bhcXcT5W{MP z2f=U8@L(U`0=NLA7WJI42Gpmx&p$oK+x)E=$^^24R6>Wjuk~Q4o3kGwsekd#3bIaf z^)=oN+#RaTThcs8Yp7}ls1t;S*!EL!Nb~J*P4k@@uJ*w&&XuQpDjL`6^d;s8$K4kD zNOX(EJ^+U*b`2amKlXF*5cqj;{Qj};g5!jZy$BA!t-8Zw^xNR`F18mu0KQYoo#6P4 zkI{)loNjxHn+GS{IdFW{#a@v5C%_5k5y|P!1%xWjDR5KD`y~IO1jWE5swXYhSMK&CNeI?hbo M +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/19 03:36:07 by mabbas #+# #+# */ -/* Updated: 2022/12/21 04:17:57 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "../includes/pipex.h" -#include "..includes/mode.h" - -void display(void) -{ - ft_putendl_fd("\033[32mArguments are wrong Bro!!\n\e[0m", 2); - ft_putendl_fd("Ex: ./pipex <...> \n", 1); - ft_putendl_fd("Ex: ./pipex \"here_doc\" \ - <...> \n", 1); - exit(EXIT_SUCCESS); -} - -/** Fnc to open the files with right flag - * Here I had an array f structs containing all the necessary info - * for each file opening mode. Also added descriptinve name for the - * mode("append"). I used the global var g_file_mode array to replace - * if else statements. When the array of struct matches **/ -int file_open(char *argv, int i) -{ - int file; - int j; - - file = -1; - j = 0; - while (j++ < 3) - { - if (g_file_mode[j].mode == i) - { - file = open(argv, g_file_mode[j].mode, 0777); - break ; - } - } - if (file == -1) - error(); - return (file); -} From 0b1930b92ae48477fe77a6922076401f176f4fde Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Fri, 23 Dec 2022 22:32:54 +0100 Subject: [PATCH 26/31] final eval version -- compact --- b.txt | 1 + srcs/pipex.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100755 b.txt diff --git a/b.txt b/b.txt new file mode 100755 index 0000000..d546a97 --- /dev/null +++ b/b.txt @@ -0,0 +1 @@ +askdjsa diff --git a/srcs/pipex.c b/srcs/pipex.c index 5bb90ad..4cca45f 100644 --- a/srcs/pipex.c +++ b/srcs/pipex.c @@ -6,7 +6,7 @@ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/23 01:03:59 by mabbas #+# #+# */ -/* Updated: 2022/12/23 01:04:01 by mabbas ### ########.fr */ +/* Updated: 2022/12/23 22:12:14 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,7 @@ void child_process(char **argv, char **envp, int *fd) } /* Parent process that take the data from the pipe, change the output for the - fileout and also close with the exec function */ + fileout and also close with the exec function*/ void parent_process(char **argv, char **envp, int *fd) { int fileout; From 43931db4c209006e1307c56ce3af574997ee5f21 Mon Sep 17 00:00:00 2001 From: Mohammad abir Abbas Date: Fri, 23 Dec 2022 22:34:40 +0100 Subject: [PATCH 27/31] adding branch 2.0 --- includes/mode.h | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 includes/mode.h diff --git a/includes/mode.h b/includes/mode.h deleted file mode 100644 index 965dcc3..0000000 --- a/includes/mode.h +++ /dev/null @@ -1,28 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* mode.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: mabbas +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/12/21 04:15:27 by mabbas #+# #+# */ -/* Updated: 2022/12/21 04:17:29 by mabbas ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef MODE_H -# define MODE_H - -# include - -typedef struct s_mode -{ - int mode; - char *name; -} t_filemode; - -t_filemode g_file_mode[] = {{O_WRONLY | O_CREAT | O_APPEND, "append"}, \ - {O_WRONLY | O_CREAT | O_TRUNC, "truncate"}, \ - {O_RDONLY, "read"}}; - -#endif \ No newline at end of file From bbd59569895d05b192ee59b723cb404156b43ab8 Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Fri, 23 Dec 2022 23:03:21 +0100 Subject: [PATCH 28/31] Create README.md --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..71bfce7 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# Pipex +Looking underneath the infamous ( | ) command and learning to execute multiple commands in one line. + + + + +## Learning Goal: + +[1.]☑ Usage of the Pipe ( | ) operator, + +[2.]☑ Learning how linux handle processes, + +[3.]☑ Usage of the heredoc, execve, dup,dup2 functions, + +[4.]☑ fork() , Child and Parent process, + +[5.]☑ File descriptors and when and what happens with stdin, stdout, stderror, + +[6.]☑ usage of perror. + +## Functions/Ideas yet to be discovered more: + +[7.] unlink , access, strerror + +[8.] How to shorten your Flags(O_CREAT) for open/close function by using void pointer. + + + +One basic applications of the operator is here: + +image + +**heredoc** applications: + +image + + + + + +Sources Used to learn : + +1. https://csnotes.medium.com/pipex-tutorial-42-project-4469f5dd5901 +2. https://www.youtube.com/watch?v=6xbLgZpOBi8 From 6e845cc78e572c77893c8bbc3ecc6b246ab7b61e Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Fri, 23 Dec 2022 23:03:56 +0100 Subject: [PATCH 29/31] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 71bfce7..a64672b 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,11 @@ Looking underneath the infamous ( | ) command and learning to execute multiple c -One basic applications of the operator is here: +## One basic applications of the operator is here: image -**heredoc** applications: +## **heredoc** applications: image @@ -38,7 +38,7 @@ One basic applications of the operator is here: -Sources Used to learn : +## Sources Used to learn : 1. https://csnotes.medium.com/pipex-tutorial-42-project-4469f5dd5901 2. https://www.youtube.com/watch?v=6xbLgZpOBi8 From c6daf4055678445ff9287348653769b364624cbb Mon Sep 17 00:00:00 2001 From: Mohammad Abir Abbas <66947064+mdabir1203@users.noreply.github.com> Date: Fri, 23 Dec 2022 23:04:17 +0100 Subject: [PATCH 30/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a64672b..7a4d335 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Looking underneath the infamous ( | ) command and learning to execute multiple c ## **heredoc** applications: -image +image From 790698013b8bcb40f35b6f9115aca14ebd2cf55e Mon Sep 17 00:00:00 2001 From: uknowWho <66947064+mdabir1203@users.noreply.github.com> Date: Thu, 16 Mar 2023 08:20:37 +0100 Subject: [PATCH 31/31] Update pipex.h --- includes/pipex.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/pipex.h b/includes/pipex.h index c7d4c3f..5807d0f 100644 --- a/includes/pipex.h +++ b/includes/pipex.h @@ -5,7 +5,7 @@ /* +:+ +:+ +:+ */ /* By: mabbas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2021/08/02 09:58:35 by gcollet #+# #+# */ +/* Created: 2021/08/02 09:58:35 by mabbas #+# #+# */ /* Updated: 2022/12/23 02:31:56 by mabbas ### ########.fr */ /* */ /* ************************************************************************** */

Dac3OVBFyWl`j4hy9DokqEpwq^zdwI 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

Dac3OVBFyWl`j4hy9DokqEpwq^zdwI z23T>eEx5jCf8h1){s>w6MLf{}2%OgxNqO3MVm`9s@tMJO4wHtJ;TNM}X|Q!hEC+g; zp>qJb&nqBWgaDyJC;;#gUG%ik6LF)(Hb!Vh zS8lH7i0Wa69AcB+e86eyOq=)*Ae+X9*uN0US0?l}b_@CNpl91`<|!4aL9sdEG#v?(yRRrKZ>mSRL%H<9X2w_e3X<}rqWW`T*m--iy?kxzBDk9A!B$@_lQ-eS$J&g+Knp4VgF(a z4poW3h=j#nhk!={T&gqdGbFX8Q-@qqYMt%R&4W0&W3{1^c>{ZzVkAj|b4axH`&AZ_ zk1%RFVureh38D}leG_AO^=@8?goYdH=vMpr!O&8W*Jw=BAKTLiEr&5vmhe!g5-20T z(oY5n9mfEX4jjGg7h>G!zjN?8Cihs~GUGh85l(iA(~0BR(R(I9uhFc)U*|slP>?6- zw*CPxtazZjiKuPeH87g;lrKJ9!T1vCkTAxC1F=Vf<#zi;+IQ>d)DXeA9}-$l*C(DNIE0(jB@iEHX2J8??0;L*MC{&D6Gi#!K&&>O$fplFocL}VOqN_mokeMjjG5B zR(}^|zj_S-Vq}f;^kIMZu<0c0PrGw6aa)NI=LwFuWw!ty;#KA(=M@L0oaP7`Zj)or zTGT$;T?fO<#-D<1l5d;Vjmer4nzio?f=vb?C|wuEfnEP(ym`mR$fGX&U$}hJ_UiUD zFmMKm9!@}Hr!7^hWMr#ufhLNB5WDuw`tk9qzpGkFYAt^CK8oy-1`@2+N#Cvkm=u4i z+MBxc-6GaH3Lp?X)h zE7PnbCi3xy%Q_r)Hu8>f0k;r+>^65Hr#M^g51U=V@#}(lH0nmn#_Zs=xah{Xbr(z^ zH#7Sljj4Ik{|?OP|Kw+S{$wm2v%o)Fb|Opmu5GuIzj$(YFC!*}YmF;@Q??bg^1RV! z4LBTDsxV~YR{G6O4N!Q^2EOI`#bMPe{PrtP(yyZ`*`mv(!OubtOHt~yA4qxJ z+c$rm8G;gh9KAC|%PoUVkFSp2GYQeC&0}P_XCx~%r1{OG9Gt%i^28v(BtQl^EfTRX zC;rm@*cLj;*jl_7j)||-sc8K13!!8vJoq)x{xhuK zy}SWMo_TtVY?M}?kFpX7bK^D8 zuYYWLrPq%&tx@xqQ3%(>+JvfGOx?tHVcw~03t{kg0|QmPTLA^ME^0R$=d@FFLi7lH zQH*NohFZ3u{{U{6HTD~1rt2>^A^g@MqFopeaq!aB?2Zt1r{Tt#{P!>rSJ9M`cYccns&^i5pG$WkQ8CWo=050LgttR_4uWR zpj-Z8%B=7{B-tQvdi|iJ!VqZeRlcq+`XQcE(w9`gy?s0xR<9gYK{lNQIwY(hz@^ES zrJh)}_oz_Ga8(X3pu2Iscq~%tz<7+>hEm5fwhK!K?EU@x#>%lUz{)DEtcZ#Mjg$0^| zDD`GZ_uTNQ+WkjK&dFlgC+R2D>Gl*HEy}IeP|4^#pFR&hdCkK4R1~cISDK6AB!6@R z+LcjFh3Ar2GQaMNa4S3bs}z7JF; zOoc15mwB=U`W63uh-THtV5kR^9GUo6MrVI14zI=a_>%f|UDB@{Rjn*I^r==SL>cVT zN}U6*Ve6*O9GGT^WxAY6#{Y5Vgl$j$X<9H4@@3fI*VmW3lt~4haLT}nmbx~KhIzju zG8@FWvq&B-hG|adX3&+-KA}+#uq-x!viRu zgp;+!hpp@=4xFEav`qnr&CB3owy>ln^Rt<6`RBC1xZ^!8M@ClOTzinM38lN5AeikX zVviYCsbmLywHqglhet3KKKZYpiQcYF0$%Te_NRpVe);N!9`Wa6zVpb zoq}x|r&-javT*iUp)onmpF^iO>3XZD|D@tqhEjowAX8%x&D&q%g$!Kir%j^!H>dTg z@M4>F)}y-nsc@=Ls4j13#^- zCWGqVe<0Ycf$V=iGg9^HNtGjg0yRrFMX`Im2>-x$D4JAji#%%^ zEt^aAP)b_JV7nP3>g9-^75LpeZYa1aU#~bKpfG|*l;|d$)JjAyA;{=#?QMR6_eips z6ZX-2PfrGy7=4|LAEnCQ`z&9puvfKt=IbY_CsO8S4^p`?ABuZwXg%#}TI5tR;+yVw z{cO0}n9{5clz@lA9ohS?tSx^WJk3Pz^H*(ugJ>eD6NyZ2;H~@Fja&^QFI2pe;USGl z^n#fJ#$mz@u=aL8c&p%{oR8VlB>grn1 zF}`U?($MRCVci8NV0)jT(lZPuM0T@#efsITEnVw>r!Ax_@jp-@-Q+*t4?e9=AgAMM zjdlN9nJ52edc~O=%f4U1R)muhiK-PAWXz*J{sqt}#S)c_Z(Ba3jgBmj0^z|wL?3Ph} zp+)jZjg)($2i;>xUeOkPe6UMV$G8RsJS>mTCF69TKXa7N*^slhnGXfE-nl@{Jdo05 zy{k`a3`$((#`b*>wnU5F^Sk0x3Xq+JyvwlX#o->er6@E+J$yJIB*-C>b8rJ=jLm-t zEYhp*EkUBNuZ(tmm`=g8l(>3&|~fE^2tb86>0uq@9re2!$cTH4M zYe?apQ;|#jZNg~Z^F}XWg7-F$-6&Q&%)7An98san5?e0L1COT-#P6*d+dqXTY}uKRV}n>py_|;c z>wefuN{u^@-*YfiO&6c1)G()H7%R~ACFWepJzPkF&>i}qt}OD zc+e-Z%XJ)IGh+M5WovMR3Pxrh@gvi~5`ZmM&3nS3;#b$E!X~39Ex57=d}jo4pk%+g zpSk}5o>EaQ-7ct@$v-e-hs zKk(qj`FA!&`k~H&cld+Y5F_}105Vu<|8Ak<4&3t=K{Z@FSmcI3R*&XY7H%0e7fQxU zLs>8)6Ed2sL%a(x;Ky1bzIe@$;t3c>L6JUE{*#Wzu?akyRNckx)G$ zs(j0r){+$UUeAW+V@Hm5$?6?)=%Z`Tb3_Ia<&%nOygufq(>E`|%k+=bSw!F9N(KDb;gr(4c4QW(9hdI5!6c{qWLxuU5Yc zo-qNJQ45kC2X5qZXlp_7TWoNZrIr8HWhYHg(&ZgGapJ{eG~wv^MZZ*cf2im{wVkMC zqlEJd4ahdeq^6`tKz&pZ>8zSr@aaF~tUwCh6+hy#@&RgqR_)XD^tRr9|7g(xn|LH? zwD78VoaMk)o@~`?^`!&*-l*8hQ8USnM339Q3?8DvT|Y^3SU{vKaV!toFL5S?Xh!Q%`OM<;i8&jTriV@h8A3DQdq&WTf_&*=u*c_ z;cS`u^s82Tv@S*)iXK}}AiAI>({B`UnOz#D>%qwR*MvwF3t9&79TlH<)ag!l7Zirq zk;dYY+sDc~;8MN1<$ac;E$${xivpSWD^FB!nJNxhYkC54tnW$s)L&3-XmOdocQ^CJn8NCL zU(Fr+MvKz}gt)2Vi=MgA0lm+1@h;K!16(VfV=G;sE5KW#s$3gp>;?T(-?31LBE>Kii$yPxW+ z+57ErUhKcA4mP?{POazcu%vhH!C@XiM(na+mT4s<;_7PbXndiU&rl0{b`a5t__fg# zuO2`xk`5ebM*!C#ZGdoWD4dqua0kP31JM<@f=?A~2U||)8T`;H z4=Evy2JRatobP+ARL$g>I^vK|{W8?~gYrOP0{CJ>OftwSn(;+H!Ux12%CIZS2i%i1 zbQ&SvrLLunW1HhxvGjnv_-K2^zIp!{&IkbpK`YMT;_J#$>QB!RH+pGSE>vxJ~RZrvic1W5URfGE+~y$%r9 z?1wF}Sj3rm<(FdHRy#NUxql_JVsj}i#NMbJg;}hB6ec(sz4Yp7g2wJ;bx_CX(oHpciP7_}57aI_fx?;+0gR!>e@VDvr4j7MSR*+HXo`$i+4A<4pa^ z9WrI0FIc}cw%_XZ=H%N%XpKE8@5Nm}x#$e9!Pl+8E_JA{eQokE`8gig~}G z)t0m>zH#T$>@apt2?AO*215<9*`ppKh&IAqMuw5pBi2px*4gz7TxE)3f$eb#jUkX0 z?QY@hJg8TiY_}*JA3A)G0pv+hPvJ9xwz!N12IGN7S`y%{+U2Vjl~d+jln{sIOi#Yp zQw~)k?iM8cISjpFA~Ee-whFetUj$ZR=Ia5%wQ_=*nVAo`loLEba z+XYXOjanO*^XxAvL%(Y3TMaBI0h|&3fdQ{?ygx-# z+5*Fk|6SA4|F@OtfB&eVOrU@UHD>mpH5!1ToZ)a$ACSFw$q_M17YO`T5sUd=`i(I# zgEr__5If11l0eTSO(=bs!p8^kX^zB)Sb<#?7NWdlALeRqmy-hIx^V;;h2R%jvp1>@ zsy8)&8Pyj*o38TjycBgtlzD3eJ)XFsER*XO3;@bRI!%Oz9Yv@@aQ-kW-G{(**iSSW zz^Y-zE3d}3(_0+?AZS+%06?Kd4ElqR#Lg}G^XpwHfM|PX4m*3Q^2!Rru<@$Ju|==i zwt?i|VNypf))kR=+sz?c#$Q4~9t~E{2XQqi$FntYWZ=2sMr}bcs~GyQe15qZQA>`z zRC= zIoZ~qc@2}I@c8I>+=zWQ#Zagx%eK<5M#L3S`Dxpy!tV=lvs>e-1q5w5QwV_hGd<$& zD(M@u2Fc zmdn8QYvkvyMuF;fO1x>-vVW7VTLo1*3X(|LRwtoD48iAk79vFbS&` z*Hz>g?YP*ig2g<|`tcjX4{cuz)sJWuV|*-!e|EPRX+q*b#6FBR#0iPhtW;z%jo2|6 z_B5QQb(zXvWJWn;r15DCm;+&WwqzY!n$F8}l@-J;PoJx}jk#OB3U~*oV%+cE048}mE zXZj;0>3<=8M{nyNF0p78cm%XFyUJizEtc9zHR&KE_;}rD$%@EePp^gqo&gwkB5zPo z@DniczZ@y@w0{+ldbd*VJKunr0DEYyP-X2o`xJ@!m9!;eTZU+VR5Qo8iOSjoSik(#2YhG<k}lDTUV^u}1-;)^*wO4nVP`)&Wb*KWmPVBz;nHsrCC`Vqv5Zj8;{`nR2ErrI8^{ zjs-RmgXTrGP!!-*X7$WxlyE&NZcx8qF>`}&EUV7brPd#k({5jOe36jE{cAIE6o z1mbK~-=%(nmMkr}#q3&0z;4M>%}uH5l5_Re=mq(2(ZuL~>(@bySP?(oBa-|*%d|wR zse{~_Sl_(Fat;3vv&H|sah;~K(@e^|FLro(Id2bqp}En8{9QS|tPlPqug+-Cq7amj zK2^3{IRFq&vNNu$`a5}5lo{a08dma=octT>?mq1!_V5kox(Z2uKUqH7e>* zS8pB(iM~$N#;r^Aw!iFY0a86P-_ykx!rxvPR{|Nj_r9*3V<3d1lc-vZ2wi-`Qp5sW zpn)4rf+7^x>kvg*m0^MtV_8`O;-Fb(2CaRDdm1Jpnb7drH0lU%hDP2Q><*Y`19b`F zA6E=qxXwV?KM{n1EB=7{qZV21&0*500}P=X??{3Y%`Wp?L#W19)xIW#U;8|IoOC6h zG*C(HjzQU{OSTJe*F@r`=LZ1Q zenj&5W&g$etU4~O0JkIQ1ryMsH6Qmw)IBc-=xR4R&6EjjyTFzC+}WnpcsyMX@yUomVqNyotVJ#=o=uKxj2nk7F;`P{AG#BxYQ( zo=}fdv>5)pi^6TbX93DV&-(l7wC&bCT4KX(4p;&rm|LpCWN)B;6AHU<1AFrEN_!=> zTBP_8jOq%gMEI>&wIE%wTxBu`2GQd+5rHS~%LXq8-D(CK-}I03*KK~|3U7N7xFgLb z^2B>g2>kTA4hLIR=cYZa<%;}}d>FFgguFG?9+Cjwme(hNzRwFKtId*vTgD<-E*6|S zj)5NAsKchSI)!ZBclBp;t|$&Tel=K}ly%p2H03S22khBu&S1HWcp4fx#U6|qJLvi zePDY9gBltWy~G6$;M)e$(yS`x*@vG6wyp2?OL?xrE>{*Fj36oE<8i!=-gUiF{q)0- zN-cPZRm1`*Z$@}%26V(mj63@|Ou0r!M&ysF^%?+rRcf3K)+g;58i7Q);jpQ=* zXzDoHFMRJoDPdnwLwsVLgU&Fo;MuoEyXpWH~`= z*l})#-_h2*t4E$UF(oK%7HUbcAzBQ*`*4;3PWB%{kb53>YMNfUyYgb1G>Jt(YjqcCPcq!V*5C>HQ+!hP+Ou?jYkuf7;xH6o~ zVhT}=Y)GiH0Y6s;A~#L+0MGOzXTzAT>q3Z&OL4t!?KpGaJHA%5(q4iG~Mt07aAW73;Ql6zzvye|dLVLQKrzGp#> zGt}rk%Q&<(e7TX_&pqlrt$X6q>0vs&)F{NKBhNg>oY{jCFryCumPhuEV(K2^`#AC^ z5cCbo0K^D^{zvzRdiU~_*YV!R)eEtGn)#W&Chl32@YR}jB7r)}?z6oGtAkoXKIXr?M?(Q#|iv8Nf*JJym;vd)zs{=lBcnI%>?oC^AP`d4D z&!4T}7(09@$2sv{al?XF4Jee(m5C0JK$A9_TDtg&2O;I=!ye6!_x{i^(KXT9h7ZAn z5P1B_ChV{IR}A?x5udc-igLBlcS7xISrH!8Is{@`pC|N$uNE~%1hNPWGb5e|!V)5< z27MSB`G|dn;w}r-eP)jNB0LYeA+$**2B1rOiof4T>emvLi z7MUl$BuM&4nOo=Ia*Sz)#Sfghe5D#%g@JIkS(KQ^oh>0fR{|2R*8+$&_xrIPT9#P% z8=vbXelC6~^qw*Qmf}WMQ~RX?tKySO{ulvbQj?z%W#V=h7i};^CJ^`l#p2;g%@Js1Z_`;M7Q$(l&u5b&V#7Mx9_f*kmG?5 zuZLS=s(#NEmLUJZy9g*|$?d|>Tmnd8(#E#zBi#A^#$d44B&MI?II*XdsR71R;DIJq1rH(hOd~_JMB9;^r zMe;Xb-wIi^I<9@@{|}(qVS6WaM(nkb{#a;ZM;P4O+zHctP`;(Uc`z!>A){>L;W+Tr zlQZSutr?Uxv~Z(kKM>Fp=eQ6!V)h)=F{KFjEp3c8E;A9#VRUnlaj^MjyuXwDN3J_r zRQVl_gkvYRx*cKLZm;cLcGON?u?X&ZJgSYU4~zWCxcb^Ti3J!0t4CN?n(nY}iP9bB z#env!2}Qh@xf`eM53XNML}CTHER~ou{kX06+})D5hiUw96fJPNJeF8)mT{reW9=nr z3?!PZtpFZc3gW*xs%;(d^_2{m{y~D6u%xqTRU%?K+}nM(5lKoUFWg0{!1OY99CvrqG#YHY z>P2D=zv-l=Bv}yXH=8BPkr~eYjYv< z>S%ACY^?K}lq=dcMe8zQ{^X$ezU7AapFN7S%|odCIB5AVb_<0OpJ?-A6 zAT0JCL=inpeJ9#I= z$;1E2eXc*wa|?Hx`7Q3y@h0jn=ee);({=G$mfVGYR9z~4i>3|+$XMqLQlM=H#AhsHh$uoii)(w4fvJ>S%NNJpLaJCH+0Ul{2H6_ajACSdtt(opGZu-D954< zYxawrAK-?~T714Td&l>%TU1|l`HB?|PD~NJYGRu&-&4;uBNM}67*kYL86VLcQY53F z60!4S4xfDYYpWdJ!1}bMRM_!^`mH>vNr5a1H>8_MM-NacZj|m`4O4%A?l}ir$fqnPBJK<$_2g@Q znX~0RdJ0v*5i{m{#N@}N=d~lru3il`^I`&2)OcWYx#z3u8>jASL?_?UX-nxnp7j%#H*cBDY22I z3fZJpWTiH>Va~Vlw>xFE#2EI5%~~JO*!y$kuV{SdroJ}_<#d;Ksycq!_8+%BZN*Mt zf8H(lqqCl*54ep<1zNAsQ8!9Wm%^@hq2FEbR|083~MnP6Y)aRczq6y zxET(#L+PFKF-ktwY|efe*J`gj09oORA+L8gxj(#Szpvj@sUe|+g|4vd_CG+V)be;z zE@`$bqI)@4=tQB8P_?pBeiL2)I%l%(NFg) z)r(+ZGo@4>el2%h zz`ihE&(PVQUY#}D)$7%!i5Peg$cy-p|EDTSmAz9?fSDmjVoOwxnSiM#O9C?$W$~&e z)7^-TUprsgYKXObgV3GJZ>`SnD)?PBg6;c(+2%CTRXQMeSRdj~*x>OO3|1$tvH-Rj z`9t)e&ZnkI{i~+vwBtmiVj_BTJUfn!Hx=f|scPD1(Z?PFO)IU9XA|?Xk>?v*Hz%8t zce~?7NSVV#&=k$@hVHYEO|c2al*4=gd!mh#z(z44G47OKPtI*J@zL>2BAyi`ReSH| zt(OpspX*aXGFl^SQ%PAEIwn7nFjs%32ZplcX6s?=8PZ3dKaP)ua2cL#U`<^-zO6Vf z=;G6wShX5;H%s{a$jMw z^Du-GgyW_XDaNRrhKck=a0X^P`s0dLX`YhFiSUS1|%Q+Nj> zFiTu}Z`O6`W1IN6R@lSbAgv6#6gnVu`{iYi;7N|*=2$qV+njTa%xK49hvlaLNrN13 z0Qp{>mPY|qOiYZMNKQe~j3eP+iaT68=7{-5S~HViMy?!^G=)uy$!x6Ive4`1>>8Pj zO7uZS`_q$3{|)=KDy=O`d7l-HU=G8yr1e?CmV=@Qb*444G<&2clc*J+%4pt>lHRFx ziiN0~ssoIx=3t;wrPG@)Cvr~cnY&oQF}R0?!mROaTy!ELkJw}q>F8q0tqW^&Mlbhk6r$n!B?6BFUF=gd3jU>UrKO^!7=nOHq zPEmSpd}mjp8#bIYzbOA;mf|H66TPKh+FCn$-=97=Pk9&6a$v3;Td66&nY$*`%`2!c zFz(cKlDqwM+fL9xAz`F6w#Mo{EG)JvX-KAyvP5bj;FGBOU5%;K3v8+KoV1XQQbXXk z?e}x6lw#fm?Sn~h`pRqt)P+iXlb2x)d@kh3Hc3S}m6I~mTEmgjpx_%)*y(6toL=EJ zWl9F3F^x%9>a{at zq2nRcq=ul+_RR>)0+@$Rw^pMnXipPB^}Gd$;Pe+I7AK|)342Fd$bIpB3YlKob+T~> z8xh6ux?eZVaUCycYiRr3AZu=Zy~>&DN^joraqp>I<$JT?Dmxw(tJAdE7iivWmRpVI zCF`j{c5d#T@dZi3h0x7Ktv#FRn`7FKPrdK`)4M8LrhqdRhyX2L$5%f{o|@7Ml|QZyBd*TJ z8-w)%uDk{Jq9e-q$cvJ2={K27B5_$)Pp&F$D^aYwAXbL&LGd)dQ@cHVL@<)R79Op> zdFm)Zr06&%j}!f1W7t%Bd!$6e%8O6GF)L?@9O@2yx7|wKH{TOUWN<~%fUFu#>T1vy zdI%WmsSryebo$N-PLHf_euYIPF?-5yT`x#${~b9L4J9T~b~(zfRMpYZDHaR#x|vdI zrYuDxS^EFQ3YsGwM!t<5gyZw6J>|Ijo{{7~$n5if~jh>3%bMeo# zzCcc7i=5%}%y0{s>z(O{HNqe=rz1_ZE=)7L=hX{xLi3VtqQtZ2Wk=CSKJwhRQ;xvz zAEDH2Ic9~$*6E$}svra<75zqv)=PnQijG1(9lEHF21{$(cXEus4wNv28+-_`eI_*2OisbR_FWX0v+f2-lxh$r9m0CG^91z-AY>98mU zv9+iz{|n7-p_>-t(B-r?USD%xA7mFg?K6ty@fe(fK{j-59xk;|-}d+1<=#^$`I6Jv zCK4gSZEDlm>A0UFeE8_J$!lT7VRSCIkzhtpI3n1pW{|h;|B64OQf}oE!z=w^y36wA zz`gH9`S|+Be*mS0Yoze+=<_pO_|spo?|*qpo zJ?D244(C_W+Rs$lbH@JxYMri;BsbV0-!(2B=GeIa&JTIm$=Uf? zAMMr;<+ct;PXH6Hc>9oV1R__1_xImdqYXR-Q`;66dn+mY+y0g9PX5a}>q3zBGO=tS z9#s`2@wutzmUHp{ku(?|B}HXUdY}H^fs{zGN%YmB5f3uubME3E@4?6{YHB&(Kv%Z+ z>kubi(j0+MjslUZKE=L!KGsXLPtkAb3?1~rF@9vWqQAB6ET&;jZDhCR;p?qWq#t7{ zF?$80MO5YVVm3bqaj2l^ymFKpk#sj&UqzI>ZRhrm{ozz!=*d3L^H_q?*A40G-33GI ze!aebe|B|tc7%w_AdVXF^#ys~6l{l%HXgEuLo$M}*yOKc5R(T7^)hN~2TeC}XoH1| z@)-w_G)i^c??zr14PWfH^JLmn8RoQRaBukYmH(vg$eSw+#S9|5++ta*9L#8sHZ>{= zT3@C~;3I=UtxmOIq`t{s_y4A~ezf!Qbc|3V>h)iD?`>+Qk_V3QC&z+3nP7K$fu#Qd z2y0*|R@N)VqL!n_xqLmtrz>l5(`T|A#1mo|s?`FC#O4bbL_1CI7uoK_Q41-JiV7<}*q9Qhu1? zhKOVP18Ixe$(oM7QJr=Ga$!VOt3a{lJx@uNhvXpXSbo z;Y@AD>mIm5W%KCnmcm0vF%ar8D%#hvwA9Hlf?LyT_MDuz4uuAF8Ik@Y7vGr7uf9qy zqtC|q$qQsb%~lv?CvU2*z-6??m*G#iC8W{FJ=OUSP{}&GB%V+4d;Vm+h~*LB^S7$w>xP6T1X5$BltNpi1E;Vx~a&1$-6v8 zaO?etBHN@WUGu32nh<}#P@qgNV0DTtcOSd6t)old9mk#{8Ene4ahDV@x54v;gr7#Q z2#+}qmZUfAOQZ#(gwu+^!F&ynrZmVxk_SkO-k1z-^rSpWaV9#(H0lQ9xp26Y`fE~r zGtYY;IZeB~f@LM-6E8q&le>J&`e(g)L-iT{7q48b++FVzm`7Jc&lxB775X$ID=~9M z>6a*0LRy)!iNE(MwsYh_D;x=3@R39{FElQcVXTt}a<3fNuJqZU5)(jJX&Rb-*>H|y zQ-qJyZP@o?4}pkNteznRi?@c1(; zA+*g?@<-T6jQdM1n6WeY6r-anuoaeWbsF4(5qN+NBaYe&u|J>#>D^c356u@vW3`Mg zCDoC3z|^qR>P?}FwNW{r+dk_*=Dpug(WgaIz9ZFAsw!u?}=VV%V6JX8+RIOoN`Y-tCCA{u$& zK)&u~8+febOyT_tQ-Xx+LY*85oWk7MyNty;gQ-PX$|6AyrLvUW7J&2#cchdBp`aX! z*0KU+6eRG!Tz=Dyx8Z5NX$w@M*y@}8plU-#mgtCJ{M1ffpe_qU=1R2RB^q!r$V3zN zjXdg{Hj%@*(UJw;Z%9~;h<=TE=JxI)+yUo}~v*(kb`o9ua+sx?f2V7Ly zGu?y!CdJBRqp4QMv6(_Pv_zkoLL>7|GfQ-Fa?hC82Gp;~a_D0dXL^lZ-BH}erh+W< z==HYHwT6gH*%ggU)i}S_A{eFfhs#0T1fKy z4brk;Xz%F|bUZHal>*&hgNruaHsJF3-IFL!^1|X%Wz{fb6yt z{x9a4-F2UUyoB+Yy-8HxdcemgYEZBeN-P*0% z+RyJ+?ewRa>bX_Z-P6zQ=brOB_(A~cZye&33?4f#jzmVfa2=ZP$2QP9Ae*)SCcO1utYt%GuR`_-PAW?N1@6-bqN6Y19)~|5N zw*fo-jyCBsYj%Eu#qKGObfvdUFtV%|I^At-`=l7h-?6}O{zOD6DcL~GJ(?Nkg^Nau z`Lhm-@x{tgQU!%}o6WRseQN-1vv3MB8ZIsXtfq(<2}j+&Axpmh-8KB&i=Ax0=ksuz zD8?Wg=Xasd8wbV_PBxOdA%~^2bg$GjWN-fmQu_dx{j0XOb>7i7cgLRQw&JecZ{yqC zYx59uB(;<2135NyPx*|Ae_zr3onyj#F0OOEQzUAd=s%P*uJp;4C(w#CHPTecOP;q71Y^>*yL8%^vhRBkbk zTsrW#e;07K_4_rk7qLA^<{SAba9d~9&}al7vN~{Cb>YC$O@8K~^>fkg!ch~sLTR-l z`F3g|OazJ$1W%frpe6v|LztPv^i3!xZmDacax&L2T<|rC(6kSG`K*U>#>9HY@h1}o5bi1nohhm> zhda|d)-#7~U%&OxN357A?kr1h2y{t|&;8>aINdB&vj!iMvLqiIs4(0mKm|0VcMYm! z!3<)Ia&8+?75)e+F*M1PK9e9Z7~%Evov*l!ora}N7H(?ZDr^q1mcn1mYQ;MyX34Zv z%xcZRsGd^HfD5i1!M*8t8X_;)bnYeEdxgz{<4)l%g)dQr^k&FWEfV7iVe zCZGSeUGe{`_g&5#%`M1Os>fC+-OfH??Mt-f_WOlXEN?>%g4W3$r|1Ra(lXL(b0^&3 zN^EIkkDZe|sd)E~gUVc4;VG%CD2e{FQMbwCJb#OQifa!Oux5xc=Cn9P&RbwKk&df| zd+abmS6WkMP=Eexy*hIQjipwF**rdBZDYK2uAXu!IHB&yA&BGA=IHF=cF6W+J+@?DAeka?P6t8} z>VuY4eBl=J^xxB=)iC*PD;P2JbK#7l(h%gByxu>@LfMDB3T5qwWT$o-=AmiUs2K3; zRG24fK?fR3KH`)QZ`cxo-@dJ#SR|ri-~6-+yCq|sPY%y~TDOmO-qa#g6w?tUo4(P* zlpe3G`n@-HBmN)|&FTd0h%Qd>!^i^iiBoKhN~*s~1bD+`yaYm<$7RZhxE!AaDR^#C zDc+KQ?~{+cgquUmfxFI(+yGY^#q|Tn&-{N{+f`1kSF<# zj9l0J?F;WsWUBwk@SyMlUVBHXva@BM=el7TcE&?gY%o`KSBcDuPEz7-Z{Z2CO(LR; z2`^2G28D(okChP0l-EXle3FU@}>iK@j2VicBap`$dp z$Mei`VGQ)bqx+%jpKW^ocSb}GKN^0Rb2mxM1yQ6KVi$vT;`Rx32NLze39L@ZoKduT z@>S7<&Ot!S5uGKscC*6sVDFQfErcB=3+LhyGM*dun@wX#*^qf`m3^lPJr6pBoJ0Pw zkiJxL;PS^InkMK4F*Q9#cxvcS0=Mt*N5M%~RjkhlV-6?RU>|FnoeQHhh+&kDQYF3< zb>0sHL>?*J#9g~^qM8%*3gP%k?G9TD>)yrs%XKIe<(N`clB&UYP)R!KL!!9wCDS&? zZ5x3UI|yvaZo=z&q*Ao;W;OHsKxfB`R$yGD0j1&3sj7?C$m97!g7&;9J8 zTJUBk?|Ag$X65!$sgVj=&*l^o+kO#4(^rDJ|G1(g(ZnO4ug|QVK%>`P+>m58HxQ%2 zhYC5wauh3XY4R2D)N!^iLJed7`U{+k?Y?c`HeWI;j8%R5^J_ww#7u2K!t%@^#kW>{ zk|q>@8;)V*`%yb~KxfYH{yfd4)cSKFE^*1v2R#eV;KjeVZAyh)M14$cYK?pmw;H%P zQW{@3GNN(|HKG~CF#=J;LP}X>@*HQ zvlnbOnT1WEDZQ&5I$dUCmxoTe$`mw?-i2Of(lIh!?`YeLt+YDi&)a18J&z$;AO?Tt zMux6C_)~)7WJ(>$6|D`@H>O%4OE-MH{dvT)Gaj_*nH&}w8I}BAc3Gj{OGXoe;q#}X z={e{mG7bf4bpp|lbrd3-gqA+xCZ>#smjghTK6guErCvSJTOy-phdsUS-m@-4gSL;H zSF0@3YQd+C0lSKIrH>IN@MI zVpL{^>)N&kI5B-p{NNtp-x9ajqYgcV&!>^Vw@``LpSJNxWzan7QiOLqIbuR-KTw(P zj|Gs2{JX@YgooQesEZ8rJb}Z$TbfNRZU0u4qq;*9XHKu;&`aK$_hKa+ZY><1`X^v` z4pUj%4u~ay#F^E)kcpA7a9Xab&!?u7w2~>VitmYbcxoo(ku*rtyrdL8!gS_KdP|oW zLpz?9i>?Pt@bSvqsFt$ioa|q|%-o7U`@ysBXl|?&?>GW9zQ{0msPD!o)PIC)*eFg> zvJY)rJfttjRn=wUj8zyTdcGe*+}}4lAi))6lhVnz3r&r-c-u8ZXlt!(FjQFgki$a8 zZmehsqt(kvXmDE}v9~}JTd)&|-rp;&w{JGeW^OWAvu85}4I0}o{#x4@HbtK_<~c2T zAm_i2qXkx6s5?CnKf8!13_*l5rK)$g3ANNvTZX@|IE+~jl#HUdAQnZH$8K8Dws9Ifa9tG(NWB78-8Q~#L!(PE4qoW+U$;$=F$GgCSD zu}N`mQz3Cjl|LelWK{ayQvEjougKTq7U%M~SY}UM-Q}uOVA;QG|IB9{)^=Y1ocy}j z_2WXorDb9%F7k+u|2t`?bX7&V2D^cDQjvqxW-7cwuJwoD*FATn|-(a%ZhrL(#*oBC2ZnmQ#N0OsS@7ts-_RMr*ZJeoQDw z?ZMDzY;neNk)Zy+U&4`*k2pBMJ!+A{+CyDi{TPjSMg_fv;%Zwp^`&OqVn%s2T6r~4 zxl|Gul*x0~2S9-b{D!L|XZq2S@_!LbQ}O-zw#U0SU`>81$0vzBd;j2ocJu!LvoJiw ze}EL&$EJSy+8@`n-%t3L{{zGX{Hr$pHdFg;#r%8W|Ni;;-yG54LT~1aT$9#is_qAB zdjixaUug#jB^8XF8<^6fhtZq(Ecjvz| z`3!I`#Wo(eqbbhKK+`iDhmH zocy-Vj~@QE_TVSG^w)q+ada8IH}P^+gL0gf$9vSnyE3lD0A+O43`U(nJ{yx40cmo} za4N!0w4zm>PZGD4b@eHl4BjqlO_LgLN!`Y3D%2kK zn&mguQldjzW~<6uH4!VuHSKX+X5rs>txL&53qiW_1@qN}SL-dfEiCMM9M{xv>y8W$ z%Jto5TDIdN^zG^H?Z*!PKKc9^Je<@Gx?;UxaXKVyS0Bb^HziZlF0s2-T8yskQ7nc< z0>oJ|JsUKQS8~Zk1)C#2t3+2~uhX(dF65M;u2`9#LAUOz84)Q&49S&K!&=|E^etXI z)skANtSv54yX)8GD$IEXqh0LF-1w2kII9;k1;n#`&Dl@fso~7!3WK0WldFIUWI3wGel5iuflGJI-sdq+=GmDy6 z8?_g@mCcx*Kyfn1*%As(Xb%6vIiOb9yW}dnqaN-=6jH0 z6U}e6x6i5`74640TC=FOUj{5`9{Yr7(%2Rv5U(^oUmxDIflH$lo*fY+G?SpF^%%8& z{c5wY_89H)=wY9LOn9-+sBPWU-#ESzJEwrNN7|HG)o`(|*O9^+d?8z>QdCBTJ*X~6 zi@Et>l#QfdRqWvQs}8qQUSg6F#^>c+{v6BnU9GZUGuUc9oBnsb$LfxCHl{oWeYVB( zwoS6l=$d3{S$yLT?vfeiPYk7_lS0jl<*DtO`VC^AAhTGM$>w+rnZMb@aKmZR;8z>c z=0Ae0^Aat+INO%9A@IS9xlBo-xT0hRt9w&_9N5yE><53dv~kX#mfvhv2o}fR>bWP6 znnruG!o^>5Io&F7T2+T81@Gnw`pm}Wwy+are-FL{l6+)g5c$LQ$8F2==7?92A}XV| zTV=stWZT?(eDD7R99nYMv7Ah41G=3O_QWV&&GzS z>yeDwYsw&PQ1DinHr|>gBlm=;d0;l|r`ZPM>&vyS%@vPLulGtxKli zlDE<1%<+%RXhL&mnN`ieWYz|<|LUEi+ zZu&ngdR{|4tsKZ?C)5l6?YdtNn`9X1-+BGZPo2)K|&gb#*MS$(R zx?hLm#I%yk*$@M5H-ws(PT=n|K|_}R2734rW5%+{%fM!~A?_NX2q{KIs$K3cPGSlF zFmq;adYo(blQzA74GMDYVP?RgoDlFJ722$t7)_GGIL&wc829zcZVPuooGO*54UBfL zvGVFIiJcB(eevJJjk_}=6FzHdE21I2FopGemXYXxfJ$%MSAf6K3xevi^wsrD2KU8W z0Vf@AGEhTrIR$7UiaEI*%B>PX_=44@Uu2@yIs^BMg>zLRX->6^XGzVy*J90~sGee%`uc&aO`PLa;w*v%XCXjEnT zcjGCHtsJe!)GVAXv5vstTR*DzSmk0E$diApFKT2%O?D@o8*p5vcy01mI6S68A}~}? zf9Wz$;Z#kkbm}6ftvN!_P$_eQu3zrTZu|b7v0Y>_YPrf_c8>3#XR11#SSfs#h$=Hn z@_=RunB6j-Dw`bAWH<3Oeu+!Bry;rcKqxmE>6+Tl%g!+oOIu@v?RE&jG<4nZOAYXX z-iZR;a~}=%m^*VWW#Xy>^$i-^#Ma`O{TiAFs- z)#>elBm#GR?FqmW7>o`4Z7`kJ;lO&m-2qphhZ(?`L zYMBw580E~Ab@FKIv|ppH8_ymvq)P`E7R4gE#dcK^Zqv@5HLo<2Q9f8dhx;@_4EUK2 zmCQrq^i#MKf1$`J#t8tS^}ubQ{#*;6qd&{b!`eHeW2n=+i#k0Kr|vTp;`;@U^gyc) zJXXdeVh!ISRC67j#GdZv&`o|0cr3G#CDur_HGvS%89;l>z`N?C#8TkXI$o zLWQ;Lw6Qa9NQ(b@@!3-JU>x>>u*c!}^)j(F>N*1GBHl)RLl5VmsVOF3w>Sv-15*ze zp9<5@^qEGyuj!9W0anvr&UW|;6hypxL9L42sd+imt-T)Y zFxjQx!Nc(wPqk35qTtq*;i~5v{bI~Cq>VF&+HQ8T#zyB{==AfH?sMdEFBi}2zN@-t z)XkIk{Ykas!~U!JcQH?e=!3c?g$ZXC1`o|y+9R$I$FB}1o)KG0hpLbKDWC5L<*JQs>b z$pzt;P@m9kmB3TX#1qUMJM~aX3Et!5nZznL|A&{H_tvwo_j)}))c?1)2295B)lbM~ zdTF|YORF}#QiTfiJUWd7Wl%%eE++XFr|7ATqTSFU#X@AvJ^DQJHPMiI@m^?fPCPUM z`h94Gd=1(1m3XZb$@!CIPX6^J#n5-+AupfnNng0Z-+R@ytSS4B4QDDG`+R9cVPX5c zPw_Z0yUTT5Ws`IuZ{Nh#0hb+cADpqM)u?EGjsLTInIlQk!{~1lS2b(m+|a zOED(kB#wC~6Z`Y(Gj%|FK=6B-LG&(p_3pPKTQc_V4?KfpLW5nD%jWUUq}j}IMs2~r zh}@??_xyhHwTGhb>!Me>ui0;wuSGjsRJ-i2_wP?DkNG~I&aRdy{*_$K zeZiX*HQs(!5M-mh5d9||YzU*mmAzrje<6Lxd!CsS>Xq#@Is2Epcy2kf;TbSp%4WCK z^0joPrq{S~{D0G>^1m?_Q^+4t%U`);>$#1I$C_%P8QZntv;XEw{{BKRUPs%``cd<# z-EwMh&QrrEdKB-n(%puK$IfUP_%o)RZbW8?^P)k%%MhbY#A(xPPHx)UDx{#yZCubd zCMHcDtc$`7?-I#9Vd8=0d0=Uy$vi!h26VBZtc)ItO;3&oo2C?T6`9<76!TwGYeWWr zlRIRTH$E=va-wOmH&*&UM9(t$Gc@zCbR>YsZfThJ9<`HoeaE0f$4(uhL)PkRt(j6k z(Bkl*&RUqpZt$_}VLDl@;u0`5ib%bKno)vt-0nTl-KF3W>0B%sEtuQpl1nMvAIv&_ ztnu!6czDM%@{%l-V zEA~G`L_?*ns3;L*)Hq?2#GF8NA3&iT6SToBk&S5JC9Bv$0k-@HFocAP4e@=ULvS7u zM!_QcJ0kquM`>iF$m@<=F2$;`D}3AeP>N3@$-_*^Vw()Qi-5)Dz*PWcQ2JH>B#Z%#l^_={%&=$eHncZ z8uUSCJrfsz?S||#!l8|9Kr@lcR8vFm^8NHY>f}Z=&I#v09$*ro9-M&^>AZkMZ2cq@Q64xw{SNxw(DIZLa*X45OkYMt7m_l6K8(BG&Q}k?vJZjIvyUbpqE2#1rD_@`QF)6+5)4uH!90JI`1 zAeTVm2O%+qF{w|QTjT)h4VTMBZXO5b9)CyId*+ksXy zA=2&Cg7)BB5BHh7FXLY=YHgNm7ktc>-h~a*Rm#3!$jD2~ux*|V|7FLHu7{tRw_ufD zfga1{HAFktxF74bp^1;@YM$ZjADr1NrFReZ1=kF7^X4wKVK@CO~2+h><8oat&uh*Y9Aq9>h zYYPTRb#>M9DPq3j21+H&-ewH<#s!CRUI$tR9tifrmIgdIsK@G`XSM1@0s^CM7Pz#)!ssi2CMjWNL)B_G@QpNm2jXvDH|TPA`R zwP665tO9@ofWtm+gGGOj0~G8G~;SeEfPbFM(tBnDI&um zP=u$37gN&sR9duOIq$R{!j%ug<^6rffo6K9p;nFLrwcED`nBXXo*$(f*$2h)8qY*&0wIq|V61TW z@nm;qK%TqD`&5-j-We5jHx76Dt%xkbPd2m8tSnJL(c7-32mk-12p#vg!E_sQ@KJtV z97KR2+ywHzA#7NrKpP5*2RS&iDX?wc-`BpT1H#q5taAP~`?!2W55UaFg)tD?@vh0K zP941Vi@xmtp&*ysUY~v)-FE!qeP40#P2=6(|3ZVgG)@ogr%szomaAKoaNn64XyLZ2 zAD-AO$ZYDc{IEoWA+jQmKs_*JAI(~Uv=p2yqDDVmgQ6`UVuS__AW(uXzKVESGq(EJ z@A>=(01PCkw$K_k$&L(7upCWp?rv~%TlFDP#_(ihS5HG1A(|-&Wx#M2^siK^^7l!| zqGotNgdF@ZY`2sB#|7tG;Xo&{sL(*N1ZtO?1=Wj<{!tgzOR@;6ZCxugtH*L(Kok<( zPYWq%X19H~ztWouz^!^l&=L~jq#DCLT(asgd^W}myd*0APMLoOl(`ta!4%@HHiEZC$Es@t-2TB0IKAfUc?C z6!CJGE?S&$p@U4w6VbTPv_xO1`v$~=|7p! zQz_Xv!%#6T`!Nu?lyxurKvS*ziU+%+Z^rZ!FPimzFdojKZHq`ucA7LIEgkIYox`y! zqM-gA#iz7(v4$f{D~LX#MiuRU*pywa9$(M798mq;26W6s zZTV~5Q-ofL7h#~(LgAOT*^AG*1;Kdd^5&&j-eL9d?p3c0(@@3)DM?>{x1o8&_~+gF zl}*{vRsvdVPkh;Ns9ck((}kuQ!wXj_TW05dR{WK4)H)cUD){@(%c(h)2@M#p=`A3> zBrn^GA;_oi*Bw7c`UGB3yk?}4oN`|Bl7P#3 z=Y)iF;Jx1p4uwt2xg55o+^NYGaxFe1m?%D-iV$dri)H*yq}NR*xoYWw431-$;ATqT zOa4nHLKFUHp@|Sgu{5uyqVl(a=+!MnR;}W&DKQ!Fm&w13S5?xX4pe;(Dl&V8*9r#{bm`w`ezVDY>pccPqF3=>%oRA^pF8A)+D9m zO%A47_F^imjN;c@v8Uue{obJ^YHQphTqmUwgckkh}& z#yQB0)rD`n_DGEKOpRJT_ez4Nr6bB_BoNrfK_n`nh57po^{3FOJ zf4jIIr0@fk)po)~$*_H1ldq}q*~(Fwbwh`rDS(!xn_A|ce*zly13KR_4h%A;Oc;bC z%u83bCo^P{b8M$iCdOD+QynfXMf!>9z%ndp@@nlmESA(!S~lv{bC5|#hQ8Kri(OlL z!IUIa^=`sAlgrwoA! zx?*`Qbo2*;^6r8@XvRAmM4QsM5wHpk{{bkOZTM6SCoc#U`tCFGdoHytt8LX^a&?!3 z>+uXj#w#nNKjrmNi&n|o5)M_Tqm{etDRao2#x&4EuLOy?)&v;?fZDGuFrIf>Wk5C1 zPT5a-F)z1m|3GIG%J7!!ko-t8Ux$t778sZzhKL3aZwyDDfiO}FpF58gC6a#Xdj{eU z!$#5-M9G|gFzIKrAe{yBE-e6f-%=j*xHy(bY& z37%7&9Q?z}lb8}bZSuvzQVlp0>Q69QxHv=pgv0Le)>k5ma81EdB1$n0$hxPbsVH7b zY%ZP$k@H0UCi)#;f5ih(2!%%<&FQ64mXZ?V$H7uPZu6sLcLD%KpwZvXLlG9lct~;` zImh$xMjdCS{dvCDxQiYw0{Up?;MK4J9D$@z_yldF{dg~6$hAnw94t6h$_qJBjySxu z^hKsjy$&@wFSii_2M0qdVq+r!0s{k6ym$JjP7(TGyZ7CcbC=fky%PZ4-Jh@q0)-!r zp$ESH6wf`|wGb$tpqAJ~BHlwJjL>A+d%2Yz0r(<5XX=LUjfuDeZ_I$zwJ9nmPu`b5 zLuQ@H3@iwwc7>~&o~2LURs-zbp21_aX}PV7Y`GAgbN}R7KVp;)eyqwjk%1=$TS`m= zVaP{Ak*su&B(^kr90H=`_D>U_#ep6L6M_zArg~iUPY#*Z#Yco?dHox*JQ|r2AQ{inS$Y7mHuQ8$Tv)>CxpE z7nzVjEtI>%X}=|H@^YTj#@HnPDlV5{0B@PX^4t9NWDRWMi>>D!>hDFIC#G$_v@q|E zq&&7J-uit{M{~d#ULm9%iV!*?i$92jI8O>$I%dKv1EyE`py_T^wuiVDx)yecHvNB( zlj1T6KFN%G;*QTL*rhTgG*>a4ae%N`k(z;eko9slrv+dVa3{+v77zc>vqzPuyf zpbzTz1W-Y-3v~Y6MN6(J6*Mev5QH0i)Uy(4)0Z%8ljR7)t;)nTTc8k)qP8j1mOPrW zbUW;$wI|$>qjOKjnU~9TIIwq@u~a20F!?)zaJ?fX0Eg>5b7DeCovuxHJJ@YPe@bq_ zZ2x&hB@;f?*EH7Cc_I@jHRk4=JB9#eYO;tdhZz0H0WGCwWqD-LDWO$t7w3tqsc>4_ zWK^%TDp}Tq>hozLedvTH75Ev!(N8{|?A{joHz_xY2FT|K^#+F{3@Q_jcoz;i+UcCR z;3P)43Wbwt7MT-Cu1ZIJYpodD9)2WDF)ePFZjklX0?%#zX67^LK(aenJ97S{S=BwO zlaT>0rFe;@YH77ZZ36)zCLzsM{p<}B`wWt*j@P3``w%jgnRz0U`1?k!dgvfDw(=3B z#T>YZ*n!?zT3M0op){(VGm%^oNfcOsM$@V^K~-G6goYwjbj+c6&T}C6wpagVQh@8R zL^IL1(CiiZBxRP1MTXjX{ws+q9EFX;r z=kk+WOAYNUEfOc99tmevyksG#O!nNm{xHRa%E{aNQ7*oJ!cz;+TCPckGUL#f5QC3Z z+StE{45nEJ4WKEhqTUhvABIFD_l2<>wmh#L*qpVs+aMt-#@}tOidXcUwF%!C`!@4o zDogJ0eavS2xKd_0XK_}}=<^i*1#|n#MIwczJX*}E2)kkFnzbc<{}W%doZ@AB(wO+z zRv~4dT3C+&HPOQSj}vma0^xl;4Hjjn8koSLmGCT;oNij#-c;q6I>Zo-u}!N=dDAc9 zeYY2uPL++fzHIJEk8JZRg1LCR_i7FcZT-Q=hN*y?^tr78)sK-Wd75H5rQd2tE^Gb{y?E(+Y;7H%dfVDPooW-S?mFd|gwZ0f zL#h@wgj$9STv)@^)p&X6RrWSYij*pPMz2y`WSJNyR=e_P46F4cnp*m&_sHmfSgIKR zee(SvF9*0Ut6iF|uI*vcQpQy0b-#xmA3Bv4Tv*SP7;ua#tMC@sY|dTofCIkDJK-o)N9Bu4M8m zH9TD%puhCGWf2jrQLXfret99Sazr3Y)(b_RSdOdgOb?8V!WMF4{<(50O*i{fhZ^S? zT;F$irn%4nR=CP*OHO41Yeyo=<(gr3IJk`>!Xc_eMskz5EO_UdY2`S~B`Zh26nUM3 z3=BJlGfFNV;(*<1Mfj3>t7~%e*U?F=ScoBR`w(l&!sE&>w&#P=t6Thnc_PLm8VH0n zm4aqnf!>#j?l;JT|1`xZnZ!tC^&RwlAE&jIFQVJb*I-2 zch=R-G5j0-lbMtlyAm1aro?FwSO@mF=)1u4Kg$iFe8u!30YwFbAK+)4BhwerX2 zbTG?wQ%WVa1aGTlnU6W7uGwNH>S4lt!(xr?DLiyKwufDtsMl&CHB>RVv_?BZxVoYu zD5IqEbCL0Kqtqx0V$df?p-7+21N2?pU^6=JK^xPw8@xO&kH#)?tbrzkOD{~d8>{tI zG-~0c#=S7O^AFVg+%!>rLRo?5#vJ#4JmMNb@(6wA+eMEII&)%zGaTM0Wf}2Z_Z0-e zD9fro{yYR((1Vw#89(X|$Da?WBd;~?L40Ggny53zfAR1N=-?3O=$&+_T0JBHO= zQ3DRkDrWjB5xix2s&$7ydijyrk)l z$D}>Z!EK()fxw#(E1(PkH8<%cYHw4~%7`ueF*_Fr{B%aPH(`Qwq?B@iBL!Wd4+G_-R|W7B7RhB|UWgi1bp;$urSlH(KIY74Qf&RRAD zpw_VxakH-iEWXVf4L({K>1^h@mckiKP@L1ri<%xYD}gD)kR0OSzW%e;iGYMKk9V#n z{#Ztp>w|4GR#|&S2Q7}(qrh>DD2GFgMff`e8lWGAF=+j@RztBRd_SwES97^K>pG{VlU ze4bSa9i&_QKWayf%Lr~J7`#d{b=`8cPecO7emBa8IY-t~Z+`pY{7FhxD&Z^2+GelE zjr^`W8@c^IAW#V`}a5aEYcTbWl1XFse#1h1^REv;iFoiu4h`naq^3!Oc+DhrXm znp@HmdFj3}J#0ZN<1@_+!bMrG+hNF$n+wCtt_3JLk69y6L(NEGbyFCszOib~bdhX! zg5Ot6;~6EM=bLg%^@?qejBWm1N9^~Aj-*Pt0DX@$-{QtmFBNJYwfZyUAo1G^ z`R9(=&Sf+KMMGX!>Oxu7OL33+3hH%y{yO9}Kt>YC#vM<1zgAgItBn?<=qI~vh&Qdm za-^uJf%YAHm@04xFA!NLMGVkQ?VnGHF9irzMIZv83%!6bify^OVCy|If39|Q+OgDb zUYP>b$;2xD{nUws|Ec2MA@FRd>c%+U<$9QctEuRph?t6VJLUV{fhsnU{~v%{xP>B4 z?lZs*zWdKNJ%=>}!aY=Wq_2_&8&$2loeIUx zDu>5M>+60hfwivIL?1l*S|Y!uuqst@(#opkkwBNEhIa;k>Me|NB>CX_!{=oUB-8w^ z7NO1xS`R z#ZUj!D3zKiww9ngsVEth@+pH8IWzODi@2iLSYZ^Y2oHoZZ)o_nlG)4kqM1B~^G0&> zeaEUfhS&oP=d|9!X6j#4pHidmi7F%*i?2&0E%z}HVy37ULmTVgfJ^s2C1WWFuMKLQ z|3Xz%x1y@^b|^)@?;v*8v^a6k$9;Hz$5XDdcH|g4%>URokCl#XoF&Ef%qXzd`Lpy~ z=d$g6%s4Jqi*jSS0dCn6H)D0y<38lC*CQq($t@(EaKsA6r?C5uw8-U#V9x&Z{`i z_Crn?$I>Q8g-vb2Roe!qp<8dvu`Ai3_;~`X1IjM=90L3z_!6n^{(BUph=oP6eno^u zVEvYQ_1+qJ(nf=zb^e_TM82&Qs@d%{~>?{EVi1Jk6IH7iKvrRQIS~Q;Qc2Mla5o}ohtX|wVYrZfd2TF=}cvvG1HluNiI9Hy-zUX z7+J}5MS=g1KSi8`Y$y(TZdBTM%xL+rPYHg`;IDo|(#qTd0J+V-Xq1F6GOFV!>9yl3 zrmocupO+axC)55N-z&n5f_WBzxp6uowA&M?TM_W^aP2HjWP!KvAKJjBGa}iMr89EZ zMvUXaJ~#fP)g5C(IOHm;|1_m+u)t3VwbgeKx{G=%aW$8Q7fq9mj#hJ~=?G-pzAI{%%Y3sTkku>DSYzVGsY8%>Hv;W@eF{3vqBdp7v zceqA$x^^&wcE~*{oE9e|&WFAN3eHUUwAp4KS_Wb$v(Ow61FL4l?RaPWt-xadxjtUq zpU-u$K2}O>*M^C(->~YFsBzXDI6r((>Ju1S;;W{D)PCD9(uLlcWkoiy)aQVQp>N{r zmhx-`p~A6u&dc1=$@u22>WPmo1)3JzSdDE!f111{q(uz7Ff6Bx5z`*zEQXD2i*1f0 zl?}5ko$-`O6|>Q%VXkT$tXu;wg_9S}O#QNPdG|?s{}zr}26jqBhfDF~hD@#|TvGIO z@-}Z&T8_QGM6usFO*wtls`ibRcU(+{(a-Su*%Dw)cWZ27SGz5V# z1$o#!Yl3LLt`e8M%g%VCY?PP{8MzoUeXJ6Hrc`pMT5%4nxiR+6i_H1*X2Zk6aw4cW z^DSSGjcU}N>Qw^aX(WEb^Y}NSuPyh!S~-)>crxPOT3H}g*tVaqV0fb8SYl`xIz2JxJsMD0i@JTjjwXte zoSKdpd0el&DodhXnz1i!Sc`f;4p};q#4-|p*}ZQySUsTAH_C+Z#Baof2feZA>=`F$ z_7&c^v>LzXnt52Rz#%0RmEz+fDm;923PQC6e0<@4Z*-)<1mDDCLuXl(i zHFX0v@cGvkE@+x=_yHIX!5m!QX6^AXjoUTCwv&Sr-_?udA*hv3kjWU^;FH7?dGnmC zt!#BO(V^auCf~oZZ!H9NZ1O1{UrpHKfVol4EODC!?<$}Fq6+Ayke9Glf6N`bBzb9qaXFi`yvOQ8jVX64?#&ylW7|q#uTC9K{XzY|x`_pDYcLiwD-l5y*xP zehhM38~O`IGN#1MM3l1ONi^ZfwTh#a4^B$O0IBre&eeHFYH6AGIHD-^Iu?TV70tCa z+}O^}+b})W<82w1RO{7yZ1j%SXc$()4a}2O4j59@Ep{hDiK=2s?a4YH!J;7a4@3;tMz;`s6OtzFZyl!DpR(X)Ous{#&X2!W zuaWKjcwXh1yw;=n+N|Ypa2=m55Bl92b*KMt3auOuWGtUY@WV*|29o98KyYTEy2xGs zcTOg`sfv zFA@iJ*+q$>0(YoK2}RpkxS;;Cp@eQw{We?XK+-RR3`H?$LCgg!4NQOewcl;)emef2 zQd6tk!vSRYw+=UR5nQO5XMbv5qQ9!lFv`pKf3WwKv2h09zuy{SW@cuLnH@81jBCai z*34_hn3>khF*7qWGc#k%u^l^cY$x^aUa7bL+g7U7_C=-cNTYqRnth(#XU>^9bI$j( zrX+-DlN_7d!<*&AuvvYw6gq|efdZ-xV!`Kqi%XgU;0XiaYQ%9JFO1yq>F~;f-IwFd zy-zxx&Wphlj1>$G=^?Efwr-r5(;+>ROUiZZ9hU*d8hB=Q;XfF%h7QS03615%6cv%u z=1{7HNc}1(g?Yg7NaK|u4Bz>^R)w1L#m0L)_S@42HM^TCO|ZGTA5ZFAN89Yzg zLf6a>!;}h7<}kXnO}7JN*Zo?5yHH4%3zcm=6?j!sXfPikzoWprQ_xFc@*Dk5fy9bq zINwn{KyvnR5HYy{3LU2uBz*xSkdc9-1+YX~I{yxr(#W>tKYkATu}1ef`IGc-4u@p( z^%r|x15A}0R2L!^O6TWqBH%w}gve`=Td~lCs>c>W=ZufG^Q!d3#|+@D(Xo*+Smiah z$Cs9S68)Rq(DDM&!M3xdJ8rbwW_Ns#PxwkXFK#X(U6m%eEgIY|Ttas(z1Vr238|xN zLX6x=I5?i^%~AC6D@)z59^eWJDJmlUyo_2XN0yWzL@R zSheDblAub2zW`e!J=>8EFiR>juYF;;w!s(f>~kGS=K!wmt2)~CWi6BNJ4c$}R>*Mz zD?0T>lLprt>CI0&)cU99XlT#amnDwjwA+6ZrMuxFP4jcpCPgk87iEyd1+@#pSzv)5 z7R8(YoOKv*PGt<)iho$lE=uYDo&53SqWA7B-$n1zQ8$rI5B8-X*}je# z__+nh18x~ajiiu4KRZBOrkOWIfCbEO4Cw0uo(`6s>IyTxG+bc&{aNtQ90gM%Uwi}s zk{as##7Eu`5!E3nxsZNMJSwG(z1eP#GZs+{o|%pi@)b6A_D3HE)!rq$v{99;E(gn? zs?8G9g0t*)6ZZ^`O?|#1MR;w?#z+} zH^~FLOmOMP(je>V>U`^C+gH*n;uwx+IjZ#tLHl@MpZ0e3U$NpOZUJXO*7YyIkzlI` zaHuUY{(w25?0uN++ogHC*D-Os4H&!=4n51UF!>O&o0N+&455Ju5|*UZy{p~<0FXrA z*T>(|TB>xdJc;E!dU;7b8|>RK=WX2CbXchqe$29@#Q<{+6NWyzKl7)H5J)D4L=mUZ zpH}59u|00a(Syy&(h)X|{nr#;daKf~e+^=MIKi~Tbk34bYRK4I@GPs%| zSV0OMM%ilD!hAYSucPcxKbxXgXx}giN?>(cOTeR1Oa)>+RmaQPdO zyZ`Hu-fvfvedu_(t;o)_y|Y#*z-MLimR8m?)`&5-SKF}@guU?4mQ7czai*xiYt+Tq z$l4OHJ&X}jYxGBoeI9FFNQx%}8Bv1F{Sz_6}Cb-6UiE1MR6^}i5@{fuvVyH;J+xpC!?RJIC=Qgb<%_qLx z>#Q!w%7TM4T=XQ8firFeqlK-B>xEwh3GQO|>%)Zi&AWEkJ-}G#SO)MZm+6T!KS}~# z0x@y*nwA^(Cm?FgC(04tk#XyQkGIeD91h#`PJb&Hmp!{(PN-BZFX1T^sxy%pHnO_G zl#Uc!Fk#r{6-3~0oRGuHphk^B7TzKl98JswNGhm?+>1P%AAk%3<^y@-tww!R_Q5h^ZwkGne6djIZd!K6)h!KozI7z_>OZB3i9pjL5cTHLJjmqwXWkTJ3$Jm7GsbR3(l*B3PhyBb#t;ek4W} zV=PRxjUmGE^f{$sDU5T+R(+5H3>KQB!ZBdW6~`m4r9^Rt$5R|3CGM{AjxC|}CP?&~ zZM!O1j}10Y%h zIMA`ctioj6!6U6D&PQ@Hy_-tTFv;dwzrj`~JVm1!eY4z|>%pnM^o`vabUuB$qVs7^ zo_2X55)TgJ98>3QQ>FOkw zb!tmVirQfrMQC4m_a*D^F01P-$4{!!jz#y;3-LJ_0LBI7Q<*h1*p zX{?FN%R?Trnz+;*?i>D~IZ^4k)yIEOFvVr55{y13UJKaha^LQ6NTVxc2cKqlpXD^W=Scd`vnXQI zK$7^E;T9Q`#(?9{HUGzLSCL1GJ*3*M;l1HcHXDwlL&B)whPK9mE3J}(Bz12&7$(`+ z*w3#_Eyy}3OQ&Xd^(cr4WG@eXI2ck{xvt99d z@q3su!AbDp_v*QETgiTf-);@+2*HT`c2&-*9R_#foWo3wR)a~wt=qZ+N{;)X$|RUn zz-u;}(%4ks9!+LrQ@_+?J&>x3_^~i9ex+yxqgAS(^8-45d&W7}GIj^qcce9A!=CKl z0a{zX%^h(utvK;N5%f&dN9ES<`_3-3p+d=rCU~AnW(499E+ffiMuifz)R48{jRUCu4!!MDzv9=mk&HOgggRciKfo)0-p@vQIF54=X z4au*v*z}pq?5x$!@gfbm7ap40>DHrMIotONA~A`ME0vI$Gd3*es!SQ0P38PvJ8OeW zskBr&2ING^PXK;Ek~=hi)sCXjd}z$$!rsYS(7=_UHfs$xfsxTbkM+Bdhz{tHG}X*3 z)t1h-#|Eo0F5iJ02Wxj3ypd%Qf{>tuo(^%f=Omf2l~@i2DB!pSD`5s?{fyT3yMyyQ zNcGJ6HuWMlAp-phg*ZBR+jN@e6v);|gP4DA1?t)Jm#{QV=Wx<9(&Afy5QHhXUc!{T zHkfHeyiTS~I9kOLywWtos3jDlGPy`2w_N(D;f&bTQgRtzZGrq4L&Mao;p}`(pjB;_*9;dd`)h<#cTCCm(f0a33%_L*s7APL zg_#`dB*Mqx2|c5Cd!KW+N+6h6^D@ru;TLT=>|(6>3AF8LO=WB4OnLtUI6Mf>?21iu zWvbL61G|-F4Zn5Kx5Cngd>{-lsus$((bkQ)(X>_6`CftZ{aT;p_$2c*?FR~z8Z+R^ zN+r2Ek$=sIk90#Pz@+duPE)x>Y-SXX$EDSc>!WC>-{-bp%kMV5dFp2hUb3x_z4n-r zej2b0#>|-Op1HL_)Z)=jvs81q9T7ywqLhZU22&iVQMqA+*vWAWhA0ZTO)*A^Wh~X1g78C7T zKVOv#gN~P zWlH&yuNUAdEseyQoiiPuno&-!7m`Vq(d?w8kQG6d4{=Jsoru?3&T4mwYO(c}U>ub! ziIAmYucdD0CFAbie*l(_Mhx~J)KzM?X_Mkd0zs+Qi!G>LM{I^I2n5ww0s;+Asv4wW zaj&8V^4Km(qt;fv161biuqpUYNdTgHIu_7`g<=x2x+H)&i2H5@V(@llggO zoWg(N@?{*L;fwKaJNfJ+0uPt9eIO zn~T#DA>C^I2_qF0ny1X;-s!yEpp7ua7rTlNQg8OYkb2CS%u<9@g&wwR%0ZBNS zTSg9w+j}Rh{}9bXHO9{PWk@wVmsQoqnEu5oIQfU9+uO*M!4-O%rb9c7N^@2WT}{i5 z;2nKAwhgGpmNr;ILD=nk7&wWA{c4|u2uEhAa>I0u8u7Z0d7E5`c*(W39tNRUBZ5W( zQG!u5V9|WnTi%e`d9M^Xd;Rp;8O^8l=$O3!ci=Y&(Q9-+12(I<+PA0_nC!3jAu_ddiNb=Em}xV*+uBfRVTq=N@Iyj;pRqry7Apn+%K2Bk z*N!fwlK7HS{)ud^qPJ#UmqC*O15t5QkA)boF)M(2CywiY;EEl5vyD-+^g4a1$;LQ2 zXsCxns{S3!JV5V47gVvd*SAwA99}Ex+W8g534=sszfpXYb1QI8By!d(?<>L4J0>S% zw7_Uc>&0}MWBW5(HJEu9IQ+t9UW5uykMU}b6DwgrASL@pfPbqF??Z_>9UQZ8%4id* z+uYeM*g52bt@1Q9_E0HMXQ08Rs9oNYsKCEobsOLwDV-!?NLFxQbl)7qnZ z$1hW=O>CY4(}3D0AU&o}v*JSK=}`G`!swjnu;-(` zS@rFf2dvJf_7DBZ$B^*?0O0WY6l5fXxB`Koz#j}BgF1n*Vhl$?LAIU!Ocd~kOs39so15@EAozD<4O$wY+>0+m_GvqQ6hR5dWgnRZ{Lr%rYZ0CH% zcRl7HmP4oAf}#?Z5HXY({mGH3c1k{T;LvByI0B;$a=$7V9_*_*@)-J@sdX~CH>7hD zz0^E?u?c;SP@PnZEk^<8bhT6_m~mVZCL9#7YR)4pSnHnK>5*^gcFC7i+pfu8;9#x+ zzwSwiU7>gC#PC}h#E_MV6ytM`5N{MM(jr%e0Jl1G>isN5^$mv*IEKh~E|&26}PHz>i=F!J|p;AODg3IY~o35cMaY zLOKXTy0^9h_bH<7*f!v)qw_8NbPt1NEF$~~LSV8rZ)U&4m2plig1;7H6W&5gm-6Q{ zqG6bpkmEoH-EjScl-IrqwoTY(jROAL$D#rWI4!!SN0rcTGud1oume zRlJ~={$Mln%W3bpi?l*CCYg9kq2#`?GthZ*%syNi=bF*9_*8aVS!d_^@oiJKL1e+$ z&ktGs?xm&FX0^;*S|Kc36DzsJE>3pV#kMTuOedN3%2@^FrkJhyk?JZ-@aTT#x^P=0 zaxFaNlFQ7ZPgI%W@_Kas5BODr{{Y_Wpt}8?_PF>y7wgab#}11U7M)cPDY(hW=JxwT z-dJzu)7k#&5)FEB3kef8JmzItD*XORL}S-#T#tz`CJW+JL{4csSVo)G0#uL$0GGrc zdV6;DQn}LLc!oLYB{}b*vf)c*Ir(&V(&W}9J%Gg`E$RNbwLia+0P^X+SDP3)T<)1| zX13w;GJ{}>5=nzn$}Y3F$^_Lwuq03I?osW7!~rN+DX=yl!~DBDUmpdDNaBy=^{usM z?a#c9onP6Gd%7kL4O2lH*xH(9s}{G&Ym}QQRiAm2C4WYLT%30#9_$DRAm`QN%WZ-C z_FdL1f`dY)wM8lrk)@SndNd*}%b_>C&aI>|F{H3rjMn@9{OH({!qY`-1K(0EDQybU z>O3)jt2>kR`<8EEzk=i7n6y2X4M}GqTsZ%+YB`SUKCp|5ykp*)2`Sa|`;^s3RX30v zv|I#+Y=7b#r`W}2>h-`)%wS(YMxSF^?y&JM<ILe$m$_=3nTdS?In8{xG0AbT6#d zmR!W7W%JKYO{oaPDH1Bio=>m|SuJ2s#`+z!#Y3>`db;{9sNqX8>o}4s_e=OxV)P0si!{C^s;58Q8<%Ld$$z36q6s)jX7?q#Pda$#P z!8Vmhc}s4kB*EmCl@0-GJ`-5&P=@XParRg-ys>=iR1(PJziW%`Me?MKwdNxg;~1Sy zCrc*kFc(VmYAQXv8)Q|eS=6pgQeGfoCrfN&iEq%8+Vmg9Dp!Zk>5|OIjr^T_U1HjY z?!Rh(L1>rVydM9{5<>B5I2)Q*V0@|fnPLDvT))JjNZj%So`Gfy|D{2G%cLqkizUad z6&Q^(Lm7pohd!@ehC*mp5@5Bl93O zsD1C#c9p7cg_owRUMZ0qy zt~VA^pNvnSK-yJ;{HolcM|{_VIHPxEdvRtM+(n-GXfJ=UeO2kXu))S= zd83Tmeg(>5h-0DwyuWKs2UCcTkZ2afW|@hV!(zyG*hNj;-ey>!{eH9P9+`s z98=KI^^;CMsZLCsytVF`oo~R8K2Mv#vGpV~PL?x+>-+8;^a$q;t;uNKyx5kJR%eSj zMJ;HWJy)H!(s4Ae5K?-x&Z3^f$D!qOP->|W2veimsm@5Xla}Ls3Q@|>_NG(NWHSup zF$mfXi`Xq!W$Ti5D-Gq&?tAiur!H4Kb?vwhv)}8G0R76nG8Ym>n`6uQoOLZ#tZ2z9 zQ5sZ+ldh3l{FOW5!{Dpv9=I<0gSydaT}a{!5$;WGEWilqpMB{v!{ zdisX*Z*`|)6De%Y)Sk}jK{tDv6?kkJ&B?fLrZ6nna8TuFkU1Jo@$DC4syJ%yJ~TPP z69viyoAD*Wh$MGE-||hvFvvyJjirrEO}21a8Pl}`_1k)LJ8nybe}wOO&iG|d&t4I= zAlz%C8Kjohs8q)Q2L}|Rm2@l^x*|s~Dw0IP?N-gF-$KSu{L=1s4c?(G-5`Q<04G(h zO0b#97|*;W3oX~$1uK)KhtBE*1OF6=!)i)1e08XyaQ$iB zV#VWVgHnklU9O^hbF^jRP$|rH6DQ1N@oeO~m=a3|1~VO!;v=GU|pqoOFyy^zc8wMwX3qj(K#m9SDln-@e`6z_NCrpu168+K&Ysoo1wb`otq)QvAQ^e#8B*JNN1Y)jm-f#do@ltK7f`SJpIdWw z9%Y+M3+Y79g69YXEVj6yA2m?K2mA=U|oWQ%ZSC&z^!PQB%Kdtl)Fs86 z9wVy(+O&QFT5R)G197l6Vl7Ff+p27GAD4k_@RdP9YelnI5~s12MwWKgSE zhBCUeg|DDqi>kFPff~V?u}1Az-=e7@j;h@!nOQZk<2NMmXteZTFx}+ z!2L0n$u?!&z)}}Y^h7qeD3e@jnR22nW&m-#m1}9&t#-w63!*o)v|b>YLYt;Nakz!u?X8`A~ZCauAdH_>bh>H^|a_`2LO*!mmH`G5U17sb-$R8YB2dfRSoe; z%!-K_hs_(}}z~+oQ&S&V5_ZxnY18Dv38~fv=^JQLN03H!2j0qK1uyjtmDf zap$ez8v0A<9sGi`>Pe+rcqbw-f$iZEf23^P6pVs}ku`TnGAYv-|A1r`WgwXOEJ=My zJF2Y7DRIbgjZ8;R@4_t?EFVkhZ;a)Aeph|)2lF4`GUD&gzK6{6o=<=6-ab9C^z0=J zJ(PWa7r3gWd|CVln6=D%SH`G0f{*abNMSegD^Nxzd;_!h5ICtvD*42vP=l`X>86k2j& zNT&cHWQFux7#aYgQszL35iFSZ7XWKjOV7~lf3>6j==#C|Cru2>t8Ukqq56E1@Y97= zLe7=eZL-{WLc%dD`Bk&|6QJ85X;6@Js%jx!m(8Of{a5zSw? zY8q=k+~-8(pcO?i^ASuWC6LAF7)wJqEHqi&XQhaF7!ZfK` z>WqCZg#6Jj4FbK-ETxhyg2_-Dd)!zLlLd2LF?Yx#qh+ zsMN#(|4gX3uZi9&y>R7U**#H26A+_>zvMb3HOA~>rT%~|%u%i*fUU|%T#sz&7(?`I zr3Q_livfi+k4Gg-TE1Cv{dgBaX2Nb~5N#2E^E`H6t-DoUJN!hlW@HfuAP1D6S1$fn ziOog??vZzxvjK_P9Xael(oI5EpWkeST)pp03NbCDQzo|S%`h2Y z5*_vp4NUnLH}2R6>=WU4*m`uFLm07`sOO*PoBJoYnXa#yF?CjK%87Sm$ICV)2Za!N zDWAf>+Jf=vW<~2yOZLPp=ar7xLK2sy>PmQ@Q(=sS0WutzNF)g^B?kH(Emr!fv92$#=LRkH_Ltpg*je9{uCkCH z(|I?(KRkx3FA&W#vVKlNosP;&helU^mQrouSzo@4-K}B2_bFV6VLUtzw>TH=Se|RPR(_LW4_b|$_uv8ER?%*=$ob`x*L{LY7F^t*teZ?LP+mb+2>m`x zixuKwpRXswuuaq&8fQvQGF(AKBF{}d0&7`-P93yk>+xf%>|68YTt2Mr&?Zy_lls1d zPyc@`4gUABT6JC}cXK{<5K*zymMfrHWXcE^ zng&rRbw3c20WUGar35g`KuqM40RTk<1Ci`FRSY2aCz_E&VIO=0ZvO85_`U21 zd3sw3FyGcmZagmTreGUuLyO^o`QmS%67gWo;uL#+0fPf47U8$WL>;yf`zA6-#;L+5ISYWTbM^c0lBZ zc^4VDcd04gM-pE%W?d1DH-F!AO^UtPPfUTfq5X{cj60gzV^b$JuF5>smDa`5OqFHK zxJrSHLeu6jKu}`7dCn+TG$L7#Z`LIVhWF|;w+s&v&ZVpITzeZ*okGH0_?DSxhm zk8q`sat)$=Nv6O@XDXUo9-mIT(qX&nVwGICUn_6O(GdT%FsDhaZEu&H(Pc#SYEFUi za$>|4mYC<%4@_y=%&XtaN13OigF(&8i^C6LGJoKGhIIZ&DBJ*BgoDV&(y3{Uqri^~0s=yOV_gX@pT55%M*q?3|}Tr5>U24G0P2JjgfX_cn@r&VwZiD99BqB}!a6=K)&&1l4b8-}!yZ>8h1Rbmo%z4?uT(G2^(%&);HT7k=tMY8PqB zj+FesO~AgL1{CTpu7cp5QqiR z$3mk`gcLM_(8wuEh!p!1$6y)gXl$`YV9DOab)!%u)np3ogRiX3ByhO{w4xhPCP+z6 zZUKKH?p^{n7vC1-V!iU zw|esF-E}(q;L&AhD_iO3v3`R_HaGa>P75gXnlm;e0Z~8S2|i;!THZ9>UYm3! z;gE8^_@fO9^v6y41+s)zX5H7K37{jqa5Tcc*RgOQV$i>)7er# zz%bT8Q!S@&h?(4CGmU5vB{cT|hj6n|?1`u{c#!w)_mNKBe`eF7?L})As1=vw+KKlh zRxHzXN2)$JqX@P!%oBRO*f>p{F;-{lX6by#WlB}aGCR}f43MEY96y){Jw7g2RjKwg zM(-rOJm~iGjFW=`*ZLyLoMEo0s0RYk)Q?4whzb!f%O%{Qzu|6i->ty^Q9GJj!T~^B z@y3|FF_b`VFkO*9R8E;-Qt+0JziN|_Mv^(xn~?AO{d~Ue3zO*?OW(CiE5oo-a-Dx2 zPM!-evWKYXWkNELYO5>&Gx83OyF~OND{vG3`0%yERCWQ z(>}dOE1StK-S`+B{s#);2^1ZsHZ3-hl?o=HWbE-=V#u$R?>JUvvptxyTJ}o~OOPM+ zxHt>$r4_yP8~w)lKHI1Hvr2g|S|EBGgmicxD$eWUyj zC!jUSs{8@bFy_ktDsJuo^zpfe+pAA}3k8hs%a;`+78i;l1>Wt&^GQkU9b46IEml%d z(NGkUMVMj;Vb(1r)a3z0E)J1!JfgDlspiy$y>Og>#pR{GYE~p; zE{i4lfbb%{;W;)J23yC4Q;72NFBp$%WEv2B-bmt=EwugvKuR5h-i{~0Z2JP<`~W@) zj=Q~`jMoFP4JT`^@9Zi+AS>#Ugbd6P9$o{T{ruB-_ts^e78fQn(^bsXI)a&*=;}N+>x%=7)E}VXxRCE{4e_H*XG$trTc}8&uj?V1- zLU<)r-O4f0>x5Y|hK(oB4ZdGemMbiHk~AjjjmNAqGo$WA+I*sJk2&h}jJuz_`xA1`2ZnopTu9B}Zw>03=SyC63RE55!O4p9JzO{)y+Vy>N z-Kwi|P$fIEjrnZekty8t(v$YH@gdH1LaTV?V5jU8t0*!@)k$(hOoJ#ZgBjRN#Y9VD zL$pk-0$2bmV^gp^K{stfV#m12m8dkv#CXW+@!%BBzr&VoJSEcbZc*U|GsZ^oZy5%r9G)|HwL6`z|d|31JO&=tQ3zeI6m1n3SQfe)z2 zI2tER$t3raPR+10;^l7;{GyA#SnR_lnX7*?cyqf%6L6@cSKBM@og6$aS~mAo$lD%# zxtFqLt7M#rWBSlUfJRxJWhLzB-@Y*T1}TLQ1>XioVoYQY3pwo$(8=u}oz;n9a+qAI zhg=4Y2bCGwnThK83F`i~vfTEKG>0_hG{&6~Qzt5m{%sC3lKWg`UB5bmmo2x1bK;yS zg*3bDKFJ_6h0lk5&V?eNze_)ocgGE_UzDe!a}t@|z34rmZU*vl^W`-PJ*(u2w#JBA ztc0kEhI#T;UabsHz=3KTMPnb6^kUgW=!Q|OAUKX{;025#e;nLdLk!mha(Yf0G12e_ zPN$8b>o5MpVHHU9OpHuh(!zGMwVlzs&T|-F?i__I0!?M*{yYvBASGzh%OGda_+hF# z0E@n&3!@?~2;OXTlEjKbGUH{Zgh{xrwIvKYoK6L7GbujH&x)~(3EQ?APSfm&T8qyw zvYP;Cdev$dTr?5Cv=45WW7_;|JGb@}K2C!5?LL;upP-dKsoSUth{~XDlB4t;xn6hC zuZbQdcZ+SkaAl(MET9Vu^C{p#P>SPQ&T(yy;Y)V2+I(AdA<235X+^l#u-{~6TabvY zX16u_E5;W`!l64UUmQG>22lN3R>B;K!Z_QRBOQ0O6c`JdCs+l{wzH5RN2)W!zr3v+ zc5|+C2t+<5_Rch{IaE86Ima04?+hLq%2_L-S8AY~AYUGdSTP?A#MsO-m~dlUoV&+B zgB4e_+rLv0kB`gI0ld<=?djOYI~}{T5R}!d*C*kexVYigECrby&BmHVUe#OIY$Cdd zlTyi&kXE(k=2lkS&c#O({>Jzb4#t@)-%(m$>6*2wie`%n(wDH$Z%HaBrr^g;QYF>+ zn;-;gqil|j8#+3X9ixVz1ur(Ss%N-1H2HRjKB)b`zVX)Ers$~>0_rUq zn%uxQ%0i_HHHucgas_{(lOmgg8lK6hOkm{RQh_36ikuQP zpXBXCB`=&1?~8CSjfvRc6#ly-)-$q>v!?!d{iA{YU~Mis%Ml9*%^(vLDw!*{lB4(A zXf?|(U9sgxstPs7%5)_)F28UhIWz?xq1 zMWW-Y9kAEyFR0O`JyXXF!m7^yVCxFt4Vk__$3I7Y!>V5vi*SBhBi!T}UN0p`&uGzz zL&SC~#-VTDRd_Us;}=0^AA8YhoOAT*GVcO1f*Pn9xk#xwR_Z_VDm6HBlx_8aC7j18 z8&WMpWHW0~+TiG^s7#okwCOFwf{Tl55gM_L8(uZkYPqIBz{!tbbEC-3Zqx{0+>u)m z%`X5m)|*K(18LqOeyL*5Fntz0jSM^d_QhS&jLKYk9;0#Js&cIwV0mRK6QV`1DZ^jE z3OaV939giS0cWjULDtZvcXlEoL4R`S9t$h1wM*JgshQ`E0jWLy--AKe9VBfH1~lCK zMPV2bIODzOfEYj4!7;)wxOY7zB|BXzLRO*aq`;KGU9eCd?5ss>zRLc21z%woWUKq> z7$OrdShG&OPcb$yJsX?S$+^v^S1pop8qS!~A5)9UQJjQ=B~h4xCE?R4GrHy*dk6ez z&ljt5xZtf>YG9xy$>J?Zm20&k5{L1g=jsL5NG2Wsy9lSB-G$WBK3jI{>34xU)|N+H zx)gVEs{eOl@Wh&mMl8e~Lz?hdBwQrfZ&UG&-}@DA>?&C^j=YYdKEH4rAHq-pde4O+ zw}5#sL{dZ8!yE~F%;F5I3{e5(i#fy+UEZ9OJ`UY|L*Wc@Nv|(+A-GLh3L}Q5p((sA z)D|VK$_?2Oi3DN}^ED$#aN)qjCr@_R_BFJECcGevt9MaOzu2rGwmU}%tCjRg#uX-# zDbX}551JMSGqb5olNq1pvo z=LL%^^76-c1Og!Hgd#0V5^i-ON~Fkd8|~^zmF*6gxqj`q-&&@A%xS+crL+&a#;P=-M6}{c0Y7i>C+UIYNJ<~B4*m~q-h*?iLJ>LZLzj>si`y4zO*Y~ zDgkvf4Gx#1ZNnm(lBmfjMY5SFoN|XXE<9;ZrZfW+lX1$IF~{SR7mI+B4Dz>fXAUeT zb-f=9SOO{Otet3MiXlVS<^voyuvnj}Q|CLV*JsWodF4O_9@vif2_ ztGOY{v;!NK_>g~q<5QpG-A?V6)^Z0_sz?Oh6K;<#Ow`hU?4+`F$S z$M|lx8)3HUoJaUxF98>FV)#i8Tx6|6o;*4Y4VL*at+6$H6HHO3T(v2L_SuSX7R!1v zvsd6=7miKlkwi@tNoMHFL}mi{ML{!qa`S`eThocYJLW;{z%1un*UB!2rhm&Tyurz) z04f)~q=<^<_J@&?ip|({^G^HN83#i5N3{>JxtZR0MQM(e_jYW%*qG@HovZt4pzy!T zkYF4tYsEmn{5*HVsPl&^JF8uiX13h6ikb6UIG2Vkz0DX_gJ^a+dzO2G?U0n~YaLjj zxFRim238@n1qr{2x8!mgP!&!L(K&JoOZR6cvNyig9Z4=b!hKLsZBOOKg~0gJWS4P~UsWHEj{5AjfGM}-%?gkm zl*J6`jJ8H?66qu!tRiPv@svzLYtK@22`t7?~a%%5JB1-Q7Lwiq=aY%T4u5s3onxsf?09| z?mNVk%bDgv6iq2NcmPuFub_gxehiK9dEAVsz06DUfSwgnk==nV@Swn-U=ii*BmcR> zsu6Y(4c~Y5i}NR7XeL96snK$cGp16?yHemFmyk@@tD#h7W1?dvySBB*Et&n*>cwz( zofwVz)L4GCR>;SMQNOaw+r^@XMN_6oBt+_dz&-U|{A&clQL+C%EDaeZT=hx{9Z}TN zn_E_daOW%H0VuAX6TQUK1vo_-GPO}y(;8P|lBi6Uo>{|&pXq#RvBV=}paFKHJRzRqsrd()de-BcWvD0$*(Psv#R!a(_2XZyr)oEPs7Aw-(t^KI`=1Ho& zVZ=zhd~Z3~R`m*sKY{Sdan~RE@{6SAAGfzHaq%qLJ8*H`TbNt~w4P5>Q%4pd$?CUx zGg2gPls2*?@fp-`EQ7RMxKLzAybwGQaznYOPDP7{Jp*SO%e6+_#K`hHiVcN=aY z!?7C;e_Y==>8z9ScGO*X%wP*~qKolb{N&E7WsXs~=&p^*vIA=LIccO%^$%X9xp;Y? zD}g`Z!h)aeev0q>$-sF-_Lnp9)NTDfRIm1{@dIc!8)~AlDa>XaJjBQ3f#6)X9@<08^|M4)C>0sIx0e90D^SQvVG#u67G z+D&Dr1BR30Bfapf88P3dZ6ReZB3NZH_zU%C?Lt%JO6K=OyTlkTpm%f9F0XQEW%kqj z0;lUSOXia5KKF$>V#u%x zxgJ4f9PgqW|7~E~<0>yNFOAyM^jLOdHgxS-9q^?+R6jkm^vng{XU5)+qS&6SW}xbv zC}P<9La~aN@VdsHgd2hyIyfH)t4XJPR3h`fmUF0MTHCuRN6}%x$Z5{)`Q}|MA1+FL z>(Pg+w};-{lvrfLFR1$&eCSP3M@FFAp|Czl<5}6AY~6NqKw!H$MDWBX&%Vp1qh6{t z0hBjZSFGIrLXa_wf0+b0n=%5&VKOJg0o1lHPbedd-5Z&`cpb{Jffc3SdkF-2Jgoh5m zzmqE%jyy;V0FpR)^||7ea~uf~?V5M&rUr#2db@F3UDx#xq1}r{#YW=T$|bICc9;Ja z?cNB1l{=rHyX$hT&wLM4f=topk&o#;saF8VEBS{AUjw%bj^H~hm}tZoM|y1>|}>v^^3a)f<4O8WA=_A(MmLJ=gY z(P}38K$6pq;$lv+B7bG}*9!_lR7!G2?DuPp@|flGtAQZMuV>rJlH0!B_Lbr1jHuow z`AcQk$adZnGzXZQ5nRB#iI0|mqe(B2Y%HtFwRc>RnqE*Qp2tf$Db#;ISc?x5hD6OFffwf)7#?q_P5M&Q0T zVQ+U-lcC+}ITe#xDF=0nHDX9iB`3-7QcI^MWSFWaD2d_|XzC&3*(~pit6O=tB6gUA zxt?AV0PC$x;uEHwd7ld1{{RQgw^D93`<3f$J|R!>PVS%W%P%_0m}GX)ON&^%VIMw& zNho67ZpS@AP@O9}i{&KYik!nVCJ-Ve5+v~xV&4}K@-uysKqIKvnc7c1GzOv|BoYRr zZ*H9H&vhpAa>llJTh2PQ*l5=(ZD*%x#xXfY+{`Cr@y*I=cJ^;a-G1Qm=Q6m*FAd8F$Dw>n-BtVlH@f zJ!-Yg$XF~B4x3sWGC|aow4(0cJ#d>wjoX5*7Ewc@fm1k`pddPHBIl&MmF$&}2SK17 zJ4Btf6)4mXAzCZ3Zw?sk%Huqrx-G$HD)!ele}^BX2WraGaSm*Ac58Fg2;r48A61ZD ztBKiPA!feTx-ML~Z1Mbh4522@vgkI>y~G8m0M2CtmN`UDhh22nYOP&czwqD280&74 zd(GK~;}hLR*@Eud8eX5sQ)Ov+0~uW;dIBK}J$Yn6pC(F~%Op;jSnLp6Sqn5q)71F-&;!s;N!QPS6aZ8ZQyT`D{s5G+)O2Y*Nt$J z*yd)#UaXeP;S}o8IY!cuw^F+LLGsB&EcQv2ZKD}NJw*b@k~McOZ1k+&khBcRMCBZW zZP(5T@ZPP+o}Ux=*Xj37$O~T)*aS=ol~gvziV;v!OcDV(Y`GmZK%f8u1TdG5k>EN& zq0#_QDQ?4ERm)*+8O;ZzNsdv=tzKJ3NsV;oci4}edEyZe5FSK81f$d2lYJloCCIRHUhTkYc94XL<_=5+a)_MTD8GtqgmEU+vZ*RpEDf>wILTQUPzj5MoIe8$;Xh0wq3!XB@#)Xszkss zS-Sy5I%ET^=t$=g|-%vm$+`Sksu_&Y@BhnCbB~4cl*^U@VE4jZ)mM za*)7y#aR0b$C)ZFg)5L&MqP|t}B@2RXN_2+J&Q} zgSSzQe)c3Vk`Nm+p)tj4L2d5KVOua& zTR_7e3nWVnIJQo^EjXDQuHlTJ9qUuRP_A6{relVu54gB>?5kd26e1Fkbl1b%)CG zknnWbb@J^$wQM2cRa(FAjscXrWT-B&q@+G1v)(K5rjVMT*RQEKm1^o$iJLxP;mbKW zMTq6P%LGYRY~m3;3NezW1kOTEgnTsA@3&3rs}Z+J>#nt=yJPUzTXfjVbZ``$ha(%k zowKbp{e7%UR$CypLafxJ)P}W|p=mtXS95cPm1iRzAqFr9NUu|iMIMx8%JH^xu{3}e zvJaM;8Q0D}5xA(*)5`%tP?CHn@rj=S(@Oa6ejP|*ErP{w197<)Qx;@gw_$S)w#~e& zO)I;0M2U=5k)7ue(vC z{{V;=CAS+AwM@u@29SJbm2L-uuH12^M#@9q?sB>ouon7b0?<2n!LKa zq)6CQHU~;fo ztckK@b^mvQN0pwM5}5K;Hc}&LquLuSq&YBi<;&X+>R?S$9Qn z=d7ntG}c!aPd=nNprM*Fgn)g9Hs$f!D<`^WAQGPq$UBfV<@tGo#0cqN!V&?;i(>CrgLpR7g)AOY>=DL z-*)F)?K=TqX53ft6kK&8R`-*#d#0{eYUV~F3O~&>Y)My1blA8U`HyNsHQbZaMn;^D zi>SG~bUT%m5Hu%1L>bUb?HcRPQ@u-(Jw7M#tSgi@9gVG9nZQ^xVY`xq-Gm*Ft(}6%v31f%TZ7U4;i@{y@>qdi_b0vzOV;Pv7b2(|P#UmqN zra@gyqKGLk7zS_-NYUingJLmy>C75sX(Gli2{?6*`gHixv}L%xfa0=6O$3P)SthM3Oo!8XTHq-eFrR72Z^C4AmO^MAe%Fa zo>pa%WHMdEK?w~QS?DKO@%elX^c#;quAebd(~x%OfG}5pzWAm#&A6sJlf(H(I^bFQ z?V(Dux{a>B{ud@=8sybt>0Xi&J7+M+skM03KyHFg<75c22vIS>+VJzrxC?znL>)8< z*vL9)KQ3J6$ey1+XF893OW|XHX&ZgTdyDZE-WyG-#BL3k&ETwORG~`bT$f^~s@%qF zakE9SO;xLqW-;5iNT@`}HTgB%V(U#deC&{ip63`1+!m9vLVi=B@YHR;#{TUYCN=Xq zYaMG(JV16KHL>f~KT0zrS2Io#&QzjgybGDD2`trx>X>DbO>lJ{AgU45kpliWCK@L7 z%6?RYQ;-?AxnO;5LhCk#5Pnm6vF> z3j~5u=#>U(J)E18lzN*)!FM8?a=BdPM55($l_HfhEN~5AVNSb~yDB9qD||~yH4kG0;m}@-Ps&9MUTwJ&(47gRoEjPHw57X4gh9rR^p6@mH@D;t7HBXeBgW5 z$R#nPblXoKJ$cfj!)SXOZ@Nvr?}s<3kd>#cv)oFE8iC24V^wPDP2piLl)M4rT$I5de~53rgmyg)Z{hLEhGNg8>H z8kyAXA3B#JdVEjgT7#MPn~&GsE;rle$uoOx-9+Y8Dv4w3ENxasmm=Q7X_AqQHAc}B zEUJzorr`ce2?9Ch}h^n34_kI*;|T}1`d&@Jv96Lc~mti3HUbb&4xyg z+1-o8p0eA2638@*ZI2^yl;hk)&m%}igVvbc<@gj9#+Fsb3=(*&<_`tZsS!%)T{uEG zHU9vu6r{>jN32HEw)r5MHRNpQWS8 zF>WqOKrJ{Fo}($$4Mv>&C#4$;E@f1a13)8F;{)f`vs(Ti*&VltsCas;@zHIHX6D$f zJ5R|b6B@eV(hm^6e3oYkq*e=5U8iSJvaZtd*`z57sH#;>tCMs+9H^)j=sbL2bsaf% ztBOc?B*+;_BUteH_{?*xH@vJJPTNlBb0!3${!zlv?{X@$JHfhBEOiD;J1lCUNb zDalI_0>#b@j7OM9s*%B%9c1`S{$Fo}2K@bi( znp*Z0Blv} z0NvF2cTVcbc)RR^WHbFbO9)RH9lXZ9ORB?Qh?RH?C3SsWc&oO}8^I9=kCQG_v)Rq?G=3xdj zgE@3ML4Zeu>Q2>hZ7Bq#LGwR+{naZ*@JQM;R!e8Ii$94aYBPVY;gD54V$&MQJjINz zFQQL17eRM*2Z7Z!BG^zW0C#L=eVxKC%U4xL3|c+IYY}x!IO2@Lpcse%#1YR)Cr`Sp zuRnR465X&STF7`;BuA1i_l&KRH0w(gkLEW|r5TBn z;RBpT-+gMf=C-$lt9hRju+qyNLdv*u z-6zRBJ2=9N2k4yaN}5D==Q$SuG!(Pzb>G?}dE9&?3XdYXd`II_bf<%c&2jb4x3$dq z;zw1Y?}pgYExLH#xsK*6c($Eyoo=%5l>0_NI*rqmsP zwK$}xf=K|8DmpDSeltwngVtEMl=!6oNuQ=@9A<|TEQtX z8gk#Rqh4IaXN%{Be%W$<6wG-u!?$`0?xyLtNF{A~YZO>9l;r})Ax>rrB_VCczbPWk zX{hFEAfoED7Ow-!00YXRqRpGB3NZz^u#~8Y@bc@^UkbP~q?u8X8tuQc$Ht(zc={qy zkr>qbvH$7R6B0lc5G`Cbq_onjsuYn3L+vL0C(06{{Z}#{;dB1xl%XJ+4tA1Ja3I)8}08n&*Ck^ zuOztR2)P`yMN=A;u@p$?I&hQ+&MBn;$bv5hO_08ZF%&ou7ZUbN!KHAL;%Af(4gCJ2 zl}wNh@BlSi%Rn0FNCbJ1I!8a1T%eFN9@+fsDA_ipisW%-K)Yd#=1h@d z#B5WO$Pi1{9KtjCJuf)24=e7Sf@?0-6E=3EXD2JRu99qI{hkecL64tGRF;;JYvaeu=zdDnJoR2hFTAHz8i#o+K5pt8qM08h0YUt@0 zz>&X7{jY)9HB!D!l>~^V*h;-X6HDyiWg)d4)e89v57z9cN zIK^-V9^Lr>5%ehf4~c*2N;`j_{L$H%AN}s*-yi+D&$touuB-jx_&5ImPI2%3eY5`n z=XG_(+T9$_48$H;flxV$A~Gxhr6_W4zJ5skNEAb-kmNuL1IdKKH-G6$JAR4%P1%?} z96OKl{{Z~3_zg!oulvSuXa1aHzxw@Y{{YVa0IBkig3-2IXu<|@<6Fzv2k~)IaxLA@ zs?m6dPUBcPc#J`WjpNKmGYcX}*!2P5ApOH)f=h{o6+VFd7k^Ez)_Y*>lZU%L;`}Ru zo58Wm9DT*yV3<}ZVSjCLge1UElwI6gyvosWc+IlHlHH>U3IXitP+S6tDLJHLtWk9^!5E++R|}IS&`f)Gf5!cRL|FDJhWJWaTEJXL_e)7I4snsjxg~ zpo=m!C^`kbtIbcz#JNFfZDmr3UTncoe#uNk0sKdKn!U4_kVlkgHJ$h85%=v{#lB6% z(Kgim?Q0s@*<=ZsXChjY`6#z+(ljX(KwQ{n;Yj7X=12pBs>O>{Tp+B1$*ig$r89I1 zJWogQOCcDtfaQM3lMkS6cknplE z+EE}A-Em&v46NfuJ9l~4+cq!B^FiS-!+nN$@)cFoK| z0jeBQln_s>ObrKw{{W8ORD^(JY$Tmy@}632xZDc!onr9=%WW)@?IF^~{{SMIRzQ{U zd0d%Q;*mh{QpTC`sacXpTp6e%=A4P5Q>Z5~Qy>Tdc3r|_RVqXRK^pZVLL*L`{Hq(h zCSxx8Oy~~U&a=yIlQq8^QqHp3x`y^@z)03t8r=K1iL@b7U9%&mZin#lEZaDE@yle^ zV6j@56n3GE?UTg_Vy2-}ByJ%f6lzjXNu3EkBu271a*ry#3X+xn@GuX7)O3!Y4bGEG zyM#V}VEwRXw*Z=x)+&>lEv@&W@^W>RR6(1y`3|L4<&?5(E_DoZ53}$>l*Z#cAIhOCAd#ko_55oLeu(yb z{*+^1?s|9ps??s0*Y&;s0F_fY=srJAy-Fj-2;Bw?hRA|fE7 zi4pvivsY&T5E3MBWdZ3B6@Hf?YOPZTDIoZn`q$y_rgPAIe;SZWertDP+x*U8!A_zl z9x#jvhV17UI&ul69ba3R1zk~HVy z3>hEbVy`Ooa}SR%15uD)5&ZTB0W>}~5`ci10>3y>5a+l7zI2ZQA=n3jANcL8;?dN^D8zE)djUym2 zr82MD9J+}sxM;aHFHx6WlIMjWEbevsBAdx1+prYHzfq3tf>V@Bz{=&i5``%_q-(tC z&pJs)fC*$A99ka<7P75B%A7Yk_1P(?G zi1lKqRfR;~wJ{7p0|BgMl&vL7o!~)@x1BoGRH6(BtM6xd^DAd|munsQrA{`lTr()x z_Yjd%5yy2bs%kxu^PN7Kkw{RDj|Qh)g-tO7NFZ@nq^2m^^Js1onJPU@$FL56;Y6sa zWC$NWf4|IDnAto>GYWPY#OqO5{MF>;q!WWX=sBgHsS=x|NWoW1r(|xK+$z+mD5#MH zi`HQRkf0oDblV~ZY||R*H}`#YJJq?*LGk>nc5v2m%Qro{UvnkFm07Hmdm9t#b4bXU z7K~PH0UV*l)RInS9j@s&5=p9&3WDuJ$ZjH2h^hu84mO0ilqO*Ptz`aR<5vX|l1yna z?Dp1${)qN`{*+^1?s|9ps@6xNHT`dY5>) zPvuePJqO3}sffn;4!4x)ke7O+!aIqYYE?jha*Kuz$@CsZzD%MbgXS&(=r~CH2pFJp zbtH7oY$c?jMJI9fK2;zxC+Joa-M(kG;M{D+-A!)@=26X&j6#Xdvvl>CHFDYFsu-y> ze;lYR20)!B6~v$dU=j}?AtNoN#Sp28{>4cn<;5^{s@_kDXR!muyOk7a7mrxB6PQwLSQ%FW zM8w>XiY~PHol}8$11M6Y1|CcalaK(&^k)A6t?&G*%4{lZ6q{C^?mR|WMR@2|q8 zN~3SB-s{nps+7Aq$QgFza>@H8K}5_`2h&Ajc2%>s=juh zNeToJ)K%cfp0#pnm0E>=7!Up@kN!(v{Oq-`u>Sy+{{Yp0_v$w}dw%MLeQYW^X-a8I zpnz~agX{NxU#s2u!&Fv@CVV1w^Nv+iz%oSXUY6{*b0Ke+z?)~WTUmyY%GX_;W(>I- zoUs)p6HQ*w8_eYOf-cP;QHwK)OAs-PutI`GjA;4$sOg7`#iZdVdD1e_AzjVdopB{d zQdEGM)ToiKL$TMH*j7h)l?QwOKp`rXK&A#ira|TW!G00v{<|2 z5v|(fi$+$u-g)DyjFFqz;n|1^cAt)|+n)QMUC&^=8w~R#=A37}C|t2OiRz{KQy@R0$ks8d7E`eG zcAj*+!VZ>>vX!zd8m#g1l^Yv&C^>Y%s4uB?&gTCh<-EDgiP?mus-n_*rOdRY9d;g>a?5WsPyX@Y<(sRkwn9WoylzzpgQ)jF9_k%Z;JJ zZ4+Rud-+TN+E(foBq=J+XP6y7K2sXh!$1c>DjWBLqTiq);U19=ptn~oZp`LPMCqny z2xfe?*y^fN0YDZ+&XY)>uTMu&fk7Y?;u+vI=^gP&DG3Q6A6RMaiH@SH?E35V(xh7` z^4bm~s zXq;EZa(Lc$dP3(D5QV&p`vUg$&m_)}rBM}4Bl4PoFq1bGlmbC`-+tWT`4ZZ~^Q$q^ zBbk|=q!=0z;~5172_Wu4I&HU~Nagp`A#X~FBb7W~HxY}XXGX0rk$2&3p~hIn6Rub} zD~4!Z6^zKDlI<5zBAiLJkttAi(PJu-BuT<&5ixcaA+%xHmXo0Z2H-*Y_-mw^#}FI@ z@=W||?(tpNc1ze6aiU`^rJO$g^7hPN&i5Z@QM}}PnAq2LYb*#s`!$AodE%u(+yjT? zQIhGm@?WaiLP($YFBPoQI)VNmS^rG6r*7>(CE>2Xfz_$>4 zw5dcV)d?CE54Frx_vS`~vPEV?(BjgnPWJkvF7&8t)zv?+=pDW*~;a-xq2l&Q5R zB;+{PqVOG~DdEtuYRX**K?O(v&QM}PPP5E-Z_nlL(kqBBo$ZH+BH&^+tzFzY7F|-b zR3rq)tC$oXsnm3>_Sn;x40b8Jhiwk3PZ`7HH_Y84VNJtl4RJZuMRZju(=ilDeuaP& zIG^;gbd*db19{gOqW=E?itzRYyCgSnZnC_myY9oTdZGr35PkE!$I=~uU$t%64;r}U zA!N<xllyKv$Q)18M zG!arsPL966lfhAY)?|bd6g<<32thD=Hoz@eGLmY#X&gC?T!80n=<{z%%EV7Bk_kDs7c zXs#;u$~~psnY7~+#wCqjE-ACx>MT8|&*TYY_7^HQS|Ovz=M3jus^!x_1^DsX40)VC zhA|8*;ot)2v-Rc-7`x zHf{4EYH7e$08mIis0BQ{YYs)*pe{ZwsL0n`G?9&u2hb|WN1Thde=l6buNcS)7C=sd z$)zUM(=$0iMG##!Boxkm{A`@Exv=cfDN`zToo$a80BSUWYqu_4yTgU z8vHn-iY5gNWK$p<-2^89LXRR)Fqk#yya-=&hwNH%(%B0HES00y)MzIx=mhfi8K0NG zNUT!#80}AplKvv<*tG?QmfOn8wh*O|TZKUcm1U4bz&o1wHf4(PMqA4-D>%O;KE;+K zYO@lHSfky_wp7ur*NY;|0Z4bumoToY=4Aqcq$$0G!`7#kQY$YVU)Zr`+OO;!x@ET+ zN}9Gxa}}v@g#eR}ApK5&o)uyG!LP;!e8TYeQ@j>PK=M zB&i?-&ppV}F!pM$SSmSZA=Rx`CGECI3sj_B-Hph)GV>A*R}|d7QAg%g+QwZ#6Zx)H zRZ|BXslXJa+;H9@>2?jJi*s(kK+1=bGY()vbkon-GHcKKN5XEfE+x8W7QFQ9w7Q_T zm|B+EP*$WBN)FG_I21dZh6;sJ7Vyr&Rc24H;nN`irF<28`>UXI_#c6c~7`jt94^a#abh3t>s-qm8+)G z@or=nPvpi@&{C1|FB!NiGCbAUtGRX5EE#c9k_aQ!B!T|`TS4KZ(=KmTVtM>(Exao> z>9{-Q^Y&?&X!tKLT(MOncz6}Xza!N#)w0J&t)o@SRJrRJ=It=iPhld>2?TVeB@%q~ zx~yZ@Y~jfhD};deUtFZ5ry{4Wk+F|_)UBkWcsfVGj-EBJelp<8F zVyI-$A&jYtPP34`YH~aWQHvTI2(-9TMyqv70CdVU_ehO)(|VAo4d>zb*6HJe86Ud5 z&8IMO2coE;7)(Qf`ZjHkRuMRm<|#UoQ5AYs5CaiTks-_qBoHVq%r)^Iu~Gn?NIA#& zoqd!GNzx3Rj+}w{)&<-Zo;SynZP{85zXJ(R-+scac^+z&it9r4t$#3J2Q~t+7&_ZI z7q1X?Wr$+}$|&B-Ra~cJjf+LXG0|BKx=_`#W!nS?-XUl@grNG`5@3Y@J%UX8jo)8h zRekN7Htrce1dYBj*;Wq5JB7?UVas_UtGLWPcE*Thi$sDO-<^haBq?M_{2ujqY1oR3dfJr)$sPhEtN{ufNZNm7YWF44S zAh%JqdLG;M-!GZs)UTl#hgxAv430;Ng0U=#(WppFg_Q;iMj7#5&A6Ys)Z!Vn<#x;K`YUL{R)To_6gvgzN15Kw`8dX-X zrt(1tueZkBHxct7neP5Sbgd-$@5zq>;vXsVPR7bN;T;M1)A<2Y5r4OWG0)URKTWV0zP)_=3x8vbaDH2HrB+OT&ZI|Qg9`XDQ_c^s) zzY)EoaM;6h5jpl_6|;O+w%fir`2xC;erz#R$Qr=2QrBdiv5#mE96Fkdi-Bs@S=qQI zPxO~)4BfD&0-Oa3CL#dMwWi+}74!VcpH{9|B~INr~%w zhQ^iE-DKK?tr}`-PC41H58A}jtgYDD9>x;AT9OwMsYe3%6+phVO`RO1-D~d z#gCi2uw(i}96f5GQ+}9gqTJqS_4wxeKt)(-?i}@v-F>ipuw`SeuR)wj> z>6suvBup99fJoGCJ{A49@rjQgXDz;a_*9KkVyrWmer!+~fx*P(O&rK9m5$a1$!7D808Sz^Va2N*+PmolbfPZaEMsfJSdd z9*uCI3Ql1IpV^W?n9#ly>C*_!>Ok1CG z)#SwxPz~ge4ugUuDGAEAmY|3bNK=Vnw6`MB^?vwCi6>%o*P-XEN5ZQ0R1$YPbkI-A zwffl?8Drajk6b;8=~+R__@UzHX}L8NDGb65-r*$U-@YR1l+DuyOk5ek94+QHD7Q=m zN<%2JX42{p*-;U&BcHe3tVWYc-5kA6-4@(;k&X75un!E)yE5B@h-_Fbw=rbE3EtS* ztB)EolD1s0*~H5X9BQyjCpHcmP94Rm!mJy~!myB8{CibNDhedbOy~$Y>LhYAfAAkVKIbLCHtQpJ* zCIF3QM}YZNs!3EwjYU`7_o%72&Ac>>VKR$t4{*j*PUiX#vJ{YSVZLS7a zC*+;2?*`3j%Xq??$^6yy&@+tk5Jk$x)1%7ja>k!VMuL2pF<_`J-a2gT{iSGEDFv*S zS$8|FsX}MfgPX(8uZF;YVoL6JI+~g_K1|eswaaT$n zcCbK4PO$1#SeZ2=U8N-<66Hi*L^*a?*;cG2%CvG;GY(xk;sHt)rDX(a0W+^HK0K;5 zs2w?j?B`x%boN?v~ngahp4Ly_zq^<%0CZE7Mw zNsu}6tEr1Iq+?v)#DDJdF_Kv1GcTiKqjOaARnC*>P zxhYS`>DEa(S8B4&V(u~#E|WLuuFbr5r@Ogqq$mR=T5BRB-_Yq& zsU=Ynr0?vlYWtsEvhFsYowHs_wqQKVS;x2Ck>y5oo5c1px z#!W3?V1mx!l8$oaNhC-rH7bQVVttk{w5d&GNe9%|$a5Zk8}inyQVbnN$FEN+^V61g z`7GdP2s|(+g;<8XmbhF&}1? z_SN8;mGt~YYC)59Qw9$oG(YJfa@w|1LYi$!DFb*u0Ej&VYpiZ&Y2BWqv~c*gAO zaogzMUe>Q2msn=q_MB;ITayY*KqMVZkYZF|4dz8M9;4&B$xzMOrnuMN&(UaI0?Fm(bv=l8E}MUKtSaXPn`UZkKb0QzyVAd z5Ii*JHRpHuejj)6<6E^R66hyY05s(jyzU6)ru6^?N+fBl`~Huedl~RzeUI~>hg5u? zZF)zr9v7Rfo!ul-Z{4>*W9p1?J;Lc;g^v(2WeE4VIaygZi9S^{of#Q2nLsNr1M+Y8 zsd-3Ag5fC#SOn?k8iSxFD=i90(ltEip3~I%N8eW_{{XLbc%KTL!|#@s@s)1N;p@UD zPNeUoYqsDID!<$9`ugy#1N)zivhFs!ymlFWe*>nTtKsAvEZd34ipyik76?Fo^jdqnFUeii5=#gA=S`*K@( z@T$t&dc)ZpIZ)wtDUN9Kv)GcKJ&==uvsY{N!pkt5X;ot={xLSnqPhbh>9TRc<+G-s z@7i0ck#%-Z!{;(d1$?>aK=afRPS81xgBBndQQ!3FhABoNhoXAqKkZ|@EH~I{8#L}g07S7Ffrc6TC5qR+C zO$G@{ODI^NeC0$@Nk=KBWlD9C1K?kzzS7`;GMvEkOluqK9#U#l?mWlNrW((mJaA|` zpPt6J{{X{-21r{W?-K24`98I^MB3718o7{mFxJ-jv*k#ddlpj>t0?LGw8Z>c#Zc}V z%aS@o#$&BryHGjHcRcP%cv|aWfW+8M|ubnf$V5kd*RLZt3&*Im8?&!oUq-q{C1x z!OoRT7$!B#ymTT)o*br&%($4-$MO|m{m+iucMlul1A+65mI}-f*kVG3nv{>r53#+$ zt~!34t|z<0MwyMpXmUV0GwE}ZEwV_yI?6vcvUy;*88D^&${Z<5P`Qx`(gxc3OwTdX zNvO&U9Y)8m;ZXg$9lPi3FMG1gW-KF?aZEkCAzX&5FOhNOvYQuV1g9K6IKfCy#W8Cx z1!m#9p%x0R0D|eM$dp7wI@Qkd+_IoTj)0gWQSb35!=9CDJy@Pox3|itcf|8;`R8<7 zC-8*H8*ao`{PR$#?G`eHYmme>iCl)}w`q=npfq)xht4X+OKMJ~IIM_-O*C>GkieU+}iZIUiu&C%YxH z?)HT>gqh`5w-1^OG8WNHM)Lz{6HqBbkGLMo`F-iI?m1cC- zK5gPraLQELbO26hkYwqhF&`s5s>L9c6C>(B#&w$AZKil~Zvz{6;n*^5;~ib7xNjHd zJguCpIpRV+`wUw#j-NfT*&`B*y{=UtC4O@hgtyoX zw#a40IHg8#l#nzaOqm+;=f2`P;5l(~CW6MUzpCa}>pAG7sSzo1uAjz-aOdLY2JQoJy1k2@*jhZVYMl zyj7z@D-}X*b31LL?sqq+ws@e}F?_C1+-4WI)+v_uib2|0*W)sFB&{hcEn1KSB_NQM zm5Y8>2}!e#a`lr$AEec0Z=+p0z49M$DUhTMPpmmkyLd-AJL%3`7>RwkQt`#??l5Xu`u&eGeMUAW5=OT23NdGsmAEzBF;$zC+b}b9 zAH}(GHoRdJXrr8d;j-`TQl&U|IuQ^6j$p>}J~~vPV4^kpK6L^9E184D4<|%zZJzmX zO(y`w##FDf7%HJxrLf2HWU9+b*CS`kKTjmwgxy@t-`C@a!V<$30{tWmWyr+HstTKR zWZNiIwvv)l2W^D(`~LVC>PZrG)c!RN;yeI|`Ui2=%B(tqI)hom0Bzej?pETxKLcXh zc2u*&Mw-hl2~dt1ISA+mQVrOBqB2WSI3L}kp;sa$NDwCw? z1fII@uAVw{sTpkb9M8x{-(Hfw=vQg`lD13juPoNEwf1WpVeOh!W3q+GgfZ5Iqra`F z^=Zbl>lIHmnz5*q%DMqW#UTsNQ1V`M_9r6FgvlVru_vF$lt!~xt+G90QwBMo!@|6x z>!AtIE<_O#%yX=8sU$|z@G(>#cpg1?9zNf8gh(T(in_fGc#6MqxK9Xw3$4XhidjY& zVJoiLa#@*)&aGm}8rCee=F%-nQ=PI-BdWjvvw=kCT1Fidl2GzZ%56Jq^h?#1q^vAJ z$r?{tjl5#31NevfU)`^(!3M1}m-gG@;kVivC{1OotF-1ReufX@kBFCO_wWk$4$&ax~D%ESmOUm8NSlU(U9zIHC^-fU+v(b@mAIORjuHUmr zlK#%&!yr+iNa0K+x-M>7^;8nj1m=MxMu~}zuw$1)S5`jRc4zSz#d|`;_|n_qxfj2k zm))f2Zg`1|<~DPY*RL4Ul2KD(3q4CEsY+YmbMnbqCv2}ZnQr5iBUA>87@C&prrv!o zBoGpq6B(ol5xnizdBh5R-(OzJ&)L%&?F(R@HJ%?A`h|8QZ&gcmdWn9`7=7%*k}%i; z*>{bdt+gYGUz8k{HGw51({lNjw0w~c(S!NMNVAW0ien=wdHZr#BuCjJQ>U;KshINe z$E}Cl=5_Iv#XG~j)Nua5@NQFtkjZkETs4_#+gl~R9&)EQKBTn<#WR^1yN`g2v9^so zLKb;R`G|F5C7VdRQNq!rZ6@mxhMQ0+?$iib`(7t`JA=H$o|;stFq!E;LcFzay8WH9 zX700%vvUxTmCWqs;4yhR7Pf;FAfqhR*m$b??4wB<`b~k#iV=wmrP@fnNk>OHeB&5` zI_YhjOKl_#NdsR9>$#KGbOTzkO9#~e_1D@fQ#COX2ibOTNtYKnQiEutr0O0z%MTqdFu_YK zRC+IC;T4!_w1f7>S)(+FtCf~b1dOOhohq?hB|zp#f;OGDC#S&FiUf$$+sZxuUR5wT zFT-PbHXj{zG9)fCxeg<-ZZ;2b5u1RDX5r2*ZHv=>*4Vnoz7b{M*-5Zq)zxT~hjIv5 z92o|tWfZhywolwZh1;UdcI68zR>~tufdK12I*%dhK0k#+XN$%~r{!M~-QeBmPot%( zvKd`?xY>xM2()af^*Zz&K4M9Oq)ehNnn+E+$T%akj%41Lpyd%dM(Ygg4)L_YjLZQ7 zM0;SJwcALjO28y*rMN#=6Vqkzm0k$*q&(dAHv%|snrYN{{S7o9gbydJk^$$RkCAe*=eL)>`b{~tcPLq zAeITbX-znT#gGeid&)vh14u(CkUMe#qr6KicQO#5;5rgP(3vs5>{5o;KKKr?_FUX1-<5u8G%*9#R=8H-D(Q$Wpu(Gp z83A_9Cd`@w(1$v#TdsF}+CrUdr5YK~ojJ(oIvEG9<3psGlhQqcw-&0^%ZwBVW z0PG_Q=Ui27nvS;NEWugY>e*>K4R!J?6oQqpWXMI7L5+qf!oFM6&bf?qiYya)*o(#> zc@kkX$jqrpnbe;>NcoO>?O5doPQXvY-B#a+=HhoXY~5#y&N0tbOfy*V7s{A!qBLw{ zV`~PkII~-^Z9V*JYJ0}5Cnsz2iY*l@Uv(`QSME-^Q;|ENDsfK?mF}=Jq>r-$P)@Vs zvHFOh4kzrW0XpyP3fh@IVpXp}?k+kO+afh%#rd z)QZPi!lnTe8^U6lWhGLbV&=f) zfjo0JhDFN+&nB=Yx(W(x!DIPqrf!}L8qzqi-i;40aG%5I)V|)!TQ#|4UJap z*#7OFqb`tBRLOzc&7HzA)@bLD5(XmjkfPmG+DW3>!HB1pb0#2|^??VZ1bb>y%Z{Zh zOHM5_x=^JJ2%SLO5!XYnD#f|Pu-kQ(t}zQ6cR&g)KX$`TWjh>>Eh>d+l*ArJ4Op8( zP>EuV=#_O!fVjX<%8?u#sd?)86NAADaRVr@b@h2^l*)Gi0*QnJS3Pdx$_iL~W#n33 z{&{uN!)dH<*BD3sg|N^4f3^GFA70A6Hk8>M--Gj3*ksxmsRBv$bk}+KRD&GBNsrdJ zW{3X(PwfaDHSenN%vp+oL(QpT_>`4iu}?ihqNMXvBr(yXj){qmey5ThMqH7mAp1b3 zu!+u+zeuMk`25c8&-4J|j@J86;;zu}zB$6Mi(VwSwYeB={tbw~acZ_~ZLJo9^A7iJ zB}%uoqp|*Dt|R;OdVo^~)&4zmLh$4ii$Agj2LrRnzGy9+RaUq zp|2l5?qG4cK_BmxfD=FbFXH-Y2L11}z}vzNbVu}-;V~!CThRXi=w}Qc{{Yf{5#v_G zJ=&QuxS5PHot81Ukyns$_f^#@b*V}AO_NbbPi$aTJ(sX6i6PYh3&o7id;rcs%g8V_) zpK5p)X!yq*VYtP<31^Kk&KqNc-&(nGaf{&>ctGzTx^$tonP&Od&O|B2INN9dB}!6x zzAf#q1mj!=?}zZ)R?_v_?Oj^NC24Y7X4d7KlAzVOQqEuwxEEeZ?K7pnfxj+ZkC(2U%yFD z%@O?Nw$UgBMmdXD4qSPTRRp8qqGQo2t_36tbeXVdkyKdV36y-*j$+e3=h?yjr)ax_9g#06V^&_^Q3ajSd_OptzlQqJOHMhqK_^k2c`J&l42&PW6r!}jJe7()6X2HL#}mLM#%&jJ)(xWv z@~#pfnJD&a$+C(?!-M(}HDqL1v>^8rD&T+tz!*!p&;v6n`#VX{pA)bo_z!+48|lA? zC>#4p-nXk@*$gXr%3_S|e=U|lh&l|&bBHE0ux*bf)Sw@!^BhN#MIs3OBd7@?m>ES1 zQHA{)Q;<$s1|nflH1gc-r(Rb!HW~=m-LJg(_3K`)cTlL&_SdxRHtf9{G2`{TWBH{0bgWfwe9z9Wji&8lzqpvYqxq{$#dP&| z@XXt%7R{TYx-6S{1(Z6%=)fd0Ld=CA5I7Jygx$b3YwoGCkO0&YXTmC}NL0+}AAMuJ z(BKkn>hl{}X*{ilE@}xW$mh;lrp@AH7mnDj)ygQSszP*@XeJ`5iAths5JaUg7y|ZO z?-L|J1`hG>fIWk6ZBauhjq7AQIPQ-Ad);wdfO~CX*Hn2jW-Icd2}wn+&5M94Vm&2B zN-9mtFF*s84AGc&={GT4k5wxg6sT*@oO_L2gRF8RZyzrypJw`2o9Aq7=Mv?6r5Rv2 zwTqWoXl2eF-M~n2`W3*K019P2fpk%G(ez017YTM0!~%BJoe5VmHS_0IkpzyFCR;On z*D&pSAYplPgN0%XISSN@m;}j2*-~CoEmXw9A_iqPcZ(vYAPAVK0XXu*Sg(wZrDI8t zc+*+>fmf$gl>5HC{_2T_Yf4dWOIvUy3HMhG)+?%Wua``%KRh(n1 zLxfSVwJ4b8h;}_Fx3M!zxESqA(wu@N4yQ~&dO2ML3TR$vIGsMw+sDJ_A4aZ8gWz}k zYCwELpEHxdHTf9#D7<3&;RfxSw#pS$9JX;CBC0E*sRT-*YNleGhA4;$LVs=nRx<%#8`=h1VFq9 zYYg2P(IO|Vn41&SE;uRiz{tk9O58+f>`^mH?$ZiJ7!H zoR*(*jGUBm0s&u!c2s<`BN9WW?JBHt^p)$?4w`O^l3rU>fj==^H=GVCK!7>(IuCc> z?x_--v#gWwt){0t6^K)daS#na<)Tyqh)(?aZ>$}<4Y$*3xddh+M8VR0MSVG=aM{;! zldUZI-!EiLxjh`&c9C*-`)tjXXqK*)GnXym3nuM!Vw<>hV>?|aM%*Q9jem*&I{2PmJNW5U?~jkduBdI& z?ozv$pKcZxJmtvz>nwvtviX55g=id)HqnG*2zG3y?dr)XIWon(L_}m_Y^2`1Y78S7 zwG>4LXc02)TXq(pAwVD#035nTq{Q+?H&%A0pNx=~u?` z`7YSJb;6kv>GSx?m5L;?X~oM{7(bMhe%1x!MPiYEDJJxd0n~%VR;Qu1lbD2q$e0?z z8frCyN0F+BRDQ@&Jpdnc)+d_E**eKVsbZ@ZMZ3=93JZxhbZmDqYMYXy(;dw_UG&SE ztySaYpzF>hpE+{wO=y-a6n^Q#>$)V9)P^fs zC&ze)c!q8p9AP;IcDz-yYlLl?wRydwy&kAhBj?Pk$f_YB>h9XGS}e>N#y2dRIP_eL zb_Gcn`gL0=ODG6b139vgCU+-crqWL%1jwxSls1t$M?RoeoLsq_t=VI6nG12=(&DFl zyk&bnTS47+N$W?IiyZx><*kyiQpl)__O4+Zx5*|KxCtfVKxppxr zx^VQ7jO1+ca&Fs4mE)%_fto6jxHxdKpr2ZYFx=I;Ey+?~Yp4)MhT6bBA3D0RcBYZk zd&Mh>znTH$0KiZ%hae&V3KxTLAR+)&RVW933aXrTIe=|aZXE>+C|!vJDYX>+v$=yO zT_DHfRxG}*@Aj&-Wrc^5`y_|MfP)|>*3uwyIsieM%yr$v=X#7IYSm{jWOxV$ZH1c% zc&m)#IQ9(<&n+XHBJ_zcY&}9gLoh)gF^po61l*4^cfxoR_X6cC_iia!R03dn#!km= zJ=&e?(eU2axbD`(SmC{(<8~IdsL%rVDoO-*0#mA7(0KviD$0(?SICP(*LbU?sy5`Y z+?jh@3k0)E66!o;c;`whFx}d63LSPT8LEal;$x%Gm>cx8`gcxX*di=O6sB`Dpb3Gb zfgVF?pJ@OJ=52VtiAFHKEVIPkPAuMR*n-wma_J-O5Mf@ofIITobW<}^HYrEbmI+xY z*@-ob>PA*s^O-3Z&J_Jyhi_i0vxh5~1L-QNhEwSqg9lN%vKX^Q8-@lL8WI3V8i|lJ z9V1b&fm)nj7QDnREb&|QuHx?#aEpf(D_TmF0aDJnK_rMXGr6w8gJYRXfP2_R@vLbs0|m1YS_AOYAz zfdS+>0S`gv>JR}A2e6lr^ww*Lw(io4hRT>)(%DKxnO=aza-DhgtqN7>Xl=FTSz#_X zl_Y{f)u>P)>Zuc<-(6&i%JJFTG{e?@W<_P3g&S2C$}#!A%HKHNFW8n$$gap5BKV1w zqUk7fmug?q6-h&;s%9a~2GU+|-wvYr40iw};8d?yKu?al9&-n6Vk@`9`&8rRa91$b zc)Jv^z(=YZVNWXIBTy2ArdI%Iq!mCKim>apTNO%OorbGDF+qHbEnJ0_qlBQrT5?p9Jk za3K;Z&mTQmcTQ9UlOZ~mROaa@2VgFxV%>`-nQ4%e1RwwhD4v>XIqw|x6@iK3SiUQE z?e;AH0DE}!A#P^`ttVYhv#C0n({s45vZ-^o(IpKxNwiohGbd`h6Ux?QIXn}9?GtwSp>%7K70Mttn-X_Pr0loU3*Z& zn}*G}rl%zN%%qKD9OWyuD!%$j;y{DBCy>?2xaj9E+@MmTyVaYW%BYly9Z?|)P>mMp zDhu3+h}47Z_n(bWsHaiB)%4=++isT#R+Xk$ z&E4)=tUIOUJ<;wHBh%kGk9zj8dd%4l*8u74L$;6NUO0-Kus&j|sJHA{y^e5nMP@G> zrsb*9T)ldW(Hl;gPM!(;Xda!3JhTZq^sISm&H0-3k(uTDwphs)+_M7cJ#nUv^U@<7|_A z$N3ddkp*vbyL|m(^yOsKvrDs( zP34E>DMXWzku1WmNcH&&?a@_n`ev>4R?+|<@*0GWU)ra9e0{>c+}FB&$nHSwKK}r@ z+bZSM;uQ1Z8DH;K8!Ti(>LjWsUM40<^0Bdw7DQG_RoJvaRg*fTQ0FO>0g)|+(+QYS znA1}NHYb0&suiDJo&)aXRxH+5$@W?;M;F+#HR5|3hv5Mb9VB%g`c?If@{UWxcGg$iOMkgzJFICP5sk8mW|*ni8m9FVw|bf~ z&~Dj1Do)!dt7l1h!kdQbD1xOjCpirRw#a;isK`&Npc)P1c@lZ^_foi*2806rZ2 zt0Ly@*Y00(iNv9wbG}l`te{L|!pGk(vz8dBl}?BtqloC2&XkR4>2yF7aP0=9a^RwG zJyit85u#aa9D_-nzyohRXF=^8sotw-GtvO7qaN>@c{rMgY+;P|NuB7p_sMkKy+*N= zZP751&7Umk!}ieZno1@}M$!%+JaHi2AXy^$!^A z84*tPeHHE>g<(pTSjrR_`@BUPBVH--SuPRPYa+(hEz{6UFSX~~gV;-xILFPK*<#)G z7+f)#P3vWhV;MxuVG$d{ZKWv%22vtQ6nPoc5j^$ts`sksuOC!Z)fu?`!b8gAiRhf= zmm_B|>?_*dB$Vb`nrn_C*nL0^j3c4o)4zKRe zv=+dCqBMe;k1~D#0D-EZa_VzPsdp`mb?Z?8TQEyjLY$ zRCSMRmI(sPPtQ`^8eq#+=BA{|Svh$)W3zi8`{*bqDHt&vMj46ZjMU6P8wx^@0d;t?K+`BAO$Z!}j(m=zp%m|rDfkb#)vu2;4q3!= zGd3($lW+Ledc_j{2Ej2yxL7JuQ*d&sCbXP9v&bn13&=&ts)|a!VC?F(cA`n0bd)g) zA$OuA?v(pS=Tz^N^&f?ISZi>Z({A<`Hp~~7auy`9J!%XeOVDkTHJ5S>O1L^JDFa42 zZb$73=sm2Bot1P*>_yQ?4h&^R2dxr+bd#|HB0cBNrn}CSUin99C&+#W^=`c-LC!7E(vpSv5r`uRVTMARRA;W}K0T z9M}*^wD-&#WVLm)(k;$q8-%k43#P_I?UgZ>Y^%2GD&2D#bWTM?PpFk-g_5EtG0i3p zy?5W2!l~Yoq@6U_a<7vj?o)9YejZl4l{21O$hGOqSYD4`Lug0>5f`o_9c}g}W79KUCOk<*=qncV0Xu>svG!bmci&Tf ztCp?1B&29_XaEv*B=ssgn3FusJLM}wI_b#$!YdVJy}{><{O%e4bIlo3F}NX`Ct6)nQWNUR0ld7{#WLhaOTEx6qNu9C|7H-_nL2*U0g55DH z00axY4GKNs0YyY8g9lz+28Uj=y->WNpyj6__k9ZK=-In6V=L>7sgCllM5JW5j-+0_ zzSXW)2s?ZCa|)e#XAkTV@6eQbq@v0wtcjgDTiZ^d%;(J$2#w0NOPlMLZdx9m>Zg3K zsQfDY&AY+fKICKA#Am(2JNT`{xNw$G}`ACGM{DYYzNRf~| zF+_To5#T};+N3QhN?{~{F#}FVlpThnO1r&RLl8`m2QMSM4QrhjczdnJ80GdM$2*J6 z^lV=uM`=5u)p9ka3a}_h0m~xU2&m~K8#HSsMN~>nt1=+oMH879sV2*QbFHPMx6E9q?p&H zzUusC^4?XS$2ELEJCbjcIGT?j>Ry|SrET-?s1-R^sy^(x4yUonh z>UHS!A|PuOyy=r+YtT_GiUn&I4-Fe;Z5&Md~*(Ce%K)6(%H= zY9n0%CSYsr>B@!WbDs%~z1nw06A_FLV%KB>F*tN@ZM+IGX^(}D;-4Tyrlz4w_}JrlYNNCnE~W{h3<885RwlwzC9pbtx z{LxfrmGX-mZ6$`-*sW|*RP>*gy#8&mS+xezuA`NF zfHzCZT!KK=skcCfAZFN^owOsvZe2X8R5+zVAdO-Un)rzS01B`>_V4Z=+Wdk0p1PbQ z9SHypr%}_H-lb9kV2G14d7rPsxd51^DT-qd+z0{FP@)GR$^tzHA%Mw< zh>%J>^ixPuN@YH$u30>w6jYnU$W(rXk% z6KYttZc~^m=8>gpifuuIXK6I{VuBt|lp;aGU7{P3l**2}4fp0X=3soPo$83t5`2Vv z+&Po$C4@cfXZ@H^gCGz9ABL<|#Wo%%NB~a*}DJvduvy4w7U{P0&)5 zFASxkGKlFP;3~D+V;$ITj|x|msNvnl=R8+bS=zD-R&nN6y;EQnez5^HUMUY>oR5w> zrBf+LqULTYoP{Y&VFG|?SW1a>iBU7=Mw8(Ha`r*01(I@3nn%pZtPb(xxd*P~U%7Dl zLPf%_AHH_7j$OTWxz4KY-Z@yuS<9u=Q0G;`$2!WK!egAmJnCcH(`CsZVPU5(ldA)G-S+0 zB`{RUG`2svPSz2fO(hJnNl!D2c!MdlQ&i?uiAuJ3nN%LIC>Q`jHQAv}_l6`5x$@;Y zPX2li8++w_N8w#2SEbr`id8nIUj6(6_xCp=H6Y$91bA1ZkIh- zF_Mv=BDkeZ*eBVp~AfnEk@rk2gb0@FUxsL3EWy_EI*L$c*63oW9RrUxkQ zLpWcn*Jlw9t<}p`Pq|Fi>`Oo{lb8{euRNGm8QCEmH*T~#Dlrse6mEf;CV--sL~UCn zYydj$V{savAFhfBtisG;o0ttS^A@hIs9 zkwf&fR(9285)SE{rT`sGt0w;00GQ zBC^TFo(@ib8Qtu(S-0@ZI&Af5r?R!FD96sDRd~&trC6@Ijg)ZJy2eaYMKc5oXgQ*U z>PRvOBb5Fl-4$a_C`5$`(oBzJ`{2ordRAPvZ=-tGy43YD@4Kzb+$t7`_fd9gwVyd; z$=daXHR2+Jwi9sjmRC{otlS~`O0AzaT_Yp~AeW>HP@*jmfEEDE3DT&X!HMPa-YZr$k+61k+io_yM43>Iv{I}RHTkBg zpOn=^vJq>ySk0GA0IRf6OxaYxsVabwg(+k#heo4Vk6_bHM*jd>MM{@c0FXzR0PcB5 z-&s=s0K9G3BqZO%6$F^G)4!%t+(bLcC4WCH3rgpIJlDJl^1kWGG6%_?V4q?37B!ejt1RVy) zf8M8juc-VhU9LAPc0;nu-0!xF1=8DKa--SHHKt-hdU|2nqy&!QN>)w7m#3$%)<;OI}*z$+Fjl99G=UcK9>VSBO&rL z=k*n-lCrXMvhs7Ya!=+a=ASPkF)t|b#Dt`)_bMvk%jp-+)LGNlYp%MgtmVS0ETPUK zbB}H(M2H-+`zBA_P=5FQU%tLQNmo-!Q&6u}W%qQ~$LqqCl!=_PN_e?k9!$5Ai-p|D zl4X2K7mFv})oFy@e56T5X#W5yeA-e#kBV1Cc4*ODtCXh$fRr^NEE@{%PE)uVh}WM! zXPDe|t5^0QLcb&Ic+rz6R;+$ zscRyxs#WgojjXYEJa=!iQEl*xgQ#moLUvBKV2N@CF+q6Qh=(mC87skuleTb~gg~Mq zB2tJ(<00S@t-ijw^W`;8@T8H;*m`yRYVyllfX?~x+$4r_%-K&dzpWtgt##&5$QHZf zm=@9oMDLM@UePHiq-t)?-4i$?Ga?F^A_@5thO8Ed2`vw^AyKC(jnA|XY*W5IKH*t5 zKYaVniN;}uqc=^S6(oJp~`b&UtU|r+j>U!nId`?d$YF068#-02BlR)OhXGemV3Ls3F}$iKkl$KpA5} ztZO|7!)J)DKjHJDm@R6>>oe5+i?+t)#=-;NBkJUlNueCS)I zl1Voz%N(uINhDDMB#{VN8ns6#15vJ#=g7qS`t4Bn$Cunb<68}m_w&81MNLBceHtQU= z`PDS2eknhL4nVFr2qgZ zbbxW&T9VpH1dYDFxmG~aZ>_rRu&~)#TZBuqWjXLrlj>cn*MOVOuO61 ze@TATLzh=84C7WzGL^pR4Km&fh6FUwDu&ubl7t`xi6j9gzXaA*AW*3)qGedU3l%e% zfT;)6iUC9bD09vp6)J0`moE2`Wh$sLc z3M6wTZ~+bk0K^bC0v&`o?j5wqkKs@GqwuGsTz^jY{PBBvsS` z0e_tWfw%zrgMiZ_KZQT$kHVgjas4~r`qh8luaDo)zn*#b^YQ1`oieBRQ|=#yJtE`! zcfa+j{{X#Qr7X56_<0hsotI`;Z9#*eYar>rwJ~zCByh>Vq^SjVi;w`TH&jlFg#anY zA=_MEXe~Cb7QXcnnJ(EBl94Gsn94~62?V66B#pr%Vr%T5&>sHrztVew+D+ZcS-Qh` z#jBQ*`+>WLk-|9D!W((K*&RYI8D;dPVL>jm+kge3By@DVy_9jwca12Q`(;g|@#=We z3T^WSt`zdYAXx2?Sg85nm;nmlqy>snlnS79myexP%1nBo=^tB9p8o)U^da8P<~nFT z;iuNM=G%WWa})co%F=U^vNIAd98}!9eXcCCF#2=H z8ra*QC8P)fC&%}d=TNB0C$F-#1t(5WA=5#^=#fJZ=OSvHggMg#l!h@%U;`L{qJUEf z2$T+R0RS-bF-SX)pNHTom9rZ`$`$NQpXoQdI*YU{bM7MT2)=a5)jn}?B5~G)oVHap z6Fh3Y%;&5Q$ch>2LRDLk!4t?UY^5`{+{oOguCdqds-%EK_4i5N+3p?{>MWa$&uXRz zOE_h7qOl5ci83{L`GOxRFH8Q3D6+h+q&94$W(uwY;OjH%0UL$ybuj z$tf^IpP9d$@nw#Y8%B(AQ$aHkB#Ng5OoAroV`|b+l^6pt_7FV!8RR{+3e}j6^bx3! z@zOP}$7eWTx4aRaWu%c6++AYaQ{fyc0-~v{1k5IoT>~GJ6v$1h7_w$BB{Izj1J9Ho z6nSATHa~>sGEY7I{>k{&QZ!!XM1B7N0s(>UH6K)Kgw8d{)ho*~kn@yVbS;Sl9}w;k zRqb|FyWnW`AXOtS)nl|4&fEE<1)H5jM8zq@b&#Zmpr?|P9$<~C&V*^P_iO$&>hkNH z=XW7Ao@1VJ(N(TdF%k?LMP(3p+l7p&mQh6xW1QyH zhQnl}PK5j>50^hG$;?y+x)3^i>&;g4Khq_XKltRs{{Wcr`q{Dk(tf&DI=4P&=UsjY z-3|W$Z)|K#DUkH}G;Ge}-akE_K56QyD;kTGP%A--utJeE%tvYpps^en#sUcrKm!4) z<0){0qM;KIM?WxV6jL!8^{Y2D=F6UUwV`gh5+S?Rk&WUQu!3mmoLd$sDzg0z(t7$y z;GJhK7jUuHdby0Ef&}u@DHAQoZ7qmQ$Bw^np(L3#zaAS{rbx23tivSTR3kzuT77I) zAe671I(W(S%k)G*1W3q{?O3LvL`ZYIc0mrLKtmeoVgd(QKFx>6T{>&MT!E=QH1_lN zef8ORm183cG|aUg)W#_lH9EwqL=$uZrCve_(&AExl`%3>42-eFsgYB&Ly=X&U}dWJ zLFpr}&+e+MY<-_!T&rLFKQb9=8Oa*U#eBHTi4g7!=^Ldq=9m!j(8`;U;7qr(Jd8x3 z0w-}Kh;jfLmgOZ)l0S6Mv!C2~ZC0Sc^U|>P>;|}P#N}bD2N8ccObc<-<@~l*Ov_{x zM7@O*SVBz6h<4z9h>1E(H?m1>1nOhqCO#2VR^~RJua4doh-k)wE!LiEK~yzpwul2* zN{9%mXfT#&GQ~&(krfQU7XoksJwhA+k8NJ5%BbHdk2un(B1G*v`Baj4ljJt8A7i{> z6uM?^!aZx0p&OW@fCK)xy7EO7$DleIwUlrv_YWn@HA(Z9YZ`ErTr;Z#7AJvH|7`tYfA&cEm}l)w9fv;P3|A=a>)`)Tv3Rk89v zD)SqytwCOk&Hj`IKlndG{{ZR}J!=Q^-}Tk=H8<{m)%&Z?hPHJLT~_K2DnP{8F5)51bd2SFn4k)TAh>LfKxn{T~<+{m|fk9ITVnOgCm64t2 z8yvn7PYcf-Svc5xD+$`Pg35I`h-Q)x5_<@7H+7f_t_taZ2>Fc;cSwPb*zMA7XLbXb zz=;riNYHs{@}!uKTlsxY*FTePzv%adzwet${{Yq&8mphpx&4KIs%oj+d5@iK=ZS-d zhRYN-rxX01jyz4nVvjypJac88P4Ji9)?^w-0r>CIRQdO68(7G$x&9C%@2i*gy@Tdz z!SMEF9`A6?6?zGob`>id$iP1WKHbpKu$X{8rz0mX4gwv@1rvLB-@mr&~3Lwn37FO%p2)~N2uVnbu#TkK;b!_|=`~hsW})?YB+sNat*n+JfgEGOZ-M zJhZ6Ep=DlCLYg%+lqw+ANLD2fSXAIt^T0{RAVYK7H*LdcD$Gm}A|rF>RSS{?Z{zt? zfa@Bss8{iT{{Z56{{ZB*{{YU*TMG~QU;S7A0Dhx$m$&YySJuL#rj(|XstE8L{6B{u zhtoqLIipThcyb0nb(!1c*G^TNhito)3ft?T?cX|uHZlo?qE6UsLy${ZjIBzM!m*Yq zDdShdEsPwBO&lp7D(TWJUlA}Ci>xXl3Sz4DvFa%8?%as$@6xR9%6)CKa{3+}YTmzL zT+51|Kt<&oMU(Nwm9eTXs`0nF6{@EpWn|$%NxQoH8Q7*SrkglbM#(l>F(*WDcdS7H zQ`;MglA&z4GX)Jb8g$k~9rdMO61zv;WED|M}5l(V=f6KsmW@tSaV4me0~!V^~$}-@b{{u7s01zSTA{b8+Enp z;{z{XjmEn_$eB)#-a2xAqNH8+3U;KzB6-7zm7|}(BSw>MN`n{R@)^=f1CL{LnbBDK z+(PfUZr!9AY&uj5c9KN=eE#ZpBg5XRidw!r$Tx;|Nh(bW?{ST$#r(H#lB!g!7AX3h zM@y58rJ3YBd&ck)#Rg7<@8y(e%!F>Trd+8cqJ`U+8FVy~Qz5W*f^-0No_lhdxgau1 zj-0fTb@Q(48eyEpnjbrh!`Pc8<%u}*5orkQYelnOU&pps7Ze>oXIPAsa?P`WZlPPO z;WWzNN@FA^Oo|+kIdg8&12E<0C+n`-RjNUAU87=pbn)}>t7h9yxKJlv)$esXH73s( za86FOae|YpSfdVN6+--@13cC~VTx)baw>xEnIzrXM9rJ@rln;2w5;{^^0Cz20IvXX?VgDSKaN>>xcmb{>Z+9!z+B!R!p4jP9l zh=5hs+ilL}2lqkh4E2pkI{0&^bWiO$Psn|K6<~Mzy+`qP{Jj2e!KntKV8@MIT#=G> zo}1}EaQf1#q0kf3t*oowK_f zqpKDh}gD6(rlNl`(lf@C_XpqjXa#Et#>M^3!ySdhl)6BneyCH+toIS}Dg(h=Z2 z-Aa(ftK4@&oDl@8dh44!I@fL3fQ+39Z+)T4AifYSjxk92{<&G z#$M+l!e%1Aq*IARr`B2gS%Km&n#C^^35XR}>8bQJdR%2hf&`0@ zfq+b6hae;#kr4p`3Aix*6$gaQKmv)3u?}PkUglH-zN9AKT}GUw{678aD$ALB1?7wk z@`}SPQ=QZuS`$`E~2RzOpM57@|`crU3ych;zr$Hv`8}4d`+R^U|RNNN^5FV-!F}f4-H( zeM|QK(CRmS$o|rPb!z^}_I$;91n|a%z;sUz4-nniWgW0#J<8p%J--CBq(bJ3(sOX_ z+TJWot1^ter64SmMv9EFA1a$A(FI&HZgqijCI}l_iGRo2)+7PtB#HQs!lrMZv+t-@ zk%qTtte29lII|DEK`E(=j!SWkF*R~_cDs#ga+8LUG<;JAZJ#}fr_(}7qzq%3B>)<* zRl8M{QB#1IVzn~TWRdP2JpGdc+$uVy-vMWgX*^bK7H7LnAQIbLM`He4DSWVz>>>W$M-ftKO>k zp*!2=_~NCI;%1`q3}h>#HWra~7&+iQm88jCE}$AdScjG=6hNvF;-VsYwDy{vM3d*s z%fs=~rtU|Fyw|{v)HhJ&3j>zBWZXN(^&%BZTFfw(Op!{kncF1rrm&tqu;{SeO%_SP zOCT-Ibk0yAOmPBg#9uJ7K~i)iZ90P<{-c#rBTkxD3~s^u$p(=On7n^1{qixaV&j^x zB_Q%a!hn-@ZP~CRmj`mP#spJG%LAEV@<6_C(AH8*DjDQy*YiJ9v8833_T4uLieQ>q z@{S11xYoHKBnavJgN$ypsA(fC9JeHFrJ5Ekgo=)MH?yY6!slC{;zEf)1Y=FxL3vW3 z4zU}|YoLy&p0P@@C1@AO8ohq;JxI90(yfa5*t= zu8OzGt{nX~%cM@ViRFy`mO7tt{AovY3+#P9D=&BNloiANtDQ#&}Jeu13?BRPf}`7WeT13`F?#rKR0{` zb`j)5u#dz;-}rUC=8q%t6^?$|e7_oM`o5=cYI_Fo_LuPPiQhiMNdu7MW34L z(|z9ed47+KiQ6Z`foTf+EQ0S-8a*~}Sn-wL2nEEm5=AG!8_`#-0+VIJt1*5#4|9xp zbTU+xC0?te%BC2@v~@VMZJ&E;u9gO{D;E0- zr1`O+9LO)Tz=FV2r}~39)1o`UAgkHdEHXj-hL}hZN``l;G|y+KKF3>jN`)I_pVWE0=0+9DGkeX)hn;nEYIA<8D~v zF@JmWsN1D_qWS7GYzBvcc*i^=n|9I(rY(4Z3pd5$DgAkQ$@kZxR5}gG4|^vlEG!~q zrLJS=P2FaKXP3(56POmCxef6#oS2qtxUui6(#-ANyMy>7PRB_jW1yo!X~AK&9axVI z##G9nrgU7}w`PlrE!f8dL|yV-cE%(N9ZV(1Qd@x< zH|KvM*$S794N;aKUBEAJsC0j-s1Pnf&7>AZRb_ugsY;3^sYFcZ8sw>zd+vMMtZF{R zajPr4kFIW+@E%tsTHwCYV zxcO2f%TUtfWa5WB&2PTd{N|7qjV-WaT7s6~*QJs3RjEy)Fr3N@Hn%aznGhW;n1 z!Ylml?)DqJrsVa{5(jRR`@F7`BL$wv`9t5AbU(-j7gYwPGjf7U*_p7n^cS)lRjOfq zhyZbaWk?X`;cIte$|C3|ZgaiBGeP&S#}Vr&-fWy0a_6A?G3Frip}TJ_oGqKvQi4o5 z&S&Wed4ts}(mH)jPil4UiC2b6jnk*5K5a(p7gV`rvAHYS!}43=PHYH-(7SZ) z0kM&h8ibw6_S;bA!wpD41z3vkJBur#&&a5Mt}|8@+s3fS+#RcQ-><#A!zMlFYfM2v z{{(a(!UiudeZ-mvS_+$1&3_C^|9=cwiJ*Uge*kO&NUWFshezk??mxh|-}&ro3Z?gZ zo{y|}%LA3}7kpXTd8}4Xg!~^EQp^ei1D;{I{mKAGTQ8?s-isxBWWpF*rYwp2OYM1U z9q_XCc!!o_QMXQZ0T4vz5svAWLk)jyW}8$05t=Qqk%#l^z3>t2o)=SXYlFW}WI@DX zX8*MoV(8PN%eU3-Yt#Li(ZoJgv9MrVL`#o2`y5Q-g3`87K`usj{kHe(NFi99_o!iR2m zAY$TLrq^u4i@sJ3;Yqs`vI*e;aK0p+0*^(*lKScD>Ff)+Z=67hZXJr=qs2NrOq1Qv zlh`$zd9@$%yIz%-4Bv8tYgTe=RU)y-Rcd_dYyV+L2ymSE^K6Ph;jS;m$EybE#5D*q ztKplE7PiN*j|3-33flv|E60b)>c_&W;mFL@6D=*TGl@nrGCcaXbAM6JUlMsjC-O&b zn0}{*e<4NT%-^|deOp_XNew*FIJpd$X-(3>2h+M;hSxZjRl(DV8`7s9Ukg&mrEWHq zB$2>@vH5`vXIerR!NXM9m4$|66e5I);mIDTBD?*6(dv2|?A(J0hVWEtt|?s{Y)h!X z7NbbgzKxw_K!Ta)5ATz3}FVRmbam{8(+2x z%A^#n`6rSWL(oguTk^9j6$D6{moHLIioEsD3dZ|vApemf1HroXKLAVI%kBkzf&K>n zY<$&?F^^aA2|jP|_5D??QROWy#Qp%t;KrI=|erRb<9qq?^k%{`@rNsPs-iL*jC zwmGi0y3H7Tw3YFQs<%N!uFTu}T=QcJuhR>4_ryHuhU=65u_?WwF#Np)v&fQ5Bru*kp1agiPlf~&8u@K>L@WuYliAm!-i$=qK=_5QK<@6exRqu0sbVFuBz(e zJ- z&9}*ZMNmYF(IG)?$?&=mL9{qBPIwY{i87h-2y?0t8Mm+2MNzfQ>WJ|tIl+!eFhl_F z4AbpzhC1l7Yh}V>T_#9&a?%4GwCQli%Lx|hBEL@-%0&aYS2NQqxH=hYqMNYrLqf|q zqad_H_=@6co;fZk(dh-=;v-a45$EvVR3vQ8^A_jW{BZdjT^ljJPK?Iw8bHAH@eOXW zlCE&T^g?mbo}Sow(0Hucr!5a= zMTp~aWO9U#cXVFk#7Yh)2J=q;Sjoz=9h0b-NSl3D`(OC0$yPZ4j6W2?_wG}qlj`Sp zFK$)IK#BR6$LAH6HXRx}%)_h(p3jMN!-GRO1~Bl*`3Kr!O!7f^+hfaxf(}qGmWWH} zFhnk%N|DxAzNPqO~{^T?N z0}Q-Cuqg@|7a9VPPEKuIMn#{~N8PrbGh0)+rTg`(d-!aZ#mH3RorZ3H!@I?ixcMOz zbUT8$gckWz7~FT`0_nr-e%n%8@30~I{K%N>A7MOgY134qq@x#mHPUG;5*p|}+2_b* z`6X3YN-1Y63?ow_{0_vR;c;LTyX&$DsL_np-xIHpipd8n9_$#N+)tT_Kp_-wNk9JT z@(&=<&GrxAy`lb5U%y=I$A0pN^HEV*_8*8QO)lkH&vs;j+BhUCtnrVTd{G$`1!63d za+xV@r@B9uhhn2FSb=1i+<291wB8}Yx*jRfXeEfB!WYMLWOU89x2?Q*Xr0~+WA~!% zlm){rUY>V2qtb~wIok7()dS%{g%)o-Wm61C5(heOf-Af{L69tdJxWpwEYEyDv5P>{%1B{N6d?UxOkz;F!g~)4w)H1pBMZ z#YIyfyb?M`({NXHa7WetkinAeK=9*XCO*E#ex^C$*Y|x9HRY0TZORMldoiN?2Y5|r z{s*}0ve9&Uo4=Qzsf=sp>!VbjuW^x8s5^lA2N=4Ayuw)h1LUN(;*#F=z0`fYi=TY6 z+g7Nn36YSclcm#$-ei|W*W z0Mln{N$b`^(L}l6m>(H=vHryLTM=jXZufFX!=(g}9FUtI8$~wIk#x|vD zOg(`T=u&GY271UJ-#)Q2Yo!o1D~F+B>Mmf^vnUi!)fngh+CiVcV$xT4u?!;sF-kZ} z5p@v9ZbAVqa9k|)gHu_mR=f4P4IDrO^U0A!KBR7c(gRB)%|#Y1!?sLZxiV$7b5t;e z*%1;S-QB_ z)HZ&Hg*8R4xx1XWmmIQCA2jq7cucnLIgx8K5*h|gHco4?Bj95Gj<4Rv?cN$Py%P%F zhPw3TW#p}wZ?Z0s6FHV_qasTWu_!07Dd4t)kwu8;N5C3;cI4xz*+A=Vo#g%M&10^* z{XF&LJz*9etK=Cs6HlBqnzp(D-aIf4oe)@nbWnQ`SSw$6IWz_lhQbT&?Nx=W4;wLvow_E3>; zAJnub7ow5OZK6@EOADUmTqU~pp0>Kk!^)0r3;wPiy1(hINq~u_j_n3>cX_*@L2xa$ z;>e;;Nzj~3jxDEpRxw1YF+dSz0#3{^QR%FMEHIxmG^Ptx$3(-Ai2QGt;yqL%Xvnde zb3#Mu3EnwhhWx%!K0mZ2lJn;0nFst``R+RhvD_flmj7oRRY|!H8W@FHWU&ddd`+L; z{91h3_svKHabgBIwk#d3$3wg$UK3i|9C5I3 zk1xzkJ?QA0L(+Gf(QQnWMJd}4P0yZ4^r@q-c$eBLr_tCk^|I@fm1U;gBI?V>t!neK z1OqcT#jWQ`n^botTubJd99Ym?vw4&=53OU|2y@o*tAlm2RM%a52Tg4}oV`XD;ta9F zNgUQE64UBE(aqcJ{Jf&B`(zb~%qca!%oEZ%Kj-W{;CP2}wU850zl z`q|MlQq7#QdP*ub=qF{dYU#X!R1B}&;AY>_QnFo}Rl3{f`38Q+O}*vQT;M zy_YXkD-i5RkNWARN0HF_C!raGAUdEOS6Z$yW^cCr#ITNWHZ5-N`ny4~!N3|SPSD>F z`!<9n6indH&>*>di|RnZ2ppXVqL$bmv!PdZew<&^TqU5*o1VDIgQOKg|#I_@L2?)p1_2uu9G=P}fmre2E+vclCRXCErUxdH~QjDMR zE5BjcsBs`^zRUg}1(JUNe%G>oucy}&)%Tq~l9%~iM(|Lk6bp?V<*H{&jYNZhk1=US z9wZj-de&tnR1#(srzX(!6O1@Lwu;bw_?NU0kmh$yzzak1*&+)EC!!4XeHzmpjdF!I zw5~API+wA$A~4qbAoLQbQKV=MW7tyr4_ z_o5O3L&rp;rw3gq@{_}<;~x1&*?Mgh*ThPflJo>+$!4b|^}JqQ$p*_W&?S+q>U!Tg zJQAMu(UzRL_<)E4lG*p&vr^&^S&xNCSmo!A8?%RiiDooZ@z|z~P((cHgQe<405pXw z38i1$QHiS_Z9dfgdq-`;8K49vn9F;4!~7uY)AUCsO^mWv5d|sXf7Fm+hc`W|X#~ z<-sZbN`5KL8SlolV{C=811j%~jEevZQ>n#Gs6Ny*8^nn?JizSyjhd*QK!joGa}(;_ z!5CBRP+qKKeR_TC*|dpiy=uMud;q_n)n0~T`A3xfqSbT6r&dE>l~~J)vvM_|qDsq= zA56tgY#MizE67<3mg|U!uup3EzBPeLTt(*c()`jjE$sqq9_ni%fj?y2`U` z==*>2Z7i!hAOZc^jj$7u6XJRBHCC;OCBCax*VNxCxX_2l*rL9mV}Wc=SXUaB5|RB` z?$3F9`jF;HVObe_FL`pjzx{>R$!WbRWN)F&y8Y0#TtL^mqJQ}*coo4r@U~yQ5*gcu zDR!GB&MtGk;=17-gq!1OdBcX5;Co)PKDB!v!XyK8M5!A+WKmI}C9DF9@t#%IIygwn zwvG7%thsKHfN1imk&Op_e~UB~?6&GuP{+Yu@0#V6h@0KjVZ*`wdDk%<*c= zUqZ9YI+{c}H1?r>|3MR4ZjsOi4w%DUrFOnd#|*PP=Sbiqs`|S353o6)J|dClmDBF< zaBJ%~OG?6p>PvLq2LC}a8we@$NappH=hfHQjj89&Kae*2@we$fYHGsy0yg~mG0N)8 z59dkN_0)x{fR z^Wtamd;F)roB($OpX$rL%`M;{(t*M=P703t>g|eE*OR&4;P({PySLY`B#ix@&hXNAnM58U)g+zST9% zJJemqFQw}gBvO|c?(I(0dt(G~(M!T~+ectI7OCxkrO`t%FEF>8`|Phh$QkGWwBeiP zk2k;EGAp<3i@pTp!vR*%Rwpe(-sHP%hHQ6zvb_kInw(5X&P=Y-D@p@@iGISy}s!=!A5jB7xTM%hi z7wF~P_p>ByL}Yl@OT%f1l)(_C+hkmZA=W3kjrcNDFPipG=a7Dm&NUq zmA*{qp5yi08!B_^@o$qJOYsAavu>g&!|CR7xJ?_>s{k`ZJ~2Zv-LkvzMyZAECO zPPyjR_RFaaW#i=MH@*&JwvH}TMCmV6rHSm`VG>Ev8JYIUffb+tDojy%ZR@6=6wsL1 zN88y4lvFHxN7Jw`j+sK_0a?pAqA=(ZJH|7;pFJ~B!V!JNXk^_Y(6)AVMxf-cY2|cruAe5OJeoay5 z-;RSUrg#kZ*7HU}XuA0ArAUSGD-4%+vp@>Rh=9h6vsNzZfb@?vS$d zEu>6%M+K?uX4ODsd2eYS)evff636WN-=!rheI?a*EYJYnV+H*gXo(ydo;+9(%x6mS zi~Kh_iAZbDeF$e3RP){&%gO~-tKnX#%4Q9B36;6J=Y9+RkH8dY1Q7lOMIYin061>G ztL^KTtNUhK&|dDedmM4UL$=b)J@PQq3SN72=Z`&3FM1{1EPth9-o+Ts%?RPSW_%g! zq_wv?!gqqOSHEXA2&9#v9kTBfVb_0we0J@HT<*NwJ7mZDfaZ|)(cbb8(1QJ}$MM33 z_6V7h#ar!O-8=HS--XEghTmzKZ^A#oOIZ6Pq<*IL53mtA>;@ejkn@S@zJIdV@Q>ej zC4WG;i^CY;LvC+V4{clr}!7^Jq3 zXgMV7ht9NR>P@dk`mDK}_YtGKkC8_fYC4s0-1wFG7%T{zel{jGhgVx2jiH#!D?oJ$ z6)epqj6`URsVRpJ#RumTrg-f8A-+ORY)e2z11`8oV{1rQ{@O1|Tca=3P zAX|QZ9IS_&&g;}7J}k4^gHPGkOO%Ho%G~1R4!Nk*6PS3>GN+#r*<7+JGtik8>1Wx% zQYI^Axke#a3$j0}M~Xi?NgXOAX6`-WD6Rr%Pjw7T4H9fCC4{uBP&VULgDt~zrY@G2 z6n#@Dc3%ms*TO4Z-ZEGMv&**?S15fph(YDph(QOFk~#d|(|UzqiAv*}%QqRjgR5vQ zxjComoS*eS2cj<>nB>YRG13z~gACcs@XRc{952#|()%+Ap>u?l(suzESJfr_TSQe@ z1a^I$)rd3+kCA_9mm6g^Im`nD!`Xyz$Kp8w6q3{`Nwffa04zBesvjb$U#y_1k#7;J zeQUk)>eD@M^LA29Z0v9Y7Bj|h7B6szSK%I>k8tahseTnxo5iuFcch$K2EHQ@nQV3@ z7nfK9U?_dPmaO26QFX#*YNq23WR4;ni-xY!&!;~rwg`2`CB?f3QkhQQljx6d>PYSh z(Gs22PL)9;JjW(|BU8q6ak{WEpBF60Cw%SjajXQPiwC4WKJC#(0zY6C~7GE-b8JX<-((7s`c_3byX}tZW{k zq8w3~{KpyV9yGa|B0N0LZ!4ryFmv`9HKj`TL<4YAP?KXD#RL?RJvi-QcEfFPQ<9I! z`dNQh%^_r9w5^U5(`YRF{HN6?9D2oGkVtgwg_4A?Nc}~%%AL|sW$u)^l6f%>AkDrk z$Wn}%G5KdX`I~J#B9u%v&Q}<|w4`|0a_H}?Qbd(Fpuit^pxmx=Usg>K!z}CWg*)W! ze*n;uah0^NNG^M0a3@`9eseE9EcRdOvr(~14qRDYe z9pt>1Np~f`30x=L2AA0RVe~l^bO>zR6o9*7Q2^LDBD; zZ^b3tkoWy0$AC1~+a;@D?KaUuGB`z5WF>TlL`+hrJmnEK!m)5 z-%{k>dvV&+NGsok{z#sW2zY!Q=_$EdDB*CYo0V>io#PzVBz|CK+F!r(_hq=UMmtI837*oPH(|z8z}>b@OQyyp<^Ww1Xw!Z zVY|*DPsunH&y{3^H4;_wSF9zq9rX=bHdy3{zx@M{)^#>Z!`n3RtTs`9$;}#mOkZ>N zdRLND5}FhZ-%f&4w%+1)?g((eEDog05d#85krdIPRzzZ373y&l!72cFM!)zf{Mq5I3qGcD&rEalm7LWNJE2#4m$R0C?4Z(oUUu1X8o(!hO9dak` zmzI0a_>#D`kE`FOYl_lTU8^Wgs6sj$&6$xGSlLr+J?_pMQq5$)#Y-Lcx*Fq!*rqy? zJ|i8sIU+!LlH^;Ql