From 1186421e98c4a192d160cf3ad3a6b1b63329c6b2 Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Mon, 12 Dec 2022 21:56:11 +0100 Subject: [PATCH] avancement, prototype fini, leaks et parsing --- .so_long.h.swo | Bin 0 -> 12288 bytes Makefile | 5 +- assets/exit.xpm | 133 +++++++++++++++ get_next_line/get_next_line.c | 23 +-- get_next_line/get_next_line.h | 10 +- get_next_line/get_next_line.o | Bin 0 -> 6592 bytes get_next_line/get_next_line_bonus.c | 116 ------------- get_next_line/get_next_line_utils.c | 10 +- get_next_line/get_next_line_utils.o | Bin 0 -> 4632 bytes get_next_line/get_next_line_utils_bonus.c | 75 --------- libft/Makefile | 4 +- libft/ft_atoi.o | Bin 0 -> 1736 bytes libft/ft_atoi_check.o | Bin 0 -> 1808 bytes libft/ft_bzero.o | Bin 0 -> 1576 bytes libft/ft_calloc.o | Bin 0 -> 1752 bytes libft/ft_get_size.o | Bin 0 -> 1504 bytes libft/ft_isalnum.o | Bin 0 -> 1432 bytes libft/ft_isalpha.o | Bin 0 -> 1416 bytes libft/ft_isascii.o | Bin 0 -> 1408 bytes libft/ft_isdigit.o | Bin 0 -> 1408 bytes libft/ft_isprint.o | Bin 0 -> 1408 bytes libft/ft_itoa.o | Bin 0 -> 2192 bytes libft/ft_memchr.o | Bin 0 -> 1456 bytes libft/ft_memcmp.o | Bin 0 -> 1512 bytes libft/ft_memcpy.o | Bin 0 -> 1472 bytes libft/ft_memmove.o | Bin 0 -> 1696 bytes libft/ft_memset.o | Bin 0 -> 1432 bytes libft/ft_power.o | Bin 0 -> 1432 bytes libft/ft_putchar_fd.o | Bin 0 -> 1592 bytes libft/ft_putendl_fd.o | Bin 0 -> 1664 bytes libft/ft_putnbr_fd.o | Bin 0 -> 1976 bytes libft/ft_putstr_fd.o | Bin 0 -> 1624 bytes libft/ft_split.o | Bin 0 -> 3336 bytes libft/ft_strchr.o | Bin 0 -> 1488 bytes libft/ft_strdup.o | Bin 0 -> 1736 bytes libft/ft_striteri.o | Bin 0 -> 1464 bytes libft/ft_strjoin.o | Bin 0 -> 1912 bytes libft/ft_strlcat.o | Bin 0 -> 1792 bytes libft/ft_strlcpy.o | Bin 0 -> 1680 bytes libft/ft_strlen.o | Bin 0 -> 1408 bytes .../ft_strlen_double.c | 38 +++-- libft/ft_strlen_double.o | Bin 0 -> 1488 bytes libft/ft_strmapi.o | Bin 0 -> 1704 bytes libft/ft_strncmp.o | Bin 0 -> 1520 bytes libft/ft_strnstr.o | Bin 0 -> 1784 bytes libft/ft_strrchr.o | Bin 0 -> 1528 bytes libft/ft_strtrim.o | Bin 0 -> 2280 bytes libft/ft_substr.o | Bin 0 -> 1896 bytes libft/ft_tolower.o | Bin 0 -> 1400 bytes libft/ft_toupper.o | Bin 0 -> 1400 bytes libft/libft.a | Bin 64666 -> 66314 bytes libft/libft.h | 4 +- map_test.txt | 5 + so_long | Bin 57152 -> 66792 bytes so_long.c | 159 +++++++++++++++--- so_long.h | 12 +- so_long.o | Bin 0 -> 12424 bytes 57 files changed, 331 insertions(+), 263 deletions(-) create mode 100644 .so_long.h.swo create mode 100644 assets/exit.xpm create mode 100644 get_next_line/get_next_line.o delete mode 100644 get_next_line/get_next_line_bonus.c create mode 100644 get_next_line/get_next_line_utils.o delete mode 100644 get_next_line/get_next_line_utils_bonus.c create mode 100644 libft/ft_atoi.o create mode 100644 libft/ft_atoi_check.o create mode 100644 libft/ft_bzero.o create mode 100644 libft/ft_calloc.o create mode 100644 libft/ft_get_size.o create mode 100644 libft/ft_isalnum.o create mode 100644 libft/ft_isalpha.o create mode 100644 libft/ft_isascii.o create mode 100644 libft/ft_isdigit.o create mode 100644 libft/ft_isprint.o create mode 100644 libft/ft_itoa.o create mode 100644 libft/ft_memchr.o create mode 100644 libft/ft_memcmp.o create mode 100644 libft/ft_memcpy.o create mode 100644 libft/ft_memmove.o create mode 100644 libft/ft_memset.o create mode 100644 libft/ft_power.o create mode 100644 libft/ft_putchar_fd.o create mode 100644 libft/ft_putendl_fd.o create mode 100644 libft/ft_putnbr_fd.o create mode 100644 libft/ft_putstr_fd.o create mode 100644 libft/ft_split.o create mode 100644 libft/ft_strchr.o create mode 100644 libft/ft_strdup.o create mode 100644 libft/ft_striteri.o create mode 100644 libft/ft_strjoin.o create mode 100644 libft/ft_strlcat.o create mode 100644 libft/ft_strlcpy.o create mode 100644 libft/ft_strlen.o rename get_next_line/get_next_line_bonus.h => libft/ft_strlen_double.c (55%) create mode 100644 libft/ft_strlen_double.o create mode 100644 libft/ft_strmapi.o create mode 100644 libft/ft_strncmp.o create mode 100644 libft/ft_strnstr.o create mode 100644 libft/ft_strrchr.o create mode 100644 libft/ft_strtrim.o create mode 100644 libft/ft_substr.o create mode 100644 libft/ft_tolower.o create mode 100644 libft/ft_toupper.o create mode 100644 map_test.txt create mode 100644 so_long.o diff --git a/.so_long.h.swo b/.so_long.h.swo new file mode 100644 index 0000000000000000000000000000000000000000..94fdf3c8a23428b12f040225834fd82b2d4afa2c GIT binary patch literal 12288 zcmeI2y>HV%9EPtjrL=%RVn7T>Js=Wl$7u`2jmk#{3IaNyR-I}&@g=e9IFaqNHV7E_ zSWzeb1Ylxg;A4RaF(R=bCI$v37?>D%o!E&RMW`xWihkEVxjWza_1)uSh~iRy>GCx` zEvpRWAY(5cJ}&>-yD|J#KF5SB!ts*uqoKbQ^@1u-77VA_XxXAJWlG{fw=Gqu~80V*xk;K8-N;0Ne*I(7_70 z0#1S>UfDDiUGVtFTkc4Ae6~=C7d_4$fSjKYvOi~9k>=yIGrZ7c?d%oK$ z``p8{&UDl8jrfGjy6%--A)KUN>+6Sl(>6lkCgVY0-?MItWUSRha?~r=3^$X_){Q1Q zYYofHWb1aITlMOu{<;-iwmUv>&CyzM4<&9nWxHhxUaXWI-hFeBHJj zp=|2OwXyU}+bUIjrTw~jr0Dr34)+DGiV)LyI-zbk7A6McxE3Db#m4%AmQ__*j&g7o z{9{G@#)5uz;rb%y|g4rXydhA@LY5}k_67V0&kaeV4kaIw5hY2Iz2FuOSvd9sp2@ky)EYu z7XKj#t!`W|@M5U-wpFYf?waMCpDbW2v#HtLW;-OOB}u8wWXs*DTWv&Xy+o`tPEP{k wC&%U5Rs%WLa$09{+~`zE;MQ|eGc_%VL@O#7`=`KEcDLCH+_4V|K6DEE1L8zqUjP6A literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile index 616ba2a..6ae35b1 100644 --- a/Makefile +++ b/Makefile @@ -6,11 +6,12 @@ # By: erey-bet +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/09/27 04:19:30 by erey-bet #+# #+# # -# Updated: 2022/12/10 15:43:34 by erey-bet ### ########.fr # +# Updated: 2022/12/12 17:21:15 by erey-bet ### ########.fr # # # # **************************************************************************** # -SRCS = so_long.c +GNL = get_next_line/get_next_line.c get_next_line/get_next_line_utils.c +SRCS = so_long.c ${GNL} OBJS = ${SRCS:.c=.o} LIBS = libft/libft.a minilibx-linux/libmlx.a CC = clang diff --git a/assets/exit.xpm b/assets/exit.xpm new file mode 100644 index 0000000..8321f20 --- /dev/null +++ b/assets/exit.xpm @@ -0,0 +1,133 @@ +/* XPM */ +static char * exit_xpm[] = { +"128 128 2 1", +" c #000000", +". c #3C00E2", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ............................................................................................................ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/get_next_line/get_next_line.c b/get_next_line/get_next_line.c index 9ef66b8..32646c8 100644 --- a/get_next_line/get_next_line.c +++ b/get_next_line/get_next_line.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/15 23:42:35 by erey-bet #+# #+# */ -/* Updated: 2022/11/07 17:11:17 by erey-bet ### ########.fr */ +/* Updated: 2022/12/12 17:19:23 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ static char *read_line(int fd) char *buff; int y; - buff = ft_calloc(BUFFER_SIZE + 1, 1); + buff = ft_calloc_gnl(BUFFER_SIZE + 1, 1); if (buff == NULL) return (NULL); y = read(fd, buff, BUFFER_SIZE); @@ -36,8 +36,8 @@ static char *join_str(char *s1, char *s2) int i; int len; - len = ft_strlen(s1); - n_str = ft_calloc(len + ft_strlen(s2) + 1, 1); + 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; @@ -63,11 +63,11 @@ static char *get_text(char *save) i++; if (save[i] == '\n') i++; - new_s = ft_calloc(i + 1, 1); + new_s = ft_calloc_gnl(i + 1, 1); if (new_s == NULL) return (NULL); - ft_strlcpy(new_s, save, i + 1); - ft_strlcpy(save, save + i, ft_strlen(save)); + ft_strlcpy_gnl(new_s, save, i + 1); + ft_strlcpy_gnl(save, save + i, ft_strlen_gnl(save)); return (new_s); } @@ -93,12 +93,13 @@ char *get_next_line(int fd) static char *save; buff = NULL; - while (buff == NULL || (ft_strchr(save, '\n') == -1)) + while (buff == NULL || (ft_strchr_gnl(save, '\n') == -1)) { buff = read_line(fd); - if (buff == NULL || (ft_strlen(buff) == 0 && ft_strlen(save) == 0)) + if (buff == NULL + || (ft_strlen_gnl(buff) == 0 && ft_strlen_gnl(save) == 0)) return (make_free(buff, &save, 1)); - if (ft_strlen(buff) == 0) + if (ft_strlen_gnl(buff) == 0) { free(buff); break ; @@ -108,7 +109,7 @@ char *get_next_line(int fd) return (NULL); } str = get_text(save); - if (ft_strlen(save) == 0) + 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 index dba8046..e7c6568 100644 --- a/get_next_line/get_next_line.h +++ b/get_next_line/get_next_line.h @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/15 23:40:12 by erey-bet #+# #+# */ -/* Updated: 2022/11/15 19:42:13 by erey-bet ### ########.fr */ +/* Updated: 2022/12/12 17:16:43 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,9 +20,9 @@ # endif char *get_next_line(int fd); -void *ft_calloc(size_t nitems, size_t size); -size_t ft_strlen(const char *str); -int ft_strchr(const char *str, int search); -void ft_strlcpy(char *dest, const char *src, size_t size); +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..efe4c009de50c82ee37d3190def10586191e0c01 GIT binary patch literal 6592 zcmb_ge{5S<6~52*eQ}&7Zqi@r54u!qRT!<4lve6m(}oqptJ_Q)s8iCdavkS6N$1#A zY=;IBTH+SwMWU%h|3T1J8c6%2lQtpHR<;sWXcCa10wE1i)F28tQiL)zi6Dl;cka8_ ze!fjKA#tks-t(RBo_o%@_rCXT&qt1b&SMx%iNOxBil$J;F08BcJ4CmGHG+A@=YhUN|k&2emv=S!uu80r(@TLs5}0P2Z16g3LPMk*P{+v9M@D;XCBEox`r{nw@NjGjL@3x7;~tuu8uK(5VO@j z>Kf?JaW;KuL84R2R?*KRatRbV^FmI6Xgo(KHh+ak? zKF*u7f{3bvG^Rr}ac$#z@SD5W`x39X#i<1(rjgvaeN;x3`>sP@k*{`Xh; z7aBY|Q5}#zP75CgiRsjg`%Iyn=*g#Z`IbZ~p6+WIwuiC7=f$IK*DC(c9z}49QFW9*=d%xzZA>jVgA45NmXKu-V`Lpm%qS_bE}Qb zt7`lcDEk&*^hZLQnti5W_18T|>P>H#0gAANg_SYdj%B;2KxSbVD-4r34{E&U*|PmB zay)IL@_27c+5dN>owh;6&V>DK962A`2ZLc4|8A(KhG_URs@9BE*B(nqG*(+avfke_ zgVzM!;0*=7-n_;?p5&Xx_}**Y8|Npu$2-fye69Hl9x%h)-^Ev%$GEQ>#3c7e`Iaue zEz0*K`Svlszl+zHNBR1GaH8Dj5A${A6+ltG8I~xoHT$t2qh>c>bCPc~$9N#>I4poP z0aG7l%TDt~Z?KE|VK=)l@iA_qyQz!Aj~A4HKhHhr8?Z3%ch67r+Q92@@Q~LDZkJ%y z&F~=Nr8us^*QenGlOX`F2*5+>jDcVAw9DVZ>jVB)HxnUuV-zM1gW1h%pI4fXG#EVQ zFrqk)vFii>6h;KyjQMsU=&h*F1aAwAM6Zd;nJ`lpz8PMd$5f6MKwBT>feD%@XkJGx zZu0suFb{Iy4PsJ7Yq1)%6xV^@rL7qo`1L_@C2|~X%8+ZHL&>D`%Aj*H2{Wu8<7o1ObETb zJotCP>*(UFpxZ9-XXHK?XAIb)#1~`);%owYAo0@@7iSt6iMR58a{&44b;aX0co|&) z9u;pn>S~*p(Fb_7{0HjlYDj2bTLHIMz$w4w{NQQ1EItXm$(65o_5t&tF3b7Z2^$H% zB&xEb`jgQ21AT>kh;J{FGXz2iCw~f8&qCb~X<-*13t2+`|s*oD(GLDeVb!rgIZT)3N$ z?`$D-w=aJyqEEFVA)Nk{P|ZmczS~jRdf5_AdqN3aD@hdpn4_|-vZZAc-@8)(2Dcke6pjiUVgNb=6eR^fEpBvJkp{;mVFqHGmDD)lR}Re7oB z>vfGkA@$cZT*dQa4Oj8ZX!u>Jt8=a9RnPlBYy59Z{e2Br{?&^}<)!kkC&v(ltLMu` ziK}_l`)8-d|DH3P?bGmIOZ1^YPiZXrs02({6P)>qr^ufP7Uoh_5S>Z##ifc zRl`*s)bmHxLCyPy#{ZL?_Z{LADbQ77uK^vEqP){~nxys0a zba`>ej-!EeGQ*NNy6vPAXGdav>6BCx{X;GdHyfoT;;B?7A+%6Ble0sgfBMAkY%ZR7 zk%dyJ;lWtEw-?vCKJ8;)T)?WY1MWcRhUdDBIVQUw7qa-E?Yf)MeNFS6U?GH`i}#=% z8Kn0ABO9;~^3h-A@Qd=Irp}Qv%I&07_A&GbQ_pc_=#U-y-wL +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/10/15 23:42:35 by erey-bet #+# #+# */ -/* Updated: 2022/11/16 13:20:26 by erey-bet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "get_next_line_bonus.h" - -static char *read_line(int fd) -{ - char *buff; - int y; - - buff = ft_calloc(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(s1); - n_str = ft_calloc(len + ft_strlen(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(i + 1, 1); - if (new_s == NULL) - return (NULL); - ft_strlcpy(new_s, save, i + 1); - ft_strlcpy(save, save + i, ft_strlen(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[1024]; - - if (fd < 0 || fd >= 1024) - return (NULL); - buff = NULL; - while (buff == NULL || ft_strchr(save[fd], '\n') == -1) - { - buff = read_line(fd); - if (buff == NULL || (ft_strlen(buff) == 0 && ft_strlen(save[fd]) == 0)) - return (make_free(buff, &save[fd], 1)); - if (ft_strlen(buff) == 0) - { - free(buff); - break ; - } - save[fd] = join_str(save[fd], buff); - if (save[fd] == NULL) - return (NULL); - } - str = get_text(save[fd]); - if (ft_strlen(save[fd]) == 0) - make_free(NULL, &save[fd], 2); - return (str); -} diff --git a/get_next_line/get_next_line_utils.c b/get_next_line/get_next_line_utils.c index 624fad3..b507ddb 100644 --- a/get_next_line/get_next_line_utils.c +++ b/get_next_line/get_next_line_utils.c @@ -6,13 +6,13 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/07 17:19:41 by erey-bet #+# #+# */ -/* Updated: 2022/11/07 17:19:42 by erey-bet ### ########.fr */ +/* Updated: 2022/12/12 17:16:22 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "get_next_line.h" -void *ft_calloc(size_t nitems, size_t size) +void *ft_calloc_gnl(size_t nitems, size_t size) { size_t i; char *tmp; @@ -33,7 +33,7 @@ void *ft_calloc(size_t nitems, size_t size) return (tmp); } -size_t ft_strlen(const char *str) +size_t ft_strlen_gnl(const char *str) { int i; @@ -45,7 +45,7 @@ size_t ft_strlen(const char *str) return (i); } -int ft_strchr(const char *str, int search) +int ft_strchr_gnl(const char *str, int search) { int i; @@ -59,7 +59,7 @@ int ft_strchr(const char *str, int search) return (-1); } -void ft_strlcpy(char *dest, const char *src, size_t size) +void ft_strlcpy_gnl(char *dest, const char *src, size_t size) { size_t i; 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..25251b9bb36bf5411af329a8f3b0aeb08fdfcf4c GIT binary patch literal 4632 zcmb_fUu;{|89(>h=f-v#-~1`1Ep&^t0um$FPFfyHO-NN;=B6#N?JKV(LG| z_d28%g$g$iHy~1Noe;ciPwT^^ARYh}fr`43wPG5G2U@YI5eVT-(UfWH6hu+@zVpYi zPt%72N*d(+ClR`y!v&#vKWn5 zk1xfm zQD-5~_gXY<-{CDQwA<_GHnZ)%lq$&~$#Ik_2h z*%~p4KQIlk-o6M`{rWt}Pubs`)yzo>N(5TCSe5uhwh1t3m11`T*+-=ua_nJ}!IrIxa8vOf+`rg4Utk z5$>YCaQm&dg*&uPgAm;WXTGh(7w&Iug=GB}D0LbG8-3yXT6ebIwP{b+1Dgn;l;{H5 z(?y7}y@_p6jnE{pf$ZtxUI+=Azz`C;lTBm-ULHTL0tv9!XdR=~$4ffo=i^#j8|c5n zPkS6e&Ac0)R6l)$bNj#*aAT{Sp`Sj)xDJ#7mtb6{gF)*a5fmP`3Lo6#)~C5uj#=G# zu*vGos#O#v^*o|z1su0xGKkEx>SI1y&>xO>;3p#YgT(}5T0dr2_tr1Gar=Hz$04RU zfE)=tflnB^#n!4Nz$WSsJ_Q0s8(MH2=nw+rz;LEvi3hn(w`a!!G9 zsNP*y&lWu5W{){ZPpGBGN=yv}!Z3a0D1!=F&&j(?on(oZKSEeA@J(DNRZ5SM5yu60 zrS$)}8e~0NXlT;0M~ODkuHCk-B`^bvdOP6w!+{%=>Fr}Q+Y1rC2O`-*I#(WXNOSM&-3FJgH!|X6tT6)bC%oG1iImUOXj|yNw9`n? z%^3>MR%4Xc8x zqb;Bu8l-;E)Zd|@A*utQ0Y_$OC^Xq*UZ(BFIW+V`ApKPu{N<|l73vSo(jck?Vzetm z?>R@e#OUUjZ|@6K_uU(VNSA0g*muNe7&wcr1229fW>l#D@{C^u=g^ zDf^B4p}rwmE)=Ni&`ez2wZ{7Z`pLgm){^;ndu|ZW4ZO$1L%7M zF7=-iJl;-lsQSA&T=)O7;D4^*UkZLm!P!j%u)_-ePr)Bm@Fl@didp6(`|~SB|8>Ft zPQkww{H%h@xbF#E`j`9VqN4wy;6GPz>Hlj5|6cI_R&W_tz9=%T+>dPtz>t0UjI-oc z1@{a74h0View%{J_1~r7GM`5j{G5oJQ1G(?Pb#>4?+z>Ye}sOwm~js_?!y5Em;F7Y z;Ic0#6kM*G+`kyU(SL|oBhGMnG?^M6E;-}GDml57<-tXQSm|Ou@4%rgH1JgBVs4Qw zWQyv6&d+yw;x}ItfNQuyScRhJSU-E{K#%LC(uawK$6PWsG6L6}(WW?fp%H*Hmdun= zd57fLUF0SQp9PtEsbONdNAo!UKL+lz#_y8!*^B?*V0^`=`ct&I&f|RqG5MX7f&oF` z4Z3lt-&7NXjo&}1I~C+qQ~;=luHY)e#zrw?Y&9no&55{Gp(iI*cN+*)40RtCi}I`@ zR9Iqx?ppc3EAp3%i}~YsTh0F`fT2%WCy;D>ES$>kg2ZKfIpg<#E&D6tkih&JhqRM3 z-uNZmsMn%4R0vhwKXCgaN}EYQ*uU236lht$gntjjn(HSH$U{OA*AKsq(q8ue4Zzf# z(B!uw{=6boSn?atT`T@ZvHxWpjE^a)@uvXu?OQ3rbOL_$5f%0_9@^uOJm(1c0tj{O RP +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2022/11/07 17:19:41 by erey-bet #+# #+# */ -/* Updated: 2022/11/15 19:57:30 by erey-bet ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "get_next_line.h" - -void *ft_calloc(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(const char *str) -{ - int i; - - if (str == NULL) - return (0); - i = 0; - while (str[i] != '\0') - i++; - return (i); -} - -int 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 (i); - i++; - } - return (-1); -} - -void ft_strlcpy(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/libft/Makefile b/libft/Makefile index e507ce0..78f88f2 100644 --- a/libft/Makefile +++ b/libft/Makefile @@ -6,7 +6,7 @@ # By: erey-bet +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2022/09/27 04:19:30 by erey-bet #+# #+# # -# Updated: 2022/10/19 17:45:46 by erey-bet ### ########.fr # +# Updated: 2022/12/12 13:46:44 by erey-bet ### ########.fr # # # # **************************************************************************** # @@ -16,7 +16,7 @@ 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_get_size.c ft_power.c ft_atoi_check.c ft_strlen_double.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 diff --git a/libft/ft_atoi.o b/libft/ft_atoi.o new file mode 100644 index 0000000000000000000000000000000000000000..09dcae9551b51fd2ba9e4b266145b71119904eb4 GIT binary patch literal 1736 zcmbtU&ubG=5T4DpP1~d<7STebL=aT8Yby0nDH;fC-$4Y0pqElN>GlVjq$F>p6_P4J zamhvS*`*!=Ke)zOFnidr<zUHg&&x>hI;HN9qu*99 z3Bo!C(d+ZS3F1k9f()O~xB6us4aynhzY~S-`-4#r^2tyC6DeGNNs58WxeTF``jq@J x5!|abxduf;gQAaN#ApTils9;H2tizc6J+>Ar0XEZQR~HjAi(8Lq^AV=e*n1~*xvvE literal 0 HcmV?d00001 diff --git a/libft/ft_atoi_check.o b/libft/ft_atoi_check.o new file mode 100644 index 0000000000000000000000000000000000000000..2e7a3308ae85599899cd8aaaa4c122776e2bde90 GIT binary patch literal 1808 zcmbtUOKTHR6h4z_l0H(K7QsrTL^nQa##HK}QZ!J;-i3%10tG2$5~mMpl9Jq!R%|Rp z#i58U^&j{Pq$^3O(7NkSaH9n3M(iR;VS3KYy~%W%l^(eFob!F>aqpSSywLC83n>an zQQ!`=Jc$CtJ6d+yHPaA-9{AHY{5QkwA9mx7ezdWEl;Fd-$M_)b-FyJ|ULM1}i$`$p zv7%d4{UE$WHD-5YI;;K~WcGUfAk35~-S7=vnP^W`OY%|kf_CDMG9%9NqQ)&=EJ-xZZdksjeR?yuS%ldJ%B&E^g^*+51MNd7|;kJ5k&b#b4IAh`%J`ldT(! z$YNo4KHqj=YI5>+;z}lK6}Xic*T%F|a@2CY(aOz~mKxJWuX;Eg0_gL^afNYBJ;*=^ zphlRAi{z}QKzTL|%4%F0ibXr$<2WxMPK)F&ZTgw`>(FFx>Zf$}0m2q3Oo{Tc-oK>;qbP zEzgZCYF_g6qO`cV%0YWQ`{1P0qUH>dJ_)#R5jn!-yOp6If`Nhv!j}=Jcl)pT z*D;rBrf~U1_9xyivcJ@~kd(GR?rS@+O{|U>y+;3=pgMaZKS7R9=&pX5MTbIz`E`*$ z;}1qVm`^p9HwjjP#6P{xMoKognB6tvgh>(K^#TLw{pAxh>-Aap zT02U+B6aVv8CIFDrdd>ddAq_YGpu?&$B{6G>YyG&Z9Z%Rmj6hYjY@JpH(+f(0&Cz{ zQ{{={+t~Oe#7RkR(8oLNyeZWu$3xse@gYKI9)lnIMay>KM5q_l%_z&xx*x?TvSIvR zFvBMf!HYY#v#E?y${3#0`pnLb*acLYqbWBLD8gY$1kol>daU!;g`nA5n4fC}3ysEO zZ!uV$n{RmmEyq0Wb3wVU$O3dnr%-?I=i*A7o{#o~09bz`7GZ=|B)MHtUc%QxCip-A zdlrfiSk&(W>-6H7cMsJi%aC>JGo5-rtHH?Q!k5;tGms^po5a_Djk1Iqco z{3>!OX9ZOkRiE6%KxV2zD%4S#ELfb<@ zx_I&Ef6=QqMGw}SC(pSE3wjYf1QF`Y?t9(My1nQR=FQCS&AfR#Z+1s%))SHh0utPU zz!NOMt7KqTJhK8BNW+iprC%-8`J(QAlT~NSRULbz?rynYrBIE)PQRgOmzJ*&)fbAZ zX7`nmI8nDg>FHm)qF=mg!<{_6U#CeD7D7*g&)!6y0ieU6UzK2Gwwjk$Q zZM$#T@;ocEVxeSvUTOP!krm6Vbk*mnC`_T`P)?vU?zA8Q@Rm67ndi|aNSpUTTF*&y z>D0_iY|KUENCA>2AH3{juX4@1-!dI2|u9gh1Mc0zVE z_BQU(UpFyB=#P1h%(YOWf5LC0L1#wuXL+F;B9QB7{v+h$-Y>@+D&C3Sk8(x6;Nxmj ssk@>+*YvNQjL9c1`gTac9{-@5$-Y2ZXnQCq zAs3I{{1dzt@s!j<1uyv%ya!#{e0l&VFu2?p>_GF$h%*8chl!Pn?AIY?}>k~%J=ON6$YsFwr}kYdC&Iw zz+bd>`^WNg2up>+o%FS0x!n-$^li4lvh%ri5aqURWLb8B1Q%O~nYOW}G&o^9F z(W8)`4o$F=iQO=7y)K+GFi*5XyP`bdb_B3zj&OjLJr7u=S+Bbd#2QWEGQ6&NPdJrT z8P^(Zw$^H{xh=5{tmVFNn7dM{ww$^vhyRC}LoVH2^aS&==lC3COtrdP!GJLJu2gPc zIT0J>U&TB3!)U+m500=*96nl3yEFhEA0K8{wmm!2kdN literal 0 HcmV?d00001 diff --git a/libft/ft_isalnum.o b/libft/ft_isalnum.o new file mode 100644 index 0000000000000000000000000000000000000000..12210a801cdbbe2b205ec35a223b48d43185ec17 GIT binary patch literal 1432 zcmbVLOG_L<5U$zLU6UAH9|waW*_@JqwzHz3f?;4;%^~CvSO@_zvzzgO&aBMzfC@Vv zgn&1X{)OCf^cct=$e+k57sX2mLQ*x`wf1(_iv>0H)mQy>S3l;c`er3(S-@t&E4ay+ z1vtyyU^jy<48jAr8h-Mp_WI=KN$dK!b?v5k{C-HE;`d{Q57RNkGZ|h?3+E*L)qhS) ztbK>oN@c0^qE=5rnUogAoN%VgNtTt#rkkV8hW!6z#uskk=_I;s2-8um&us5BWJ9iR$KGz31froOtS%`)JL%eu zhz|nk)j`BEYR4@`(%+XLK6%muQIBH~jb;$|A#!0;`U0sD^t{bnJVHM8oFTD%R+gb=^JYUzMh$A_wyyTEha(Y3hF{!2%0a zH1+S1r`PPNI)@20;e;aYVWd7;&wQ`7Niv`|dO-==eRP_`)Dvgk9a8XH=^s&|nW8() R2%=tkNAdr%Y^PphC!A};LiVHpT99>jwX5JB8Y9F1sxoaulHiHC({ zbK4gXd<>6*&mst36fYuzR?T!Loi<)9sIIE7>Z`8l?m5k@EJX|hq!{oE+L1&7{zclp z9k@0OKtDVTPd(+9o7c_y^Pl>&-H743(HO<`ci^8i;ulnY+jBu}H?JU@PXDxKa`{@B z*Q_6GktOF-wIE707LqKv$WpT*PP`~;0<{MRM@HL$nMJB}F zf&m_X2d9(hlpzd1D{}_lP9-~hYtMHMszrwtlt8jA;n0_Kd=2xDOWer=^SKw=qV%|X z#DQ%)+yR#NePD%3spOUsD_6M7@Ve%G?iBV#yj!lZs#mGH9zO==xd#q&i(5OMQ*z}L zAGZ@orMuHl&=xIQ=OALLRb?6j!sNS>xkKq_R_A}kJiV)r^5>9CJ(H-a$o(m=irin? zZwY}*7&?cs+r_R3=l<&eyqx07>L9f}C1;X}< zhGQcBgqG%%e2I74n<$U8pxlK9`p{Ajolls4cSN}n2Q^NCA_8t9Bj|PGTVnp*R%Phu F{8u-cVqO3M literal 0 HcmV?d00001 diff --git a/libft/ft_isascii.o b/libft/ft_isascii.o new file mode 100644 index 0000000000000000000000000000000000000000..0e5035bcf7a29d3236d7f002fa1eb8d2c6283da7 GIT binary patch literal 1408 zcmbVLy-Pze5Wm-_)^DpgC>5!Ls9-}Y71TirrPe_lgo1-2ul3m$?Fa9rPz9|Z2yVLh zr#K4!BQ8!Zikk>}_nOo+wu=YJ-Tf}V%jJ^PlUo};!vHA;ti!J-QGiR|uO0WyI1Iu7 ze2h$grZ;b1ZqC21&cC2Ggmb;_f1n(%-4C>K{|Qow#9C-RovD_1HMGiNEE0}ZJuiB( z6k(AVi!L;9FEvhGI087jaiq4>fZIP3X5t_jZzwR%cEG3wjNqWZ_ZByuLYxN4EKSMb zz_l+i)U$^R$nPLjZx_6Ow+owXJ3_T6O;Lzuvq}X-)AUZ$ijikR&tK5P{T*=XM5_#= zJEqj>ot>5(@q>bEx!FR2Wfe!VL&Bhww48>yr$ugMfVtdh=)APJUE{zGEp7qJxGu14 zxmdJIh?UCRW_Vp;ms{Cm;pa+KR&mM|+u^6c9Q(v#cK+bVv5K~=;{Q5`RJuF8gK?3v z*$3g%T2*GyAxyq28S7M<&Ywd9y{rH77m-UjBREu%`%_#MxxduQ7?ifU?oM?STVI>R z7`?KVyGQ?Ca6&>$rT?LQ3{Xy;@BMtlS0qtroxh7Xz2>-xHVC8-ht4NVzdMBBSu|>r97Xj0jbf}Fe?rusQ@CX6{2!cfTg(6e literal 0 HcmV?d00001 diff --git a/libft/ft_isdigit.o b/libft/ft_isdigit.o new file mode 100644 index 0000000000000000000000000000000000000000..545ee2160eb244048297fab216552dcc0323a20f GIT binary patch literal 1408 zcmbVL&r3o<5T56&>~|I&3?u9i71X9tP#r=Lt3z}MgbqbK?P*eKythIHS`Y-@>eip) zG3X!Z(y2?)ErObP?%KNPrGed<`DVY_+1cHz#P){IFhGg{>+tJI6yVzTYsWk@2K~?n zA43zL$*t;3wfuEc{#vLE;JkX}uThTI&Kj*ec!JG%d@VeaOqB|}6kcUZEHWQ0d0w=# z7-5km7M-o*UTT~=a0GC4;@I3t0&f3En2CdAw64Io+y&!2V1)Yp-FLX@IN~%&rf5nG z25x=vfv$aAKz9CIU_h!k^56z6}i9E%NUfly6#?e6kA`L zz!<%db~S+7z7(KP+jG-BkL(D4`a@n8#_I?*Wo z=ng4$`e&ylS$=TjmE0qTvy9?Mc32p6l7`bT@2tSBG%%05HJz6hw@*2+LyKF$(w+w_ zQ!Es02QjC}ZHCvi;BhN+Ec~2PW+k^+vR!@#%(YJ}X6FyGu2ryQ75~>`NTs{eI~Wrw z>wOSDtyN_T9m3?hlCf5$>HHZa(7XCCe;&D%GlD}Exj)5Kk^4)%j6rFu>+V%YvGuhH zjL|D=xO?;;1Sc%CRQey<#{lKj`ToyGd_@w4*7>`L(`$~2cwLEvBLe6`O?67X#GCC+ qly{m?r0zzWa_D@*^t(d{UPPlt$x%e_-yp`C@kd1cIfYB6&i?^ehFmxR literal 0 HcmV?d00001 diff --git a/libft/ft_itoa.o b/libft/ft_itoa.o new file mode 100644 index 0000000000000000000000000000000000000000..9507bafea53219149af25e03dc3afe8a25d23f1f GIT binary patch literal 2192 zcmb_c%}X0W6rWA3_CswdLZwQ{sZ`o5Ns(ejY*bcNq=G?;>3g#?x>?p9+Wuhnz4^V5dGlswmz1Fa zha?dJiS&@unP3SSJ$I`6nd&DEq@Mh|eEldu^=~v=bW=T3*3$=iphWfI!d@&JJCJh9 zfxiCvB19B0ibhH_rxfTLdU#CrJpD91Wq|5m>EREWKXRa!FW;x_U#PxK^ScfzZBuEL zw&$t7rEf1&Z%!%E$Ts9DgGt|d<;p50DVsTvmX>L5xbPp7R;{#7$jauLX~SMUvy)SH z=xeG&DcMY!EY#4$i88B9-(VZomEwlNv}|UFEOh3SVs_PmA%-17OAuNj>AH{DpuI6{ z58GV{cDGJES*0NDHM2PB4{_IE>*ZXakV_X~eK>)Q!sKzKg8Jqf8SL-xa^DPu({U~B zz9)CcUXL%$X1*79yt21L_O%;476GV%;evt3KKL*|9E7YQ=Y)Z1HUyCt$A~oVl3MHQ z&ac45X#*YyVjn+BqwA%kzoFJq01v~~jXdB3eopM~m>nrQ;GL`?`xQHz)Aq(t?m#DonA@R(OE0FwWJ|ugqBpJAz4%BH6lL^X(1wqQz;@x60w*X2QHq_R2lBRC#8iV&-i>g zo|fm5i8(c?EfASyP-lWu$xuucrTmk0Lo{yPdgJ`SA>Q)77&F6H=qOuZV2}MU%os%y zFv-4z;2#-NiJRKO`5T;j|E z&3;XIF>GM<#rJ}*+UnlI3AZJO=%1j&pkPjGd?zQK2uCih@e{z?o!@(YexfgUei$p_ z#rfH-jZ3ZY^=J5o@okD6XczGpK)0S9+RL1LgcB32{ksA-yZBvRf7BFknt<}b+QfQ$?;;9wvuqiE61qp<;a}W>Wf|pV@aoa$_hyne?&C)V%K{}9 zJcL1{P=Le2z^`U*6(-<1{FuD;)8pwWPhXv-$q7%rWB$eMQ3da~XFPQ;&KG#cyTGW& zt?uLzbi9+bZc^01^J)Ip?O9pL1NS)k_L2A-pJBaLyI)@P>Pbr^<$G*}IZKr!iz=^| z9pTwLL z(GJ6)g;=XC0*2SL6brwxBjfE>!uF!}UJ!``U{SE^v!J=T75QP1ZT(-LIb_qFnUkx^ zRWJLOG1cmF8w0}Bds4X%$}z0TU%)&)r+?+&MJ}!Bpz5Obr@Ss|e`QxOseHZes~%{+ zS?gksUf0mwW89UTvb4&WKOLGct!eVJe+UUXn~X1(zO?V%%^3zLG2jkN zB837(xrtwi-3rXXIrw2+`|0rRSKdAN!n@&+cbx%0JQzTje@|uK0^YMRW1pbKtbNKq z+EJXD=7)Avj|rdC#H3h#NzzU*Ns_r=w_K^JO78R{v<}xI5hZ z02|fn?c$O@5^Xq<_)h9kck#Z>1L81#5 z?D@j20SiQDWE;v8-mU=l)D1L4-6$#|z3vUaD{_Bvt@ zSjT(rGOw|<-En;{-uk~j3&^IKrEjhxR~`2+W2)8VItGNP_oQ;4m6Nh*{te92bNW~Q zP2|#=B~)G1{*>26?XT=ACY7((nOR^)t&JGHuEgvyo|XI}`nsflolQ(qX_~(%`D;2E z{WSkEV)TkDsJb-df>$JX1}&Xa@fDu6H&LF*{ZA-BIg3hbr1^xUXNM3xl>1+%Kohy_ T7`cF67XOvx?~E%)PMZH4!mN*q literal 0 HcmV?d00001 diff --git a/libft/ft_memcpy.o b/libft/ft_memcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..64ef5a05287e9c49aa0f3be9da5ebe75c7534514 GIT binary patch literal 1472 zcmbtT&1(}u6o0#08$bGyil9)D^<)J*B+^1vkcF^z4(dTz=%tiR+_tEjg#Ca*X3E-8s~tp12Urw5^I5RHu^IVc zAh!OmX&%+|X8O%J*{Y-dvzTgCyNUsE@_UlGw-RVx*I&ateNO+Xzkym>vw}l4xj*Gq zllx1*j7f>rx-V*=V7=DG9DQA5Z;$a;9Avhb^GW}8)-gqE>Uw#om0T*2u3tlzzG6pY z^U28;yp&OA(9=1kUh;)|W8F&D=y9e$i=Nid^~C9KN0NnX|BDnTmMuGC<`5O>*E0Rq JsB#E&{coSTe?R~L literal 0 HcmV?d00001 diff --git a/libft/ft_memmove.o b/libft/ft_memmove.o new file mode 100644 index 0000000000000000000000000000000000000000..8a93ec87a0e337549972447f2d122178d31c4e14 GIT binary patch literal 1696 zcmbtTL2DCH5T4!Cv})5v@nEUQo}_|(CenkgAZf!U4~Z7EIe3sXiCY79laTC6BUFWe zxCFtIKgDywgVlrNB=H9bfp~~`DI(OF-S?W!cD?Ap?96;S-^|;Yx6k!lMpYD$qQFfU zMG^(rjEwx0>!u(E)9`cl;;%e+zVY_=6nA!e+_Agd$?x;_ZV&7jnl9K;-qCx53O%`_ z57Aq!Z|DcjIo?4==eCD9pSkm)Pdx@nOxefO{y^hxv#($t<@CAI#dIu`NB7h0 zJ9wpHr#{$U@on$pd&s8KE80T7WLGU)TV_ivv6!^oDEaJKf+dz%^0J4!-vTg!Hja7% zHG3xyD!?9L^0UvOPog}%3(8JhnV+7VdV_(>Dqmt7|#EAQH;;maKnYIJB$NsJ{3&1Xiw@rcp(#TC)s>cVn?>70ZuB z{HSWPdZSi18deLKTfwLlwi-p#81?)QPeU%^&-dy$tbeX{eYG@BHvU-raM z&I|AqTIwTjfW$8eJb3fI2wu=o4ZmE$fNK6LKZ#tbnLzc6>`(RmBKu3bf-j}-&r`#| zklb5{(cdz5hcKQJd<}iS$oWaEgbt+!`3r)7T_y?}Y=6Cw{SjC4<^IBYQ>#sR oeqrg~IT^wyEVw&_;DzYFOo2~Cxg+EZdSU#b;BOygdQOo42eekIKmY&$ literal 0 HcmV?d00001 diff --git a/libft/ft_memset.o b/libft/ft_memset.o new file mode 100644 index 0000000000000000000000000000000000000000..eb85a591d22cfb81f8c4992c6be787fe6621b618 GIT binary patch literal 1432 zcmbtUOKTKC5U$yYiH}4lq8NzCdQ!nOvmt^Hkd6=o!)l5XhBU?eN|s|S9k9|5ANQsISy!X;3kxj zMgiW|O1~-HCd|Sy_;KRg&nPUuhQ-tUBHs&(Xb^r1hEx&ugZ;1w4!)fZ`_TbL!_fKM zkM>@9;frACNZ>{=NWW0w+DBMzwXWAMM(w;S^7=Kl!u+L1E~Cb?WuN>Z`|CWAiCg z5A_i0>b(eXdmjjMQAtjX3^-5jgR|o~i?cI_-{4?p5ho?NL!aQd_p;WSo37o$3IeKy z&SVO{|EkKml_y4fF%Hcjy5n6MAiA!cW)h>wh3P**iO>86r<0hJISfx4`;@a&$%a@@ zc#?6!I;9U#ryL4RFfj$ob`ue|fn_2c*)8n}z9WD=j71Eron^o}y(HmX#JWAf8D7&; zCgRQ`6>oNPww?C2c`9~+rTlTs_}2PH8Yf&X{a>F&WYeA5C)ZS6$MdV0YE3zh0b%+* z>D+7WSk~rWz&t&tf8}3BF7@YvNrz#;`EA}DzD9gYPg_)BWP)#ny>MywTa@XLFGRb#z#@9 hhs`IfgSG-Ne74J~OoAE>5wvKsc z;*{SudFPn7S9t65H$>JiVJ)9u&O9p=!-@zqOKg!j^Vu-+vil1Ta~4^4u8UJjlp)kK z>OIu8w*|oRE(o(xNv66JSfAd3wU@SLQ^}DpSjQv8Nl8{|;N$6|ME=2W0~e5ghfoVc z@Z0>sex$PQ8)b{uJ0xJdquu`>L_9}=~s={McD(&*Ja-J#-{IK>&|pXv(2>}WAwWE?jHTlmb*CjVNJUg~7DP5yht=oRNsb(xU~XCyd^Gu5g13LmsLQPQ%}@8qD2p;8W$ gPndak2*nLeM^0~$X=C6aT7&qGtbZ$B*)>f5AG8Z<{Qv*} literal 0 HcmV?d00001 diff --git a/libft/ft_putchar_fd.o b/libft/ft_putchar_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..525fbc3e925902fa16b186b80e6e73edb894bd11 GIT binary patch literal 1592 zcmbVM&ubG=5T4D})*r1#@ldGfo=|DtHht{uhD=FXCm9K%LoruX(#}Fa2QN%zW?7o5{S{yfYisoTh<<1}iY} zBnuGcCU!Y8%Po;ALNv2rNQ@pU8^e7x7ysCu1WW{}2Dvc|rgH literal 0 HcmV?d00001 diff --git a/libft/ft_putendl_fd.o b/libft/ft_putendl_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..9e9e284566ab2e334b1f42beb0ff05c4bf339c0d GIT binary patch literal 1664 zcmbtU&1(};5T8wI>ql#%cn~7GCsDAEL@L-GByHGak<@}V-elP%8v`bruz3ruP(4J% zC6}K3Q^b=71wU?{Ja`uh^&;jFM5r^n?~%=Rd(nZHnfbl>y_ubPFHf~{F`+0RMS)u| z@gxe6PljyY%)`oE-xb~auJ?bWb#G_vxg)*5GX}oApV0@}IQ0rrZ-#@)$ouMj z+#{mi*T#z2dNy>w4YZN>;q6J>@wfMt-Oul#R4A;dS1MK4=B~QTmRNQ%=lWjm$@MJD zF0tIz0QYMFm_eP!bqrVOP6ZMGL&9X)=g=lm9^VCJE3IVa=Z^2Qt1mbXLaHH#T%dWSKMxE8BeK1PpjkVRXu~97E(>9IG)wQx_h?rW_ zbdVEdVj>~U>=dp)2Z5{~fvWdBtGHz{gV0Dw5z^c6- zuv(|xwrs@g4!0QIoy8tEYmbEg&~{nZ>2xiJZv*pBu$o50G27N8=YLo#a_KHbC!I%( zM9wAff>>#j&fub+<#C1Og=k7vfb_m7kGvu01%6rJ(VO{F>_-)y5teJ{(3$_r&mou2 zly#!%i_A~whehU>dIdM79gce!c0zVE_BQU(Ynr-4=zkI%RcNVX|D<0eh%5OLkIPM|RPmuw)0;XG!zU~{JA@!F@)yVnNwk0TKN83P MBKWNkm&_>tFZ)cF2mk;8 literal 0 HcmV?d00001 diff --git a/libft/ft_putnbr_fd.o b/libft/ft_putnbr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..3726826c639c9892c6f758c8b6fa420284b17e7c GIT binary patch literal 1976 zcmb`H&ubGw6vt6p$sht=gAtXP=oh_Bxfc#mrA^ z=Lf6p`p~Pjr`Xs#X4YBln~zC#CRN#3jhSD}dbt`Hep9VP8|GKOfpV!OZM_oEU=uFp0&p}`FJ6>#dgQrpcBs#{2N@Rj{K3>7^6S9sq2Key zaW7&w-Bo^T_uUL5Kj}LPE#7|&_ujDII+gAcJgc*geOm7h>>?OGbL%<)FFth)pFf6^ zq@k|mjZ9oulgl*G6%utWvM@6pQ5VAD`^uuaI6V_lR7^=}hMIe{uJQE5N({@bDEm~? zVJ!-V!aF|&ws&AFj1Yu;5KQog2tmk)zyyDV5aiC^xA74!a}NE6J=YP<71Ks6PH4{1 z?QunTy0#jlhE^~LU5*(sLgTp{p^0odt!02^vW7;XhsSe9Eb*AfsZ5@(>De_+H;RN> zGiWPnQjevz&YJ(=$xw?u?e4e`FqG&IJF;_ykK-s9o>>UYsRD2L0*CldgzJb-J-92-{m8In;C}5FbrG( literal 0 HcmV?d00001 diff --git a/libft/ft_putstr_fd.o b/libft/ft_putstr_fd.o new file mode 100644 index 0000000000000000000000000000000000000000..affd4077962e350b44b8e1a4eb2824de5a2ba93d GIT binary patch literal 1624 zcmbtT&1(};5TDJ~#*fxS@lc4$oqbL z(o6mf?}B)efCup(5b-Vu^&<8VM5r^n?=_osd(nZ(%>3T`X5P-cJkx8Hl%jwX1@6K$ zk|@BEI`xZzTZBbefS;Mmzv_nn)fj%y8vf42_YREV&II`N{hYC5kt3!=jA%{0^IKPVt6dxlr zlR5Ztm~^ZrPK@p%Z!^nMgWJzy6sa)(HyGgQWANk~tHD%eDKx9|k$VQ;j@TtsI*ZFK z1d?!QakKAnmpf)_lQm~TFsrrowNlMouT&oD8|Fr7t)`nIrP;QKBKt7m(9X`F{yq#v z6FBaZb~+X2Zg;rV0EVqY+m@bVZ&{4n0}gD{;uf%m>jG=`Ivu-^(ohf$a-eX==JnoSWkDg!Z; zB>|pBOMT=^koXmW$6w$}!HXNJ5tSPlP|bhk7m!Oe^Qcjg{i%LbWPfQ_@lg8Fyw}kn z;>UCE;aM7W<_%%|R&X?7rIGWKaRVKy8Rvf%3AbgUuyOt)#FO?nO4uK9C136@sW-LC qiVxL}j7_)z7c5c(&UZERBx`XB- z-4(2gta8SoJ1nur9J1#_zI60#n^v6Yi` zMe7)qyiqNNHG-B4i(i5ScN0~7foE3QS-y=QZhhVNx(k16t6z)+!ocjYH9i`=1@~(Z z0GZaHP|rvNmu#?ExhgTA281^F%^efx29gvvKm4aw!^?H@!|xx2nSs9I1oV3kxdJ zZ5Xn?>{kN->0nlKWn#9ASr`qjn(Hh-wgu>x z;R3v65B?S{lRkY8-G)iG={9Vd@GK*q0yBt(__5sy_Iwww+-T#2f9ED4BSS+khWldU zX4){rry?gJ{l^DPE)86Mu0PU$A~Nud(Bmyh09FVV4(Z6581WHOK%E~J(h=Fi=N9j|=Go{Go?JSA9d>2Ygq-L)czIJ45C?s2JCGRH=S`gs?mAlWhL--ZPPajbx!goXKo&@d#9kJv($?Q+-5 z`~(`)g8anw=jF2d$pM!nwu8WMUcB@gC|c?Dee@Hc?}7T?myq)QfiAU=KbbW2`MKE{ zBa$FfNkgAaruF#jY<-_jE*R*O0%ay4T)|^PfH%Xnx{`ZdetWqnO{s9@p0fr zR`6-H%O+>z5d#|$nTQ*45*eSLCy{JM2#HK8l}v*zoiUOT_|_cfAWL~FZARv@nYm=v zScDkNl$_Qlv+-0?R`UN?7{ak7-ieNa4k;sX7LxE)d*r>a&?O4XO&#({U6aa#!0{aQ z((t__Jp~K(-Y>|fo^#O`Nsf;Y;P+WrnDb%d2Ot)6x@QGMqR#i8=ao;%_(Py%L ztj|pbGHo=X>MTC%2#+CHKbT6yi}) zX;_2`@RlMqd%d^3+&?W+JOK|Xi<4}uu%<1htMy|+D{bdwf>fjG-u-rtXHdRr5m+++LCE$RV)d2v78R0^2^(< zaF;~+<_ISOOraK0Pob{guK{i=Bg{r6xi~UlJ%0$+ZqZtpojLsu59A8sq$C~sc;}06 z3)Q*l!ZWNOV6xCzPQlMVld|^2lcu$3hpiFq@hUYCU3<8jJVucX)Bl1)eC9tmokU*d zFub6xv%~2vxtYi~Y{Vjju@6vEdD=m47b4kf%AgJcStHwEPe!{E#N$8)AnHj1B5XIC zQ46tFTSfw}X)%#O_(a9qtyJv9?VTu=dm!TIX&|D;=2jduBVOFe?E+Hi&digmsFodN z*-))6*DxTA-xKFDb_{FsuVbE`(@FWakV`#XR9!L^P+k|F&vqG;?CW*k^+5B@S`Tyd zx^j1q@ejo*Da*$Ebv7_TJxzX54O(HMvL^o#;`E9uD$nMDYIs=zXVB6*na}v7*+lWx peBQ@d#HfeKC(OJ%gkVL@zeIs1s_ht=M{g3pq4?Y5%8_I8{{krdiH!gN literal 0 HcmV?d00001 diff --git a/libft/ft_strdup.o b/libft/ft_strdup.o new file mode 100644 index 0000000000000000000000000000000000000000..c4aed597790371b095f21dd691a2a10904f8ebe5 GIT binary patch literal 1736 zcmbtT&1(};5T8wI<40ms5iC?>K@kP>NTg8hp`;C)ED|he0$ya;rQSYFvg8U&-S>E^4s)n+)C;J&r$q<>^obLndmS-}^5z*R zdvRqs8oAiR0o_E7l%z*L+ST}nP$o7X`iK!k1Pje}4t|~morVJ^PrZn4X0yU>_p=;% zVVM7$bot0Rd~m~IcPg_fF?6pg8C#Vtv3iao!JpYjhT^r~ ksY?O*#QArJ6!iE9t&<}Oziz@TA_~f1;$&qK=>dQKALhxdn*aa+ literal 0 HcmV?d00001 diff --git a/libft/ft_striteri.o b/libft/ft_striteri.o new file mode 100644 index 0000000000000000000000000000000000000000..46ace084d93ddabea9ccef3b5ec710784c977c02 GIT binary patch literal 1464 zcmbtT&ui2`6n;r+>yOpliibi~;>ikj*p(Jq4-!~na}W_B;6+PzO@E-fTapR1LiMmB zghl9I;GZEL3m%Fdr1US?i?C1+iZ@xP?=-ZlVDi29z4>O|yqUam@7*;G1Ed*n z2Tmf%0(>w}d?#}qD8V`SS-$$q_tLLk_nYmd+XF96`d)Xt58Oc*0AJj5hcy52O3xp9 zJ$K-}Etx$RUBB<8U(&s!gRVO?WYX9#zlYbm$-$wq^XVfj)$6zI8NZRVd15cJIaZym zC0SH^d8^8*bF6kF=d+ps#t-OPqy+>{1S3ym$!4X2qB;O`P7r17Aj- z2H6w(xECsK%=-Cp)5jS^6dUzw41OFHWv#+aQY}g|6`^%pr9z@>Wv3bCD6(MuPcq{t z{=!oyMy-tDMWxQ{>@;PCFULGu=V7$Ynrf8m?Hsa`jGTtWTP+?mfT23aHR*LVj8@Yj)uDaI_BwF{j2^aYH7_X4%OuTlvhpeFL54| z(pTqwRs+S?=en4qS2l9@81D;>El`5~3q8gJt*Pt33&DaE3e@$Fkf+z|h`fXavEY;- z&LC2qQZMxt9v4k?%t`_ubUP4C|%CX4hBgnm^Oqp$0K159sx AVE_OC literal 0 HcmV?d00001 diff --git a/libft/ft_strjoin.o b/libft/ft_strjoin.o new file mode 100644 index 0000000000000000000000000000000000000000..10ed5108f66dafce0295b2ba5bbd11eaeadfbde6 GIT binary patch literal 1912 zcmbu8&1(};5Wr`X+W3*SQF^FUBnOcQ_L-C-X%Dh(*ksXY!8Tr`gw47&YQ9J|mj0ykh@^gJU$T_Lu5zfp5>U020WL5YE^w97dQa`%>|^slwLXi|VFHt52|Mh3 zh~3>efJ`d27LDZ!&5GHKuCf&tUrIFXDDiYT&f+U9amnFyK%mc!pdLfb+{!@!V4qkJ zm1N#AAU(MaQY#`YhC|0+;>BG+evaqfl2v9SF9NBVX{8ekyul)#n`G$jr{KqtUq0yj zGIS6SzEq z-%37&Z6&)qL))qNk zGjXqFR1%trQ>ed>9Ffr{@$#I5Z5~En)IWFe85e);;&i8?KFT@HBhBPUSfgDwwE{5w zTE`ZJS2s!;GmVxB?4D+7zzU59FuhtX8x>@gs%bEs@uh~T>5q7PztUv2dbMWM%{DN5 z1*4eXt!rgtwC8_#QS7Bz_fDdWj6}?h6FIfQC%cGBcPyj2CCPt<7KbO%(mrB>7dXGj zx%bZ*@VwX18g99a0j>G3{R!-)HRGsm5&P5nZV~$nyM{^OyX)rtpik{}Wc0U>%@D>5 zyg!P*Tg3edRzQbJz5PkvFN;EMz5P4L{od~#zfkc`^nTPU`UUsfo3?84{fpevzj?x^ ipP2XU5WyGzL3b!{314nVPNV17|B1uWu+nk7{eJ*etJ>E9 literal 0 HcmV?d00001 diff --git a/libft/ft_strlcat.o b/libft/ft_strlcat.o new file mode 100644 index 0000000000000000000000000000000000000000..f780c324befddd4ad76266aa6f25dcee295f3b15 GIT binary patch literal 1792 zcmbtT&1(}u6rW9M>qi=+C@2-#lONQMi9~2CNZPo`Akm06;6>KWy0u`w*z7_hL=OdF z$))%g`2mV2#Z!)6gg`x1yc7}Zd%H8uWV^Z42XE)S-@M)WU0IMxHY@?|RvV4uxGi1&{5?hO2B&2fV52C{ z?-OM`rOYIz4sSw(&H;vs@)|!{GW9B!pPr0)5P?9nU~ebL&)ulqcx30X7E#S8EACf6 zilG-Lllws*pBjTl7aaGyGD=B;ds3>?zdK-OL9vfvxe7oOzAy$StB&4w?3!sf)RY{e z7fa>krIKDQ6dq_R`pVLBNz+Au)ex51>i8vGR9Uzp-&9QAhg~RiMmOgLF zV-6mL70(fqc822@I3AwxuY5neU=CTXfP*;?%Fh57bEZLM5$9umS;YBbU4%_x%W;2Y zN3z4Qw_y+e%8?nucpj*tEs5x#fU00%Xqc~Z{=5j}YncBC@Tm8j=M5F_gztx3!54Vc t*?81LaXw%1A3PGlM=bny0Fh08p`C%}s0-{W9yFETK~{D1Gx!>IrO literal 0 HcmV?d00001 diff --git a/libft/ft_strlcpy.o b/libft/ft_strlcpy.o new file mode 100644 index 0000000000000000000000000000000000000000..8d45fa0c819e7393224af62a4d5b58f09b2a2c0d GIT binary patch literal 1680 zcmbtU&1(};5T8wI>qkFg@ldJAo@GB7?I9|L zT>Mi!c@BtHJ$cMA7a^dR;w6YsXLjFfUbgE+2PQM~+xgABoq3ymBbSM28c5OLHjE>Q z0_3A(Kjpb8n1fmPxp4Vcfp@;~_K!I4>+}&ku|drSbM&ADsMmop%cZ-Ze&C z`^vj_hZv&!W#JvXj_|fI((qZIw}%=}8Y6pA$;OlyJ-3Gll05!LEZa4(&B2gbe0~qv zbb3v{S}3_S$JLW;mBm*Qt`{Yq-;A^PDob4RaUzgRp~g^8p=R$DAOg@MOups?^hva* z_d(l@Y0I-Sr{CaUE+Ixr@{)dx`Pi#SdTu)M3^ND_7nkX^vw19aPtexU^ z)2v$Kp8w(L$fdgy+++$d5;=E2@^ht6b{UmslR{PHtr*IZ0MDYOKJo@g{EEPXH}8Ys z1r60uGk}vlc)|*=8MSopb`gYEQ@Cgg<4k2iW Z{z(cH5#^4N^XP@~2ZCQY&h(ui{||9$pj7|> literal 0 HcmV?d00001 diff --git a/libft/ft_strlen.o b/libft/ft_strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..2cbf4e3703f95bcc9827a2a6a3ce264c2de1b689 GIT binary patch literal 1408 zcmbtTOG_g`5U$C@*ZPVgC@2z7Drl2P1a}V-2(!*XJO}|VB9k~OXeKh#11k6cmj&^% z$36Nh_8i#5Ui}jbfxWDFS(boS&2%T7HeR%#x~jgaucoWJ=h9mLoG=WKV!$f2B8dWA zC0c$ya`P|%{qQ(E{l946{I+k->%Xi9W&R|ut%h-HHSF@eeQVWi<9_%De5r+X!oF|+ zgtbE9Q+lpg3OydCKe8OlEM~(f%3dsGSSH7^^Dz!dY?wmrLS5S^0&b&5n2Aa<78@|m zHo-Va8IuD&z29(vDa1)ha`8cd>XbG+o(%0pIUI#(Hg~Cj z=$g?q?HENSbiV{6yyq31PNH1~F&tI)8O=^5dweJ0{*mjka?1xuQx1hDXq$osrxos$ zfFUck2h!v22?w_8a0gf^2!NHVm5S>j=2f}N@R}9_?vxKjyzhnV*smVDK0gKKyGIUl z4|eu^r{YGRe%CUIY`Qc3xR_D)Rp5D`2`3uOUo*7hC z +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2022/10/15 23:40:12 by erey-bet #+# #+# */ -/* Updated: 2022/11/15 20:00:55 by erey-bet ### ########.fr */ +/* Created: 2022/12/12 13:45:14 by erey-bet #+# #+# */ +/* Updated: 2022/12/12 13:46:16 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ -#ifndef GET_NEXT_LINE_BONUS_H -# define GET_NEXT_LINE_BONUS_H +int ft_strlen_double(char **strs) +{ + int i; + int y; + int count; -# include -# include -# ifndef BUFFER_SIZE -# define BUFFER_SIZE 41 -# endif - -char *get_next_line(int fd); -void *ft_calloc(size_t nitems, size_t size); -size_t ft_strlen(const char *str); -int ft_strchr(const char *str, int search); -void ft_strlcpy(char *dest, const char *src, size_t size); - -#endif + 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..de681faec8a0070e493f86349ca11d13f69a1f9c GIT binary patch literal 1488 zcmbtT&ubGw6n>kHtv{-b(t}Wucn~YtA(4vJg9O6ZJ&1@9@KVAi**0KyQ+8*e71Tpj zC_(V(Khdk_fJm=73EsR21uu#@6e;L?o0;rny1nRwH}Adgz3v2F}2**~`Cc&dxVy=lT8~A5!M~?LB^&IQeaUVD+v5kTA7Q0hy<1$UHR3?T#XD??l@`l! z5|v-vEV0rOD_8brwSam8b>(3V@EU!>Y*doDkpb)3W3V<0*8I%$$#*z_ONf(_ z__XkIg*UnC*{NI$D+tIInq3}#{>jSPnUkfnXv5Wr_V|<whN+`qf=?fV z(Ga3#<`Ez?xm(_X5O%uJ9N>+hQc#=2IE32Qk|SyBl68wt$6R$7No-z81Q^mu&rC z%RI8_4b4ebWY_ULWK6ZXT)}`a^?j+_u5t`(@~>f@KCge}-#{+)ETQV6_NTlqYJX*K zVN&^e-4{L3e6yBgj=r{ux5xM^DoHU})5ZLiRxw3AO};wRa!O4+lm7%!`l>5QHeDXc zh8HDt3N4*e@fDuAH`Xo7i~f-O(`c!O$tTQwJEAPe{jXA>iEKMY&ZC#bZ%h9AxN_u} F{J#z-fDr%y literal 0 HcmV?d00001 diff --git a/libft/ft_strmapi.o b/libft/ft_strmapi.o new file mode 100644 index 0000000000000000000000000000000000000000..d24f724946ecc657d2f17c92cf454a576a46ab76 GIT binary patch literal 1704 zcmbtT&ubG=5T4D}rfS^6{UZDptck| zZ1*TqZKa2&y}@a&t#q9<*2;ICOsNxj36a;G)+)t4^>9{dDd?_t?2mT4|KUJxDqU$L z`{|MO#>s8Ii{IUR3)ysfDHhKctcq#H7TE$z%q1-+N5naP?c9Nl4 zkHPnT(77DA3A&TG)hJ7LzG4)kNQUvhK?e_?fCt}NcBV5*na1$E=bp|C5W9p*^YqIN z1cGqbHnoOXFYC4Ytmp|q%jVWrmUG%#CbO<=XdBBbIYr|MTUJffpXUzk>@4cd6Ca^8t)PWTm4PeD;xolJrt5i*c;TxH2n0oOc zkMC71R;yQQM%~;4=2S3B+IC$p8^fOe;l+?kZ^ggK6k;S|?r!Af3ZLu@D$OQ^>Xr9= zC>J?+1}*gwFF@c|IqrXXpE%ENsD@XrV?Z_km7hc|)l8szMf9ioUJ?C;UBW}*d-K9U zU_kCI#OQAsc|#aaaDEJZuZZ~xtbh)s`uTCrPl-fs{rpYDgZB41V1L9Fe6hcv-qflj p?$0g#JEsHqg!y-e5FGISixhZ-mm47G&Z40`au=^HTp?au@ zK@e~Lli6ffnUbe-*vn5!|v>Vw>#0m?$rDC!G0g2;wLIQ3hj3mW~>-3X04I^ z)f&7X^y$EV@Jcj@1u7i@ebth_un| zEgg0S8((0(R=aI3)*F$}Bl8wpW#yGhlth)6H_EKM$|_4Ko-_kfXiBK3P}d*S0o&~n zrlXQvNDXK&9)Y%7(iY~5Gas;xD~OYle58*xUwTuhot-Yc#|i@Sg>GO9e*VeJ>bVo3 zvnWGQi2C@H3W%11q{e;xDm ztWL^bMlP*cMpZ@bPkB}3{?gvWr1aG~JrB&OwGg9MHZgmQX9V9wUzO}Hw1G(~&GHuo ze@!K$pXEPBj9zmURh70_@R9&eqos37zQptPCdw1Be@p?&EGn&$?0=a8 WMZ~gWDiEBFeL`N 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 F9|Nr%*f{_I literal 0 HcmV?d00001 diff --git a/libft/ft_tolower.o b/libft/ft_tolower.o new file mode 100644 index 0000000000000000000000000000000000000000..08b2bb28748e74d30f012919c4bed856844a702f GIT binary patch literal 1400 zcmbVLPfHt75TDIPt=8JK^iZ*s?MVyzNJ<3lp)7<|52c4fXeo$p;;Nv@%I*tIgv5hT zkb3Z=^dl7f5`F=}qvEBMKs&ShCV6?rivw?eGryVNd-MM6k@s;WV_Cpv!3XF^%mOqs zecw%77bf8`+&+E%x4d?8dD8A4x4Uj<0>9smvd3Q6`RR4n&tbJxdhg7YD~-BrILo3a z@(YDV5*0e{@*-apg|{i6%$mh-4#xWq%WA;~;yH0$7Ki!D{BLnaQz7XV~y7 zOLwKQiQhi;oHpuBFpKI0-L+1Kk% z^+5B@S`Tyd$_DNp<1?jk6f&6q&^jh)PE-F&36@x>(A0lLo?f%7@(h1eqc0UPj!1p7 xp7~*GljMp%XxAyg1R~90>WMS&jwBaq{b>p`Q*@7chTbrJP94ZjuQGK^{eNlJULybi literal 0 HcmV?d00001 diff --git a/libft/ft_toupper.o b/libft/ft_toupper.o new file mode 100644 index 0000000000000000000000000000000000000000..deb631ebe9a79830ad7f847301a6f5d841ee01e8 GIT binary patch literal 1400 zcmbVL%}OId5U$C@e^;~OVHZWl)2^URvM8vBB@m)}kUa=NFJdOyQ9&mOGd&Om^&kkc zd+_blP~apy#Xls=n^(pE)mXtfedq*ev)8orqb0W~$@o zV>b_@FanR`Gf$;&SGQNEt&7uE`D_@!C+F!4zvcWaws!u&dZDoDd@fa@nv9$ku_&?& zxhRfuXJ4`+yC`yV2_Mgz#%~5kACC3!CBS8W6KCTfn@j+#lTEOi8Ea~EVDK6no<^Pq znM0rASmrWSc-Oy$1r)zxwAVB|Joif5Jx_vq(GEis+U+hi5?wpqO*co84gD|4m>+nB zr<3TmF$^cPJ{?Z)$z55G8VxTHRp`S)-B9uXb2kc3&DM9>jr3<1G zh9IhS-}h?B)#}m{cwGyjbgPFd-mgWX5!A5*c?=@(j$Gj#?Cu4w?{ODz$0?N3-I*tt zS5rC)8K_pbSqzBdcg49fI|iEiPnf57^;Z2nYH7|a4&BNspuBFpKI0N5+1KlS>4D~( zwMER)E9<&@jIWi(QOIEaLpzwDIZgeI5-hV&p{d_So?dfaUenWEdwd-QtgGwMM0+m(r9>i+|lLtc>p literal 0 HcmV?d00001 diff --git a/libft/libft.a b/libft/libft.a index 17e7ae0ab4ff3396cd8df53b0ccc4d27fb5e1e17..d0d0846e71ccf766b0b4b4f1fd693a91580c6205 100644 GIT binary patch delta 539 zcmbRBlew#nWrAhBxrqVFsLywFkNC`;F!k1z!${8AOhq|K4M^ypU1$U8pXh% zt;fJ%IEjJ5ypMswE{lP|)r^6`r-*?e2&gXn76U`2&jzsJDvbrS=_pMM+gOk_+4Ouoob$)5|- z<;o|}#^lV)#*{KyG5)TN2vA6ffe|DF24FQH7KS5}F@z?sV|l`uJGq}*e)73b5{zpn zJIaVpp2w{LX9-NM69P1k2jxX-qz3+Az89EXQOq6^qGDW*&^HljSANCr8C< F008ODnfU+! delta 198 zcmXBKJt%|$007YE?$UK~i;0Ed=(<4>iQxv_D0P#`&vkXVODI2sLP-V|Ka-nS3^yp$ zWzuC)ia{n524$fXbtYeV^V{Bvl +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/09/26 16:31:10 by erey-bet #+# #+# */ -/* Updated: 2022/10/18 17:32:25 by erey-bet ### ########.fr */ +/* Updated: 2022/12/12 13:46:30 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -67,5 +67,5 @@ 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/map_test.txt b/map_test.txt new file mode 100644 index 0000000..242be01 --- /dev/null +++ b/map_test.txt @@ -0,0 +1,5 @@ +1111111111111 +10010000000C1 +1000011111001 +1P0011E000001 +1111111111111 diff --git a/so_long b/so_long index 6e4a12017b04d8cdb80a49641383dc1e83d6ddb4..d96326cd54391c3cdfc2d68ab46a2d839774253f 100755 GIT binary patch literal 66792 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 z%0D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 PxBgdCm~}QopH2UJJZcts literal 57152 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 OLU8EsDHJ+Be*YU~Eq)mQ diff --git a/so_long.c b/so_long.c index f3b6116..e361f59 100644 --- a/so_long.c +++ b/so_long.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/09 14:18:18 by erey-bet #+# #+# */ -/* Updated: 2022/12/11 18:48:15 by erey-bet ### ########.fr */ +/* Updated: 2022/12/12 21:52:42 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,52 +21,129 @@ void free_img(t_data *data) int quit(t_data *data) { - if (data->mlx_img != NULL) - free_img(data); - free(data->mlx_win); - free(data->mlx); + (void)data; exit(0); return (0); } +t_xy *get_position(t_data *data, char c) +{ + int y; + t_xy *xy; + + y = 0; + xy = NULL; + while (data->map[y]) + { + if (ft_strchr_gnl(data->map[y], c) != -1) + { + xy = ft_calloc(1, sizeof(t_xy)); + xy->x = ft_strchr_gnl(data->map[y], c); + xy->y = y; + break; + } + y++; + } + return (xy); +} + +int get_new_element(t_data *data, int x, int y) +{ + return(data->map[data->y_player + y][data->x_player + x]); +} + +void set_new_element(t_data *data, int x, int y) +{ + data->map[data->y_player + y][data->x_player + x] = '0'; +} + +int end(t_data *data) +{ + if (get_position(data, 'C') == NULL) + quit(data); + return (1); +} + +void set_position_player(t_data *data, t_xy *xy) +{ + data->x_player = xy->x; + data->y_player = xy->y; + free(xy); +} + +void move(t_data *data, int x, int y) +{ + if (get_new_element(data, x, y) == '1') + return ; + if (get_new_element(data, x, y) == 'C') + set_new_element(data, x, y); + if (get_new_element(data, x, y) == 'E') + if (end(data)) + return ; + data->x_player += x; + data->y_player += y; +} + int key_hook(int key, t_data *data) { if (key == K_ESC) quit(data); else if (key == K_LEFT) - data->x_player -= 128; + move(data, -1, 0); else if (key == K_RIGHT) - data->x_player += 128; + move(data, 1, 0); else if (key == K_UP) - data->y_player -= 128; + move(data, 0, -1); else if (key == K_DOWN) - data->y_player += 128; + move(data, 0, 1); data->update = 1; return (0); } -int render(t_data *data) +char *assets(char c) +{ + if (c == '0') + return ("assets/background.xpm"); + else if (c == '1') + return ("assets/wall.xpm"); + else if (c == 'C') + return ("assets/collectible.xpm"); + else if (c == 'E') + return ("assets/exit.xpm"); + return (NULL); +} + +void draw_map(t_data *data) { int x; int y; + x = 0; + while (x < (data->w_screen / data->size)) + { + y = 0; + while (y < (data->h_screen / data->size)) + { + if (x != data->x_player || y != data->y_player) + { + data->mlx_img = mlx_xpm_file_to_image(data->mlx, assets(data->map[y][x]), &data->size, &data->size); + if (!data->mlx_img) + data->mlx_img = mlx_xpm_file_to_image(data->mlx, assets('0'), &data->size, &data->size); + mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, x * data->size, y * data->size); + } + y++; + } + x++; + } +} + +int render(t_data *data) +{ if (data->update == 1) { - x = -1; - while (++x < (data->w_screen / 128)) - { - y = -1; - while (++y < (data->h_screen / 128)) - { - if (x * 128 != data->x_player || y * 128 != data->y_player) - { - data->mlx_img = mlx_xpm_file_to_image(data->mlx, "assets/background.xpm", &data->size, &data->size); - mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, x * 128, y *128); - } - } - } + draw_map(data); data->mlx_img = mlx_xpm_file_to_image(data->mlx, "assets/player.xpm", &data->size, &data->size); - mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, data->x_player, data->y_player); + mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, data->x_player * data->size, data->y_player * data->size); data->update = 0; } return (0); @@ -81,7 +158,33 @@ void init_data(t_data *data) data->h_screen = 768; data->w_screen = 768; data->mlx = mlx_init(); - data->mlx_win = mlx_new_window(data->mlx, data->w_screen, data->h_screen, "lili meli"); +} + +void get_map(char *argv[], t_data *data) +{ + char *tmp_map; + char *map; + int i; + int fd; + + fd = open(argv[1], O_RDONLY); + if (fd == -1) + return ; + i = 0; + map = NULL; + tmp_map = NULL; + while (i == 0 || tmp_map != NULL) + { + tmp_map = get_next_line(fd); + if (tmp_map && map) + map = ft_strjoin(map, tmp_map); + else if (tmp_map) + map = tmp_map; + i++; + } + data->map = ft_split(map, '\n'); + data->h_screen = (i - 1) * data->size; + data->w_screen = ft_strlen(*data->map) * data->size; } int main(int argc, char *argv[]) @@ -90,8 +193,12 @@ int main(int argc, char *argv[]) (void)argc; (void)argv; - map = get_map(argc, argv); init_data(&data); + get_map(argv, &data); + if (data.map == NULL) + return (1); + set_position_player(&data, get_position(&data, 'P')); + data.mlx_win = mlx_new_window(data.mlx, data.w_screen, data.h_screen, "lili meli"); mlx_hook(data.mlx_win, 17, 0, quit, &data); mlx_key_hook(data.mlx_win, key_hook, &data); mlx_loop_hook(data.mlx, render, &data); diff --git a/so_long.h b/so_long.h index c1a0082..375850f 100644 --- a/so_long.h +++ b/so_long.h @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/10 17:59:18 by erey-bet #+# #+# */ -/* Updated: 2022/12/11 14:47:20 by erey-bet ### ########.fr */ +/* Updated: 2022/12/12 20:53:26 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,12 +18,16 @@ # include "key.h" # include # include "libft/libft.h" +# include "get_next_line/get_next_line.h" +# include + typedef struct s_data { void *mlx; void *mlx_win; void *mlx_img; + char **map; int update; int size; int x_player; @@ -32,4 +36,10 @@ typedef struct s_data int w_screen; } t_data; +typedef struct s_xy +{ + int x; + int y; +} t_xy; + #endif diff --git a/so_long.o b/so_long.o new file mode 100644 index 0000000000000000000000000000000000000000..7ec7a89b34389046abcd328c208f1aece8749a8f GIT binary patch literal 12424 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 literal 0 HcmV?d00001