From 5f970ff3d890a60dad7c2827a790816f5e459c9e Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Wed, 11 Jan 2023 17:36:09 +0100 Subject: [PATCH] 0.1 --- .pipex.h.swp | Bin 0 -> 12288 bytes Makefile | 140 +++++++++++++++++++++++++ get_next_line/get_next_line.c | 115 +++++++++++++++++++++ get_next_line/get_next_line.h | 28 +++++ get_next_line/get_next_line.o | Bin 0 -> 6584 bytes get_next_line/get_next_line_utils.c | 75 ++++++++++++++ get_next_line/get_next_line_utils.o | Bin 0 -> 4632 bytes input | 1 + libft/Makefile | 155 ++++++++++++++++++++++++++++ libft/ft_atoi.c | 48 +++++++++ libft/ft_atoi.o | Bin 0 -> 4488 bytes libft/ft_atoi_check.c | 50 +++++++++ libft/ft_atoi_check.o | Bin 0 -> 4616 bytes libft/ft_bzero.c | 18 ++++ libft/ft_bzero.o | Bin 0 -> 3888 bytes libft/ft_calloc.c | 28 +++++ libft/ft_calloc.o | Bin 0 -> 4320 bytes libft/ft_get_size.c | 29 ++++++ libft/ft_get_size.o | Bin 0 -> 3864 bytes libft/ft_isalnum.c | 20 ++++ libft/ft_isalnum.o | Bin 0 -> 2944 bytes libft/ft_isalpha.c | 19 ++++ libft/ft_isalpha.o | Bin 0 -> 2928 bytes libft/ft_isascii.c | 18 ++++ libft/ft_isascii.o | Bin 0 -> 2904 bytes libft/ft_isdigit.c | 18 ++++ libft/ft_isdigit.o | Bin 0 -> 2904 bytes libft/ft_isprint.c | 18 ++++ libft/ft_isprint.o | Bin 0 -> 2904 bytes libft/ft_itoa.c | 54 ++++++++++ libft/ft_itoa.o | Bin 0 -> 4848 bytes libft/ft_lstadd_back.c | 21 ++++ libft/ft_lstadd_front.c | 19 ++++ libft/ft_lstclear.c | 27 +++++ libft/ft_lstdelone.c | 21 ++++ libft/ft_lstiter.c | 22 ++++ libft/ft_lstlast.c | 25 +++++ libft/ft_lstmap.c | 42 ++++++++ libft/ft_lstnew.c | 25 +++++ libft/ft_lstsize.c | 26 +++++ libft/ft_memchr.c | 29 ++++++ libft/ft_memchr.o | Bin 0 -> 4096 bytes libft/ft_memcmp.c | 29 ++++++ libft/ft_memcmp.o | Bin 0 -> 4256 bytes libft/ft_memcpy.c | 32 ++++++ libft/ft_memcpy.o | Bin 0 -> 4184 bytes libft/ft_memmove.c | 37 +++++++ libft/ft_memmove.o | Bin 0 -> 4320 bytes libft/ft_memset.c | 28 +++++ libft/ft_memset.o | Bin 0 -> 3992 bytes libft/ft_power.c | 30 ++++++ libft/ft_power.o | Bin 0 -> 3896 bytes libft/ft_putchar_fd.c | 18 ++++ libft/ft_putchar_fd.o | Bin 0 -> 3904 bytes libft/ft_putendl_fd.c | 25 +++++ libft/ft_putendl_fd.o | Bin 0 -> 4000 bytes libft/ft_putnbr_fd.c | 32 ++++++ libft/ft_putnbr_fd.o | Bin 0 -> 4384 bytes libft/ft_putstr_fd.c | 24 +++++ libft/ft_putstr_fd.o | Bin 0 -> 3952 bytes libft/ft_split.c | 117 +++++++++++++++++++++ libft/ft_split.o | Bin 0 -> 7072 bytes libft/ft_strchr.c | 29 ++++++ libft/ft_strchr.o | Bin 0 -> 3952 bytes libft/ft_strdup.c | 31 ++++++ libft/ft_strdup.o | Bin 0 -> 4192 bytes libft/ft_strdup_free.c | 32 ++++++ libft/ft_strdup_free.o | Bin 0 -> 4256 bytes libft/ft_strdups.c | 45 ++++++++ libft/ft_strdups.o | Bin 0 -> 4856 bytes libft/ft_striteri.c | 27 +++++ libft/ft_striteri.o | Bin 0 -> 3872 bytes libft/ft_strjoin.c | 29 ++++++ libft/ft_strjoin.o | Bin 0 -> 4384 bytes libft/ft_strjoin_free.c | 35 +++++++ libft/ft_strjoin_free.o | Bin 0 -> 4544 bytes libft/ft_strlcat.c | 27 +++++ libft/ft_strlcat.o | Bin 0 -> 4464 bytes libft/ft_strlcpy.c | 30 ++++++ libft/ft_strlcpy.o | Bin 0 -> 4296 bytes libft/ft_strlen.c | 25 +++++ libft/ft_strlen.o | Bin 0 -> 3904 bytes libft/ft_strlen_double.c | 30 ++++++ libft/ft_strlen_double.o | Bin 0 -> 3232 bytes libft/ft_strmapi.c | 32 ++++++ libft/ft_strmapi.o | Bin 0 -> 4184 bytes libft/ft_strncmp.c | 33 ++++++ libft/ft_strncmp.o | Bin 0 -> 4200 bytes libft/ft_strnstr.c | 37 +++++++ libft/ft_strnstr.o | Bin 0 -> 4456 bytes libft/ft_strrchr.c | 33 ++++++ libft/ft_strrchr.o | Bin 0 -> 4072 bytes libft/ft_strtrim.c | 86 +++++++++++++++ libft/ft_strtrim.o | Bin 0 -> 5360 bytes libft/ft_substr.c | 35 +++++++ libft/ft_substr.o | Bin 0 -> 4560 bytes libft/ft_tolower.c | 18 ++++ libft/ft_tolower.o | Bin 0 -> 2904 bytes libft/ft_toupper.c | 18 ++++ libft/ft_toupper.o | Bin 0 -> 2904 bytes libft/libft.a | Bin 0 -> 170530 bytes libft/libft.h | 74 +++++++++++++ output | 0 pipex | Bin 0 -> 27400 bytes pipex.c | 61 +++++++++++ pipex.h | 27 +++++ 106 files changed, 2257 insertions(+) create mode 100644 .pipex.h.swp create mode 100644 Makefile create mode 100644 get_next_line/get_next_line.c create mode 100644 get_next_line/get_next_line.h create mode 100644 get_next_line/get_next_line.o create mode 100644 get_next_line/get_next_line_utils.c create mode 100644 get_next_line/get_next_line_utils.o create mode 100644 input create mode 100644 libft/Makefile create mode 100644 libft/ft_atoi.c create mode 100644 libft/ft_atoi.o create mode 100644 libft/ft_atoi_check.c create mode 100644 libft/ft_atoi_check.o create mode 100644 libft/ft_bzero.c create mode 100644 libft/ft_bzero.o create mode 100644 libft/ft_calloc.c create mode 100644 libft/ft_calloc.o create mode 100644 libft/ft_get_size.c create mode 100644 libft/ft_get_size.o create mode 100644 libft/ft_isalnum.c create mode 100644 libft/ft_isalnum.o create mode 100644 libft/ft_isalpha.c create mode 100644 libft/ft_isalpha.o create mode 100644 libft/ft_isascii.c create mode 100644 libft/ft_isascii.o create mode 100644 libft/ft_isdigit.c create mode 100644 libft/ft_isdigit.o create mode 100644 libft/ft_isprint.c create mode 100644 libft/ft_isprint.o create mode 100644 libft/ft_itoa.c create mode 100644 libft/ft_itoa.o create mode 100644 libft/ft_lstadd_back.c create mode 100644 libft/ft_lstadd_front.c create mode 100644 libft/ft_lstclear.c create mode 100644 libft/ft_lstdelone.c create mode 100644 libft/ft_lstiter.c create mode 100644 libft/ft_lstlast.c create mode 100644 libft/ft_lstmap.c create mode 100644 libft/ft_lstnew.c create mode 100644 libft/ft_lstsize.c create mode 100644 libft/ft_memchr.c create mode 100644 libft/ft_memchr.o create mode 100644 libft/ft_memcmp.c create mode 100644 libft/ft_memcmp.o create mode 100644 libft/ft_memcpy.c create mode 100644 libft/ft_memcpy.o create mode 100644 libft/ft_memmove.c create mode 100644 libft/ft_memmove.o create mode 100644 libft/ft_memset.c create mode 100644 libft/ft_memset.o create mode 100644 libft/ft_power.c create mode 100644 libft/ft_power.o create mode 100644 libft/ft_putchar_fd.c create mode 100644 libft/ft_putchar_fd.o create mode 100644 libft/ft_putendl_fd.c create mode 100644 libft/ft_putendl_fd.o create mode 100644 libft/ft_putnbr_fd.c create mode 100644 libft/ft_putnbr_fd.o create mode 100644 libft/ft_putstr_fd.c create mode 100644 libft/ft_putstr_fd.o create mode 100644 libft/ft_split.c create mode 100644 libft/ft_split.o create mode 100644 libft/ft_strchr.c create mode 100644 libft/ft_strchr.o create mode 100644 libft/ft_strdup.c create mode 100644 libft/ft_strdup.o create mode 100644 libft/ft_strdup_free.c create mode 100644 libft/ft_strdup_free.o create mode 100644 libft/ft_strdups.c create mode 100644 libft/ft_strdups.o create mode 100644 libft/ft_striteri.c create mode 100644 libft/ft_striteri.o create mode 100644 libft/ft_strjoin.c create mode 100644 libft/ft_strjoin.o create mode 100644 libft/ft_strjoin_free.c create mode 100644 libft/ft_strjoin_free.o create mode 100644 libft/ft_strlcat.c create mode 100644 libft/ft_strlcat.o create mode 100644 libft/ft_strlcpy.c create mode 100644 libft/ft_strlcpy.o create mode 100644 libft/ft_strlen.c create mode 100644 libft/ft_strlen.o create mode 100644 libft/ft_strlen_double.c create mode 100644 libft/ft_strlen_double.o create mode 100644 libft/ft_strmapi.c create mode 100644 libft/ft_strmapi.o create mode 100644 libft/ft_strncmp.c create mode 100644 libft/ft_strncmp.o create mode 100644 libft/ft_strnstr.c create mode 100644 libft/ft_strnstr.o create mode 100644 libft/ft_strrchr.c create mode 100644 libft/ft_strrchr.o create mode 100644 libft/ft_strtrim.c create mode 100644 libft/ft_strtrim.o create mode 100644 libft/ft_substr.c create mode 100644 libft/ft_substr.o create mode 100644 libft/ft_tolower.c create mode 100644 libft/ft_tolower.o create mode 100644 libft/ft_toupper.c create mode 100644 libft/ft_toupper.o create mode 100644 libft/libft.a create mode 100644 libft/libft.h create mode 100644 output create mode 100755 pipex create mode 100644 pipex.c create mode 100644 pipex.h diff --git a/.pipex.h.swp b/.pipex.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..2e251c5b6f109934a03af81810bb009c5c854e5e GIT binary patch literal 12288 zcmeI2F>ljA6vtm-N=qn$4J33V15%>ev7OR#R23pZY6qk)MNCAFeQvBeCUVYIA_Oe( z5%?4gtRNu-BVvbvl`nw!0=!Fnj-e4MAxowAqJQq4@7>>bKg&au>oo4~-ea4F1sE3q zR=>UXHqO3W-nh8}A`zptj*x2TZ(+3@qiMVG!J{-1Jz)gN?CPi5(3FXL@UGHT=to4=~uFL>5n$+QbPoY01+SpM1Tko0U|&IhyW2F0z`laoI(Pw z4`8hTyhW-1|MlzQDxM-^8kma%cxIffFbHS>dQHR7pUhbiSke#)DG$@Y8h2R z{Y38{sPCw+sL!a6s1GQ0-#4gNC<-D#1c(3;AOb{y2oM1xKm^7Fs>egbei#5eDap3) zO7|9&ysn#+YC&Y>x!3dUVh2YagB97*EF&fh>%@DD?%~3cOfGMt8e# zt#Tk_I~GIPj>1@&zx9l6rC1q-oj{u7Z#9BLcsHEH_ICH~K4|YiH4I|40Nn?(#%c=- zRx_310z(___Yt)4IkOwKV>T?)vY2&)uUow7u+E6- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/15 23:42:35 by erey-bet #+# #+# */ +/* Updated: 2022/12/12 17:19:23 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "get_next_line.h" + +static char *read_line(int fd) +{ + char *buff; + int y; + + buff = ft_calloc_gnl(BUFFER_SIZE + 1, 1); + if (buff == NULL) + return (NULL); + y = read(fd, buff, BUFFER_SIZE); + if (y == -1) + { + free(buff); + return (NULL); + } + buff[y] = '\0'; + return (buff); +} + +static char *join_str(char *s1, char *s2) +{ + char *n_str; + int i; + int len; + + len = ft_strlen_gnl(s1); + n_str = ft_calloc_gnl(len + ft_strlen_gnl(s2) + 1, 1); + if (n_str == NULL) + return (NULL); + i = -1; + if (s1 != NULL) + while (s1[++i]) + n_str[i] = s1[i]; + i = -1; + while (s2[++i]) + n_str[i + len] = s2[i]; + n_str[i + len] = '\0'; + free(s1); + free(s2); + return (n_str); +} + +static char *get_text(char *save) +{ + int i; + char *new_s; + + i = 0; + while (save[i] && save[i] != '\n') + i++; + if (save[i] == '\n') + i++; + new_s = ft_calloc_gnl(i + 1, 1); + if (new_s == NULL) + return (NULL); + ft_strlcpy_gnl(new_s, save, i + 1); + ft_strlcpy_gnl(save, save + i, ft_strlen_gnl(save)); + return (new_s); +} + +static void *make_free(char *buff, char **save, int choice) +{ + if (choice == 1) + { + free(buff); + free(*save); + } + else + { + free(*save); + *save = NULL; + } + return (NULL); +} + +char *get_next_line(int fd) +{ + char *buff; + char *str; + static char *save; + + buff = NULL; + while (buff == NULL || (ft_strchr_gnl(save, '\n') == -1)) + { + buff = read_line(fd); + if (buff == NULL + || (ft_strlen_gnl(buff) == 0 && ft_strlen_gnl(save) == 0)) + return (make_free(buff, &save, 1)); + if (ft_strlen_gnl(buff) == 0) + { + free(buff); + break ; + } + save = join_str(save, buff); + if (save == NULL) + return (NULL); + } + str = get_text(save); + if (ft_strlen_gnl(save) == 0) + make_free(NULL, &save, 2); + return (str); +} diff --git a/get_next_line/get_next_line.h b/get_next_line/get_next_line.h new file mode 100644 index 0000000..e7c6568 --- /dev/null +++ b/get_next_line/get_next_line.h @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/15 23:40:12 by erey-bet #+# #+# */ +/* Updated: 2022/12/12 17:16:43 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef GET_NEXT_LINE_H +# define GET_NEXT_LINE_H + +# include +# include +# ifndef BUFFER_SIZE +# define BUFFER_SIZE 41 +# endif + +char *get_next_line(int fd); +void *ft_calloc_gnl(size_t nitems, size_t size); +size_t ft_strlen_gnl(const char *str); +int ft_strchr_gnl(const char *str, int search); +void ft_strlcpy_gnl(char *dest, const char *src, size_t size); + +#endif diff --git a/get_next_line/get_next_line.o b/get_next_line/get_next_line.o new file mode 100644 index 0000000000000000000000000000000000000000..3f937bc451feba80e72f7d66956dd806d9a3b4c3 GIT binary patch literal 6584 zcmb_geP~=+6~AxZ+?UCu$u#L#`e8R^TUxc9B(;TZJGOD_=4X-QpTST{o)q;7_&VOL% z=9}`PAK8=90$FYwc5bx5u0$V(E^UTxk41J6em97VVB{8;Lf@VM;pOPV?;D}Z9EQ1f za2Xr@s1U^Tc0O7VPC}PH1=t=NEr@}3Zjps99}tl1)B|smO#3c6Lheu|g=4P6#kn`2 zX|8I#(A+_xxsL6zY@v`6L;WIrJLeh@KsE6uql;+RTq|7yOG`^C&q9w+WH4Io$gJ=^VvI#+k@zCoMLYLy)9HJmCschKP~TrrDej7t(DBr$JRTc1)RE%9 z^GWnYh4RryxzR^Uq08%OWU-tohqVGl%@eJU?)w82O2HFK1BG%499E3S&W|qI`Rqde zRT{kaXoQUc(7!JZ^%C_qfEL^V^2e{6KdHYV-dq)}FvS?rxzeVu53O-3JJp_X7?V4+J#fXq=C6wz4ggWNBT zeCq={F?}HtfZ5%~J*Hl&I03@>&iA1t6S;r5Cy~ytsJyWF1G&Xu z=$d{8={Sr<=W`QAJ~}`5LpMGu0Gzo)E?0UfF4s;heth|#5%Z7EVqY$(VKb%8l8;WQ z=xk$3uClxGCl)U4rV&FT%CYif-;i!omqV4c-cZ`K^F zI#jiDB5BOJf=h+y839@P6vkyNtL^XgkXN^OFAqW&VW* zk8V^4rH?bh$01_6HRFCuC?`9!sZ6#Z(HBp3Hw-z0>E3}~Q1J>|i>Z z-nX~$T<4fG})mTqS0z076zvOXupQqGq<(zuoXFImzPg2edBmzXiU+St6RA~23} zZvjR>657n{b2Y2K={s6&nQaCr!WI!$#%LQB?Y z&4!}??@Bu@f62~-{cRjIKidz3VHp3asiuZ#_!(tu#mcLWr6U@vEFM+!eP-~A;9I;V z$Jble`K~12bdm47Zr(gU&VA-Ai}1D9Z+Os(@IV`1WgX}Kb`X<15aV0g__i3|o8;Rs z@&j$W!aBy+_ka`Q{y>DUv#tV)@y)Qrc%{{YeHgRa`I=LFqjix7W3Iy-NaHYdW481Z zuQfw$JOI1ZhKY}J3*Aj^9DYntf`Kgep>M##%-7CO@yg(BIC#XX1h-AFs-}4e@lqVu z;p?+-g2@noDFX0OIv2q&dD z|4m|2MJuryv=ldh-{O@qUKJsJ9mRI&l$bn-euURXP!Bh^3dBh{24yR%7HH-E;9YWC zYhjhvCi#{-=F_y+ha;GJn)_bm)+t_N-QlPqtxNq?z6srWq=HRQo=WXB5{^-_4H3T8 z4FI!kKmoSIc;hYFAilqOBk%>WS!oY0Cl#>x*@sKI?M(oNd${8_or#Tf&(DDedufjFDM9!mU-#KoBgMq-wpYc3$KrY9b+!DRH}|G1dNsLO38 zqZjXT`4809<&e<6u>$U_fKz_U`N4g1S$qO`ohM&$?*ryTU6%8+6E+gOL6l`j^(UeC z273GYH{Q8O&JqYAoct+V-3xU;lrM?SzvjZ?W~TN6K|hwb&Y$w&^!}pe{iDS7dH=Ek z{?`@oklZ)ApN181wIB63pOSoPym<{tocOd`RQzvv@H!9vGY{^~w@#i1^5ey~u7EeL zfIA-CyN)9(;IDXaZ~V{8bF0VGu>xLAM2KF8BOaXY393FF9^4z}fCu;T@qR6YzUhna zi0D(TNC>B&5~?|g!uPl;TQ6I}X-_Dj&q)%+Kklk*t88i6#CxvPKfMC}l*E;v3sV2Q zh7U>oS=o|*@4iy+D9X=|B=4+j75;Oni+5x66+R*HylfTzRjFT^7m`_?<9Uy!)GM^oQD5F;vE|PzQp@A{7(`ekvKK9-_-N-TN?idl7CIZRUOp* zN7X^i`^=dH0; z^HqMcx-R5n;V!2$+uafG>>PB4#Ot*9G6@eleetl{O$_w+JNQfqcc#;&j~F?SK3iO} z>!>%C9AL=|edqKg&W&_*r~0It=o$2A_@+@>BHq_GkPuopHIQ+_Uwr1|o^&Rjc!`Dk z`iA;D;$2<%oa@$J_Qj`H`R9N)5c;z7e1^Furw5;6@qWkiRYqTGn&$)yBm7Lf6YWSp zwf`U4fQ68^{xXNh<%gO&N6IL-lTz6y&?8LU$CaT)cIdwpUZH1#SL&f?6k+b6hZbap zHYkL~QCHndX&lLJ{0P%?n37HvpSUEtPOHI+rd zT`vCvvQWb^F;c0&A=KwEPzuWk48_BTSi2XzF1!}yiAKlNFi+@%U zC$zwH?(Z>vx%qd=^P}dW^`kAV&ri=~^Tg5snhW?9rA3aXm`P|ni9Y`m0JIPV@1`6$ NB?nML?^OEy{{^T@7bE}x literal 0 HcmV?d00001 diff --git a/get_next_line/get_next_line_utils.c b/get_next_line/get_next_line_utils.c new file mode 100644 index 0000000..b507ddb --- /dev/null +++ b/get_next_line/get_next_line_utils.c @@ -0,0 +1,75 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* get_next_line_utils.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/11/07 17:19:41 by erey-bet #+# #+# */ +/* Updated: 2022/12/12 17:16:22 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "get_next_line.h" + +void *ft_calloc_gnl(size_t nitems, size_t size) +{ + size_t i; + char *tmp; + + if (nitems == 0 || size == 0) + return (malloc(0)); + if (nitems * size < nitems) + return (NULL); + tmp = malloc(nitems * size); + if (tmp == NULL) + return (NULL); + i = 0; + while (i < nitems * size) + { + tmp[i] = '\0'; + i++; + } + return (tmp); +} + +size_t ft_strlen_gnl(const char *str) +{ + int i; + + if (str == NULL) + return (0); + i = 0; + while (str[i] != '\0') + i++; + return (i); +} + +int ft_strchr_gnl(const char *str, int search) +{ + int i; + + i = 0; + while (str[i] || str[i] == (unsigned char)search) + { + if (str[i] == (unsigned char)search) + return (i); + i++; + } + return (-1); +} + +void ft_strlcpy_gnl(char *dest, const char *src, size_t size) +{ + size_t i; + + i = 0; + if (!size || !dest || !src) + return ; + while (i < size - 1 && src[i] != '\0') + { + dest[i] = src[i]; + i++; + } + dest[i] = '\0'; +} diff --git a/get_next_line/get_next_line_utils.o b/get_next_line/get_next_line_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..f0ec4a723f798170503009d8ce0cf99e99d5fa93 GIT binary patch literal 4632 zcmb_fUuauZ7(e$W=Qd5--2Rz!n@$VP4bukEiEm9 z$r;QD#>GhS!%*MJDOL~G!s@7v)&>4%?0FGvA(GfNZyxvhii=P%F3+Sr58g}m{M`5G zJYmmE=Y1#5%MYR*UoY@qD$LK=yf$2k#ICY=ywUfzR{V=h*yqggb)d`Eh)KM@Nr-ji z6jb&636LMM&%LRc;}n$UHeX0{9Gfs{mrM5fxr_LerB|LSL3%Uxd3Y{O+UNUDCM}ts ztbY-D3H{t%hNjGdt!U=K)qIK-ixxw-c^(ggXpX7Eaz`e?wD^>>MXrIt-qN{3eYSYJSYf=y>5vUe}z@?y_KWBX2OE!vfVHtGp9UwlcR zMQb$((M@pX*+4vj?uG_P)@y-MtI@N@6S%(NhK5aRx3}H2mJmvbE}-pggcw_D*gDk+ zO?<1#_BQT?ka`msLi`)qK*r$Z@!~2FAA5}&*<5`*r9*xmuEn)s{yF@#yAjmPtKdoX z!y}yA39f(}TILM>@E*pspbWSu<60dITJeaW@VG(v;2t+T#I4fIYU2YnRxd1Dg-}w- zBZOAKaVsW+$ULhq=A#b%AsvOEh};bpV~APKPjM}X|^FJ#?9dmz9sjL&M;bH|hmCjoU63iy^!J*-dlMgyMXJ1FZ;|ASad^BDd3vMgq z@`e1CuHZ;F)nY(6!Zbq3lKL-8C*y0Jt&ogPla2D548@@_8eWEqzphU_ZpsjN%# zsYjfcE7TH0Ii`jJVVD@%$DnM=buxLTPEy3pj1U$Ke3QHr&n1S)fRhJzxx{~53s}2V zxXwV@BX<&QtXaFHvCcOIi+U+w_(Q@CO11`?pVYTC8Tx6^;Ic5{Kx_|I8+-(MwlFDLg%Zny2V$nEC*SQopeSRH97aJw@w_T)CGvM5!JIc!<`4vcH#l zK~q0U{e4siKm(3UQ@?+_#=JnAjd#(|3xV`!Y5jf6+TT#Gf11{#iZ4vtlJuH)>H08T z7xwIUg6f`Y!w~5-Z3p|7Fbx1_(MIs%HNr-b>Q6sFwE`u-gOlHBT@gf4+MJ{pMd?~r zFIJ}COX~q{>ZPqvKrdbW1Pa&p(zU&`z1Q>J<5LjlBNB!hPtz8t0yI5g>SM}Y<3^~j zPnHV>>N+$NS9c|PA3!hpWoaduhqvcnBG2;4S0nR~%DJTA|2~}`1dY}z|7_0#cB{Zc zB4f6f0lP`yUkIG-VZd2X|3w~UTG9THW=M?>y1pk_X|0(!s1($K( z6S(v*_sc0o{{z8)t>DuCj|%>`;D1wa8CSk2GOpZ@O$Y$VzI@49ajb}9 z!R7jIRdAWl9SVL-#EmNW>jIA{_-6v&tKh#1yj_gA2dnpCkAlno?on{rmjene*X=QZ zWB6+Seqs$c{e{6;yuUx^j1nv7q~n$g9}>h$3}-S9T-!ne?`1CL7O8A% zEXdT2_Y*6>FN5R%L0^HB>T^l@?8N_XKtJ%I@)T{Z@c2D~m^|mCphryb3%Z)rGt~rP z_4y}tC+hhuBmmSySMVvrXpI;#wwe=)W<=bQ(369zi|3w-q3-QsQ65!<3QH`|T`B)# zB7eEKm_MG|YW`OMhCXGTFlF?qaN3{*l&l=_{9nobYjH_ne$^!HK4CAFdTqig+jt!#zT7~$#ag7Z(*XY9m)=fK>Xh+x5JXu G`2PT=s-D*X literal 0 HcmV?d00001 diff --git a/input b/input new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/input @@ -0,0 +1 @@ +test diff --git a/libft/Makefile b/libft/Makefile new file mode 100644 index 0000000..27c4c00 --- /dev/null +++ b/libft/Makefile @@ -0,0 +1,155 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: erey-bet +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2022/09/27 04:19:30 by erey-bet #+# #+# # +# Updated: 2022/12/13 13:23:28 by erey-bet ### ########.fr # +# # +# **************************************************************************** # + +SRCS = ft_isalpha.c ft_isdigit.c ft_isalnum.c ft_isascii.c ft_isprint.c \ +ft_strlen.c ft_memset.c ft_bzero.c ft_memcpy.c ft_memmove.c ft_strlcpy.c \ +ft_strlcat.c ft_toupper.c ft_tolower.c ft_strchr.c ft_strrchr.c ft_strncmp.c \ +ft_memchr.c ft_memcmp.c ft_strnstr.c ft_atoi.c ft_calloc.c ft_strdup.c \ +ft_substr.c ft_strjoin.c ft_strtrim.c ft_split.c ft_itoa.c ft_strmapi.c \ +ft_striteri.c ft_putchar_fd.c ft_putstr_fd.c ft_putendl_fd.c ft_putnbr_fd.c \ +ft_get_size.c ft_power.c ft_atoi_check.c ft_strlen_double.c ft_strjoin_free.c \ +ft_strdup_free.c ft_strdups.c +OBJS = ${SRCS:.c=.o} +BONUS_SRCS = ft_lstnew.c ft_lstadd_front.c ft_lstsize.c ft_lstlast.c \ +ft_lstadd_back.c ft_lstdelone.c ft_lstclear.c ft_lstiter.c ft_lstmap.c +BONUS_OBJS = ${BONUS_SRCS:.c=.o} +CC = gcc +CFLAGS = -g -Wall -Wextra -Werror +NAME = libft.a + +ifdef BONUS + SRCS += ${BONUS_SRCS} +endif + +all: ${NAME} + +${NAME}: ${OBJS} + ar -rc ${NAME} ${OBJS} + +%.o:%.c + ${CC} ${CFLAGS} -c -o $@ $< + +clean: + rm -f ${OBJS} ${BONUS_OBJS} + +fclean: clean + rm -f ${NAME} + +re: fclean all + +bonus: + @make BONUS=1 + +coffee: + @clear + @echo "" + @echo " (" + @echo " ) (◦" + @echo " ___...(-------)-....___◦" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0.2 + @clear + @echo "" + @echo " (◦" + @echo " ◦ ◦ ) ( " + @echo " ___..(.------)--....___" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ( ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0.2 + @clear + @echo " ◦" + @echo " ( ◦" + @echo " ◦ ) ( " + @echo " ___..(.------)--....___" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ( ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0.2 + @clear + @echo "" + @echo " ( ) ◦" + @echo " ◦ ) (◦" + @echo " ___)...----)----....___" + @echo ' .-"" ) ( ""-.' + @echo " .-''''|-._ ( ) _.-|" + @echo ' / .--.| `""---...........---""` |' + @echo " / / | |" + @echo " | | | |" + @echo " \ \ | |" + @echo " '\ '\ | |" + @echo " '\ '| |" + @echo " _/ /\ /" + @echo " (__/ \ /" + @echo ' _..---""` \ /`""---.._' + @echo " .-' \ / '-." + @echo ": '-.__ __.-' :" + @echo ': ) ""---...---"" ( :' + @echo '\._ "--...___...--" _."' + @echo ' \""--..__ __..--""/' + @echo ' "._ """----.....______.....----""" _."' + @echo ' ""--..,,_____ _____,,..--"""' + @echo ' """------"""' + @sleep 0. + ${MAKE} coffee + +.PHONY: all clean fclean re bonus coffee diff --git a/libft/ft_atoi.c b/libft/ft_atoi.c new file mode 100644 index 0000000..a723bf6 --- /dev/null +++ b/libft/ft_atoi.c @@ -0,0 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/21 08:21:05 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:44:20 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int ft_isspace(char c) +{ + if (c == ' ' || c == '\f' + ||c == '\n' || c == '\r' || c == '\t' || c == '\v') + return (1); + return (0); +} + +int ft_atoi(const char *nptr) +{ + long result; + int sign; + + while (ft_isspace(*nptr)) + nptr++; + sign = 1; + if (*nptr == '+' || *nptr == '-') + { + if (*nptr == '-') + sign = -1; + nptr++; + } + result = 0; + while (*nptr >= '0' && *nptr <= '9') + { + if (result >= 2147483647 && sign == 1) + return (-1); + else if (result >= 2147483647) + return (0); + result = result * 10 + *nptr - '0'; + nptr++; + } + return (result * sign); +} diff --git a/libft/ft_atoi.o b/libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..17303a8737c66ec55f20443d8c565cb775042fac GIT binary patch literal 4488 zcmbtXUu+ab7@yti^zM3XuTX>*2pkEDsJGW*0|Esanv>&CjQu+fMIEC%u{P z`+fgsXTRB=P9Jz)*EAxBMs|`0Cs9H!v^VG>P7aY}q?`O1U-R%_X7b+T+=cX`GbbM< z*czDISr5!@Y$?ngtR3bkYlS)Hg>RtuS$YF~ynaiXXC{8{$xNP{nWdSD^o*9dl%9!y zP2%58Pu`xnJU>5wZrc0pcKSZr3fbV(EGEgMx1vFYK@TkEeMh&`a~Ns%Q0DB(xqs&8 zPoL_TIC)=#JWyvgTZh9uquG}-mk!QlChumx|5eXucQe{_X7Z+Ro`HN2o0#d#Os408 znGU8-)w9`p>Rm9Ho4k1`eLsHv=AB!6Ang{+f<*Y%2DXx;WIcy{T91U02({3%&4}K@ zIXyxVl#3SOobJoCR-fZ4EfEJ5eT;J2cjzmv)#LAgyd_eB*$=e7vq5iaAE@J70`zuH z^QhViiaK)K6NGl92a1Ryr>*EkTAw=H#@XKRZdmoHlFzOTqrErXWvkiS~GBcP!Mos&k39G~BfUJgq0O*iL|8(*y~Lw!{J5+f4|4 zg5c6RKti3{V%zCfKzH>H_ComriZ!5!q3!DBdH`V49X8zg& zs--;FNtNwf#mieH$fU-e+dQ&)AXzEf-dM6|d#P-hxr7whh{>vDBZmPzyX>;OQNs7W zXt8RIjpVA11puZ;H4^pH1SS;MD7{1Da4xk14HYG|8UVdOH^LGs(6%CtdQ^L@pGF?g zaEdNFM5ByGuF~)U+Uilt=yG(hk9On2ILv5tKMi{{dW1$MXloxum)cbtD|(;MZjY{v z4AP!2Y1<$TPta&+{4k9$+UvXF-WXjHiteM@H@Xg6Q>og;1fTFNa!XZ*B|O_L7i}w_ zK*+8!2PzLBP&fR^ts&fafkMOQ0vKHou(X_j!(7R92%j9w^(xGF*T@AacnD?Jt(iHC zh%~st$cSYhD?3%2r0jy5Dpf}DkB2c0S3>Y{hax=rS{RG+A@1%*wH5>Fn?dN%X?9FzSX=lV}=>NENVjQ)*24kr%#W)~hq_(5HGB&QJz!4JnW ze<9k5mx(skrLAfYN8W~myc%%);o#jQ-Pv_sAMR*91`2?oY!HPocn_0u{TE-s7cH8> zHRSZi{2~DWp{6${;`JA3fmx_tMFYle2nVfsL#f@04JbG6LfG z`x|~ZmiP1`A^`Uvh~UjRqhZo%(V@FxVHR`4moA5d_? zl2;V`xZsZ{xO^g}f?pSWNx?r7yr!3Qt+DK zzg6&O1%F4uw+a3yvC8Kq&(o};zfSNE75t*$qarVShWI-w@U;s5slcBSI4;3+5sZGYh)u_|i`GID_^7a?34|aLnO%R}(+ z^maR`k9^u5W-&GkZrIX#8&>IHa9i z-vXhegL+rh7eWYC-S+^;eHD+p?&6xTPt*~gko8OWOCZpvYCkRP4@*U{s`j4)-faJ` zHF^H{bs_ELb7>YEL-k-$FwTgAmjd0)9-pcD?xNj?BG4LS0z=(DJQvOE?~44t4%i~8 G+W!l{;R!4N literal 0 HcmV?d00001 diff --git a/libft/ft_atoi_check.c b/libft/ft_atoi_check.c new file mode 100644 index 0000000..b549055 --- /dev/null +++ b/libft/ft_atoi_check.c @@ -0,0 +1,50 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_atoi_check.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/21 08:21:05 by erey-bet #+# #+# */ +/* Updated: 2022/12/08 16:37:19 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int ft_isspace(char c) +{ + if (c == ' ' || c == '\f' + ||c == '\n' || c == '\r' || c == '\t' || c == '\v') + return (1); + return (0); +} + +int ft_atoi_check(const char *nptr) +{ + long result; + int sign; + + while (ft_isspace(*nptr)) + nptr++; + sign = 1; + if (*nptr == '+' || *nptr == '-') + { + if (*nptr == '-') + sign = -1; + nptr++; + } + result = 0; + while (*nptr >= '0' && *nptr <= '9') + { + result = result * 10 + *nptr++ - '0'; + if ((result > 2147483647 && sign == 1) + || (result > 2147483648 && sign == -1)) + return (0); + } + if (*nptr--) + return (0); + if (*nptr == '-' || *nptr == '+') + return (0); + return (1); +} diff --git a/libft/ft_atoi_check.o b/libft/ft_atoi_check.o new file mode 100644 index 0000000000000000000000000000000000000000..843ec1e26316ce5f1e743b84f6de0b7e164fbe8f GIT binary patch literal 4616 zcmbtWTWDNG7@pb9WY1LJ2W?+w`~~$H_V}Kz`5M@aLqp@bkj*^M$|9ocue> zZ-6)T`k^uS^zbabh(jFGN9V!bfAY%P3c zefnd}qF-5b(OUQvjjR`sQfpxn!&wl|qF-3^OT*SeVHs0AW9=?1Kh-^d@+#$PTEMAZ z09Ifx!u9ffaFbL|~$Q_h&E&*je!!B)G_Ju$@NNDDeL z9TRW}#Eb+I@h(<(If-=%E@m(U)j|!y#X=eF4mqLHWq7C zXdgQ_1zF4il@dxB5dldY2f~HWx6)-oGn>Rd&Ox4Z4ZWprAQkW1*tdqRP4uq^PdAfP zYCk|wG)Y3DT^T^{9w3C>N^t2OCGoyJsl9ABpa+J=hG6>=O0^-wqz8tC9)PzE-93Oo z#s^#BbS>?Xbs~*r%wg+%X~1!_WeO zco1qDCq7V={?*qDvv}13rTM`3@^!b|2&NnoW%9GTb{2Pz<{EW3n9Wt)AYZC;a8cn! zn>Xvla?L3}W|lEb;MRRUW!A7`R2|-&;l*;(a{$03870XuSzzKB%GhO=fzwGVEM8UA zCIDg;wgr}Wh4oZfGGO%K5oY|s5_z`nA(rIKc$+1Tuo(&AM&BhqpaFGpi)-%Ss=NX2e@3O9{qEZm0$qdehLTAD!XQ}&G_eI9WSkK{( z!2lM?#bQv$M$@fk#e}b%Uu$|i8@PVG>N-@{9NEZUU#Q*+%7d7AA~-)%a7$| zye44KnKiSU>c_#@=d#KfNL?USXzBe-zco~lWCcyEJLv*4- zU;lHliQeuLpa2-k#!v`D^gkt!_tQ`#l<70LhI`<*6&*)D-tneJy!G0xGK;r%(T3Lm z3Fo;5s4j{?T;4z}p(Nr&Tnsu4`r>xzfQugA0T+F|10MO z$LFvX_N(@(?xJhjTjVua{bq$ORR!>VitbuPL>&JEvb0!d910ix6Zq={+Qz?=JhXo? z&^-Dyw@4iQM5{U+!BMtH^7}RXR>>DM{DS0^2aq?Jt14eKbL$>!{3*D zpy4k{{%H+Y`8}uMUrYW?4NuGZzoX&jCH{ei&r1Gd4ZlP3mo*%}jBtDtF5*qX=cUfq z6^X0oexv07)bR6?Ps+TMKHl9pHf#9B5GGqCj!X2MM9-(9(FA)N4qgA55WWV_N*sMh z{f}$7+AlHvxoPO)uyQY4Yl`B|EGOoa&23_qe4m(})3D7crxa9+b+^(4nV{`b$#YJu z65F2bR-M%*@PXne69_@fa&vmxfg8?r;npyrd&8{(w}|B7OU8uzWXAFMob>I~iWSeE zcI00E&$1DWv8K^lqrY*SVCY|H^09?Nm~VtXV(Okzf;V(UDbV5D0LOdgzuJ$0t?m;; zsrZLAp~i|YQ@kg~(I_%@$tHDP9vhWg)L!T;7AjR0l!u5g{P_b%#64W}`{~!BSbzN5Q1 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 15:21:33 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 15:31:11 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_bzero(void *s, unsigned int n) +{ + ft_memset(s, 0, n); +} diff --git a/libft/ft_bzero.o b/libft/ft_bzero.o new file mode 100644 index 0000000000000000000000000000000000000000..8f185a2d75ffef373e84ad69993d3e0438051271 GIT binary patch literal 3888 zcmbtX-D@0G6hE_*O*SUkP0|JvBD!d+ZFOgpuqJI|(lj9-g$lWPtPn;xJaR5?2Zhw zSQ`x&jsSEPKu@3TnNFTTcy8pm5v*8HJuNC_Xy-<_9gQ+XTk~k#odi9F{@ge* zjP*Q2HQ|L%f#2m#E<|EE-b6(Q+8#~2m+r$mKP>nJwS3^YdCM+0f(nBu$ZwvWEKU}3 z4a*KTb2U52mn`1{sQSgyHgg@LOwj||^8AWXr{h**zO(KZ%Z|&Cp!$*;bcb~!&@);x zk;*5v)J#Ih5*m(O%kmqYj==V;n$0R%0vHDWpjc$~hUGeTG%5FJvu*`yqcH+=-B#do z-E@K9aK^GLaFE-pJFd?Yhgw@0Q5JWUYlpmD_40M6$-F#s*;cN^{Jig)8)mSXUkF?; z@Cp<8b!(k%<{MV2%2#B%HCTRrExRy2l|5q=jInI4=?6BOsWF?mRvDq`mg_UP@43lB zHdo8$s;0MPm+QC#PT=JN`wEtw^UYF&c{u6$X8E<;y6gC?>^pAG^U;vJ!ijRj^y+fj za%`L^S0fl;d12vf_QYB#u>Bw`DK{Q)G=6Pj%or;e<0nI&9yJQR`Tcm&>xoODXMCGD z9WRoj;Q-q9i=b`xYoongsXaUyk04JM2|uHY>Haqp3w@m?8iaK0omxx>{Bb{S5|25WBria#artisDDwW#pd1zuHn0pXIu*93l9;olY5RQQhtt}Fc80$)-1K;UZ% ze?j0I3jeskw-o+&fj?6CZGk^i_*Vq}O5sNZ{$Am~5cnrCs?STF4SK%Ow^N>7)&A-O z;$#I+XCZnX!0@)3*hg{n-Egc+&1DVK@Y$vhM#c0^FiM^W24^d*6x52AU3GAd>t?Cs zvW>QB(>3iHYj?qKD3dOj2aK}QY%=`N88$X=16wIJZ*1lQe@nz>^$w~)lU5? z@^PZ(r#?V2|EvEb`l>N0ugrgsKtxpAah!`=|0iPoC&Xc+_0#!P*FTS(8WSmCg4`t# z5!H4L=Twf&?+8-%H5o#+eE}!p>i=03D*dT`qSX2=35`^HZOrn6ge(xqK<|Usn=JD91O@I?jKRib9d!nGm(sD*bnGLh90n#**-l za-^%aA0S7+E=0Lx!lf?!vjWROu3zHMQK6Ws|69WUv@{f>>i;S7WI8A2bpz+FNyc(SppGJ_m6%T#QBej`oE6&lB)Xu E3#BS^AOHXW literal 0 HcmV?d00001 diff --git a/libft/ft_calloc.c b/libft/ft_calloc.c new file mode 100644 index 0000000..15af293 --- /dev/null +++ b/libft/ft_calloc.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_calloc.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/28 16:21:44 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 14:17:31 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_calloc(size_t nitems, size_t size) +{ + size_t *tmp; + + if (nitems == 0 || size == 0) + return (malloc(0)); + if (nitems * size < nitems) + return (NULL); + tmp = malloc(nitems * size); + if (tmp == NULL) + return (NULL); + ft_bzero(tmp, nitems * size); + return (tmp); +} diff --git a/libft/ft_calloc.o b/libft/ft_calloc.o new file mode 100644 index 0000000000000000000000000000000000000000..13201cec11e8c86b3d0ad0e9a13d2147c3316668 GIT binary patch literal 4320 zcmbtXU1%It6uz^QNjBLeo21n?RO~9%w$PnTN=TdjrU~0_ZLqaAP@k6B*}J=gyR*yu z#3a}@P$=E{VCzFc6e@~uVyjPL1w~QolRppQi;x!~qJpAG@rQcOoqKm@Z^jqBWbZxa zJAe0_xpVI1LU!(GOi_p!3OPjDoInYACDEp*897bvBOA%D$p`w#sJ`2Fvr_8Lw<4l*|mk9cNjX;Mw_29#auIc7p(6R zpQ~&|mF9;quO@GP0n6Ry*EyjK+-DzcgH3m#I}&Hx?`L#qx*VcoNOyg?X$lrK-ov;q z&9XhBb}>$kYY2)(i8C%1$dvAYV=7v_JHCRd91XlN#n{$Z@+A;;$CqIaTx=U`)4Thp zTlk(3y`Ry&AR|h$XAxIEL=MW!4?&WBh$_j=X;@;{&T@8pz@AEYwFXg!`%p7>tpdA1 z0U*jFgBud+;FiH*Wu#|l6G-nT>fpY_{=`(`_y)*i8%ZP%fd-U_ldyL!2`J=(3u^UD z1V$Pf9UeU}3K?>U`3az2T{%1|oNpgJz5!!SZ@xY=s(_C^EfhGmnUDl{h>M*dKz3nn zxbL8TjKWD&q6Ki`dstQS8qA9F=imU$>}*2~l#K5>8Ot`Sevy(elUdw5nV+0US1sFL zOqXpxQ?NWYP^nslOxZNot4y_Ak&>4;jcT=S>L%{Ow=LHz>J@yA%G9ejKwNhy0FVes zinIi@3YwZidV}PEQIm?M#Sd#EB-W*PTEf=`Zfn|At*@-beUO~c`g|?sYrXLsnsOo* zgVd^ZyPRSZ9$nvdt+GvvDP$lj{1Mk$rg@Jroep{1v;zhk>NsszX2oy_n?PdO#lRB= za4U7kW1+(72WW>&+wy45WjkqCisbXuUa*|HO)_@L%~a|&>Sm}zm(m65Wjx1NF#N^L ztnawKJFz>{uo`qR0}rFbQZt+~IrjK`YIb~2YD%Bb$5QE<=iBsPncCE`OkfSitQ>>~ zo1UCVrOT;w$#9o!vjP$8zMJ;#XCRxjXB4W`1)=L1=F{nhQ}?Lp)t$8Kfg)N30<&tk z6(P3jHVDj8h==T0t`;#c8hJpefVaIlvlJ2-SHHapNAy8s#i9yNn0 z#Qf!6luV86{J0mfn@%g0cic`C^;v6_VZd2mjKHHetOhMELVsO%XF4i@o)s}vl8iuc zpIG_zLnQ<2Ktx7D^$`sS`e&pUY_?I}C;kO*zZ=j+TCWtzADcTlb7U@m^61egvuE;W zj?Bzu^Q6Yw4XPEEsZ$4+WCu<##CiJbUND{r;C1-<5IzjF&}VlW@OYaD8dXKb5yz|P zZvi-7E#Ti39+%?3zBl~}w z+sSx}<9MdR=Zfg=QVse%tez9B6+t<)YUmza^oU+GJcH;3*Cjebi?raE^OjwzgN)He zq2SPk4zb}FcA0jXz()iXCJ=|{X1!LUaAE2;TrN7ac(`2Pvf(^@ZRl|AG^pb(ao@C( zFF8hy@`V29k^+0Im8i3DH_Zvr#{|wFlVAy+1MDf&EhHfB@K&DV_z0|ME8boFc*F51 z{1BIKkUJ=h7;^kwpo2dDtNkR{%04lyh`&P;N-P-%-KhMBc%lt{*f4)QzZ@na{~5q! zp8%1cId~J9(2#ZKK_+9UeuKvy3)vzm>z)EEYX2+v!od*sxPRQcynhQY*(X5ca~}UE zWI{vMErKj6{w*F~)CuDwB**swL!V-wK(g^3KM>cYfPxk43TQ{!pXSX5&sTT|JFzxF zDCn@>`Eaue31r_;-$deaZHCXUp#{+F$1V;~+AjA=hshWKs63eE;Ge6fR`@ Fe*hlE+lT-F literal 0 HcmV?d00001 diff --git a/libft/ft_get_size.c b/libft/ft_get_size.c new file mode 100644 index 0000000..ec08039 --- /dev/null +++ b/libft/ft_get_size.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_get_size.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 22:50:35 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:14:29 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_get_size(long n) +{ + long i; + + if (n == 0) + return (1); + i = 0; + n *= (n > 0) - (n < 0); + while (n > 0) + { + i++; + n = n / 10; + } + return (i); +} diff --git a/libft/ft_get_size.o b/libft/ft_get_size.o new file mode 100644 index 0000000000000000000000000000000000000000..9d09eccb04d36836a9d9f7e7d1b4d5a469064b27 GIT binary patch literal 3864 zcmbtW-D@0G6u&dO<8GRECvB=GRCI+(8|cm^CG^uap>gfhRw+ur4`iL)y}LVfGaKh4 zCe^lT#S(&`pwtIJ-}Is2iZ?Ef35n8}jb%mk>xG<{&Lw0$ zn?aOH8?F~JJuQ%)HIS5xmK8{kb=m_l5+>=akA}p>v0~rHbn^pHrL!%Vg-dE{t}E|c zKe@*5PRRR(EHY`Pfi`lSBSHHt>oLuI=n!E2qZbEUrftl`pvgeip2!UkrgB?y8?{ZD zp@+d}D;pd<2o!9SMA%T;1op@+*JPpPdeLH`;YG!Y8wQNk!*YX%<-k43tt!TkJU0ky zRueBbXxj5(x!U$Q5Llw2v4OZ$04Y;5j3144k&%v!b!Uyu7Yy@)k**urAB^<4VZ3By z^)b^JSTeMux(;Qw+Fm0sCcICP7q|_N*YXGwbuh>Yf2>^Q-h%75Jtkaw%)60#XmI1c z-;G>tIzAHb1e0Qp}K@)qA)n1qE`=!&GsA*irnW*g$fUgq3 z(PD8X@`EUt+*zD==lNo>EbgCx`^L{(z)v)asf)EVR zD^^rnPSBKUx9x$VT2Elc4$sW&%Wt2pL|z!hB^4$jfhJDx9Jj_Nt%9 z72+eseu3~?3jYk@cNE?t{ISB{Cj5oMze)Il!ppiZDf~9V*A#vW;a_M~pO?HFxL@%R zCp+v7I8^($1$!@_Cm!!Y@;)#tSekrzlw)gSKzzJLGK ze*%2fn3z)L{~JMKsJ1&mhuwHOVT0nYbRgU5l3?FKJFFE4{3j*G0hra8sJKStd12L^ zRNLdAQaQAKh4RXNBqOM{M?ulAe$g~RC;hSh4E)skYrv^7fnqC^|2qVUq1u)~*DwD# zeVXJsVSc34{PVzJOj#$0Vmw6`;+&FDLb+o9>F0j~i-LjAH#wxAT;Btwl#_OM$Un)U ztlDCq#B-(NLK87o$v;n6E^_}8W8cJ>s{aTzIr;sO_NxDvpukkq(tuXG&-vrmT>8uB z(l0lLI8OPSwBb#_;Wtn9$297@3lzIV?~m;3$l*}W5AQ`k|JSJgi^8irss8^0^JSXj literal 0 HcmV?d00001 diff --git a/libft/ft_isalnum.c b/libft/ft_isalnum.c new file mode 100644 index 0000000..59a05d6 --- /dev/null +++ b/libft/ft_isalnum.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isalnum.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 16:47:30 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 16:50:25 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isalnum(int c) +{ + if (!(c >= 'A' && c <= 'Z')) + if (!(c >= 'a' && c <= 'z')) + if (!(c >= '0' && c <= '9')) + return (0); + return (1); +} diff --git a/libft/ft_isalnum.o b/libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..c08b5fa6d1a5f25ef4173f41af4ab77701d88d8c GIT binary patch literal 2944 zcmbtV-HRJl6u&o<*<{To-QBF%Wkn+@wct#WWvSij)?lc$REh}upis7x*_#hcCSg8m zwz5%B#J(vA3i_@O3O-363nJEkz&}6`gg%wNX+h7Kxo79*?m$5=%suD)&gcC&cizA7 z`l~t484b?Pvs5CKu@4qfz7?}Aw#KUL{)s34+I{WjA2$yle0cbvHCurB?b(wsUyJ!0 zvnufQnBSfiZlUX4^A@JK`jZ259uZcIb1ucaGVLgQ4tZWSuPPYn`PYaVF6h^g%Y8Ov z`Mf#sLU38(&sM4>qq0$1;j4w^$3SiKm)DKTxzdZJ?b50BOI1{~PJZ#qIuRlbBEjFp5i!he0Eg4RVxJx4jH_R{ee1B;=3v zgIPOP)l87j@D1`cfepw-TzMsoFzj^ zb^mVw&)WYVGWH+;GUQL^l9d}%)nr5V<$_lM!@rmAk7ug)E +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 17:34:33 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 14:40:50 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isalpha(int c) +{ + if (!(c >= 'A' && c <= 'Z')) + if (!(c >= 'a' && c <= 'z')) + return (0); + return (1); +} diff --git a/libft/ft_isalpha.o b/libft/ft_isalpha.o new file mode 100644 index 0000000000000000000000000000000000000000..b703773e5c2e05187bfbaa1c6b846f34c3c72afd GIT binary patch literal 2928 zcmbtW&2Jl35TEsWkqHI z{z}0xfQJD)kV}jLOcrv!m9i~312y>T^izNDzIyM$y}J)Ty8EzoxPbH9hc%qvN%=d6 zr6V%`!#bj{w|?<(E)oKZX`WLluS`vaFA#5(ty>DldgB{HO&|4Vh%0JzATjh9x<%4PdSd&@q*daXu^*4eLKUNveM#sYIO(_O0-&SHt@ zz_xd6a}gsyPtoy*C8sk_TnWoeZz5yDGdLT@Kb11h=?3F+4d}*ugUB0B`kw2j_Lc!l zS#a_y8D%Z43vUZVXqi@7CMR7wTK?rn_EuMsX5|?VbokIPg*QLchN~y>!vJ zxLJ34b*Jk^2Z7%Y$H6#>oFsUE5bQg#*BOckl~L^Z?>duk91A}lhfWluA$esAf9OSh zRu9GjD*Ub@D|-QOwcWm4e{Q#v1aXp8=QNX4Y94N^yX%{7^FoHFyOv&|DzX;-a8YzV z_vu=hnHukAHjF!Of-$WcYo|(!pW_KUi7@?Wq~~{~QvIaRE-&=aAcN=5bXSY;=fCrm z=G=~lf>YjKrMxAn9*1kDdgzYwpgT)Lx8KO%6L?+XRHIraxY5A~I}vFdX0*>- zET%EI`(EsU+leA@LoxK+ebGsJdxM}mMqSE#olYojl73wmPKWjF`~yI=}%{qbld z@R@Z3?0gry4?7=U0x9=`#KkvZBEtAU#uoj(Zs?7KT+9C84{>QD9QF)1bI*Y`-brEd|v5-t3x<7@eJ+?U`oQiAvn z<0ma0+c@hnN%32%1-LFL6W#U=ROlGlo|E7@J4&kCzJ~a``ftc4VSlQhUN^n|eZ=&b z2*FztRR1XuuG{V*HZT8YGC%JV<)=Q^^G{?N9*10`+kS~E+E?BDNCNfTHRX8y41bRd#nk_kA^SR8+O{uD~A^UQ{D~Qq8OZTTU)q58qm{L(V_`8rvC-<7}#XSEbS^v-M JD5<{xj{x=e@e%+4 literal 0 HcmV?d00001 diff --git a/libft/ft_isascii.c b/libft/ft_isascii.c new file mode 100644 index 0000000..82b1c10 --- /dev/null +++ b/libft/ft_isascii.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isascii.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 18:06:14 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 14:36:18 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isascii(int c) +{ + if (c >= 0 && c <= 127) + return (1); + return (0); +} diff --git a/libft/ft_isascii.o b/libft/ft_isascii.o new file mode 100644 index 0000000000000000000000000000000000000000..926ca436ab932059b88ad891744a50d08d4ac489 GIT binary patch literal 2904 zcmbtV&ubiY6o0d`(0HbMeI#M@S@n87rjc40dIQuKk(#9yoeU`y_xUJeD|C2q7UZ#-ut|t-=A}I?d2Cs zh5<|l>_Vez|w|;fHr0!nBIx(b3!k%JHl9fIM&i z;Nn;&5$4m}=Tcc2E+}$|WTR@`Rxq|3UlMA1XkQ_z^w|)~Wy=p@3|TTR)an(pwq9E@ zmgg29MYCf(zh>61R-UVDS1zvItdpU=`o#-tMjg{wV9sZ@oAuHvw)hlOD!UbP9y32f z+3~}c(~$@6gmvbxqF}<4I2y)ZwJMJ3qT+N7=*9bfLr7S>IVz zD3y(#b+&IUB$n|;se~z-K`&|!#v>6mMJNvKu85m)=-zRYX|t1rQ4(!!HYff>Oq)Z$ z+lyx_UB9*0=(L_~Y&%=dM#CP(Ng#ImA`qePq3VX-U}t*evVD20VfPz$&y5ZPZxD`y zaT3`{@QxoG*s6r&?WWd?8PMgunc;{Xj_Ptldm0IqjB zR~t|7b(0`YvhM6wl4`B@H#eM(EvI!U!?R?Nn`0ei^qgi+}sF#z?oCz~ex}1R# z%`U?%N_mt^rWj3_Q?y((VIfx($%Klc<)R7ITu~$wYKoSNCY;X|MKa;k1x_<8E9-M| zPi78(u5db@@mT~|CL32EoMyR8AktFCfbo{pAJK5B!kQFlU)5c@r1-1n!BKFk`;*kS zCD-$C&(sf{Q6@UGM7sZG2A{$k5~m*3KEa6&M|ca7$6>|?EX86PgLB}D0y<0~Nb zevml$9!x|SAIjWfu-^;ak&tuwKWrU?Y3+D@IagZ>C+AD*G8Cu`rSnc-lC?E_`i^8r`MX!MN#~H+5h((D7n7={{UOF>5>2d literal 0 HcmV?d00001 diff --git a/libft/ft_isdigit.c b/libft/ft_isdigit.c new file mode 100644 index 0000000..3b5cb1b --- /dev/null +++ b/libft/ft_isdigit.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isdigit.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 18:06:14 by erey-bet #+# #+# */ +/* Updated: 2022/09/26 14:41:48 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isdigit(int c) +{ + if (c > 47 && c < 58) + return (1); + return (0); +} diff --git a/libft/ft_isdigit.o b/libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..4a1c779bf9f76c2254683fbe8e432b6bb129383b GIT binary patch literal 2904 zcmbtV-D@0G6hE`G(0{oKKbYV_4~ivzw_v$JCB-ot2l4pn|nwxezhKw z<*grGoXf<*d>Z>q$}7`3g)b3rRIOVI#(Lu`LQN0#E5wyPA40io`9X{>OUAicy<*nZ zYfHxR+~VV?c8r(S%-ZG33zhB4`L(?|DcY-FzPx7CF^mP~e5Tv0msYXFXP{EKQZeT- z@^cg&KP)+&dE!b~X8JlZCOnO^Vf!vOxYe-x4ZG(? zhk-W;$H6#>>?C;454v{jc7`HCWfZ&KyY?g;$HI%pp&i9&NM4!38@kbe)&4j@h1XML zfNQ(EmmAOScak7ZvXbmpl1i<+n;Xu?meabB;n}rW#9gxR!&T6k9MM%W@uRVl5is6= z1B~gSv3_Q5{xjV5ClIHPMtWvfYm1+hcB`k}MuQA4oaug+;kUnwlxAUPP%X!YIpby? zS2+VCnl-~LN^z7XQ!kKWQfzt@f z%KjYp$;{=?1rEn6K8*nLq~i>P(<=7}#IckSVEjcXKc?YQgf+>~xvHmhL9tiwgQMV- zwv2A{wi5~mu~I>Ct!N7#Bu<1nKG=3+68!RflO3r;7B zzzN0Bb-JRH^bh=?H%48`yPZxbZqKOQ&<*-x)@A4if?Y5LINo?P68N+_0k*n>-G{A? ztuN(%kU01VOhgzT%GhFX&kZburWF4Jp?|6SXR$DU1_e;uTtB$8oAdKG$*8N*; zy8n4}pnLIO{psH5F{uX5&y+A4x-I>G=#^;Wr;ZQh({Ut0>IZ`O4&!eu9XmMdF-h@L zss*?yDHGlHHB{&r*{(`(gB>N+ZC^#asQ$K4n7aRw1TL|mq`LpNh!^eurv>{@e;M}Yb1BMA wss51p2Xev7h|%9m_op+}dlw;ihl;|%|AkCCxz}_riu@nQ`hQ?YN%j5z2l2z{B>(^b literal 0 HcmV?d00001 diff --git a/libft/ft_isprint.c b/libft/ft_isprint.c new file mode 100644 index 0000000..c8b42c6 --- /dev/null +++ b/libft/ft_isprint.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_isprint.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 18:24:36 by erey-bet #+# #+# */ +/* Updated: 2022/07/17 18:27:27 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_isprint(int c) +{ + if (c >= 32 && c <= 126) + return (1); + return (0); +} diff --git a/libft/ft_isprint.o b/libft/ft_isprint.o new file mode 100644 index 0000000000000000000000000000000000000000..3a498c8df3037d42fb688b52d11d6e002213705e GIT binary patch literal 2904 zcmbtV-D@0G6hE`G(vQf5fD;V32uL(6hw6Bm<_+kLXqSf~!3|TVHRjMVk zvR+v-mgg3qM6+YOvSwB;mtHPym(H*4R>{y@{p!^j$d>g`&~1PIs+^*fQQO6fnh1V5UIb?}YWdl<#O*y##i1bq)xH}HBplS>!vi(56jTeCZE zc<6h*VC0YD(2o80`~HC)x$S`n(HKUq_ntitMv?HMQDBD=I#N_>@CI(!V{?DxqrvMa zI>5D7>vHXdy>{$Jaaxkyh!d@Gw7KDIY&ne!DV|=NMcgF|KU@W!$uV6e6F;Jrl!5WV zEifjF#`>AL`Ok6JpF*5IqU6l3Ru(@kw92R6L5CF19qE1+;rD;?jAm|UP%YELoC!0h zRnEYOrp+*mQXZwr6r%}qik68cEM$rznNU)+Of;dKDT-u5MbR?RgtM8VNG6yHKj1UUs5Mum7Ya~Fn%Z4 z_HVW6@#iss?!|wNZ(yvRlWO4knG;5&`_li1UWq1tDt#oMj$;W@KM=%snD6}#VtP&r z`I!c!n<<-)y6+ok(J^vfmEguSG8J^+*AdREziFlZ98dMr>!#O#fS8_>BCktuj}(P; z-+i>@%|Dj&^FGo1)aUyAW5g&Y*NI|6-^hu6VL)=8pZSM~=f#Jzx#@gW;yC7?ppj+O z@7tNjA+zYdU!sZjRd;_Nfm#-tNW6ZAzej;`>hZ@CxWtZ<>+#Q6a;PcC>FG5UMy@pPto?;-^6Qc+0!Ur4o+drkKuFaCk7|3?m#T;Ko4ER5-& literal 0 HcmV?d00001 diff --git a/libft/ft_itoa.c b/libft/ft_itoa.c new file mode 100644 index 0000000..54e40ab --- /dev/null +++ b/libft/ft_itoa.c @@ -0,0 +1,54 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_itoa.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/04 17:12:52 by erey-bet #+# #+# */ +/* Updated: 2022/10/26 16:00:48 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static void ft_itoa_bis(char *str, int len, int i, long nl) +{ + while (len > 1) + { + len--; + str[i] = (nl / ft_power(10, len) % 10) + 48; + i++; + } + str[i] = nl % 10 + 48; + i++; + str[i] = '\0'; +} + +char *ft_itoa(int n) +{ + char *str; + int len; + int i; + long nl; + + nl = n; + if (nl < 0) + nl *= -1; + len = ft_get_size(nl); + i = 0; + if (n < 0) + { + str = malloc(len + 2); + if (str == NULL) + return (NULL); + str[i] = '-'; + i++; + } + else + str = malloc(len + 1); + if (str == NULL) + return (NULL); + ft_itoa_bis(str, len, i, nl); + return (str); +} diff --git a/libft/ft_itoa.o b/libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..1decb7cc4ef31841453e3467d258808b6bc932d9 GIT binary patch literal 4848 zcmb_eU2Ggz6~1?7uRUugUdMJtOrmCy0yHH%Yeyz+()_qKn@ovIA+3=?pv~-hc6Y?? ztTjKWU13UP31zj4R7(g^(FdLo4-tX~BorR7DN5YFkhi`BsV_xVlLuEsid9g;Id|@z zot>C&uPy3UZsf=Z#~3Hd=R#&5sm=-ZAKgact9QebBmd-I!<>c8u~Jh_ef-)(6*y z*9tpyZS?_t^SaS~dHequv@6psLf(G=z1V;!TB~>4g}cVjjTUreZFQHdq>P8(-{n1P z-R1*s74F|IaBgk&E?IfLUAVutp`c5s2iF~N-628$A8>;1UB>C*quYVe-6FZQ!Zy7( z#{KAj@cTRreYZWo-45MntX`V`1zml$7pgqzbYQLAZ3C#*& zA??%&{X+i?cdQZItAu8v{r)M+K=fUW$IKkTE-33YjmOM96UJQBAZBJV6s~9(Gjl48 zxd6@w=og1Z2i2iNLkH+c|M2G^!cj6fcn%<#YQe&!rZRxOG)f4YBI?lT!57#m5YLaF z8HXto&|nAZ*Xj9jZU^9($6p%7=+g&(HZx8k2CSK?K@9Go93&(S5xRf@op!t;4Ye4|JV+dfzTl{A2(^q)if;meB(pfn$NZr*mv^PXv1EHB?^L{et=X`=yyaRexsv7Qeb>Bd2Fv-`!1V%e>O_9Y zUb2?+b-PsYaWtk|B^SRjpPik2E_+I!(kHUHh95ZA*{bDOu3ZMvbj!7~u{ZVt{LPOemx>!w$eYP;!x zqFjl|gj}4RJ)M1Kz7#lq5Oygy8E|RxM<*uqi79>ZScv0RL&7RK41cUxFc#co8;Gg! zM;Z$oLf^Pd=<+Z)9w_z`SL{hrNmRrmB^2JC*10|KlYo!F{K$EcSI)UT?7zMT zE{`Y_wfHeBUYvVn=Eb?f`!%7%^+1xi+(Cs9j__+jo=f0DB(Em$ zLqh&;0{?}O%>@1%A=eW4x{!ke{zD}aWJ=)DUclk=PuR;nhB|qYllF3cl6V%K zfN<}`_s=wfKoXbzB)YfKfC~m%-woTEb|w?6MfP2O`?}PkLVm-v`Rs>XgifA z=s0hdO0IRaOKrNQQ?1boqonOT=#m(kAH+@p$@&;dPuhMH6utVtEDE~x$NppAll`{= z>y_US`3Dlpgh&?m$p34RU+xpkk5ih=kM$E{%6P&<)Oin9GN*!1%Mn>Y}- zzv3kQWZMFz +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:14:10 by erey-bet #+# #+# */ +/* Updated: 2022/10/09 23:22:24 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_back(t_list **lst, t_list *new) +{ + if (*lst != NULL) + ft_lstlast(*lst)->next = new; + else + *lst = new; +} diff --git a/libft/ft_lstadd_front.c b/libft/ft_lstadd_front.c new file mode 100644 index 0000000..746f007 --- /dev/null +++ b/libft/ft_lstadd_front.c @@ -0,0 +1,19 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 21:43:39 by erey-bet #+# #+# */ +/* Updated: 2022/10/09 22:02:22 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstadd_front(t_list **lst, t_list *new) +{ + new->next = *lst; + *lst = new; +} diff --git a/libft/ft_lstclear.c b/libft/ft_lstclear.c new file mode 100644 index 0000000..1778aa4 --- /dev/null +++ b/libft/ft_lstclear.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstclear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:56:15 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:13:45 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstclear(t_list **lst, void (*del)(void*)) +{ + t_list *temp; + + if (lst == NULL || del == NULL) + return ; + while (*lst != NULL) + { + temp = (*lst)->next; + ft_lstdelone(*lst, del); + *lst = temp; + } +} diff --git a/libft/ft_lstdelone.c b/libft/ft_lstdelone.c new file mode 100644 index 0000000..d06004c --- /dev/null +++ b/libft/ft_lstdelone.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstdelone.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:22:38 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:15:03 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void*)) +{ + if (lst == NULL || del == NULL) + return ; + del(lst->content); + free(lst); +} diff --git a/libft/ft_lstiter.c b/libft/ft_lstiter.c new file mode 100644 index 0000000..1680813 --- /dev/null +++ b/libft/ft_lstiter.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 00:42:33 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 00:56:30 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_lstiter(t_list *lst, void (*f)(void *)) +{ + while (lst != NULL) + { + f(lst->content); + lst = lst->next; + } +} diff --git a/libft/ft_lstlast.c b/libft/ft_lstlast.c new file mode 100644 index 0000000..9ca97dd --- /dev/null +++ b/libft/ft_lstlast.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstlast.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 23:03:50 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:14:51 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstlast(t_list *lst) +{ + t_list *current; + + current = lst; + if (current == NULL) + return (NULL); + while (current->next != NULL) + current = current->next; + return (current); +} diff --git a/libft/ft_lstmap.c b/libft/ft_lstmap.c new file mode 100644 index 0000000..217944a --- /dev/null +++ b/libft/ft_lstmap.c @@ -0,0 +1,42 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstmap.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 01:03:28 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 14:55:38 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) +{ + t_list *head; + t_list *new; + + if (lst == NULL || f == NULL || del == NULL) + return (NULL); + new = ft_lstnew(f(lst->content)); + if (new == NULL) + { + ft_lstclear(&new, del); + return (NULL); + } + head = new; + lst = lst->next; + while (lst != NULL) + { + new->next = ft_lstnew(f(lst->content)); + if (new == NULL) + { + ft_lstclear(&head, del); + return (NULL); + } + new = new->next; + lst = lst->next; + } + return (head); +} diff --git a/libft/ft_lstnew.c b/libft/ft_lstnew.c new file mode 100644 index 0000000..8ef323a --- /dev/null +++ b/libft/ft_lstnew.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 21:34:58 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:13:33 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +t_list *ft_lstnew(void *content) +{ + t_list *list; + + list = malloc(sizeof(t_list)); + if (list == NULL) + return (NULL); + list->content = content; + list->next = NULL; + return (list); +} diff --git a/libft/ft_lstsize.c b/libft/ft_lstsize.c new file mode 100644 index 0000000..b510d2f --- /dev/null +++ b/libft/ft_lstsize.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/09 22:59:07 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:14:41 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_lstsize(t_list *lst) +{ + int size; + + size = 0; + while (lst != NULL) + { + size++; + lst = lst->next; + } + return (size); +} diff --git a/libft/ft_memchr.c b/libft/ft_memchr.c new file mode 100644 index 0000000..f4e3580 --- /dev/null +++ b/libft/ft_memchr.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memchr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 19:02:18 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 02:19:17 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memchr(const void *memory_block, int searched_char, size_t size) +{ + size_t i; + unsigned char *tmp; + + i = 0; + tmp = (unsigned char *)memory_block; + while (i < size) + { + if (tmp[i] == (unsigned char)searched_char) + return (&tmp[i]); + i++; + } + return (NULL); +} diff --git a/libft/ft_memchr.o b/libft/ft_memchr.o new file mode 100644 index 0000000000000000000000000000000000000000..c515b830ee0b75a3cbd1b7f1ea21c2ebd0d429b9 GIT binary patch literal 4096 zcmbtXTZkJ~7(SEiWT#DbvzOX-snsZIEttvfy0qP1gKKPRMYMFGiY1*)PLiR?Oqff} z)+?-(t_86mN}+HevVn|~zp{7yJzrkBR$h8xWhq!LFU?;m ze_y(R8s&4PmGV;Q=JjpmbMrR=-6$)UvzN%Z`Q=@ggP{m{eM5P%bVFe(drDW_pT9!; zgv4@urLyedy;iama3MBc;X^{B682fH}) zA-1Aid>Ho1s;y+Vz6Ps_^T#+W6d63qVJXjGIb#uJG#!Ey8Nb~j%GfA+Nt|y&hR=W& zC@A+1kEfHvTZTuKvB8l|u)2{Xhj*vIc`Ch2fvZ{rKX|7e7?YSa#ztW~{v+3$4rV-ed=hyTmK0^)aI~~7bIxYnQ zHUcX(S_e4^nyNz9g_{GA%qr@DHm#->Rc%pSKdFxXrl$6)nZxS952|)lUH87KJe5em zj#`f0$gwZH*@5j@4V%_-2p|~z5zjhJD?X`IsC~+E9h*RYj=NB)wjA>$VWxd%s~-F4 z=*GY;b=}oyX47z2cTN}t9m}qT{xKV`>9{`2E0p@2^Q@U6=1V+kxMq{qDvT=Fb+6EL z+SDshmoDV1)Gzq1amom~g}K1>0&ixz(6KtSTYxjFv#lF$gB*N(J~ubDGdHWx=##m8 z+YfBIuR(3%kD5sAQr8}Z*$qZ_*!zH^Nc>LgC&qZl?a0q%Hi`1vri=xjRLcpxxF z!-)vq;`la+zs51NUN+D?dOF)VkA9-pK#%Yk_im2&N_>&yMS=jC&}CFwsXFwaZm`8($)B>q>^BbQvFG5B<9-&>Yxo@J z@vcSh8_~UmHuO%IeK(w&Lh@kh0j*{D`sda7^P za1Fab`%U0gO@#@BAiC+a+Z0|ox(&Trhwcfz8hSU!@J`pEi+8B&FL2+qS*g25oASN< zp9#+uYbWX}d=kl0B;}L4)E|8EDeO@fQEd*(n?YF@?KHvY=tcPZ4#z(D$Uc!@;p7(xB16`F0@h>>)i3h6lM!1K zW!=NT#pS<(%@KyM$NX_ia{e{oWS>BhA9?&`1d$=@Vqc7lzZoA?7@|%XA5)U!cYs5m zB2N(6_>^CWkEMVDiupOvj~UAnRhE#=7!y^)%0N z`&^F+1+jlYe*yyflSAwt?=MoniLtW+Zn|#A#z~Q@7 iw#PG-pIx9xnLj`9e_G#=>xcIu)}H5osn2@tS^W#B1FQQ0 literal 0 HcmV?d00001 diff --git a/libft/ft_memcmp.c b/libft/ft_memcmp.c new file mode 100644 index 0000000..eea3c83 --- /dev/null +++ b/libft/ft_memcmp.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memcmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 19:18:16 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:45:03 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_memcmp(const void *pointer1, const void *pointer2, size_t size) +{ + size_t i; + unsigned char *tmp1; + unsigned char *tmp2; + + if (size == 0) + return (0); + tmp1 = (unsigned char *)pointer1; + tmp2 = (unsigned char *)pointer2; + i = 0; + while (i < size - 1 && tmp1[i] == tmp2[i]) + i++; + return (tmp1[i] - tmp2[i]); +} diff --git a/libft/ft_memcmp.o b/libft/ft_memcmp.o new file mode 100644 index 0000000000000000000000000000000000000000..e45e49d17b0ad7721f9bd3aa4eaeed655c735ccd GIT binary patch literal 4256 zcmbtWTWDNG7@o76lWe=mZZ5S+h^;HMwgvZWHiWe4H8!l>+A6gWte~uC&(7{1%${A& zr6!fOXha$+Vnis24=sJ@gMy$E0)mz*7!V=8s82o!LQwF6K1BPV|38<_+37y%uzTkJ zzW*{a|IGR4T+W?-G@@xlHjNx5n@F;RT#s+cQ%sy9+sFX}M~3H3yp9Z_tA_w~_xMx6U+rej&H60Syk&Pv+LWRQ~D=8m{NH zwd8Vd{_5i!9IYmo$$>lmS1o#yTwZH6NiN^scV}_!+0SNR4IONnF}9j+CWju^LUIJ< zj;{wNp^L`480ye%$0yMahN3YYN!e*Jh9X?2b#lZ^^w=dd6daGG$KC|4lUYX|h$OEA z(qnV*fQMV8L76lwi^7$&mx9ESq}R$<1^fF0OtyAuQPXksMMr}cOB4ubJ^ z5=|V8ABs=LPYyufT_heq3Ko!4A;LQKB(SLNdECJGbd=~>$e=F$}>$P{hg<0i9qF;lUu zdrc;rp-9;;)M(ABH4F=<5jeKzmy9aDl@;pO8-Bs6yA%jm2xv;Q4004Kb&YJ{ivti% zYPueKMBf_dUBQChv7pD`nbG^7(qk{{J4mEME9-l)`$pf+yToaIDAup{!(TfUiNIoK z>rN%b9{4f@j%QaKT1p}CYmF>E#)xNMpaq{43e-7oyLE?ToU)gx)@#(uP?yf9i`38f zu6f=J<}%ZP>jmEUSf*h&=v)T!QT7QNp(VOkt-C%OXLAZI29O5ox|>t7s-{cW12nc% z;xTcefZ<1Y#FiLhHOvbaK^k>%pl((QV=a3DQB1c&PCPM_n$GS|O&a6IXewRv1BV`| zP=~s<1<-V@>Jc~r>51`Fx{^wlO>f?@s*sm@;H3lS1(;mgH;c2>1EuGi*7NCxTlcBu z*WI+|gCTlxg*9t>RjIb?4k)a02yf1hkQ39>2UB}zih<(?d~)e*z)<$m*r+i&Ze;gy z9#0i3j=j)h)q*AAVY-b46Au!$ZM-Aeg|kGP>(xfOyJBy^5xgIG{9|KpO)k;1==?S4tF-o8YwrNq4Y{TL_SbBvA zK26g>;5t~*EW!J1xv6lbSVcs!!GQTp`ln|QrL}0N!(u_O^5_0lhkP3OO zB$mDEzXudp5B{rv7JSv1IF=m$X+^0(_Qi*{!W24%+L|c+E8>t~9Yi}>yYOof+Y$Jy zF_9k?exD!+HP!YE=u{5Pe-ZwpAzu_#+f%@`oBtJjQJ_hGoIfr}oqq{9H6~DGr`Qnn zLRM|Dj +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 15:32:11 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 06:36:02 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memcpy(void *dest, const void *src, size_t s) +{ + size_t i; + char *tmp_dest; + const char *tmp_src; + + if (dest == NULL && src == NULL) + return (NULL); + i = 0; + tmp_dest = dest; + tmp_src = src; + while (i < s) + { + tmp_dest[i] = tmp_src[i]; + i++; + } + return (dest); +} diff --git a/libft/ft_memcpy.o b/libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..ba83c2ac2e295cae62393e2ab702edfb5109e5a0 GIT binary patch literal 4184 zcmbtXTZkJ~7(O$zvzguOCVQ!Nmr9MGtpzjLEokjhoTSq|7Xt0PR`~@51Tpv z_x+dipW8pPCkszLt||%9DiSOqhm)&vo{4#~j*OE((i{JpFE0O5Tt0E5xEx+D zF3(>pE}ghR!W4AZNtn2T*0+nrZwj|iDxNNYVc`z+U|hI+J5xM8e;3fLqH?`>`YBM% zgZORwGC8FdmkPHOrrTAx=KYAiFI{~R^6SG;#9)~YF*)||W3q~J-}mchq0@{6Lw&mA z21M&)NHcUKMW+}HsgX|Uj}SA_jeg?|G>zB6kWJ)0=$E$=g!ANBz} zngyV(TsfI?h%!2eNL@LchK?v>1DJ}s@=659Qy5cSsYAYRGlNm(q11R%OKnJvDr1R} z^`O0%XsMmaUCG(x!Eu}oNhbG#1uQHVVbSz7urO=v&?>QsU}tQCpaU~e038GDo7_DK z>%u7(Goq5FvTsrhw0ZL2IF6s6IQ!V70)d9~SQ6?4A;UlzA}b_P5VDI%$Hzbm@(4~H zXGz#LGYKDlN9q>t0My8Ncq+=@sbP4ss{$*glLe=otJ(Hili5xvQVmKC+OS)Trj5yjuHy$4vyQj2MuTQ6DA`Sq0s#{N zO@&rL*1%F%$UrnX09snnbz{FiPSidn&<8`kFVvGu`rwjoEa?+ddh((^aZyk2*86h0 zF|QAt*Of!63Nu`2y0r{@;4KMV->JE@l0i_Ren21t_#?h^jFtitG+HG_mrB$<>Ud3; zFyAh})sS6uXQmjFdfw__cHQy_dw|AqD^W~L!LK*HfF%=2T>&u}ybhhfu!K3c>gVds z2K95)ql?)x4RV2J9ks%CZZ7ov(4X0wYdJ02&cW_f+59Z8Mh-kZpP8H9o|!dg%&APa z5ri(?Q==~R92=nJ+4ViJ)7fn^nQSeSty=z~Yu91^&Ct(=?rV^BHn7SI)CZ*>SoW*g zme&lZ9W=eHAAlixMGAYt^6NtFG+j{G)fk4wW_!R^gdCWg+nITIz8tzi7^Rn;4jGz$ zee0AtHDgY1iFh~%SSUyEaKI0ygooxUTz-Gh(4>|$Dt49C!_s1YcIJ(@;Xja{SBq8i@CW8|^e`gAH%{4955sI%M~-!DQ& zO1un_$Jr%tL!gaD9eW=kf0g5VB>p>&p+vKW?(yB(!g-7zKL%!u$M~B$-YxO_IetRo z#R@(v@gHz}SmHS(C5b=IaaH0!<+vg7XZZRA68{OuOA^1#@w*cLJjWkN{C18%lX$V! zUr78r9DgnGBEKIbKEv@%i9f>eue_J{QH(Fn$p&sW%hyBjVqc3A|0TBylQ%nB`swUXmj zo1kN|RW5tNo85$p-lATx z$Yaxbsp?q`%IETbI@}LjJF&hZR-Ox;`oJ;Y9$`iv00}u!=Y`^PAxORKkM|ev_kZ=D z246WQ4k^ZeSyD=neW_uU&!bbUUE!tt6h9te6*TYP-6 zPB=c+YkB+@a2QkM2_kD_7!=w$X+Qx*e;jOj`CsBi0>8xLP56oaO;8FsZg(?YWMT^0 z_6+E7UHNu(EPv+ynGO>PV*Y}@2m;2G{l$gcAq;sh`(FUQ*ZQC8vHtj#ApFI?^c)-P ucJP8w=Mx?S4&R-!Kklh~cYz}3`2B%@>$;k}et0f=`t$rRcX_YftA7DI#<<%6 literal 0 HcmV?d00001 diff --git a/libft/ft_memmove.c b/libft/ft_memmove.c new file mode 100644 index 0000000..7101813 --- /dev/null +++ b/libft/ft_memmove.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_memmove.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 06:50:08 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:35:27 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memmove(void *dest, const void *src, size_t s) +{ + size_t i; + char *d; + const char *sc; + + if (dest == NULL && src == NULL) + return (dest); + d = dest; + sc = src; + if (d < sc) + ft_memcpy(d, sc, s); + else + { + i = s; + while (i > 0) + { + i--; + d[i] = sc[i]; + } + } + return (dest); +} diff --git a/libft/ft_memmove.o b/libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..29747004cd8f86504fae15cced62338bc3b7b2e9 GIT binary patch literal 4320 zcmbtXYiJx*6uvW)Nj6P(H%(gGP|*do4|Qjg64IvWW1Fz;R-^UN&=!BJv$M0igW1_I zkC+5%3!&Pjhz6lp6ciEsQ$+EB=pRAQDk9Mz68}j5D3K~u1t~tL=iIq>GkY`rqlfIh z=Y02^bI-Ytb0?>B6Nh9;BAg_$pR7t8CFIqvRX$7EEZImlkl&NH{W+O${E%PxIh${s zTFy88rF>)Za(>~|GV$ZkEfK#xe?GT-wTf-Nk-G*x=;W?Le=R?nyYBYq&x6JJ2Lhz= zRlf1r3eItL5L7OM>dMtrexbG^fgb9tjC|YIn?|5hVjWa!Q!U#gN*k4wn2I3pq!^XtU`%QcB&wpu+GA%> zH9$KkAGmCfU4(&HCp1L9T~59MeS2&k+I0vicP3W(o!!|czAMC!Ql9RFlE&aPFilrVZbl7xF&}pwgGkA{U!Y<(?t(C!20>Z;;B>+w()x8M$%`ivB_j29Vj%M3 z;|Uk6`V#0+UaUf}&j1d}(p`zZE+w%gv0m!!=-C9Lw-6<9_Janj zDq~^A)FhygGIprdv6WyK+X_BAhXMyGIylh3w;vXTLDXjeb!pOpem>E*{v&-je|GbQ zv3?00b*rHuWqOs_ue6^y!L0sxu7NXaY%uYjg1kkH~G3 zr>^tWwu-7QEU3yWfS*-67gTjXjh|H2OKSX*+PU|hc~!b!mLbQfx?M@p2JeJ#yH>?E zODPmert1+10se?<&6@?UHQqwOv}Y`*ZWC(XV!P_L1qN5918}epV9r<%((BkzB{xtGi^*>Z5>1n6#nTA()(yj-JXcY_?Q@UH_!&cpf0izs}Lu(1EOBbCk z1UWoDz9+SPvgq5MA4HlS^r5#Y26_TXWFALNFIL|xkS&?@_4*meik$WJgNm#nDf^gQDaKv%Yw1+Xj-il zR>NCS)ThN(gaM}|IRcLkSP4pRg#McMg6b#)N?HUdBpHEXoVfC9Ng?qyAbRc%tq(6j zPzocxWNw0o&J5Ix)#5=4hbNAX9h@i}J#^^N+_A#3gJTo90#h)i=XgLT8G~m8qyPIx zK=hRZ86PXo0~cCg5i=K_D;ansL6!Wv2A8j807N*C~ z65`=o&2NtA=bfAQPcayB<$%vKY4=1pz_^AOFb*J>ubR+!*RBaTqL+pSPQaEBw%{jWrXi4 zO1;pcEx)52-^y^Y!hcJx);8k&_=$!-|Ev8l*or=JRzCk@!k{3MLC}rLe>+R`1Uqb) zKb~JP|1rQsp8%0TX7?ouArf^bVNAqO{U2sO5VA#9)O`rBsQAy|g#+UD7(d1?#%}>8 z`UHri*@paqLWo4&5{yO7{}!8{pA(!PA#r}JujrG<2`r^M&?(TOFd-Lte+G1-?B8X@ z2G3WRxE=2sFv$6^-j#5%3Jr+57hw#)O4xQaHMxDNi3AMKpTlnhgFZ!jexY}BMb?Y< zmjI7i|H~2U-vhebp6^TK+@QCc6_giQ!tfs${W=ou@og6GE +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 14:46:33 by erey-bet #+# #+# */ +/* Updated: 2022/10/15 23:31:18 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void *ft_memset(void *ptr, int v, size_t count) +{ + size_t i; + char *tmp; + + i = 0; + tmp = ptr; + while (i < count) + { + tmp[i] = v; + i++; + } + return (ptr); +} diff --git a/libft/ft_memset.o b/libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..8b36b442b801d001f0aa2c1b1b7a5787a405852c GIT binary patch literal 3992 zcmbtXU5Fc16uy&WcC(u_*`L;SsnjTywqho`YiPUujV`fiD^kTk1tm@tA72TnlPJu%b`)K_7|~A4Gf*QBfb&ry?i{6$-voL?|lgId|@zOzzH;Ub^?5^PRtY z&YU@uK3Bf)-k72gu@rKI3^{=ka$#~vml#R#`9K_;pL=T=fQU*DK05=c-p%$eoxXrt6oNQMidh1pp_$hciwt z!mcQPWj4Xinio1oDR_=uFfF6wH7E%)g~9&4wY|lB$F#gbzGZoZy6HN;O2@1hT86Pv zWhrn)nr^L2yAE|V18?D3rsFoWHohk<>h}6>&FI+_07wKR4cY`c4w|Y$Cj8`piDwlx zkz7>A*3{&hIySFPUQ!betI4W5aZy!H#$u35r)RZtY{OReEXQnFw2?yw!oWY`m}h9s zCAAv0R!qBR5vDz&Idn1tgEh77p;M!++r-~`9s~%&I_;kAvY0{Q#K%Vb@w+h(fg)6> zU^SgWyVs>of!cI6U#D)twe=O<8x)p3+wq*@Vxe#L>7W3`Z?epEyG4%OU(GEq?8_}_ zMQuKp@4B8v54WgAZPNf&w~h8;c#!$M#azCX%Qtmr)iT;pf}ZE(J?lx+YUEwL-k}Z% z9alFV&-d+~OAWVY=N%Um(aIMX9o=aQvDvdgU^GKKRvY{ga%_3|KyG)n4h8c3o8=cg z#w|R%IIqnYwS_%Cj-3GuC)gDH;b?)3uq8f44BG+MX8$0{nFon7m{PW<$CIx?Bi#%* z{^4T1U(QUu7+c;n7P}iXd^~E$QJEmW{SzgNM^19QOVE@fX7S*bBQT);TpmTy51XSh z3^<#f5jY!(5jY!o5%{JJ7y@wulPqGzNj3sS{SDs|f}UqW^$F%pxRnDM#w7PV38$bD z5}pyq?EXd&*0g^Rfq%sLEfW3(=V5%Zh0inmboOu@{e;^<3*i{|HqIZC@VhvFLc&D_ zACT~;Ie%KhIZJ91&L$#YO$mRK^IZwQ#Ccc3U*PW0~{t9oAq#_o?l!a^JLFYub93 z@?8GUfzJtRC+aJFl{g{Z2Z8g)BUo}PP>6}SEd-(u1ust7eisPvef_WY3t%hz#8@K! zen}{?>~|GT?GhS=)^0wUPxB_hIfZ&+w!n`xwhqHC`$WNK9Q=f74L4c$6o_ODwa@an z^Fvcc$+{;2jk^C?9ComTJ>DNvlJDODO!f&7xye;$PH7qB=C20cnLdkJ`X}chxJZ`hfGKy>%I;$tSc{9 zpm~bh=K{nhME(NCIgdVN`#!hdFBJJH+rJBVRQs6T%7g}rz#QL!=9dpv%dCp-ff mehX!L3?sk00Ff#F{=omTMwVPZ?29P-pZNVh9I@W`to{Y0l$fmm literal 0 HcmV?d00001 diff --git a/libft/ft_power.c b/libft/ft_power.c new file mode 100644 index 0000000..2f9df8d --- /dev/null +++ b/libft/ft_power.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_power.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/10 22:50:22 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:50:31 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_power(int nb, int power) +{ + int i; + int new_nb; + + if (power < 0) + return (0); + i = 0; + new_nb = 1; + while (i < power) + { + i++; + new_nb *= nb; + } + return (new_nb); +} diff --git a/libft/ft_power.o b/libft/ft_power.o new file mode 100644 index 0000000000000000000000000000000000000000..9e4459ca661424c3e6fb486ddb35f10d8724d53a GIT binary patch literal 3896 zcmbtWTZkJ~7(SC^y4lS(*-OQ)EgGd#3udyrgxy};c5z8Bv`A4FiWlM}ImrxWXTn_C zZ0&lXQeBIpAox%pM1(#l=#!T>p@sV9yYE7=eW>WeVhj5JXU?BY&d!tmWX}2j@4ueQ z{F67UXO5>djS*?=C>uzGGInrmz%L7SneAfJ?9alZf3Ke0{B3jN?q+!V^2TkpKJo+V z?;N;Q-9qM8^#KOFlfPWu(ymq?6uzn6-K;*iTHQKQy?yC-Kwi1A8!R$t%(5c+xZq>M z@fe@Vj-Zsz=(ZEER7Oattd1Z}T2@G@NT==tdT1!IC|2bASgP;=s503OjKU?o zFF)Yt$18n&F~%PeyvU>#bhII&sqA)P;*JE9)~@z~5W zGq4&7*Zmv?{qESSS)rn3-1n5T9#HVOcS>;q#EaL6JT&wwuM zX?Rk&8YT`ya5&Je^a06ShdIq07&YyFekY9LUc!aY%AxO-ZKu%*o1Ddka_`_mZJ|=? z*iP6hwVkkBw*#NCR#5A@7r19MFnH+Le$X^5yxDCYxZR-Ea6JwH)~9Q1G^!JXbV1Yg zU-hxJo(c8QP|t>XW>z0Nt!J<4qwnh4QYr<7bzG-i6a!wt(DCiI!<$7EAUOP3t;U`6 zw&yzWQiR8l^&rp?3=z2J4FWeT(_>-)jqNm9KeunWULX=X{6YwmSKPVlcY>1c3P~Ze;tS1()}ujU_hhZIgDZ)(Zp03aM7$1 zaM73&aM6?!@SWQ*1kwx|Qv#(~Apu4E@ohLFQ?dQ&Hx0Vq@MaT>&a_heOc9SbMMfM~ zcOOBZ$!KDPW3xhfD4P2C4JkuY6ols)Kb->-$2jqOFdM@$@1m5CDmd*_Rl(nu@)-q} zB6~r>+fsf}!M~KUso>vB*;4TLr5q|a$(I!Tl$5Dn+RrB>{)uA$my|zO@QYIZTESnH zviMH{JjLH5@tblc{F;=1k+XVU_Z0j0&;V#$&J>60rn`i=_?IB88N(ieq{iQf;B9zO z;&^xB_lFt&`Wo~@m;*1GE#d;+3z*R~1Ctqb-)Dx$JEqa(^{`#Dot6ta!JGBE$IlO` zP0w`NeAorPk(^v01v47%+8T#Xmf=AEHJ}?p|Al@mW%!sH(3!j33)W?9Zq-_zxyI#M z{?CNxhkHl+OR<(EbDRJ<%j4;zj{}Do^=(pIAx4>1|NWrH_w~Q}&w;NR6H`+Dy^2y1 z#h)YW+RNw^qo3u5oRgOX`xM$yZ^1uSNK5djF%kblfMvrm10sK{AHOzg{Y}8sm;kY>GXGa7#7MQRfi5ZkS(%^q3G*YQ=I;WAF{w^q z1ue)6@u8BCM4Dd*>m>i1SQHR_PawqWizm>56_|+$WI+vu}nChg=Z^;Eu0fyg5)gRNS g?=C>>TlxObcN{S!b^q{QB>BH3>;F!84F=W!U#{GIegFUf literal 0 HcmV?d00001 diff --git a/libft/ft_putchar_fd.c b/libft/ft_putchar_fd.c new file mode 100644 index 0000000..2cd47eb --- /dev/null +++ b/libft/ft_putchar_fd.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putchar_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 00:21:56 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 00:31:51 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putchar_fd(char c, int fd) +{ + write(fd, &c, 1); +} diff --git a/libft/ft_putchar_fd.o b/libft/ft_putchar_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..bd2f6b665d8b871756a6b46a562cc27bb20cb6c0 GIT binary patch literal 3904 zcmbVP-D@0G6u+~x+iXp;yGbiHMC=H)rqG#9!kT`hNw*1`M2S{y^Pn&5?Cjm$!QI(q zKGIDQzY&*GNI;5;LZABNgFXmFeGn8s5d0f_5d?h^K|>AJbMD-m%-&32ddSQ@=XXBu z*O|?0rPZZ`q7Xp}nJ0UaKw*4fk1sN|NFF4I$zRz=?yRl!eqDL%k6drN7i_;<+F7~& z^v<=?_7@murT261``^%E^T%)gh9QYONwXY7jE}tZ2%ks~prj^Kw&RmTl1Yhl3PCX_ zX(lB?opKN>+B~c;YJv~#NDdeO#{{Ib<{DF9exN+AcsVnI-| zN-B|_ODX9W5-QZuY&&(0z3^ywjkfD+f#cbAhgLO&;ss3KUkQP%@JCpzKBv7DeJ~hP zR|*2tVUa;+JJm4OUR{g}D`QsWGIiE%x9yO;Q}gnTc8hv>>e3CpLjAn&n(JoJ%`XP7 z7kGu~e8=w4ZoX+(YCaZgx^=Sr%$l}1bxJ#96pTqtZ~1{k=jzmjQjwn3jM zXnI}KYo@p1SPjV74m>?@u0WBxZ&sSr1EuGi*2{XwZTr;n+pg~UV2EC!!fKjcL#XYx z0}87akqKE|Ts*5ytW^TX55ki4senmSuTD=IlLceyM2O?2v+JLO5w9Xl1o!%DYzZnn zNQc9LC|92+N;jvB4-KR@;eQomETV)8Ququ z05Td`AJHU^0v;FTiF@Gv_YJN}Und~t<<*M|7goy`mzFM-E|)J~SXeEU$rac3X;{+n zaM(RJJ9k484H!R5f=5%aQivaf=RX92a6U)^eCgx}(FAmLkFenrAr z>jq4$pIEoAxZQh_{Xbm3DdG5WLHZ;dcK78fmv2k>Q(XR5!q0K}CqByiCC&!c8NH?A z49oU!-Xo62aXbsr^FR!5qXpd*M&Av`hTvSXnd@L{FG1@aKXYPVVxK6!=%E!=>X3N0L3I+x)KY(R7GP}kq! zv1y}RbIlgNUwm5kJ!s&GYbe%P1S)by^bLWdZIs4A!2Vy1g23P80r7_m(kMLWEAE`Y zk8@n^*e$^0NX~x}j4(+dGKS{Ab5Qg(5kj_o78G&y|H2Cu{#ZXka{V@7a!i28IG^{2C`3rM zt%5Ete-4{4kT@rpAA5kDANwB06meeKgyBCT_G?G>$29WYMgN!h{h37}Lh|~JfG*Cz$m{ +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 00:48:29 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:14:10 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putendl_fd(char *s, int fd) +{ + if (s == NULL) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } + ft_putchar_fd('\n', fd); +} diff --git a/libft/ft_putendl_fd.o b/libft/ft_putendl_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..364faed51f7c6185f7cb9b622a918821ca60d266 GIT binary patch literal 4000 zcmbVP-D@0G6u&dG(@ageo1_sFBX*T)Tj?Tn-&PB2?OWerc&5IqT>0ty zzd%Z$F)>&%eTmf|FCSf#+szr`!lClthK>(!t5%WG>UNonR?bbAoKi_8~;oFSY`oI+aGT zS~1I*B5-Waub6ebmo@4)TYjq^^+dVX+`+DMixtX?_Icg# zb@jBaX%~z^UD>0mP+_C#)Y5FgOA|PrU2|w9jRGWqKf;tyaMLfwF{f}q*$cRqU|;vl69(Hw%%NzUY5FaIa8v3)_1K% zD_F|T1g;l&xruDcZqcP|!!A|X+AOz5PQEywo*6%oo-%XhSUR)d2M#?_qYicLGKiL2 zt{;H|%1q|cnOZtiwY+7gT!)O!z{>>AYp|+}Z>L z?#Jo0*iMPHh-$jMG~Uy?QM70MMuq`rO(X`7FIXdyCLQt8NMA(iuo{7u5W2ilG0u2AGY z_$EOU2}?7>iJbuE|Mz}Kr?$XF-^LvkJerD~M0`6u{~-v3>qQdyr=bYn$dCkni_6e> z8R7lfXkWnZ3t<)~ddg!F9P>WO<)acVPP8E54KB|~I2XxT2|vT-S0wxrmn{i@pUZU# z54bF5u@C1t{<>t3A3~(J!f9hazv1!+68<-ruS+=PvN#8k_XUoBCE1U1`3DLAgv&qk zSw1guH!yzmEf#lNwtstzIBAaKU5MTXVtUI9&}w1!-Egi8&ZP~@^y!jM%!=h(#4LFp zF&SE+rJz={ooW+wjJHZ9mo9dxE!T2twA%%~$5gmL9%7c83kwv!U8V#5-Gr74{T=!} zm*K;0Lg#N$*I(wbX}wr=tp#xad|eMZrNI&RQ0%jaljn@+D*{K`DB-!{_aPqzfxp88 ziuY;|F!UAg9R3bMdKwunX+{2fC`3rM9S2?9`iJ?a zWiP*MxPH99^7^L%lVbuz@SBQsIh-~|*>)Z@GKR)OJg?Y)5kR(m2^4Yl=dlR_34g2~ zYnSV{0h40_M4sdMzd#{EvTX%)ars+3zqluuAA5kDANwB06mQ6;`Q1hT>%4!= Wpb#N>|L}J~tUs^+>xeJ1vj6`vIH8OH literal 0 HcmV?d00001 diff --git a/libft/ft_putnbr_fd.c b/libft/ft_putnbr_fd.c new file mode 100644 index 0000000..8c549e9 --- /dev/null +++ b/libft/ft_putnbr_fd.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_putnbr_fd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 10:22:16 by erey-bet #+# #+# */ +/* Updated: 2022/10/18 17:32:20 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putnbr_fd(int n, int fd) +{ + int len; + long nl; + + nl = n; + if (nl < 0) + nl *= -1; + len = ft_get_size(nl); + if (n < 0) + ft_putchar_fd('-', fd); + while (len > 1) + { + --len; + ft_putchar_fd(nl / ft_power(10, len) % 10 + 48, fd); + } + ft_putchar_fd(nl % 10 + 48, fd); +} diff --git a/libft/ft_putnbr_fd.o b/libft/ft_putnbr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..3bcbc7e5d8857acd935754fc9ec36bb3941868c3 GIT binary patch literal 4384 zcmb_gU2GIp6uvXFL$?;XrA47ZaY#^U!p^o>%Ae5EX4^3oF+vSdbThj<`xCaa&HO-1 ztY8{VHq`{;ParW--+V9{-wY<&s*$QMJo$_dBt-iFv4#c-c+Q=B+u7Uci+a+z_nhyX zbI-YV?mc(5=hDN2vLq2s5;;hgC5{quy=j^6qii2}m~0?_CbrxiF={uAsd=q7IbZW{ zPN(OMOGYidXiQBml8Kmc=aofc8pPVwo9I|eFHB9&lZo-^^v&9j-zEW~_#efo(FJKb zy#U}t95iybsPARt&V8dcYg{Q70y1iI#+~1d*}F1wvx~h($9G2UnlXD_Hl%BYG-Gtk z8nvHm*QRDV6W`2CkKC;N$`Y8GT#(MaYfK+m{9lH<@YDBguwpTs8;R4kTTA&+qlT7L zjyIr2iK%7VBXW#Na$H4_cT${6a-fse1QIog#T_(cSTI)L`?#EV2UM|m1zPH&Y-?WT zcdqST!gq)G{gkJXqy%*XGr}{LK8)K$N^C@5`QpiVArI1)KswP_u|T=LArSM8c7;f- z4gJ)#L_i}w(cIRgG;eNR4|vN)7-Ab~YB~rIEC6F+s<8y1&$dC-ZlW~rYuc~w1+lmN znRb{6gPNA123_iHr*;57)sAELZTg@ejA0d(IQUazc@rUx;9Uoh9het@~&1@KA}oCWCaqhRPCZh8{Bzr zsp@!|Z@cB9ZRItD>IBFI{s^_NQ!Ect2Ztv|z|(S^70P1()|!!DlY+Vsa$1HR+>ZuidASb5AEPgTm< zf`^%yPLT{fH=+%6?bi0{-Fl~%9QAzLI#9H1%PHqTG@V@O0KBziPq&sVYRQ7>PT08; zM6CL5(znk*&PmVARxB5ku4m>>CC8kqXXU)AlXN{WM6W=RtC((ytIJgz6uCl3CS+(} zV4t>qB@#2yomaNLXH4;K8E~bHVK~gO~yj(uSZT(%Bb? zG~Oa@UfU4A0GsMj!0|z%TRh#|@|HZXZjF2oECM{L#ex+hw;x35U@t|%kPFYIUahd= zSdU`vv~YvSbm>MYr%1;C-BoTpPp1ATWNg?Z2fN0qoS|46k z9s@jTl&4q0dso4atb&WDCw!PlW@z|m|DoZ`(ZRuE>EoH>hx&)p8T5dXlX1&uE#{49 z4N4Q0s%I=LdOAEveE;2h5YS)%Q+z$}9Dg~4w}$X9LU`Ez{wg@Xi15vF9!>chMZ6K7 zdk6yIm`EJ|C=lTrB_NLfz+|{ADB(_CDzU(K1TY;ZyxTfMIL6(@zaijPnEalA|Hb5w1^i7W zeM5k!p%KF7j*)CK;M|m@wb*$5MYSS_8qE+t#p9~gv zfjC6ZRYylHxE*yHZW|p+KioEO`!E^4Ep)ht#w^F1U}IaQOu;cnEjFS5*lFO8YsJ@@ z57);SUf(#5wqe=~0@jYcFbKTH4%axtu~wijKXdTyM(Igt5f^Wkv=}Hbr?!lx-41AR z%zx|O1HMtAc>IlmQV>ZO_(#qE5}W9Dw%Kt0xPQg@_pcKFB=h6v8_Xz)@kam^F*Ll* z{CQoY&JniH0~VG43?4Wj?vMFn?qdFBz@p-BWiN!EYcQiE+U5a`ihqm6=lcZXBP7Ph zx`$)(Jb|S&&*ImFfL!GLd9aT1_gS&Q{S_we$NL&6IUlzBBwVaQ3eom5= +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/05 00:32:38 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:13:50 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_putstr_fd(char *s, int fd) +{ + if (s == NULL) + return ; + while (*s) + { + ft_putchar_fd(*s, fd); + s++; + } +} diff --git a/libft/ft_putstr_fd.o b/libft/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..accddc22bfa1654ca1e89de869df199200d9442d GIT binary patch literal 3952 zcmbtXU1%It6uz^w(@agWyXg-$#GierwJqJ*B(CY7O}7b~L)MIU?>s^E(h1t}?f9aH&b{Y+ z=lA}dP2VUj&LuRBNYcnO=}8hLWc-mHU*v3&>?XU&AL%FVEiH6!Ev)~VS?HeM>;`ui z*3WMecJR*F!j;ly`U{f&`sS6TyWO9<-`z&Xh4s>=CRCSh20!1?u73Z`U!X|xuqMww z#QDfDAK??`07`n&a9l%K9DuZsOrL1!QH+z=XqxpJNLh@O*rrAD+J1DQtw-%ADurvZXB3KmwAOauD-PC|?V(No6;j~hopJURN@DAX#T!5%bV zX(vay9e_`dV(j9c_h!HtHcB_apBpFkKp}^)82CWPM>)tPNLkLG0HYJ!MNRuVH4G!a zL2zOpS^Z|) zV?2Mz^~Ds`amR9*x+{*?c1hl?`}t;jnfiI^(Y0KKvOM$b6+2kX&jy|!_=U-Q$LY}3 ze9NiS8CGL^4Kn}2Qg(LYaQ3KGu*S2wWfr*fM1#82bE+WPUbT4w&LuZh$mSZ^T;2B9 z+-egtwgW#GxUWLpIc8T{)CZ-{?CQB($7?fMWo<79XNFrV71fsQH>KKXyP&AnBQm^* z+1X>+{Y#a=WkFa{ZX)2)#D&RmYrJ4h90>8S8D#Ld;e%D+(ci=dp~Hu?E1Zb-+Dk-R z&1hpo1Ljq@FpmL_9}>U5rBvpv#O(043t$k!u_Jb!B>DY8oKlbNh**oPrr%2!t*jqK zd){VL7;xS@V(|EibrNaD5igw#MWi096X+x{q?2?Eign`7KTJ9qeh5U%9g+Q!E#q;( zO%xm3LXSmvyOlR>a4<5WNq?^4FH3 zrNYd-aBfP@qb=KFbd?dSW;2^u72hWoM{BeaG|G-!Z-b8WcBSIcl|HrY*=~dOyTH#a zl`fEnSk?COGKF6u%Y{B}L2HFR4t-t7@Vjh5hwo62t%=yQS+0BbG8GH@pHmk6aj)b) z%Wy@($o?U5w2czJLwwuCC=SY8zb)3kUtBg^Ki*$;{WE~6F##eM1$YUC2&uM9pi?n4H$-09 z*JKFQ_C-*{)t|v82qgWneym-s-vLaG2@rW!ET>;Y{;rZxigJDvtmFL8VNpPMzoI1lLouuV*uT-VDD-lAIcEPepp^ddT;g(LjNe55YhuCh p|0MobkLr(U)VGWNm&N-zg+hcxxGiJ^xH$igsQ;@i%aBq1{{bp9k^lez literal 0 HcmV?d00001 diff --git a/libft/ft_split.c b/libft/ft_split.c new file mode 100644 index 0000000..7b305d7 --- /dev/null +++ b/libft/ft_split.c @@ -0,0 +1,117 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_split.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/28 09:52:05 by erey-bet #+# #+# */ +/* Updated: 2022/10/12 16:14:08 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int get_len_all(char const *s, char c) +{ + int i; + int check; + int count; + + i = 0; + check = 0; + count = 0; + while (s[i]) + { + if (s[i] != c && check == 0) + { + count++; + check = 1; + } + else if (s[i] == c && check == 1) + check = 0; + i++; + } + return (count); +} + +static int get_len_next(char const *s, char c, int i) +{ + int y; + int count; + + y = i; + count = 0; + while (s[y] == c) + y++; + while (s[y] && s[y++] != c) + count++; + return (count); +} + +static void *ft_malloc_split(char **strs, int *iyx, char const *s, char c) +{ + iyx[1]++; + strs[iyx[1]] = malloc(get_len_next(s, c, iyx[0]) + 1); + if (strs[iyx[1]] == NULL) + { + iyx[1]--; + while (iyx[1] >= 0) + { + free(strs[iyx[1]]); + iyx[1]--; + } + free(strs); + return (NULL); + } + return (""); +} + +static char **ft_split_bis(char const *s, char c, char **strs, int *iyx) +{ + int boo; + + boo = 0; + while (s[iyx[0]]) + { + if (s[iyx[0]] != c) + { + if (boo == 0) + if (ft_malloc_split(strs, iyx, s, c) == NULL) + return (NULL); + boo = 1; + strs[iyx[1]][iyx[2]] = s[iyx[0]]; + iyx[2]++; + } + else if (boo == 1) + { + strs[iyx[1]][iyx[2]] = '\0'; + iyx[2] = 0; + boo = 0; + } + iyx[0]++; + } + if (boo == 1) + strs[iyx[1]][iyx[2]] = '\0'; + return (strs); +} + +char **ft_split(char const *s, char c) +{ + char **strs; + int iyx[3]; + + iyx[0] = 0; + iyx[1] = -1; + iyx[2] = 0; + if (s == NULL) + return (NULL); + strs = malloc(sizeof(char *) * (get_len_all(s, c) + 1)); + if (strs == NULL) + return (NULL); + if (ft_split_bis(s, c, strs, iyx) == NULL) + return (NULL); + iyx[1]++; + strs[iyx[1]] = NULL; + return (strs); +} diff --git a/libft/ft_split.o b/libft/ft_split.o new file mode 100644 index 0000000000000000000000000000000000000000..d6931e4baca3240c811e2121b08d473295bacecb GIT binary patch literal 7072 zcmbtYdu&@*89&$8$G&zR&ZFyETEI+AmxTarKbtD79B&G}`5c~lQF~lRVk!?V_p-usfDSx3%D$uR{qjVEQ5D4FQ9?s3F zBcyTE+;hI)_dMVE?zx})c>Hj`N7INL8o8USQxYX4ymfuu$CiC$E4hZeANtro2h7T! z&C1k;%H`AX^9%70ki8IJ;nONk7w@meKQL2^W;K4n)D}ZOA-BiR+wJA472-6N2QCG_$UWGq$QG%E`i;%jSb<$29~)~pVI?5o~to01 z#m~^^MZbB5GUw%AcYfNH|MI17UJ{rFvvOpSl?FS4ch^7xEGc=u21^hZCWtE`S6loo4+YIEU|ujjoOpatMYv#TRkwd? zKJ?^YV1LYM_lI!0^!j@F^Yky_8~N6-S@m{wVhr#a^vo~BFJV9n@yk$jYvOe^%Tr54 zru7M6hh84w_4zjDee0^M&sUapSpZ-TYISOvIDTFWheIzrZ<%L~T!QQ_!v@%qz4vc^ zWJ0F18ovycUWs3Z#fE$?V?KG#Ko|6ntPGnsH?qiW$_oGW*T^{!AzqB17uvcl8HVH0ev1AP3ZkDfSMyHMndo;T0aXJmpC2=HV*B%Z^H^5 z_IGlJgXplon>#$(!i4(o<4~bMG}DI;Ju^A*k1Osk)|^9KF@iOJ zJ~&8jHP*qc4sxrpZf^BKj3#z3kA`hOcEAQRo|*edE1J`GvpfpRWLzw?=W<{gm3Mcz zwz50Im5&Cqz=>gin7K)!b&9w%JgYa+{Xl~Wo{4Li)T)Rj^!`%Qu>53&3mp23`6dO(l+6nRPCOG+H zL~p*c;Vyayp!aO=-42x~poVoQ5Y_J4&g1~Re*1xT^wqcRt9!R=U?WJ0Zh#G@;Mqn< zgWCcEkb{j9O`3L~9d(;O0bz7OV4!qj)124;`Z)^6G~N4@8%|NAsJOPdA&rTPOj_zM~srPjxqMo zhLf-{>Kmtl5!$R5rfF~*gQj}>N!pO6{yEwXrb2UcTQ3dlq1vGy;~))Oa2!e@PY%8A zc^U(Oz#ygXBkcnQL=-%Rd;|6j#s_KWJPkN-CXk*(zVmR^Yg)-JmTE_ei_v5*S4i$tfDm;8M5pyyOW+5DqCGco9A8`3JK$#rKk$$?d|T(SW6+ZPp3(0OB12WNdt9UQ*&%Ge7uYmXFsa1%VS z2|f&X8|3q8ag?lX02|#z-u?Q@TM6$hxn?(%dR@v-BfIbt`wu^`_uj*a2m1RTiXTlJ zy?5{7c!Kcjm5dZEtL6eOPO0*7{u z4J1X#jJ|=xOx|66-7XycenHT8EBMz19ar!dh2O&pZVCJ$1;1a=#}#~+ppy#zOJOIY z;1dErq2MKfmlga4L7!Ie`vfibC-eDTfqzGl&kFiQ1;0(uzfy4c{m#bk6db=7INs(H zyXo+}<`2(E&EG-5RGR>iC)odh5fV|D z3P~Q>ME?iEQ8yZM4OJieoqF*~6>+JZRf3bGoKJ&vJ^gvnfM9*Pht!kv3^3)|Eq6)iyD?m= zvfl&@k6K9+xh(X*ar0 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 10:05:58 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 02:22:26 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strchr(const char *str, int search) +{ + int i; + + i = 0; + while (str[i] || str[i] == (unsigned char)search) + { + if (str[i] == (unsigned char)search) + { + return ((char *)&str[i]); + } + i++; + } + return (NULL); +} diff --git a/libft/ft_strchr.o b/libft/ft_strchr.o new file mode 100644 index 0000000000000000000000000000000000000000..7afcea50c1e97f7c03fa62f4091e13440fb80bcc GIT binary patch literal 3952 zcmbtXO>7%Q6rNdo6Q@q?q$#CQ2^dsbD&ch!qV$h87LjRMDg=c}1qqq8J+@akyVm}s zNf9N8sv<-}ZG{9#NFX7^g$tLe2dJWQs1TPPxN<9^QcuuZDT4QAXYAeS_5x4w%zNMa zou7TXdAD->d5uyciIT&lFG-Y;?xsFp=4_d4C1d1H{?WT97uJ4TSbOKzT5$7vQ*7B!BhBdgW&R^2YvaK|ZFuec=7dJsN|+{@h0Jy^2L*_+MPX zJa7Cs4#lRCB^h4!Fy|w~YJ}G^gD9oax@G%BOLIxf=m^S*X1JtwzJ9B-0dU&RX?~U*WInT4w{2gE7$n#x7^ApHx z7fiYqm8-I2j79^l-AIcbXZk*czxO@EQ7$zxi|Kz!G3NeOs zlFC2~?x1ZaWD@`wv>jrQ^bLh(!X+>VdPgCc8Hb& z&n;PYy%RJTi3+9VeY4fsnPSJXgXLn&4oWr4_XuhFRoLNr+coN#B(N>dZy0TS8d}VE zx_-6pxC{U+P^V-lEEI%Pp6cn}^-Q2|n$$-#hCa~Lw;tDrn|k_^KAbvpOwatOZ-e_r zkLeRQfyoHYO?~KuPG8eBD7@p?tpXqLZU(kzwQSZXpa8ky4=2-Yk!qFMOP1@{v5L88 z%&Q+T2169)y2N89thJw~-Zovr2QaYg2I-aJwH?>zb%b0jny8XHmh7fiYCDU}D>0X? z6l=^c`L4NS2Fs=S!1V%eX1dh1x@@`Bv1(1fUq3nW;>p7N)ZW5=W5$>)6c_!#W`|nL zX0BBS5lcM;$5x!3DHL0UV$<|iY&a>$b^@;$*r%c3qHoqZ%mbz8oAtMfUDxqh-FMs~ zoGR|ERMb1B*OqF_u|ZL9Mr1;c%+DVvJaw`b*nSX}RGbR9G<9}*(wLkvruKw**n39s zLckAJftO#Lm)-655PA+0Ecds zKq-<>Kr#OCeKBrezb0hp zsGRUTqo=b+;20-*4JIQv=A9GrVFi~vRZ;K@LO!nGLL{#!_>z!cSMaZdY%2I=A-5I$ zGa&~Geon~mDfr7mKCj?%Ut~PF&rb-uuNC_>A%Cafvc4Y_e20*KQt&%M{zc5{dEHg) z@m+)@?+n(-KOQ(r2=)pjHO|=(z7H=59Pdc3iDi@U&!l1UdxL5#YyxX9qWWZ2MR4d{B% zVxi><8Q!P{G~X_B{S^_LwX03nTx4P`|7XH;!o8FGD`S-fvnl~GqivKP2LUnJpQUa? zGRmy_?*=_Sm;cp&3VhX=m~sOLpb15(i2Mr)yK@d-ekAhBK7|;Pn(GC?lIlN&O$|u;WBs@!wf+WRYD|F0RgwQ^ z6e6VBRza7P{{xXiu`S{;4OgRyHNGVH0rYpkobp<5cn4 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/26 14:25:30 by erey-bet #+# #+# */ +/* Updated: 2022/09/28 16:32:55 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strdup(const char *src) +{ + char *src_copy; + int i; + + src_copy = (char *)malloc(sizeof(char) * ft_strlen(src) + 1); + if (src_copy == NULL) + return (NULL); + i = 0; + while (src[i]) + { + src_copy[i] = src[i]; + i++; + } + src_copy[i] = '\0'; + return (src_copy); +} diff --git a/libft/ft_strdup.o b/libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..9e2087be9c1d21e23c0cb6df2a444bf01e4323f9 GIT binary patch literal 4192 zcmbtX-D@0G6u&dO(`>ToZqlaO5UY#UYSEodN=U!kG+~=923u?c;>$Wadv|wqcV?ZB znh0%`lxm1zD2N&v_(P{>N$7r-JQLizUZMl_nhB7 zU-#U5&rL5B=Z~w3LIf$~2{sL+b-8#)=}`gn;#zQ{gMsGyj}UFOxN+l$QAj?Ceo2ZgW03KY&*ccOrutAyBsI(S ziJD}Rn$i#ygOXyB8qO)3LW!v)Q!Xlon8x_fVW{+&ntdPUlc^?r!$3PTU4GBtWC!0H z;SVyNMOCtWs4qyQu6+CutgYX3O`>FXAg^9|aR9ZHVHQli(nwoG+0us*)GJlUVJVze zp3H1bCo*H1VVE6y7-n~pbovNDPzKII=wueq6I%(DDzAJC(thelyR z97=bgl&%~dWqJTUHF{zz2ASUe;moK4KKeD1NP!P#pl&B*AnE~uGypvs}W%UltSRS1stR|O?ggLA>F29*K_QHCo-@- zt8UY34h4t^|46w^?X#Ba*o3L|sC2D+;OI)=&_LepC3Ht!w;RH27%pKSn6d0?=pF-m z4afCa3LQrr>xsfsWiASK%_}sV7WE3$rAzq=^$WghoHc^Q!ffDrfj7CQ(6-uivCyVE z_w+&~u>BxRDL)Y~Y2y5zaeaJJpV%GZVb2-Dg8)BR1s;ku>_Z9oA&rCsQQmlgD2qeN z*kE7kG90Bx0LLE^JJrR^&?R+t^CtCe&meMBdLRv7Cg z{{VdN1Mr@<(Y-I_x%rbb$L7l?j~_o>JX1b%Y-YY#=DJO4la|qJI@o8R4Kl*BgRA=I zUPwDbnC;YX1ZPhT$XH>)qpGMZ;{EUw2L)}B1ilc8@Ro-p@M~O#PR|I>Tc^PRzdMAP zpXjcSM{tab9USRMICSEQ9WF}vDwpRaoQveNgulk+mn8f%E*ld5EteY-{sET*3BSPQ zwI!*j30 z3(=;ozr=mhM!Du1Ey@@4KZhLHV+}=}g}Z6ai2fsR)QuAEH}-<*C5oD6SU*($9S_5??dRd zyH;Vp!tKSp80VtRN`NuC*oX0`@N#uDOWZ!!K|)5XU%+@iFc;ar!R_}6MLx>*p93CO z|58l-hd@`@i+zcUjiEl_@xS1Og8yK#znWxwe1qk?i}t7Z{SogNVo0Lyp+v|qFmd)T N^ZdnoD)eRhe*q1>#Bu-t literal 0 HcmV?d00001 diff --git a/libft/ft_strdup_free.c b/libft/ft_strdup_free.c new file mode 100644 index 0000000..af831cf --- /dev/null +++ b/libft/ft_strdup_free.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdup_free.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/26 14:25:30 by erey-bet #+# #+# */ +/* Updated: 2022/09/28 16:32:55 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strdup_free(char *src) +{ + char *src_copy; + int i; + + src_copy = (char *)malloc(sizeof(char) * ft_strlen(src) + 1); + if (src_copy == NULL) + return (NULL); + i = 0; + while (src[i]) + { + src_copy[i] = src[i]; + i++; + } + src_copy[i] = '\0'; + free(src); + return (src_copy); +} diff --git a/libft/ft_strdup_free.o b/libft/ft_strdup_free.o new file mode 100644 index 0000000000000000000000000000000000000000..085b5f2562353bb4d6cd6dc3581318a78673203e GIT binary patch literal 4256 zcmbtXO>7%Q6rNps8|SBX+NPpWD=<)gD)2g~tn|Ni6S;9kpcQQ-#Km2&$My<)ZS7A< z5G|kpY7`;S7F8fsqQ@S%zyVeCQURrDFO)l1qzbr{Rwx3b^4{!>y`F3?Fp78H`{w=5 zynVBIr!aFwRTLtILJpEHCs0C84R+}~BlBc486gi+kN-7WT>PcD@O!$rc;;Slsc^5j zc!piOM1|X3*`XC9G(h#FVkINxiP4pobi))tc z5jD;@HK8FWCMCf*HCR*D1soHJCma;ySYRvAeL_ur1WWNm1D;GJwmsRUcMjz`_^uGW zkI~GNlIlZwF+|kL<%H{)L`iMKRrUO9{V1VqV2;%D^#O}08~f0@dcJ}S$}`DLgR$h+ zb^g_YUsU_5gcmbpI&C&!NFC)Tb+lMwuLd z&y614gx2$0E=__sY+oz^7MQrYg^>QRJ^}*(^hl5wF<{Juu-#@9K1A9bfD<=iju8)@ zit=}IJv>=C!-*?d-*vKwSY(HDJJeQEFS8_e4;`{7rt$|UPZ6tYf+G{mO}x+C^d!j2hjo(ODWn5e`=e*(X{^;VumXMCwQ4r4q>%xq z@JC7|YM-{8mQ9#gk4RU$2ky;ib%IbqkWPCZT~NpAx;5*DL)ZgWEV~l8#9-Wd%kfxP z0oCJ=2h9|-cGb<+TTSX_sYB;8W$I-;$2e{HbJ;21aeX(pGuyV>bS~Sl%2k%8;nc|V zE3@gT@m=XXdQKlpXPTaG(*reXQ^zuaH5{{k01hxSkxOT4=}gsd=WVkN+tTvgjBmdQ z(PliO+@LNjx}IUak!d?EkD6Y~$-w#IK8ppjVYqd%Y_)7yFsmV+km;$Zz3Jy?%f9XT zK}eZ#pK;@7caG^}IemObfMc~_zZr%fzWa~|*2oRSV(`N;5==yS>s6x64J%uR`Vt>Q zWo-i-e>hmB7m~vts#ELNsTV;az@whn*y7~=qo}o5WGBa1L^QoxG2ShEQIuz$Oojnx z?I{9}4md^zR>>j|BSUN8(3m1djHDt^w1Ydpdc?^3Rp3TIHiq^`beAUqkFv6B4gByL zIG$ycoz-uk^oEwEXO2xCo+%wWa^yteWa;GL$(cflYc;4%nnt71G6}R!HblMs^C%eG zL-+=u1%4rfW9|ZH7ZUJzGJ-}?aUzK0z0!|`1_N#45O^hE;aeaW0{@Bga0#%1>YY9b z^o{^#cEZ&%7Q)dl-Uc`h22;ncsEmSyf6nkiz{&fleit~nq-{gE9cxIEG!Ly(;iUK!pnUA-dUWHYwbCx(zpo4lNyS5V%n|51$S? z+%0YDc=Oygt;5HI(WE?~|2d^WANNq~voM$Egy>rW=Vc;Tg6EArBHuv*;u>$=MUG=n zKwa@JivIE}$K@O2XRaqtvVVMk(dK{Ep8#FiCi)cqlhUHZl5voY%3ma!=f#HkWBtnc zPXZ>}1c>~~!K=uGhAfNkm5ibI1@2e$J7GeWJq`;|@#pb{gCX=WevDm?-vUgw2@v^~ z`@fA$Xvne^Sc~%C=Ke*Upnrs9|JWzcric?rHkNonT#_6LR?P2$bd>&+yxEBRA+Xxb zRp>8reX%a)m&46UfDy8v0fw&%->#12aju{4AORur7x0%rU@WqJo9piuf_#?sv9Cw% z|G9|$9|l>WFU}>(H@dpY{V(&4f`9i2-l?)a-of&_3lM2b{R1%^V&4NU_+E(8zry3c KE(G~3>;DVS&D#|K literal 0 HcmV?d00001 diff --git a/libft/ft_strdups.c b/libft/ft_strdups.c new file mode 100644 index 0000000..56d22ed --- /dev/null +++ b/libft/ft_strdups.c @@ -0,0 +1,45 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strdups.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/26 14:25:30 by erey-bet #+# #+# */ +/* Updated: 2022/12/29 18:05:24 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int ft_strslen(char **src) +{ + int i; + + i = 0; + while (src[i]) + i++; + return (i); +} + +char **ft_strdups(char **src) +{ + char **src_copy; + int x; + int y; + + src_copy = ft_calloc(ft_strslen(src) + 1, (sizeof(char *))); + if (src_copy == NULL) + return (NULL); + x = -1; + while (src[++x]) + { + src_copy[x] = ft_calloc(ft_strlen(src[x]) + 1, 1); + y = -1; + while (src[x][++y]) + src_copy[x][y] = src[x][y]; + src_copy[x][y] = '\0'; + } + src_copy[x] = NULL; + return (src_copy); +} diff --git a/libft/ft_strdups.o b/libft/ft_strdups.o new file mode 100644 index 0000000000000000000000000000000000000000..64e6319aedd8b1383b71dc62ebc68a8a7c63feba GIT binary patch literal 4856 zcmbVPU2GiH6~1?8Z#?$eUONd&T!*lgLJ2K9Ye!Zn!3oA@l1XZjK;kM&g|@Tn*&nf< zUFIj)h!l!RRcjTINC<+2R9<*M$^#V=pd!E$P)AXvqDqzWXsM}WL|>|^YJsTkId|^0 zXRjwO9PP|K=R1G*_uSbR%;}>kN{J*&j*v}BqJ(_dx5-a%c7ohRc9MT(_kKHLE&bhE zy0Erl-bT&W=|%H4ZJW2PtJbBRUm#?)%{7aDX|;)UaXDNC-BX`Q&(qf8KlX$BO)$D? zEv>A*v%bE*xJ<39pXlfc2oJFYAr>#Jk+A1Ol)pLv-CQwO!Fc_vzX8xTS345k6bYq2 zglx~OTIIi3mwNxoBerMOtV??aKf&>CrqNc+TNw0fGdbcw+q?yd=$8r6=nbpg)1JA7 zS?G=I`{cK&I|NxYZ^0BrfxzzN(ttaiA1_~3F>*rUn_>e5=5Cm5jkJKH^t=8(c=L(^C@qA(SE#$? zMmXz`xKNn?>A~W`v3#TMhV%KV8x~6Sz$c^<6#c-P4O_lZ#vGwr_k&rZhE=KR1kF}Z zEH^y|0PG>7q&w;<2wIl1^v6sOS-QY_k277bu~+Qtv+j`XE`X-OdS7B$Jz&F^*^Y76muKC84W3{FXIXcJ zWu{p_$lG6Hy7nBXPq5yzkTl17u7YA5!_c3>iJ-L6bgMc3!V?s_e!c2CvpEzt$4iPu z$30*7nl9m{cQAu#*$mfV1KSdne#Eaey&%^a zEb1cniu&j`9G4W_ieIQT=N!M_c+Nt;%p<L-0;%@=76u$wBEEWZ1rWz4CAI?QLX!AoB*M30L=wLtWSmzdbl)i4z~7G` z5Zd#LnoER?h*rjt@(~4>JHb@&%R-)3a3PY@3VvS5=M?-cA=?W6o{(z_{)(8NP{Cgo z^79IQQpmqn@E-~JRR#Y}$Zsk5l8~<{cvHyy+ZlK{pKl2KbH#pG$bS~CTrYVZ{;k+o zgnW+}w~YU(z<(@o8Arg;S04yyFZUkm_now}re`5Fxb8w+R z8+cJ$lbq)?Y$I^y17ghDflZ8(?-PTgvrZ|j7VB=M2|CW(rIP2I?@-&G?N*&m7x>I^ zqzmLBM!7jR=fDkQxNwUZaFxI<2Dh4!;d{t{`>o}8!GehG)QT0)o|6Y%jO+V0IdH@| zjL$j7n!p#3`l*Mual-w9wPPX<0)Jf`UQ6IubI?~-eE1UOg!>wC^#=NnnkX{owu0r& z1MtR}-`D>j_$H;2`OhgzMI@u(pEUjf+{i#Ju?cbf3?6m-lYpr)0U}R`0m<`-7?Nr` zlYpV!UDzogStlcDtN$rbB=!GAQRt;V_82Hs@?RGR0{2&(q@QfD&PqOR_mlXg8B?gX zSa;D>Y?BSk5#gWPKq5wtU&6l!24kxJr-c76rJ-n5|7(CJ&Hwd;^&bFR=`YtMDL1Bi vSLDAg1`PjA`PZ20k7YtVyXZeJ>c`_K#7Lb#{O(Bd|F7u(M=@VyRsa73Y$#}M literal 0 HcmV?d00001 diff --git a/libft/ft_striteri.c b/libft/ft_striteri.c new file mode 100644 index 0000000..5f63e33 --- /dev/null +++ b/libft/ft_striteri.c @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_striteri.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/04 23:17:51 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 22:14:20 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +void ft_striteri(char *s, void (*f)(unsigned int, char*)) +{ + unsigned int i; + + if (f == NULL || s == NULL) + return ; + i = 0; + while (s[i]) + { + f(i, &s[i]); + i++; + } +} diff --git a/libft/ft_striteri.o b/libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..9c22927d9bdbb534deac16e44aa30b124ff5b3d1 GIT binary patch literal 3872 zcmbtW&5ImG6tC)@c6)a=Gn+5WlBjKnYywWtZW!`ulEr1r1cL-+Ac#2h%+$=Z&UUZ; zvF@rd$_8Z#fdu@xha^g>8?yJTI^KS@Atl{ zUcY|57prGq&?qHxP;!zCkz@(6CWiZYzMUsK$aZqC_~iY1ZT*kh+Fw>}{lcBvdc09v zyRbo`d06g{=;+PrChFgP;&OencDZ_|c4bn#T!n3YqqhG0`ppNo*Q%RT3hAxlb#m!O zeETlF`s+`7;3zpB&E$ugTVUoD z3OALh_CmMov9^T(LckwsG?=&S2EIqQT1I7PouR>u1;Nl;tLFrSPatu< zcH#+Rggrlqc(m+=6F%cqoQ%6Ed!4Y{^A}lIW&v9*HCa@S0%zHYSIP@<5XNEUV0p=1 zVk_mo+w4T?bmG07pi54_RJRu94qHdC%VjojJE(fL92HH9!}{{#VU2J zQpX8by;cwM;KyMp_TGkjlp?3uXCVl~$Z5SKl#AtntnhPH z%lmw&@OuURMB(oV{FTD{0)MOUb%B3S_}v2ktnhyd{F_+S=Ot?cpBMk?3q9-&I8^-) zIQuYf2_9=9T@S<#R~Mnn!5Rh0+LOD8twh9bJCQ@|W*8DXV137Kvu50FxL(Hx8Q(k2 zX26y+VkdCCF3Xz07m!I42tn+YzqrWY8)19URc+{U&{d(!3Jjl08~W`M3!+uwoAnx< zz*%JCF8^o2=YhGC`IWxr#b)px3yiwy@iYMBWIvX&FXcvARr?u` +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/27 14:47:27 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 14:19:45 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strjoin(char const *s1, char const *s2) +{ + char *tmp; + int size; + + if (s1 == NULL || s2 == NULL) + return (NULL); + size = ft_strlen(s1) + ft_strlen(s2) + 1; + tmp = malloc(size); + if (tmp == NULL) + return (NULL); + ft_strlcpy(tmp, s1, size); + ft_strlcat(tmp, s2, size); + return (tmp); +} diff --git a/libft/ft_strjoin.o b/libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..6c66b4a1c7dddd3140b235e9f7ef6d89070fae53 GIT binary patch literal 4384 zcmbtYO>7%Q6rQ!S^*T=Dq-klRqT)k;QmI}ik(JVaH^Hr|h8EEVAy8$l*K2#Jy|(tJ zbt;txMXKcX(sDq6;D|&egy4pXkcvu$xS$+3949@Aql7$8^!OZQb7ULYO8!Xh`fH)k`T0U&`L~He=lW`) znnxZFRz00TA}kJH|;7w*{7i5@^=$&UV1nIlN!L(M4{6gqI}@-X@HL?F_fYM zvT3;_GC-w>A|uELNug52*GZdviJA;3HX8bvOnE<`Z}dVW`7Y=OlsY{9M7xK3{Pa+^ ziysW|M<`FTO34`7bK<2-AMJs;#hoc4C3hhkxm$=k(;%t7lpAy#Eh3H5%#pjV(>;~8 z#4usx?nNkR5o1cD(w^b5M09xP@F-|Uwu5#zNhFQ~1gpYWsAM1s=$SD>iZNm9LO zRa5kVP1-91DsarIWt3BhLw@)p)UHp_bMJ$}*s$$h485k=gg!uHT4g^HMs{jV+od^t zt}hI$fI2$nHG>q3hIPfXn-_`HVh|Y*v4YIWVjjE)~;w?J2U6mj^|{jGcB`a zv@>?%2ZZXq={bue{E&8m~Bbi?&5<5<DsGAYL7@ehhoYdXrp+aW zC9ppHNP(j*G)iUz{Llt?ZUg-626%tx1>XAN>G|`sC+CajPo27uzgWC@a&|snWY%@V zA`PuxZ|WS-TZ>&*b0OC>{E)C0adrNA=2H%MBoSZmVTz9e&+V52_?7_vK>&wSzH3jf zM38aEIgh4%rxB0C?!l4xgg+|nEZx--(s>R;2$%&Cg4j<_5}Pgliv~W6HLA-;GZ*@ z?-yU^Ul{(0VBcc$mjeD8lfM!0y-fZ=!1){e6T`**dJX{~Ue7&W?Dh=e!P5tO7)gwC z!-v=5DTZT@1p9=j&SC?u4H#Y9A8VYmjk>0~M%yK7S#vd_mK=wu6fGMiuUa&%N)vRH z*GeVZxYDQAY|W|~{Vwo%VQ?47LsY%lXc%zasutW;DqIcnj4ArxVfl01kd31MXMl&T zzry|>5M2Keu;u<756g|IR#^VWY{K|WfOmlC9|uf)cL5?_uun>U&me{*uHPtNVg4yr M|JT&3_YnR61s(hHcmMzZ literal 0 HcmV?d00001 diff --git a/libft/ft_strjoin_free.c b/libft/ft_strjoin_free.c new file mode 100644 index 0000000..a55f47c --- /dev/null +++ b/libft/ft_strjoin_free.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strjoin_free.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/27 14:47:27 by erey-bet #+# #+# */ +/* Updated: 2022/12/13 13:24:11 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strjoin_free(char *s1, char *s2, int b) +{ + char *tmp; + int size; + + if (s1 == NULL) + return (s2); + else if (s2 == NULL) + return (s1); + size = ft_strlen(s1) + ft_strlen(s2) + 1; + tmp = ft_calloc(size, 1); + if (tmp == NULL) + return (NULL); + ft_strlcpy(tmp, s1, size); + ft_strlcat(tmp, s2, size); + if (b > 0) + free(s1); + if (b > 1) + free(s2); + return (tmp); +} diff --git a/libft/ft_strjoin_free.o b/libft/ft_strjoin_free.o new file mode 100644 index 0000000000000000000000000000000000000000..4614d90deae363c3f82c3df0d0692f3c188d288c GIT binary patch literal 4544 zcmbVOU2GIp6uz^wL$|baTfjh5g$<&W$j-LSru@UwX3HW44A2BIW|^H%cSpCg&HUh& z$d6f~ZW@z2aGWxVvqz9Ur@_i-+aNOL?2WhG-`t9+_`r?uF7p}6X2>&SEqN5*@Xti9{>$-P?YHf@`nkni z-CL+n+{@L@EfTLiH1A)yAVDEj-9DTjPAAKz!D?dA(vA0N^kciM0E}1woEWiV~|TE4_J7X`ffteWUcM z*!HVR+ioSc2ehw&R*87A8t^qmE-K1RY};=t(jho@l2oo(#RP5en0l6D7A<2kfdb@) zAEC-7#j;Nm4913SFUQbJnoVc}8q=B#nXpr;*e*@h7=jNq1!iNSp&aw9LGpRSI%C=u zi=?b6CsnFU8&1lwjoD?sUES|RMpv!K*5t^2Fk-q^9ah08`QvezUJkuEa7=tu&0aDqt<5Of)3PVR zfYVwQf`^YI!EzYqk%u_1B1?2GVL@`>Z$F&Qo~O88wh$~^E}e3-@wp6-DFj(ImR zd9Q%;lbjXs512eI;7laP1^gJ3PYL)ulQjYVoXLE@_EUuSmw z%pe}DYTYg3Txx+Q7>+rEd5P-GPQ$eXy=(h@iF3A5)>PN1x^$spK<%|C&~1t`M~ z8_plkuQ>k^z{HpUkyn@>Uq8f +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/19 13:02:39 by erey-bet #+# #+# */ +/* Updated: 2022/10/14 17:49:58 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcat(char *dest, const char *src, size_t size) +{ + size_t len_dest; + size_t len_src; + + if (size == 0) + return (ft_strlen(src)); + len_dest = ft_strlen(dest); + if (len_dest >= size) + return (ft_strlen(src) + (size)); + len_src = ft_strlcpy(dest + len_dest, src, size - len_dest); + return (len_dest + len_src); +} diff --git a/libft/ft_strlcat.o b/libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..b9b8ba3179272c17fa2d2b45b5ab9ed4a0ad83ef GIT binary patch literal 4464 zcmbtXTWDNG7@o76lWe-lZZ55D8qs~It)=eSq{g)AHBH=hE74YMpbx_K?Ah51Zq6>} zQj=nA)!gpvinA_gmpcdU+P9Y{fLzIK z1C!?GxpVhlV%FMc-1N&_^BWcw;#>z0jCCEnE_{)N^t)JwF;++*amJDtc*mX*e0F`e zehRv1tcRg4y=r?T+Qm>brXwjkEyhrU>$Gl;n28=cgNB^zW-<@RY$LZvlCObYk1fKJ zN7SuHt&5hKgTAP zf&P)@9Gentu$RLV91aOsfgGP^(FV0U62tLmVl*+R4fPDH2j5#rG_fnbJ3bXZJPgHd zBJub>uz)!fB2=a)fkk!qW`bSM1b5QWY5&Nc5vX5KEDoo74Q>C348CRL@Gy=!z2T*q z5e;Ij(E|fVHV_gAA|^9IqAwT{333+}i-qv%W)eQ+#I*<^`~rQHya`WD`#aGOPxfBG z3~CwQbuv}ks`*7qf*`ZFb22|Uk*-y3e=%LQ{Y;_ix!j~yEo91;wc2E=6^fL+yz4nN z%k&Hj)9~%8>lKX(zJq1z)f-;ksyh@2s01`cS^_x=mbylId36AyNlk~HrN@1}|3_WF zrpI5`H-4n|E$hRPt;4$ZZX^Qb)arIQ#U8l9ecP>;ZCXqrC{ouWFdF<3w|a`^J(AB; z`()Lr+nq_agLDLF7lL7^H#7Z`uGCB0X zd}?-lM{3HLFve2p1<$wX-ZHhRQ?&q^j#b$UE1jO4NTtiEbjfs=Y^wruQ}^ApZ$Adb zq&>4xqb?|2&$J#*H=MdhEwApRVS#btrNXM2ZbhoAbsH2`DS!z%G&{R1b?1D+w>_Vy zlpgmP8b7mr%ov+6#51Z>& z;PHozy%5>Nz%!BA{_aQ^@=}s2y*@3Fkz_X(? zgbzT;4lo0lDP?w7ggw} z?H3SEk~SduLvu%F4$S3`96b1N_E`Sdftk5%UK-H$%iUOl$b@WR&-T9h=LT>0+=M@J z6aI979|T#(VK*jVypg1grgBA)$J=frZZv4BQ}|Z| zeoEoljSk#%3ZE5N?ngPFa$eq2?1#m=ysz-j3jB$}mj#yj%J?b4|Df1EBJf4gtLylu zVm~VII+2%*FXL`f_{W9)-3tGc;N_mgIKfj$zH@3m9|%8{PYE9PU~nH2!(Cc{s{(q@ z;eAC)4y~DnM;AR}6iv@0M!|K7!Pp`#_~m@nF4aNDWV29k=*bSX>6mtzcDlfa36(A| z4l%6y!UBaG->~6+GT_R9`w8wVf#D0rfSap99dAj*rj>ljF&C&P=zn%8@W;85^DM(n z3qkHf$%|!@kl=db{WjfVxG*4I>Jx$=f*yV4yN(}(*fzrtdG$v69+e?Y9Ung`G3I~u zp9EhuCJrmdKddMfNXEf7tp0{5^bN7uuzuXXYW*|7sWE{fqr&ezfmHu*F!p6q2Hi!e|Jy9_H p&&a;!RR3P!)pr;Dzs5;{b}#Q*Pj&tVK@;ZR5cz-H^5lZ*|1X=b`q%&f literal 0 HcmV?d00001 diff --git a/libft/ft_strlcpy.c b/libft/ft_strlcpy.c new file mode 100644 index 0000000..b80d474 --- /dev/null +++ b/libft/ft_strlcpy.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlcpy.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/17 19:03:49 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:37:25 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlcpy(char *dest, const char *src, size_t size) +{ + size_t i; + + i = 0; + if (size) + { + while (i < size - 1 && src[i] != '\0') + { + dest[i] = src[i]; + i++; + } + dest[i] = '\0'; + } + return (ft_strlen(src)); +} diff --git a/libft/ft_strlcpy.o b/libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..36935b9a103567cab2f4d2cbaa41bcb801237a88 GIT binary patch literal 4296 zcmbtXU2GIp6uvXlp z2&h#<(-_4Ef{8K4=#zcG7=0lmHAWGi@Ik|4UrcJ$2jhc{qIk}od)wLD@kLMQ+;hJ3 zbI-YR=G^5{Vf?tNC`6D#j*xXppoCmbuk#~}9Uw?M%X6CM**3w`iPo&7xa2+2A)xr zT^;NEzV?wde1D8T$oMwU5hat#;mS#rp}f-%b#6vf$@F4G^~%|_@7W+ejwTO`yVB^FBQQXcK-NoyTDJGzwa*3Ru<`T)^74x|sJhtnr}ptfBkojw8< zaAcf?Li7xvsNS@j;Lr0 zv5nOogrosTiA)e^hmcJGc>-&LKYqH5!-qJhHGng#uxjK3cq+=D9b4eZIv);9$%np| zcU-$3mMMt~`I(`?;^088?zrJhuIh&Qk`wrmN!=;stG2z-WOywUsRTto@ap!|tYKps zq3ifT*{I=HR;58>Dk$0wj{*RdfTm03Ux8nb6x_)*m8ji&D|IYI<~$_-V8O6v``nq?1c_0aX5s!PjR z6w1^O2qXgki0_=I#efux)SY&`hD(@Bllgk2Cb+3k2t_?_eH*)Gd4xScz^BpK_+?OdeiN zg_UJ_RdV9#iR@Va{_L-ro2W#?V#c1;Qiv^3WZ&_{F+cZ4Hp!4B__vOf{+tq zV+XR2O_V}62&3$B{UMY3FYfCz`UZ^ty%CPh6OFk}SaJS9QP?y~IQp<*khVq(QO-Y0 zl$lOtXM1bvO=z_T0mnZi_IVUKI$u-Awro;g0E-AudV(vA)?e=@>9oX~0&@}BG<#`$ zNH?QskJW4>jj%boL7_#%Gy!KrF9F|hAut<_z*tKljbsu~%o9(3BWYyI1`s26$IeHL zBp8i}QS$$S$C?G^$ND!$iYLZTjUF2>o;rT~xx$&^nPa2lg`zN^u1M$-XRt>w`+N5z zV%HeRcw&MFmWY!=9Iv3i5d`Xr7G{sQ#pP`h4tFyntP=_QXKjc9zZXFuj2~}1gP{?Q z@%M1~kc1C$`AG>EZ}J%le}l_sC7g?-DB&TOD-!-bmnS9sQ!WP*evQj7N%$O>Uzc!E z&s!2M&gDZ1|DDSpOZa6j-;{9C5Vs{f%jNGRd;wn^&@y{&e2-#((I-2(-8Swg@Xt9e zdJOUS*Dk&&bc^@NC)`iQvm8g;xIHoa*-4ntum)bV)&%F#x@81(CLl)H3M^uje4iK$ zEz?q1Ejn(c0XoK8rIJUdo79$PxmDWi0zU_+aDjb@VK*ixDcom<3)g}HqZzIRxF)y^ zzZ(p=Fs7&%%<|Z@R;+l|B;^JD&m{}~cvj+^MYs{pi1{OMw2c$KKb#RGaS-@rK7w~} zyc<^Z72mGFcXM2x{9kfEd6Dm>h6__Bbo zzv3kP#5xa3!N=`B;{I_AdD-@Dz_3;LaiIyL>)b!fWwD6*g^Y6?W6J(_xc`taXhX1LtUrn+<-r4fEi~jHN?`If=7|G|?1-c~v OuX+AAV!p`A{{H|rWYqrv literal 0 HcmV?d00001 diff --git a/libft/ft_strlen.c b/libft/ft_strlen.c new file mode 100644 index 0000000..1609615 --- /dev/null +++ b/libft/ft_strlen.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strlen.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/15 11:46:17 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 08:52:38 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +size_t ft_strlen(const char *str) +{ + int i; + + if (str == NULL) + return (0); + i = 0; + while (str[i] != '\0') + i++; + return (i); +} diff --git a/libft/ft_strlen.o b/libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..44a92ad0b9c2f1d8f36405d6d13b4e3b64dcd505 GIT binary patch literal 3904 zcmbtXO^6&t6t13`-ksgqo!Ot5WR1j8Vt&Bx-d&d@o8MuVF|#I!3V{`rp{J*2rg5fw z=$|;7kf=!%V-So8dRV-Oco9SoL6AVegLqpH9y|yl2n%}A+%%x?RaedS)V3FWWUJo$ z-e1+L>Q|Fj%IBU;DGCv!kW*w!5-1_1(HPIz64^nf$-TnfKhIZg{8G7bd9!lu@+Jv~ zzeM$~`@bpQXH4c=`Mz?qe7|CCRBo0xE6PUUHo1N`+(hhy7r)*K=`t*0mL(ozd~8^X z@hRjp-|bq2DV-f=Qbx6%fTS}_N@rCB#iV4Jl!|o9P$V%EHG2gOBW#HAQ9x#!dN@`1 z5cF!c2V)dvUw(_9A1n3oBQgFs<3~V8ltNa+nUmOtvOW#_9Q6YaEcPOwy0x0Ki847< z0@Kv3HY9x=os>!CvHWx{o!^t6RHlX}c7b*$N#~E{j^`G0E7P$0eI%DV1r|^g&cagF z0-&fK+D~vAUWlAjbUHnAVg@$EAr>csMs(%$j0k>UW@Q?4mUh3tG^0R_Q59+`5~p?( zl7k2X0C^l&kL!-g#W)qQT$nGH&L@`3&Gi=9dhjmKgg3&vA zxO#X&YuirP)0$3b)a<~IOxkwMXj;~Glf`~0(g>7GC)#4cu-} zwOo$^02={Koi>0^gQcpFk!W)uqzj6w-cd(GH4~~?7!7r7Ma}-9j+|4K=Tj-zO51gs zMK<8&3?1KYI<#Iy0kXh9;@cN#H6Yb0buQSR>kwu=V7V1!00wXBc>{at>#dgQ5jKF8 z?bM^FnAUH(UceR*aeWu2jF!h74X5E7Ew@8`gL-sLtI@y+JoADX_KfAw^Fx1O-ssw0 z+B2Z!4YncEYmzfhpD!-Y9VssA3;JwP>ja@gPd2GTJ=+4&^sLrNI6m$0LQ!iLwT9`h zIaUjH?uNb=IxoX&wZN>ksSip&Fs+xguIC2S3S3WvQ^Sf1h1E9wmQdTS0}87VledaP z$eHEkW5t8#YoQZ_(c-kZkV$h_=4bWU1%2*Ngu~HdCz`)FXt!TNG*>Kt${%VCyw9>Ie-5bBvlD_x!jQObuM=#{4*{G68f6dU&Vt1`iYJ31i>6XM{#Fxo!A=$ zVXr`v?Z1fNZFrI67&{)H=>A#133(QCd>bdR=8y-sUkvuZmH z7j%p_Yc-Ev7*Ly@=``t}3%s3FxIhY`TW+UA;f2s0=(aj^J?OU3eYp&etPXv+OTA!? z$EK}n!!tXS@8$nYcpg|gQC|_O#F-@l@R=V|AAJNk#6*7 zZO`(&vna$!&UF@aN$Wp|O$|u+ +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/12/12 13:45:14 by erey-bet #+# #+# */ +/* Updated: 2022/12/12 13:46:16 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_strlen_double(char **strs) +{ + int i; + int y; + int count; + + i = 0; + while (strs[i]) + { + y = 0; + while (strs[i][y]) + { + count++; + } + i++; + } + return (count); +} diff --git a/libft/ft_strlen_double.o b/libft/ft_strlen_double.o new file mode 100644 index 0000000000000000000000000000000000000000..0c680762bb860a5e9eacd58da01bf21dca0d914e GIT binary patch literal 3232 zcmbtW-D@0G6hC)oCz-h2&E`XFh{_6tn5-7lzqXT{^W|v?Zrr?k9C;wcjU;DX!?XBJWwLQ}Oa`Jxd zVa#MN*B-E~+Ft!;{e$Tr2&!+@cI#}XzE#|+Jw%x8jNgGP+tE*#YkU7<3HA53quX1x z2d{nq1xCnH7%<{B9*TKs=t+Erc$U|%N|?~I&j{5LizhzBIdgqA+W|H{LW<1wX0{Kk z$c3&R8%}Vs4I^2-0b)tM?zEoZ>m0MQOckQLB;W%e!1aL7Sc20D(=#vPkDeZ$4c+H9Vey;Ac^ZF2?2T7}Z5G+=p;6-_ zys^g-qaRUx-?c*V{mgQHB-2ET1Wy~Op0e=U-)TB6wIk44_MgCzo3_8oAsEr5c!yDn zlhn>ZTxvR!QiCx`8n7DV27<(Cke8$Zs{vKZLDFFSAc%+t2O3U%50ldQ?AMt3!m)5v zh?0n%KO*sji%f*mZYKyt60^WRPhfbI&jSCB%QJkY`;~8ts-1}Jiw()dYQ~0y4T{U_Ze(Js+Hm}^&tp67wU%%79KM(TGtHtiot-#e5o?Jv`|p*@ zWGmBCC=e$4j?mo}j54eKM^R7j>%aQXp|2W~Qi}Xvksy(3OW#83I!lrbvG4Lnmi&=O z>Wb_{E#QYZrbQgpn54MC!7H)VU{GzTK2(gXf8=0w;2LwP?aPR!t^X>&P~lH~fx4x- z{w88-OoSlIiz6UGBGq;cb!qwU^8DhQC_nWJHU9=;6jQ7d*_bZz{J#r;&mzB=-$Xpk zzr!CC-LFi-Pt0^bf|u=Xs1K4WRojmdr*j?ZB`DwI{w3sP68jg}Eo3OB>VKE}i#{go zRsXM1k#_z&Dd$gLE#WWjB`r7Q`jzKz^9@fTMqfkKpYAm6s8)IX96`NI>iN;TNb}$2 M>lfbz5kvL=2P!l%DgXcg literal 0 HcmV?d00001 diff --git a/libft/ft_strmapi.c b/libft/ft_strmapi.c new file mode 100644 index 0000000..325e929 --- /dev/null +++ b/libft/ft_strmapi.c @@ -0,0 +1,32 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strmapi.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/10/04 22:55:32 by erey-bet #+# #+# */ +/* Updated: 2022/10/10 15:43:18 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)) +{ + unsigned int i; + char *str; + + if (s == NULL || f == NULL) + return (NULL); + str = ft_strdup(s); + if (str == NULL) + return (NULL); + i = 0; + while (s[i]) + { + str[i] = f(i, s[i]); + i++; + } + return (str); +} diff --git a/libft/ft_strmapi.o b/libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..a6ed1516f01ae1039acac0cca6d9f7361dfb1dc4 GIT binary patch literal 4184 zcmbtXU1%It6ux(7C)w<7vq{=wLu=haZBuY(lMqwewCOfsn=PiT+6Iau%k1v#?&xMV z%uh`Uwbf`bgo5=!lq&clzVt;ADTq>0Z0m~=L<+w6P$8f%r7uN=c+Q=Bli8ceiyoS} z=X~eqo_prpGuw;#$zu^pi6BZw$(kfkLbfH=_#9(%WGmT19;9~uHC0&n{d8ge&%VOK zg}a3XZ>cbU;VyC8VOb(x`wcYzF6Mzfv9$2Z!mX8`-csiC_h^gt8#ldgnC<*`eJ{ND?I@fhia|+? zohZrpz~fqgkHp$hQlhG9xg-*0QY5A#C>9!HQpDHMHeX^U(U^^fKBh9>59k{`7D>GW z`e>{HPk*D`oooDHa%dIbAK*tA&vvD$cC;5HQl}s6g0povgr;^P7r9#KsDjWp!h~Gh zB(ys<0&bD3XX1`)6WSBUK#{9wA)Ptk5|}NTC($g45@_}U0Iu}$&dmv>b9-ku?P>3N z1pIcBL}C;ms1;`+zi0~3*1b9qXkKqeCT13}P^c$TmXa5TOM~Y^CUh#z~d!OP+wNBX|PBs>V2chJ__Bq(HOpBgR>4`mvr<;`YlmX|G=u0u%G zEkc2(^%+wuV|dRp9k-&@@jlfIw>je$%T3z=05eo6>F_fJK}k_njh$4xp!2A!#yvIW zspZ$I10ALO~e%VL)zjmgr0wn(Ah4!J=q?6 z8yadi;5)dEHFv(V>vCj#Q(JysiCh6AuG?tA>m4QcSHkp4=obKU5?Qr+DSXVfqG-=% zqYMMiMqmgYp0z^a>ueEFNOA)lrc($hBo%^U9DD=oNgrL zZUh|xsTd9NRrJq4D?YLB4d}39f=5$P zDa1SA?;(Of-TuPt5&wkCTP6G^m+_oP*gvb|3;2Bq0%82%TkL13k7N8JTppG1U0lvf z_yU(FC7g@ow1hXg{JeyVj?g9ib1v5<{6j8#5`KZpuSxi`T)r&fPjdNv3BS+fk0tzd zE`KWFBEPRBT;uW`3CEusNI(0_y7wh|1K(HhmWrDozu$`+#7T1;dm-2lM04h*VXngJ z+WuM>oNY98%{69SqE&QPCtAsIh{n*0QSxd<)2cQ>$9TO|vW;^sYTeeYn$hY4A7ewf zz&=DPH>al!_zGzj408=eD-3fO?p%hiwgzK<#<1Nv9^0rFtF}IE@B{tNB@O;qLs4fD zF2@-$Hw2EhLD~)i-tAlv1pWpeo$z~zQ4c)PSKK*)@8P&Sv43S=>mTy|_(KX~{#XBD z@ReiYu44Z&NhyhB0Bpm~zr@eq$D0k$kNqp3e+)1=CP3s-?)MoA0g`Q}Kqq5p{v-Dn zb4`ShZJz-}SpE-j2m%Rz%pY@?^EUyLV**50`2Ihj5FpvM0=lsM`|!d8i9W&ogEL#; zIQKB7$P-vbcX&g*DQzf3v0eh}F#nT$*kFGJN%)Bs=f2>BcISh`Dxi>Uao%F9@N%tM zUgG}gRm5jR{RNEk7h}r)A94SjFyyQ3e;x3!`sYIG-vze9U(`QrZ`|rPzW;mt!0>+` mg5NgTAKOg6y8w|{et!<25FojJ-JlEeKg;v~GT@7>?Efz+6v1x* literal 0 HcmV?d00001 diff --git a/libft/ft_strncmp.c b/libft/ft_strncmp.c new file mode 100644 index 0000000..9ca8735 --- /dev/null +++ b/libft/ft_strncmp.c @@ -0,0 +1,33 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strncmp.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/07/18 19:09:01 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 15:04:46 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_strncmp(const char *s1, const char *s2, size_t n) +{ + size_t i; + unsigned char *tmp_s1; + unsigned char *tmp_s2; + + if (n <= 0) + return (0); + tmp_s1 = (unsigned char *)s1; + tmp_s2 = (unsigned char *)s2; + i = 1; + while (*tmp_s1 == *tmp_s2 && (*tmp_s1 != '\0' && *tmp_s2 != '\0') && i < n) + { + tmp_s1++; + tmp_s2++; + i++; + } + return (*tmp_s1 - *tmp_s2); +} diff --git a/libft/ft_strncmp.o b/libft/ft_strncmp.o new file mode 100644 index 0000000000000000000000000000000000000000..6a8cdb11145a80459fb547b001f36ed903386419 GIT binary patch literal 4200 zcmbtWU1%It6uz^Qn{0NIZ2oE+T6C3aEp%s-G_+0Iw5xILHZ4+%ffkf?c6N4mFgv@< zPn%TQDyc&72O~mDk%Cb1K_3($^hFHy!TKQ72hqpA2!*~xe5v}N=iIq>clKtU^pKr% z&UgOq@4300Klyx2QHUUg93gE@poG+tZ8^up92q4e(whw^uvZ@E3Sc9)w|YwNpjuiSm*yLqV4#fBMYv*}}U=yNqB z$58J2Y3npFHQvLtE^65xQM;I?#wmh=DRHL70-MquXv~GiFQH?Abu&3g$b4gu#ZouG zPUDO44YKSUXv>p*xfZ@ZBp+gOFW88ZqUa+?OhftjB+N76PJqJ>6l1G}ggXh^odyRP)E30gVDYPel-3v7FC9nCkIB7>cIAa zA!WE{a4TeZgs1}tlZTSi$>SrCekVyLkAMfPDHma;GzBP{yPqP+dZvOPia|%m4v)cl zaERpzpk7TmIwq3u8aqCMHFMjpK0BsBjs%4*5rt#h2uVVQ4xlfb58hmuc_#S=x1$_P#_%JsS6Dn#8)4Il2RxNB07Y z&CzjW9(@j&I!6;X>F5nQe1j?{Vlh~Ng@#>CvkzVo-*&C4ZI;uhz|i226pN;P&T<+y zajgqx(Id>e!?T^F1BPhRaXMGPt2c{quo;_d*E4FmL)Zs`EV~>O!BM!ihU2mEv{#aY z9mV*-S&pn-akI5X-E_02V=iS%rkC{`{haPEW@mlJ_1&q-Y}0C*i&@yh3Y)6#RLQXy z=F_ti`_t3fls2Bu)IHxeXR4-cI+g*d?ijThI1ZV8Q|U}KovG;Vl5NyrX&Szp@$K_4 z@QkOI7EBk6uBRKXWtvXIGYzldWZ)FwS_^}*pu06;wi-4Vj7mr+pJ@}9Cdak$DQ#kRfaAGB!X`NgKkQyG7d%nxh~a5M8VwjxE}SOH;-IpQN}v};kV;Y!D9(4&bHy?Yht{Xnui8f(nnha? ziN%Z)00ffwKk#*cJ)@nd{KE8DV&Mmv(a;^MsFs7Q(SE_G6^O z0c+LW%k?=47c2RqgkR(O842eqDM~m#%}AAiwd$^My)NNDaNU#ePq_Z3gul!6_ar>e z^$#Wd39f%C;oW>+zLM}&u74xp?2!gcj92XAcJ3$kP2it%{2u4>K5D$a@NaUz83{kn zadF1bAA5=*>@i4k{;vag6Q1Tco~iJ;BAUBYhlUBmK{TULubc3`Xf`xx4Z0;XXlU46 zhj(6s*4;E6Z;9tNYsHGA*G)c`|HE+qaP7qUid;D^wE6+p`Su7m@;FF{iM}ojzX(C% za{Ml^<30Yb@e>d$=fskt{#nT=sjN?6SI=Qki0<*$-QG85Xru$z$RnpzQNo1jFQUw zUsU}!czv->SRebcT)znz<`m-uk@@hsB{})l9<1MzW@Pq%JFG_ArA;g&gJ;e0FPS#YZ2>@ z{}qUMu`f}zvD6t}zs4s#3>dzVay;&-e0KpN>-_$RcN{S!dHwKQM8$u}$1mPZ790`( EFCbjTmjD0& literal 0 HcmV?d00001 diff --git a/libft/ft_strnstr.c b/libft/ft_strnstr.c new file mode 100644 index 0000000..2845cbc --- /dev/null +++ b/libft/ft_strnstr.c @@ -0,0 +1,37 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strnstr.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/28 09:37:24 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 16:39:12 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strnstr(const char *big, const char *little, size_t len) +{ + size_t i; + size_t y; + char *b; + + b = (char *)big; + i = 0; + if (!*little || (little == big && ft_strlen(little) <= len)) + return (b); + while (i < len && big[i]) + { + y = 0; + while (b[i + y] == little[y] && i + y < len) + { + y++; + if (little[y] == '\0') + return (&b[i]); + } + i++; + } + return (NULL); +} diff --git a/libft/ft_strnstr.o b/libft/ft_strnstr.o new file mode 100644 index 0000000000000000000000000000000000000000..6892ee6f51e086a8088e620006565b034a2190a2 GIT binary patch literal 4456 zcmbtXTWl0n7(TPp({8)%ZZFrfxMNZi>LYiTK$(q_woRZwVBp4Q#%?C!+vY@G|V zB!XBWHpB!ZF&GW;0pm*_FeXYgCJmZUUQB(E@aPLk4TfNRA!<_p|I9hG2Nef5W9GZE7G%fJ)^$Vg5`kz>2Ft1 zbvN|{eIIqCXHrj;^ySe-&^<{jUL>~(n5V!j0rMyaV98V8!3fN%IeqyR?y~^dd+)d{ zt7eO7NO$HY#9o5f5T!r0U~d5Z10Iu&H+IooUS7V9J*L)03E)G$R-bV`_^kf&2>J;Y3C_#7H~TrHEmfXp`ZTqt$} z^fWvLPcKSGbXDHnIIzO+@yY#6t_K}aVs&UQnwW<2=?KiTA!ii9Vk^p_tLX?@DY2vn z2O7${3GhGySoP}d^Nj{kTIvynu8uWM6Qz}dHyU$9X=7syT`j?AFS0-_%JyhmM2&8a zwkWN2%^SgQ15u-UBmI%S$dNV(+Cd_b17HEwg(Lmv4h{T~yghYT?83_`N5VFdGynqwMiFk!) z5=TyzD4K3E zXE?TJQZ{nQVm`mtq;Dk@DL5J1u}t{a@;D6FG;C*FE8$Kr>P}_S$>b}R4g|~uG~;>! zWECu_Lh8NQ0Z?NKtqD)h(7G8)9e4qu8s#YMfG%{OZo}?d+EAqQ8m$L|P8vN$>+aL0 zmud7z8kwV8ZqT+lTECBO_Z;Kc&C!}N4XbCy=thJ$XbX1tX}ubGmnx@1At+F}Vix1< zft$xJRV*j&nzm6i_3=1TRlqjR>KTV*GP-%%uqq}g8;(=f2@6nd$s%EZ)eKbzRds_Z z>6W#cD__c5ggroGnB!g$j0PC~d{rlWtjs!T7VKoHGNIc^-O{HMIo(M*R`zt(ok|Y5 zmhIZzyOWc~q&}5|cUxfLvR08CeswfH)U_wxr*&(c@x+AVn)?2tZt9ki2bi_;rTwr@ z5`#RNsZ;KPI*9va#k-#MCdO~>_yl<0C9>N>Z(Q|s*3x^{UyE;#ShY=$0>Gnff3 zw0S&9agkwL=XFFm`#Mpknw8Csb>SLZRZI8FnjB%i_iRzI9Ms~d@A4v!ogJT#IyHavVHbux4E(BMca z!wv8z;q3_TagE^U|A9*w8@m+&W5t9F;!35E#~ZB{7XY*tuVePePjkFp;(y{8=ZOv7 zR}MaqcOeN4oP^ zj>L<67bN}@jzu0(=N#uhl3@)+`Kl3o=fA#MH-=I_?{|QMcLDB{O zLG!=GCpyL#8_plsuRQ<3XXL-Y{pLaMZ*u-oP|6(IAL0e+^g9RG9tSRH{9*QMf)L@4 zD70%*LIFkp z4%h_w@8KH)*O$KuKhe*EQpkS0yu6{fQnvjVc>F5iuX`m#iTlS_7*7!M7c`#N7*qCt zpZoU;L*C2&bHE4H|9C+Co55E2i}w +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 11:13:35 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 02:23:25 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_strrchr(const char *str, int search) +{ + int i; + char *last; + + i = 0; + last = NULL; + while (str[i] || str[i] == (unsigned char)search) + { + if (str[i] == (unsigned char)search) + { + last = (char *)&str[i]; + if (str[i] == 0) + return (last); + } + i++; + } + return (last); +} diff --git a/libft/ft_strrchr.o b/libft/ft_strrchr.o new file mode 100644 index 0000000000000000000000000000000000000000..cd68480c217bb48d0efdf476e6e8f151d1cf0744 GIT binary patch literal 4072 zcmbtWU5Fc16ux&Rv&n9@$^O*ZrCKAjw#Ch4w}iIa+IDe?P1{98Ei8(JNis~MuAPJO^&5;2=&)9jgl}wU9vpeseDX;!kUVVLY)xUAQ zbQ_iB>!mw5-(0*@x?QeqlrNPw%XA}qm1Mu!xKz54y}CYk&3` zG0_y0lt4#^0*RRBqZaZ^N$V5SrbIyt1~$j*MpaU{Gc4`Lspocrp;`tO#_1C8DggAf*+INyq8# z%w$^4?8uDMiR9RW;JJ&W)5idUs&E!ENn`;%IZ2527{O_%NYu>X^bu_i(Bo52Ou_y* zlpa7SogSZJb^z{~Iys4p%y0kT$temkhBcz5AO>?#wi7Y}00!*?X$TpyfWkyA$TV&i zw?bIG7>9$XR3G5XPcW;b3nQg}WwyY`z6PiuE%>feuv=rs)Q+m`Fq^%j0nP1Eaiy-Ka)m;hjg8YRO)rXZ+UswFnH zq_3sUYa=t-cuLoX8rtNdHr&wCSG43UZS=I3XlbKr@06ChrEP=DNl$4H;{>*2I5)Im zb>x&rPb&)SqusHaIX2)`ZX2!#3At9&HtRV=BH2Q2@JA{Y(>`lC9Xq5YEJnn25IO=w z1k-VdYZ_34!D6+R;Se@}fo0c&fS7{Y>Np-tCg38`c&f~?U^m=CtFvsn1=BHC@>SC- zc#d(_@Oy;?-*J7nxWCY~x@ND?wyF(}z)FVGBqyFelUtZQn48m!`b;jr?D@8Nv}xL= zW7R;!JdeU*<_{Ee`DQNPFx(Xzj;~{Pd^hjguRykWOd7nH7N)LzbaosMVLypEHH zv&Iq&MGZ>a5^AesgQC_5$%LF(SU8;9d#38!o*$%?pY@qE`^NqmeWs|-?hA0%u*UF` zz&~sPFU&eNF%|xiwgwZSuRcp?Z;b93O{U&~YxWS}_>aV{d?_<_QCZkBq+AAz0FN8N z71sRYpE#Ww`yya2{p%ZXQ~Oy)U_gU597Qn>>y9!EIBStH`0za#0xC)02j6lZ9C}&| zsU#bNVtm#$BRY&Q5votW%|yPgfgqg4j}f>9OHzq!%PUrbx(5nn1n-{W>k{!%UoWRa4wSPB>YV-zaZgPxNJ!HI+t4# zF6!+|_}g55OTu5|@9XA$Y6VCvWTZ!Ui(;qP(zO9{s(AL;90>c`1*`8x?0_5G3K z@_F5r?Aa>~*ful-68AyeWO0`eXTM086(QJ5kmUI10{9+0$8o$n;rl~$cV!tmBFvr> z%q_urX3ryf-S7;eS6!Frj@dT!x>@y`70YgPK*xBaT6N5`5w+nMcGHZy!0T!X7g&Pm zwa)Ug39p83LkHHOD?$f`j?86vhIQ!8UDNSacx@d%MT3LIi;9|@RWC0U5F{~l1__xfM`XTevFiED}VrzNE%vY%Dhz30&>L_OZ3 zm-r>YK81Fox4^GBMn_?kW1=F<{jM>q!64f{11cFq>mRtk=wBj&Y>Gm7ry?Qw4e~h z{2Ext`L}tKnC9`sB>cpDf%^-+m_H0R83D%Fz7H7Il^<8%QuyckNWh5w3-}9QFc;bX zE580AVaR9M|8v0O>c1TuB~ZBj`1%Wffyb?le!uheTf9&cfMG9|{qaoYZxK;hJ`yb~&!}Gr?4EZek{|g-8x4!@Y literal 0 HcmV?d00001 diff --git a/libft/ft_strtrim.c b/libft/ft_strtrim.c new file mode 100644 index 0000000..c54b7cc --- /dev/null +++ b/libft/ft_strtrim.c @@ -0,0 +1,86 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_strtrim.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/29 02:41:32 by erey-bet #+# #+# */ +/* Updated: 2022/10/05 14:41:29 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +static int get_start(const char *str, char const *set) +{ + int i; + int y; + int check; + + i = 0; + while (str[i]) + { + y = 0; + check = 0; + while (set[y]) + { + if (str[i] == set[y]) + check = 1; + y++; + } + if (check == 0) + return (i); + i++; + } + return (0); +} + +static int get_end(const char *str, char const *set) +{ + int i; + int y; + int check; + + i = ft_strlen(str) - 1; + while (i > 0) + { + y = 0; + check = 0; + while (set[y]) + { + if (str[i] == set[y]) + check = 1; + y++; + } + if (check == 0) + return (i + 1); + i--; + } + return (0); +} + +char *ft_strtrim(char const *s1, char const *set) +{ + char *str; + int i; + int start; + int end; + + if (s1 == NULL || set == NULL) + return (NULL); + start = get_start(s1, set); + end = get_end(s1, set); + str = malloc(end - start + 1); + if (str == NULL) + return (NULL); + i = 0; + while (start < end) + { + str[i] = s1[start]; + i++; + start++; + } + str[i] = '\0'; + return (str); +} diff --git a/libft/ft_strtrim.o b/libft/ft_strtrim.o new file mode 100644 index 0000000000000000000000000000000000000000..7df8f10d6b9abf07eb2cfb20fce903a145f95f4a GIT binary patch literal 5360 zcmcImZ){sv6~EWdH+i-bJ82fNs4y&4mX%>UDN*+)X`3dz)Lk=Hwnk7i@I&hPxa=iPViy==_RgeWC)P;#8?aS|ou&BPu($;nAFNFE}8OFZ(=xoq=~ z+2+daY}327ZtS3RtFUhDBC&4V<9ue-*vS?*v#ZAKEZt1J-M4D&W{VrZ-^$XB#M|V_ z_q=XU#@G#GmvS+xgBaAwx2}8dG*<2rkAb7Dk2Q=PP-*jsD&PJ&2K(~+t*jb%k}@+M zy19NEH5#{R6Wo~puOxNIt#O@hB^tFI+F02km%q<5yAjN61Twn`HQUTKR&Elv8>UU- zMY-aiUxzHSt8-WZ(D{895?}k*{rgR0TS5EpBf0|tA2+rkX7&}-#YJYDP~yhQF7dj# z&#l>Y;|>b8hF8H2e;GHSx~p?{vc(U;?QWKS0HwYXY8ZED!`OxjZ;u;0U;FK<0UDSJ zXl(u(6Ek*iygwKsB#i!u&UZ`?rvr}<0~;x%ccVlLvx?=CP?&QeogpYEs&g*n%V?L+ zah0%cqoR*7PWujhrH_Xa-vfDAufo$0bSS<@AL$uu;ZFqUaZdB7^h7u6%kdjQ(ATD5 z5fNvU&=Zd!8CuIm9Mc6h?X#0n$F&JP$wPlUWl63JfWWz z>^$VV402vKI?QuHeH^d)6QQrY#p7d$;iMn&i+%#bqdt2UBOdPZBhE*c3H_8{%6|CA z1zRP(=#?hgB3)}mitvRbKG7B>@tHuB{$P{??NJ6=Q3&m)pNtR0wD`ezKRwXh_YtVY zArgxn2MD%+AffEx1fZt}2w{&BoWO+^e>yhKo&xm5(8LhDOaaCAAU#b_3~@aGhlfrN zV35g&uT2e6@DX7|)4>Nf2t74p3n{s8OA);JHsM(S=U(>E3xo-)}y)4F#RrzXz^zlJwM92^pkAx7c4x% z^ke_YMI2l-n2s*Meu3LFeTwx%2cRyCdT%gYKhFl>e{g~66O8=4AaldFm{DSHjXiRCKQ75RqIwM$sgELie2c05vsj8!9b~isifwLE!Y7w z8Ee7Gl;Ijq&({@ zkZ{V)7pkTMLhxL?m|C>!u32>Jb_%u@mR1Ui)x1-d;!52DL2)6#@6`m?*uFJSO;10a zd~B}ZS+3_Nn;P{vH~RG>Bk7T`^ypz9$8GE%D19(v*M~LY_PvgWj0S%k5BU?JUwxj? zr9OJFr(3@YoBpGK;~xiaX-2&7rOLY$l_#H$L zhQ#0XS%L=_4peI$2|yo45C-bwUycz$NI&C(Kd#_S5!X=g?+Sia!39fRP;gK1UsCWl z1fN%MS>LjPKP!0YPv+kc_%{{(F9`l61(!YL2MYdo!T(6XuL%C93T_Gh9R+_y@HZ6v zQNjOC%<_H7{d`E&TdwObLhrPK%YJ!I;L?xm8$VR^LBBEzEH5uOKsx3owrJ6y9r#}OlbmfNV-_B)l4`h z(-xezX*lBGw1v}G@NmOR!#TWY+U~OOZI*KjcD`nc1^tgx66~?I^1VoRlY&q$ui|w} zHF6Lr>{*j7#3wFb^MN7z#Q~tvR`xJFuW;bLMqE7s$Ad2w6~$2F{Vr8M!L#lOPKY z)h(VY7+12;; g>bHw_y7+#cM +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/28 16:33:43 by erey-bet #+# #+# */ +/* Updated: 2022/10/11 22:09:26 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +char *ft_substr(char const *s, unsigned int start, size_t len) +{ + long size; + char *new_s; + + if (s == NULL) + return (NULL); + size = ft_strlen(s) - start; + if (size < 0) + size = 0; + else if ((unsigned long)size > len) + size = len; + new_s = malloc(size + 1); + if (new_s == NULL) + return (NULL); + if (start <= ft_strlen(s)) + ft_strlcpy(new_s, s + start, len + 1); + else + new_s[0] = '\0'; + return (new_s); +} diff --git a/libft/ft_substr.o b/libft/ft_substr.o new file mode 100644 index 0000000000000000000000000000000000000000..153f309d7b08fd0cfbc40334c194f8fb26bda92e GIT binary patch literal 4560 zcmbtXTWB0r7(TO;>27wDY?59>y)5*i1$Q=yAx(NslWwzVV_R(l6)o%R?(7A3XVQJt7i%$&PVoZxjd{p|yIBxd9H6V*G52+U60OYFFtsKyt-Y=KM%6L;bZs95R* zvxUT9eBKHGH&0CvnYkr#XTTQ0ZIL*B8hvSa_Vhh(^u*xpGh3+lrQ_1 z^+z6N$&bKyv@nSG?Z6ACZy$u2H(?zlK-a)CXNr;^+<`uQ_-y)V;~)%jz)z(nrC``Z zZlaPLP!QyU6rhsN)k$kyiJB;Z^JwT|Ybfsqq_)1tec=y5uLP#x=|LK`U@9fiR+cQ9Dg4G?!nL6qmNU!W@@ zb@-1`^>J71q=otBPCA-QdHTZh!?Z{G;9HW0aOS7>)=Ff_InVr?a% z&_1w$C1fm2ObG*u>NVR54*ovZNkOOmU34v1tVQ_GCJ`Jv8jRnWPe|@STLNaXwGnAse)~}CdEQ3mP@Bsnhe%Lk*uAxoRnpo zY8tC>jDlrn)I7etIo&Q->}0xZ>Hxq*K$Fq4z{_B%NTk`F90+n)QlPJtprbTjQ#RaC z{8>dgq68czbWI5!RsuO?!;BJqLs4#`O^c(1_bAE@MSfms@oibBG&_oP1X@~>ie)1g zp$~io9K$N)3_TM;p;jt^vfz(cg|m9nCe*slaydvH3_iMPE(cBLHIvYXp`S@w7`9+! z+<2JK%9l->rgpiyV5~6ej)jnzk+ov^a!I#hx~We`Q@S0qO>I(hreY(GX*pJ3Z>&xaCEA94hsk@9kE*`_!HtE>4fXcI*=P zhY4Z#+`=OfI|pfZ=`iid`9+t4Mt42 z+5jOS_a6@%>E(tu64u14s`rxFAzqK7Jw0tj7;t*dHozNKEtB91TLfgX;=-VIGJ#{R z0m&rX0L3`C11m`;tt&u8Iz8*dk0>~D8%Bw)g6~`f-?s{0*I>&pcye_7*zkezwiY#DTv*HS4{pR7}Bre@^ydKdV7(YXucA!@o@D(P?ss|H+MDqJCO zb-`7}Wcbce;Zm#UrajGK>-l8X)Ji&=(El7F;E!v_*O`YKVhleYInK6;iv;@s&!C|i z;xZT6%li_;@oYg~{!Zg(Bhq&GM_jy_TE#?Y3?#yM4q(jx>fhfWCP0MePY4MGk@SFV zqxmngiC$#QhV#e%73V(;m>3fvGQs?Aq2M9Wb^>%FhUV+pf^>U)kri!^1J!5Z`SA=8^E)giuMxATRp=!VVjL&wvRf?#IU}pqytWbZ8e}D5ex`-vu1Mrr35fE4b5{f24-E44*%T z@qEXaqJKB@AL52=6#YK~ywUn!Z?OLDV9WjazBI~>sVXf0Jex55vZP;iqJJ~s;=7Cf b1I%y?1rLeq*8#dl{&!jZH$A?{ivIrsWY`Za literal 0 HcmV?d00001 diff --git a/libft/ft_tolower.c b/libft/ft_tolower.c new file mode 100644 index 0000000..eea41be --- /dev/null +++ b/libft/ft_tolower.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_tolower.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 10:04:55 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 10:05:32 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + c = c + 32; + return (c); +} diff --git a/libft/ft_tolower.o b/libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..e83e769a2d72bbcafee2125b87a4b7c76840c7e3 GIT binary patch literal 2904 zcmbtV-D@0G6hE`G(dA~K?-7M$5^2(_uEE-tZ_N>L#wLP=&PcRz4mP{fD6`J%5r2gC>e0sjO40P#gMV9%Mkr*rpaebEDR&pE&IanJoYckb=H z@mk3+fXRR>P-u(-ynCvUo0-^z6{x`<3s3*G`}%|59^5&;f9JS)_cV_0-7DYUIkrFB zIllRmhrZ>^e>O{dCX{qX@8Z}H~fjOJouGLCsvBc+~Qn^ww zXEE~&lpQ|+(h9N*aYA|vH4~o2(J=n5&f}QvCob23PO_JTgYdS9Tt5r444BK4Q`Ed+ zSwC0{P%0Z8%j#Nl*DYhaRKgVXpcB`7;ZVeN5s5>mEs}Z?dAGcDTyLdOoW`3Q^-+H$ z#`QtJ-AR<0;OdQCyVZEn-f}nHb=w&xX&|<{A`nsEN7ak`-uC#?Md#wC?R0IYf$G**8Hh=(1G-SA-bex`2C-0W^-z1P%V#7bRx`r zT;&9eXxD?}6K3q_Gks47|^ny^qPie$oxF3vJ6 zEBj-!|3n8A3Y&Swrx9S8Y&-+uw91zWL|V!jF#e0wpU`lr!m1SLT-8&$p!loz!BudY zw;}Z{$@M&3Gu1>eiw+$E&PWR%!#?!sgbJCRiG$84Fr2EoOh+c^%eky$=pN=C5Qa=#HcNqU=8ExaJ=On|= znHAuMLwwr)e>!FV=`X|ad@j@G xrm6mv^Y`R}ml31CmmW`Ns`oBJuunxH@qZ!LPVP0`i)rx>W&J;Lpyc}gKLRv>>mmRE literal 0 HcmV?d00001 diff --git a/libft/ft_toupper.c b/libft/ft_toupper.c new file mode 100644 index 0000000..3bb2a91 --- /dev/null +++ b/libft/ft_toupper.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_toupper.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/27 10:01:53 by erey-bet #+# #+# */ +/* Updated: 2022/09/27 10:04:19 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +int ft_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c = c - 32; + return (c); +} diff --git a/libft/ft_toupper.o b/libft/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..ff59a8bf91080e7df84b076997b5ed67c4fddb46 GIT binary patch literal 2904 zcmbtV-D@0G6hE`G(my*m*?takS*=0WJ zrlqY=5sNPhf+9Zj%@=+3IUxQE{s;a6;)~RPJ!j^g&fS~!MGwq9=lsss{W^CZ?7aJS z!7zZyfNjV%MgcxLlgo`%Y``*9;m`ROpX|N!==VqWP9EMnIk$OpDB*wLV zuhotxE9GV3+KoNCS%2N$bT`~J+Zn`3AhtRp5Mj?p)eHUZ*7(Y0=kkW_bZn>XMMr_( z4Tr%niJT<(xECBcvDfO02#rzf`L~==IE;lK4?`!4(UGDugWva}E}MJ901bXy(E+YC zn^*1E_F730C)t#odXj4O`|E4&+J;-dnBnPeWp`%*WeY!C3LVTb-6vDpmnApud;rFH z!B{;vGy5fO{R@cGM`Y8mQ(5?|&@7+%5FJSW7otmAgg^e7W;UmG2F>N!iB5!>&t^FR zBbs%@BuaUdCR2V0q(oa$~% zeN%Eh56_wALwA&k?kth+zn;OTa9iRuM|GayMn?neKjd+k@h(fT7{}lqda(y?D~iAk zMc;D|MJws-_k#8iZK>?FTA{c-VfI2V=!nUXelHLlf+fK9hl7E@_tg!s-(BoJ?04*c zsds|J#g_n|w)jZq7Tx`J=naHi%l~1k7)*P|`^&i+Qm`42oP1S!2^GTlonYGm3mVts zFQA?7#ea>bd#UH7k_R*(>3gL6(ocw9i3WZueIlQZV+m3}5X5&F|79s{;i%^%!>_3o z;D+SPbl>;Tpkw4)mEal&O0N4}M||4+8?s3_p5{-ln?C-biOKa9P>}n$g=A9-NfUN zTXf&A(M0>IyFZqIork6pub<%`QJ|c9{ILYCu%qO9{11pv+yBp}>_7cwIG)dCT5T%z um#p8F3tmEu{$6@KovGft2*CkO3W@&0V5We=O(!GY3kp@BdQ~Nb4H_ literal 0 HcmV?d00001 diff --git a/libft/libft.a b/libft/libft.a new file mode 100644 index 0000000000000000000000000000000000000000..37239c466a7bdd4bd120ce962ec8de79e4eb96a1 GIT binary patch literal 170530 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 +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2022/09/26 16:31:10 by erey-bet #+# #+# */ +/* Updated: 2022/12/13 13:23:44 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFT_H +# define LIBFT_H +# include +# include + +typedef struct s_list +{ + void *content; + struct s_list *next; +} t_list; + +int ft_isalpha(int c); +int ft_isdigit(int c); +int ft_isalnum(int c); +int ft_isascii(int c); +int ft_isprint(int c); +int ft_toupper(int c); +int ft_tolower(int c); +size_t ft_strlen(const char *str); +void *ft_memset(void *ptr, int v, size_t count); +void ft_bzero(void *s, unsigned int n); +void *ft_memcpy(void *dest, const void *src, size_t s); +void *ft_memmove(void *dest, const void *src, size_t s); +void *ft_memchr(const void *memory_block, int searched_char, size_t size); +int ft_memcmp(const void *pointer1, const void *pointer2, size_t size); +size_t ft_strlcpy(char *dest, const char *src, size_t size); +char *ft_strnstr(const char *big, const char *little, size_t len); +char *ft_strchr(const char *str, int search); +char *ft_strrchr(const char *str, int search); +int ft_strncmp(const char *s1, const char *s2, size_t n); +size_t ft_strlcat(char *dest, const char *src, size_t size); +char *ft_strdup(const char *src); +char *ft_strdup_free(char *src); +char **ft_strdups(char **src); +int ft_atoi(const char *nptr); +char **ft_split(char const *s, char c); +void *ft_calloc(size_t nitems, size_t size); +char *ft_itoa(int n); +char *ft_strmapi(char const *s, char (*f)(unsigned int, char)); +void ft_striteri(char *s, void (*f)(unsigned int, char*)); +void ft_putchar_fd(char c, int fd); +void ft_putstr_fd(char *s, int fd); +void ft_putendl_fd(char *s, int fd); +void ft_putnbr_fd(int n, int fd); +int ft_get_size(long n); +int ft_power(int nb, int power); +char *ft_strjoin(char const *s1, char const *s2); +char *ft_strjoin_free(char *s1, char *s2, int b); +char *ft_strtrim(char const *s1, char const *set); +char *ft_substr(char const *s, unsigned int start, size_t len); +t_list *ft_lstnew(void *content); +void ft_lstadd_front(t_list **lst, t_list *new); +int ft_lstsize(t_list *lst); +t_list *ft_lstlast(t_list *lst); +void ft_lstadd_back(t_list **lst, t_list *new); +void ft_lstdelone(t_list *lst, void (*del)(void*)); +void ft_lstclear(t_list **lst, void (*del)(void*)); +void ft_lstiter(t_list *lst, void (*f)(void *)); +t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)); +int ft_atoi_check(const char *nptr); +int ft_strlen_double(char **strs); +#endif diff --git a/output b/output new file mode 100644 index 0000000..e69de29 diff --git a/pipex b/pipex new file mode 100755 index 0000000000000000000000000000000000000000..b56f28b6ec7a510da24aaa0a2dc51088be8d953f GIT binary patch literal 27400 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 UC6@N6)AKjBN{V$321k|sFZXeRO8@`> literal 0 HcmV?d00001 diff --git a/pipex.c b/pipex.c new file mode 100644 index 0000000..57c630b --- /dev/null +++ b/pipex.c @@ -0,0 +1,61 @@ +#include "pipex.h" + +char *read_file(int fd) +{ + char *str; + int len; + int old_len; + + str = get_next_line(fd); + len = ft_strlen(str); + old_len = 0; + while (len != old_len) + { + old_len = len; + str = ft_strjoin_free(str, get_next_line(fd), 2); + len = ft_strlen(str); + } + str[len] = '\0'; + return (str); +} + +int parsing(char *argv[], t_data *data) +{ + int fd1; + int fd2; + fd2 = open(argv[4], O_WRONLY | O_TRUNC | O_CREAT); + if (fd2 < 0) + return (-1); + fd1 = open(argv[1], O_RDONLY); + if (fd1 < 0) + { + close(fd2); + return (-1); + } + data->cmd1 = argv[2]; + data->cmd2 = argv[3]; + data->fl1 = read_file(fd1); + close(fd1); + return (0); +} + +void pipex(t_data data) +{ + int fd[2] + +} + +int main(int argc, char *argv[]) +{ + t_data data; + + if (argc < 5) + return (1); + if (parsing(argv, &data)) + return (2); + + pipex(data); + free(data.fl1); + return (0); +} + diff --git a/pipex.h b/pipex.h new file mode 100644 index 0000000..2a05078 --- /dev/null +++ b/pipex.h @@ -0,0 +1,27 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* pipex.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: erey-bet +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/01/11 15:33:34 by erey-bet #+# #+# */ +/* Updated: 2023/01/11 16:51:43 by erey-bet ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PIPEX_H +# define PIPEX_H + +# include "libft/libft.h" +# include "get_next_line/get_next_line.h" +# include + +typedef struct s_data +{ + char *cmd1; + char *cmd2; + char *fl1; +} t_data; + +#endif